java借助Acrobat实现pdf转word

本方法则依赖于windows平台,Adobe的Acrobat软件在pdf转word中功能良好,Jacob可以实现java代码和COM组件之间的互操作。

经过本人实践后,发现此方法效果比较能接受。

使用pdfbox转换的结果原来的格式已经没有了,并且表格也没有解析出来。但是使用Acrobat转换的结果能较完整的保留原来的格式。下面的解决方案主要介绍使用Acrobat实现的方法。

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

public class Pdf2Word {
    public static void test(String inPath,String outPath) {
        //pdfActiveX PDDoc对象 主要建立PDF对象
        ActiveXComponent app = new ActiveXComponent("AcroExch.PDDoc");
        //PDF控制对象
        Dispatch pdfObject = app.getObject();
        //下面两句是设置字体,有需要的小伙伴可以打开注释,注意源码里没有这两句,可自行加上
        //Dispatch font = Dispatch.get(pdfObject, "Font" ).toDispatch();
        //Dispatch.put(font, "song_ti", new Variant("宋体"));//设置字体,只能设置系统中存在的字体
        long start = System.currentTimeMillis();
        //打开PDF文件,建立PDF操作的开始
        Dispatch.call(pdfObject, "Open", new Variant(inPath));
        Variant jsObj = Dispatch.call(pdfObject, "GetJSObject");
        Dispatch.call(jsObj.getDispatch(), "SaveAs", outPath, "com.adobe.acrobat.docx");
        app.invoke("Close");
        long end = System.currentTimeMillis();
        System.out.println("耗时:"+(end-start)/1000+"秒");
        System.out.println("转换成功");
    }
}

代码比较简短,代码中“AcroExch.PDDoc”是Acrobat安装后注册的COM组件;组件方法参考:https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/#t=Acro12_MasterBook%2FIAC_API_OLE_Objects%2FOLE_Automation2.htm。

使用方法
环境配置
Jacob
从网站查找并下载Jacob。 Jacob.jar引入到项目中;dll文件有两个根据自己电脑的平台选择合适的文件放在 %JAVA_HOME%\jre\bin 或 %JAVA_HOME%\bin 目录下。如果发现识别不到dll文件,可以重启系统或者把dll放到windows相应的dll文件夹下,如:C:\Windows\System32

Acrobat
下载后直接安装,文章结尾有整理好的下载链接,创作不易,收点小小费用,介意的请绕行。

资源里是adobe acrobat pro dc 2022中文安装程序及其破解补丁,

由于资源大小限制,acrobat安装文件及破解文件放网盘里了。

下载后有任何问题,可留言,本人不定时查看一一回复。

首先要确保在windows平台上。调用时可以对代码进行再组织,封装成一个方法。需要注意的是转换过程比较耗时,如果转换一个大文件或者短时间内转换多个文件可以考虑多线程。

资源链接

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

锦瑟-华年

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

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

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

打赏作者

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

抵扣说明:

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

余额充值