What is PDFreactor?
PDFreactor is a powerful formatting processor that enables server-side PDF conversion from HTML 5 documents using CSS to define page layout and styles. You can dynamically generate PDF documents such as reports, invoices, statements and others on-the-fly.
By implementing the W3C specification for Paged Media and print, PDFreactor provides great control over the paged output via CSS. It is very easy to set page sizes, margins and pagination for specific elements, page headers and footers. It enables you to set PDF specific information, to generate outlines and links for your documents and even to add meta information about the author or keywords.
This docker image provides a ready-to-use PDFreactor Web Service, which can then be used to convert HTML to PDF via the REST API or one of the API wrappers available at www.pdfreactor.com.
This docker image is provides "as-is", without any warranty or support.
The software "PDFreactor" contained in this image is a commercial product and subject to the PDFreactor Software License Agreement. To use PDFreactor in a production environment, an appropriate license is required.
For more information about PDFreactor, please visit www.pdfreactor.com.
How to use this image
$ docker run -d -p 8080:9423 realobjects/pdfreactor
This will map the PDFreactor Web Service running in the docker container on port
9423 to port
var pdfReactor = new PDFreactor("http://yourhost.com:8080/service/rest");
$ docker run -d -p 8080:9423 -v /your/config:/ro/config realobjects/pdfreactor
We recommend mapping a volume from your host system to
/ro/config, since you can then use this volume to set the license, fonts and configuration of PDFreactor.
Setting a license key
PDFreactor will run in evaluation mode when no license key is used. By default, it will look for a license key in
/ro/config/licensekey.txt. You can mount a license key from your host volume to this path to set a license key for PDFreactor.
If you do not have a license key, you can obtain a free personal license for your personal, non-commercial license. For commercial projects, you can request an evaluation license or purchase a license.
PDFreactor looks for fonts in
/ro/config/fonts. If you would like to use any fonts that are not available by default in PDFreactor, you will need to place your fonts in the
fonts subdirectory of the
config volume you mapped. These fonts will then automatically be available to PDFreactor.
Additional server configuration
Additional configuration options for the server can be specified for the PDFreactor Web Service. These are either parameters the client should not or cannot influence, and they affect all conversions.
These parameters can be set by placing a file called
pdfreactorwebservice.config in the volume mapped as
/ro/config (or by mapping
For details about the available server parameters, see the Server Parameters chapter in the manual.
The software "PDFreactor" contained in this image is a commercial product and subject to the PDFreactor Software License Agreement. To use PDFreactor, an appropriate license is required.
Further third-party licensing information is provided in the
/ro/pdfreactor/license directory in the PDFreactor image.
PDFreactor is a registered trademark of RealObjects GmbH.
There are a few ways to increase the available memory for the VM:
Setting Java parameters as an environment variable
Java VM parameters can set through an environment variable called
JAVA_OPTIONS. This variable can be used in conjunction with the
docker run command, or as part of your
environment: - JAVA_OPTIONS=-Xmx3g
Configuring Java Parameters through the pdfreactorwebservice.config file
If you have mapped a directory on the Docker host system as
/ro/config in the container, placing a file called
pdfreactorwebservice.config in this directory is a good way to specify certain options for the PDFreactor server, including a memory limit. You can configure the memory limit in this file by adding appropriate Java parameters, for example:
Example command line:
docker run --name pr -p 9423:9423 -v /path/to/config:/ro/config realobjects/pdfreactor
Through an argument when running the container
You can just pass Java parameters to the directly to the container when running it, example:
docker run --name pr -p 9423:9423 -v /path/to/config:/ro/config realobjects/pdfreactor -Xmx4g
We're looking to increase the available memory for the VM that is run within the docker container. (default is 1Gb: -Mxm1024m)
How to configure docker to set the vmoptions to increase memory?
Is it possible to set them by an environment variable, using the docker-compose.yml:
This doesn't seem to be working.
In the start.sh script we see logic for setting/overriding vmoptions. How to instruct the Docker script with these overrides?