The PDF Forms plugin can be used to publish PDF Forms through the Application Server. User can open the PDF Form, fill in the fields and submit the PDF Form. The submitted PDF Form is sent to the plugin and the values of the fields are extracted from the PDF Form and stored in the database.
For the plugin to receive the filled out PDF Form and to extract the data, the following is required:
The PDF Forms plugin is a 100% server side operating plugin and interacts directly with the database for retrieving the form and storing the filled in field values.
The PDF Forms plugin supports PDF Forms (both FDF and XFA) created using Adobe Acrobat.
The plugin supports XFA forms since Servoy 5.2.5 release.
In order for the PDF Forms plugin to work with a specific PDF Form, it is required that the PDF Form has:
Uniquely named fields
When the user has filled out a form and submits it, the PDf Forms plugin retrieves all the fields and their values and stores them in the database. For each field name, it stores only one value. This means that unless each field is uniquely named, values will get lost.
The PDF form needs to contain a submit button to allow the user to post back the filled in form back to the PDF Forms plugin on the Application Server.
Automatic submit button injection
The PDF Forms plugin contains logic to automatically insert the submit button into the PDF Form. The automatic insert of the submit button is only supported when the PDF Form is opened by users using Adobe Acrobat, not when opened through Adobe Reader. Also, it is not supported for XFA forms.
To enable automatic insertion of the submit button, the 'skip_placing_submit_button' field on the pdf_template record needs to be set to one ('1'). When set to zero ('0') the button will not be inserted automatically.
The PDF Form needs to contain two hidden fields, one named 'servoy_pdf_submit_url' and one named 'servoy_action_id'. These fields will be automatically populated by the PDF Forms plugin and are used to retrieve the filled in data back.
The PDF Forms plugin exposes two dynamic url's for accessing the PDF Forms:
The pdf_template record contains one column that affects if the PDF Form can be submitted or not. If the action_type column is set to VIEW (value=0) the PDf Form will open in read-only mode. The fields will be read-only and the submit button will be disabled. When the action_type column is set to EDIT (value=1) the PDF Form will open in edit-mode, allowing the fields to be edited and the PDf Form to be submitted.
To view PDF Forms in the browser, Adobe Acrobat Reader 7 (or higher) - including the default web browser plugin - must be installed. Acrobat Reader 7 can be downloaded (at no charge) from Adobe: http://www.adobe.com
After submitting the PDF form, the browser will redirect to the redirect_url, if specified. If no redirect_url is specified on the specific action, the PDF Forms plugin will lookup the redirect_url on the pdf_template record linked to the pdf_action. If both the pdf_action and pdf_template do not specify a redirect_url, the browser will be redirected to a default page that displays the text 'Data successfully stored,close this window' and will attempt to close the window.
When the user submits a PDF Form, the related pdf_action record will be marked as closed. When the user would try to re-open a PDF Form that was previously submitted, thus the pdf_action record is marked as closed, instead a page will be shown in the browser, displaying the text 'Security violation, use the pdf system to edit pdfs'.
When the PDF Forms plugin opens a PDF Form linked to an pdf_action, it will fill any field in the PDF Form with data that is already stored in the pdf_form_values table, related to the pdf_action record.
As can be seen in the ERD below, the link between the data stored in the pdf_form_values table and the pdf_action table is not done based on the primary key of the pdf_actions table, but on a separate form_id column. This allows for the following:
The ERD below is the minimum required by the plugin to operate. The data model needs to be present in one of the Database Servers. By default, the DataBase Server named 'pdf_forms' will be used, but this can be overwritten using the 'pdf_forms_plugin_servername' setting of the plugin, available on the Admin page under Server Plugin Settings.
The pdf_templates table stores the the actual PDF Form:
Additional column required
Before Servoy 5.1, the plugin also requires the presence of a 'user_id' column, although not used
When a PDF Form is shown to the user a related PDF Form template is automatically retrieved. This PDF Form Template is by default loaded from the "actual_pdf_form" column from the pdf_templates table.
There are two options to override the location from where the template is retrieved:
The overrideTemplateLocation can be any location that is accessible from the machine where the Servoy Web Client is running, for example ../application_server/server/webapps/ROOT/servoy-webclient/..
The order of precedence for PDF Form Template location is:
|Server Property Summary|
|Server Property Details|
|The name of the server to locate the required pdf_form_values,pdf_templates,pdf_actions SQL tabels|