Bladeren bron

Merge pull request #317 from zzzhouuu/master

feat: 通过配置控制PDF.js viewer toolbar & secondaryToolbar功能按钮
gitchenjh 3 jaren geleden
bovenliggende
commit
2ed294bd65

+ 9 - 1
server/src/main/config/application.properties

@@ -71,8 +71,16 @@ office.preview.type = ${KK_OFFICE_PREVIEW_TYPE:image}
 #是否关闭office预览切换开关,默认为false,可配置为true关闭
 office.preview.switch.disabled = ${KK_OFFICE_PREVIEW_SWITCH_DISABLED:false}
 
+#是否禁止演示模式
+pdf.presentationMode.disable = ${KK_PDF_PRESENTATION_MODE_DISABLE:true}
+#是否禁止打开文件
+pdf.openFile.disable = ${KK_PDF_OPEN_FILE_DISABLE:true}
+#是否禁止打印转换生成的pdf文件
+pdf.print.disable = ${KK_PDF_PRINT_DISABLE:true}
 #是否禁止下载转换生成的pdf文件
-pdf.download.disable = ${KK_PDF_DOWNLOAD_DISABLE:false}
+pdf.download.disable = ${KK_PDF_DOWNLOAD_DISABLE:true}
+#是否禁止bookmark
+pdf.bookmark.disable = ${KK_PDF_BOOKMARK_DISABLE:true}
 #是否禁用首页文件上传
 file.upload.disable = ${KK_FILE_UPLOAD_ENABLED:false}
 

+ 55 - 1
server/src/main/java/cn/keking/config/ConfigConstants.java

