java使用Jacob把PPT转PDF文件(一)

在Windos的环境要实现转PDF会使用Jacob,如果环境是Linux服务器,请考虑使用OpenOffice。

1.首先下载 jacob 使用地址:https://sourceforge.net/projects/jacob-project/

备用地址:其它下载地址
在这里插入图片描述

2.Maven包引用。

<dependency>
     <groupId>com.google.guava</groupId>
     <artifactId>guava</artifactId>
     <version>19.0</version>
</dependency>
 
<dependency>
     <groupId>com.jacob</groupId>
     <artifactId>jacob</artifactId>
     <version>1.19</version>
     <scope>system</scope>
     <!-- 将包考入maven配置 -->
     <systemPath>D:/repository/com/jacob/jacob/jacob-1.19/jacob.jar</systemPath>
</dependency>

3.建立 Java 代码。


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

public class PPTtoPdf {
    // 32指定为ppt转pdf
    private static final Integer FILE_TO_PDF_OPERAND = 32;

    public static void main(String[] args) {
        PPTtoPdf iJacob = new PPTtoPdf();
        iJacob.toPdf("D:\\Temp\\patch\\asdf.pptx", "D:\\Temp\\patch\\a .pdf");
    }

    public void toPdf(String sourcePath, String targetPath) {
        ActiveXComponent app = null;
        Dispatch ppt = null;
        try {
            ComThread.InitSTA();
            app = new ActiveXComponent("PowerPoint.Application");
            Dispatch ppts = app.getProperty("Presentations").toDispatch();

            ppt = Dispatch.call(ppts, "Open", sourcePath, true, true, false).toDispatch();
            Dispatch.call(ppt, "SaveAs", targetPath, FILE_TO_PDF_OPERAND );
        } catch (Exception e) {
            e.printStackTrace();
            throw e;
        } finally {
            if (ppt != null) {
                Dispatch.call(ppt, "Close");
            }
            if (app != null) {
                app.invoke("Quit");
            }
            ComThread.Release();
        }
    }

}

运行代码存在报错 :java.lang.NoClassDefFoundError: Could not initialize class com.jacob.com.ComThread

原因:受操作系统位数影响,Jacob无法使用。

解决办法:C:\Windows\System32目录和jdk/bin目录下拷贝一份jacob.dll。

另外一个原因是,代码里面依赖的jacob.jar的版本与,部署时放入System32和jdk/bin的dll版本不一致导致的。(项目实施过程发现)

最后看看转换效果。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Lovme_du

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

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

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

打赏作者

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

抵扣说明:

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

余额充值