PDF 转Word 是一个十分十分广泛的需要,堪称人人忌危,为什么如此广泛的需要,却如此难行呢,还得看为什么会有这样的一个需要:

PDF文档遵循iOS32000的标准是由Adobe 公司推出的文档格局,之所以利用如此宽泛,是因为PDF精确定位了每个字符的坐标、依据坐标绘制的各种形态,应用PDF格局传输和打印文档能够保障格局的一致性,而后很多PDF文件是可用于浏览,展现,打印,但编辑起来是十分艰难,如格局调整,文字批改,款式调整等,那么就衍生了PDF 转Word这一历史性的需要,但因为两者之间采纳的编码标准以及布局机制的齐全不统一,导致转换起来会非常复杂,个别的工具不是格局错乱,就是内容错乱,很难达到客户的原生冀望。

其难点在于建设从PDF基于元素地位的格局到Word基于内容的格局的映射。PDF文档理论并不存在段落、表格的概念,PDF转Word要做的就是将PDF文档中“横、竖线条围绕着文本”解析为Word的“表格”将“文本及下方的一条横线”解析为“文本下划线”等等。

两个工具两套规定,自古以来两个工具之间的兼容转换,除非是为一家所有,会有通用的规范和接口预留,达到很好的兼容性,但 Adobe和微软都是微小的科技企业,且两款软件性能都是十分弱小且覆盖面全,要做到完满的匹配所有规定更是十分苦难。

对于报表用户来说,很多用户会将报表了解为报告,报告天然会联想到Word,那么就很心愿在页面中展现的内容可能成 Word 文件来进行存档,编辑等作用。

ActiveReportsJS 是前端的报表开发工具,不与后端关联,因而想要将展现的HTML 生成Word,研发团队通过一些调研发现整个过程会非常复杂十分艰难,正如他们反馈:“不是一个sprint 能解决的问题”,就PDF.js背地都有弱小的Mozilla撑持,更何况Word文档是依靠微软的Offic开发组件去生成的。

但在理论接触客户的时候,许多用户都会来询问相干内容包含如何用报表设计相似审批表、人事履历表、检测报告等很常见的Word报告。用户对后果都比较满意,但惟一用户不满的是报表后果只能生成pdf。 这是传统,这也是外围需要,也是痛点。

本葡萄就有些很着急,于是不信这个邪,在前端工具如此丰盛的状况下,竟没有一个这样可用的工具?

开始搜寻,关上google,榨干全副脑汁的词汇量输出了我须要的关键词,搜寻到了以下后果。
乍一看,第一条齐全吻合,Node.js 虽说是服务端也不是不能够承受,只有有计划即可。

应用cloudmersive-convert-api-client 实现任意文件格式的转换
https://cloudmersive.medium.c…

看着十分有戏

代码简略:

但认真看看代码, **果然老天在为咱们送货色的时候都在背地的标好了价格 :

心想如果能够,付费就付费吧, 毕竟咱们也是做付费商业软件的业余er,版权意识还是须要有的。

该JS 库提供了将近几十种的API及Class用于解决转换不同的格式文件:除了将PDF转Word外,还有其余发的文件格式转换,应用起来也是非常简单,

转换后果测评:
能够辨认本地的PDF 文件,转换后果:

可能保障90%的格局和款式,达到要求
图片可间接导入
背景色无奈保留
表格无奈间接导入为Word的表格,只能作为但文本
页眉页脚信息无奈间接导入为Word的页眉页脚,只作为文本
局部内容失落

产品价格
因为整个转换API 只是CloudMersive 的一个API性能,整个产品还附加其余的平安测验等性能,因而产品是按月及并发数免费的。大家可自行搜寻理解,不过他们网站倒是提供好了几个文件转换的工具十分好用,无需登录间接获取转换后果

https://cloudmersive.com/tools

尝试既然有PDF流间接暴力转换Word文档,可否?
通过搜寻发现PDF对象流间接用JS 转换为Word 文件是十分艰难的, 而且通过验证ARJS 导出PDF 文件能够用Word软件关上,那么忽然想到是否能够找一个中间件,将PDF流间接转换为doc或docx格局,但搜寻一番,尝试之后,只是在.pdf后面加了document.docx.pdf

该办法尝试失败。

跟技术大咖聊了之后, 才发现pdf和word尽管实质都是二进制流,但外部的申明等都是各自文件特有的属性,因而不能间接转换,简而言之就是是什么文件流就只能保留什么文件流。且PDF和Word是两大技术公司背书,间接转换得用业余的工具,因而此路不通 。

曲线救Coder: HTML 转换PDF 大工将成?
于是乎,退而求其次,HTML是万能的,HTML 能够转万物,HTML 转PDF, HTML 转图片,HTML 转Excel等等等,那么 ActiveReportsJS 提供了可将报表导出为HTML 文件且格局完全一致,那么办法来了,我间接应用HTML 转 Word不是更不便些?Google搜寻果然此类材料比PDF 转Word多了百倍,而且看代码也是操作非常简单:

只需3步骤:

1.将报表导出HTML
` var pageReport = new ARJS.PageReport();

    pageReport.load('./BandedReport.rdlx-json')        .then(function() { return pageReport.run() })        .then(function(pageDocument) { return HTMLExport.exportDocument(pageDocument) })

`

2.加工HTML 代码减少office 标记

3.创立 a 标签,间接下载 doc格局

`var fileDownload = document.createElement(“a”);

document.body.appendChild(fileDownload);
fileDownload.href = sourceHTML;
fileDownload.download = ‘document.doc’;
fileDownload.click();
document.body.removeChild(fileDownload);
`
看看后果:成果很Nice

转换后果测评:
款式失落,包含字体色彩,背景色,形态
图像失落
表格能够间接导入为Word表格
图标保留

4.总结
两种转化后果总结如下:

通过一番尝试也算是有一个Workaround,思考到报告类的报表个别以文本内容为主,款式也比拟奢侈,所以应用html到Word转换不失为一个疾速简洁的办法,大部分须要保留为Word 还是为了进行二次编辑。本葡萄也在致力寻找HTML 转Word 款式保留的办法,有新的停顿会给大家更新第二篇。
GoodMai。com
IT交易平台