PDF 转 WORD 为什么是历史难题
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,版权意识还是须要有的。
点击登录,用谷歌账号登陆胜利后,即可在我的项目中援用 cloudmersive-convert-api-client 安装包。
该 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 多了百倍,而且看代码也是操作非常简单:
https://jscodemine.grapecity….
只需 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 款式保留的办法,有新的停顿会给大家更新第二篇。
转载请注明出处:葡萄城官网,葡萄城为开发者提供业余的开发工具、解决方案和服务,赋能开发者。
- Wiki 百科:PDF 介绍
- Wiki 百科:Word 介绍
- pdf.js analog for Word Documents
- 纯前端报表控件 ActiveReportsJS