zoukankan      html  css  js  c++  java
  • java调用com组件将office文件转换成pdf

     在非常多企业级应用中都涉及到将office图片转换成pdf进行保存或者公布的场景,由于pdf格式的文档方便进行加密和权限控制(类似于百度文库)。总结起来眼下将office文件转换

    成pdf的方法主要有两种:
     1、利用jcob调用ms office的com组件,将office文档转换成pdf。


     2、利用jcob调用acrobat将office文档转换成pdf。

     在实际使用中发现。因为office不同所以本的文件格式不一致,所以不论什么第三方的转化工具都不可能完美的兼容全部office版本号,最好的方案就是调用ms office提供的com组件来进

    行转换。就算office高版本号出现。我们要做的也仅仅是升级我们的office版本号而已。

     首先,利用office的com组件进行文档转换首先须要到jacob官网下载一个jacob.jar和jacob.dll,jacob.dll须要放到windows的system32以下。jacob.jar引用到javaproject中。

     其次,编写代码。初始化word进程,并返回word的全部document对象:
             //打开word应用程序
             ActiveXComponent app = new ActiveXComponent("Word.Application");
             //设置word不可见,否则会弹出word界面
             app.setProperty("Visible", false);        
      //获得word中全部打开的文档,返回Documents对象
             Dispatch docs = app.getProperty("Documents").toDispatch();

     第三步。打开我们要转换的word文档:
      //调用Documents对象中Open方法打开文档。并返回打开的文档对象Document
             Dispatch doc = Dispatch.call(docs,
                                         "Open",
                                         "xxx.doc",
                                         false,
                                         true
                                         ).toDispatch();
     
     最后,另存我们刚才打开的文档。并关闭word进程:
      //调用Document对象的SaveAs方法,将文档保存为pdf格式
             Dispatch.call(doc,
                     "ExportAsFixedFormat",
                     "xxx.pdf",
                     wdFormatPDF        //word保存为pdf格式
                     );         //关闭文档
             Dispatch.call(doc, "Close",false);
             //关闭word应用程序
             app.invoke("Quit", 0);

    附录:完整代码

     public static void word2PDF(String inputFile,String pdfFile){
             //打开word应用程序
             ActiveXComponent app = new ActiveXComponent("Word.Application");
             //设置word不可见。否则会弹出word界面
             app.setProperty("Visible", false);
             //获得word中全部打开的文档,返回Documents对象
             Dispatch docs = app.getProperty("Documents").toDispatch();
             //调用Documents对象中Open方法打开文档。并返回打开的文档对象Document
             Dispatch doc = Dispatch.call(docs,
                                         "Open",
                                         inputFile,
                                         false,
                                         true
                                         ).toDispatch();
             //调用Document对象的SaveAs方法。将文档保存为pdf格式
             Dispatch.call(doc,
                     "ExportAsFixedFormat",
                     pdfFile,
                     wdFormatPDF        //word保存为pdf格式
                     );
             //关闭文档
             Dispatch.call(doc, "Close",false);
             //关闭word应用程序
             app.invoke("Quit", 0);
         }

  • 相关阅读:
    LOJ #6008. 「网络流 24 题」餐巾计划
    P2144 [FJOI2007]轮状病毒
    随记
    1010: [HNOI2008]玩具装箱toy(斜率优化)
    HDU 3507 Print Article(斜率优化)
    4819: [Sdoi2017]新生舞会(分数规划)
    POJ 2976 Dropping tests(01分数规划)
    spoj 104 Highways(Matrix-tree定理)
    dp专练
    4152: [AMPPZ2014]The Captain
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6932714.html
Copyright © 2011-2022 走看看