1. 程式人生 > >java 調用OpenOffice將word格式文件轉換為pdf格式

java 調用OpenOffice將word格式文件轉換為pdf格式

一次 復制代碼 端口 rto system files runtime 存在 tco

一:環境搭建

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格式