Configuration

Antivirus Settings

Ensure that the antivirus does not scan the ARender Rendition folder and sub-folders below.

Cache Management

Local vs Shared

ARender uses Hazelcast to manage its rendition cache.

Local Cache

By default, each Rendition instance maintains its own local cache, meaning cached documents are not shared across instances.

Shared Cache

With an NFS (Network File System) shared across all Rendition servers and properly configured Hazelcast, cache data can be shared among instances.

Benefits of Shared Cache:

  • Improved Redundancy: If one instance fails, others can still access cached documents without needing to re-fetch them.
  • Enhanced Performance: Reduces retrieval time as previously cached documents remain available to all instances, enhancing speed and reliability in multi-instance environments.

For comprehensive Hazelcast details, refer to Hazelcast documentation.

Default Hazelcast Configuration

The configuration file (hazelcast.yaml) is located within the RenditionEngine resources.

The path to find the configuration is modules/RenditionEngine/rendition-engine-micro-service-2023.5.0.jar/BOOT-INF/classes/hazelcast.yaml.

hazelcast.yaml
hazelcast:
  map:
    documentAccessors:
      max-idle-seconds: 3600
      eviction:
        eviction-policy: NONE
        max-size-policy: PER_NODE
        size: 5
  network:
    join:
      auto-detection:
        enabled: false
    rest-api:
      enabled: true
      endpoint-groups:
        CLUSTER_READ:
          enabled: true
        HEALTH_CHECK:
          enabled: true
        WAN:
          enabled: true
        DATA:
          enabled: true
Property Description
max-idle-seconds This property is used to define the time when the document is kept in the cache. This value is in seconds. By default, a document is cached for 1 hour, so the default is 3600. You can find more details on related Hazelcast documentation.
eviction-policy This property is used to define the eviction policy for cached documents when the maximum cache value is exceeded. By default, the value is NONE which corresponds to no eviction and that the maximum size is ignored. You can find more details on related Hazelcast documentation.
max-size-policy This property defines how Hazelcast will calculate the maximum cache size. By default the value is PER_NODE which defines that the maximum cache size is applied for each member of the cluster. You can find more details on related Hazelcast documentation.
size This property defines the maximum size of the cache. By default the value is 5. You can find more details on related Hazelcast documentation.
network.join.auto-detection This property is used to define the Hazelcast detection mechanism for members of a cluster on the same network. By default the value is false. You can find more details on related Hazelcast documentation.

Cleaning the temporary directory at startup

While Hazelcast evicts entries from the cache, you can also configure cache directory cleanup at application startup using:

Configuration

modules\RenditionEngine\application.properties
default.document.path.startup.clear=true

Adjustable Cleanup Timing:

The default behavior is the deletion of all folders created more than a day ago.

Adjust this value by modifying the configuration below:

application.yaml
temp:
  files:
    folder: ../../tmp/
    house-keeping:
      expiration:
        time: 1
        unit: DAYS

Property Description
time The numerical time value
unit The time unit associated, which can be “SECONDS”, “MINUTES”, “HOURS” and “DAYS”

rest-api

The REST API is enabled by default with enabled: true. Endpoint groups can be customized for use; details are available in the Hazelcast documentation.

Default Enabled Endpoints

This section allows you to define the endpoint groups that can be used with the REST API. You can find more details on related Hazelcast documentation.

CLUSTER_READ

Allows access to the following endpoints :

  • /hazelcast/rest/cluster
  • /hazelcast/rest/management/cluster/state
  • /hazelcast/rest/license (GET)
  • /hazelcast/rest/management/cluster/version (GET)
  • /hazelcast/rest/management/cluster/nodes
  • /hazelcast/rest/instance
  • /hazelcast/rest/log-level (GET)
HEALTH_CHECK

Allows access to the following endpoints :

  • /hazelcast/health/node-state
  • /hazelcast/health/cluster-state
  • /hazelcast/health/cluster-safe
  • /hazelcast/health/migration-queue-size
  • /hazelcast/health/cluster-size
  • /hazelcast/health/ready

