java 使用jacod 實現word轉pdf

java 使用jacod實現word轉pdf(IDEA Maven項目)

步驟:

一、 插件與jar包下載

SaveAsPDFandXPS 下載地址:
http://www.microsoft.com/zh-cn/download/details.aspx?id=7
(若訪問不了,百度搜索SaveAsPDFandXPS)
jacob 包下載地址:
http://sourceforge.net/projects/jacob-project/



二、安裝插件SaveAsPDFandXPS (本例好像不安裝也可以)

如要安裝,百度搜索SaveAsPDFandXPS,安裝即可

三、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 目錄下

四、 項目裏src/main/resource/lib 下放jar包

五、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>

六、實現類

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");
    }

}

七、結果

在這裏插入圖片描述成功。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章