PDF Form Filler
You can use the PDF Form Filler service to populate a fillable PDF document with database data.
This can be used for generating government-facing documents like tax forms, customs documents, etc.
You access the PDF Form Filler service by
making an API call
as shown below.
Example - Populate a PDF Template
Simply call parasql_http() as shown below.
Replace YOUR_API_KEY with a key you create via Tools > API Keys.
CALL parasql_http(
'POST',
'https://www.appsynergy.com/api?action=PDF_AUTOFILL&apiKey=YOUR_API_KEY',
JSON_OBJECT(
'sourcePdf', myDocumentField, -- a document field that contains the PDF template
'outputFilename', 'Filled_TAX_W2.pdf',
'fieldValues', JSON_OBJECT(
'SSN', '012-34-5678', -- be sure to use fully qualified field names
'FirstName', 'Bob',
'LastName', 'Smith'
),
'flattenFields': 'FILLED', -- enum: NONE, FILLED, ALL
'ignoreMissingFields': true
),
'MyCallback', -- name of your callback procedure
NULL,
NULL
);
If you do not know the field names for the fieldValues property you can specify anything to begin with and
the response will contain a list of valid field names.
The flattenFields option determines if editable fields are made read-only in the output PDF.
The Response
Your callback procedure must take the following parameters:
respCode INTEGER, respBody JSON, respHeaders JSON, optMetadata JSON
The respBody will look like this:
{
"status": "OK",
"errorMessage": "",
"errorCode": "",
"data": {
"outputPdf": "MyFilledW2TaxForm.pdf;12048;1598992709098;database/files/a655f610-febd-4f6a-b11d-6bcd696f5466.pdf",
"pdfFieldInfo": [
{
"fullyQualifiedName": "topmostSubform[0].Copy1[0].BoxA_ReadOrder[0].f2_01[0]",
"isRequired": "false",
"isReadOnly": "false",
"type": "Tx"
},
{
"fullyQualifiedName": "topmostSubform[0].Copy1[0].Col_Left[0].f2_02[0]",
"isRequired": "false",
"isReadOnly": "false",
"type": "Tx"
}
]
}
}
You can get the outputPdf document field value like this:
JSON_VALUE(respBody, '$.data.outputPdf')
Your callback procedure will need to save the outputPdf to your database
with code something like this:
INSERT INTO MyTable (MyTable_ID, MyDocumentField)
VALUES (parasql_next_val('MyTable'), JSON_VALUE(respBody, '$.data.outputPdf') );