PDF转图片各种技术方案对接,寻找最优解
在和文档的对接中,少不了文档转换,比如Word转图片、Word转PDF、PDF转图片,方便人员在线浏览等,而安卓手机更不能方便的在线预览PDF的远程链接。为此整理几个常见的PDF转图片方案供大家参考。
一、阿里云的智能媒体管理 IMM
智能媒体管理 IMM(Intelligent Media Management)是一款场景化封装数据智能分析管理工具。为云上的文档、图片数据,提供一站式数据处理、分析、检索等管控体验。根据图片分析、数据存储等不同应用场景,封装整合完整的处理能力,让数据快速流转。
整体来看IMM集成了各种方案,但转换效率很慢,受限于阿里云整体的调度,有时候非常慢,而且转换价格不菲,每次接近0.08元,企业有大量的转换,这个成本不可小觑。
二、Imagick
安装Imagick,各开源方案大多围绕Imagick有很多成熟的方案,比如PHP的 https://github.com/spatie/pdf-to-image , Golang https://github.com/gographics/imagick 。安装Imagick后,系统会有个 convert
命令,用此命令也可以将PDF转换为图片。
convert -quality 100 input.pdf out.jpg
可以将多页的PDF转换为单个jpg格式的图片,但是转换处理的文件比较大,而且不清晰。其中PHP的转换效率非常低,1个20页PDF转换为图片,需要40秒左右。
三、Ghostscript
Ghostscript使用说明:https://www.ghostscript.com/doc/current/Use.htm
转换为JPG格式
gs -dNOPAUSE -sDEVICE=jpeg -r200 -dJPEGQ=60 -sOutputFile=out/out-%02d.jpg "input.pdf" -dBATCH
说明:-r200 数值越大,质量越高;-dJPEGQ=60 数值越大,质量越高,最高100。
整体转换效率还不错,但系统安装gs也比较麻烦,也增加了系统运维的麻烦。
四、EasyYun-PDF云转换
http://io.easyyun.com/api/pdf.split-to-image.html
EasyYun,提供企业级PDF转换API接口,使用http接口协议,Java、PHP、Golang、Python、Ruby、Node、C#等语言都可以完成PDF转图片等功能。如果你需要开发1个程序或前端页面,或者企业内部需要集成这样的功能。使用EasyYun的方案更合适,而且支持图片转换个长图和单个图片。
最终对比
对比 | IMM | Imagick | Ghostscript | EasyYun-PDF云转换 |
---|---|---|---|---|
速度 | 慢 | 慢 | 一般 | 快 |
成本 | 高 | 低,需增加服务器 | 低,需增加服务器 | 无 |
转换类别 | 全 | 支持不全 | 支持不全 | 全,支持长图、单图 |
环境 | 需要一定后端和运维能力 | 安装插件 | 安装插件 | 纯API |
难易程度 | 难 | 中 | 中 | 容易,新手都会 |
强烈推荐EasyYun