Question
Filling PDF Forms with PHP
Are there PHP libraries which can be used to fill PDF forms and then save (flatten) them to PDF files?
Question
Are there PHP libraries which can be used to fill PDF forms and then save (flatten) them to PDF files?
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.
Solution
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