当前位置:   article > 正文

ppt转pdf的java实现_java ppt转pdf

java ppt转pdf

一、实现方式

java采用jacob包的功能,把ppt演示文稿转换为pdf。

支持文件格式:pptx,ppt

二、事先准备

1、依赖于office,需安装office办公软件

2、需要下载一个jacob-1.20-x64.dll的文件,放到java的bin目录下。

文件可以网上搜索下载。也可以点击百度网盘下载链接:

https://pan.baidu.com/s/16y-N03KPQJkne6g4sMLAmg?pwd=ix4j

三、Java转换代码

1、maven包依赖:

  1. <dependency>
  2. <groupId>com.jacob</groupId>
  3. <artifactId>jacob</artifactId>
  4. <version>1.20</version>
  5. </dependency>

2、java转换类:JacobUtil.java

主要看ppt2PDF方法。

  1. package com.lan.fts.util;
  2. import com.jacob.activeX.ActiveXComponent;
  3. import com.jacob.com.ComThread;
  4. import com.jacob.com.Dispatch;
  5. import com.jacob.com.Variant;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. /**
  9. * excel word ppt转pdf
  10. * 未完全完善
  11. * @author LAN
  12. * @date 2021年07月01日
  13. */
  14. public class JacobUtil {
  15. private static Logger log = LoggerFactory.getLogger(JacobUtil.class);
  16. private static final Integer WORD_TO_PDF_OPERAND = 17;
  17. private static final Integer PPT_TO_PDF_OPERAND = 32;
  18. private static final Integer EXCEL_TO_PDF_OPERAND = 0;
  19. public static void word2PDF(String inputFile, String pdfFile) {
  20. ComThread.InitSTA();
  21. ActiveXComponent app = new ActiveXComponent("Word.Application");
  22. try {
  23. app.setProperty("Visible", false);
  24. Dispatch docs = app.getProperty("Documents").toDispatch();
  25. Dispatch doc = Dispatch.call(docs, "Open", new Object[]{inputFile, false, true}).toDispatch();
  26. Dispatch.call(doc, "ExportAsFixedFormat", new Object[]{pdfFile, WORD_TO_PDF_OPERAND});
  27. Dispatch.call(doc, "Close", new Object[]{false});
  28. } catch (Exception e) {
  29. e.printStackTrace();
  30. System.out.println("转换出错:" + pdfFile);
  31. } finally {
  32. app.invoke("Quit");
  33. ComThread.Release();
  34. }
  35. }
  36. public static void excel2PDF(String inputFile, String pdfFile) {
  37. ComThread.InitSTA(true);
  38. ActiveXComponent app = new ActiveXComponent("Excel.Application");
  39. try {
  40. app.setProperty("Visible", false);
  41. app.setProperty("AutomationSecurity", new Variant(3));// 禁用宏
  42. Dispatch excels = app.getProperty("Workbooks").toDispatch();
  43. Object[] param1 = new Object[]{inputFile, new Variant(false), new Variant(false)};
  44. Dispatch excel = Dispatch.invoke(excels, "Open", Dispatch.Method, param1, new int[9]).toDispatch();
  45. //转换
  46. Object[] param2 = new Object[]{
  47. new Variant(EXCEL_TO_PDF_OPERAND), // PDF格式=0
  48. pdfFile,
  49. new Variant(0) //0=标准 (生成的PDF图片不会变模糊) ; 1=最小文件
  50. };
  51. Dispatch.invoke(excel, "ExportAsFixedFormat", Dispatch.Method, param2, new int[1]);
  52. //关闭
  53. Dispatch.call(excel, "Close", new Object[]{false});
  54. } catch (Exception e) {
  55. e.printStackTrace();
  56. System.out.println("转换出错:" + pdfFile);
  57. } finally {
  58. app.invoke("Quit");
  59. ComThread.Release();
  60. }
  61. }
  62. private static ActiveXComponent ppt_app = new ActiveXComponent("PowerPoint.Application");
  63. public static void ppt2PDF(String inputFile, String pdfFile) {
  64. // ComThread.InitSTA();
  65. Dispatch ppts = ppt_app.getProperty("Presentations").toDispatch();
  66. try {
  67. /**
  68. * call
  69. * param 4: ReadOnly
  70. * param 5: Untitled指定文件是否有标题
  71. * param 6: WithWindow指定文件是否可见
  72. * */
  73. Dispatch ppt = Dispatch.call(ppts, "Open", new Object[]{inputFile, true, true, false}).toDispatch();
  74. Dispatch.call(ppt, "SaveAs", new Object[]{pdfFile, PPT_TO_PDF_OPERAND});
  75. //关闭
  76. Dispatch.call(ppt, "Close");
  77. } catch (Exception e) {
  78. log.error("转换出错:" + inputFile, e);
  79. try{
  80. ppt_app.invoke("Quit");
  81. }catch (Exception e1){
  82. log.error("ppt_app.invoke(\"Quit\")关闭出错!",e);
  83. }finally{
  84. ppt_app = new ActiveXComponent("PowerPoint.Application");
  85. }
  86. } finally {
  87. // ppt_app.invoke("Quit");
  88. // ComThread.Release();
  89. }
  90. }
  91. }

四、运行测试

  1. public static void main(String[] args) {
  2. JacobUtil.ppt2PDF("D:\\data\\out\\lanhezhong文件转换.pptx", "D:\\data\\out\\lanhezhong文件转换.pptx.pdf");
  3. }

运行结果:

总结:ppt转pdf转换的结果比较好,基本上保持ppt的原本内容格式。

***********************************************************************************************
author:蓝何忠
email:lanhezhong@163.com
***********************************************************************************************

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/878445
推荐阅读
相关标签
  

闽ICP备14008679号