У меня проблема с imagick for PHP.
Моя среда:
- Ubuntu 14.04
- PHP 5.5.9 (1ubuntu4.26)
- с установленным imagick через pecl
- Apache 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:
Я сейчас попробовал «обходной путь» - вместо указания номера страницы в квадратных скобках, я использую $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')
Что я делаю сейчас неправильно?