将多个pdf合并为一个PDFMerger

时间:2016-05-04 07:16:00

标签: php mysql pdf

我试图从数据库中选择多个PDF文件并将它们合并为一个。在数据库中存储了pds的路径。我所做的是存储在行的会话ID中,然后查询数据库并为每个ID选择pdf。我遇到过这个问题:

  

它只从会话数组中生成第一个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 ..数组中的第一个。

1 个答案:

答案 0 :(得分: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');