java实现pdf转word
调研
可供选择的方案并不多,解决思路可以分成两类。一类是直接使用工具将pdf转成word,另一类是先用工具将pdf中的内容提取出来,再使用其他工具将内容创建到新的word中。目前,着重尝试了第一类方案。
第一类方案中最流行的方法是使用pdfbox工具包,另一种方法是使用COM技术,利用java调用windows平台的COM组件完成转换。第一种方法完全使用java库,没有平台限制,第二种方法则依赖于windows平台,Adobe的Acrobat软件在pdf转word中功能良好,Jacob可以实现java代码和COM组件之间的互操作。
分别尝试了上述两种方法,发现第二种方法转换效果更好一些。
原pdf文件
使用PDFBOX的转换结果
Acrobat的转换结果
从图中可以看出使用pdfbox转换的结果原来的格式已经没有了,并且表格也没有解析出来。但是使用Acrobat转换的结果能较完整的保留原来的格式。下面的解决方案主要介绍使用Acrobat实现的方法。
代码
import java.io.File;import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;public class Pdf2Word {public static void main(String[] args) {File inPath = new File("./test.pdf");File outPath = new File("./test.docx");//pdfActiveX PDDoc对象 主要建立PDF对象ActiveXComponent app = new ActiveXComponent("AcroExch.PDDoc");//PDF控制对象Dispatch pdfObject = app.getObject();long start = System.currentTimeMillis();//打开PDF文件,建立PDF操作的开始Dispatch.call(pdfObject, "Open", new Variant(inPath.getAbsolutePath())); Variant jsObj = Dispatch.call(pdfObject, "GetJSObject");Dispatch.call(jsObj.getDispatch(), "SaveAs", outPath.getPath(), "com.adobe.acrobat.docx");app.invoke("Close");long end = System.currentTimeMillis();System.out.println((end-start)/1000);System.out.println("Wao-haha");}
}
代码比较简短,第14行中“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
从https://sourceforge.net网站查找并下载Jacob。下载的ZIP包的结构如图所示。 Jacob.jar引入到项目中;dll文件有两个根据自己电脑的平台选择合适的文件放在 %JAVA_HOME%\jre\bin 或 %JAVA_HOME%\bin 目录下。
Acrobat
下载后直接安装
首先要确保在windows平台上。调用时可以对代码进行再组织,封装成一个方法。需要注意的是转换过程比较耗时,如果转换一个大文件或者短时间内转换多个文件可以考虑多线程。
性能
电脑配置:Intel i5-7300HQ,8G内存,64位Win10系统
转换一个3页的pdf论文,用时4s。
转换一个554页的pdf格式的电子书,用时80s。
java实现pdf转word相关推荐
- Java为 pdf、word和excel添加水印
1. 引入依赖 <!--easyexcel--><dependency><groupId>com.alibaba</groupId><artifa ...
- java实现pdf转为word
Installing Spire.Pdf.jar 如果您创建了⼀个 Maven 项⽬,您可以使⽤以下配置轻松地在您的应⽤程序中导⼊ jar.对于⾮ Maven 项⽬,请从此下载 jar ⽂件并⼿动 将 ...
- java实现PDF转Word(无水印无页数限制)完全开放
jar包破解 1.pom文件 分别复制进pom文件,记得配置maven的中央仓库在settings.xml中配置单独的仓库地址<repositories><repository> ...
- 使用java进行pdf转word实战
package com.ljl; /*** @author * @Package_name PACKAGE_NAME* @Date 2019/4/1 0001 上午 8:30* @Descriptio ...
- Java:pdf转word
转换思路 使用第三方库Spire的免费版本,转换页数要求11页 输入一个pdf时候,小于11页直接转换,大于11页就先切分成子pdf 对每一个小的pdf进行转换,最后再合并. 总体上就是一个大的pdf ...
- java 实现pdf 转word去除水印和去除页数限制
背景 每次下载的pdf文档想转成word文档,都从网上找各种找网址,网上的网址要么存在必须要充值,要么转化效果不好等等问题.作为一个技术人员,所以想能否实现pdf转化为word文档 代码实现 1.1 ...
- java实现PDF 转WORD
CSDN话题挑战赛第2期 参赛话题:Java技术分享 引言 由于市场上目前的各种格式文件的转换基本上都需要会员,怎么办呢? 不走寻常路,我们是程序员 我们当然要不走寻常路了,我们要动用一些特殊手段,展 ...
- java实现pdf转word,解决个别排版错乱问题
项目中要实现客户上传完pdf,上传成功后直接就转成word格式的,之前网上一些免费的转出来的word大致还行,但是有些排版就错乱了,如下图: 下面这个是用java改造后的,效果如下,排版整齐,和pdf ...
- Java 将PDF转为Word
众所周知,PDF文档除了具有较强稳定性和兼容性外, 还具有较强的安全性,在工作中可以有效避免别人无意中对文档内容进行修改.但与此同时,也妨碍了对文档的正常修改.这时我们可以将PDF转为Word文档进行 ...
- java实现 pdf转word
这里使用Apache PDFBox是Java开源PDF文档第三方库工具集,主要特征提取提取pdf提取文本.分隔合并.填写表单.保存为图片.PDF数字签名及创建PDF文件. 添加maven依赖 < ...
最新文章
- webpack 安装卸载
- python有哪些方向、应该怎么学-终于找到深圳学Python,有几个方向?怎么从一个方向学到底...
- java在面板中点击按钮后弹出对话框
- linux系统安装宝塔面板
- python如何输出两列数据_Python-如何将一列分为两列?
- 提高Java开发效率,Idea必装的几款插件
- 微信支付将推双面屏;库克谈收购英特尔基带业务;Chrome 76 稳定版发布 | 极客头条...
- 播放音乐的html语言,Html5音频和视频播放示例详解
- Glib2中G_DEFINE_TYPE原理(四)
- linux设备驱动(一)
- rectangle()函数与rect类详解
- NRF 52832 ble_app_blinky 官方示例 part1
- Unity中颜色空间(Color)HSV,HSB,HSL
- c语言sql数据库大作业,c语言连接sql数据库.docx
- VCC、 VDD、VSS、VEE 电压符号的解释
- 备赛脱脂经验分享_敲黑板,备赛这几招如果你还不知道,赶快学起来吧!
- MySQL原理与学习
- DDOS防御----CENTOS 内核TCP参数优化
- 从事Web前端相关的工作应该掌握哪些职业技能?
- 匹配标签的正则(用于抽取纯文本)