package com.demo.libreOffice;
import java.io.File;
import java.util.Date;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.ExternalOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;
public class LibreOfficeAndJodconverter {
public static String doDocToFdpLibre() {
// File inputFile = new File("d:/1.txt");
// File inputFile = new File("d:/ppt.ppt");
// File inputFile = new File("d:/pptx.pptx");
// File inputFile = new File("d:/doc.doc");
File inputFile = new File("E:/dianziqianzhang/数据储蓄协议.docx");
// File inputFile = new File("d:/xls.xls");
//File inputFile = new File("d:/jpg.jpg");
// File inputFile = new File("d:/gif.gif");
//txt:使用libreOffice来转换pdf,转换成功,但是中文有乱码!!!!!
// doc:这是office中的doc文档,可以转换成功,并且中文没有乱码
//docx:这是office中的docx文档,可以转换成功,并且中文没有乱码
//ppt和pptx:转换成功。
//xls:转换成功,没有中文乱码
//xlsx:转换成功
//jpg和png:成功
System.out.println("libreOffice开始转换..............................");
Long startTime = new Date().getTime();
OfficeManager officeManager = null;
try {
System.out.println("尝试连接已启动的服务...");
ExternalOfficeManagerConfiguration externalProcessOfficeManager = new ExternalOfficeManagerConfiguration();
externalProcessOfficeManager.setConnectOnStart(true);
externalProcessOfficeManager.setPortNumber(8100);
officeManager = externalProcessOfficeManager.buildOfficeManager();
officeManager.start();
System.out.println("转换服务启动成功!");
} catch (Exception e) {
//命令方式:soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
System.out.println("启动新服务!");
String libreOfficePath = "E:/gongju/LibreOffice 5";
// 此类在jodconverter-core中3版本中存在,在2.2.2版本中不存在
DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
// libreOffice的安装目录
configuration.setOfficeHome(new File(libreOfficePath));
// 设置端口号
configuration.setPortNumber(8100);
// 设置任务执行超时为5分钟
configuration.setTaskExecutionTimeout(1000 * 60 * 5L);
// 设置任务队列超时为24小时
configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);
// 开启转换服务
officeManager = configuration.buildOfficeManager();
officeManager.start();
System.out.println("服务启动成功!");
}
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
File outputFile = new File("d:/jpgLibre.pdf");
converter.convert(inputFile, outputFile);
//converter.convert(inputFile, outputFile, outputFormat)
// 转换结束
officeManager.stop();
System.out.println("转换结束。。。。。");
//转换时间
long endTime = new Date().getTime();
long time = endTime - startTime;
System.out.println("libreOffice转换所用时间为:"+time);
return outputFile.getPath();
}
public static void main(String[] args) {
doDocToFdpLibre();
}
}
所需jar包:https://pan.baidu.com/s/1U7HwVLB-0FXTqz8Oyb_V5Q