Customizing Hazelcast Configuration

To customize the Hazelcast configuration, create your own hazelcast.yaml file and copy the configuration from the file ARender-Rendition-2023.5.0\modules\RenditionEngine\rendition-engine-micro-service-2023.5.0.jar\BOOT-INF\classes\hazelcast.yaml.

Version upgrade
For each upgrade of ARender, please read the release note carefully to take into account potential changes to the initial configuration.

After making your own configuration file, modify the custom-setenv.bat (or the custom-setenv.sh) file to specify the new file path.

Add the following argument to the list of JVM arguments: -Dhazelcast.config=path_to_your_file.

If the path specified is hazelcast.yaml then the file should be placed into ARender-Rendition-2023.5.0\modules\RenditionEngine.

custom-setenv.bat
set ARENDER_BROKER_JVM_ARGS=-Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Addresses=false -Dloader.path="client_libs/" -Dfile.encoding=UTF-8 -Dhazelcast.config=hazelcast.yaml

Cache Directory Settings

For Separate Cache Directories Between Multiple Renditions

Disable Auto-Detection

Make sure the auto-detection property is disabled (this is the default setting).

Web-UI Configuration

Specify each Rendition host in the Web-UI server configuration. The distribution will be managed based on the health of the Renditions.

Configuration details can be found on the dedicated page.

For Shared Cache Directories Among Several Renditions

Hazelcast port opening

By default, Hazelcast uses port 5701. Ensure this port is open on all Rendition servers for communication.

Enable Auto-Detection

Activate auto-detection to allow Hazelcast to recognize all Rendition instances.

Rendition Instance Locations

Ensure all Rendition instances are on the same subnet for cache sharing.

Configure shared directory

For using Hazelcast with multiple Rendition instances and a shared directory, the directory must be on NFS.

Each microservice needs to specify the location of the shared cache directory in the application.yaml file.

temp:
  files:
    folder: ../../tmp/
shared-files:
  sharedPath: ../../tmp/
shared-files:
  sharedPath: ../../tmp/
tmp:
  dir:
    doc: ../../tmp/

shared-files:
  sharedPath: ../../tmp/

Load balancer

Configure the Web-UI with Load balancer

This configuration is possible only when the cache is shared across multiple Rendition instances, see:

If a Load Balancer is present between the Web-UI and Renditions, specify the Load Balancer’s host in the Web-UI server configuration instead of listing individual Rendition hosts.

arender-server-custom-vanilla.properties
arender.server.rendition.hosts=LOAD_BALANCER_HOST

Configure the Web-UI without Load balancer

If there’s no Load Balancer, specify each Rendition host in the Web-UI server configuration. The distribution will be managed according to the Renditions' health.

Detailed configuration can be found on the dedicated page.

Network File System (NFS) Configuration

This configuration is required only when the cache is shared across multiple Rendition instances, see:

Proper NFS configuration is crucial for synchronizing different nodes. Two primary optimizations can cause NFS clients to become out of sync:

  • Asynchronous Writing (default): This option is set by default.
  • Local Read Cache: Options for NFS should include the below configuration to ensure client synchronization:
sync,noac,lookupcache=none

Refer to the following resources for more information:

nfs(5) - Linux man page 10.3
NFS Red Hat Enterprise Linux 6

Office backend selection (Optional)

ARender offers three configurations for converting Office documents to PDF, each with unique strengths and weaknesses:

  • LibreOffice
    • Description: Converts Microsoft, OpenOffice, and LibreOffice documents.
    • Pros: Free and open-source, broad file compatibility.
    • Cons: Conversion quality may vary on complex documents; limited support for issue resolution.
  • Microsoft Office
    • Description: Converts Microsoft, OpenOffice, and LibreOffice documents.
    • Pros: Excellent conversion quality, especially for complex Office files.
    • Cons: Requires a Microsoft Office license, adding cost.
  • DirectOffice (Recommended for Premium experience)
    • Description: Converts Microsoft documents; relies on LibreOffice for OpenOffice and LibreOffice files.
    • Pros: Fast, high-quality conversion; quick issue resolution through Uxopian support.
    • Added Value: Ideal for businesses seeking consistent quality and reliable technical support.
