2016-05-04 199 views
0

我試圖從數據庫中選擇多個PDF文件並將它們合併爲一個。在數據庫中存儲pds的路徑。我所做的是存儲行的會話ID,然後查詢數據庫併爲每個ID選擇pdf。我遇到過這樣的問題:將多個pdf合併爲一個PDFMerger

它只從會話數組中生成一個PDF。

這是我到目前爲止有:

require_once("database.php"); 
include 'PDFMerger.php'; 

$files = $_SESSION['itemid']; 
print_r($files); 
if(is_array($files)) { 

$fileFolder='uploads/'; 
$pdf = new PDFMerger; 

foreach($files as $file) { 

    $sql = "SELECT files FROM document_upload WHERE upload_id = :id"; 
    $result = $pdo->prepare($sql); 
    $result->bindParam(":id", $file); 
    $result->execute();     

    $resArray = $result->fetchAll(); 

    foreach ($resArray as $res) 
    { 
     $items = explode(',', $res["files"]); 

     foreach ($items as $item) { 

      $pdf->addPDF($fileFolder.$item, 'all') 

      ->merge('browser', 'TEST2.pdf'); 
     } 
    } 

    }  
} 

print_r($files);表明,所有文件都在陣列。

print_r($resArray);只顯示1個pdf ..第一個來自數組。

回答

0

是的,你只會得到一個pdf,因爲你必須把合併函數放在foreach之外,因爲這樣你只合並一個結果。如果你在foreach之後合併它們,你將擁有它們全部。像這樣嘗試

foreach($files as $file) { 

    $sql = "SELECT files FROM document_upload WHERE upload_id = :id"; 
    $result = $pdo->prepare($sql); 
    $result->bindParam(":id", $file); 
    $result->execute();     

    $resArray = $result->fetchAll(); 

    foreach ($resArray as $res) 
    { 
     $items = explode(',', $res["files"]); 

     foreach ($items as $item) { 

      $pdf->addPDF($fileFolder.$item, 'all'); 


     } 
    } 

}  
$pdf->merge('browser', 'TEST2.pdf');