2015-04-29 20 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打電話會讓你接受更重要的東西。

相關問題