ImageMagick在将5-7套PDF格式化为JPG后出现致命错误

时间:2015-04-29 10:52:39

标签: php imagemagick ubuntu-12.04 ghostscript imagick

我正如以下

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并再次停止。 谁能告诉我我在这里失踪了什么。

感谢您的帮助。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

正如@KenS建议的那样,这可能是一种直接调用GhostScript会更好的情况,因为它会更快,而不是崩溃。

我怀疑你所看到的问题是某些资源被ImageMagick保持打开状态,并且在某些时候处理刚刚开始失败,因为没有更多的资源可用。

如果您想对此进行调查,strace将成为执行此操作的工具。然而,只是直接调用GS将允许你接触更重要的东西。