26
votes

I have several PDF templates that I would like to load and modify and output using tcpdf.

Is it possible to load an existing PDF and use it as a starting point in tcpdf?

3

3 Answers

30
votes

You want to use FPDI.

There's some example code here.

3
votes

I have tried the free version of FPDI but does not support PDF version 1.5 or higher.

If someone else is looking for a free solution I have used TCPDI. You can find it on github https://github.com/pauln/tcpdi If you are using composer, you can find some fork for composer too. Just search tcpdi on github.

Once you add it to your project, the code is quite simple. It is an extension of TCPDF so all your previous code keep working

This is a snippet from my code. I used it to save a copy of the privacy policy (a static pdf) with the user name and agreement date on each page footer.

// Create new PDF document
$pdf = new TCPDI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
...
// Add the pages from the source file.
$pagecount = $pdf->setSourceFile($policyPdfPath);
for ($i = 1; $i <= $pagecount; $i++) {
    $tplidx = $pdf->importPage($i);
    $pdf->AddPage();
    $pdf->useTemplate($tplidx);
    // Add agreement text in document footer
    $pdf->SetXY(15,282);
    $pdf->Cell(180, 5, "Documento approvato da {$fullName} il {$date}", 0, 0, 'C');
}
// Send PDF on output
$pdf->Output(FOLDER_PATH . DIRECTORY_SEPARATOR . "{$userId}.pdf", 'F');
0
votes

For anyone else finding this, it does appear a PARSER and import class were built for TCPDF (https://tcpdf.org/docs/srcdoc/TCPDF/source-class-TCPDF_IMPORT/#50-100) but as of 2018 was still under development.

Its also worth noting that the solutions above do not allow the contents of the PDF pages to be edited. In other words you import the page as a whole, you cannot edit text content or images.