在很多企业级应用中都涉及到将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);
}
相关推荐
电子行业周报:奇力新上调电感价格,华为、小米、OPPO新品同发.pdf
ths_3g_moto_a760_V1_01 同发顺手机炒股软件3G版免费试用!请快下载!7月20前免费!
专用设备行业:轨道交通设备行业专题一,新老基建同发力,轨交十四五仍大有可为-20200519-浙商证券-32页.pdf
07-同发方程式相量图.ppt07-同发方程式相量图.ppt07-同发方程式相量图.ppt
同发方程式相量图PPT课件.pptx
微机电力自动装置原理同发机的自并列PPT课件.pptx
投料孔作为将地面的固体物料直接输送至井下的快捷通道,解决了矿井建设和生产过程中的辅助运愉问题,具有缩短施工工期、减少成本的意义。通过对同发东周窑煤矿投料孔设计与施工工艺的研究,分析了钻探事故发生的原因;在...
本文主要介绍了同发东周窑主斜井带式输送机的改造目标、改造方案,并对该带式输送机中间驱动关键技术、控制系统的改造及煤流均衡系统等方面进行了研究,改造后主井带式输送机运量由4000t/h增加到了5500t/h,保证了矿井...
本文译自allwebdesignresources.com ...也许你要把一些内容转换成RSS或者要在你的网站上添加一个RSS种子?那么下面的列表会让你很高兴。这个列表把静态网页转化成XML RSS的所有免费工具一网打尽。这些工具对于很多高手
东周窑井田在巷道掘进以及回采过程中遇到诸多地质问题,仅仅通过钻孔不能把握煤层赋存及构造发育情况。利用方差数据技术处理三维地震勘探获得的数据,能够快速识别整个地震勘探区域的地质构造以及岩层的分布特征。...
【开发者开源大赛】QQ消息群发,支持图片文本同发
取qq窗口,,然后模拟按键,, 重点是支持图片与文字复制到剪辑板,并粘贴,,, 然后,,,自动保存上次所发内容,, 然后还有检测更新,,,, ...调用模块精易模块 ,,超级模块,,。。相信大家都有
中正568 同发 TF-582 对讲机写频软件
( 现代交换原理与通信网技术 (卞佳丽 着) 北京邮电大学出版社 课后答案.pdf )答:在任意的入线和出线之间建立连接,并将入线上的信息分发到出线上去。 9.分别说明什么是集中型、分配型、扩散型交换单元?什么是有向交换...
采用时间关联复测方法,用光电管结合数字示波器,利用高功率激光装置三倍频测量组件中的时间测量模块实现多路激光到达靶点时间同步的同发次测试。通过光束前端输出的任意波形发生器结合光纤放大传输组件中的光纤延迟...
理解系统策略 将FAT分区转变为NTFS分区 压缩文件 通过控制台压缩文件 复制和移动压缩文件 “磁盘管理器”工具简介 理解主分区 理解扩展分区 理解分区编号 通过“磁盘管理器”提交当前改变 理解带区集 创建带区集 ...
文档同发我的csdn博客: 最近在看firefly的代码,想想不如精读一下,果断入门server编程吧。 我会分步post关于firefly的代码阅读和学习笔记。 首先,firefly是国人开源的server,非常值得推介。网站: , QQ群:...
系统几大功能: 1.客户中心 存储客户资料,并能快速添加查找所需要...公司内部邮箱,并可内外同发!方便快捷,界面友好. 10.数据导出数据库备份 可将客户数据批量导出, 并且可以按选择只导出想要的信息 帮助业务快速拓展.