Rendition stack

By Environment Variables

All yaml properties can be overridden by environment variables by following the next rules:

  • environment variables must be all capitalize
  • capitalized character in yaml must be preceded by "."
  • use "_" to associate an object
  • use "[n]" to set a list element (with n as index)
  nurse:
    samplesDirectory: ../../samples/
    components:
      - functionality: TKC_MailConversion
        factoryName: "mailFactory"
        samplePath: "test.msg"
        docIdStr: "m41lS4mpl3"
    environment:
      - "DCV_NURSE_SAMPLES.DIRECTORY=../../samples/"
      - "DCV_NURSE_COMPONENTS[0]_FUNCTIONALITY=TKC_MailConversion"
      - "DCV_NURSE_COMPONENTS[0]_FACTORY.NAME=mailFactory"
      - "DCV_NURSE_COMPONENTS[0]_SAMPLE.PATH=test.msg"
      - "DCV_NURSE_COMPONENTS[0]_DOC.ID.STR=m41lS4mpl3"

By volumes

Configuration files location:

  • /arender/config/application.properties

  • /arender/config/application-*.properties

  • /arender/config/application.yaml

  • /arender/config/application-*.yaml

Note
{service-name}: container name without “arender” prefix

PDFOwl: a document renderer alternative

Description

The 2023.1.0 version has introduced a new docker image as an alternative of the usual document-renderer, named document-renderer-pdfowl.

Warning
Currently, this feature is in an experimental phase and accessible through early access. It currently supports image and layout rendering. Layers handling, image filters, and SVG functionalities are yet to be implemented.

In the context of the current document-renderer, if an error occurs within the loaded native library, it results in the entire application crashing. As the error occured at a lower level, we are unable to handle it at the application level. To address this, we implemented an application that prioritizes resilience while maintaining optimal performance. It spawns and manages sub-processes responsible for handling rendering requests, capable of returning errors without causing a crash in the main process.

Docker image

The docker image name with the tag is artifactory.arondor.cloud:5001/document-renderer-pdfowl:2023.1.0

Example of using this image with docker compose :

version: "3.7"

services:
  ui:
    image: artifactory.arondor.cloud:5001/arender-ui:2023.1.0
    environment:
      - "ARENDERSRV_ARENDER_SERVER_RENDITION_HOSTS=http://service-broker:8761/"
    ports:
      - 8080:8080

  service-broker:
    image: artifactory.arondor.cloud:5001/arender-document-service-broker:2023.1.0
    environment:
      - "DSB_KUBEPROVIDER_KUBE.HOSTS_DOCUMENT-CONVERTER=19999"
      - "DSB_KUBEPROVIDER_KUBE.HOSTS_DOCUMENT-RENDERER=9091"
      - "DSB_KUBEPROVIDER_KUBE.HOSTS_DOCUMENT-TEXT-HANDLER=8899"
    ports:
      - 8761:8761
    volumes:
      - arender-tmp:/arender/tmp

  document-renderer:
    image: artifactory.arondor.cloud:5001/arender-document-renderer-pdfowl:2023.1.0
    hostname: drn-service
    environment:
      - "DRN_EUREKA_INSTANCE_METADATA.MAP_HOST.NAME=document-renderer"
      - "DRN_EUREKA_INSTANCE_HOSTNAME=service-broker"
      - "DRN_EUREKA_SERVER_PORT=8761"
    ports:
      - 9091:9091
    volumes:
      - arender-tmp:/arender/tmp

  document-text-handler:
    image: artifactory.arondor.cloud:5001/arender-document-text-handler:2023.1.0
    environment:
      - "DTH_EUREKA_INSTANCE_METADATA.MAP_HOST.NAME=document-text-handler"
      - "DTH_EUREKA_INSTANCE_HOSTNAME=service-broker"
      - "DTH_EUREKA_SERVER_PORT=8761"
    ports:
      - 8899:8899
    volumes:
      - arender-tmp:/arender/tmp

  document-converter:
    image: artifactory.arondor.cloud:5001/arender-document-converter:2023.1.0
    environment:
      - "DCV_EUREKA_INSTANCE_METADATA.MAP_HOST.NAME=document-converter"
      - "DCV_APP_EUREKA_HOSTNAME=service-broker"
      - "DCV_APP_EUREKA_PORT=8761"
    ports:
      - 19999:19999
    volumes:
      - arender-tmp:/arender/tmp

volumes:
  arender-tmp:

Configurations

Some properties are available with default values :

# 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