Links

PDF Server

https://hub.docker.com/repository/docker/formio/pdf-server
The Form.io PDF Solution is a powerful tool with two options: PDF Server and PDF Server Plus. Please see the below description of each to see which aligns best with the requirements of the Application being built.

PDF Basic Server

The Use Case: Starting with dynamic, JSON-driven, responsive webforms that users are filling out and submitting within an application, I want to print out a PDF of the web form submission.

PDF Plus Server

The Use Case: Forms are required to be on a pixel-perfect PDF background with a dynamic JSON form overlay on top of the PDF.
PDF-First forms can also be presented to the user as responsive web forms, but enable the ability to print the Submission to the pixel-perfect PDF background.
Contact [email protected] for more information on the PDF Plus Server

Deploying the PDF Server in a Private Cloud or On-Premise Environment

A common deployment command for the PDF server looks as follows.
docker run -itd \
-e "LICENSE_KEY=YOURLICENSE" \
-e "MONGO=mongodb://mongo:27017/formio" \
-e "FORMIO_S3_SERVER=minio" \
-e "FORMIO_S3_PORT=9000" \
-e "FORMIO_S3_BUCKET=formio" \
-e "FORMIO_S3_KEY=CHANGEME" \
-e "FORMIO_S3_SECRET=CHANGEME" \
--network formio \
--link formio-mongo:mongo \
--link formio-minio:minio \
--restart unless-stopped \
--name pdf-server \
-p 4005:4005 \
formio/pdf-server;
Which uses the following Environment Variables.

Environment Variables for Deployment

Environment Variable
Description
LICENSE_KEY
A Form.io license key
MONGO
Mongo connection string, same as formio-enterprise setting.
DB_SECRET
The DB Secret, same as formio-enterprise setting.
MONGO_DB_NAME
Mongo database name, if using localhost
MONGO_CA
File path to an SSL certificate authority file. This is usually a file with an extension of ".pem". For example, AWS DocumentDB may require this to be like the following value: "/src/certs/rds-combined-ca-bundle.pem"
DOCKER_SECRETS
Whether to enable using docker secrets.
DOCKER_SECRETS_PATH
The path to the docker secrets.
FORMIO_VIEWER
URL to a version of the pdf viewer application
FORMIO_S3_SERVER
S3 server URL
FORMIO_S3_PORT
S3 server port
FORMIO_S3_BUCKET
S3 server bucket name
FORMIO_S3_KEY
S3 access key
FORMIO_S3_SECRET
S3 secret key
FORMIO_AZURE_CONNECTION_STRING
Azure Blob connection string
FORMIO_AZURE_CONTAINER
Azure Blob container name
LICENSE_REMOTE
Boolean to indicate if the license key provided is an offline remote license key.
PDF_BROWSER_TIMEOUT
Determines how long (in milliseconds) the browser can run and execute before timing out. Default is 120000 milliseconds or 2 minutes.
PDF_PRINTING_TIMEOUT
Determines how long (in milliseconds) the browser can wait for PDF file to be generated before timing out. Useful for large PDF files generation. Default is 30000 milliseconds or 30 seconds.
DEBUG
Perform debugging within a PDF server. The following debug commands will do the following. This uses the Debug Module for Node.js so documentation can be found @ https://github.com/visionmedia/debug.
- DEBUG=*: Debug everything
- DEBUG=pdf.*: Debug all PDF related events
- DEBUG=pdf.create.*: Debug the PDF upload process
- DEBUG=pdf.get.*: Debug the PDF fetching process
- DEBUG=pdf.delete.*: Debug the PDF deleting process
- DEBUG=pdf.download.*: Debug the PDF submission download process.

Configure Portal for PDF Server

Now that you have the PDF server operational as well as the API Server, the next thing that needs to happen is to configure the Form.io Portal to use the correct DNS url for the PDF Server url. This is necessary because the "internal" DNS url is used within the Enterprise Server configurations, and we now need to let the Portal know how to directly communicate to the PDF Server. To set this up, you will first need to navigate to your Project Settings, and then click on PDF Server configuration page. Here you will then need to provide the Public DNS url to the pdf server as follows.
Configure the Public DNS url to the PDF server in your project settings.
Once you have done this, you should now be able to upload an existing PDF form, where it will then convert that PDF document into a Form.io webform overlay on top of that PDF form.

PDF Server Plus Auto-Conversion

The PDF Server Plus includes Auto-Conversion of existing fillable and non-fillable PDF Forms. Using AWS Textract for PDF First Forms that do not have any metadata that can be read for conversion, the PDF Server will auto-detect Field Input Types, Labels and more and convert the PDF to a dynamic Form.io Form!

AWS Textract Integration

After setting up PDF Server it is possible to integrate with AWS Textract to enable Formfields Recognition feature.

Steps to integrate:

  1. 1.
    Create IAM role with policies:
    • AmazonTextractServiceRole
    • AmazonSNSFullAccess
    Save ARN, it will be used later.
  2. 2.
    Create AWS Simple Notification Service topic and save its ARN
  3. 3.
    Add the following environment variables to configuration:
Variable
Description
Default value
TEXTRACT_ROLE_ARN
ARN of IAM role for Textract.
-
TEXTRACT_SNS_TOPIC_ARN
ARN of SNS topic.
-
TEXTRACT_OUTPUT_FOLDER
S3 bucket folder where Textract will store its output.
textract-output
4. After starting PDF environment with new environment variables, go to previously created SNS topic page and create a subscription:
  • Left topic ARN as it is
  • In Protocol field choose HTTP
  • In Endpoint field type *public URL of your environment*/pdf/pdf/sns
In case of misconfiguration, you will not be able to upload a PDF file.