Skip to content Skip to sidebar Skip to footer

Php Tcpdf Create Multiple Pdfs With One Command

I want to export data with pdf.When i select one record it works fine...How to create multiple pdfs with one click? here is what i tried require_once('eng.php'); require_once('tcp

Solution 1:

Following code is working for me :

Use variable of variable and create new pdf object in loop, use 'F' instead of 'D' to save to server.

require_once('eng.php');
require_once('tcpdf.php');
$pageLayout = array(750, 800); 

$content=Array(
 '<html><body>Document A</body></html>',
 '<html><body>Document B</body></html>',
 '<html><body>Document C</body></html>'
);

foreach($contentas$i=>$html){
$pdfname = $pdf . $i;
$$pdfname =new TCPDF('P', 'pt', $pageLayout, true, 'UTF-8', false);
$$pdfname->SetCreator(PDF_CREATOR);
$$pdfname->AddPage();
$$pdfname->writeHTML($html, true, false, true, false, '');
$$pdfname->lastPage();
$$pdfname->Output('filename_' . $i . '.pdf', 'D');
}

Solution 2:

Try this:

require_once('eng.php');
require_once('tcpdf.php');
$pageLayout = array(750, 800); 

$content=Array(
 '<html><body>Document A</body></html>',
 '<html><body>Document B</body></html>',
 '<html><body>Document C</body></html>'
);

foreach($contentas$i=>$html){
    $pdf =new TCPDF('P', 'pt', $pageLayout, true, 'UTF-8', false);
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->AddPage();
    $pdf->writeHTML($html, true, false, true, false, '');
    $pdf->lastPage();
    $pdf->Output('filename_' . $i . '.pdf', 'D');
}

Solution 3:

I have refined the answer to match my comment

require_once('eng.php');
require_once('tcpdf.php');
$pageLayout = array(750, 800); 

$content=Array(
 '<html><body>Document A</body></html>',
 '<html><body>Document B</body></html>',
 '<html><body>Document C</body></html>'
);

$zip = new ZipArchive();
$filename = "/tmp/final.zip";
$zip->open($filename, ZipArchive::CREATE);

foreach($contentas$i=>$html){
    $pdf =new TCPDF('P', 'pt', $pageLayout, true, 'UTF-8', false);
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->AddPage();
    $pdf->writeHTML($html, true, false, true, false, '');
    $pdf->lastPage();
    $pdf->Output('/tmp/filename_' . $i . '.pdf', 'F');
    $zip->addFile('/tmp/filename_' . $i . '.pdf','filename_' . $i . '.pdf');
}

$zip->close();

header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="final.zip"');
readfile($filename);

The answer asumes a posix environment the /tmp directory this is only as an example you should use sys_get_temp_dir() to get the temp directory, you should also delete the files after they have been download.

Solution 4:

I was creating a pdf document to save in the disk and it also worked perfectly within the loop. Here I have copied only that function has the loop

privatefunctiondrawBody()
{
   
        foreach($this->ordersList as$store => $storeord){
         // to stop the tcpd overwriting the headers and calculating wrong page numbers used $nextstore$filename = 'Click and Collect List to '.$this->storeID.'-'.$this->storename;
                    // Master page headers$this->pdf->SetFont('Arial','B');
                    $this->pdf->SetFontSize(20);
                    $this->pdf->SetY(50);
                    
                    $this->pdf->Cell(0,7,$filename,0,1,'L');

                    $this->pdf->SetFontSize(8);
                    $this->pdf->Ln();
                    $this->pdf->Ln();
                    $this->pdf->SetFillColor(255,255,255);
                    $this->pdf->Cell(15,10,'ID',1,0,'C',1,'',1);
                    $this->pdf->Cell(20,10,'Date ordered',1,0,'C',1,'',1);
                    $this->pdf->Cell(5,10,'Qty',1,0,'C',1,'',1);
                    $this->pdf->Cell(15,10,'Customer ID',1,0,'C',1,'',1);
                    $this->pdf->Cell(30,10,'Name',1,0,'C',1,'',1);
                    $this->pdf->Cell(25,10,'Mobile',1,0,'C',1,'',1);
                    $this->pdf->Cell(70,10,'Address',1,0,'C',1,'',1);
                
                    $this->pdf->Ln();
                   
                
                // Master page list of ordersforeach($storeordas$ord => $det){                       
                    $this->pdf->SetFont('Arial');
                    $this->pdf->SetFillColor(255,255,255);
                    $this->pdf->SetFontSize(8);
                    $this->pdf->Cell(15,10,''. $ord,1,0,'L',1);
                    $this->pdf->Cell(20,10,''. $det[orderdate],1,0,'L',1);
                    $this->pdf->Cell(05,10,''. $det[qty],1,0,'L',1);
                    $this->pdf->Cell(15,10,''. $det[custID],1,0,'L',1);
                    $this->pdf->Cell(30,10,''. $det[custName],1,0,'L',1);                        
                    $this->pdf->Cell(25,10,''. $det[mobile],1,0,'L',1);
                    $this->pdf->MultiCell(70,10,''. $det[address],1,'L',false);                        
                   
                }
           
                // Draw Collection page for each store$this->pdf->AddPage();                    
             $this->drawCollectionPage();
             
             $this->pdf->Output('Click and Collect List to - '.$this->storeID.'-'.$this->storename.'.pdf','F');
             
        }

}

Post a Comment for "Php Tcpdf Create Multiple Pdfs With One Command"