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后图片文字格式会混乱。