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 请在百度云自行下载
百度云:https://pan.baidu.com/s/19aRzrTUhiuBHO4r9PkZbmA
提取码: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文件放入到 jre\bin 目录下 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");
        }
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自学之路←_←

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值