PDF报表操作01~~使用Jacob将word转换pdf

1. jacob介绍

jacob是Java与COM组件桥接的缩写,即JAVA-COM Bridge。通过使用Jacob类库,我们可以很方便地在Java程序中调用COM自动化组件。 Jacob最初是由美国人Dan Alder在Inventure公司担任CTO时编写的,目的是为了方便众多的程序员在Java2虚拟机上,调用Win32平台上COM自动化服务器中的组件。当Jacob项目以开源的方式在网络上公布以后,越来越多的人开始参与项目的研发与改进中去。 Jacob类库中只有两个包:com.jacob.activex和com.jacob.com。 1. com.jacob.activex包建立在com.jacob.com基础之上,主要包含了ActiveXComponent类。 2. com.jacob.com中有一个非常基础的类JacobObject,该包中比较常用的两个类Dispatch和Variant便是继承自JacobObject。

2. 使用场景

把Word转成PDF目前最简单的方式就是调用office的方法,本质上就是打开Word后另存为成pdf,通过什么方式来调用呢? 使用 jacob,速度上还是可以的,Word中的原样式也不会丢失。

3. 环境准备

最基本的环境:1、本机上安装了2007以上的office软件 2、jdk1.6以上的版本

3.1 百度云下载

在这里我也准备了一个 jacbo1.9 请在百度云自行下载 提取码:szy1

3.2 把下载的jar放入到本地仓库

这个jar从中央仓库中没有找到,需要我们自己打到本地仓库中。 进入到jar所在的目录执行以下命令:

注意: 不要在中文目录下操作
mvn install:install-file -DgroupId=com.jacob -DartifactId=jacob -Dversion=1.19 -Dfile=jacob.jar  -Dpackaging=jar

3.3 把下面dll放入到java的jre/bin目录中

把dll文件放入到 jrein 目录下 64位的放x64文件,32位的放x86文件 如果不太确定是32位还是64位的就把两个dll都放进去

3.4 在项目中加入依赖

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

4. Jacob调用MS Office COM自动化组件转换Office文档为PDF

5. 代码展示

把我D盘下的Word转成PDF
@Test
    void contextLoads() {
          
   
        //输入文件地址
        String source = "d://合同.docx";
        //输出文件地址
        String target = "d://合同.pdf";
        //调用window中的office程序
        ActiveXComponent app =null;
        try {
          
   
            //调用window中的office程序
            app = new ActiveXComponent("Word.Application");
            //调用word时,不显示窗口
            app.setProperty("Visible",false);
            //获取文档
            Dispatch docs = app.getProperty("Documents").toDispatch();
            //打开指定的文档
            Dispatch doc = Dispatch.call(docs, "Open",source).toDispatch();
            //调用另存为功能 宏值
            Dispatch.call(doc,"SaveAs",target,17);
            //关闭office
            Dispatch.call(doc,"Close");
        } catch (Exception exception) {
          
   
            exception.printStackTrace();
        }finally {
          
   
            //退出Office
            app.invoke("Quit");
        }
    }
经验分享 程序员 微信小程序 职场和发展