Проблема с Imagick, а также с phmagick: делегат Postscript не удалось / нет такого файла или каталога
Я использую imagick 3.0.1, а также phmagick (http://www.francodacosta.com/phMagick/download). Независимо от того, что, оба дают мне такую же ошибку, когда я пытаюсь преобразовать PDF в JPEG.
например: делегат Postscript не удалось "/tmp/magick-bfxIrUJ5": нет такого файла или каталога @ error / pdf.c / ReadPDFImage / 669
Я использую Ghostcript-9.05 (работает на /usr/local/bin/gs). Также ImageMagick-6.7.6-8 (работает на / usr / local/bin / convert).
Я уже проверил разрешение папки (755). ImageMagick прекрасно работает от терминала.
например, мой PHP с помощью Imagick:
//use imagick
$im = new imagick( '/pdf/553571072.pdf' );
// convert to jpg
$im->setImageColorspace(255);
$im->setCompression(Imagick::COMPRESSION_JPEG);
$im->setImageFormat('jpeg');
//write image on server
$im->writeImage('/jpg/553571072.jpg');
кстати, Imagick он появляется в моем phpinfo (). Я работаю над linux / apache / amd64.
любой совет будет высоко оценен!
3 ответов
хорошо, это, наконец, работает, благодаря помощи Нуно Франко Да Коста (http://www.francodacosta.com/).
проблема заключалась в том, что мой путь GhostScript был в порядке для оболочки, но он был неправильным для системы и PHP. Чтобы исправить это, вы должны связать ваш до /usr/bin/gs
.
сделайте следующее из оболочки:
[root@din ~]# convert -list configure | grep -i delegates
DELEGATES bzlib fontconfig freetype jpeg jng png tiff x11 xml zlib
проверьте, если gs
файл уже существует в /usr/bin
. Если это произойдет, мы создайте резервную копию.
если нет /usr/bin/gs
вы можете пропустить этот шаг
[root@din ~]# ls -l /usr/bin/gs
-rwxr-xr-x 1 root root 6024 Sep 30 2010 /usr/bin/gs
[root@din ~]# mv /usr/bin/gs /usr/bin/gs.orig
Теперь создайте ссылку из /usr/local/bin/gs
to /usr/bin/gs
[root@din ~]# sudo ln -s /usr/local/bin/gs /usr/bin
это должно решить проблему. Спасибо большое ребята.
мой вклад в "чистое решение PHP", предложенное @HelloWorld (спасибо!) в комментариях принятого ответа небольшая поправка: надо добавить имя переменной перед расширением пути по умолчанию, soputenv( getenv('PATH') . ':/usr/local/bin' );
не работаетputenv( 'PATH=' . getenv('PATH') . ':/usr/local/bin' );
будет
*у меня меньше 50 очков репутации, я не мог добавить свой комментарий в нужном месте, поэтому мне пришлось создать новый ответ: -)
Я получал эти проблемы, используя ImageMagick ImageMagick 6.7.7-10
С GhostScript 9.10
.
оказывается, PDF-файлы были повреждены, и хотя некоторые новые версии GS могли их прочитать, эта более старая версия не могла, учитывая следующую ошибку.
**** Warning: An error occurred while reading an XREF table.
**** The file has been damaged. This may have been caused
**** by a problem while converting or transfering the file.
**** Ghostscript will attempt to recover the data.
под Linux, вы можете передать PDF через pdftk первый:
pdftk 'bad.pdf' output 'fixed.pdf'
после этого все работало для меня на Ubuntu.