Я использую 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.
Любые советы будут высоко оценены!
Хорошо, это, наконец, работает, благодаря помощи Нуну Франко да Коста ( http://www.francodacosta.com/ ).
Проблема заключалась в том, что мой путь GhostScript был ОК для Shell, но это было неправильно для системы и PHP. Чтобы исправить это, вы должны связать файл /usr/local/bin/gs
с /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
в /usr/bin/gs
[root@din ~]# sudo ln -s /usr/local/bin/gs /usr/bin
Это должно решить проблему. Большое спасибо, ребята.
Мой вклад в «чистое PHP-решение», предложенное @HelloWorld (спасибо!) В комментариях к принятому ответу, небольшая поправка: нужно добавить имя переменной перед расширением PATH по умолчанию, поэтому
putenv( 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.