Nothing to do, it is the default configuration :).

To activate DirectOffice, it must be configured to be associated with the desired mime types:

  • Open modules\TaskConversion
  • Edit application-security.yml
  • Add the following content:
mimetype:
  support:
    msoffice: "${mime.type.msoffice.publisher},${mime.type.msoffice.visio},${mime.type.msoffice.rtf},${mime.type.msoffice.project}"
    libreoffice: "${mime.type.libreoffice.text},${mime.type.libreoffice.sheet},${mime.type.libreoffice.presentation},${mime.type.libreoffice.graphics}"    
    directoffice: "${mime.type.msoffice.word},${mime.type.msoffice.excel},${mime.type.msoffice.powerpoint}"

Microsoft Office supported versions

Microsoft Office 2013 and up. Office 365 compatible if the server is connected to an internet connection. We recommend as well to keep Office up to date.


Installation options

Scripted installation

  • Download and unzip AromsCheck
  • Run runCheck.bat for automatic setup.

Manual installation

Skip this manual installation if previous scripted installation was a success.

  • Download and install the below softwares

    • .Net 4.5: Download

    • Microsoft Visual C++ redistributable 2010: Download

    • Microsoft Visual C++ redistributable 2008: Download


Configuration

Windows system configuration

Create the below system folder

C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop

Important configuration note

  • Run Rendition Service with Local Account: Ensure that the account used (Administrator or non-Admin) opens Microsoft Office without pop-ups, as they can interrupt rendering.
  • Excel Conversion Setup: Open Excel with the user that will launch ARender Rendition. The Excel should have a default printer configured (e.g., an XPS output printer); otherwise, Excel won’t handle page setup and conversions.
  • Avoid Remote Session Printers: Avoid setting a forwarded remote session printer as default, as it will disconnect when the session ends, interrupting conversions.
ARender configuration for Microsoft Office

To configure Microsoft Office document rendering:

  • Open the following folder: modules\TaskConversion\aroms2pdf
  • Edit aroms.properties
Properties Default value Detail
PDF/A false PDFs generated by ARender through MS Office are a PDF/A
processAutoKill false Clean old MS Office processes at Aroms start
TimeoutS 120 Maximum time that ARender takes to generates the PDF with MS Office. After that, conversion is aborted
AromsHost http://localhost:8000/ URL on which ARender Aroms is exposed
LockFields false Disable the auto-update of variable field (like a date field)
IgnorePrintAreas true Disable the print of empty lines
FitSheetOnOnePage true True: MS Office will try to print the document in one PDF page. False: MS Office default behavior (split if too much pages)

PDFOwl: a document renderer alternative

Description

We have introduced PDFOwl as an alternative to the standard JNIPdfEngine for document rendering.

Warning
This feature supports images, layouts, and layers rendering, but does not yet include image filter handling or SVG functionality.

In the existing document-renderer setup, errors within the native library can cause the entire application to crash, as these issues occur at a low level and cannot be intercepted at the application level.

To improve stability, PDFOwl employs a resilient approach that maintains performance while isolating errors. It manages rendering requests through sub-processes, allowing errors to be handled without affecting the main process.

Setup

  • Navigate to: modules\RenditionEngine,
  • Open or create the application.properties file,
  • Add the following property:
micro-services.pdf-renderer=PDFOwl

Configurations

PDFOwl offers several configurable properties with default values listed below.

To update these properties:

  • Navigate to: modules\PDFOwl,
  • Open or create the application.properties file,
  • Add the property and its value.
# PdfOwl binary path
pdfowl.path=pdfowl
# Timeout for pdfowl commands execution in milliseconds
pdfowl.client.watchdog=10000
# Timeout for idle pdfOwl clients in milliseconds
pdfowl.client.ttl=30000
# The memory limit used for a thread to work on a single document
pdfowl.memlimit.mb=1024