1、安装openoffice程序(必须安装,才可以实现转换)
2、转换工具类,代码
import lombok.Getter;
import lombok.Setter;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;
import java.io.File;
@Getter
@Setter
public class File2PdfUtil {
private static OfficeManager officeManager;
//openoffice安装后program文件夹所在的路径(自定义安装路径,一般也在c盘)
private final static String openOfficeHome = "C:/Program Files (x86)/OpenOffice 4";
//转换端口
private final static Integer portNumber = 8100;
//设置任务执行超时时间为5分钟
private final static Long taskExcutionTimeout = 300000L;
//设置任务队列超时为24小时
private final static Long taskQueueTimepout = 86400000L;
/**
* 转换文件成pdf
* @Param currentFile:原文件路径(例:C:\\excel测试.xlsx)
* @toFilePath:生成文件路径(例:D:\\测试.pdf)
*/
public static String file2pdf(String currentFile, String toFilePath) throws Exception {
//原文件
File realFile = new File(currentFile);
//创建的pdf
File outputFile = null;
try {
//创建的pdf
outputFile = new File(toFilePath);
if (outputFile.exists()){
//如果文件已经存在,则删除文件
outputFile.delete();
}
//新建孔文件
boolean fileCreateFlag = outputFile.createNewFile();
if (fileCreateFlag) {
startService();
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
converter.convert(realFile, outputFile);
}
} catch(Exception e) {
e.printStackTrace();
if (outputFile != null && outputFile.exists()){
//如果文件已经存在,则删除文件
outputFile.delete();
}
} finally {
stopService();
}
return toFilePath;
}
// 打开服务器
public static void startService() {
DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
try {
configuration.setOfficeHome(openOfficeHome);// 设置OpenOffice.org安装目录
configuration.setPortNumbers(portNumber); // 设置转换端口,默认为8100
configuration.setTaskExecutionTimeout(taskExcutionTimeout);// 设置任务执行超时为5分钟
configuration.setTaskQueueTimeout(taskQueueTimepout);// 设置任务队列超时为24小时
officeManager = configuration.buildOfficeManager();
officeManager.start(); // 启动服务
} catch (Exception ce) {
ce.printStackTrace();
}
}
// 关闭服务器
public static void stopService() {
if (officeManager != null) {
officeManager.stop();
}
}
}
3、使用的为maven项目,需要添加依赖(添加后此依赖作用:不需要在后台启动openoffice程序,直接在代码中使用,即OfficeManager 类的使用)
<dependency>
<groupId>com.github.livesense</groupId>
<artifactId>jodconverter-core</artifactId>
<version>1.0.5</version>
</dependency>
说明:编者测试以下转换,均可以转换成功:
1)表格转换pdf,
2)text转换pdf,
3)word转换pdf
4)png转换pdf
5)pptx转换pdf