Java实现高效保真Word转PDF

一、优缺点

优点:转换不失真,不受到中文、图片、附件影响,转换速度尚可(大约1M5秒)

缺点:Windows平台,且需要在JDK bin路径下增加 jacob.dll并安装 Microsoft Office

 

二、包依赖

1、pom.xml

<dependency>
    <groupId>com.jacob</groupId>
    <artifactId>jacob</artifactId>
    <version>1.19</version>
</dependency>

 

2、导入包

    自建仓库如果有这个包,直接导入就可以了,但如果没有相关包,只能自己下载、解压、移入本地库了

(1)访问官网,并下载链接

 

解压后包结构如下:

(2)重命名 jacob.jarjacob-1.19.jar,放到 Maven仓库

(如C:/Users/zhangsan/.m2/repository/com/jacob/jacob/1.19/

 

3、将 jacob-1.19-x64.dll 或 jacob-1.19-x86.dll 放到 JDK bin 路径下

(如C:/Program Files/Java/jdk1.8.0_152/bin

 

三、Java实现

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;

import java.io.File;

public class JacobUtil {

    /**
     * Word 文档转 PDF 文档
     *
     * @param wordPath Word 文档路径,含文件名和后缀.docx
     * @param pdfPath  PDF 文档路径,含文件名和后缀.pdf
     * @return
     * @require JDK/bin 路径下要 有jacob-*.**-x64.dll
     */
    public static boolean word2Pdf(String wordPath, String pdfPath) {
        ActiveXComponent app = null;
        try {
            File pdfFile = new File(pdfPath);
            if (pdfFile.exists()) {
                pdfFile.delete();
            }

            app = new ActiveXComponent("Word.Application");//Microsoft Office Word应用
            app.setProperty("Visible", false);

            Dispatch documents = app.getProperty("Documents").toDispatch();//Word内的文档
            Dispatch document = Dispatch.call(documents, "Open", wordPath, false, true).toDispatch();
            Dispatch.call(document, "SaveAs", pdfPath, 17);// Word → PDF 方式:值17
            Dispatch.call(document, "Close", false);

            if (pdfFile.exists()) {
                return true;
            } else {
                return false;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            if (null != app) {
                app.invoke("Quit", 0);
            }
        }
    }

}

 

四、报错

com.jacob.com.ComFailException: Can't get object clsid from progid
	at com.jacob.com.Dispatch.createInstanceNative(Native Method)
	at com.jacob.com.Dispatch.<init>(Dispatch.java:99)
	at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java:58)
	at *.utils.JacobUtil.word2Pdf(JacobUtil.java:24)

报错行是:

app = new ActiveXComponent("Word.Application");//Microsoft Office Word应用

报错原因:未安装 Microsoft Office Word应用

附:Microsoft Office 2013专业增强版 下载地址

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值