Server-Side Processing or Client-Side Processing?
Acrobat Form and FDF are not the only way to do forms -- Explore alternatives.
[ Cut out the blurb, and give me the demo. ]
So, you have to do forms using PDF, and somebody told you to read up on Acrobat(R) Forms and FDF. That's certainly one way, but back-track a little and think again. Do you really have to use Acrobat(R) Forms? Is it really a requirement that users must fill out on-line forms that look exactly like printed forms? Or do you just need a PDF file in the end containing the exact form filled out with appropriate content, but to get necessary data, you would rather use a friendlier interface than the official mean-looking form? If your case is the latter, please read on.
There are other advantages for server-side processing. Placing dynamic images into PDF forms using FDF is a very complex process. With ClibPDF, as shown in the example below, placing images dynamically is nearly trivial.
Bar Code and Non-Base-14 Fonts in Forms: Standard Acrobat form fields cannot use any fonts other than the Acrobat(R) Base 14 fonts (Courier, Times-Roman, Helvetica, families, Symbol and ZapfDingbats). This prevents us from using bar code fonts (except for using a "hack", i.e., embedding as an "icon" for a button). With ClibPDF's Type-1 font embedding, any font may be used (to the extent font licenses allow), because all text including form fields are generated dynamicaly as standard text on the server side. See our demo below in which the social security number of the tax payer is encoded as bar code in the upper-right corner. Labelling all forms with bar code serial numbers just makes good sense, even if you are not yet set up with bar code readers. Using bar code when going back from a printed form to database will reduce critical errors and improve productivity. Forms may be keyed on social security number, medical record number, insurance policy number, invoice and PO numbers. You can do that now.
Printed forms and PDF version of these forms may have inappropriate design and layout (fine print, redundant and derivative entries) which may make them especially unsuitable for interactive use via the screen. But usually, changing the form design is not an option. This doesn't mean, however, that everyone has to be subjected to badly designed forms. You can make it easy for users to fill in well designed forms, and still produce properly filled out forms as a PDF file. And with all the recent web design tools, it is much easier to create helpful user input page in HTML than is possible with Acrobat(R) forms. [Fine print is possible with HTML too, if necessary.]
In many applications, therefore, you may be better off using an HTML form and generating a new PDF file dynamically on the server with all the proven and more capable technologies for performing field calculations, rather than having a user fill in an Acrobat(R) form of limited intelligence. This demo shows an example of such an application based on ClibPDF and some additional custom code. The form should be very familar to any U.S. taxpayer.
Please also note that dynamic PDF applications do NOT have to follow typical Acrobat(R) workflows -- Preparing a form template in drawing applications, write it out to a PDF file, load it into Acrobat, and define form fields, etc. For simple forms such as invoice or order forms, it is not hard at all to draw forms programattically using ClibPDF. Even for moderately complex forms, it is quite feasible. One example of such uses is by a government agency in Spain to generate serial-numbered forms dynamically. Generating a form this way from scratch every time is generally very fast, probably faster than most approaches that attempt to merge existing PDF templates with new content. Saved templates generally do not buy you any speed, because the process of merging PDFs is highly complex. For a moment, you might re-examine whether you must create forms by drawing applications. Having said that, we must admit that most IRS forms are too complex to duplicate programmatically, and hence this demo.