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)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 (Защита целостности системы).
Вот как это сделать:
- Перезагрузите Mac в режиме записи, перезагрузив компьютер и удерживая «Command + R», пока на экране не появится логотип Apple.
- Щелкните Утилиты> Терминал.
- В окне Терминала введите
crutil disable
и нажмите «Enter». - Перезагрузите ваш 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 ");