项目上遇到需求:将 pdf
文件转换成 html
格式文件,供另外的服务做 html
解析从而获取文件内容信息,这里我采用的是 pdf2htmlEX
作为转换工具,效果不错。
推荐使用最便捷的方法,直接运行 docker
容器内的程序转换,避免部署工具所需要的环境等,节约很多时间。
先安装 docker
并配置 docker
服务自启动,参考文章:CentOS7安装Docker配置服务端和容器自启动
- 直接运行docker进行转换
docker run -ti --rm -v `pwd`:/pdf bwits/pdf2htmlex pdf2htmlEX --zoom 1.3 test.pdf
- 或者为docker命令添加别名
alias pdf2htmlEX='docker run -ti --rm -v `pwd`:/pdf bwits/pdf2htmlex pdf2htmlEX'
测试一下
pdf2htmlEX --zoom 1 test.pdf
效果跟前面的一样,转换效果不错,感谢插件作者。
- 指定输出位置转换:
pdf2htmlEX --zoom 1 --dest-dir ./out test.pdf
参数:
--zoom 缩放比例
--dest-dir 输出目录
test.pdf 待转换的文件
更多用法参考官方文档。
扩展一下
结合我之前的文章:CentOS下使用LibreOffice实现文档格式的转换,不难想到,对于 doc/docx
文档,我们可以先将其转换成 pdf
然后再继续转换成 html
。
doc/docx转pdf
soffice --headless --convert-to pdf ./1003437-1560257355.docx --outdir ./
pdf转html
docker run -it --rm -v `pwd`:/pdf --privileged=true bwits/pdf2htmlex pdf2htmlEX --zoom 1 1003437-1560257355.pdf
html解析为json
python /tools/parser/htmlParser.py 1003437-1560257355.html
这样我们就使用同一套解析程序兼容解析了 doc/docx/pdf
,在程序中使用运行docker命令时将-it去掉,将要转换的目录正确挂在到docker中并保证运行docker命令的用户对目录和文件有读写权限。
转换后还原度有90%么?
可能有少量样式错位啥的,对于程序来说没啥影响,程序只关心提取内容,不太关心样式。