2016-05-04 4 views
0

Я пытаюсь выбрать несколько файлов PDF из базы данных и объединить их в один. В базе данных хранится путь к pds. То, что я делаю, это хранить в идентификаторах сеанса строк, а затем делать запрос к базе данных и выбирать 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'); 
Смежные вопросы