java word转pdf怎么转_java 如何将 word,excel,ppt如何转pdf --openoffice (1)

承上启下,可折叠

上一篇说的是:服务器是windows server时,用jacob将msoffice(指的是word,excel,ppt)转换成pdf。

若被部署项目的服务器是centOS等linux server时,就不能用之前的上述说的那种方式了。

在上一篇说到openoffice将msoffice转成pdf的时候会存在排版错位的问题,或者有的内容消失了,这是因为msoffice中的一些特有格式,openoffice不识别解析不了导致的。当然大部分的普通msoffice文档转换成pdf时,效果还是令人满意的。

所以这次说一下怎么用openoffice完成msoffice到pdf的转换。

PS:本文说的是java如何调用本机(当前服务器)的openoffice服务进行文档转换;调用其他服务器上的openoffice进行文档转换下一次再说。

1.前提条件

本机测试,本机安装一个openoffice软件即可。

若是被部署项目的服务器,可以在服务器本地安装一个openoffice软件;也可以在其他服调用其他服务器上的openoffice服务进行文档转换。

openoffice的下载地址:http://www.openoffice.org/

我本机的openoffice软件安装目录:D:\software\OpenOffice 4 ,如下图所示:

b90c60231611c150c8c7db3ab11bc12b.png

2.创建项目,引入jar包

1) maven项目。我本地的pom.xml配置如下:

4.0.0

indi.johnny

openoffice-convert

0.0.1-SNAPSHOT

com.google.guava

guava

19.0

com.github.livesense

jodconverter-core

1.0.5

2) 普通java项目 将下图中的jar包从这个地址下载下来引入项目即可: http://www.mvnrepository.com/artifact/com.github.livesense/jodconverter-core/1.0.5 ; guava包也可以在  http://www.mvnrepository.com搜到,下载引入项目即可。

大概的jar包如图所示:

6a296b6b2fddd968a2f312dfb9c37d6e.png

3.上代码

packageindi.johnny.convert;importjava.io.File;importjava.io.FileNotFoundException;importorg.artofsolving.jodconverter.OfficeDocumentConverter;importorg.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;importorg.artofsolving.jodconverter.office.OfficeManager;//转换文档为pdf

public classOpenOfficePdfConvert {/***@paramargs*/

private staticOfficeManager officeManager;private static String OFFICE_HOME = "D:/software/OpenOffice 4/";private static int port[] = { 8100};public void convert2PDF(String inputFile, String outputFile) throwsFileNotFoundException {

startService();

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

OfficeDocumentConverter converter= newOfficeDocumentConverter(officeManager);

converter.convert(new File(inputFile), newFile(outputFile));

stopService();

System.out.println();

}//打开服务器

public static voidstartService() {

DefaultOfficeManagerConfiguration configuration= newDefaultOfficeManagerConfiguration();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 voidstopService() {

System.out.println("关闭office转换服务....");if (officeManager != null) {

officeManager.stop();

}

System.out.println("关闭office转换成功!");

}public static void main(String[] args) throwsException {

String path= "C:/Users/johnny/Desktop/文档/20170420/test/001/";

OpenOfficePdfConvert opc= newOpenOfficePdfConvert();

opc.convert2PDF(path+"1.docx", path+"1.pdf");

}

}

将代码中的  OFFICE_HOME换成自己的openoffice的安装路径,端口8100不用动。

找一个msoffice文档测试运行一下,应该是可以的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值