2016-05-04 155 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');