java应用jcom将word转pdf_Java 使用 jacob 将 word 文档转换为 pdf 文件

这篇博客介绍了如何使用Java的Jacob库将Word文档转换为PDF。虽然该方法需要Windows环境和MS Office,但转换效果理想。作者指出,即使没有安装SaveAsPDFandXPS.exe插件,转换也能成功。代码示例展示了转换过程,包括打开Word文档、保存为PDF格式和关闭文档的步骤。
摘要由CSDN通过智能技术生成

网上查询了许许多多的博客,说利用 poi、iText、Jsoup、jdoctopdf、使用 jodconverter 来调用 openOffice 的服务来转换等等,我尝试了很多种,但要么显示不完全,要么可是可能有问题,使用这个 jacob 的方法我最开始是最不想用的,因为它要导入 dll 文件,但最后我还是选择了使用该方法,原因是感觉转换后的 pdf 文件简直就是完美。

jacob 缺点:需要 window 环境,而且速度是最慢的需要安装 msofficeWord 以及 SaveAsPDFandXPS.exe ( word 的一个插件,用来把 word 转化为 pdf ,本次未安装测试通过)

插入正题:

下载 jacob 解压后存放路径:

jacob.jar 放在 E:\jdk1.8.0\jre\lib\ext 目录下

jacob.dll 放在 E:\jdk1.8.0\jre\bin 目录下

实现代码如下:

1 packagecom.jd.poi.test;2

3 importjava.io.File;4

5 importcom.jacob.activeX.ActiveXComponent;6 importcom.jacob.com.ComThread;7 importcom.jacob.com.Dispatch;8 importcom.jacob.com.Variant;9

10 /**

11 * 效果最好的一种方法,但是需要 window 环境,而且速度是最慢的需要安装 msofficeWord 以及 SaveAsPDFandXPS.exe (12 * word 的一个插件,用来把 word 转化为 pdf,可以不用安装,本次未安装测试通过 )13 *14 * SaveAsPDFandXPS15 * 下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=7

16 * jacob 包下载地址:http://sourceforge.net/projects/jacob-project/

17 *18 * jacob.jar 放在 E:\jdk1.5.0_14\jre\lib\ext19 * jacob.dll 放在 E:\jdk1.5.0_14\jre\bin20 *21 *@authoru Y22 *23 */

24 public classWordToPdf {25

26 private static final int wdFormatPDF = 17; //PDF 格式

27

28 public voidwordToPDF(String sfileName, String toFileName) {29

30 System.out.println("启动 Word...");31 long start =System.currentTimeMillis();32 ActiveXComponent app = null;33 Dispatch doc = null;34 try{35 app = new ActiveXComponent("Word.Application");36 app.setProperty("Visible", new Variant(false));37 Dispatch docs = app.getProperty("Documents").toDispatch();38 doc = Dispatch.call(docs, "Open", sfileName).toDispatch();39 System.out.println("打开文档..." +sfileName);40 System.out.println("转换文档到 PDF..." +toFileName);41 File tofile = newFile(toFileName);42 if(tofile.exists()) {43 tofile.delete();44 }45 Dispatch.call(doc, "SaveAs", toFileName, //FileName

46 wdFormatPDF);47 long end =System.currentTimeMillis();48 System.out.println("转换完成..用时:" + (end - start) + "ms.");49

50 } catch(Exception e) {51 System.out.println("========Error:文档转换失败:" +e.getMessage());52 } finally{53 Dispatch.call(doc, "Close", false);54 System.out.println("关闭文档");55 if (app != null)56 app.invoke("Quit", newVariant[] {});57 }58 //如果没有这句话,winword.exe进程将不会关闭

59 ComThread.Release();60 }61

62 public static voidmain(String[] args) {63 WordToPdf d = newWordToPdf();64 d.wordToPDF("E:\\aaa\\Spring.doc", "E:\\aaa\\Spring.pdf");65 }66

67 }

本次博主的测试并没有安装 SaveAsPDFandXPS.exe 但最后也是完全转换成功,具体原因不明,转换后如图所示,图片和字体均为发现异常:

26aeef13f2c70a0b10fb2f06ccb7dc06.png

65b4f071b05b3eb06e04d7e69521b836.png

如果出现如下错误,可以尝试安装 SaveAsPDFandXPS.exe 后在尝试:

382d455acfc96ff9374d36637cbebea7.png

最后,感谢两位博主的教程分享,有了你们的铺路,我们才会更加轻易的找到资源,吃水不忘挖井人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值