2012-06-22 103 views
1

我想通過PHP將下降的pdf文件轉換爲圖像。爲此,我爲PHP使用Imagemagick擴展。問題是,如果我通過file_get_contents函數下載pdf文件,我無法用這個下載內容創建Imagemagic對象。下面是代碼:使用ImageMagick將PDF轉換爲圖像

<?php 

$url = "pdf webaddress"; 
$pdfData = file_get_contents($url); 

try 
    { 

     $img = new Imagick($pdfData); 
     $img->setResolution(480,640); 
     $img->setImageFormat("jpeg"); 
     $img->writeImage("test.jpeg"); 

    } 
catch(Exception $e) 
{ 
    echo $e->getMessage(); 
} 
?> 

我收到以下錯誤:

Unable to read the file: %PDF-1.6 %גדֿ׃ 7 0 obj <> endobj 86 0 obj <>/Filter/FlateDecode/ID[]/Index[7 146]/Info 6 0 R/Length 257/Prev 592751/Root 8 0 R/Size 153/Type/XRef/W[1 3 1]>>stream h�bbd `b ׁ‘6 ’9DעƒH

現在,如果我在本地存儲的PDF文件閱讀,一切工作正常。代碼是:

$image = "output.png"; 
$img = new Imagick("path to pdf file"); 
$img->setResolution(480,640); 
$img->setImageFormat("jpeg"); 
$img->writeImage("test.jpeg"); 

任何建議,幫助表示讚賞。

+2

您需要使用PDF文件的路徑在本地讀取它。 PHP在服務器上運行,爲pdf創建一個文件夾並將其用於Imagick。 – Ryan

回答

2

ImageMagick PHP extension documentation page,則Imagick構造需要參數,這些參數可以是本地文件的URL。 :

Paths can include wildcards for file names, or can be URLs.

您應該直接將URL傳遞,沒有file_get_contents,PHP文件流是非常強大的。

你的其他解決辦法是將存儲文件在本地(見tempnam()file_put_contents),但是如果你不使用它爲別的比它轉換成圖像是相當無用:

$pdfUrl = "..."; 
$tmpFileName = tempnam(sys_get_temp_dir(), "pdf"); 
file_put_contents($tmpFileName, file_get_contents($pdfUrl)); 
// Do your ImageMagick job 
unlink($tmpFileName); 
+0

謝謝你,這個解決方案有效。你節省了我的一天。將答案標記爲已接受。 – user1107888

相關問題