java使用Jacob把PPT轉PDF文件(一)

在Windos的環境要實現轉PDF會使用Jacob,如果環境是Linux服務器,請考慮使用OpenOffice。

1.首先下載 jacob 使用地址:https://sourceforge.net/projects/jacob-project/
在這裏插入圖片描述

2.Maven包引用。

<dependency>
     <groupId>com.google.guava</groupId>
     <artifactId>guava</artifactId>
     <version>19.0</version>
</dependency>
 
<dependency>
     <groupId>com.jacob</groupId>
     <artifactId>jacob</artifactId>
     <version>1.19</version>
     <scope>system</scope>
     <!-- 將包考入maven配置 -->
     <systemPath>D:/repository/com/jacob/jacob/jacob-1.19/jacob.jar</systemPath>
</dependency>

3.建立 Java 代碼。


import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;

public class PPTtoPdf {
    // 32指定爲ppt轉pdf
    private static final Integer FILE_TO_PDF_OPERAND = 32;

    public static void main(String[] args) {
        PPTtoPdf iJacob = new PPTtoPdf();
        iJacob.toPdf("D:\\Temp\\patch\\asdf.pptx", "D:\\Temp\\patch\\a .pdf");
    }

    public void toPdf(String sourcePath, String targetPath) {
        ActiveXComponent app = null;
        Dispatch ppt = null;
        try {
            ComThread.InitSTA();
            app = new ActiveXComponent("PowerPoint.Application");
            Dispatch ppts = app.getProperty("Presentations").toDispatch();

            ppt = Dispatch.call(ppts, "Open", sourcePath, true, true, false).toDispatch();
            Dispatch.call(ppt, "SaveAs", targetPath, FILE_TO_PDF_OPERAND );
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        } finally {
            if (ppt != null) {
                Dispatch.call(ppt, "Close");
            }
            if (app != null) {
                app.invoke("Quit");
            }
            ComThread.Release();
        }
    }

}

運行代碼存在報錯 :java.lang.NoClassDefFoundError: Could not initialize class com.jacob.com.ComThread

原因:受操作系統位數影響,Jacob無法使用。

解決辦法:C:\Windows\System32目錄和jdk/bin目錄下拷貝一份jacob.dll。

最後看看轉換效果。
在這裏插入圖片描述

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