Some test text!

Modifying WebViewer Serverkeyboard_arrow_down

Modifying WebViewer Server

It's possible to perform internal changes to WebViewer Server, though we do not recommend it. You may wish to do this if our options do not expose a particular configuration setting, such as the maximum allowed threads in Tomcat. You can do so by calling our Docker image and performing actions on top of it inside of a Dockerfile, then building and running this Dockerfile.

FROM pdftron/webviewer-server:latest
COPY myfile.txt /

docker build -t webviewer .

docker run webviewer

The important paths within the server image are as follows:

/usr/local/apache-tomcat: This is the server which hosts the WebViewer Server code, it is where the bulk of work occurs.

/usr/local/apache-tomcat/conf: This is the main configuration directory for tomcat, within you'll find 3 configuration files - server.xml, web.xml and context.xml. You may change this but do so at your own risk as we have configured these files specifically for WebViewer Server.

/usr/local/apache-tomcat/static_data: This is where we store WebViewer Server's cache.

/usr/local/apache-tomcat/internal_data/: Where temporary data is stored, mainly used by PDFTron core for memory swaps.

When WebViewer Server starts, it executes a script located in /usr/local/apache-tomcat/bin/, this file is responsible for keeping Tomcat running inside of the container.

For more information on configuring Tomcat, you can refer to their available guide for Tomcat 9

Updating PDFNet

If you need to update WebViewer Server's core libraries, you can do so.

  1. Retrieve a different version of PDFNet from our downloads section or a provided link.
  2. Create a new Dockerfile with the following, and extract the PDFNet to the same directory as the Dockerfile. You should be using a Java version of our SDK.
FROM pdftron/webviewer-server:latest
COPY /usr/local/apache-tomcat/bin/
COPY PDFNet.jar /usr/local/apache-tomcat/lib/

For Windows, you need to copy PDFNetC.dll to /install_dir/apache-tomcat/bin/.

  1. Start the server. You will now run with a new PDFNet, this can be confirmed in the logs.

    21:43:32.773 INFO [main] com.pdftron.blackboxservlet.ContextListener.contextInitialized {"PDFNet_version":8.2077024,"num_cpu":4,"os_arch":"amd64","os_name":"Linux","os_version":"5.10.7-arch1-1","server_version":"1.5.4-g4c1f614","total_memory":32064}

Modifying JAVA_OPTS

Some customers may need to modify JAVA_OPTS, most likely to change memory values. This can be easily done by setting the JAVA_OPTS environment variable. Keep in mind the following must be in the JAVA_OPTS variable.


In the docker-compose this would be defined like so:

JAVA_OPTS: '-Djava.library.path=/usr/lib:/usr/local/tcnative/lib:$CATALINA_HOME/bin:$CATALINA_HOME/lib:/usr/lib/x86_64-linux-gnu'

Java Memory

The main use for this is to modify Java memory limits. We recommend setting Xmx to a bit less than your server's available memory. This will prevent Java from exceeding allocation limits because it has not garbage collected.

JAVA_OPTS: '-Djava.library.path=/usr/lib:/usr/local/tcnative/lib:$CATALINA_HOME/bin:$CATALINA_HOME/lib:/usr/lib/x86_64-linux-gnu -Xmx6G'

The following documentation details more about these java options.

Get the answers you need: Support


Free Trial

Get unlimited trial usage of PDFTron SDK to bring accurate, reliable, and fast document processing capabilities to any application or workflow.

Select a platform to get started with your free trial.

Unlimited usage. No email address required.