PDF Server

This section describes the Form.io PDF Server

The PDF Server enables the uploading of existing PDF's as well as downloading submissions as PDF documents. The PDF Server can also be found on Docker Hub at the following URL.

formio/pdf-server

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

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_SA

SA certificate if using SSL DB connection

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

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.

FORMIO_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.

- FORMIO_DEBUG=*: Debug everything

- FORMIO_DEBUG=pdf.*: Debug all PDF related events

- FORMIO_DEBUG=pdf.create.*: Debug the PDF upload process

- FORMIO_DEBUG=pdf.get.*: Debug the PDF fetching process

- FORMIO_DEBUG=pdf.delete.*: Debug the PDF deleting process

- FORMIO_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.