PHP Imagick - Postscript 委托失败:没有这样的文件或目录
PHP Imagick - Postscript delegate failed: No such file or directory
我对 PHP 的 imagick 有疑问。
我的环境:
- Ubuntu 14.04
- PHP 5.5.9 (1ubuntu4.26)
- 通过 pecl 安装 imagick
- 阿帕奇 2.4.7
- ImageMagick 6.7.7-10 2018-09-28 Q16
- Ghostscript 9.25
显示 phpinfo()
告诉我一切正常 - imagemagick 被识别并且 pdf 以支持的格式列出。
在 PHP 中,我做了以下内容:
//$pdfAbsolutePath is /path/to/MF-NEU-22306.pdf[0]
$im = new \Imagick($pdfAbsolutePath);
此时我得到以下错误:
Postscript delegate failed `/path/to/MF-NEU-22306.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/677
[app/controller/web/fax.php:1028] Imagick->readimage('/path/to/MF-NEU-22306.pdf[0]')
文件存在于指定路径。
我做错了什么?从命令行手动调用 convert
运行完美,与从命令行调用 运行 gs
相同。在 phpinfo()
的输出中,为 imagick 编译的版本和 ImageMagick 库提供的版本相同。我还尝试完全卸载 ImageMagick 和 ghostscript 并重新安装它 - 从 apt-get 和从源代码编译,但没有任何效果。
我该如何解决这个问题?感谢您的帮助。
编辑:
在 delegates.xml
和 /etc/ImageMagick/
中有两行 pdf 代表:
<delegate decode="pdf" encode="eps" mode="bi" command=""gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=nodevice" "-sOutputFile=%o" "-f%i""/>
<delegate decode="pdf" encode="ps" mode="bi" command=""gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=nodevice" "-sOutputFile=%o" "-f%i""/>
编辑 2:
我现在尝试 "workaround" - 不是在方括号中指定页码,而是在遍历页面时使用 $im->setIteratorIndex($i)
。到目前为止它有效,但现在我有一个例外:
WriteBlob Failed `/path/to/1-607405443.png' @ error/png.c/MagickPNGErrorHandler/1726
[app/controller/web/fax.php:1044] Imagick->writeimage('/path/to/1-607405443.png')
我现在做错了什么?
我的错误是服务器上缺少 tesseract 安装...也许这会对某些人有所帮助。
我对 PHP 的 imagick 有疑问。
我的环境:
- Ubuntu 14.04
- PHP 5.5.9 (1ubuntu4.26)
- 通过 pecl 安装 imagick
- 阿帕奇 2.4.7
- ImageMagick 6.7.7-10 2018-09-28 Q16
- Ghostscript 9.25
显示 phpinfo()
告诉我一切正常 - imagemagick 被识别并且 pdf 以支持的格式列出。
在 PHP 中,我做了以下内容:
//$pdfAbsolutePath is /path/to/MF-NEU-22306.pdf[0]
$im = new \Imagick($pdfAbsolutePath);
此时我得到以下错误:
Postscript delegate failed `/path/to/MF-NEU-22306.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/677
[app/controller/web/fax.php:1028] Imagick->readimage('/path/to/MF-NEU-22306.pdf[0]')
文件存在于指定路径。
我做错了什么?从命令行手动调用 convert
运行完美,与从命令行调用 运行 gs
相同。在 phpinfo()
的输出中,为 imagick 编译的版本和 ImageMagick 库提供的版本相同。我还尝试完全卸载 ImageMagick 和 ghostscript 并重新安装它 - 从 apt-get 和从源代码编译,但没有任何效果。
我该如何解决这个问题?感谢您的帮助。
编辑:
在 delegates.xml
和 /etc/ImageMagick/
中有两行 pdf 代表:
<delegate decode="pdf" encode="eps" mode="bi" command=""gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=nodevice" "-sOutputFile=%o" "-f%i""/>
<delegate decode="pdf" encode="ps" mode="bi" command=""gs" -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 "-sDEVICE=nodevice" "-sOutputFile=%o" "-f%i""/>
编辑 2:
我现在尝试 "workaround" - 不是在方括号中指定页码,而是在遍历页面时使用 $im->setIteratorIndex($i)
。到目前为止它有效,但现在我有一个例外:
WriteBlob Failed `/path/to/1-607405443.png' @ error/png.c/MagickPNGErrorHandler/1726
[app/controller/web/fax.php:1044] Imagick->writeimage('/path/to/1-607405443.png')
我现在做错了什么?
我的错误是服务器上缺少 tesseract 安装...也许这会对某些人有所帮助。