office 功能调整 支持批注 转换页码限制 生成水印等等

This commit is contained in:
gaoxiongzaq
2023-07-22 08:51:23 +08:00
parent 535d2baf0b
commit b5e711bf87
4 changed files with 162 additions and 5 deletions

View File

@ -1,5 +1,6 @@
package cn.keking.service;
import cn.keking.config.ConfigConstants;
import cn.keking.model.FileAttribute;
import com.sun.star.document.UpdateDocMode;
import org.apache.commons.lang3.StringUtils;
@ -33,15 +34,36 @@ public class OfficeToPdfService {
logger.error("创建目录【{}】失败,请检查目录权限!",outputFilePath_end);
}
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())) {
Map<String, Object> loadProperties = new HashMap<>();
loadProperties.put("Hidden", true);
loadProperties.put("ReadOnly", true);
loadProperties.put("UpdateDocMode", UpdateDocMode.NO_UPDATE);
loadProperties.put("Password", fileAttribute.getFilePassword());
builder = LocalConverter.builder().loadProperties(loadProperties);
builder = LocalConverter.builder().loadProperties(loadProperties).storeProperties(customProperties);
} else {
builder = LocalConverter.builder();
builder = LocalConverter.builder().storeProperties(customProperties);
}
builder.build().convert(inputFile).to(outputFile).execute();
}