2010-10-06 135 views
1

我有一些PDF存儲在數據類型爲Image的SQL服務器中。 現在我想用一個PHP頁面將它們與Imagic合併爲一個文檔。下面是代碼:使用imagic和PHP輸出PDF文件

 
$combined = new Imagick(); 

while($document = mssql_fetch_assoc($mssqlResult){ 
    $image  = new Imagick(); 
    $image->readImageBlob($document['Contents']) ; 
    $combined->addImage($image); 
    $image->clear(); 
    $image->destroy(); 
} 
$combined->setImageFormat("pdf"); 
$combined->writeImages('test.pdf', true); 

這工作,並在檢驗.pdf保存到服務器,但是當我嘗試輸出瀏覽器的URL(類似http://www.test.com/test.php),這是行不通的。該代碼是:

 
$combined = new Imagick(); 

while($document = mssql_fetch_assoc($mssqlResult){ 
    $image  = new Imagick(); 
    $image->readImageBlob($document['Contents']) ; 
    $combined->addImage($image); 
    $image->clear(); 
    $image->destroy(); 
} 

//$combined->getImageBlob(); 

//$combined->setImageFormat("pdf"); 

//$combined->writeImages('test.pdf', true); 

header('Content-type: application/pdf'); 

header('Content-Disposition: attachment; filename="test.pdf"'); 

echo $combined; 

回答

1
$combined = new Imagick(); 

while($document = mssql_fetch_assoc($mssqlResult){ 
    $image  = new Imagick(); 
    $image->readImageBlob($document['Contents']) ; 
    $combined->addImage($image); 
    $image->clear(); 
    $image->destroy(); 
} 

$combined->getImageBlob(); 

$combined->setImageFormat("pdf"); 

$combined->writeImages('test.pdf', true); 

header('Content-type: application/pdf'); 

header('Content-Disposition: attachment; filename="test.pdf"'); 

echo file_get_contents('test.pdf'); 
0

這工作:

 
combined = new Imagick(); 

while($document = mssql_fetch_assoc($mssqlResult){ 
    $image  = new Imagick(); 
    $image->readImageBlob($document['Contents']) ; 
    $combined->addImage($image); 
    $image->clear(); 
    $image->destroy(); 
} 

$combined->setImageFormat("pdf"); 

header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="test.pdf"'); 
echo $combined->getImagesBlob(); 

注意,關鍵詞是getImagesBlob,不getImageBlob