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