ImageMagick / Imagick конвертирует PDF в JPG с помощью собственного PHP API

Я пытаюсь преобразовать файлы PDF в PNG. Он отлично работает из командной строки (у меня установлен GhostScript 8.64). Но с PHP у меня проблема:

код:

$im = new Imagick($pdf_file); // this is where it throws the exception below

выход:

Fatal error: Uncaught exception ‘ImagickException’ with message ‘Postscript delegate failed `23_1235606503.pdf’: No such file or directory @ pdf.c/ReadPDFImage/612′ in get_thumbnail.php:93
Stack trace:
\#0 get_thumbnail.php(93): Imagick->__construct(’…’)

и т. д. и т. д.

Я не уверен, что я здесь делаю не так, но подозреваю, что это как-то связано с конфигурацией моего сервера. Я использую: Apache 2.2.11 PHP 5.2.8 ImageMagick 6.4.8-9 GhostScript 8.64

Ответов (3)

Решение

Наконец разобрался в этом. Исполняемый файл GhostScript ( gs ) не находился в пути к среде Apache. Это было в /usr/local/bin . Хотя я пробовал несколько способов добавить /usr/local/bin к пути, у меня ничего не получилось. Я в конечном итоге положить симлинк для gs в /usr/bin directory . Теперь все работает отлично.

У меня нет «репутации» в Stackoverflow, чтобы добавить комментарий выше, но есть дополнительный шаг, который мне пришлось выполнить, чтобы заставить это работать на моем Mac с последним обновлением Sierra.

При вводе команды:

sudo ln -s /usr/local/bin/gs /usr/bin/gs

На Mac вы можете получить ошибку «Операция не разрешена».

По-видимому, Apple внесла изменения в каталог «bin», который нельзя редактировать, если вы не отключите SIP (Защита целостности системы).

Вот как это сделать:

  1. Перезагрузите Mac в режиме записи, перезагрузив компьютер и удерживая «Command + R», пока на экране не появится логотип Apple.
  2. Щелкните Утилиты> Терминал.
  3. В окне Терминала введите crutil disableи нажмите «Enter».
  4. Перезагрузите ваш Mac.

Я только что проделал эти шаги, и теперь мой Ghostscript отлично работает, и я успешно преобразовал PDF в JPG.

Я успешно это делаю. Вот код, который я использую для преобразования. Мы используем это решение в коммерческих целях. Я знаю, что этот вопрос существует уже некоторое время, но он все еще может вам помочь.

//Convert PDF contract to image using ImageMagik and Ghostscript
// NOTE: This will need to be change if running on Linux
$source = $appDir."\\".$clientID."\\".$clientID.".pdf";
$dest = $appDir."\\".$clientID."\\".$clientID.".jpg";
//print("c:\\IM\\convert.exe $source $dest ");
exec("c:\\IM\\convert.exe $source $dest ");