使用openoffice将office文档转成pdf

我转化pdf的目的是把用户上传的文档转pdf以作在线预览功能。

第一步需要下一个Apache_OpenOffice插件,没有它实现不了转化。

默认安装,

/**
* 在此之前需先开启openoffice服务,用命令行打开cd C:Program FilesOpenOffice.org 3program (openoffice安装的路径)
* 输入 soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
*/开启Apache_OpenOffice服务

第二步项目引入Apache_OpenOffice相关jar包

<!-- 文档 -->
<dependency>
<groupId>com.github.livesense</groupId>
<artifactId>jodconverter-core</artifactId>
<version>1.0.5</version>
</dependency>
jodconverter-2.2.2可以把docx,xlsx转pdf,mvn好像不能自动下来,需要手动引入

package ax.tst.common.util;


import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;

import java.io.File;
import java.io.FileNotFoundException;

/**
* @ClassName OpenOffice2PdfUtils
* @Description
* @Author: dsh
* @Date: 2019/12/20 14:58
* @Version V1.0
**/
//转换文档为pdf
public class OpenOffice2PdfUtils {

/**
* @param args
*/
private static OfficeManager officeManager;
private static String OFFICE_HOME = "C:/Program Files (x86)/OpenOffice 4/";//C:Program Files (x86)
private static int port[] = { 8100 };

public static void convert2PDF(File inputFile, String outputFile) throws FileNotFoundException {//File file, String pdfUrl

startService();
System.out.println("进行文档转换转换:" + inputFile + " --> " + outputFile);

OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
converter.convert(inputFile, new File(outputFile));

stopService();
System.out.println();

}

// 打开服务器
public static void startService() {
DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
try {
System.out.println("准备启动服务....");
configuration.setOfficeHome(OFFICE_HOME);// 设置OpenOffice.org安装目录
configuration.setPortNumbers(port); // 设置转换端口,默认为8100
configuration.setTaskExecutionTimeout(1000 * 60 * 5L);// 设置任务执行超时为5分钟
configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);// 设置任务队列超时为24小时

officeManager = configuration.buildOfficeManager();
officeManager.start(); // 启动服务
System.out.println("office转换服务启动成功!");
} catch (Exception ce) {
System.out.println("office转换服务启动失败!详细信息:" + ce);
}
}

// 关闭服务器
public static void stopService() {
System.out.println("关闭office转换服务....");
if (officeManager != null) {
officeManager.stop();
}
System.out.println("关闭office转换成功!");
}

public static void main(String[] args) throws Exception {
String path = "E:/";
OpenOffice2PdfUtils opc = new OpenOffice2PdfUtils();
// opc.convert2PDF(path+"8dd29733248744e5a59b4027f92dbf8c.pptx", path+"1.pdf");
// opc.convert2PDF(path+"工作梳理.docx", path+"2.pdf");
// opc.convert2PDF(path+"班组安全岛手机端详细设计方案V1.1.docx", path+"3.pdf");
}

}
 
原文地址:https://www.cnblogs.com/dsh2018/p/9673395.html