0
我有一個小腳本多個JPG圖片從上傳的多頁PDF文件($ uploadfile)與Imagick創建JPG圖片:解決:轉換一個多頁的PDF與Imagick和PHP
$imagick = new imagick();
$imagick->setResolution(600, 600);
$imagick->readImage($uploadfile);
$imagick->setImageFormat('jpg');
$pages = (int)$imagick->getNumberImages();
foreach($imagick as $i=>$imagick) {
$imagick->writeImage($uploadfile. " page ". ($i+1) ." of ". $pages.".jpg");
}
$imagick->clear();
unlink ($uploadfile);
這對於一個1或2分頁PDF文件工作正常,但給出了一個錯誤與3個或更多頁:
[lsapi:error] Backend fatal error: PHP Fatal error: Uncaught exception 'ImagickException' with message 'Failed to read the file' in /index.php:152\nStack trace:\n#0 /index.php(152): Imagick->readimage('...')\n#1 {main}\n thrown in /index.php on line 152\n
152在錯誤日誌中提到的線路是:
$imagick->readImage($uploadfile);
預先感謝您!
已解決。這是一個記憶問題。我將代碼更改爲:
$im = new imagick($uploadfile);
$pages = $im->getNumberImages();
if ($pages < 3) { $resolution = 600; } else { $resolution = floor(sqrt(1000000/$pages)); }
$imagick = new imagick();
$imagick->setResolution($resolution, $resolution);
$imagick->readImage($uploadfile);
$imagick->setImageFormat('jpg');
foreach($imagick as $i=>$imagick) { $imagick->writeImage($uploadfile. " page ". ($i+1) ." of ". $pages.".jpg"); }
$imagick->clear();
現在它工作的很棒!
我只是想你的代碼有5頁PDF和它的工作。你有沒有用不同來源的更長的PDF來試用它?你確定這個文件實際上是你認爲的嗎? –
這將是一個PHP文件上傳權限問題....您需要檢查apache是否使用PHP可以讀取的權限創建文件。 – Danack