博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java调用com组件将office文件转换成pdf
阅读量:6275 次
发布时间:2019-06-22

本文共 1753 字,大约阅读时间需要 5 分钟。

 在非常多企业级应用中都涉及到将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);
     }

 

 

转载于:https://www.cnblogs.com/yutingliuyl/p/6932714.html

你可能感兴趣的文章
CSS 系列之伪类与伪元素
查看>>
《算法导论》学习分享——摊还分析
查看>>
GO — 提供跨域请求代理服务
查看>>
【javascript 基础篇】prototype & constructor & instanceof
查看>>
AngularJs功能(八)--表单验证
查看>>
【源起Netty 外传】System.getPropert()详解
查看>>
LeetCode 300. Longest Increasing Subsequence
查看>>
Spring Boot快速入门(三):依赖注入
查看>>
ASUS Merlin固件开启JFFS教程
查看>>
JS面向对象之四 【new】 (创建特定对象的语法糖)
查看>>
使用 Nodejs 制作命令行工具
查看>>
Python调用C/C++方式
查看>>
JavaScript中的函数与arguments
查看>>
在vue-cli中组件通信
查看>>
翻译连载 | 附录 C:函数式编程函数库-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
查看>>
【313天】跃迁之路——程序员高效学习方法论探索系列(实验阶段71-2017.12.15)...
查看>>
Linux和Ubuntu的区别与联系
查看>>
【译】Tree-shaking - webpack 2 和 Babel 6
查看>>
开源跨平台移动项目Ngui【Action动作系统】
查看>>
ESP32:mdns协议
查看>>