java调用com组件将office文件转换成pdf (同发csdn)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java调用com组件将office文件转换成pdf (同发csdn)

java调用com组件将office文件转换成pdf (同发csdn)

 2014/6/8 12:25:20  小码哥BASE64  程序员俱乐部  我要评论(0)
  • 摘要:在很多企业级应用中都涉及到将office图片转换成pdf进行保存或者发布的场景,因为pdf格式的文档方便进行加密和权限控制(类似于百度文库)。总结起来目前将office文件转换成pdf的方法主要有两种:1、利用jcob调用msoffice的com组件,将office文档转换成pdf。2、利用jcob调用acrobat将office文档转换成pdf。在实际使用中发现,由于office不同所以本的文件格式不一致,所以任何第三方的转化工具都不可能完美的兼容所有office版本
  • 标签:文件 Java CSDN Office

?

在很多企业级应用中都涉及到将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引用到java工程中。

?其次,编写代码,初始化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);
???? }

上一篇: Swift语言指南(四)--类型安全和类型推断 下一篇: 没有下一篇了!
发表评论
用户名: 匿名