1,下载安装LibreOffice(根据系统下载对应版本),这里提供windows64的版本(LibreOffice_6.2.8_Win_x64.msi)
https://download.csdn.net/download/weixin_46054799/13763983
2,实现过程
主要代码其实只有一句
libreOfficePath 是软件安装的根目录(C:\Program Files\LibreOffice\program)注意是program文件夹;
command = libreOfficePath + File.separator + "soffice --convert-to pdf " + 源文件路劲 + " --outdir " + 转换后路径;
下面是我需要的实现过程,之前判断了系统,现在linux系统和windows命令一样了,也就不需要判断了,可以做参考
public static synchronized boolean libreDoc2Pdf(String docPath, String outDir, String libreOfficePath) throws Exception {
try {
String osName = System.getProperty("os.name");
String command;
if (osName.contains("Windows")) {
//soffice --convert-to pdf --outdir E:/test.docx
command = libreOfficePath + File.separator + "soffice --convert-to pdf " + docPath + " --outdir " + outDir;
} else {
File file = new File(docPath);
// command = "doc2pdf --output=" + outDir + File.separator + file.getName().replaceAll(".(?i)doc", ".pdf") + " " + docPath;
//2020-5-29,在centos上实测,Libreoffice 5.3.6.1的转换pdf的命令格式与windows系统的相同
command = libreOfficePath + File.separator + "soffice --convert-to pdf " + docPath + " --outdir " + outDir;
}
String result = executeCommand(command);
log.info("Convert to pdf result: {}", result);
if (result.equals("") || result.contains("writer_pdf_Export")) {
return true;
}
} catch (Exception e) {
throw e;
}
return false;
}