干货!java实现如何把PPT转PDF的两种方法,别再说你不会!(一)"/>
干货!java实现如何把PPT转PDF的两种方法,别再说你不会!(一)
说明
方案一、使用jacob可以将office文件转换成pdf,因为需要依赖Microsoft Office,适用于windows服务器部署的项目。
方案二、如果需要用Linux服务器,请考虑使用OpenOffice方案。
本文详细介绍如何使用jacob完成pdf转换
maven引入jar
<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>//.jar本地目录<systemPath>D:/.m2/repo/jacob-1.19/jacob.jar</systemPath>
</dependency>
PPT转PDF代码
//测试
public class TestJacob {public static void main(String [] args) {IJacob iJacob = new PPTFactory();IJacobPdfService service = iJacob.getJacob();service.toPdf("F:\\蛇口渔港概况 .pptx", "F:\\a .pdf");}
}//ppt转pdf
public class PPTApi implements IJacobPdfService {private static final Integer PPT_TO_PDF_OPERAND = 32;@Overridepublic 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();/** call* param 4: ReadOnly* param 5: Untitled指定文件是否有标题* param 6: WithWindow指定文件是否可见* */ppt = Dispatch.call(ppts, "Open", sourcePath, true, true, false).toDispatch();// ppSaveAsPDF为特定值32Dispatch.call(ppt, "SaveAs", targetPath, PPT_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();}}
}//service
public interface IJacobPdfService {Integer EXCEL_TO_PDF_OPERAND = 0;Integer WORD_TO_PDF_OPERAND = 17;Integer PPT_TO_PDF_OPERAND = 32;/*** to pdf* @param sourcePath* @param targetPath*/void toPdf(String sourcePath, String targetPath);
}//get jacob
public interface IJacob {/*** getJacob* @return*/IJacobPdfService getJacob();
}//ppt factory
public class PPTFactory implements IJacob {@Overridepublic IJacobPdfService getJacob() {return new PPTApi();}
}
测试效果
转换前
转换后
可以看到效果还是不错的。
更多推荐
干货!java实现如何把PPT转PDF的两种方法,别再说你不会!(一)
发布评论