Проблема с преобразованием страниц PDF в изображения с помощью ImageMagick's convert (и PHP) - PullRequest
0 голосов
/ 23 марта 2010

Я пытаюсь создать небольшой веб-сервис для преобразования файлов PDF в серию изображений.

Когда я запускаю convert /full/path/to/source.pdf full/path/to/target.jpg при подключении к серверу [Mediatemple (gs)] через ssh, все работает правильно.

При выполнении той же команды через функцию PHP exec() преобразовываются только первые несколько страниц файла PDF. Иногда оставшиеся страницы представляют собой jpg-файлы нулевой длины, иногда они вообще не отображаются.

Кроме того, нижняя область первых страниц иногда черная, как будто конвертирование остановлено на полпути на странице.

Что может быть причиной этой проблемы?

ОБНОВЛЕНИЕ:

Я использую set_time_limit (0).

Если я подключен через SSH и запускаю команду convert -limit area 90 ..., она успешно завершается в течение ок. 30 секунд. Делая то же самое через PHP-s exec (), он работает в течение ~ 90 секунд и выдает в качестве выходных данных поврежденные изображения (как описано выше).

Существует ли простой способ заставить задачу конвертации работать с теми же привилегиями и ресурсами, что и в SSH?

Кроме того, так как, должно быть, очень сложно работать с серверной проблемой, я мало контролирую - есть ли хороший веб-сервис (API), который бы конвертировал PDF в изображения?

Ответы [ 2 ]

0 голосов
/ 26 марта 2010

Отказался от попыток заставить его работать на общем сервере и переместил приложение на другой сервер - теперь все работает отлично.

Я полагаю, что ограничения ресурса сервера (в основном некоторый предел памяти) мешалиImageMagick, и сделал это очень противоречивым образом.Ограничение использования памяти ImageMagick по-прежнему приводило к ошибкам и не позволило успешно конвертировать файлы.

0 голосов
/ 23 марта 2010

Повторное обновление. Можете ли вы попытаться преобразовать небольшой крошечный PDF-файл, чтобы выяснить, не является ли это проблемой с памятью?

Кроме того, ImageMagick имеет параметр командной строки debug:

convert -debug "All" /full/path/to/source.pdf full/path/to/target.jpg

Я думаю, что это отладка на стандартный вывод, вам нужно было бы поймать то, что он регистрирует и вывести его. Руководство здесь

И еще одна вещь, я думаю, что для преобразования PDF-файлов ImageMagick необходимо вызвать ghostscript (я думаю, что двоичный файл gs). Можете ли вы попробовать и убедиться, что вызывается с правами пользователя PHP работает как? ImageMagick должен вернуть ошибку, если это не так, но вы никогда не узнаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...