Essentially, I take a fillable pdf that has been designed. Collect information from the user via a web interface and create xfdf from it (http://partners.adobe.com/public/developer/en/xml/xfdf_2.0_draft.pdf). Once I have the generated xfdf I execute a command line call with php to pdftk that merges the fillable pdf with the xfdf resulting in a finished flattened pdf that contains the user's information.
PDFTK is free, but it has to be installed on the server to work. It also has a ton of other features that are really useful to be able to call from the command line.