码迷,mamicode.com
首页 > 编程语言 > 详细

java 调用OpenOffice将word格式文件转换为pdf格式

时间:2018-09-14 20:34:15      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:连接   tcp   tput   环境搭建   code   这一   host   ref   进程   

一:环境搭建

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

JodConverter 下载地址http://sourceforge.net/projects/jodconverter/files/JODConverter/

解压后将目录下的所有jar包放在工程的lib下面或者采用引用的方式调用这些jar包。

下载后安装,我安装的路径为D:/openOffice/install/

 

二:启动服务

可以通过cmd调用服务, " cd D:/openOffice/install/program" 

执行

soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

查看是否安装成功,查看端口对应的pid

    netstat -ano|findstr  8100

 查看pid对应的服务程序名

    tasklist|findstr pid值

也可以把这一步省略,放到java程序中调用服务,因为启动服务占用内存比较大,在java中可以在使用

的时候调用,然后马上销毁。

 

三:程序代码

1:将word转换为pdf方法

技术分享图片
 1 // 将word格式的文件转换为pdf格式
 2     public void Word2Pdf(String srcPath, String desPath) throws IOException {
 3         // 源文件目录
 4         File inputFile = new File(srcPath);
 5         if (!inputFile.exists()) {
 6             System.out.println("源文件不存在!");
 7             return;
 8         }
 9         // 输出文件目录
10         File outputFile = new File(desPath);
11         if (!outputFile.getParentFile().exists()) {
12             outputFile.getParentFile().exists();
13         }
14         // 调用openoffice服务线程
15         String command = "D:/openOffice/install/program/soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";
16         Process p = Runtime.getRuntime().exec(command);
17 
18         // 连接openoffice服务
19         OpenOfficeConnection connection = new SocketOpenOfficeConnection(
20                 "127.0.0.1", 8100);
21         connection.connect();
22 
23         // 转换word到pdf
24         DocumentConverter converter = new OpenOfficeDocumentConverter(
25                 connection);
26         converter.convert(inputFile, outputFile);
27 
28         // 关闭连接
29         connection.disconnect();
30 
31         // 关闭进程
32         p.destroy();
33         System.out.println("转换完成!");
34     }
技术分享图片

2:调用方法

技术分享图片
1 @Test
2     public void testWord2Pdf() throws IOException {
3         String srcPath = "E:/test.docx";
4         String desPath = "E:/test.pdf";
5         Word2Pdf(srcPath, desPath);
6     }
技术分享图片

以上代码经过验证,可以正常运行。

四:遇到问题

错误信息:

java.net.ConnectException: connection failed: socket,host=10.101.50.71,port=8100,tcpNoDelay=1: java.net.ConnectException: Connection refused: connect

at com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection.connect(AbstractOpenOfficeConnection.java:79)

原因以及解决方法:第一次调用,soffice需要注册,所以到soffice.exe的安装路径下双击soffice.exe,注册即可。

java 调用OpenOffice将word格式文件转换为pdf格式

标签:连接   tcp   tput   环境搭建   code   这一   host   ref   进程   

原文地址:https://www.cnblogs.com/chunhui521/p/9648572.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!