一:环境搭建
解压后将目录下的所有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) throwsIOException {3 //源文件目录
4 File inputFile = newFile(srcPath);5 if (!inputFile.exists()) {6 System.out.println("源文件不存在!");7 return;8 }9 //输出文件目录
10 File outputFile = newFile(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 = newSocketOpenOfficeConnection(20 "127.0.0.1", 8100);21 connection.connect();22
23 //转换word到pdf
24 DocumentConverter converter = newOpenOfficeDocumentConverter(25 connection);26 converter.convert(inputFile, outputFile);27
28 //关闭连接
29 connection.disconnect();30
31 //关闭进程
32 p.destroy();33 System.out.println("转换完成!");34 }
2:调用方法
1 @Test2 public void testWord2Pdf() throwsIOException {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,注册即可。