java 調用OpenOffice將word格式文件轉換為pdf格式
一:環境搭建
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格式