java 使用jacod實現word轉pdf(IDEA Maven項目)
步驟:java
1、 插件與jar包下載
SaveAsPDFandXPS 下載地址:
http://www.microsoft.com/zh-cn/download/details.aspx?id=7
(若訪問不了,百度搜索SaveAsPDFandXPS)
jacob 包下載地址:
http://sourceforge.net/projects/jacob-project/
app
2、安裝插件SaveAsPDFandXPS (本例好像不安裝也能夠)
如要安裝,百度搜索SaveAsPDFandXPS,安裝便可測試
3、jacod jar包和dll存放路徑
.下載 jacob 解壓後存放路徑:
jacob.jar 放在 C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext目錄下
jacob.dll 放在 C:\Program Files\Java\jdk1.8.0_171\jre\bin 目錄下
ui
4、 項目裏src/main/resource/lib 下放jar包
5、pom文件中添加依賴
<dependency> <groupId>com.jacob</groupId> <artifactId>jacob</artifactId> <version>1.20</version> <scope>system</scope> <systemPath>${basedir}/src/main/resources/lib/jacob.jar</systemPath> </dependency>
6、實現類
import java.io.File; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import com.jacob.com.Variant; /** * 效果最好的一種方法,可是須要 window 環境,並且速度是最慢的須要安裝 msofficeWord 以及 SaveAsPDFandXPS.exe ( * word 的一個插件,用來把 word 轉化爲 pdf,能夠不用安裝,本次未安裝測試經過 ) * * * */ public class WordToPdf { private static final int wdFormatPDF = 17; // PDF 格式 public void wordToPDF(String sfileName, String toFileName) { System.out.println("啓動 Word..."); long start = System.currentTimeMillis(); ActiveXComponent app = null; Dispatch doc = null; try { app = new ActiveXComponent("Word.Application"); app.setProperty("Visible", new Variant(false)); Dispatch docs = app.getProperty("Documents").toDispatch(); doc = Dispatch.call(docs, "Open", sfileName).toDispatch(); System.out.println("打開文檔..." + sfileName); System.out.println("轉換文檔到 PDF..." + toFileName); File tofile = new File(toFileName); if (tofile.exists()) { tofile.delete(); } Dispatch.call(doc, "SaveAs", toFileName, // FileName wdFormatPDF); long end = System.currentTimeMillis(); System.out.println("轉換完成..用時:" + (end - start) + "ms."); } catch (Exception e) { System.out.println("========Error:文檔轉換失敗:" + e.getMessage()); } finally { Dispatch.call(doc, "Close", false); System.out.println("關閉文檔"); if (app != null) app.invoke("Quit", new Variant[] { }); } // 若是沒有這句話,winword.exe進程將不會關閉 ComThread.Release(); } public static void main(String[] args) { WordToPdf d = new WordToPdf(); d.wordToPDF("F:/Word轉PDF/複雜的word.docx", "F:/Word轉PDF/複雜的word.pdf"); } }
7、結果
成功。。。spa