package com.xinhua.xpm.execute.util;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.regex.Pattern;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;
/**
* 将office文件格式转换为pdf格式
*
* @author minqiang
* @version 创建时间 2018年8月6日 下午2:37:30
*/
public class Office2PDF {
public static final String[] OFFICE_POSTFIXS = { "doc", "docx", "xls", "xlsx", "ppt", "pptx" };
private static String getOfficeHome() {
String osName = System.getProperty("os.name");
if (Pattern.matches("Linux.*", osName)) {
return "/opt/openoffice.org3";
} else if (Pattern.matches("Windows.*", osName)) {
return "C:/Program Files (x86)/OpenOffice 4";
} else if (Pattern.matches("Mac.*", osName)) {
return "/Application/OpenOffice.org.app/Contents";
}
return null;
}
private static void converterFile(String inputFilePath, String outputFilePath) {
File inputFile = new File(inputFilePath);
File outputFile = new File(outputFilePath);
if (!outputFile.getParentFile().exists()) {
outputFile.getParentFile().mkdirs();
}
DefaultOfficeManagerConfiguration config = new DefaultOfficeManagerConfiguration();
String officeHome = getOfficeHome();
config.setOfficeHome(officeHome);
OfficeManager officeManager = config.buildOfficeManager();
officeManager.start();
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
converter.convert(inputFile, outputFile);
officeManager.stop();
}
public static boolean openOffice2Pdf(String inputFilePath, String outputFilePath) {
boolean flag = false;
File inputFile = new File(inputFilePath);
ArrayList<String> office_Formats = new ArrayList<String>();
Collections.addAll(office_Formats, OFFICE_POSTFIXS);
if ((null != inputFilePath) && (inputFile.exists())) {
if (office_Formats.contains(getPostfix(inputFilePath))) {
if (null == outputFilePath) {
String outputFilePath_new = inputFilePath.toLowerCase().replaceAll("." + getPostfix(inputFilePath),
".pdf");
converterFile(inputFilePath, outputFilePath_new);
flag = true;
} else {
converterFile(inputFilePath, outputFilePath);
flag = true;
}
}
}
return flag;
}
public static String getPostfix(String inputFilePath) {
String[] p = inputFilePath.split("\\.");
if (p.length > 0) {
return p[p.length - 1];
} else {
return null;
}
}
}