|
@@ -1,12 +1,17 @@
|
|
|
package cn.keking.service;
|
|
|
|
|
|
+import cn.keking.model.FileAttribute;
|
|
|
+import com.sun.star.document.UpdateDocMode;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.jodconverter.core.office.OfficeException;
|
|
|
-import org.jodconverter.local.JodConverter;
|
|
|
+import org.jodconverter.local.LocalConverter;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.io.File;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* @author yudian-it
|
|
@@ -16,22 +21,33 @@ public class OfficeToPdfService {
|
|
|
|
|
|
private final static Logger logger = LoggerFactory.getLogger(OfficeToPdfService.class);
|
|
|
|
|
|
- public void openOfficeToPDF(String inputFilePath, String outputFilePath) throws OfficeException {
|
|
|
- office2pdf(inputFilePath, outputFilePath);
|
|
|
+ public void openOfficeToPDF(String inputFilePath, String outputFilePath, FileAttribute fileAttribute) throws OfficeException {
|
|
|
+ office2pdf(inputFilePath, outputFilePath, fileAttribute);
|
|
|
}
|
|
|
|
|
|
|
|
|
- public static void converterFile(File inputFile, String outputFilePath_end) throws OfficeException {
|
|
|
+ public static void converterFile(File inputFile, String outputFilePath_end, FileAttribute fileAttribute) throws OfficeException {
|
|
|
File outputFile = new File(outputFilePath_end);
|
|
|
// 假如目标路径不存在,则新建该路径
|
|
|
if (!outputFile.getParentFile().exists() && !outputFile.getParentFile().mkdirs()) {
|
|
|
logger.error("创建目录【{}】失败,请检查目录权限!",outputFilePath_end);
|
|
|
}
|
|
|
- JodConverter.convert(inputFile).to(outputFile).execute();
|
|
|
+ LocalConverter.Builder builder;
|
|
|
+ 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);
|
|
|
+ } else {
|
|
|
+ builder = LocalConverter.builder();
|
|
|
+ }
|
|
|
+ builder.build().convert(inputFile).to(outputFile).execute();
|
|
|
}
|
|
|
|
|
|
|
|
|
- public void office2pdf(String inputFilePath, String outputFilePath) throws OfficeException {
|
|
|
+ public void office2pdf(String inputFilePath, String outputFilePath, FileAttribute fileAttribute) throws OfficeException {
|
|
|
if (null != inputFilePath) {
|
|
|
File inputFile = new File(inputFilePath);
|
|
|
// 判断目标文件路径是否为空
|
|
@@ -40,12 +56,12 @@ public class OfficeToPdfService {
|
|
|
String outputFilePath_end = getOutputFilePath(inputFilePath);
|
|
|
if (inputFile.exists()) {
|
|
|
// 找不到源文件, 则返回
|
|
|
- converterFile(inputFile, outputFilePath_end);
|
|
|
+ converterFile(inputFile, outputFilePath_end, fileAttribute);
|
|
|
}
|
|
|
} else {
|
|
|
if (inputFile.exists()) {
|
|
|
// 找不到源文件, 则返回
|
|
|
- converterFile(inputFile, outputFilePath);
|
|
|
+ converterFile(inputFile, outputFilePath, fileAttribute);
|
|
|
}
|
|
|
}
|
|
|
}
|