Producing PDFs on the fly using Adobe tools for form design and Java integration in IBM BPM to produce the final populated PDF
There is a common requirement to produce PDF forms pre-filled with data for a customer to print and sign, etc.
Why the tech choice?
We wanted a widely supported and easy to use form design tool. Adobe created PDF, along with many graphical design tools, which are affordable & highly usable. The PDF form template exists as the same document that can also be used as a self print option by customers. There is no maintenance of the form in two formats for the code populated version and the website/print download version.
Adobe forms technology is not geared towards things like repeating sections commonly found in invoices or other repeating listing type documents. Where it excels is at the well defined set of fields template type scenario – like a Loan contract, etc. Simple repeating entry functionality can be achieved with prefixing/suffixing a counter, but this is less than ideal and doesn’t address things like aggregation/totals, etc.
Adobe Acrobat or Adobe Livecycle, Glintech PDF Utils, IBM BPM 7.5.1+
4. Create an integration service, define a process flow with a script element to initialise our form data and a Java integration to create the populated PDF file
5. Define variables for inputs to the process – these are configured with defaults for the form data. You could add these in your prod process for testing purposes, but they would probably just be left out and mapped as an input to this process. The form template PDF would probably be best managed as an EPV or some other constant (or possibly even as a web managed file asset) and extend the Java to download the template using a URL from the managed file in script.
6. Edit the server script and add code to initialise and populate details for the form. As mentioned above, directories and template names would be much better done as an EPV, but just as simple strings for this example.
7. Configure the Java integration to refer to the FormsUtil.populateForm method then map data inputs to the method. The output value of the method is left blank. It returns a list of form fields which were populated which you could as a sort of validation, if required.
All done! You should now be able to play the service and it will produce the populated PDF form.