pdf 添加跨域功能 修复pdf 页码和高亮没启用bug

This commit is contained in:
高雄
2026-04-15 14:40:41 +08:00
parent 171762d676
commit ee2a27501b
2 changed files with 79 additions and 44 deletions

View File

@@ -23091,6 +23091,7 @@ initCom(PDFViewerApplication);
if (HOSTED_VIEWER_ORIGINS.has(viewerOrigin)) { if (HOSTED_VIEWER_ORIGINS.has(viewerOrigin)) {
return; return;
} }
/* 注释掉跨域检查
const fileOrigin = URL.parse(file, window.location)?.origin; const fileOrigin = URL.parse(file, window.location)?.origin;
if (fileOrigin === viewerOrigin) { if (fileOrigin === viewerOrigin) {
return; return;
@@ -23100,6 +23101,7 @@ initCom(PDFViewerApplication);
message: ex.message message: ex.message
}); });
throw ex; throw ex;
*/
}; };
var onFileInputChange = function (evt) { var onFileInputChange = function (evt) {
if (this.pdfViewer?.isInPresentationMode) { if (this.pdfViewer?.isInPresentationMode) {

View File

@@ -1,24 +1,49 @@
<!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}';
@@ -27,29 +52,37 @@
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"; var viewerUrl = baseUrl + "pdfjs/web/viewer.html?file=" + encodeURIComponent(url);
document.getElementsByTagName('iframe')[0].height = document.documentElement.clientHeight - 10; viewerUrl += "&disablepresentationmode=${pdfPresentationModeDisable}";
/** viewerUrl += "&disableopenfile=${pdfOpenFileDisable}";
* 页面变化调整高度 viewerUrl += "&disableprint=${pdfPrintDisable}";
*/ viewerUrl += "&disabledownload=${pdfDownloadDisable}";
window.onresize = function () { viewerUrl += "&disablebookmark=${pdfBookmarkDisable}";
var fm = document.getElementsByTagName("iframe")[0]; viewerUrl += "&disableediting=${pdfDisableEditing}";
fm.height = window.document.documentElement.clientHeight - 10; 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 () {
if (typeof initWaterMark === 'function') {
initWaterMark(); initWaterMark();
} }
};
</script> </script>
</body>
</html> </html>