java word转pdf jacob_Java 使用 jacob 将 word 文档转换为 pdf 文件

网上查询了许许多多的博客,说利用 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 目录下

实现代码如下:

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 package com.jd.poi.test;

2

3 import java.io.File;

4

5 import com.jacob.activeX.ActiveXComponent;

6 import com.jacob.com.ComThread;

7 import com.jacob.com.Dispatch;

8 import com.jacob.com.Variant;

9

10 /**

11 * 效果最好的一种方法,但是需要 window 环境,而且速度是最慢的需要安装 msofficeWord 以及 SaveAsPDFandXPS.exe (

12 * word 的一个插件,用来把 word 转化为 pdf,可以不用安装,本次未安装测试通过 )

13 *

14 * SaveAsPDFandXPS

15 * 下载地址: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\ext

19 * jacob.dll 放在 E:\jdk1.5.0_14\jre\bin

20 *

21 * @author u Y

22 *

23 */

24 public class WordToPdf {

25

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

27

28 public void wordToPDF(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 = new File(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", new Variant[] {});

57 }

58 // 如果没有这句话,winword.exe进程将不会关闭

59 ComThread.Release();

60 }

61

62 public static void main(String[] args) {

63 WordToPdf d = new WordToPdf();

64 d.wordToPDF("E:\\aaa\\Spring.doc", "E:\\aaa\\Spring.pdf");

65 }

66

67 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

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

26aeef13f2c70a0b10fb2f06ccb7dc06.png

65b4f071b05b3eb06e04d7e69521b836.png

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

382d455acfc96ff9374d36637cbebea7.png

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

博主3:  https://www.cnblogs.com/yjq520/p/7413171.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值