@@ -35,7 +35,11 @@ public class ConfigConstants {
     private static String fileDir = ConfigUtils.getHomePath() + File.separator + "file" + File.separator;
     private static String localPreviewDir;
     private static CopyOnWriteArraySet<String> trustHostSet;
+    private static String pdfPresentationModeDisable;
+    private static String pdfOpenFileDisable;
+    private static String pdfPrintDisable;
     private static String pdfDownloadDisable;
+    private static String pdfBookmarkDisable;
     private static Boolean fileUploadDisable;
     private static String tifPreviewType;
 
@@ -51,7 +55,11 @@ public class ConfigConstants {
     public static final String DEFAULT_FILE_DIR_VALUE = "default";
     public static final String DEFAULT_LOCAL_PREVIEW_DIR_VALUE = "default";
     public static final String DEFAULT_TRUST_HOST = "default";
+    public static final String DEFAULT_PDF_PRESENTATION_MODE_DISABLE = "true";
+    public static final String DEFAULT_PDF_OPEN_FILE_DISABLE = "true";
+    public static final String DEFAULT_PDF_PRINT_DISABLE = "true";
     public static final String DEFAULT_PDF_DOWNLOAD_DISABLE = "true";
+    public static final String DEFAULT_PDF_BOOKMARK_DISABLE = "true";
     public static final String DEFAULT_FILE_UPLOAD_DISABLE = "false";
     public static final String DEFAULT_TIF_PREVIEW_TYPE = "tif";
 
@@ -249,11 +257,46 @@ public class ConfigConstants {
         ConfigConstants.trustHostSet = trustHostSet;
     }
 
+    public static String getPdfPresentationModeDisable() {
+        return pdfPresentationModeDisable;
+    }
+
+    @Value("${pdf.presentationMode.disable:true}")
+    public void setPdfPresentationModeDisable(String pdfPresentationModeDisable) {
+        setPdfPresentationModeDisableValue(pdfPresentationModeDisable);
+    }
+
+    public static void setPdfPresentationModeDisableValue(String pdfPresentationModeDisable) {
+        ConfigConstants.pdfPresentationModeDisable = pdfPresentationModeDisable;
+    }
+
+    public static String getPdfOpenFileDisable() {
+        return pdfOpenFileDisable;
+    }
+
+    @Value("${pdf.openFile.disable:true}")
+    public static void setPdfOpenFileDisable(String pdfOpenFileDisable) {
+        setPdfOpenFileDisableValue(pdfOpenFileDisable);
+    }
+    public static void setPdfOpenFileDisableValue(String pdfOpenFileDisable) {
+        ConfigConstants.pdfOpenFileDisable = pdfOpenFileDisable;
+    }
+
+    public static String getPdfPrintDisable() {
+        return pdfPrintDisable;
+    }
+    @Value("${pdf.print.disable:true}")
+    public  void setPdfPrintDisable(String pdfPrintDisable) {
+        setPdfPrintDisableValue(pdfPrintDisable);
+    }
+    public static void setPdfPrintDisableValue(String pdfPrintDisable) {
+        ConfigConstants.pdfPrintDisable = pdfPrintDisable;
+    }
+
     public static String getPdfDownloadDisable() {
         return pdfDownloadDisable;
     }
 
-
     @Value("${pdf.download.disable:true}")
     public void setPdfDownloadDisable(String pdfDownloadDisable) {
         setPdfDownloadDisableValue(pdfDownloadDisable);
@@ -262,6 +305,17 @@ public class ConfigConstants {
         ConfigConstants.pdfDownloadDisable = pdfDownloadDisable;
     }
 
+    public static String getPdfBookmarkDisable() {
+        return pdfBookmarkDisable;
+    }
+    @Value("${pdf.bookmark.disable:true}")
+    public void setPdfBookmarkDisable(String pdfBookmarkDisable) {
+        setPdfBookmarkDisableValue(pdfBookmarkDisable);
+    }
+    public static void setPdfBookmarkDisableValue(String pdfBookmarkDisable) {
+        ConfigConstants.pdfBookmarkDisable = pdfBookmarkDisable;
+    }
+
     public static String getOfficePreviewSwitchDisabled() {
         return officePreviewSwitchDisabled;
     }

+ 12 - 0
server/src/main/java/cn/keking/config/ConfigRefreshComponent.java

@@ -47,7 +47,11 @@ public class ConfigRefreshComponent {
                 String configFilePath = ConfigUtils.getCustomizedConfigPath();
                 String baseUrl;
                 String trustHost;
+                String pdfPresentationModeDisable;
+                String pdfOpenFileDisable;
+                String pdfPrintDisable;
                 String pdfDownloadDisable;
+                String pdfBookmarkDisable;
                 boolean fileUploadDisable;
                 String tifPreviewType;
 
@@ -68,7 +72,11 @@ public class ConfigRefreshComponent {
                     mediaArray = media.split(",");
                     baseUrl = properties.getProperty("base.url", ConfigConstants.DEFAULT_BASE_URL);
                     trustHost = properties.getProperty("trust.host", ConfigConstants.DEFAULT_TRUST_HOST);
+                    pdfPresentationModeDisable = properties.getProperty("pdf.presentationMode.disable", ConfigConstants.DEFAULT_PDF_PRESENTATION_MODE_DISABLE);
+                    pdfOpenFileDisable = properties.getProperty("pdf.openFile.disable", ConfigConstants.DEFAULT_PDF_OPEN_FILE_DISABLE);
+                    pdfPrintDisable = properties.getProperty("pdf.print.disable", ConfigConstants.DEFAULT_PDF_PRINT_DISABLE);
                     pdfDownloadDisable = properties.getProperty("pdf.download.disable", ConfigConstants.DEFAULT_PDF_DOWNLOAD_DISABLE);
+                    pdfBookmarkDisable = properties.getProperty("pdf.bookmark.disable", ConfigConstants.DEFAULT_PDF_BOOKMARK_DISABLE);
                     fileUploadDisable = Boolean.parseBoolean(properties.getProperty("file.upload.disable", ConfigConstants.DEFAULT_FILE_UPLOAD_DISABLE));
                     tifPreviewType = properties.getProperty("tif.preview.type", ConfigConstants.DEFAULT_TIF_PREVIEW_TYPE);
 
@@ -82,7 +90,11 @@ public class ConfigRefreshComponent {
                     ConfigConstants.setBaseUrlValue(baseUrl);
                     ConfigConstants.setTrustHostValue(trustHost);
                     ConfigConstants.setOfficePreviewSwitchDisabledValue(officePreviewSwitchDisabled);
+                    ConfigConstants.setPdfPresentationModeDisableValue(pdfPresentationModeDisable);
+                    ConfigConstants.setPdfOpenFileDisableValue(pdfOpenFileDisable);
+                    ConfigConstants.setPdfPrintDisableValue(pdfPrintDisable);
                     ConfigConstants.setPdfDownloadDisableValue(pdfDownloadDisable);
+                    ConfigConstants.setPdfBookmarkDisableValue(pdfBookmarkDisable);
                     ConfigConstants.setFileUploadDisableValue(fileUploadDisable);
                     ConfigConstants.setTifPreviewTypeValue(tifPreviewType);
                     setWatermarkConfig(properties);

+ 5 - 1
server/src/main/java/cn/keking/web/filter/AttributeSetFilter.java

@@ -30,8 +30,12 @@ public class AttributeSetFilter implements Filter {
      * @param request request
      */
     private void setFileAttribute(ServletRequest request){
-        HttpServletRequest httpRequest = (HttpServletRequest)request;
+        HttpServletRequest httpRequest = (HttpServletRequest) request;
+        request.setAttribute("pdfPresentationModeDisable", ConfigConstants.getPdfPresentationModeDisable());
+        request.setAttribute("pdfOpenFileDisable", ConfigConstants.getPdfOpenFileDisable());
+        request.setAttribute("pdfPrintDisable", ConfigConstants.getPdfPrintDisable());
         request.setAttribute("pdfDownloadDisable", ConfigConstants.getPdfDownloadDisable());
+        request.setAttribute("pdfBookmarkDisable", ConfigConstants.getPdfBookmarkDisable());
         request.setAttribute("fileKey", httpRequest.getParameter("fileKey"));
         request.setAttribute("switchDisabled", ConfigConstants.getOfficePreviewSwitchDisabled());
         request.setAttribute("fileUploadDisable", ConfigConstants.getFileUploadDisable());

+ 35 - 5
server/src/main/resources/static/pdfjs/web/viewer.js

@@ -2240,13 +2240,21 @@ function reportPageStatsPDFBug({
 }
 
 function webViewerInitialized() {
-  const appConfig = PDFViewerApplication.appConfig;
-  let file;
-  let disableDownload;
-  const queryString = document.location.search.substring(1);
-  const params = (0, _ui_utils.parseQueryString)(queryString);
+  var appConfig = PDFViewerApplication.appConfig;
+  var file;
+  var disablePresentationMode;
+  var disableOpenFile;
+  var disablePrint;
+  var disableDownload;
+  var disableBookmark;
+  var queryString = document.location.search.substring(1);
+  var params = (0, _ui_utils.parseQueryString)(queryString);
   file = "file" in params ? params.file : _app_options.AppOptions.get("defaultUrl");
+  disablePresentationMode = 'disablepresentationmode' in params ? params.disablepresentationmode : 'false';
+  disableOpenFile = 'disableopenfile' in params ? params.disableopenfile : 'false';
+  disablePrint = 'disableprint' in params ? params.disableprint : 'false';
   disableDownload = 'disabledownload' in params ? params.disabledownload : 'false';
+  disableBookmark = 'disablebookmark' in params ? params.disablebookmark : 'false';
   validateFileURL(file);
   const fileInput = document.createElement("input");
   fileInput.id = appConfig.openFileInputName;
@@ -2329,8 +2337,30 @@ function webViewerInitialized() {
       PDFViewerApplication._documentError(msg, reason);
     });
   }
+
+  if ('true' === disablePresentationMode) {
+    document.getElementById("presentationMode").style.display='none';
+    document.getElementById("secondaryPresentationMode").style.display='none';
+  }
+
+  if ('true' === disableOpenFile) {
+    document.getElementById("openFile").style.display='none';
+    document.getElementById("secondaryOpenFile").style.display='none';
+  }
+
+  if ('true' === disablePrint) {
+    document.getElementById("print").style.display='none';
+    document.getElementById("secondaryPrint").style.display='none';
+  }
+
   if ('true' === disableDownload) {
     document.getElementById("download").style.display='none';
+    document.getElementById("secondaryDownload").style.display='none';
+  }
+
+  if ('true' === disableBookmark) {
+    document.getElementById("viewBookmark").style.display='none';
+    document.getElementById("secondaryViewBookmark").style.display='none';
   }
 }
 

+ 1 - 1
server/src/main/resources/web/pdf.ftl

@@ -26,7 +26,7 @@
     if (!url.startsWith(baseUrl)) {
         url = baseUrl + 'getCorsFile?urlPath=' + encodeURIComponent(url);
     }
-    document.getElementsByTagName('iframe')[0].src = "${baseUrl}pdfjs/web/viewer.html?file=" + encodeURIComponent(url) + "&disabledownload=${pdfDownloadDisable}";
+    document.getElementsByTagName('iframe')[0].src = "${baseUrl}pdfjs/web/viewer.html?file=" + encodeURIComponent(url) + "&disablepresentationmode=${pdfPresentationModeDisable}&disableopenfile=${pdfOpenFileDisable}&disableprint=${pdfPrintDisable}&disabledownload=${pdfDownloadDisable}&disablebookmark=${pdfBookmarkDisable}";
     document.getElementsByTagName('iframe')[0].height = document.documentElement.clientHeight - 10;
     /**
      * 页面变化调整高度