ghostscript 9.26更新中断imagick readImage用于多页PDF

时间:2018-11-30 15:49:35

标签: php ghostscript imagick

自从昨天早上ghostscript更新9.25-> 9.26(在Debian上)以来,我们得到以下错误:

ErrorMessage: FailedToExecuteCommand 
`'gs' -sstdout=%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT
 -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 
'-sDEVICE=pngalpha' -dTextAlphaBits=4 -dGraphicsAlphaBits=4 '-r300x300' 
-dFirstPage=1 -dLastPage=1 '-sOutputFile=/tmp/magick-39903EapVvuyNQxL4%d' 
'-f/tmp/magick-39903VD0GMIpLPaIN' 
'-f/tmp/magick-399031owlSOb4aOEw'' (-1) 
@ error/delegate.c/ExternalDelegateCommand/462

当尝试阅读多页PDF的第一页时:

$this->resource = new \Imagick();
$this->resource->setResolution(300, 300);
$this->resource->readImage($path . '[0]');

知道如何解决这个问题吗?

请参阅:https://www.ghostscript.com/doc/9.26/History9.htm#Version9.26 参见:https://secure.php.net/manual/en/imagick.readimage.php

3 个答案:

答案 0 :(得分:2)

几乎可以肯定这个错误报告:

https://bugs.ghostscript.com/show_bug.cgi?id=699815

您的解决方案是;不要使用pngalpha设备,不要使用FirstPage / LastPage,升级到带有该修复程序的版本或降级到较早的版本。尽管该错误可能存在于许多较早的版本中,但我不知道为什么以前从未出现过。

答案 1 :(得分:2)

我没有“解决方案”,但自升级到gs 9.26以来可以确认该问题。我发现,正如KenS指出的那样,在gs中删除参数-dFirstPage = 1 -dLastPage = 1时,一切正常。

还可以执行的操作是删除gs参数-dMaxBitmap = 500000000。在PHP中的含义,删除[PAGE],即:

$im = new \Imagick();
$im->readImage('/tmp/test.pdf');

我的工作解决方案是降级到ghostscript 9.22。我正在使用Ubuntu仿生LTS。因此,我必须运行:

sudo apt-get remove ghostscript
sudo apt-get autoremove
sudo apt-get install ghostscript=9.22~dfsg+1-0ubuntu1 libgs9=9.22~dfsg+1-0ubuntu1 libgs9-common=9.22~dfsg+1-0ubuntu1
sudo apt-mark auto libgs9
sudo apt-mark auto libgs9-common

答案 2 :(得分:0)

(Ghostscript 9.26),在增加setResolution(600,600)后又出现了同样的问题。