office 功能调整 支持批注 转换页码限制 生成水印等等
parent
535d2baf0b
commit
b5e711bf87
|
@ -131,14 +131,30 @@ beian = ${KK_BEIAN:default}
|
||||||
#禁止上传类型
|
#禁止上传类型
|
||||||
prohibit = ${KK_PROHIBIT:exe,dll,dat}
|
prohibit = ${KK_PROHIBIT:exe,dll,dat}
|
||||||
#启用验证码删除文件 默认关闭
|
#启用验证码删除文件 默认关闭
|
||||||
delete.captcha= ${KK_DELETE_CAPTCHA:false}
|
delete.captcha= ${KK_DELETE_CAPTCHA:true}
|
||||||
#删除密码
|
#删除密码
|
||||||
delete.password = ${KK_DELETE_PASSWORD:123456}
|
delete.password = ${KK_DELETE_PASSWORD:123456}
|
||||||
#删除 转换后OFFICE、CAD、TIFF、压缩包源文件 默认开启 节约磁盘空间
|
#删除 转换后OFFICE、CAD、TIFF、压缩包源文件 默认开启 节约磁盘空间
|
||||||
delete.source.file = ${KK_DELETE_SOURCE_FILE:true}
|
delete.source.file = ${KK_DELETE_SOURCE_FILE:false}
|
||||||
#配置PDF文件生成图片的像素大小,dpi 越高,图片质量越清晰,同时也会消耗更多的计算资源。
|
#配置PDF文件生成图片的像素大小,dpi 越高,图片质量越清晰,同时也会消耗更多的计算资源。
|
||||||
pdf2jpg.dpi = ${KK_PDF2JPG_DPI:144}
|
pdf2jpg.dpi = ${KK_PDF2JPG_DPI:144}
|
||||||
#xlsx格式前端解析
|
#xlsx格式前端解析
|
||||||
office.type.web = ${KK_OFFICE_TYPE_WEB:web}
|
office.type.web = ${KK_OFFICE_TYPE_WEB:web}
|
||||||
#Cad类型图片浏览模式:tif(利用前端js插件浏览);svg(转换为svg显示);pdf(转换为pdf后显示,便于打印)
|
#Cad类型图片浏览模式:tif(利用前端js插件浏览);svg(转换为svg显示);pdf(转换为pdf后显示,便于打印)
|
||||||
cad.preview.type = ${KK_CAD_PREVIEW_TYPE:pdf}
|
cad.preview.type = ${KK_CAD_PREVIEW_TYPE:svg}
|
||||||
|
|
||||||
|
#OFFICE转换模块设置
|
||||||
|
#生成限制 默认不限制 使用方法 (1-5)
|
||||||
|
office.pagerange = ${KK_office_PageRange:false}
|
||||||
|
#生成水印 默认不启用 使用方法 (kkFileView)
|
||||||
|
office.watermark = ${KK_office_Watermark:false}
|
||||||
|
#OFFICE JPEG图片压缩
|
||||||
|
office.quality = ${KK_office_Quality:80}
|
||||||
|
#图像分辨率限制
|
||||||
|
office.maximageresolution = ${KK_office_MaxImageResolution:150}
|
||||||
|
#导出书签
|
||||||
|
office.exportbookmarks = ${KK_office_ExportBookmarks:true}
|
||||||
|
#批注作为PDF的注释
|
||||||
|
office.exportnotes = ${KK_office_ExportNotes:true}
|
||||||
|
#加密文档 生成的PDF文档 添加密码(密码为加密文档的密码)
|
||||||
|
office.documentopenpasswords = ${KK_office_DocumentOpenPassword:true}
|
||||||
|
|
|
@ -51,6 +51,13 @@ public class ConfigConstants {
|
||||||
private static String cadPreviewType;
|
private static String cadPreviewType;
|
||||||
private static Boolean deleteSourceFile;
|
private static Boolean deleteSourceFile;
|
||||||
private static Boolean deleteCaptcha;
|
private static Boolean deleteCaptcha;
|
||||||
|
private static String officePageRange;
|
||||||
|
private static String officeWatermark;
|
||||||
|
private static String officeQuality;
|
||||||
|
private static String officeMaxImageResolution;
|
||||||
|
private static Boolean officeExportBookmarks;
|
||||||
|
private static Boolean officeExportNotes;
|
||||||
|
private static Boolean officeDocumentOpenPasswords;
|
||||||
|
|
||||||
public static final String DEFAULT_CACHE_ENABLED = "true";
|
public static final String DEFAULT_CACHE_ENABLED = "true";
|
||||||
public static final String DEFAULT_TXT_TYPE = "txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd";
|
public static final String DEFAULT_TXT_TYPE = "txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd";
|
||||||
|
@ -81,6 +88,15 @@ public class ConfigConstants {
|
||||||
public static final String DEFAULT_DELETE_SOURCE_FILE = "true";
|
public static final String DEFAULT_DELETE_SOURCE_FILE = "true";
|
||||||
public static final String DEFAULT_DELETE_CAPTCHA = "false";
|
public static final String DEFAULT_DELETE_CAPTCHA = "false";
|
||||||
|
|
||||||
|
|
||||||
|
public static final String DEFAULT_OFFICE_PAQERANQE = "false";
|
||||||
|
public static final String DEFAULT_OFFICE_WATERMARK = "false";
|
||||||
|
public static final String DEFAULT_OFFICE_QUALITY = "80";
|
||||||
|
public static final String DEFAULT_OFFICE_MAXIMAQERESOLUTION = "150";
|
||||||
|
public static final String DEFAULT_OFFICE_EXPORTBOOKMARKS = "true";
|
||||||
|
public static final String DEFAULT_OFFICE_EXPORTNOTES = "true";
|
||||||
|
public static final String DEFAULT_EOCUMENTOPENPASSWORDS = "true";
|
||||||
|
|
||||||
public static Boolean isCacheEnabled() {
|
public static Boolean isCacheEnabled() {
|
||||||
return cacheEnabled;
|
return cacheEnabled;
|
||||||
}
|
}
|
||||||
|
@ -478,4 +494,86 @@ public class ConfigConstants {
|
||||||
public static void setDeleteCaptchaValue(Boolean deleteCaptcha) {
|
public static void setDeleteCaptchaValue(Boolean deleteCaptcha) {
|
||||||
ConfigConstants.deleteCaptcha = deleteCaptcha;
|
ConfigConstants.deleteCaptcha = deleteCaptcha;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 以下为OFFICE转换模块设置
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static String getofficePageRange() {
|
||||||
|
return officePageRange;
|
||||||
|
}
|
||||||
|
@Value("${office.pagerange:false}")
|
||||||
|
public void setOfficePageRange(String officepagerange) {
|
||||||
|
setOfficePageRangeValue(officepagerange);
|
||||||
|
}
|
||||||
|
public static void setOfficePageRangeValue(String officepagerange) {
|
||||||
|
ConfigConstants.officePageRange = officepagerange;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getofficeWatermark() {
|
||||||
|
return officeWatermark;
|
||||||
|
}
|
||||||
|
@Value("${office.watermark:false}")
|
||||||
|
public void setOfficeWatermark(String officewatermark) {
|
||||||
|
setOfficeWatermarkValue(officewatermark);
|
||||||
|
}
|
||||||
|
public static void setOfficeWatermarkValue(String officewatermark) {
|
||||||
|
ConfigConstants.officeWatermark = officewatermark;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getofficeQuality() {
|
||||||
|
return officeQuality;
|
||||||
|
}
|
||||||
|
@Value("${office.Quality:80}")
|
||||||
|
public void setOfficeQuality(String officequality) {
|
||||||
|
setOfficeQualityValue(officequality);
|
||||||
|
}
|
||||||
|
public static void setOfficeQualityValue(String officequality) {
|
||||||
|
ConfigConstants.officeQuality = officequality;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getofficeMaxImageResolution() {
|
||||||
|
return officeMaxImageResolution;
|
||||||
|
}
|
||||||
|
@Value("${office.maximageresolution:150}")
|
||||||
|
public void setofficeMaxImageResolution(String officemaximageresolution) {
|
||||||
|
setOfficeMaxImageResolutionValue(officemaximageresolution);
|
||||||
|
}
|
||||||
|
public static void setOfficeMaxImageResolutionValue(String officemaximageresolution) {
|
||||||
|
ConfigConstants.officeMaxImageResolution = officemaximageresolution;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean getofficeExportBookmarks() {
|
||||||
|
return officeExportBookmarks;
|
||||||
|
}
|
||||||
|
@Value("${office.exportbookmarks:true}")
|
||||||
|
public void setofficeExportBookmarks(Boolean officeexportbookmarks) {
|
||||||
|
setOfficeExportBookmarksValue(officeexportbookmarks);
|
||||||
|
}
|
||||||
|
public static void setOfficeExportBookmarksValue(Boolean officeexportbookmarks) {
|
||||||
|
ConfigConstants.officeExportBookmarks = officeexportbookmarks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean getofficeExportNotes() {
|
||||||
|
return officeExportNotes;
|
||||||
|
}
|
||||||
|
@Value("${office.exportnotes:true}")
|
||||||
|
public void setExportNotes(Boolean officeofficeexportnotes) {
|
||||||
|
setOfficeExportNotesValue(officeofficeexportnotes);
|
||||||
|
}
|
||||||
|
public static void setOfficeExportNotesValue(Boolean officeofficeexportnotes) {
|
||||||
|
ConfigConstants.officeExportNotes = officeofficeexportnotes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean getofficeDocumentOpenPasswords() {
|
||||||
|
return officeDocumentOpenPasswords;
|
||||||
|
}
|
||||||
|
@Value("${office.documentopenpasswords:true}")
|
||||||
|
public void setDocumentOpenPasswords(Boolean officedocumentopenpasswords) {
|
||||||
|
setOfficeDocumentOpenPasswordsValue(officedocumentopenpasswords);
|
||||||
|
}
|
||||||
|
public static void setOfficeDocumentOpenPasswordsValue(Boolean officedocumentopenpasswords) {
|
||||||
|
ConfigConstants.officeDocumentOpenPasswords = officedocumentopenpasswords;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,6 +63,13 @@ public class ConfigRefreshComponent {
|
||||||
String cadPreviewType;
|
String cadPreviewType;
|
||||||
boolean deleteSourceFile;
|
boolean deleteSourceFile;
|
||||||
boolean deleteCaptcha;
|
boolean deleteCaptcha;
|
||||||
|
String officPageRange;
|
||||||
|
String officWatermark;
|
||||||
|
String officQuality;
|
||||||
|
String officMaxImageResolution;
|
||||||
|
boolean officExportBookmarks;
|
||||||
|
boolean officeExportNotes;
|
||||||
|
boolean officeDocumentOpenPasswords;
|
||||||
while (true) {
|
while (true) {
|
||||||
FileReader fileReader = new FileReader(configFilePath);
|
FileReader fileReader = new FileReader(configFilePath);
|
||||||
BufferedReader bufferedReader = new BufferedReader(fileReader);
|
BufferedReader bufferedReader = new BufferedReader(fileReader);
|
||||||
|
@ -96,6 +103,13 @@ public class ConfigRefreshComponent {
|
||||||
officeTypeWeb = properties.getProperty("office.type.web", ConfigConstants.DEFAULT_OFFICE_TYPE_WEB);
|
officeTypeWeb = properties.getProperty("office.type.web", ConfigConstants.DEFAULT_OFFICE_TYPE_WEB);
|
||||||
deleteSourceFile = Boolean.parseBoolean(properties.getProperty("delete.source.file", ConfigConstants.DEFAULT_DELETE_SOURCE_FILE));
|
deleteSourceFile = Boolean.parseBoolean(properties.getProperty("delete.source.file", ConfigConstants.DEFAULT_DELETE_SOURCE_FILE));
|
||||||
deleteCaptcha = Boolean.parseBoolean(properties.getProperty("delete.captcha", ConfigConstants.DEFAULT_DELETE_CAPTCHA));
|
deleteCaptcha = Boolean.parseBoolean(properties.getProperty("delete.captcha", ConfigConstants.DEFAULT_DELETE_CAPTCHA));
|
||||||
|
officPageRange = properties.getProperty("office.pagerange", ConfigConstants.DEFAULT_OFFICE_PAQERANQE);
|
||||||
|
officWatermark = properties.getProperty("office.watermark", ConfigConstants.DEFAULT_OFFICE_WATERMARK);
|
||||||
|
officQuality = properties.getProperty("office.quality", ConfigConstants.DEFAULT_OFFICE_QUALITY);
|
||||||
|
officMaxImageResolution = properties.getProperty("office.maximageresolution", ConfigConstants.DEFAULT_OFFICE_MAXIMAQERESOLUTION);
|
||||||
|
officExportBookmarks = Boolean.parseBoolean(properties.getProperty("office.exportbookmarks", ConfigConstants.DEFAULT_OFFICE_EXPORTBOOKMARKS));
|
||||||
|
officeExportNotes = Boolean.parseBoolean(properties.getProperty("office.exportnotes", ConfigConstants.DEFAULT_OFFICE_EXPORTNOTES));
|
||||||
|
officeDocumentOpenPasswords = Boolean.parseBoolean(properties.getProperty("office.documentopenpasswords", ConfigConstants.DEFAULT_EOCUMENTOPENPASSWORDS));
|
||||||
prohibitArray = prohibit.split(",");
|
prohibitArray = prohibit.split(",");
|
||||||
|
|
||||||
ConfigConstants.setCacheEnabledValueValue(cacheEnabled);
|
ConfigConstants.setCacheEnabledValueValue(cacheEnabled);
|
||||||
|
@ -122,6 +136,13 @@ public class ConfigRefreshComponent {
|
||||||
ConfigConstants.setPasswordValue(password);
|
ConfigConstants.setPasswordValue(password);
|
||||||
ConfigConstants.setPdf2JpgDpiValue(pdf2JpgDpi);
|
ConfigConstants.setPdf2JpgDpiValue(pdf2JpgDpi);
|
||||||
ConfigConstants.setOfficeTypeWebValue(officeTypeWeb);
|
ConfigConstants.setOfficeTypeWebValue(officeTypeWeb);
|
||||||
|
ConfigConstants.setOfficePageRangeValue(officPageRange);
|
||||||
|
ConfigConstants.setOfficeWatermarkValue(officWatermark);
|
||||||
|
ConfigConstants.setOfficeQualityValue(officQuality);
|
||||||
|
ConfigConstants.setOfficeMaxImageResolutionValue(officMaxImageResolution);
|
||||||
|
ConfigConstants.setOfficeExportBookmarksValue(officExportBookmarks);
|
||||||
|
ConfigConstants.setOfficeExportNotesValue(officeExportNotes);
|
||||||
|
ConfigConstants.setOfficeDocumentOpenPasswordsValue(officeDocumentOpenPasswords);
|
||||||
ConfigConstants.setDeleteSourceFileValue(deleteSourceFile);
|
ConfigConstants.setDeleteSourceFileValue(deleteSourceFile);
|
||||||
ConfigConstants.setDeleteCaptchaValue(deleteCaptcha);
|
ConfigConstants.setDeleteCaptchaValue(deleteCaptcha);
|
||||||
setWatermarkConfig(properties);
|
setWatermarkConfig(properties);
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package cn.keking.service;
|
package cn.keking.service;
|
||||||
|
|
||||||
|
import cn.keking.config.ConfigConstants;
|
||||||
import cn.keking.model.FileAttribute;
|
import cn.keking.model.FileAttribute;
|
||||||
import com.sun.star.document.UpdateDocMode;
|
import com.sun.star.document.UpdateDocMode;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
@ -33,15 +34,36 @@ public class OfficeToPdfService {
|
||||||
logger.error("创建目录【{}】失败,请检查目录权限!",outputFilePath_end);
|
logger.error("创建目录【{}】失败,请检查目录权限!",outputFilePath_end);
|
||||||
}
|
}
|
||||||
LocalConverter.Builder builder;
|
LocalConverter.Builder builder;
|
||||||
|
Map<String, Object> filterData = new HashMap<>();
|
||||||
|
filterData.put("EncryptFile", true);
|
||||||
|
if(!ConfigConstants.getofficePageRange().equals("false")){
|
||||||
|
filterData.put("PageRange", ConfigConstants.getofficePageRange()); //限制页面
|
||||||
|
}
|
||||||
|
if(!ConfigConstants.getofficeWatermark().equals("false")){
|
||||||
|
filterData.put("Watermark", ConfigConstants.getofficeWatermark()); //水印
|
||||||
|
}
|
||||||
|
filterData.put("Quality", ConfigConstants.getofficeQuality()); //图片压缩
|
||||||
|
filterData.put("MaxImageResolution", ConfigConstants.getofficeMaxImageResolution()); //DPI
|
||||||
|
if(ConfigConstants.getofficeExportBookmarks()){
|
||||||
|
filterData.put("ExportBookmarks", true); //导出书签
|
||||||
|
}
|
||||||
|
if(ConfigConstants.getofficeExportNotes()){
|
||||||
|
filterData.put("ExportNotes", true); //批注作为PDF的注释
|
||||||
|
}
|
||||||
|
if(!ConfigConstants.getofficeDocumentOpenPasswords()){
|
||||||
|
filterData.put("DocumentOpenPassword", fileAttribute.getFilePassword()); //给PDF添加密码
|
||||||
|
}
|
||||||
|
Map<String, Object> customProperties = new HashMap<>();
|
||||||
|
customProperties.put("FilterData", filterData);
|
||||||
if (StringUtils.isNotBlank(fileAttribute.getFilePassword())) {
|
if (StringUtils.isNotBlank(fileAttribute.getFilePassword())) {
|
||||||
Map<String, Object> loadProperties = new HashMap<>();
|
Map<String, Object> loadProperties = new HashMap<>();
|
||||||
loadProperties.put("Hidden", true);
|
loadProperties.put("Hidden", true);
|
||||||
loadProperties.put("ReadOnly", true);
|
loadProperties.put("ReadOnly", true);
|
||||||
loadProperties.put("UpdateDocMode", UpdateDocMode.NO_UPDATE);
|
loadProperties.put("UpdateDocMode", UpdateDocMode.NO_UPDATE);
|
||||||
loadProperties.put("Password", fileAttribute.getFilePassword());
|
loadProperties.put("Password", fileAttribute.getFilePassword());
|
||||||
builder = LocalConverter.builder().loadProperties(loadProperties);
|
builder = LocalConverter.builder().loadProperties(loadProperties).storeProperties(customProperties);
|
||||||
} else {
|
} else {
|
||||||
builder = LocalConverter.builder();
|
builder = LocalConverter.builder().storeProperties(customProperties);
|
||||||
}
|
}
|
||||||
builder.build().convert(inputFile).to(outputFile).execute();
|
builder.build().convert(inputFile).to(outputFile).execute();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue