如何使用 Imagick 以外的 php 库从 PDF 获取 JPEG 图像?
How to get JPEG image from PDF using other php library than Imagick?
我使用 Imagick 从 PDF 文档的页面生成 JPEG 缩略图。我用于测试的本地服务器永远无法执行此操作,我总是遇到 Ghostscript 错误。我直接在我的网站主机上开发,但现在它停止工作了,似乎是从 6.9.0 版本的 ImageMagick 开始。因为它是一个共享主机,我不能降级,管理员也不想这样做(对同一服务器上的每个人来说都是降级)。这是一个简单的廉价托管计划,我认为他们不想帮助我...
此外,在寻找答案时,我看到很多人抱怨这个版本,所以它看起来像是一个真正的错误。
所以我开始在 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你可以使用convert
sudo apt-get install convert
接着
convert infile.pdf outfile.png
在导出到 jpg/png 之前,您可以做很多事情
convert man page
你可以使用 exec
exec function from php to run convert and then get your files by file_get_contents
file_get_contents and readdir
readdir
我使用 Imagick 从 PDF 文档的页面生成 JPEG 缩略图。我用于测试的本地服务器永远无法执行此操作,我总是遇到 Ghostscript 错误。我直接在我的网站主机上开发,但现在它停止工作了,似乎是从 6.9.0 版本的 ImageMagick 开始。因为它是一个共享主机,我不能降级,管理员也不想这样做(对同一服务器上的每个人来说都是降级)。这是一个简单的廉价托管计划,我认为他们不想帮助我...
此外,在寻找答案时,我看到很多人抱怨这个版本,所以它看起来像是一个真正的错误。
所以我开始在 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你可以使用convert
sudo apt-get install convert
接着
convert infile.pdf outfile.png
在导出到 jpg/png 之前,您可以做很多事情
convert man page
你可以使用 exec
exec function from php to run convert and then get your files by file_get_contents
file_get_contents and readdir
readdir