LibreOffice转换pdf

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



猜你喜欢

转载自blog.csdn.net/xqhys/article/details/79875190