1.下載jacob包
2.將jar包引入項目,根據系統位數將相關dll文件引入到{JAVA_HOME}\jre\bin和C:\Windows\System32目錄下
3.代碼
//測試
public static void main(String [] args) {
pptToPdf("E:\\111.pptx", "E:\\222.pdf");
}
public static void pptToPdf(String sourcePath, String targetPath) {
ActiveXComponent app = null;
Dispatch ppt = null;
try {
ComThread.InitSTA();
//app = new ActiveXComponent("PowerPoint.Application");
app = new ActiveXComponent("KWPP.Application");//安裝wps
Dispatch ppts = app.getProperty("Presentations").toDispatch();
/*
* call
* param 4: ReadOnly
* param 5: Untitled指定文件是否有標題
* param 6: WithWindow指定文件是否可見
* */
ppt = Dispatch.call(ppts, "Open", sourcePath, true,false, false).toDispatch();
// ppSaveAsPDF爲特定值32
Dispatch.call(ppt, "SaveAs", targetPath, 32);
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
if (ppt != null) {
Dispatch.call(ppt, "Close");
}
if (app != null) {
app.invoke("Quit");
}
ComThread.Release();
}
}
4.問題
將ppt轉化爲pdf是爲了項目中在富文本編輯器中直接上傳ppt文件可以直接顯示,項目中富文本編輯器使用的是ckeditor,在flash中上傳ppt或者視頻,ppt轉化爲pdf後可以直接顯示。
使用原版PowerPoint.Application生成的pdf文件會生成非文件名稱的標題而且不知道在哪來的怎麼修改,使用KWPP.Application安裝wps生成的標題就是pdf文件的名稱。
使用第三方Spire.Presentation方法簡單,但是圖片ppt轉化爲pdf後圖片文字格式會混亂。