Question

Are there PHP libraries which can be used to fill PDF forms and then save (flatten) them to PDF files?

Was it helpful?

Solution

The libraries and frameworks mentioned here are good, but if all you want to do is fill in a form and flatten it, I recommend the command line tool called pdftk (PDF Toolkit).

See https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/

You can call the command line from php, and the command is

pdftk formfile.pdf fill_form fieldinfo.fdf output outputfile.pdf flatten

You will need to find the format of an FDF file in order to generate the info to fill in the fields. Here's a good link for that:

http://www.tgreer.com/fdfServe.html

[Edit: The above link seems to be out of commission. Here is some more info...]

The pdftk command can generate an FDF file from a PDF form file. You can then use the generated FDF file as a sample. The form fields are the portion of the FDF file that looks like

...
<< /T(f1-1) /V(text of field) >>
<< /T(f1-2) /V(text of another field) >>
...

You might also check out php-pdftk, which is a library specific to PHP. I have not used it, but commenter Álvaro (below) recommends it.

OTHER TIPS

A big +1 to the accepted answer, and a little tip if you run into encoding issues with the fdf file. If you generate the fields.fdf and upon running

file -bi fields.fdf

you get

application/octet-stream; charset=binary

then you've most likely run into a UTF-16 character set issue. Try converting the ftf by means of

cat fields.fdf | sed -e's/\x00//g' | sed -e's/\xFE\xFF//g' > better.fdf

I was then able to edit and import the better.fdf file into my PDF form.

Hopefully this saves someone some Google-ing

I've had plenty of success with using a form that submits to a php script that uses fpdf and passes in the form fields as get variables (maybe not a great best-practice, but it works).

 <?php
require('fpdf.php');
$pdf=new PDF();
$pdf->AddPage();
$pdf->SetY(30);
$pdf->SetX(100);
$pdf->MultiCell(10,4,$_POST['content'],0,'J');
$pdf->Output();
?>

and the you could have something like this.

  <form action="fooPDF.php" method="post">
     <p>PDF CONTENT: <textarea name="content" ></textarea></p>
     <p><input type="submit" /></p>
    </form>

This skeletal example ought to help ya get started.

generating fdf File with php: see http://www.php.net/manual/en/book.fdf.php

then fill it into a pdf with pdftk (see above)

For:

  • Easier input format then XFDF
  • True UTF-8 (Russian) support
  • Complete php usage example

Feel free to check my PdfFormFillerUTF-8.

Looks like this has been covered before. Click through for relevant code using Zend Framework PDF library.

We use PDFLib at work. The paid version isn't very expensive, and there is a more limited open source edition, if you are unable to shell out for the paid version.

I wrote a Perl library, CAM::PDF, with a command-line interface that can solve this. I tried using an FDF solution years ago, but found it way too complicated which is why I wrote CAM::PDF in the first place. My library uses a few heuristics to replace the form with the desired text, so it's not perfect. But it works most of the time, and it's fast, free and quite straightforward to use.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top