2015-04-29 1 views
0

Я на следующийImageMagick получения неперехваченного Фатальная ошибки после выполнения 5-7 комплектов PDF в JPG

Ubuntu 12.04 LTS 
PHP 5.3.10-1ubuntu3.18 with Suhosin-Patch (cli) 
ImageMagick 6.6.9-7 
GPL Ghostscript 9.05 (2012-02-08) 

моего GS под /usr/bin

Я непрерывно преобразовывать - PDF в JPG каждого pdf на одно изображение. Он работал первый раз для 1-30 наборов PDF, но теперь я получаю сообщение об ошибке после завершения 7 наборов PDF-файлов

запуск скрипта PHP в командной строке. После преобразования 5-7 комплектов PDF в JPG отдельных изображений (около 1000 JPG) я получаю следующее сообщение об ошибке

PHP Fatal error: Uncaught exception 'ImagickException' with message 'Postscript delegate failed `../books/58/58.pdf': @ error/pdf.c/ReadPDFImage/663' in /var/www/mysite/public_html/admin/lib.php:10 
Stack trace: 
#0 /var/www/mysite/public_html/admin/lib.php(10): Imagick->__construct('../books/58/58....') 
#1 /var/www/mysite/public_html/admin/test.php(118): include('/var/www/stagin...') 
#2 {main} 
thrown in /var/www/mysite/public_html/admin/lib.php on line 10 

lib.php имеет скрипт для преобразования PDF в JPG - код, как показано ниже

<?php 
$file_name = "../books/$book_id/$book_id".'.pdf'; 
mkdir("../books/$book_id/pages"); 

// Strip document extension 
$file_name = basename($file_name, '.pdf'); 

// Convert this document 
// Each page to single image 
$img = new imagick("../books/$book_id/$book_id".'.pdf'); 

// Set image resolution 
// Determine num of pages 
$img->setResolution(300,300); 
$num_pages = $img->getNumberImages(); 

// Convert PDF pages to images 
for($i = 0;$i < $num_pages; $i++) { 
// Set iterator postion 
$img->setIteratorIndex($i); 
// Set image format 
$img->setImageFormat('jpeg'); 
// Write Images to temp 'upload' folder 
$img->writeImage("../books/$book_id/pages/$i".'.jpg'); 
} 
$img->destroy(); 

?> 

После получения ошибки прекратите преобразование, но когда я запустил скрипт, он работает еще на 5-7 наборов PDF и снова остановится. Может кто-нибудь, пожалуйста, скажите мне, что мне здесь не хватает.

Я ценю вашу помощь. Спасибо заранее.

+0

Ваш ghostscript и ImageMagick довольно устарели, и эти вещи всегда улучшаются - возможно, вы можете обновить свое программное обеспечение и посмотреть, помогает ли это ... –

+0

Попробуйте использовать Ghostscript прямо, если вы хотите, чтобы это было JPEG каждой страницы файл PDF. Таким образом, если вы получите сообщение об ошибке, вы сможете сообщить нам, что он говорит, и вы можете открыть отчет об ошибке GS. Если вы не планируете обрабатывать изображения после их рендеринга, вам не нужен ImageMagick, GS может выполнять работу самостоятельно. – KenS

ответ

0

Как предположил @KenS, это, вероятно, случай, когда вызов GhostScript напрямую был бы лучше, так как это было бы быстрее, а не сбой.

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

Если вы хотите исследовать это, strace будет инструментом для этого. Однако просто вызов GS напрямую позволит вам заняться более важными вещами.