mirror of
https://gitee.com/kekingcn/file-online-preview.git
synced 2026-05-13 18:27:04 +00:00
pdf 添加跨域功能 修复pdf 页码和高亮没启用bug
This commit is contained in:
@@ -23083,24 +23083,26 @@ initCom(PDFViewerApplication);
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
const HOSTED_VIEWER_ORIGINS = new Set(["null", "http://mozilla.github.io", "https://mozilla.github.io"]);
|
const HOSTED_VIEWER_ORIGINS = new Set(["null", "http://mozilla.github.io", "https://mozilla.github.io"]);
|
||||||
var validateFileURL = function (file) {
|
var validateFileURL = function (file) {
|
||||||
if (!file) {
|
if (!file) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const viewerOrigin = URL.parse(window.location)?.origin || "null";
|
const viewerOrigin = URL.parse(window.location)?.origin || "null";
|
||||||
if (HOSTED_VIEWER_ORIGINS.has(viewerOrigin)) {
|
if (HOSTED_VIEWER_ORIGINS.has(viewerOrigin)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const fileOrigin = URL.parse(file, window.location)?.origin;
|
/* 注释掉跨域检查
|
||||||
if (fileOrigin === viewerOrigin) {
|
const fileOrigin = URL.parse(file, window.location)?.origin;
|
||||||
return;
|
if (fileOrigin === viewerOrigin) {
|
||||||
}
|
return;
|
||||||
const ex = new Error("file origin does not match viewer's");
|
}
|
||||||
PDFViewerApplication._documentError("pdfjs-loading-error", {
|
const ex = new Error("file origin does not match viewer's");
|
||||||
message: ex.message
|
PDFViewerApplication._documentError("pdfjs-loading-error", {
|
||||||
});
|
message: ex.message
|
||||||
throw ex;
|
});
|
||||||
};
|
throw ex;
|
||||||
|
*/
|
||||||
|
};
|
||||||
var onFileInputChange = function (evt) {
|
var onFileInputChange = function (evt) {
|
||||||
if (this.pdfViewer?.isInPresentationMode) {
|
if (this.pdfViewer?.isInPresentationMode) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -1,55 +1,88 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="zh-CN">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8"/>
|
<meta charset="utf-8"/>
|
||||||
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0">
|
||||||
<title>PDF预览</title>
|
<title>PDF预览</title>
|
||||||
<#include "*/commonHeader.ftl">
|
<#include "*/commonHeader.ftl">
|
||||||
<script src="js/base64.min.js" type="text/javascript"></script>
|
<script src="js/base64.min.js" type="text/javascript"></script>
|
||||||
|
<style>
|
||||||
|
/* 简单全屏布局,无滚动条 */
|
||||||
|
html, body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: none;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.img-preview {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 20px;
|
||||||
|
right: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
z-index: 999;
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<#if pdfUrl?contains("http://") || pdfUrl?contains("https://")>
|
<#if pdfUrl?contains("http://") || pdfUrl?contains("https://")>
|
||||||
<#assign finalUrl="${pdfUrl}">
|
<#assign finalUrl="${pdfUrl}">
|
||||||
<#else>
|
<#else>
|
||||||
<#assign finalUrl="${baseUrl}${pdfUrl}">
|
<#assign finalUrl="${baseUrl}${pdfUrl}">
|
||||||
</#if>
|
</#if>
|
||||||
<iframe src="" width="100%" frameborder="0"></iframe>
|
|
||||||
|
<iframe id="pdfFrame" src="about:blank"></iframe>
|
||||||
|
|
||||||
<#if "false" == switchDisabled>
|
<#if "false" == switchDisabled>
|
||||||
<img src="images/jpg.svg" width="48" height="48" style="position: fixed; cursor: pointer; top: 40%; right: 48px; z-index: 999;" alt="使用图片预览" title="使用图片预览" onclick="goForImage()"/>
|
<img class="img-preview" src="images/jpg.svg" alt="使用图片预览" title="使用图片预览" onclick="goForImage()"/>
|
||||||
</#if>
|
</#if>
|
||||||
</body>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var url = '${finalUrl}';
|
var url = '${finalUrl}';
|
||||||
var kkagent = '${kkagent}';
|
var kkagent = '${kkagent}';
|
||||||
var baseUrl = '${baseUrl}'.endsWith('/') ? '${baseUrl}' : '${baseUrl}' + '/';
|
var baseUrl = '${baseUrl}'.endsWith('/') ? '${baseUrl}' : '${baseUrl}' + '/';
|
||||||
if (kkagent === 'true' || !url.startsWith(baseUrl)) {
|
if (kkagent === 'true' || !url.startsWith(baseUrl)) {
|
||||||
url = baseUrl + 'getCorsFile?urlPath=' + encodeURIComponent(Base64.encode(url))+ "&key=${kkkey}";
|
url = baseUrl + 'getCorsFile?urlPath=' + encodeURIComponent(Base64.encode(url)) + "&key=${kkkey}";
|
||||||
}
|
|
||||||
document.getElementsByTagName('iframe')[0].src = "${baseUrl}pdfjs/web/viewer.html?file=" + encodeURIComponent(url) + "&disablepresentationmode=${pdfPresentationModeDisable}&disableopenfile=${pdfOpenFileDisable}&disableprint=${pdfPrintDisable}&disabledownload=${pdfDownloadDisable}&disablebookmark=${pdfBookmarkDisable}&disableediting=${pdfDisableEditing}#page=1&pagemode=thumbs";
|
|
||||||
document.getElementsByTagName('iframe')[0].height = document.documentElement.clientHeight - 10;
|
|
||||||
/**
|
|
||||||
* 页面变化调整高度
|
|
||||||
*/
|
|
||||||
window.onresize = function () {
|
|
||||||
var fm = document.getElementsByTagName("iframe")[0];
|
|
||||||
fm.height = window.document.documentElement.clientHeight - 10;
|
|
||||||
}
|
}
|
||||||
|
var viewerUrl = baseUrl + "pdfjs/web/viewer.html?file=" + encodeURIComponent(url);
|
||||||
|
viewerUrl += "&disablepresentationmode=${pdfPresentationModeDisable}";
|
||||||
|
viewerUrl += "&disableopenfile=${pdfOpenFileDisable}";
|
||||||
|
viewerUrl += "&disableprint=${pdfPrintDisable}";
|
||||||
|
viewerUrl += "&disabledownload=${pdfDownloadDisable}";
|
||||||
|
viewerUrl += "&disablebookmark=${pdfBookmarkDisable}";
|
||||||
|
viewerUrl += "&disableediting=${pdfDisableEditing}";
|
||||||
|
viewerUrl += "&pdfhighlightall=${highlightall}";
|
||||||
|
viewerUrl += "&watermarktxt=${watermarkTxt}";
|
||||||
|
viewerUrl += "#page=${page?js_string}";
|
||||||
|
viewerUrl += "&pagemode=thumbs";
|
||||||
|
var iframe = document.getElementById('pdfFrame');
|
||||||
|
iframe.src = viewerUrl;
|
||||||
|
|
||||||
|
// 图片预览切换
|
||||||
function goForImage() {
|
function goForImage() {
|
||||||
var url = window.location.href
|
var href = window.location.href;
|
||||||
if (url.indexOf("officePreviewType=pdf") != -1) {
|
if (href.indexOf("officePreviewType=pdf") !== -1) {
|
||||||
url = url.replace("officePreviewType=pdf", "officePreviewType=image");
|
href = href.replace("officePreviewType=pdf", "officePreviewType=image");
|
||||||
} else {
|
} else {
|
||||||
url = url + "&officePreviewType=image";
|
href += (href.indexOf('?') === -1 ? '?' : '&') + "officePreviewType=image";
|
||||||
}
|
}
|
||||||
window.location.href = url;
|
window.location.href = href;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*初始化水印*/
|
// 水印初始化(保持原有逻辑)
|
||||||
window.onload = function () {
|
window.onload = function () {
|
||||||
initWaterMark();
|
if (typeof initWaterMark === 'function') {
|
||||||
}
|
initWaterMark();
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user