I have PDF forms that I want to autopopulate with data from my Django web application and then offer to the user to download. What python library would let me easily pre-populate PDF forms? These forms are intended to be printed out.
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Reportlab is great if you’re generating very dynamic PDFs and need to programmatically control all of it: data and layout.
To just fill out forms in existing PDFs, reportlab is overkill and you’ll basically have to rebuild the PDF from scratch in reportlab instead of just taking a PDF with a form that’s already been made.
PDF forms work with FDF data. I ported a PHP FDF library to Python a while back when I had to do this and released it as fdfgen. I use that to generate an fdf file with the data for the form, then use pdftk to push the fdf into a PDF form and generate the output.
The whole process works like this:
Use fdfgen to create a FDF file:
Then you run pdftk to merge and flatten:
and a filled out, flattened (meaning that there are no longer editable form fields) pdf will be in output.pdf.
It’s a bit complicated, and pdftk can be a pain to install (requires a java stack and there are bugs on Ubuntu 9.10 that have to be worked around) but it’s the simplest process I’ve been able to come up with yet and the workflow is convenient (ie, our designers can make all the layout changes to the PDF they want and as long as they don’t change the names of the fields, I can drop the new one in and everything keeps working).
I apologize for the lack of docs on fdfgen. forge_fdf() is really the only function you should need and it has a docstrings to explain the arguments. I’ve just never quite gotten around to doing more with it.