如何使用Imagick以外的其他php库从PDF中获取JPEG图像


How to get JPEG image from PDF using other php library than Imagick?

我使用Imagick从PDF文档的页面中生成JPEG格式的拇指。我的本地测试服务器永远无法做到这一点,我总是遇到Ghostscript错误。我是直接在我的网站主机上开发的,但现在它停止工作了,似乎是从ImageMagick的6.9.0版本开始的。由于它是一个共享主机,我不能降级,管理员也不希望这样做(这对同一服务器中的每个人来说都是一个降级)。这是一个简单廉价的托管计划,我不认为他们想帮助我…

此外,当我寻找答案时,我看到很多人抱怨这个版本,所以它看起来像是一个真正的bug。

因此,我开始在PHP库或某些API中寻找一种替代方法,我可以安装这些方法来执行任务。有什么建议吗?

这是生成错误的行:

$Img->readImage($urlArq."[".$pag."]");

错误:

Fatal error: Uncaught exception 'ImagickException' with message 'PDFDelegateFailed `[ghostscript library] -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=pngalpha" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 "-r150x150" -dFirstPage=1 -dLastPage=1 "-sOutputFile=/tmp/magick-316787_tM5qhaBA3E%d" "-f/tmp/magick-316787MBoQDwPMLvz" "-f/tmp/magick-31678SNvHB_Zdq8Xt"': -dname= must be followed by a valid token @ error/pdf.c/InvokePDFDelegate/263' in /home/sintrano/public_html/conteudo_apitaco_jpeg.php:23 Stack trace: #0 /home/sintrano/public_html/conteudo_apitaco_jpeg.php(23): Imagick->readimage('apitaco/edicao-...') #1 {main} thrown in /home/sintrano/public_html/conteudo_apitaco_jpeg.php on line 23

版本信息:

versionNumber: 1680
versionString: ImageMagick 6.9.0-0 Q16 x86_64 2016-05-05 http://www.imagemagick.org

编辑:我在代码中发现了这个错误:$pag不能为零,第一页是1。但这之前并没有产生错误,不知道为什么,我也不确定这是否是问题所在。

如果您有专用服务器或vps,则可以使用convertsudo apt-get install convert然后convert infile.pdf outfile.png在导出到jpg/png之前,可以做很多事情转换手册页

您可以使用php中的exec exec函数来运行convert,然后通过file_get_contents file_get_contents和readdir readdir 获取文件