日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java实现pdf转word

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java实现pdf转word 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

調研

可供選擇的方案并不多,解決思路可以分成兩類。一類是直接使用工具將pdf轉成word,另一類是先用工具將pdf中的內容提取出來,再使用其他工具將內容創建到新的word中。目前,著重嘗試了第一類方案。
第一類方案中最流行的方法是使用pdfbox工具包,另一種方法是使用COM技術,利用java調用windows平臺的COM組件完成轉換。第一種方法完全使用java庫,沒有平臺限制,第二種方法則依賴于windows平臺,Adobe的Acrobat軟件在pdf轉word中功能良好,Jacob可以實現java代碼和COM組件之間的互操作。
分別嘗試了上述兩種方法,發現第二種方法轉換效果更好一些。

原pdf文件

使用PDFBOX的轉換結果

Acrobat的轉換結果

從圖中可以看出使用pdfbox轉換的結果原來的格式已經沒有了,并且表格也沒有解析出來。但是使用Acrobat轉換的結果能較完整的保留原來的格式。下面的解決方案主要介紹使用Acrobat實現的方法。

代碼

import java.io.File;import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant;public class Pdf2Word {public static void main(String[] args) {File inPath = new File("./test.pdf");File outPath = new File("./test.docx");//pdfActiveX PDDoc對象 主要建立PDF對象ActiveXComponent app = new ActiveXComponent("AcroExch.PDDoc");//PDF控制對象Dispatch pdfObject = app.getObject();long start = System.currentTimeMillis();//打開PDF文件,建立PDF操作的開始Dispatch.call(pdfObject, "Open", new Variant(inPath.getAbsolutePath())); Variant jsObj = Dispatch.call(pdfObject, "GetJSObject");Dispatch.call(jsObj.getDispatch(), "SaveAs", outPath.getPath(), "com.adobe.acrobat.docx");app.invoke("Close");long end = System.currentTimeMillis();System.out.println((end-start)/1000);System.out.println("Wao-haha");} }

代碼比較簡短,第14行中“AcroExch.PDDoc”是Acrobat安裝后注冊的COM組件;組件方法參考:https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/#t=Acro12_MasterBook%2FIAC_API_OLE_Objects%2FOLE_Automation2.htm。

使用方法

環境配置

Jacob
從https://sourceforge.net網站查找并下載Jacob。下載的ZIP包的結構如圖所示。 Jacob.jar引入到項目中;dll文件有兩個根據自己電腦的平臺選擇合適的文件放在 %JAVA_HOME%\jre\bin 或 %JAVA_HOME%\bin 目錄下。

Acrobat
下載后直接安裝

首先要確保在windows平臺上。調用時可以對代碼進行再組織,封裝成一個方法。需要注意的是轉換過程比較耗時,如果轉換一個大文件或者短時間內轉換多個文件可以考慮多線程。

性能

電腦配置:Intel i5-7300HQ,8G內存,64位Win10系統
? 轉換一個3頁的pdf論文,用時4s。
? 轉換一個554頁的pdf格式的電子書,用時80s。

總結

以上是生活随笔為你收集整理的java实现pdf转word的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。