java调用com组件将office文件转换成pdf (同发csdn)-阿里云开发者社区

开发者社区> 铭凡> 正文

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

简介:
+关注继续查看

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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
在SQL service或Oracle中将数字转换成有千位符号
1、在SQL service中的写法: 1 --Function主体 2 CREATE FUNCTION [dbo].[FnMoneyStyle](@Number float,@strType char(1)) 3 RETURNS VARCHAR(100) 4 AS 5 BE...
971 0
【技术贴】​用程序调用福昕阅读器打开pdf文件|解决C:\Program files不是内部或外部命
【技术贴】调用福昕阅读器的命令行方式打开pdf文件|解决C:\Program files中间有空格 不是内部或外部命令。   一 首先是解决路径中含有空格的这个问题,你可以把它当做环境变量写进path里面,或者像我一样,在路径外面套上双引号,如图。
956 0
C# 使用FileUpload控件上传图片,将文件转换成二进制进行存储与读取
状况描述:   需要上传文件,但是不想要保存到实体路径下,便可以用该功能来实现。   效果图:      点击【Upload】按钮,上传文件到数据库;   点击【Preview】,预览文件;   具体实现:   前台: 1 2 3 4 : 5 ...
1682 0
利用MaxCompute内建函数及UDTF转换json格式日志数据
本文介绍了如何使用MaxCompute UDF对JSON格式的日志进行信息提取和转换。
8183 0
+关注
40
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载