Help
RSS
API
Feed
Maltego
Contact
Domain > docs.arender.io
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-10-16
18.161.156.70
(
ClassC
)
2026-01-27
3.169.173.115
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: CloudFrontDate: Tue, 27 Jan 2026 19:17:08 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveLocation: https://docs.arender.io/X-Cache: Redirect from cloudfrontVia: 1.1 2d69093e294db929b26be80ccee94472.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P4X-Amz-Cf-Id: JxsiA2pS1JCPNxuydEqIYiPn4GXDpNqG5H9PV5fI6R-TigCJL1xsiA html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>CloudFront/center>/body>/html>
Port 443
HTTP/1.1 200 OKContent-Type: text/htmlContent-Length: 1693774Connection: keep-aliveDate: Tue, 27 Jan 2026 19:17:09 GMTLast-Modified: Tue, 23 Dec 2025 15:33:39 GMTETag: a526a081e2d0a35b5182b51de6fff81bx-amz-server-side-encryption: AES256Accept-Ranges: bytesServer: AmazonS3X-Cache: Miss from cloudfrontVia: 1.1 93b50b5ce635a36621d7bd38d3b0d6da.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P4X-Amz-Cf-Id: A-BBvGgstmoQIO5sxH5x9e5QZH-1SoLv6aHkDimTB6aq0T1gtq7pGw !DOCTYPE html>html langen-us>head> meta charsetutf-8> title>ARender | View any document anywhere/title> !-- mobile responsive meta --> meta nameviewport contentwidthdevice-width, initial-scale1, maximum-scale1> meta nameauthor contentUxopian Software> meta namegenerator contentHugo 0.79.1 /> meta namedescription contentFind out how ARender can help you solve all your document viewing issues. Large volumes, security, editing, annotating... In your own hands. | Page 1 /> !--Canonical URLs--> link relcanonical hrefhttps://docs.arender.io/ /> !-- plugins --> link relstylesheet hrefhttps://docs.arender.io/plugins/bootstrap/bootstrap.min.css> link relstylesheet hrefhttps://docs.arender.io/plugins/slick/slick.css> link relstylesheet hrefhttps://docs.arender.io/plugins/animate/animate.css> link relstylesheet hrefhttps://docs.arender.io/plugins/venobox/venobox.css> link relstylesheet hrefhttps://docs.arender.io/plugins/themify-icons/themify-icons.css> !-- JS Plugins --> script srchttps://docs.arender.io/js/jquery/jquery-1.12.4.js>/script> script srchttps://docs.arender.io/plugins/bootstrap/bootstrap.min.js>/script> script srchttps://docs.arender.io/plugins/slick/slick.min.js>/script> script srchttps://docs.arender.io/plugins/venobox/venobox.min.js>/script> script srchttps://docs.arender.io/plugins/filterizr/jquery.filterizr.min.js>/script> script srchttps://docs.arender.io/plugins/google-map/gmap.js>/script> script srchttps://docs.arender.io/js/clipboard/clipboard.min.js>/script> script srchttps://docs.arender.io/js/clipboard/clipboard.js>/script> script srchttps://docs.arender.io/js/wow/wow.min.js>/script> script srchttps://docs.arender.io/js/match-height/jquery.matchHeight-min.js>/script> script srchttps://docs.arender.io/js/jquery/jquery-ui.js>/script> script srchttps://docs.arender.io/js/dot/dot-script.js>/script> !-- Custom JS --> script srchttps://docs.arender.io/js/custom_functions.js>/script> !-- Main Stylesheet --> link relstylesheet hrefhttps://docs.arender.io/scss/style.css mediascreen> !--Favicon--> link relshortcut icon hrefhttps://docs.arender.io/images/favicon.png typeimage/x-icon> link relicon hrefhttps://docs.arender.io/images/favicon.png typeimage/x-icon> script> (function () { var zi document.createElement(script); zi.type text/javascript; zi.async true; zi.referrerPolicy unsafe-url; zi.src https://ws.zoominfo.com/pixel/61377f852f261d0013f189c5; var s document.getElementsByTagName(script)0; s.parentNode.insertBefore(zi, s); })(); /script>/head>body data-spyscroll data-target#TableOfContents> header classfixed-top header> div idnavbar classnavigation w-100 nav-bg > div classcontainer> nav classnavbar navbar-expand-lg navbar-light p-0> a classnavbar-brand href/>img classbackground-header srchttps://docs.arender.io/images/Uxopian/UxopianSoftwareLogo.svg altARender | View any document anywhere>/a> button classnavbar-toggler rounded-0 typebutton data-togglecollapse data-target#navigation aria-controlsnavigation aria-expandedfalse aria-labelToggle navigation> span classnavbar-toggler-icon>/span> /button> div classcollapse navbar-collapse text-center idnavigation> ul classnavbar-nav ml-auto> li classnav-item> a classnav-link hrefhttps://www.uxopian.com/en/demohub>Free Trial/a> /li> li classnav-item dropdown> a classnav-link dropdown-toggle href# rolebutton data-toggledropdown aria-haspopuptrue aria-expandedfalse> Company /a> div classdropdown-menu> a classdropdown-item hrefhttps://www.uxopian.com/en/about-us> About Uxopian Software /a> a classdropdown-item hrefhttps://www.uxopian.com/en/contact-us> Contact us /a> /div> /li> /ul> /div> /nav> /div> /div>/header> div idbreadcrumb classbreadcrumb sticky-top> span> a classtext-primary font-secondary hrefhttps://docs.arender.io/>Home/a> span> > /span> /span> div classright> span classlangage-selector> select classborder-0 idselect-language onchangelocation this.value;> option iden valuehttps://docs.arender.io/ selected> English /option> option idfr valuehttps://docs.arender.io/fr/>Français /option> /select> /span> /div> /div>section classpage-title-section overlay> div classcontainer> div classrow> div classcol-md-8> h2 classsection-title>ARender Documentation/h2> div classpanel panel-default sidebar-menu search> div classposition-relative> div idautocomplete-container classinput-group> div classinput-group-prepend> span classinput-group-text idbasic-addon1>i classti-search>/i>/span> /div> input idsearch classform-control placeholderSearch... aria-describedbybasic-addon1> /div> script> $(function () { var projects { value: ARender for FileNet in IBM Websphere Application Server (recommended), path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/filenet\/filenet-was\/, label: p>Below the deployment of ARender HMI for FileNet in IBM WebSphere application server.\nIn our example, we are deploying the presentation server in an environment with:\n Operating System: Windows Server 2016 Filenet 5.5 Websphere 9.0.5.0 Application Server ARender HMI for FileNet version 4.8.21 Retrieve the ARender HMI EAR archive for FileNet Using the username and password beforehand provided, you can retrieve the web application in EAR format here./p>p>Below the deployment of ARender HMI for FileNet in IBM WebSphere application server.\nIn our example, we are deploying the presentation server in an environment with:\n Operating System: Windows Server 2016 Filenet 5.5 Websphere 9.0.5.0 Application Server ARender HMI for FileNet version 4.8.21 Retrieve the ARender HMI EAR archive for FileNet Using the username and password beforehand provided, you can retrieve the web application in EAR format here.\nWebSphere requirements Warning The version of websphere used here must have java 8 installed and activated. If you like, please follow the instructions here. Deployment of the EAR in IBM WebSphere Open a WebSphere console at https:\/\/serveur_websphere:9043\/ibm\/console\n Go in \u0026ldquo;Applications\u0026rdquo; tab, then click on \u0026ldquo;WebSphere enterprise applications\u0026rdquo;\n To launch installation, click on \u0026ldquo;Install\u0026rdquo;\n Choose the EAR path to deploy and click on \u0026ldquo;Next\u0026rdquo; To accept default parameters, click on \u0026ldquo;Next\u0026rdquo; Select webserver(s) and\/or server(s) of the Workplace, then click on \u0026ldquo;Next\u0026rdquo; To accept the parameters by default (virtual host: default_host), click on \u0026ldquo;Next\u0026rdquo; In recap window, click on \u0026ldquo;Finish\u0026rdquo; to begin the installation with these parameters after checking them Post setup Libraries loading order Since 4.8.9 Before 4.8.9 Nothing to configure. Websphere must be configured in parent-last which means it has to load its libraries after ARender.\n In the application list click on ARender 4.8.X for FileNet 5.x\n Click on \u0026ldquo;Manage Modules\u0026rdquo;\n Click on ARender module Select in the drop down list « Class loader order »: « Classes loaded with local class loaded first (parent last) » Click on \u0026ldquo;OK\u0026rdquo; and save the modifications\n Start ARender application\n Installation in CPE is complete You can now access a Filenet document via a URL formed like this:\nhttp:\/\/{server_arender}:{port_arender}\/ARender\/?id{id}\u0026amp;objectStoreName{ObjectStoreName} /p>p>standalone/p>p>hmi/p>p>configuration/p>p>filenet/p>p>ibm/p>p>websphere/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/filenet\/filenet-was\/ }, { value: Backup \u0026 Restore, path: https:\/\/docs.arender.io\/guides\/operation\/backup-restore\/, label: p>Rendition server Backing up a rendition server is just the simple copy of the installation folder. This can be done while the server running as well as when it\u0026rsquo;s shutdown.\nTo save space the tmp folder can be overlooked. The tmp folder is storing open documents when the server is running.\nRestoring a rendition server is done in two steps:\n Installation restoration: Copy the backed-up folder. service restoration: Copying the file doesn\u0026rsquo;t change the service created on the operating system./p>p>Rendition server Backing up a rendition server is just the simple copy of the installation folder. This can be done while the server running as well as when it\u0026rsquo;s shutdown.\nTo save space the tmp folder can be overlooked. The tmp folder is storing open documents when the server is running.\nRestoring a rendition server is done in two steps:\n Installation restoration: Copy the backed-up folder. service restoration: Copying the file doesn\u0026rsquo;t change the service created on the operating system. To restore, execute the following scripts (it will remove the existing service and install the new one):\n Windows Linux $\u0026gt; .\\removeService.bat $\u0026gt; .\\installAsService.bat $\u0026gt; .\/removeService.sh $\u0026gt; .\/installAsService.sh Presentation server To back-up a presentation server you need:\n The deployed web application (WAR or EAR) Application server\u0026rsquo;s configuration (if not default) Various elements (configuration files, libraries\u0026hellip;) remote (if any) Restoring a presentation server require the web application to be deployed, configuration files and remote elements.\n/p>p>exploitation/p>p>backup/p>p>restore/p>, url: https:\/\/docs.arender.io\/guides\/operation\/backup-restore\/ }, { value: Backup \u0026 Restore, path: https:\/\/docs.arender.io\/v4\/operation\/backup-restore\/, label: p>Rendition server Backing up a rendition server is just the simple copie of the installation folder. This can be done while the server running as well as when it\u0026rsquo;s shutdown.\nTo save space the tmp folder can be overlooked. The tmp folder is storing open documents when the server is running.\nRestoring a rendition server is done in two steps:\n Installation restoration: Copy the backed-up folder. service restoration: Copying the file doesn\u0026rsquo;t change the service created on the operating system./p>p>Rendition server Backing up a rendition server is just the simple copie of the installation folder. This can be done while the server running as well as when it\u0026rsquo;s shutdown.\nTo save space the tmp folder can be overlooked. The tmp folder is storing open documents when the server is running.\nRestoring a rendition server is done in two steps:\n Installation restoration: Copy the backed-up folder. service restoration: Copying the file doesn\u0026rsquo;t change the service created on the operating system. To restore, execute the following scripts (it will remove the existing service and install the new one):\n Windows Linux $\u0026gt; .\\removeService.bat $\u0026gt; .\\installAsService.bat $\u0026gt; .\/removeService.sh $\u0026gt; .\/installAsService.sh Presentation server To back-up a presentation server you need:\n The deployed web application (WAR or EAR) Application server\u0026rsquo;s configuration (if not default) Various elements (configuration files, librairies\u0026hellip;) remote (if any) Restoring a presentation server require the web application to be deployed, configuration files and remote elements.\n/p>p>exploitation/p>p>backup/p>p>restore/p>, url: https:\/\/docs.arender.io\/v4\/operation\/backup-restore\/ }, { value: Color palette, path: https:\/\/docs.arender.io\/guides\/visual-design\/color\/, label: p>Blue Gray Green Red Black and White Blue palette Shade Preview Hex code CSS variable Blue 900 #021D45 --ar-color-blue-900 Blue 800 #042475 --ar-color-blue-800 Blue 700 #224293 --ar-color-blue-700 Blue 600 #1B49BE --ar-color-blue-600 Blue 500 #1865D8 --ar-color-blue-500 Blue 500-90 rgb(24, 101, 216, 0./p>p>Blue Gray Green Red Black and White Blue palette Shade Preview Hex code CSS variable Blue 900 #021D45 --ar-color-blue-900 Blue 800 #042475 --ar-color-blue-800 Blue 700 #224293 --ar-color-blue-700 Blue 600 #1B49BE --ar-color-blue-600 Blue 500 #1865D8 --ar-color-blue-500 Blue 500-90 rgb(24, 101, 216, 0.9) --ar-color-blue-500-90 Blue 400 #74A1F9 --ar-color-blue-400 Blue 300 #9BB7FF --ar-color-blue-300 Blue 200 #D3DFF4 --ar-color-blue-200 Blue 100 #EDF2FF --ar-color-blue-100 Blue 100-90 rgb(237, 242, 255, 0.9) --ar-color-blue-100-90 Gray palette Shade Preview Hex code CSS variable Gray 900 #1B1F26 --ar-color-gray-900 Gray 800 #2E353F --ar-color-gray-800 Gray 700 #404A58 --ar-color-gray-700 Gray 600 #5B697E --ar-color-gray-600 Gray 500 #9AA9C5 --ar-color-gray-500 Gray 400 #C9CDD8 --ar-color-gray-400 Gray 300 #D8DFE8 --ar-color-gray-300 Gray 200 #E6EAF2 --ar-color-gray-200 Gray 100 #F1F4FA --ar-color-gray-100 Gray 50 #F1F6FF --ar-color-gray-50 Green palette Shade Preview Hex code CSS variable Green 900 #04262F --ar-color-green-900 Green 800 #143137 --ar-color-green-800 Green 700 #284248 --ar-color-green-700 Green 600 #10434F --ar-color-green-600 Green 500 #005264 --ar-color-green-500 Green 400 #4D8693 --ar-color-green-400 Green 300 #80A9B2 --ar-color-green-300 Green 200 #B3CBD1 --ar-color-green-200 Green 100 #E6EEF0 --ar-color-green-100 Red palette Shade Preview Hex code CSS variable Red 900 #2C0F0F --ar-color-red-900 Red 800 #591E1E --ar-color-red-800 Red 700 #6F2525 --ar-color-red-700 Red 600 #B23B3B --ar-color-red-600 Red 500 #DE4A4A --ar-color-red-500 Red 400 #E56E6E --ar-color-red-400 Red 300 #EB9292 --ar-color-red-300 Red 200 #F5C9C9 --ar-color-red-200 Red 100 #FCEDED --ar-color-red-100 Black and White palette Shade Preview Hex code CSS variable Black 100 #000000 --ar-color-black-100 White 100 #FFFFFF --ar-color-white-100 White 100-90 rgb(255, 255, 255, 0.9); --ar-color-white-100-90 /p>, url: https:\/\/docs.arender.io\/guides\/visual-design\/color\/ }, { value: Configurations, path: https:\/\/docs.arender.io\/guides\/configurations\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/ }, { value: Connector, path: https:\/\/docs.arender.io\/development\/connector\/, label: p>Welcome to the ARender Connector Development Documentation. This guide will walk you through the process of creating a connector for ARender, with a focus on Java implementation, and the necessary steps to integrate the connector into ARender WEB-UI.\nPrerequisites Required technical knowledge Before embarking on connector development, ensure that you meet the following prerequisites:\n ARender installation and operation: verify that ARender is correctly installed and operational in your environment. Proficiency in Java: connector development is conducted in Java, requiring strong proficiency in the language./p>p>Welcome to the ARender Connector Development Documentation. This guide will walk you through the process of creating a connector for ARender, with a focus on Java implementation, and the necessary steps to integrate the connector into ARender WEB-UI.\nPrerequisites Required technical knowledge Before embarking on connector development, ensure that you meet the following prerequisites:\n ARender installation and operation: verify that ARender is correctly installed and operational in your environment. Proficiency in Java: connector development is conducted in Java, requiring strong proficiency in the language. Knowledge of Maven: the deliverable is constructed (as outlined in this documentation) using Maven (https:\/\/maven.apache.org\/). Understanding of the Target Application: possess knowledge of the application for which you are developing the connector. This includes retrieving documents via a Web Service, managing security for the application, and securing the document retrieval call. Network infrastructure N1: ECM UI: has the responsibility to let the user choose which documents he wants to open in ARender, N2: Browser: will create the ARender frame using the URL provided by N1, N3: ARender WEB-UI: Spring Boot module which contains the connector, N4: ECM Backend: API with which ARender connector will interact to fetch documents (and if needed fetch annotations fetch metadata and create new documents or new version of documents), N5: ARender Rendition: Spring Boot module that will generate images, extract text and more. As shown in the above diagram, the connector will have to be deployed in N3 WEB-UI.\nPart 1: How ARender operates with a connector? ARender serves as a document rendering tool, capable of integration with various Document Management Systems (DMS) through custom connectors (refer to the list of existing connectors).\nA connector empowers ARender to connect with a specific DMS for document retrieval and display. The process unfolds as follows:\n Opening a URL from the parent application (DMS) with a set of parameters defined in the connector. These parameters typically include information such as document identifier(s) and a security token.\n Example: http:\/\/localhost:8080\/?id1234\u0026amp;tokenabcd Parsing the URL: Extracting parameters from the URL and selecting the corresponding connector. Once the connector is selected, it sets the ID for each document to display and creates a DocumentAccessor for each.\n Retrieving documents: The connector employs each DocumentAccessor to retrieve documents from the DMS.\n Part 2: Document connector development Prerequisites Access credentials (login\/password) for our binary repository (If you don\u0026rsquo;t have access, please contact us through our ticketing system or via email: arender-sales@arondor.com). Java and Maven development environment. Maven configuration In the Maven configuration file .m2\/settings.xml (refer to Maven documentation).\n Configure the login and password in an XML format as follows:\n Make sure to replace placeholders like loginToReplaceByYours with your actual login credentials. \u0026lt;servers\u0026gt; \u0026lt;server\u0026gt; \u0026lt;id\u0026gt;arondor\u0026lt;\/id\u0026gt; \u0026lt;username\u0026gt;loginToReplaceByYours\u0026lt;\/username\u0026gt; \u0026lt;password\u0026gt;loginToReplaceByYours\u0026lt;\/password\u0026gt; \u0026lt;\/server\u0026gt; \u0026lt;\/servers\u0026gt; Next, configure access to the ARender libraries as shown below: \u0026lt;profiles\u0026gt; \u0026lt;profile\u0026gt; \u0026lt;repositories\u0026gt; \u0026lt;repository\u0026gt; \u0026lt;snapshots \/\u0026gt; \u0026lt;id\u0026gt;arondor\u0026lt;\/id\u0026gt; \u0026lt;url\u0026gt;https:\/\/artifactory.arondor.cloud\/artifactory\/arondor-all\/\u0026lt;\/url\u0026gt; \u0026lt;\/repository\u0026gt; \u0026lt;\/repositories\u0026gt; \u0026lt;pluginRepositories\u0026gt; \u0026lt;pluginRepository\u0026gt; \u0026lt;snapshots \/\u0026gt; \u0026lt;id\u0026gt;arondor\u0026lt;\/id\u0026gt; \u0026lt;url\u0026gt;https:\/\/artifactory.arondor.cloud\/artifactory\/arondor-all\/\u0026lt;\/url\u0026gt; \u0026lt;\/pluginRepository\u0026gt; \u0026lt;\/pluginRepositories\u0026gt; \u0026lt;id\u0026gt;artifactory\u0026lt;\/id\u0026gt; \u0026lt;\/profile\u0026gt; \u0026lt;\/profiles\u0026gt; \u0026lt;activeProfiles\u0026gt; \u0026lt;activeProfile\u0026gt;artifactory\u0026lt;\/activeProfile\u0026gt; \u0026lt;\/activeProfiles\u0026gt; These configurations are essential for setting up the development environment for the ARender document connector.\nDevelopment Introduction Please find below the how to develop a connector that fetches a document from you ECM system.\nAn online sample of a connector is available at the following URL: https:\/\/github.com\/arondor-connectors\/sample-connectors\/.\nDocumentAccessor The development of a new ARender connector should start with the implementation of the DocumentAccessor interface.\nCreate a class that implements the following interface: com.arondor.viewer.rendition.api.document.DocumentAccessor.\nInputStream getInputStream() throws IOException; The implementation of this interface should define the service call for retrieving the document.\n Example inline implementation: here. URLParser Subsequently, the retrieval of necessary information for DocumentAccessor to retrieve the document must be obtained from the URL. To achieve this:\n Create a class that implements the following interface: com.arondor.viewer.rendition.api.DocumentServiceURLParser,\n Let\u0026rsquo;s name it SampleURLParser for the sake of continuity. Two methods need implementation:\n boolean canParse(DocumentService documentService, ServletContext application, HttpServletRequest request); The implementation of this method should return true or false depending on whether the parameters in the URL are sufficient for ARender to retrieve the document.\nDocumentId parse(DocumentService documentService, ServletContext application, HttpServletRequest request) throws DocumentNotAvailableException, DocumentFormatNotSupportedException; The implementation of this method should return the ID of the document to be displayed in the context of ARender.\n Example inline implementation: here. Part 3: ARender configuration Build the JAR package via Maven, Gestion des dépendances The JAR file should incorporate the essential dependencies required for the connector to seamlessly integrate with the Document Management System (GED).\nSimilarly, the pom.xml file needs to include the necessary ARender dependencies to ensure the product functions correctly with the specified version. For an online example, please check this page\n $\u0026gt; mvn clean install Classic mode (Non-Docker) Docker Place the JAR in the lib\/ directory of ARender WEB-UI, Configure the use of the new URLParser developed as a bean by opening configurations\/arender-custom-server-integration.xml file, and add the below content: \u0026lt;bean id\u0026#34;sampleURLParser\u0026#34; class\u0026#34;com.arondor.arender.sample.connector.urlparsers.SampleURLParser\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;\/bean\u0026gt; Add the new connector, sampleUrlParser, in the list of connectors by updating the configurations\/arender-custom-server.properties file like below: arender.server.url.parsers.beanNamessampleUrlParser,DefaultURLParser,DocumentIdURLParser,FileattachmentURLParser,ExternalBeanURLParser,AlterContentParser,FallbackURLParser Configure the use of the new URLParser developed as a bean by creating a file named arender-custom-server-integration.xml, with the content below: \u0026lt;?xml version\u0026#34;1.0\u0026#34; encoding\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;beans default-lazy-init\u0026#34;true\u0026#34; default-autowire\u0026#34;no\u0026#34; xmlns\u0026#34;http:\/\/www.springframework.org\/schema\/beans\u0026#34; xmlns:xsi\u0026#34;http:\/\/www.w3.org\/2001\/XMLSchema-instance\u0026#34; xsi:schemaLocation\u0026#34;http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd\u0026#34;\u0026gt; \u0026lt;!-- xml imported by ARender Java Web Server side, please add any customization you wish to see loaded in this file--\u0026gt; \u0026lt;bean id\u0026#34;sampleURLParser\u0026#34; class\u0026#34;com.arondor.arender.sample.connector.urlparsers.SampleURLParser\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/beans\u0026gt; Add the new connector, sampleUrlParser, in the list of connectors by creating a file named arender-custom-server.properties, with the content below: arender.server.url.parsers.beanNamessampleUrlParser,DefaultURLParser,DocumentIdURLParser,FileattachmentURLParser,ExternalBeanURLParser,AlterContentParser,FallbackURLParser Update the docker-compose.yml adding the below content (please adapt the path with your configuration): services:ui:image:artifactory.arondor.cloud:5001\/arender-ui-springboot:${VERSION}container_name:uivolumes:- \u0026#34;\/home\/centos\/ar-deployment\/docker-compose\/arender-connector-${VERSION}.jar:\/home\/arender\/lib\/arender-connector-${VERSION}.jar\u0026#34;- \u0026#34;\/home\/centos\/ar-deployment\/docker-compose\/arender-custom-server-integration.xml:\/home\/arender\/configurations\/arender-custom-server-integration.xml\u0026#34;- \u0026#34;\/home\/centos\/ar-deployment\/docker-compose\/arender-custom-integration.xml:\/home\/arender\/configurations\/arender-custom-integration.xml\u0026#34; Part 4: Deployment and testing To test, follow these steps:\n Restart ARender. Open a new browser window and load the URL expected by the URLParser defined above. Example: http:\/\/localhost:8080\/?id1234 Expected Result: The desired document should be displayed in ARender. Debugging Refer to this dedicated ARender logs page for debugging information.\nGoing further - Annotation management Without specific configuration, ARender will store annotations on the ARender WEB-UI server\u0026rsquo;s file system. This is not suitable for a production environment.\nTherefore, you have two options:\n Use an existing annotation connector (e.g., a connector for storing annotations in a database). If this is your choice, you can use the JDBC connector: arondor-arender-jdbc-annotation. A dedicated documentation will be produced soon. Develop your own annotation connector. This can be useful for storing annotations close to the documents and inheriting their security. If this is your choice, follow the documentation below. Part 5: Annotation connector development Part 5.1: Create a new SerializedAnnotationContent class An online sample is available here.\nWhen creating your own annotation connector, you need to define how to retrieve and update annotations. To do this, ARender provides an API that defines two methods to implement: get() and update(..).\nThe main steps to initialize your annotation connector are described below:\n Define class variables. Implement the SerializedAnnotationContent Interface. Create the constructors. Implement the methods. Define class variables Two class variables are needed, the logger and the documentId.\nprivate static final Logger LOGGER Logger.getLogger(SampleSerializedAnnotationContent.class); private final DocumentId documentId; Implement the SerializedAnnotationContent Interface public class SampleSerializedAnnotationContent implements SerializedAnnotationContent { \/\/ Add your implementation here } Create the constructor A default, generic constructor based solely on the documentId:\npublic SampleSerializedAnnotationContent(DocumentId documentId) { this.documentId documentId; } Implement methods get Method\nThis method should return the list of Annotations of the document.\n@Override public InputStream get() throws InvalidAnnotationFormatException { if (documentId null) { throw new IllegalArgumentException(\u0026#34;Invalid null documentId provided !\u0026#34;); } \/\/ Add your implementation to get the Annotations by a call to your API to fetch Annotations } Update Method\nThis method takes a list of Annotations that has been updated and saved as a parameter.\nDefine here where and how to save these updated annotations.\n@Override public void update(InputStream inputStream) throws InvalidAnnotationFormatException, AnnotationCredentialsException, AnnotationNotAvailableException { if (get() null) { \/\/ Add your implementation to your API to create annotations in your repository } else { \/\/ Add your implementation to your API to update annotations in your repository } } Part 5.2: Create a new SerializedAnnotationContentAccessor class An online sample is available here.\nNote that you need to use the class defined above (SampleSerializedAnnotationContent) in the implementation, as detailed below:\npublic class SampleSerializedAnnotationContentAccessor implements SerializedAnnotationContentAccessor { private static final Logger LOGGER Logger.getLogger(SampleSerializedAnnotationContentAccessor.class); @Override public Collection\u0026lt;SerializedAnnotationContent\u0026gt; getAll(DocumentId documentId) throws AnnotationsNotSupportedException, InvalidAnnotationFormatException { LOGGER.debug(\u0026#34;getAll annotations for documentId: \u0026#34; \u002b documentId); List\u0026lt;SerializedAnnotationContent\u0026gt; annotations new ArrayList\u0026lt;SerializedAnnotationContent\u0026gt;(); annotations.add(new SampleSerializedAnnotationContent(documentId)); return annotations; } @Override public SerializedAnnotationContent getForModification(DocumentId documentId, Annotation annotation) throws AnnotationsNotSupportedException, InvalidAnnotationFormatException { LOGGER.debug(\u0026#34;get annotations for documentId: \u0026#34; \u002b documentId); return new SampleSerializedAnnotationContent(documentId); } } Part 6: ARender configuration Build the JAR package via Maven. Gestion des dépendances The JAR file should incorporate the essential dependencies required for the connector to seamlessly integrate with the Document Management System (GED).\nSimilarly, the pom.xml file needs to include the necessary ARender dependencies to ensure the product functions correctly with the specified version. For an online example, please check this page\n $\u0026gt; mvn clean install Place the JAR in the lib\/ directory of ARender WEB-UI, Configure the use of the new AnnotationAccessor developed above: configuration\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;sampleXFDFAnnotationAccessor\u0026#34; class\u0026#34;com.arondor.viewer.xfdf.annotation.XFDFAnnotationAccessor\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;contentAccessor\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.arender.sample.connector.annotationaccessors.SampleSerializedAnnotationContentAccessor\u0026#34;\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;annotationCreationPolicy\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationCreationPolicy\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;canCreateAnnotations\u0026#34; value\u0026#34;${arender.server.annotations.can.create}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;textAnnotationsSupportHtml\u0026#34; value\u0026#34;${arender.server.annotations.text.html.support}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;textAnnotationsSupportReply\u0026#34; value\u0026#34;${arender.server.annotations.text.reply.support}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;textAnnotationsSupportStatus\u0026#34; value\u0026#34;${arender.server.annotations.text.status.support}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;textAnnotationsCommentSupportReply\u0026#34; value\u0026#34;${arender.server.annotations.text.comment.reply.support}\u0026#34; \/\u0026gt; \u0026lt;!-- For each annotation, show a list of security levels to choose from --\u0026gt; \u0026lt;property name\u0026#34;annotationsSupportSecurity\u0026#34; value\u0026#34;${arender.server.annotations.text.security.support}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;availableSecurityLevels\u0026#34; ref\u0026#34;availableSecurityLevels\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationTemplateCatalog\u0026#34; ref\u0026#34;annotationTemplateCatalog\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; configurations\/arender-custom-server.properties arender.server.default.annotation.accessorsampleXFDFAnnotationAccessor Part 7: Deployment and testing To test, follow these steps:\n Restart ARender. Open a new browser window and load the URL expected by the URLParser defined above. Example: http:\/\/localhost:8080\/?id1234 The desired document should be displayed in ARender. Add an annotation to the document. Save. Expected Result: The annotation should be saved via the connector developed above. The annotation should be displayed on the document after saving or refreshing the page . Debugging Refer to this dedicated ARender logs page for debugging information.\n/p>p>connector/p>p>ecm/p>p>document/p>p>annotation/p>, url: https:\/\/docs.arender.io\/development\/connector\/ }, { value: Connectors, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/ }, { value: Default connector, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/default\/, label: p>This connector is provided as default. It is used for internal product mechanism. For these purposes, it can be used with following URL parameters:\n Parameter Description url Allow to supply a URL based on HTTP or FTP protocol uuid Used to visualize the id of a ARender document bean Specify use of a specific connector (Advanced level) Example Here are some examples:/p>p>This connector is provided as default. It is used for internal product mechanism. For these purposes, it can be used with following URL parameters:\n Parameter Description url Allow to supply a URL based on HTTP or FTP protocol uuid Used to visualize the id of a ARender document bean Specify use of a specific connector (Advanced level) Example Here are some examples:\n Open a WEB document\nhttp:\/\/{ARENDER_SERVER}\/ARender\/ARender.html?url...\n Open a document using a specific connector providing a user id and a security token\nhttp:\/\/{ARENDER_SERVER}\/ARender.html?beanmyConnector\u0026amp;user123456\u0026amp;token9GISU9SG4Z\n Configure authorized URLs The URI set in the url parameter is checked in order to authorized the connexion against a set of whitelisted URL.\nIn Rendition side, specifically in the Broker microservice, two properties are available to whitelist URL based on HTTP protocol and FTP protocol.\napplication.properties # Authorized documents paths with comma-separated authorized.paths..\/..\/samples\/,..\/samples\/,..\/..\/tmp\/,..\/tmp # Authorized URLs with comma-separated authorized.urls By default, no URL is authorized.\nFor example, to allow the ARender demo site to authorize the following URL document https:\/\/demo.arender.io\/docs\/demo\/ARender-doc-demo.pdf, we need to set the property like below :\napplication.properties authorized.urlshttps:\/\/demo.arender.io,demo.arender.io Note, that we added 2 URLs, one with the HTTP protocol and one without. Both are correct. But in the first one, we explicitly authorize HTTPS URL of the demo size.\nWith the property above, the following URL will open the document ARender-doc-demo.pdf in the ARender demo :\nhttps:\/\/www.demo.arender.io\/?urlhttps:\/\/demo.arender.io\/docs\/demo\/ARender-doc-demo.pdf\nConfigure Basic Authentication Since version 2023.1.0, a new property is available to configure URLs that need to be authenticated with a Basic Authentication. The property must be provided in the Broker microservice.\napplication.properties # Set a list of key-value pairs of base64-secrets for domains # The key and the value are separated by the character \u0026#39;@\u0026#39; # The key-value couples are separated by the character \u0026#39;,\u0026#39; # Example : domain1@secret1,domain2@secret2,domain3@secret3 arender.url.basic.auth /p>p>default/p>p>connector/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/default\/ }, { value: Default connector, path: https:\/\/docs.arender.io\/v4\/connector\/default\/, label: p>This connector is provided as default. It is used for internal product mechanism. For these purposes, it can be used with following URL parmaters:\n Parameter Description url Allow to supply a URL based on HTTP or FTP protocol uuid Used to visualize the id of a ARender document bean Specify use of a specific connector (Advanced level) Example Here are some examples:/p>p>This connector is provided as default. It is used for internal product mechanism. For these purposes, it can be used with following URL parmaters:\n Parameter Description url Allow to supply a URL based on HTTP or FTP protocol uuid Used to visualize the id of a ARender document bean Specify use of a specific connector (Advanced level) Example Here are some examples:\n Open a WEB document\nhttp:\/\/{ARENDER_SERVER}\/ARender\/ARender.html?url...\n Open a document using a specific connector providing a user id and a security token\nhttp:\/\/{ARENDER_SERVER}\/ARender.html?beanmyConnector\u0026amp;user123456\u0026amp;token9GISU9SG4Z\n The URI set in the url parameter is checked in order to authorized the connexion against a set of whitelisted URL.\nIn Rendition side, specifically in the Broker microservice, two properties are available to whitelist URL based on HTTP protocol and FTP protocol.\napplication.properties # Authorized documents paths with comma-separated authorized.paths..\/..\/samples\/,..\/samples\/,..\/..\/tmp\/,..\/tmp # Authorized URLs with comma-separated authorized.urls By default, no URL is authorized.\nFor example, to allow the ARender demo site to authorize the following URL document https:\/\/demo.arender.io\/docs\/demo\/ARender-doc-demo.pdf, we need to set the property like below :\napplication.properties authorized.urlshttps:\/\/demo.arender.io,demo.arender.io Note, that we added 2 URLs, one with the HTTP protocol and one without. Both are correct. But in the first one, we explicitly authorize HTTPS URL of the demo size.\nWith the property above, the following URL will open the document ARender-doc-demo.pdf in the ARender demo :\nhttps:\/\/www.demo.arender.io\/?urlhttps:\/\/demo.arender.io\/docs\/demo\/ARender-doc-demo.pdf\n/p>p>default/p>p>connector/p>, url: https:\/\/docs.arender.io\/v4\/connector\/default\/ }, { value: Document Accessor interface, path: https:\/\/docs.arender.io\/development\/connector\/documentaccessorinterface\/, label: p>DocumentAccessorHasFileName If you need to distinguish between document title and filename at download time, you will need to implement the interface com.arondor.viewer.rendition.api.document.DocumentAccessorHasFileName.\nString getFileName(); Implementing this interface to your documentAccessor allows you to download the file with a filename different to the document title./p>p>DocumentAccessorHasFileName If you need to distinguish between document title and filename at download time, you will need to implement the interface com.arondor.viewer.rendition.api.document.DocumentAccessorHasFileName.\nString getFileName(); Implementing this interface to your documentAccessor allows you to download the file with a filename different to the document title.\n/p>p>connector/p>p>interface/p>p>document/p>p>accessor/p>, url: https:\/\/docs.arender.io\/development\/connector\/documentaccessorinterface\/ }, { value: ECM general architecture, path: https:\/\/docs.arender.io\/learn\/architecture\/ecm-architecture\/, label: p>N1: ECM UI: has the responsibility to let the user choose which documents he wants to open in ARender, N2: Browser: will create the ARender frame using the URL provided by N1, N3: ARender WEB-UI: is Spring Boot module which contains the connector, N4: ECM Backend: contains API which ARender connector will interact with to fetch documents (and if needed fetch annotations and metadata and create new documents or new version of documents), N5: ARender Rendition: is Spring Boot module that will generate images, extract text and more./p>p> N1: ECM UI: has the responsibility to let the user choose which documents he wants to open in ARender, N2: Browser: will create the ARender frame using the URL provided by N1, N3: ARender WEB-UI: is Spring Boot module which contains the connector, N4: ECM Backend: contains API which ARender connector will interact with to fetch documents (and if needed fetch annotations and metadata and create new documents or new version of documents), N5: ARender Rendition: is Spring Boot module that will generate images, extract text and more. /p>, url: https:\/\/docs.arender.io\/learn\/architecture\/ecm-architecture\/ }, { value: Framework, path: https:\/\/docs.arender.io\/development\/framework\/, label: p>Welcome to the ARender Framework Integration Documentation. This guide will walk you through the process of integrating ARender into your application and learn how to interact with it.\nThis tutorial details the integration of ARender as well as the use of some basic features for the following frameworks:\nReact, Angular, Vuejs, Svelte and pure JavaScript.\nReact\n Angular\n Vue.js\n Svelte\n JavaScript\n However, ARender can be added to all types of JavaScript based applications, not only the frameworks shown here./p>p>Welcome to the ARender Framework Integration Documentation. This guide will walk you through the process of integrating ARender into your application and learn how to interact with it.\nThis tutorial details the integration of ARender as well as the use of some basic features for the following frameworks:\nReact, Angular, Vuejs, Svelte and pure JavaScript.\nReact\n Angular\n Vue.js\n Svelte\n JavaScript\n However, ARender can be added to all types of JavaScript based applications, not only the frameworks shown here.\nPrerequisites Before embarking on framework integration, ensure that you have a front-end application using React, Angular, Vue, Svelte, or plain JavaScript. The ARender installation must have been completed. You must have implemented one of the solutions detailed below to avoid CORS-type errors when communicating between the host application and ARender. Avoid CORS-type errors The host application will communicate with ARender using various functions provided in the window object of ARender, accessible from an iframe. However, browsers enforce the Same-Origin Policy, and if ARender and the host application are on different domains, the requests in question will be blocked by the browser. To avoid this, here are four possible solutions, detailed below, with different approaches:\n 1 - Using an nginx reverse proxy 2 - Installing ARender and the host application on the same server, same port, same protocol 3 - Disabling the browser\u0026rsquo;s CORS restrictions 4 - Communication via PostMessage 1) Using an nginx Reverse Proxy A reverse proxy acts as an intermediary between clients and servers and can inject the necessary CORS headers into the responses of requests. This facilitates cross-domain communications by making the proxy behave as the target server, thereby bypassing the security restrictions imposed by the Same-Origin Policy. In this example, we use nginx.\nDownload the latest LTS version from the nginx website (the test was conducted with nginx-1.26.2). After extraction, access the nginx config directory and modify the config.conf file with the following configuration:\n# Main Nginx configuration worker_processes 1; events { # Define the maximum number of simultaneous connections worker_connections 1024; } http { server { listen 8087; server_name localhost; # Reverse proxy for the host application location \/ { proxy_pass http:\/\/localhost:5173\/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } # Reverse proxy for ARender location \/arender-app\/ { proxy_pass http:\/\/localhost:8080\/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; # Add CORS header for ARender Application add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods \u0026#39;GET, POST, OPTIONS\u0026#39;; add_header Access-Control-Allow-Headers \u0026#39;Origin, Content-Type, Accept, Authorization\u0026#39;; } } } Replace the proxy-pass values for the host application and ARender with the URLs where the two applications are running. The reverse proxy is configured here to run on localhost:8087.\n Be sure to save the changes to the configuration file and start nginx (if using Windows, double-click on the nginx.exe executable). Note: If you make any further changes to the configuration file, you will need to stop the nginx process (in the Task Manager, right-click on nginx in Background Processes and click on End Task) and restart it (double-click on the executable). The configuration above allows access to your host application on the port localhost:8087 and to ARender on localhost:8087\/arender-app. This latter address should be used as the base URL for accessing ARender when embedding the iframe.\n2) Installing Both Applications on the Same Server, Same Port, Same Protocol In this scenario, to avoid errors when communicating between applications from different origins, both applications are placed on the same server and same port. For proper operation, both applications must also use the same protocol (HTTP or HTTPS).\nFor example, the host application will be located at http:\/\/host-app.com, and the ARender application will be located at http:\/\/host-app.com\/arender-app. ARender will then be considered a sub-application of the host application.\nHowever, it is important to keep in mind that, in terms of security, this is not necessarily the optimal solution for resource sharing and security: if one of the applications were compromised, the other would be as well.\n3) Disabling Browser CORS Restrictions This solution is quick and easy to implement. It involves launching your browser without CORS restrictions or using a browser extension to disable them. This is, of course, a very bad practice in a production environment, but it can be suitable for quick testing in local development.\n4) PostMessage It is possible to keep different domains for the host application and ARender by using the window.postMessage method, which allows secure cross-domain communication.\nTo do so, you must add the initialization script on the ARender side :\nfunction arenderjs_init(arenderjs_){ function receiveMessage(event) { if (event.origin ! \u0026#34;http:\/\/localhost:8080\u0026#34;) return; \/\/ Indicate ARender server url \/\/ Add here the actions to do on ARender side inside if conditions, for example : \tif (event.data.type \u0026#34;getCurrentDocumentId\u0026#34;) { event.source.postMessage( {type: \u0026#34;getCurrentDocumentIdResponse\u0026#34;, payload: getARenderJS().getCurrentDocumentId()}, event.origin, ); } } window.addEventListener(\u0026#34;message\u0026#34;, receiveMessage, false); } In this documentation, the script is named \u0026ldquo;arender-custom-starter-script.js\u0026rdquo;, but this name is customizable; you just need to adapt the URL accordingly on the host application\u0026rsquo;s side.\n If you have used the ARender HMI Spring Boot (JAR) installation file for the ARender installation, place the initialization script in the public directory. The URL to use in the next step will then be: \u0026ldquo;.\/arender-custom-starter-script.js\u0026rdquo;. If you use a Tomcat server, place the script in the scripts directory. The URL to use in the next step will then be: \u0026ldquo;.\/scripts\/arender-custom-starter-script.js\u0026rdquo;. This script must include the function arenderjs_init(arenderjs_), which will allow interaction with ARender. In this function, you can configure actions of your choice, notably adding an event listener for messages received via postMessage, as well as a receiveMessage(event) function, which will be called whenever a message is received.\nIn the receiveMessage function, a verification of the origin of the message is performed, and you should specify the URL of the host application\u0027s server (e.g., localhost:5173 in the example). The purpose of this verification is to reject any requests that do not originate from the host application.\nYou can then implement the desired actions based on the received message: The example above involves retrieving the ID of the document currently displayed in ARender. It is decided that to trigger this request, the data passed to postMessage should be \u0026ldquo;getCurrentDocumentId\u0026rdquo;. In the example above, a message is sent back via the postMessage function to the host application (identified by event.origin, which corresponds to http:\/\/localhost:5173), with data in the form of a JSON object. The JSON includes a type for identifying the message on the host application\u0026rsquo;s side and a payload with the corresponding ID, retrieved using the getARenderJS().getCurrentDocumentId() function provided by ARender. You can, of course, structure this JSON as you wish, or even replace it with a simple string.\nNote: During initialization script testing, ensure that ARender has been restarted with the updated version of the script. Don\u0026rsquo;t hesitate to use console.log() to verify the values when not seeing any difference.\nOn the host application\u0026rsquo;s side, you will also need to set up an event listener for postMessage with an associated function. Note: If you choose this solution, the following steps should be performed after implementing the iframe, described on the next page.\nEach interaction with the window object of the iframe described in the documentation will need to be adapted as postMessages exchanges, as window is not directly accessible from the host application in this scenario.\nThis time, the implementation will vary depending on the framework used, as shown below. Please create the files and components needed for your project and integrate the iframe as explained in the next page, then come back here to adapt them to postMessages as shown below.\n React Angular VueJs Svelte JavaScript In the component that integrates your iframe (see next page), add this code:\nuseEffect(() \u0026gt; { const handleIframeResponseMessage (event) \u0026gt; { \/\/ Check if the origin of the postMmessage is ARender (adapt the URL to your configuration) and do not process the message if it is not the case if (event.origin ! \u0026#34;http:\/\/localhost:8080\u0026#34;) { console.warn(\u0026#34;Unsafe origin: the message was ignored\u0026#34;); return; } \/\/ Add some if conditions to adapt the response according to the value of event.data \/\/ For example : if (event.data.type \u0026#34;getCurrentDocumentIdResponse\u0026#34;) { console.log(\u0026#34;Current document id\u0026#34;, event.data.payload) } }; \/\/ Event listener creations for postMessage messages. window.addEventListener(\u0026#34;message\u0026#34;, handleIframeResponseMessage); \/\/ This return allows the subscription to be closed when the react component unloads. return () \u0026gt; { window.removeEventListener(\u0026#34;message\u0026#34;, handleIframeResponseMessage); }; }, ); \/\/ Function to send a postMessage to ask for the id of the currently loaded document. function testCallUsingPostMessage() { if (iframeRef.current) { iframeRef.current.contentWindow.postMessage( {type:\u0026#34;getCurrentDocumentId\u0026#34;}, \u0026#34;http:\/\/localhost:8080\/\u0026#34;); } } You also need to modify the URL specified in the iframe so that the initialization script is taken into account, if it hasn\u0026rsquo;t been done in the parameters file, and add, for example, a button to test the function:\n\u0026lt;iframe ref{iframeRef} title\u0026#39;integrated-arender\u0026#39; id\u0026#39;arender-iframe\u0026#39; src\u0026#39;http:\/\/localhost:8080\/arondor-arender-hmi\/?arenderjs.startupScriptscripts\/arender-custom-starter-script.js\u0026#39; allow\u0026#39;microphone\u0026#39; \/\u0026gt; \u0026lt;button className\u0026#34;button\u0026#34; onClick{() \u0026gt; testCallUsingPostMessage()}\u0026gt;testCallUsingPostMessage\u0026lt;\/button\u0026gt; In Angular, you can use a service to manage the creation and removal of the event listener, messageHandlerService.ts:\nimport { Injectable } from \u0026#39;@angular\/core\u0026#39;; @Injectable({ providedIn: \u0026#39;root\u0026#39;, }) export class MessageHandlerService { private messageListener?: (event: MessageEvent) \u0026gt; void; addMessageListener(listener: (event: MessageEvent) \u0026gt; void): void { this.messageListener listener; window.addEventListener(\u0026#39;message\u0026#39;, this.messageListener); } removeMessageListener(): void { if (this.messageListener) { window.removeEventListener(\u0026#39;message\u0026#39;, this.messageListener); this.messageListener undefined; } } } Then, update arender.component.ts this way :\nimport { Component, ElementRef, ViewChild } from \u0026#39;@angular\/core\u0026#39;; import { MessageHandlerService } from \u0026#39;..\/messageHandlerService\u0026#39;; @Component({ selector: \u0026#39;app-arender\u0026#39;, standalone: false, templateUrl: \u0026#39;.\/arender.component.html\u0026#39;, styleUrl: \u0026#39;.\/arender.component.css\u0026#39; }) export class ArenderComponent { @ViewChild(\u0026#39;iframeRef\u0026#39;, { static: false }) iframeRef!: ElementRef\u0026lt;HTMLIFrameElement\u0026gt;; \/\/ Référence à l\u0026#39;iframe arenderIsDisplayed: boolean true; constructor(private messageHandler: MessageHandlerService) {} ngOnInit(): void { const handleIframeResponseMessage (event: MessageEvent) \u0026gt; { \/\/ Check event origin if (event.origin ! \u0026#34;http:\/\/localhost:8080\u0026#34;) return; console.log(\u0026#34;event received\u0026#34;, event.data) if (event.data.type \u0026#39;getCurrentDocumentIdResponse\u0026#39;) { console.log(\u0026#39;Current document id\u0026#39;, event.data.payload); } }; this.messageHandler.addMessageListener(handleIframeResponseMessage); } ngOnDestroy(): void { this.messageHandler.removeMessageListener(); } testCallUsingPostMessage(): void { if (this.iframeRef \u0026amp;\u0026amp; this.iframeRef.nativeElement.contentWindow) { this.iframeRef.nativeElement.contentWindow.postMessage( { type: \u0026#39;getCurrentDocumentId\u0026#39; }, \u0026#39;http:\/\/localhost:8080\/\u0026#39; ); } } } Finally, in the arender.component.html, add the initialization script url as a parameter to the iframe url :\n\u0026lt;iframe #iframeRef class\u0026#34;iframe\u0026#34; class.hidden\u0026#34;!arenderIsDisplayed\u0026#34; title\u0026#34;integrated-arender\u0026#34; id\u0026#34;arender-iframe\u0026#34; src\u0026#34;http:\/\/localhost:8080\/arondor-arender-hmi\/?arenderjs.startupScriptscripts\/arender-custom-starter-script.js\u0026#34; allow\u0026#34;microphone\u0026#34; \u0026gt;\u0026lt;\/iframe\u0026gt; \u0026lt;button (click)\u0026#34;testCallUsingPostMessage()\u0026#34;\u0026gt;Test call using postMessage\u0026lt;\/button\u0026gt; Don\u0026rsquo;t forget to modify the ARender initialization script with the port of your Angular application (e.g., localhost:4200).\n In the component that integrates your iframe (see next page), add this code:\nconst iframeRef ref(null) onMounted(() \u0026gt; { const handleIframeResponseMessage (event) \u0026gt; { \/\/ Add some if conditions to adapt the response according to the value of event.data \/\/ For example : if (event.data.type \u0026#34;getCurrentDocumentIdResponse\u0026#34;) { console.log(\u0026#34;Current document id\u0026#34;, event.data.payload) } }; \/\/ Event listener creations for postMessage messages. window.addEventListener(\u0026#34;message\u0026#34;, handleIframeResponseMessage); \/\/ Thir return allows the subscription to be closed when the react component unloads. return () \u0026gt; { window.removeEventListener(\u0026#34;message\u0026#34;, handleIframeResponseMessage); }; }); \/\/ Function to send a postMessage to ask for the id of the currently loaded document. function testCallUsingPostMessage() { if (iframeRef.value) { iframeRef.value.contentWindow?.postMessage( { type: \u0026#39;getCurrentDocumentId\u0026#39; }, \u0026#39;http:\/\/localhost:8080\u0026#39;, ) } } You also need to modify the URL specified in the iframe so that the initialization script is taken into account, if it hasn\u0026rsquo;t been done in the parameters file, and add, for example, a button to test the function:\n\u0026lt;template\u0026gt; \u0026lt;iframe ref\u0026#34;iframeRef\u0026#34; title\u0026#34;integrated-arender\u0026#34; id\u0026#34;arender-iframe\u0026#34; src\u0026#34;http:\/\/localhost:8080\/arondor-arender-hmi\/?arenderjs.startupScriptscripts\/arender-custom-starter-script.js\u0026#34; allow\u0026#34;microphone\u0026#34; \u0026gt;\u0026lt;\/iframe\u0026gt; \u0026lt;button @click\u0026#34;testCallUsingPostMessage\u0026#34;\u0026gt;testCallUsingPostMessage\u0026lt;\/button\u0026gt; \u0026lt;\/template\u0026gt; In the component that integrates your iframe (see next page), add this code:\nlet iframeRef; onMount(() \u0026gt; { const handleIframeResponseMessage (event) \u0026gt; { \/\/ Add here the if conditions to adapt the response according to the value of event.data \/\/ For example : if (event.data.type \u0026#34;getCurrentDocumentIdResponse\u0026#34;) { console.log(\u0026#34;Current document id\u0026#34;, event.data.payload) } }; \/\/ Creates the event listener for postMessages window.addEventListener(\u0026#34;message\u0026#34;, handleIframeResponseMessage); \/\/ This returns allows to close the subscription when unmounting the React component. return () \u0026gt; { window.removeEventListener(\u0026#34;message\u0026#34;, handleIframeResponseMessage); }; }); \/\/ Function to send a postMessage to ask for the currently loaded document function testCallUsingPostMessage() { if (iframeRef) { iframeRef.contentWindow?.postMessage( { type: \u0026#34;getCurrentDocumentId\u0026#34; }, \u0026#34;http:\/\/localhost:8080\u0026#34; ); } } You also need to modify the URL specified in the iframe so that the initialization script is taken into account, if it hasn\u0026rsquo;t been done in the parameters file, and add, for example, a button to test the function:\n\u0026lt;iframe bind:this{iframeRef} title\u0026#39;integrated-arender\u0026#39; id\u0026#39;arender-iframe\u0026#39; src\u0026#39;http:\/\/localhost:8080\/arondor-arender-hmi\/?arenderjs.startupScriptscripts\/arender-custom-starter-script.js\u0026#39; allow\u0026#39;microphone\u0026#39; \/\u0026gt; \u0026lt;button class\u0026#34;button\u0026#34; onclick{testCallUsingPostMessage}\u0026gt;testCallUsingPostMessage\u0026lt;\/button\u0026gt; In JavaScript, here is the procedure: Add an event listener to the script to receive messages, along with a callback function to process the received message:\n\/\/ Function to handle messages from iframe function handleIframeMessages(event) { if (event.origin ! \u0026#34;http:\/\/localhost:8080\u0026#34;) return; console.log(\u0026#34;Message received from iframe:\u0026#34;, event.data); if (event.data.type \u0026#39;getCurrentDocumentIdResponse\u0026#39;) { console.log(\u0026#39;Current Document ID:\u0026#39;, event.data.payload); } } \/\/ Add message listener window.addEventListener(\u0026#39;message\u0026#39;, handleIframeMessages); We then add a function to send a custom message :\n\/\/ Function to send a custom message to the iframe function sendCustomMessage() { if (iframe \u0026amp;\u0026amp; iframe.contentWindow) { iframe.contentWindow.postMessage( { type: \u0026#39;getCurrentDocumentId\u0026#39; }, \u0026#39;http:\/\/localhost:8080\/\u0026#39; ); } else { console.error(\u0026#39;Iframe or contentWindow is not accessible.\u0026#39;); } } And we add a button for the trigger (here, we add a function to create multiple buttons, which can be called for each button to be created). We should also remember to add the parameter to the URL to load the initialization script when ARender launches:\n\/\/ Dynamically add buttons if not present function addButton(id, text, clickHandler) { if (!document.getElementById(id)) { const button document.createElement(\u0026#39;button\u0026#39;); button.id id; button.textContent text; button.addEventListener(\u0026#39;click\u0026#39;, clickHandler); document.body.appendChild(button); } } addButton(\u0026#39;sendCustomMessageButton\u0026#39;, \u0026#39;Send Custom Message\u0026#39;, sendCustomMessage); setARenderUrl(\u0026#39;http:\/\/localhost:8080\/arondor-arender-hmi\/?arenderjs.startupScriptscripts\/arender-custom-starter-script.js\u0026#39;); \/\/ Set the URL /p>p>framework/p>p>react/p>p>reactjs/p>p>svelte/p>p>angular/p>, url: https:\/\/docs.arender.io\/development\/framework\/ }, { value: GET differences, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/comparison\/get-difference\/, label: p>This API allows you to request a textual comparison and retrieve a DocumentCompareResult.\nAPI technical description Endpoint:\nGET \/difference Query param:\n Attribute Type Required Description leftDocumentId String yes Id of the first document to compare. rightDocumentId String yes Id of the second document to compare. Response:\n Attribute Type Description documentCompareResult DocumentCompareResult DocumentCompareResult contains the result of the comparison./p>p>This API allows you to request a textual comparison and retrieve a DocumentCompareResult.\nAPI technical description Endpoint:\nGET \/difference Query param:\n Attribute Type Required Description leftDocumentId String yes Id of the first document to compare. rightDocumentId String yes Id of the second document to compare. Response:\n Attribute Type Description documentCompareResult DocumentCompareResult DocumentCompareResult contains the result of the comparison. Examples Retrieve a difference The call below generates a build request from two documents with IDs:\n left document id 123e4567-e89b-12d3-a456-426614174000 right document id b64_bm9yZS92SDMtMS0xMTh1735080237 curl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/difference?leftDocumentId123e4567-e89b-12d3-a456-426614174000\u0026amp;rightDocumentIdb64_bm9yZS92SDMtMS0xMTh1735080237\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; Response sample:\n{ \u0026#34;leftDocumentId\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;rightDocumentId\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;textChanges\u0026#34;: { \u0026#34;changeType\u0026#34;: \u0026#34;DELETE\u0026#34;, \u0026#34;fragments\u0026#34;: { \u0026#34;endOfLine\u0026#34;: true, \u0026#34;pageNumber\u0026#34;: 0, \u0026#34;text\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;type\u0026#34;: \u0026#34;DELETE\u0026#34; } , \u0026#34;left\u0026#34;: { \u0026#34;clickableDestination\u0026#34;: { \u0026#34;action\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;destination\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;position\u0026#34;: { \u0026#34;h\u0026#34;: 0, \u0026#34;w\u0026#34;: 0, \u0026#34;x\u0026#34;: 0, \u0026#34;y\u0026#34;: 0 } }, \u0026#34;font\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;fontSize\u0026#34;: 0, \u0026#34;individualWidths\u0026#34;: 0 , \u0026#34;pageNumber\u0026#34;: 0, \u0026#34;paragraphId\u0026#34;: 0, \u0026#34;position\u0026#34;: { \u0026#34;h\u0026#34;: 0, \u0026#34;w\u0026#34;: 0, \u0026#34;x\u0026#34;: 0, \u0026#34;y\u0026#34;: 0 }, \u0026#34;rightToLeftText\u0026#34;: true, \u0026#34;startTime\u0026#34;: 0, \u0026#34;text\u0026#34;: \u0026#34;string\u0026#34; }, \u0026#34;right\u0026#34;: { \u0026#34;clickableDestination\u0026#34;: { \u0026#34;action\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;destination\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;position\u0026#34;: { \u0026#34;h\u0026#34;: 0, \u0026#34;w\u0026#34;: 0, \u0026#34;x\u0026#34;: 0, \u0026#34;y\u0026#34;: 0 } }, \u0026#34;font\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;fontSize\u0026#34;: 0, \u0026#34;individualWidths\u0026#34;: 0 , \u0026#34;pageNumber\u0026#34;: 0, \u0026#34;paragraphId\u0026#34;: 0, \u0026#34;position\u0026#34;: { \u0026#34;h\u0026#34;: 0, \u0026#34;w\u0026#34;: 0, \u0026#34;x\u0026#34;: 0, \u0026#34;y\u0026#34;: 0 }, \u0026#34;rightToLeftText\u0026#34;: true, \u0026#34;startTime\u0026#34;: 0, \u0026#34;text\u0026#34;: \u0026#34;string\u0026#34; } } } /p>p>tutorial/p>p>differences/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/comparison\/get-difference\/ }, { value: Get started with the javascript API, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/js-api\/, label: p>Configuring a custom JavaScript file The JavaScript custom file must contain a function such as:\nfunction arenderjs_init(arenderjs_){ ... } This function is called by ARender at startup, the arenderjs argument is the JavaScript object collecting all the API functions, as provided by ARender.\nYou can configure the Javascript custom file to use within ARender by two different ways:\nUsing property arenderjs.startupScript The property arenderjs.startupScript, if defined, will be used by ARender to fetch the custom Javascript file and execute it when the interface is ready./p>p>Configuring a custom JavaScript file The JavaScript custom file must contain a function such as:\nfunction arenderjs_init(arenderjs_){ ... } This function is called by ARender at startup, the arenderjs argument is the JavaScript object collecting all the API functions, as provided by ARender.\nYou can configure the Javascript custom file to use within ARender by two different ways:\nUsing property arenderjs.startupScript The property arenderjs.startupScript, if defined, will be used by ARender to fetch the custom Javascript file and execute it when the interface is ready.\nThis property can be set in the profile file:\narenderjs.startupScriptscripts\/myarenderscript.js Or directly in the URL parameters:\nhttps:\/\/www.demo.arender.io\/?urlhttps:\/\/arender.io\/docs\/demo\/ARender-doc-demo.pdf\u0026amp;arenderjs.startupScriptscripts\/arenderJSPAPITest.js See the default profile jsapi-demo.properties (in the arondor-arender-hmi-spring-boot-2023.16.0.jar\\BOOT-INF\\classes\\ folder of the ARender Web-UI) for an example profile. Note that the JavaScript URL can be provided:\n as a relative URL: the URL is relative to the ARender Web-UI context root, for example https:\/\/www.demo.arender.io\/ as an absolute URL: in this case, beware that most modern browsers forbid having queries from multiple sources, because of the XSS limitations. The \u0026ldquo;Hollywood Principle\u0026rdquo; The other option is to define the init function arenderjs_init() in ARender\u0026rsquo;s parent context. Consider ARender in a IFrame inclusion; the calling application creates an IFrame with a URL pointing to ARender. In this case, the calling application only has to define the function:\nfunction arenderjs_init(arenderjs()){ ... } ARender will look at this function in its parent context, and call it if it exists.\n/p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/js-api\/ }, { value: Get started with the javascript API, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/js-api\/, label: p>Configuring a custom JavaScript file The JavaScript custom file must contain a function such as:\nfunction arenderjs_init(arenderjs_){ ... } This function is called by ARender at startup, the arenderjs argument is the JavaScript object collecting all the API functions, as provided by ARender.\nYou can configure the Javascript custom file to use within ARender by two different ways:\nUsing property arenderjs.startupScript The property arenderjs.startupScript, if defined, will be used by ARender to fetch the custom Javascript file and execute it when the interface is ready./p>p>Configuring a custom JavaScript file The JavaScript custom file must contain a function such as:\nfunction arenderjs_init(arenderjs_){ ... } This function is called by ARender at startup, the arenderjs argument is the JavaScript object collecting all the API functions, as provided by ARender.\nYou can configure the Javascript custom file to use within ARender by two different ways:\nUsing property arenderjs.startupScript The property arenderjs.startupScript, if defined, will be used by ARender to fetch the custom Javascript file and execute it when the interface is ready.\nThis property can be set in the profile file:\narenderjs.startupScriptscripts\/myarenderscript.js Or directly in the URL parameters:\nhttps:\/\/www.demo.arender.io\/?urlhttps:\/\/arender.io\/docs\/demo\/ARender-doc-demo.pdf\u0026amp;arenderjs.startupScriptscripts\/arenderJSPAPITest.js See the default profile jsapi-demo.properties (in the WEB-INF\/classes folder of the ARender war) for an example profile. Note that the JavaScript URL can be provided:\n as a relative URL: the URL is relative to the ARender Web-UI context root, for example https:\/\/www.demo.arender.io\/ as an absolute URL: in this case, beware that most modern browsers forbid having queries from multiple sources, because of the XSS limitations. The \u0026ldquo;Hollywood Principle\u0026rdquo; The other option is to define the init function arenderjs_init() in ARender\u0026rsquo;s parent context. Consider ARender in a IFrame inclusion; the calling application creates an IFrame with an URL pointing to ARender. In this case, the calling application only has to define the function:\nfunction arenderjs_init(arenderjs()){ ... } ARender will look at this function in its parent context, and call it if it exists.\n/p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/js-api\/ }, { value: How to, path: https:\/\/docs.arender.io\/learn\/how-to\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/ }, { value: Icons, path: https:\/\/docs.arender.io\/guides\/visual-design\/icon\/, label: p>Icon of ARender icon-all-docs icon-annotations icon-annotations-empty icon-bookmarks icon-hyperlinks icon-docbuilder icon-layers icon-add-bookmark icon-remove-bookmark icon-annotations-filter icon-search icon-cancel icon-create-doc-from-existing icon-save-in-ecm icon-reset-rotation icon-delete icon-download icon-save-to-ecm icon-close icon-create-file icon-file icon-sort-date-deactivated icon-sort-date-asc icon-sort-date-desc icon-sort-pers-deactivated icon-sort-pers-asc icon-sort-pers-desc icon-calendar icon-pers icon-check-mark icon-minimize-all icon-expand-all icon-sticky-pin icon-resize-left icon-resize-right icon-resize-left-hover icon-resize-right-hover icon-resize-top-hover icon-resize-bottom-hover icon-resize-top icon-resize-bottom icon-open-file icon-save icon-saved icon-text icon-freetext icon-highlight icon-square icon-circle icon-polygon icon-polyline icon-ink icon-line icon-measure icon-stamp icon-redact-text icon-redact-area icon-refresh-annotations icon-hide icon-show icon-lock icon-adjust-contrast icon-adjust-luminosity icon-turn-page-left icon-turn-page-right icon-turn-all-pages-left icon-turn-all-pages-right icon-reset-docbuilder icon-sync-scroll icon-go-to-first-page icon-go-to-previous-page icon-go-to-next-page icon-go-to-last-page icon-zoom-in-area icon-zoom-in-area-new-window icon-fit-to-height-size icon-fit-to-width-size icon-fit-to-page icon-full-screen icon-ellipsis icon-open-url icon-print icon-export-pdf icon-export-with-annotations icon-export-zip icon-manage-workspace icon-manage-toolbar icon-about icon-check icon-carret-up icon-carret-down icon-carret-left icon-carret-right icon-carret-up-thin icon-carret-down-thin icon-carret-left-thin icon-carret-right-thin icon-carret-unfold-all icon-carret-fold-all icon-bold icon-italic icon-underline icon-strikethrough icon-remove-style icon-exponent icon-subscript icon-text-color icon-background-color icon-border-color icon-line-thickness icon-line-style icon-exit icon-minus icon-plus icon-tail-square icon-tail-circle icon-tail-diamond icon-tail-line icon-tail-outline-arrow icon-tail-outline-arrow-invert icon-tail-solid-arrow icon-tail-solid-arrow-invert icon-head-square icon-head-circle icon-head-diamond icon-head-line icon-head-outline-arrow icon-head-outline-arrow-invert icon-head-solid-arrow icon-head-solid-arrow-invert icon-arrow-none icon-anchor icon-add-annotations icon-plugin-html icon-plugin-plume icon-copy icon-send icon-forward icon-reply icon-signature icon-signature-ok icon-signature-nok icon-document-altered icon-certificate-ok icon-certificate-unknown icon-certificate-nok icon-grid-view icon-list-view icon-lock-fill icon-download-comparison icon-screenshot icon-toggle-resize-anchors icon-status-accepted icon-status-canceled icon-status-refused icon-status-finished icon-back icon-previous-doc icon-next-doc icon-arender icon-mute icon-unmute icon-pause icon-play icon-time icon-compare icon-resize-square icon-folder icon-target icon-transparent icon-fileattachment icon-format-letter-accent icon-clear-search icon-sound icon-user-filter Font Awesome Description Font Awesome is a font and icon tool based on CSS, Less and Sass./p>p>Icon of ARender icon-all-docs icon-annotations icon-annotations-empty icon-bookmarks icon-hyperlinks icon-docbuilder icon-layers icon-add-bookmark icon-remove-bookmark icon-annotations-filter icon-search icon-cancel icon-create-doc-from-existing icon-save-in-ecm icon-reset-rotation icon-delete icon-download icon-save-to-ecm icon-close icon-create-file icon-file icon-sort-date-deactivated icon-sort-date-asc icon-sort-date-desc icon-sort-pers-deactivated icon-sort-pers-asc icon-sort-pers-desc icon-calendar icon-pers icon-check-mark icon-minimize-all icon-expand-all icon-sticky-pin icon-resize-left icon-resize-right icon-resize-left-hover icon-resize-right-hover icon-resize-top-hover icon-resize-bottom-hover icon-resize-top icon-resize-bottom icon-open-file icon-save icon-saved icon-text icon-freetext icon-highlight icon-square icon-circle icon-polygon icon-polyline icon-ink icon-line icon-measure icon-stamp icon-redact-text icon-redact-area icon-refresh-annotations icon-hide icon-show icon-lock icon-adjust-contrast icon-adjust-luminosity icon-turn-page-left icon-turn-page-right icon-turn-all-pages-left icon-turn-all-pages-right icon-reset-docbuilder icon-sync-scroll icon-go-to-first-page icon-go-to-previous-page icon-go-to-next-page icon-go-to-last-page icon-zoom-in-area icon-zoom-in-area-new-window icon-fit-to-height-size icon-fit-to-width-size icon-fit-to-page icon-full-screen icon-ellipsis icon-open-url icon-print icon-export-pdf icon-export-with-annotations icon-export-zip icon-manage-workspace icon-manage-toolbar icon-about icon-check icon-carret-up icon-carret-down icon-carret-left icon-carret-right icon-carret-up-thin icon-carret-down-thin icon-carret-left-thin icon-carret-right-thin icon-carret-unfold-all icon-carret-fold-all icon-bold icon-italic icon-underline icon-strikethrough icon-remove-style icon-exponent icon-subscript icon-text-color icon-background-color icon-border-color icon-line-thickness icon-line-style icon-exit icon-minus icon-plus icon-tail-square icon-tail-circle icon-tail-diamond icon-tail-line icon-tail-outline-arrow icon-tail-outline-arrow-invert icon-tail-solid-arrow icon-tail-solid-arrow-invert icon-head-square icon-head-circle icon-head-diamond icon-head-line icon-head-outline-arrow icon-head-outline-arrow-invert icon-head-solid-arrow icon-head-solid-arrow-invert icon-arrow-none icon-anchor icon-add-annotations icon-plugin-html icon-plugin-plume icon-copy icon-send icon-forward icon-reply icon-signature icon-signature-ok icon-signature-nok icon-document-altered icon-certificate-ok icon-certificate-unknown icon-certificate-nok icon-grid-view icon-list-view icon-lock-fill icon-download-comparison icon-screenshot icon-toggle-resize-anchors icon-status-accepted icon-status-canceled icon-status-refused icon-status-finished icon-back icon-previous-doc icon-next-doc icon-arender icon-mute icon-unmute icon-pause icon-play icon-time icon-compare icon-resize-square icon-folder icon-target icon-transparent icon-fileattachment icon-format-letter-accent icon-clear-search icon-sound icon-user-filter Font Awesome Description Font Awesome is a font and icon tool based on CSS, Less and Sass. This tool offers a wide variety of free icons.\nUse To customize your icons with Font Awesome you need to change the value of the “class name” of your button starting with “icon” to Font Awesome icon class name. Warning It is important to change only the value starting with “icon”.\nIt is necessary to have the class name “fa” or “fas” or “fa-solid” in the class name of the icon. Otherwise the class name of font-awesome will not be taken into account.\n You can find the available icons here: https:\/\/fontawesome.com\/icons\nExample Custom Example with the free text annotation button: \u0026lt;div class\u0026#34;tag code\u0026#34;\u0026gt; \u0026lt;div class\u0026#34;header\u0026#34;\u0026gt; \u0026lt;div class\u0026#34;title\u0026#34;\u0026gt;\u0026lt;span class\u0026#34;ti-layout-slider\u0026#34;\u0026gt;\u0026lt;\/span\u0026gt;arender-custom-integration.xml\u0026lt;\/div\u0026gt; \u0026lt;\/div\u0026gt; \u0026lt;div class\u0026#34;content\u0026#34;\u0026gt; \u0026lt;div class\u0026#34;highlight\u0026#34;\u0026gt;\u0026lt;pre style\u0026#34;background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4\u0026#34;\u0026gt;\u0026lt;code class\u0026#34;language-xml\u0026#34; data-lang\u0026#34;xml\u0026#34;\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;bean\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;id\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;addFreeTextAnnotationButton\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;class\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;constructor-arg\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;addFreeTextAnnotationButton\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;enabled\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;${topPanel.annotationMenu.freetext}\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;className\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;standardButton fa-solid fa-border-top-left toppanelButton\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;buttonGroup\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;topPanel\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;buttonTitle\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;ref\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;bean\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;labels#addFreetextAnnotation\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/property\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;visibilityForTopPanel\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;ref\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;bean\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;topPanelVisibilityMode\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/property\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;inactiveButtonHandler\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;ref\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;bean\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;quitAnnotationCreationAction\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/property\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;buttonHandler\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;ref\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;bean\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;freeTextCreationAction\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/property\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;supportShortCut\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;true\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;shortcut\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;bean\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;class\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;com.arondor.viewer.client.documentcontent.shortcuts.KeyboardShortCut\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;scope\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;prototype\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;ctrl\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;true\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;key\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;${shortcut.annotation.freetext.key}\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;enabled\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;${shortcut.annotation.freetext.enabled}\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/bean\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/property\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/bean\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;\/code\u0026gt;\u0026lt;\/pre\u0026gt;\u0026lt;\/div\u0026gt; \u0026lt;\/div\u0026gt; \u0026lt;\/div\u0026gt; !image(https:\/\/docs.arender.io\/images\/custom%20icon\/font_awesome.png) ## Material Design Icons ### Description Material Design Icons is a font and icon tool based on CSS, Less and Sass. This tool offers a wide variety of free icons. ### Use To customize your icons with Font Awesome you need to change the value of the “class name” of your button starting with “icon” to Font Awesome icon class name. \u0026lt;div class\u0026#34;tag warning\u0026#34;\u0026gt; \u0026lt;div class\u0026#34;header\u0026#34;\u0026gt; \u0026lt;div class\u0026#34;title\u0026#34;\u0026gt;\u0026lt;span class\u0026#34;ti-alert\u0026#34;\u0026gt;\u0026lt;\/span\u0026gt;Warning\u0026lt;\/div\u0026gt; \u0026lt;\/div\u0026gt; \u0026lt;div class\u0026#34;content\u0026#34;\u0026gt; \u0026lt;p\u0026gt;It is important to change only the value starting with “icon”.\u0026lt;\/p\u0026gt; \u0026lt;p\u0026gt;It is necessary to add the prefix “mdi-” before the name of your icon. You must also add “mdi” before your new “class name”.\u0026lt;\/p\u0026gt; \u0026lt;\/div\u0026gt; \u0026lt;\/div\u0026gt; You can find the available icons here: https:\/\/materialdesignicons.com\/ ### Example Example with the free text annotation button: \u0026lt;div class\u0026#34;tag code\u0026#34;\u0026gt; \u0026lt;div class\u0026#34;header\u0026#34;\u0026gt; \u0026lt;div class\u0026#34;title\u0026#34;\u0026gt;\u0026lt;span class\u0026#34;ti-layout-slider\u0026#34;\u0026gt;\u0026lt;\/span\u0026gt;arender-custom-integration.xml\u0026lt;\/div\u0026gt; \u0026lt;\/div\u0026gt; \u0026lt;div class\u0026#34;content\u0026#34;\u0026gt; \u0026lt;div class\u0026#34;highlight\u0026#34;\u0026gt;\u0026lt;pre style\u0026#34;background-color:#f0f3f3;-moz-tab-size:4;-o-tab-size:4;tab-size:4\u0026#34;\u0026gt;\u0026lt;code class\u0026#34;language-xml\u0026#34; data-lang\u0026#34;xml\u0026#34;\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;bean\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;id\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;addFreeTextAnnotationButton\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;class\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;constructor-arg\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;addFreeTextAnnotationButton\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;enabled\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;${topPanel.annotationMenu.freetext}\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;className\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;standardButton mdi mdi-text-shadow toppanelButton\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;buttonGroup\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;topPanel\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;buttonTitle\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;ref\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;bean\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;labels#addFreetextAnnotation\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/property\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;visibilityForTopPanel\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;ref\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;bean\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;topPanelVisibilityMode\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/property\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;inactiveButtonHandler\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;ref\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;bean\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;quitAnnotationCreationAction\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/property\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;buttonHandler\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;ref\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;bean\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;freeTextCreationAction\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/property\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;supportShortCut\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;true\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;shortcut\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;bean\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;class\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;com.arondor.viewer.client.documentcontent.shortcuts.KeyboardShortCut\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;scope\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;prototype\u0026amp;#34;\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;ctrl\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;true\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;key\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;${shortcut.annotation.freetext.key}\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;property\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;name\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;enabled\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309\u0026#34;\u0026gt;value\u0026lt;\/span\u0026gt;\u0026lt;span style\u0026#34;color:#c30\u0026#34;\u0026gt;\u0026amp;#34;${shortcut.annotation.freetext.enabled}\u0026amp;#34;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\/\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/bean\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/property\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;span style\u0026#34;color:#309;font-weight:bold\u0026#34;\u0026gt;\u0026amp;lt;\/bean\u0026amp;gt;\u0026lt;\/span\u0026gt; \u0026lt;\/code\u0026gt;\u0026lt;\/pre\u0026gt;\u0026lt;\/div\u0026gt; \u0026lt;\/div\u0026gt; \u0026lt;\/div\u0026gt; !image(https:\/\/docs.arender.io\/images\/custom%20icon\/mdi.png) /p>, url: https:\/\/docs.arender.io\/guides\/visual-design\/icon\/ }, { value: In Share, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/alfresco\/share\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/alfresco\/share\/ }, { value: Installation in IBM Websphere (recommended), path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/filenet\/filenet-was\/, label: p>Below the deployment of ARender HMI for FileNet in IBM WebSphere application server.\nIn our example, we are deploying the presentation server in an environment with:\n Operating System: Windows Server 2016 Filenet 5.5 Websphere 9.0.5.0 Application Server ARender HMI for FileNet version 2023.16.0 Retrieve the ARender HMI EAR archive for FileNet Using the username and password beforehand provided, you can retrieve the web application in EAR format here./p>p>Below the deployment of ARender HMI for FileNet in IBM WebSphere application server.\nIn our example, we are deploying the presentation server in an environment with:\n Operating System: Windows Server 2016 Filenet 5.5 Websphere 9.0.5.0 Application Server ARender HMI for FileNet version 2023.16.0 Retrieve the ARender HMI EAR archive for FileNet Using the username and password beforehand provided, you can retrieve the web application in EAR format here.\nWebSphere requirements Warning The version of websphere used here must have java 8 installed and activated. If you like, please follow the instructions here. Deployment of the EAR in IBM WebSphere Open a WebSphere console at https:\/\/serveur_websphere:9043\/ibm\/console\n Go in \u0026ldquo;Applications\u0026rdquo; tab, then click on \u0026ldquo;WebSphere enterprise applications\u0026rdquo;\n To launch installation, click on \u0026ldquo;Install\u0026rdquo; Choose the EAR path to deploy and click on \u0026ldquo;Next\u0026rdquo; To accept default parameters, click on \u0026ldquo;Next\u0026rdquo; Select webserver(s) and\/or server(s) of the Workplace, then click on \u0026ldquo;Next\u0026rdquo; To accept the parameters by default (virtual host: default_host), click on \u0026ldquo;Next\u0026rdquo; In recap window, click on \u0026ldquo;Finish\u0026rdquo; to begin the installation with these parameters after checking them Post setup Libraries loading order Websphere must be configured in parent-last which means it has to load its libraries after ARender.\n In the application list click on ARender 2023.0.X for FileNet 5.x\n Click on \u0026ldquo;Manage Modules\u0026rdquo; Click on ARender module Select in the drop down list « Class loader order »: « Classes loaded with local class loaded first (parent last) » Click on \u0026ldquo;OK\u0026rdquo; and save the modifications\n Start ARender application\n Installation in CPE is complete You can now access a Filenet document via a URL formed like this:\nhttp:\/\/{server_arender}:{port_arender}\/ARender\/?id{id}\u0026amp;objectStoreName{ObjectStoreName} 🧭 Load Balancing and Session Management for ARender on IBM WebSphere Note This section applies from ARender version 2023.12.0 and above. This section will guide you to implement a robust load balancing architecture for ARender HMI deployed on IBM WebSphere Application Server. This setup ensures optimal performance, session stability, and high availability by leveraging IBM HTTP Server (IHS) as the load balancer.\n🎯 Goals of the Implementation Efficiently distribute incoming HTTP requests between multiple WebSphere nodes (ARender HMI)\n Ensure session persistence (session stickiness) across requests.\n Enable configurable session cookie suffixes to support affinity routing.\n 🧩 Overview of the Architecture Role of IHS (IBM HTTP Server) IHS acts as a reverse proxy and load balancer, dispatching incoming requests to two WebSphere nodes hosting the ARender HMI (referred to as node1 and node2). Request routing behavior depends on the presence of a session cookie.\nCase 1: HTTP request does not contain a SESSION cookie 👉 IHS forwards the request to one of the nodes randomly or based on a defined weight.\nCase 2: HTTP request contains a SESSION cookie 👉 IHS extracts the suffix from the session cookie (after a separator :), and matches it against the CloneID values defined in the plugin-cfg.xml file.\n If a match is found, the request is routed to the corresponding node (session affinity).\n If no match is found, the request falls back to the behavior of case 1.\n ⚙️ Configuration on WebSphere Objective: Generate node-specific session cookies Each WebSphere node must append a custom suffix to the SESSION cookie to uniquely identify itself: \u0026lt;sessionId\u0026gt;:\u0026lt;cloneId\u0026gt;\nExamples:\n For node1: {cookieValue}:cloneId1\n For node2: {cookieValue}:cloneId2\n JVM Configuration Parameters In the WebSphere Admin Console:\nPath:\nServers \u0026gt; Server Types \u0026gt; WebSphere application servers \u0026gt; {Server Name} \u0026gt; Server Infrastructure \u0026gt; Java and Process Management \u0026gt; Process definition \u0026gt; Additional Properties \u0026gt; Java Virtual Machine\nAdd the following JVM options under Generic JVM arguments:\nFor node1: -Dcom.uxopian.arender.session.jvm.routenode1 -Dcom.uxopian.arender.session.jvm.route.separator: -Dcom.uxopian.arender.session.jvm.base64false For node2: -Dcom.uxopian.arender.session.jvm.routenode2 -Dcom.uxopian.arender.session.jvm.route.separator: -Dcom.uxopian.arender.session.jvm.base64false Explanation of parameters: Parameter Description com.uxopian.arender.session.jvm.route Specifies the suffix (node1, node2, etc.) to be appended to the random session ID (UUID). This suffix must match the CloneId attribute in plugin-cfg.xml com.uxopian.arender.session.jvm.route.separator Character used to separate the session ID and suffix (should be ‘:’ for IHS by default). If CloneSeparatorChange (plugin-cf.xml) is set to true character must be ‘\u002b’ com.uxopian.arender.session.jvm.base64 Set to false, the session ID is not base64-encoded (required by IHS for suffix extraction) SESSION cookie must look like this\nIn the above example, cloneId for node1 is node1\n🛠️ IHS Configuration (plugin-cfg.xml) The IHS configuration involves four main elements:\n VirtualHostGroup – defines listening addresses.\n ServerCluster – lists the backend WebSphere nodes.\n UriGroup – defines which URL patterns are managed.\n Route – links the above components.\n Example configuration: \u0026lt;ServerCluster CloneSeparatorChange\u0026#34;false\u0026#34; GetDWLMTable\u0026#34;true\u0026#34; IgnoreAffinityRequests\u0026#34;false\u0026#34; LoadBalance\u0026#34;Round-Robin\u0026#34; Name\u0026#34;ARender_ServerCluster\u0026#34; PostBufferSize\u0026#34;0\u0026#34; PostSizeLimit\u0026#34;-1\u0026#34; RemoveSpecialHeaders\u0026#34;true\u0026#34; RetryInterval\u0026#34;60\u0026#34; ServerIOTimeoutRetry\u0026#34;-1\u0026#34;\u0026gt; \u0026lt;Server CloneId\u0026#34;node1\u0026#34; Name\u0026#34;node1\u0026#34; ServerIOTimeout\u0026#34;900\u0026#34;\u0026gt; \u0026lt;Transport Hostname\u0026#34;localhost\u0026#34; Port\u0026#34;9080\u0026#34; Protocol\u0026#34;http\u0026#34;\/\u0026gt; \u0026lt;\/Server\u0026gt; \u0026lt;Server CloneId\u0026#34;node2\u0026#34; Name\u0026#34;node2\u0026#34; ServerIOTimeout\u0026#34;900\u0026#34;\u0026gt; \u0026lt;Transport Hostname\u0026#34;localhost\u0026#34; Port\u0026#34;9081\u0026#34; Protocol\u0026#34;http\u0026#34;\/\u0026gt; \u0026lt;\/Server\u0026gt; \u0026lt;\/ServerCluster\u0026gt; \u0026lt;UriGroup Name\u0026#34;ARender_UriGroup\u0026#34;\u0026gt; \u0026lt;Uri AffinityCookie\u0026#34;SESSION\u0026#34; AffinityURLIdentifier\u0026#34;jsessionid\u0026#34; Name\u0026#34;\/ARender\/*\u0026#34;\/\u0026gt; \u0026lt;\/UriGroup\u0026gt; \u0026lt;Route ServerCluster\u0026#34;ARender_ServerCluster\u0026#34; UriGroup\u0026#34;ARender_UriGroup\u0026#34; VirtualHostGroup\u0026#34;ARender_VirtualHostGroup\u0026#34;\/\u0026gt; Explanation: All URLs matching \/ARender\/* are routed to either node1 or node2.\n The SESSION cookie is used for session stickiness (affinity).\n Internal communications occur via ports 9080 and 9081 on localhost.\n ✅ Expected Outcome With this configuration:\n Each user session is consistently routed to the appropriate HMI node, based on the cookie suffix.\n Sessions remain stable and uninterrupted in a clustered environment.\n The system is extensible and supports future scalability.\n /p>p>standalone/p>p>hmi/p>p>configuration/p>p>filenet/p>p>ibm/p>p>websphere/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/filenet\/filenet-was\/ }, { value: Introduction, path: https:\/\/docs.arender.io\/what-is-arender\/introduction\/, label: p>How does ARender work ARender makes on the fly rendering of documents so that you no longer need to store multiple converted versions of a document in your ECM storage.\nIf you already possess these renderings, ARender can always make use of them and use the most optimized format for viewing the document.\nARender is built on two components:\n ARender UI: front end Java Web server that serves the Web Browser, and handle the end user requests./p>p>How does ARender work ARender makes on the fly rendering of documents so that you no longer need to store multiple converted versions of a document in your ECM storage.\nIf you already possess these renderings, ARender can always make use of them and use the most optimized format for viewing the document.\nARender is built on two components:\n ARender UI: front end Java Web server that serves the Web Browser, and handle the end user requests. ARender Rendition: backend Java Server: serves the renditions of documents and many other services using a REST API to the Web-UI server. More information in the architecture chapter.\nHow does the rendering of a document in ARender work If an end user wants to view a document, a request is sent to ARender. The front end server (ARender UI) will then parse the end user request and find IDs, and any additional information needed to fetch the document. The document is then sent to the Rendition server for rendering.\nIf the document is a native format for ARender (PDF, MP4) it will be quickly processed and sent back as (Images of the pages, Video) to the end user.\nIf the document requires a conversion, ARender will use its detection tools to find what type of document it is and convert it to one of the two native format. It will then be displayed.\nThe list of supported documents by ARender is extensible, and as long as a tool exist to convert it to one of our target native formats, ARender can handle the document.\nHow does ARender allow me to annotate documents ARender uses the XFDF standard introduced by Adobe to produce annotations that are compatible with Adobe format.\nThis format of storage, is our own internal structure and can be saved either in your ECM storage, or in a local file system, a database, etc\u0026hellip; The annotations are therefore never stored directly on your documents, and you can always view the original version. It requires a manual decision and action to produce a new version of a document in ARender in which the annotations are incorporated.\nAnnotation export into the native binary format of Adobe, FDF, is also available for wider compatibility. That way you are not stuck, with ARender, but we are truly glad that you are staying!\nHow does ARender handle the performance and document caching By default, and in order to not redo the same work multiple times, ARender stores a small document cache of one hour on the Rendition server.\nThis cache is automatically deleted and purged. For most use cases, you won\u0026rsquo;t have to change any values on this cache mechanism as it is sized correctly to your platform capacities.\nPlease take note that ARender will not produce in this regard a download request for the documents each time a user consult a document. If you wish to make audit trails based on your ECM downloads, please see the remaining of the ARender documentation to understand the Auditing possibilities ARender has to offer, on top of your ECM features.\nDiscover Seamless Integrations with ARender: Explore a multitude of pre-built integrations designed to enhance your document management experience. Our ready-to-use integrations include:\n IBM FileNet, Nuxeo, Alfresco, FlowerDocs. We also support various other Document Management Systems (DMS), and you can find the complete list of existing connectors here)\nTailor-Made solutions for your unique requirements: If your preferred DMS is not on the list or if you have specific requirements, ARender provides the flexibility to create your custom connector. Visit our dedicated documentation for detailed guidance on creating your personalized connector: documentation.\nEmpower your document management strategy with ARender’s versatile integrations and customizable solutions. Enhance collaboration, streamline workflows, and optimize your document-centric processes effortlessly.\n/p>, url: https:\/\/docs.arender.io\/what-is-arender\/introduction\/ }, { value: Logs, path: https:\/\/docs.arender.io\/guides\/exploitation\/logs\/, label: p>Where can I find log files? Log files trace information and errors about ARender usage.\nRendition The main log file can is arender-server.log located in Rendition-installation-folder\\modules\\RenditionEngine. It will contain the logs of all micro-services.\nThe start and stop of each other micro-services will be found in the following files:\n Rendition-installation-folder\\modules\\JNIPdfEngine\\arender-jnipdf.log Rendition-installation-folder\\modules\\PDFBoxEngine\\arender-pdfbox.log Rendition-installation-folder\\modules\\TaskConversion\\arender-taskconversion.log WEB-UI Zip packaging The main log file is located in the root of the WEB-UI package and named: arender-hmi-server./p>p>Where can I find log files? Log files trace information and errors about ARender usage.\nRendition The main log file can is arender-server.log located in Rendition-installation-folder\\modules\\RenditionEngine. It will contain the logs of all micro-services.\nThe start and stop of each other micro-services will be found in the following files:\n Rendition-installation-folder\\modules\\JNIPdfEngine\\arender-jnipdf.log Rendition-installation-folder\\modules\\PDFBoxEngine\\arender-pdfbox.log Rendition-installation-folder\\modules\\TaskConversion\\arender-taskconversion.log WEB-UI Zip packaging The main log file is located in the root of the WEB-UI package and named: arender-hmi-server.log.\nEAR packaging (IBM Websphere) ARender application logs can be found in the logs folder of WebSphere installation folder\n Example:\nC:\\Program Files\\IBMWebSphere\\AppServer\\profiles\\App\\Srv01\\logs\n /p>, url: https:\/\/docs.arender.io\/guides\/exploitation\/logs\/ }, { value: POST a comparison order, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/comparison\/order-comparison\/, label: p>This API allows you to request a comparison order and retrieve a ComparisonOrderId.\nAPI technical description Endpoint:\nPOST \/comparisons Body:\n Attribute Type Required Description leftDocumentId String yes Id of the first document to compare. rightDocumentId String yes Id of the second document to compare. fuzz String no Determine the accurate pixel comparison calculation. The value is between 0 and 100./p>p>This API allows you to request a comparison order and retrieve a ComparisonOrderId.\nAPI technical description Endpoint:\nPOST \/comparisons Body:\n Attribute Type Required Description leftDocumentId String yes Id of the first document to compare. rightDocumentId String yes Id of the second document to compare. fuzz String no Determine the accurate pixel comparison calculation. The value is between 0 and 100. highlightColor String no Color of the differences. The value is in hexadecimal without the \u0026lsquo;#\u0026rsquo; character, for example \u0026ldquo;ff0000\u0026rdquo; for red color. lowlightColor String no Color of the similarities. The value is in hexadecimal without the \u0026lsquo;#\u0026rsquo; character, for example \u0026ldquo;ffffff\u0026rdquo; for white color. Response:\n Attribute Type Description comparisonOrderId ComparisonOrderId Comparison order ID.\nThis can allow you to use other APIs like the one to retrieve some information about the comparison or to delete it. Examples Order Comparison The call below generates a comparison request of two documents already known from the rendition.\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/comparisons\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Content-Type: application\/json\u0026#39; \\ -d \u0026#39;{ \u0026#34;fuzz\u0026#34;: 0, \u0026#34;highlightColor\u0026#34;: \u0026#34;ff0000\u0026#34;\u0026#34;, \u0026#34;leftDocumentId\u0026#34;: \u0026#34;docId1\u0026#34;, \u0026#34;lowlightColor\u0026#34;: \u0026#34;ffffff\u0026#34;, \u0026#34;rightDocumentId\u0026#34;: \u0026#34;docId2\u0026#34; }\u0026#39; /p>p>tutorial/p>p>comparison/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/comparison\/order-comparison\/ }, { value: POST a conversion order, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/conversion\/order-conversion\/, label: p>This API allows you to request a conversion order to create a new document in an expected format.\nAPI technical description Endpoint:\nPOST \/conversions Body:\n Attribute Type Required Description documentId String yes Source document id. format String yes Target document format. Response:\n Attribute Type Description conversionOrderId ConversionOrderId conversion order ID.\nThis can allow you to use other APIs like the one to retrieve some information about the conversion or to delete it./p>p>This API allows you to request a conversion order to create a new document in an expected format.\nAPI technical description Endpoint:\nPOST \/conversions Body:\n Attribute Type Required Description documentId String yes Source document id. format String yes Target document format. Response:\n Attribute Type Description conversionOrderId ConversionOrderId conversion order ID.\nThis can allow you to use other APIs like the one to retrieve some information about the conversion or to delete it. Examples Convert a document The call below generates a conversion request for a document already known from the rendition.\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/conversions\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Content-Type: application\/json\u0026#39; \\ -d \u0026#39;{ \u0026#34;documentId\u0026#34;: \u0026#34;docId\u0026#34;, \u0026#34;format\u0026#34;: \u0026#34;pdf\u0026#34;, }\u0026#39; /p>p>tutorial/p>p>conversion/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/conversion\/order-conversion\/ }, { value: POST a transformation order, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/order-transformation\/, label: p>This API allows you to request a transformation order to create a new document in an expected format and according to transformation criteria.\nAPI technical description Endpoint :\nPOST \/transformations Body :\n Attribute Type Required Description format String yes Target document format transformationDetails List yes The list of transformation details annotations Annotations no Annotations correctly built according to the referenced documents Response :/p>p>This API allows you to request a transformation order to create a new document in an expected format and according to transformation criteria.\nAPI technical description Endpoint :\nPOST \/transformations Body :\n Attribute Type Required Description format String yes Target document format transformationDetails List yes The list of transformation details annotations Annotations no Annotations correctly built according to the referenced documents Response :\n Attribute Type Description transformationOrderId TransformationOrderId Transformation order ID.\nThis will can permit you to use other APIs like the one to retrieve some information about the transformation or to delete it. Examples Build a new document The call below generates a build request from two documents already known from the rendition. The output document will be a PDF containing pages 1 to 4 of document docId1 then page 1 of the same document and finally page 1 of document docId2.\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Content-Type: application\/json\u0026#39; \\ -d \u0026#39;{ \u0026#34;annotations\u0026#34;: null, \u0026#34;format\u0026#34;: \u0026#34;pdf\u0026#34;, \u0026#34;transformationDetails\u0026#34;: { \u0026#34;transformationElements\u0026#34;: { \u0026#34;documentId\u0026#34;: \u0026#34;docId1\u0026#34;, \u0026#34;pagesSelectionList\u0026#34;: { \u0026#34;maxPage\u0026#34;: 4, \u0026#34;minPage\u0026#34;: 1 }, { \u0026#34;maxPage\u0026#34;: 1, \u0026#34;minPage\u0026#34;: 1 } }, { \u0026#34;documentId\u0026#34;: \u0026#34;docId2\u0026#34;, \u0026#34;pagesSelectionList\u0026#34;: { \u0026#34;maxPage\u0026#34;: 1, \u0026#34;minPage\u0026#34;: 1 } } } }\u0026#39; Build multiple new documents The call below generates a build request from two documents already known from the rendition. Two documents will be generated : one PDF containing the page 1 of document docId1 and one PDF containing only the page 1 of the document docId2.\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Content-Type: application\/json\u0026#39; \\ -d \u0026#39;{ \u0026#34;annotations\u0026#34;: null, \u0026#34;format\u0026#34;: \u0026#34;pdf\u0026#34;, \u0026#34;transformationDetails\u0026#34;: { \u0026#34;transformationElements\u0026#34;: { \u0026#34;documentId\u0026#34;: \u0026#34;docId1\u0026#34;, \u0026#34;pagesSelectionList\u0026#34;: { \u0026#34;maxPage\u0026#34;: 1, \u0026#34;minPage\u0026#34;: 1 } } }, { \u0026#34;transformationElements\u0026#34;: { \u0026#34;documentId\u0026#34;: \u0026#34;docId2\u0026#34;, \u0026#34;pagesSelectionList\u0026#34;: { \u0026#34;maxPage\u0026#34;: 1, \u0026#34;minPage\u0026#34;: 1 } } } }\u0026#39; Burn annotations in a document The call below uses the same build request as in the previous example, but adds the following annotations:\n A \u0026ldquo;Square\u0026rdquo; type annotation from page 1 of document docId1 A \u0026ldquo;Freetext\u0026rdquo; type annotation from page 1 of the document docId2 A \u0026ldquo;Text\u0026rdquo; type annotation from page 1 of the document docId1 A \u0026ldquo;Line\u0026rdquo; type annotation from page 1 of the document docId2 The output document will be similar to the output of the previous example and will also contain the burnt annotations mentioned above.\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Content-Type: application\/json\u0026#39; \\ -d \u0026#39;{ \u0026#34;annotations\u0026#34;: { \u0026#34;annotations\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.annotation.api.SquareElemType\u0026#34;, \u0026#34;documentId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;docId1\u0026#34; }, \u0026#34;page\u0026#34;: 0, \u0026#34;position\u0026#34;: { \u0026#34;x\u0026#34;: 10.0, \u0026#34;y\u0026#34;: 10.0, \u0026#34;w\u0026#34;: 100.0, \u0026#34;h\u0026#34;: 100.0 }, \u0026#34;interiorColor\u0026#34;: { \u0026#34;r\u0026#34;: 0, \u0026#34;g\u0026#34;: 255, \u0026#34;b\u0026#34;: 0 } }, { \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.annotation.api.FreetextElemType\u0026#34;, \u0026#34;color\u0026#34;: { \u0026#34;r\u0026#34;: 0, \u0026#34;g\u0026#34;: 255, \u0026#34;b\u0026#34;: 255 }, \u0026#34;documentId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;docId2\u0026#34; }, \u0026#34;page\u0026#34;: 0, \u0026#34;position\u0026#34;: { \u0026#34;x\u0026#34;: 110.0, \u0026#34;y\u0026#34;: 110.0, \u0026#34;w\u0026#34;: 100.0, \u0026#34;h\u0026#34;: 20.0 }, \u0026#34;opacity\u0026#34;: 0.7, \u0026#34;contentsRichtext\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.annotation.api.RichtextElemType\u0026#34;, \u0026#34;value\u0026#34;: \u0026#34;\u0026lt;html xmlns\\\u0026#34;http:\/\/www.w3.org\/1999\/xhtml\\\u0026#34;\u0026gt;\u0026lt;body\u0026gt;\u0026lt;span style\\\u0026#34;font-size:16px\\\u0026#34;\u0026gt;This is a freetext\u0026lt;\/span\u0026gt;\u0026lt;\/body\u0026gt;\u0026lt;\/html\u0026gt;\u0026#34; }, \u0026#34;contents\u0026#34;: \u0026#34;This is a freetext\u0026#34;, \u0026#34;width\u0026#34;: 2.0, \u0026#34;defaultappearance\u0026#34;: \u0026#34;0 R 1 0 0\u0026#34; }, { \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.annotation.api.TextElemType\u0026#34;, \u0026#34;color\u0026#34;: { \u0026#34;r\u0026#34;: 250, \u0026#34;g\u0026#34;: 250, \u0026#34;b\u0026#34;: 0 }, \u0026#34;documentId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;docId1\u0026#34; }, \u0026#34;page\u0026#34;: 0, \u0026#34;position\u0026#34;: { \u0026#34;x\u0026#34;: 350.0, \u0026#34;y\u0026#34;: 200.0, \u0026#34;w\u0026#34;: 160.0, \u0026#34;h\u0026#34;: 50.0 }, \u0026#34;creator\u0026#34;: \u0026#34;Creator Name\u0026#34;, \u0026#34;creationDate\u0026#34;: 1667828859995, \u0026#34;opacity\u0026#34;: 1.0, \u0026#34;contentsRichtext\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.annotation.api.RichtextElemType\u0026#34;, \u0026#34;value\u0026#34;: \u0026#34;\u0026lt;html xmlns\\\u0026#34;http:\/\/www.w3.org\/1999\/xhtml\\\u0026#34;\u0026gt;\\n\u0026lt;body\u0026gt;\u0026lt;font face\\\u0026#34;Helvetica\\\u0026#34; size\\\u0026#34;2\\\u0026#34;\u0026gt;This a sticky note\u0026lt;\/font\u0026gt;\u0026lt;\/body\u0026gt;\u0026lt;\/html\u0026gt;\u0026#34; }, \u0026#34;contents\u0026#34;: \u0026#34;This a sticky note\u0026#34;, \u0026#34;icon\u0026#34;: \u0026#34;Note\u0026#34; }, { \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.annotation.api.LineElemType\u0026#34;, \u0026#34;color\u0026#34;: { \u0026#34;r\u0026#34;: 100, \u0026#34;g\u0026#34;: 100, \u0026#34;b\u0026#34;: 100 }, \u0026#34;documentId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;docId2\u0026#34; }, \u0026#34;page\u0026#34;: 0, \u0026#34;position\u0026#34;: { \u0026#34;x\u0026#34;: 350.0, \u0026#34;y\u0026#34;: 300.0, \u0026#34;w\u0026#34;: 150.0, \u0026#34;h\u0026#34;: 50.0 }, \u0026#34;contentsRichtext\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.annotation.api.RichtextElemType\u0026#34;, \u0026#34;value\u0026#34;: \u0026#34;\u0026lt;html xmlns\\\u0026#34;http:\/\/www.w3.org\/1999\/xhtml\\\u0026#34;\u0026gt;\u0026lt;body\u0026gt;\u0026lt;p class\\\u0026#34;arrowDistance\\\u0026#34;\u0026gt;1.84in\u0026lt;\/p\u0026gt;\u0026lt;\/body\u0026gt;\u0026lt;\/html\u0026gt;\u0026#34; }, \u0026#34;start\u0026#34;: { \u0026#34;x\u0026#34;: 350.0, \u0026#34;y\u0026#34;: 300.0 }, \u0026#34;end\u0026#34;: { \u0026#34;x\u0026#34;: 450.0, \u0026#34;y\u0026#34;: 350.0 }, \u0026#34;head\u0026#34;: \u0026#34;OPEN_ARROW\u0026#34;, \u0026#34;tail\u0026#34;: \u0026#34;NONE\u0026#34;, \u0026#34;width\u0026#34;: 2.0 } }, \u0026#34;format\u0026#34;: \u0026#34;pdf\u0026#34;, \u0026#34;transformationDetails\u0026#34;: { \u0026#34;transformationElements\u0026#34;: { \u0026#34;documentId\u0026#34;: \u0026#34;docId1\u0026#34;, \u0026#34;pagesSelectionList\u0026#34;: { \u0026#34;maxPage\u0026#34;: 4, \u0026#34;minPage\u0026#34;: 1 }, { \u0026#34;maxPage\u0026#34;: 1, \u0026#34;minPage\u0026#34;: 1 } }, { \u0026#34;documentId\u0026#34;: \u0026#34;docId2\u0026#34;, \u0026#34;pagesSelectionList\u0026#34;: { \u0026#34;maxPage\u0026#34;: 1, \u0026#34;minPage\u0026#34;: 1 } } } }\u0026#39; Add FDF annotations in a document The call below generates a request to add a \u0026ldquo;Square\u0026rdquo; type annotation on the document docId. The output document will be a PDF containing an FDF annotation.\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Content-Type: application\/json\u0026#39; \\ -d \u0026#39;{ \u0026#34;annotations\u0026#34;: { \u0026#34;annotations\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.annotation.api.SquareElemType\u0026#34;, \u0026#34;id\u0026#34;: \u0026#34;21ea93fe-ca56-4b25-9a6b-e8091d45fd35\u0026#34;, \u0026#34;creationDate\u0026#34;: 1667828859995, \u0026#34;flags\u0026#34; : { }, \u0026#34;documentId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;docId\u0026#34; }, \u0026#34;page\u0026#34;: 0, \u0026#34;position\u0026#34;: { \u0026#34;x\u0026#34;: 10.0, \u0026#34;y\u0026#34;: 10.0, \u0026#34;w\u0026#34;: 100.0, \u0026#34;h\u0026#34;: 100.0 }, \u0026#34;interiorColor\u0026#34;: { \u0026#34;r\u0026#34;: 0, \u0026#34;g\u0026#34;: 255, \u0026#34;b\u0026#34;: 0 }, \u0026#34;opacity\u0026#34;: 0.5, \u0026#34;height\u0026#34;: 90.0, \u0026#34;width\u0026#34;: 180.0 } }, \u0026#34;format\u0026#34;: \u0026#34;pdf-fdf\u0026#34;, \u0026#34;transformationDetails\u0026#34;: { \u0026#34;transformationElements\u0026#34;: { \u0026#34;documentId\u0026#34;: \u0026#34;docId\u0026#34; } } }\u0026#39; Merge several documents into one PDF The call below generates a document merge request. The output document will be a PDF containing the pages of document docId1 then those of document docId2.\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Content-Type: application\/json\u0026#39; \\ -d \u0026#39;{ \u0026#34;annotations\u0026#34;: null, \u0026#34;format\u0026#34;: \u0026#34;pdf\u0026#34;, \u0026#34;transformationDetails\u0026#34;: { \u0026#34;transformationElements\u0026#34;: { \u0026#34;documentId\u0026#34;: \u0026#34;docId1\u0026#34; }, { \u0026#34;documentId\u0026#34;: \u0026#34;docId2\u0026#34; } } }\u0026#39; Archive documents The call below generates a document merge request. The output document will be an archive (zip) containing the document docId1 which will be named documentTitle1 and the document docId2 which will be named documentTitle2.\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Content-Type: application\/json\u0026#39; \\ -d \u0026#39;{ \u0026#34;annotations\u0026#34;: null, \u0026#34;format\u0026#34;: \u0026#34;zip\u0026#34;, \u0026#34;transformationDetails\u0026#34;: { \u0026#34;transformationElements\u0026#34;: { \u0026#34;documentId\u0026#34;: \u0026#34;docId1\u0026#34;, \u0026#34;documentTitle\u0026#34;: \u0026#34;documentTitle1\u0026#34; }, { \u0026#34;documentId\u0026#34;: \u0026#34;docId2\u0026#34;, \u0026#34;documentTitle\u0026#34;: \u0026#34;documentTitle2\u0026#34; } } }\u0026#39; /p>p>tutorial/p>p>transformation/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/order-transformation\/ }, { value: POST Document, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/upload-document\/, label: p>This API allows you to upload a document.\nAPI Description Endpoint:\nPOST \/documents Query params:\n Variable Required Description documentId No The reference ID for the document documentTitle No The title of the document documentUrl No The URL of the document failOnUnsupported No Introduced in 2023.12.0 version. If the value is true or not specified, loading an unsupported document will return an error./p>p>This API allows you to upload a document.\nAPI Description Endpoint:\nPOST \/documents Query params:\n Variable Required Description documentId No The reference ID for the document documentTitle No The title of the document documentUrl No The URL of the document failOnUnsupported No Introduced in 2023.12.0 version. If the value is true or not specified, loading an unsupported document will return an error. If the value is false, loading an unsupported document will not return an error. Request body:\n Variable Description inputStream The input stream containing the document content Responses:\n Type Description DocumentId The ID of the document. A new documentId is generated if not provided in the query parameter Examples Upload a Document The following example uploads a document from a file named \u0026ldquo;example.pdf\u0026rdquo; without specifying a document title or URL.\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\u0026#39; \\ -H \u0026#39;accept: application\/json\u0026#39; \\ -H \u0026#39;Content-Type: application\/octet-stream\u0026#39; \\ --data-binary \u0026#39;@example.pdf\u0026#39; The following example uploads a document from URL.\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents?documentUrlhttps%3A%2F%2Fdemo.arender.io%2Fdocs%2Fdemo%2FPDFReference15_v5.pdf\u0026#39; \\ -H \u0026#39;accept: application\/json\u0026#39; \\ -H \u0026#39;Content-Type: application\/octet-stream\u0026#39; \\ -d \u0026#39;\u0026#39; /p>p>upload document/p>p>document/p>p>upload/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/upload-document\/ }, { value: Presentation server (Web UI), path: https:\/\/docs.arender.io\/installation\/kubernetes\/presentation\/, label: p>Introduction The presentation server is named \u0026ldquo;web-ui\u0026rdquo; in the Chart. To deploy the ARender presentation server set web-ui.enabled parameter to true.\nParameters The following table lists the configurable parameters of the ARender web UI subchart and their default values.\n Parameters Description Default global.imagePullSecrets Global Docker registry secret names as an array (does not add image pull secrets to deployed pods) web-ui./p>p>Introduction The presentation server is named \u0026ldquo;web-ui\u0026rdquo; in the Chart. To deploy the ARender presentation server set web-ui.enabled parameter to true.\nParameters The following table lists the configurable parameters of the ARender web UI subchart and their default values.\n Parameters Description Default global.imagePullSecrets Global Docker registry secret names as an array (does not add image pull secrets to deployed pods) web-ui.enabled Enable the presentation server deployment true web-ui.replicaCount Number of the pod replica to deploy 1 web-ui.autoscale.enabled Enable horitontal autoscaling of pods false web-ui.autoscale.maxReplicas Maximum number of the pod replica in the cluster 1 web-ui.autoscale.cpuLimit Percentage of CPU requested target to scale horizontally 80 web-ui.image.repository ARender UI image name artifactory.arondor.cloud:5001\/arender-ui web-ui.image.tag ARender UI image tag 2023.16.0 web-ui.image.pullPolicy ARender UI image pull policy Always web-ui.serviceAccount.create Specifies whether a service account should be created true web-ui.serviceAccount.name Name of the service account created. If not set defaulted to ARender UI fullname \u0027\u0027 web-ui.podSecurityContext ARender UI Pod security context {} web-ui.securityContext Container security context {} web-ui.service.type ARender UI service type ClusterIP web-ui.service.port ARender UI service port 80 web-ui.ingress.enabled Enable Ingress false web-ui.ingress.annotations Ingress annotations {} web-ui.ingress.hosts Ingress hosts web-ui.ingress.tls Tls config {} web-ui.rendition.hosts Rendition hosts (example: - http:\/\/rendition-hostname:8761) web-ui.resources ARender UI resources limits and requests {} web-ui.nodeSelector Node selector {} web-ui.environment Environment variables to pass to the container as a Map {} /p>p>kubernetes/p>p>helm/p>p>presentation/p>, url: https:\/\/docs.arender.io\/installation\/kubernetes\/presentation\/ }, { value: Presentation server (Web UI), path: https:\/\/docs.arender.io\/v4\/install\/kubernetes\/presentation\/, label: p>Introduction The presentation server is named \u0026ldquo;web-ui\u0026rdquo; in the Chart. To deploy the ARender presentation server set web-ui.enabled parameter to true.\nParameters The following table lists the configurable parameters of the ARender web UI subchart and their default values.\n Parameters Description Default global.imagePullSecrets Global Docker registry secret names as an array (does not add image pull secrets to deployed pods) web-ui./p>p>Introduction The presentation server is named \u0026ldquo;web-ui\u0026rdquo; in the Chart. To deploy the ARender presentation server set web-ui.enabled parameter to true.\nParameters The following table lists the configurable parameters of the ARender web UI subchart and their default values.\n Parameters Description Default global.imagePullSecrets Global Docker registry secret names as an array (does not add image pull secrets to deployed pods) web-ui.enabled Enable the presentation server deployment true web-ui.replicaCount Number of the pod replica to deploy 1 web-ui.autoscale.enabled Enable horitontal autoscaling of pods false web-ui.autoscale.maxReplicas Maximum number of the pod replica in the cluster 1 web-ui.autoscale.cpuLimit Percentage of CPU requested target to scale horizontally 80 web-ui.image.repository ARender UI image name artifactory.arondor.cloud:5001\/arender-ui web-ui.image.tag ARender UI image tag 4.8.21 web-ui.image.pullPolicy ARender UI image pull policy Always web-ui.serviceAccount.create Specifies whether a service account should be created true web-ui.serviceAccount.name Name of the service account created. If not set defaulted to ARender UI fullname \u0027\u0027 web-ui.podSecurityContext ARender UI Pod security context {} web-ui.securityContext Container security context {} web-ui.service.type ARender UI service type ClusterIP web-ui.service.port ARender UI service port 80 web-ui.ingress.enabled Enable Ingress false web-ui.ingress.annotations Ingress annotations {} web-ui.ingress.hosts Ingress hosts web-ui.ingress.tls Tls config {} web-ui.rendition.hosts Rendition hosts (example: - http:\/\/rendition-hostname:8761) web-ui.resources ARender UI resources limits and requests {} web-ui.nodeSelector Node selector {} web-ui.environment Environment variables to pass to the container as a Map {} /p>p>kubernetes/p>p>helm/p>p>presentation/p>, url: https:\/\/docs.arender.io\/v4\/install\/kubernetes\/presentation\/ }, { value: Profiles, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/visual\/profile\/, label: p>Introduction In ARender, a profile enabled the use of a specific interface configuration.\nThanks to the profiles feature, you can use specific CSS, hide\/show icons, modify panel width\u0026hellip;\nExisting profiles ARender is delivered with a commented configuration file:\n Nom Description configurations\/arender-custom-client.properties All commented configuration file offering all available configuration. Uncomment and modify the properties you want to use Add 1 or N profiles It is possible to a multiple specific profiles in order to dedicate interface configuration to users ou group of users./p>p>Introduction In ARender, a profile enabled the use of a specific interface configuration.\nThanks to the profiles feature, you can use specific CSS, hide\/show icons, modify panel width\u0026hellip;\nExisting profiles ARender is delivered with a commented configuration file:\n Nom Description configurations\/arender-custom-client.properties All commented configuration file offering all available configuration. Uncomment and modify the properties you want to use Add 1 or N profiles It is possible to a multiple specific profiles in order to dedicate interface configuration to users ou group of users.\nProperties are listed and commented in the file configurations\/arender-custom-client.properties of ARender Web-UI.\nSteps to follow to create a new profile Standalone Create a file named for example newProfile.properties Add to this file the properties you want to modify (for example: visualization.rotation.save.enabledtrue) Save the file and add it to the configurations folder of the ARender Web-UI jar Note To trigger the use of this specific profile, add to the URL the parameter props and the name of the profile (without its extension):\nhttp:\/\/localhost:8080\/?url..\/samples\/arender.pdf\u0026amp;propsnewProfile\n Docker Create a file named for example newProfile.properties Add to this file the properties you want to modify (for example: visualization.rotation.save.enabledtrue) Save the file. When using \u0026ldquo;docker run\u0026rdquo;, use a volume to place the file newProfile.properties in \/home\/arender\/ARenderConfiguration\/ Example of volume : docker run -e ARENDERSRV_ARENDER_SERVER_RENDITION_HOSTShttp:\/\/your_ip_rendition:8761 -v C:\\newProfile.properties:\/home\/arender\/ARenderConfiguration\/newProfile.properties -p 127.0.0.1:8080:8080 your_image_id Note To trigger the use of this specific profile, add to the URL the parameter props and the name of the profile (without its extension):\nhttp:\/\/localhost:8080\/?url..\/samples\/arender.pdf\u0026amp;propsnewProfile\n /p>p>configuration/p>p>profiles/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/visual\/profile\/ }, { value: Quickstart, path: https:\/\/docs.arender.io\/v4\/quickstart\/, label: p>ARender, view any documents, anywhere What is ARender ARender is an HTML5 viewer, allowing you to see and annotate 300\u002b document formats online directly in your browser.\nThe following browsers are supported:\n Safari 11\u002b Google Chrome Microsoft Edge Mozilla Firefox Internet Explorer 11\u002b Safari Mobile Chrome Android ARender is as well mobile friendly, as we have dedicated interfaces for mobile phones and tablets!\nYou can try ARender online right now, at this address: https:\/\/arender./p>p>ARender, view any documents, anywhere What is ARender ARender is an HTML5 viewer, allowing you to see and annotate 300\u002b document formats online directly in your browser.\nThe following browsers are supported:\n Safari 11\u002b Google Chrome Microsoft Edge Mozilla Firefox Internet Explorer 11\u002b Safari Mobile Chrome Android ARender is as well mobile friendly, as we have dedicated interfaces for mobile phones and tablets!\nYou can try ARender online right now, at this address: https:\/\/arender.io\/demo\nHow does ARender work ARender makes on the fly rendering of documents so that you no longer need to store multiple converted versions of a document in your ECM storage.\nIf you already possess those renderings, ARender can always make use of them and use the most optimized format for viewing the document.\nARender is built on two components:\n The front end Java Web server (referred as Web-UI server): serves the HTML application, and handle the end user requests. The backend Java Server (referred as Rendition server): serves the renditions of documents and many other services using a REST API to the Web-UI server. If you would like to dive in details on how the rendition server works, a presentation is available as a slideshow.\nHow does the rendering of a document in ARender work If an end user wants to consult a document, a request is sent to ARender. The front end server (Web-UI) will then parse the end user request and find IDs, and any additionnal information needed to fetch the document. The document is then sent to the Rendition server for rendering.\nIf the document is a native format for ARender (PDF, MP4) it will be quickly processed and sent back as (Images of the pages, Video) to the end user.\nIf the document requires a conversion, ARender will use its detection tools to find what type of document it is and convert it to one of the two native format. It will then be displayed.\nThe list of supported documents by ARender is extensible, and as long as a tool exist to convert it to one of our target native formats, ARender can handle the document.\nHow does ARender allows me to annotate documents ARender uses the XFDF standard introduced by Adobe to produce annotations that are compatible with Adobe format. When you annotate with ARender, your annotations are supported for many versions to come!\nThis format of storage, is our own internal structure and can be saved either in your ECM storage, or in a local file system, a database, etc\u0026hellip; The annotations are therefore never stored directly on your documents and you can always consult the original version. It requires a manual decision and action to produce a new version of a document in ARender in which the annotations are incorporated.\nWe as well offer exports of our annotations into the native binary format of Adobe, FDF, for wider compatibility. You are not stuck, with ARender, but we are truly glad that you are staying!\nHow does ARender handle the performance and document caching By default, and in order to not redo the same work multiple times, ARender stores a small document cache of one hour on the Rendition server.\nThis cache is automatically deleted and purged. For most use cases, you won\u0026rsquo;t have to change any values on this cache mechanism as it is sized correctly to your platform capacities.\nPlease take note that ARender will not produce in this regard a download request for the documents each time a user consult a document. If you wish to make audit trails based on your ECM downloads, please see the remaining of the ARender documentation to understand the Auditing possibilities ARender has to offer, on top of your ECM features.\nHow can I integrate my ECM with ARender We have many out of the box integration ready to be used: Alfresco, IBM ICN, ICM, FlowerDocs, and many other custom ECM!\nIf you do not find in the documentation how to integrate your ECM with ARender, please contact us and we will see with you if this ECM is not already handled by one of the many ARender partners.\nIf your ECM is made purely custom by your company, you can easily integrate ARender in an Iframe of your ECM, and control ARender using the extended Javascript API (full documentation available).\n/p>p>quickstart/p>p>general/p>, url: https:\/\/docs.arender.io\/v4\/quickstart\/ }, { value: Rendition, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/ }, { value: Rendition, path: https:\/\/docs.arender.io\/guides\/configurations\/rendition\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/rendition\/ }, { value: Rendition, path: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/ }, { value: Requirements, path: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/requirements\/, label: p>Operating system Category Requirement Windows Windows Server 2016 or higher Linux Kernel 2.6 or greater, glibc 2.14 or greater, minimal recommended version for Linux distributions (due to our software requirements): RedHat (7 or 8), CentOS (7), Debian (8), Ubuntu (14.04\u002b), Amazon Linux AMI (2016.09\u002b) Minimal hardware Category Minimum Advised Number of rendition server(s) 1 2 (for high availability) RAM 8GB 16GB CPU (vCPU) 4 8 CPU type 64Bits 64Bits Storage 20Go The maximum between 20Go and a storage where a full day of temporary files can be stored Port configuration The ports of the different micro-services need to be free to use and are as follows:/p>p>Operating system Category Requirement Windows Windows Server 2016 or higher Linux Kernel 2.6 or greater, glibc 2.14 or greater, minimal recommended version for Linux distributions (due to our software requirements): RedHat (7 or 8), CentOS (7), Debian (8), Ubuntu (14.04\u002b), Amazon Linux AMI (2016.09\u002b) Minimal hardware Category Minimum Advised Number of rendition server(s) 1 2 (for high availability) RAM 8GB 16GB CPU (vCPU) 4 8 CPU type 64Bits 64Bits Storage 20Go The maximum between 20Go and a storage where a full day of temporary files can be stored Port configuration The ports of the different micro-services need to be free to use and are as follows:\n Service Protocols Default listening port Service broker HTTP\/HTTPS 8761 Text handler HTTP 8899 Renderer HTTP 9091 Converter HTTP 19999 Software requirement Software Requirement Java Runtime JRE 1.8 64 bits Minimum, OpenJDK 11 advised. Oracle JDK are supported, JRE IBM J9 is unsupported. Warning If the JVM used is not 64 bits, the rendition will now stop its boot and warn in the logs\/console that the version of the JVM used is incorrect. Access rights Installation The user must have the following rights:\n Folder creation, Service creation. Launch The user must have the following rights:\n Read and execution for the files into the Rendition folder, Read and execution for third party softwares. Amazon Web Services (AWS) specific Ensure the role attached to the EC2 instance has permissions to describe the instance if it needs to be identified by a tag.\n/p>p>requirements/p>p>rendition/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/requirements\/ }, { value: Requirements, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/requirements\/, label: p>Port configuration The presentation server uses only the port configured by the application server in which it is deployed. We therefore recommend you to consult the documentation of your application server used.\nRecommendations The presentation server does not have any prerequisites of application system, it depends mainly on the software used like the application server, java \u0026hellip;\nWe therefore recommend to direct you to the publishers of these software but also to follow the site of OWASP which publishes regularly recommendations on the security of the application servers./p>p>Port configuration The presentation server uses only the port configured by the application server in which it is deployed. We therefore recommend you to consult the documentation of your application server used.\nRecommendations The presentation server does not have any prerequisites of application system, it depends mainly on the software used like the application server, java \u0026hellip;\nWe therefore recommend to direct you to the publishers of these software but also to follow the site of OWASP which publishes regularly recommendations on the security of the application servers.\nMinimal hardware Category Minimum Advised Number of presentation server(s) 1 Approximately the number of rendition server divided by two (example 4 rendition servers, therefore 2 presentation servers) RAM 1GB 2GB CPU type 64Bits 64Bits Application server Compatible applications servers (Java Servlet API 3.0 \u0026amp; Java 8 minimum required by ARender 4):\n Application server Validated version IBM WebSphere 9.0.5 Apache Tomcat 8.0 Jetty 8.1.21 Wildfly 10.1.0.Final Java Servlet API 3.1.0 and up are recommended (not required yet) in order to profit from the increased performance gains and the use of Websockets.\n/p>p>requirements/p>p>hmi/p>p>web ui/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/requirements\/ }, { value: Requirements, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/requirements\/, label: p>Architecture Each Rendition installation should be done on a dedicated server.\nOperating system Category Requirement Windows Windows Server 2016 or higher Linux Kernel 2.6 or greater, glibc 2.14 or greater, minimal recommended version for Linux distributions (due to our software requirements): RedHat (7 or 8), CentOS (7), Debian (8), Ubuntu (14.04\u002b), Amazon Linux AMI (2016.09\u002b) Minimal hardware Category Minimum Advised Number of rendition server(s) 1 2 (for high availability) RAM 8GB 16GB CPU (vCPU) 4 8 CPU type 64Bits 64Bits Storage 20Go The maximum between 20Go and a storage where a full day of temporary files can be stored Port configuration The ports of the different micro-services need to be free to use and are as follows:/p>p>Architecture Each Rendition installation should be done on a dedicated server.\nOperating system Category Requirement Windows Windows Server 2016 or higher Linux Kernel 2.6 or greater, glibc 2.14 or greater, minimal recommended version for Linux distributions (due to our software requirements): RedHat (7 or 8), CentOS (7), Debian (8), Ubuntu (14.04\u002b), Amazon Linux AMI (2016.09\u002b) Minimal hardware Category Minimum Advised Number of rendition server(s) 1 2 (for high availability) RAM 8GB 16GB CPU (vCPU) 4 8 CPU type 64Bits 64Bits Storage 20Go The maximum between 20Go and a storage where a full day of temporary files can be stored Port configuration The ports of the different micro-services need to be free to use and are as follows:\n Service Protocols Default listening port Service broker HTTP\/HTTPS 8761 Distant file storage HTTP 8081 Text handler HTTP 8899 Renderer HTTP 9091 Converter HTTP 19999 Software requirement Windows Linux Software Requirement Java Runtime JRE 1.8 64 bits Minimum, OpenJDK 11 advised. Oracle JDK are supported, JRE IBM J9 is unsupported. (Optional) Microsoft Office 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. Software Requirement Java Runtime JRE 1.8 64 bits Minimum, OpenJDK 11 advised. Oracle JDK are supported, JRE IBM J9 is unsupported. Warning If the JVM used is not 64 bits, the rendition will now stop its boot and warn in the logs\/console that the version of the JVM used is incorrect. Access rights For the installation The user must have the rights to create the rendition folder. The user must have the necessary rights to create a service. For the launch The user that runs the service needs to have access to the files into the Rendition folder and the required third party softwares, as well as execution rights.\nAntivirus configuration Deactivate the scan of ARender Rendition tmp folder.\n/p>p>requirements/p>p>rendition/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/requirements\/ }, { value: REST, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/ }, { value: Standalone, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/standalone\/, label: p>Below a standalone installation of the ARender Web-UI.\nNote To install on IBM FileNet systems, you can skip this page and directly go to: ARender installation on IBM FileNet. Warning Since ARender 2023.0.0, the deployment of ARender UI has changed. Please check the detailed upgrade documentation here. Prerequisites Minimal hardware Category Minimum Advised Number of Web-UI server(s) 1 The number of rendition server divided by two (example 4 rendition servers, therefore 2 Web-UI servers) RAM 1GB 2GB CPU type 64Bits 64Bits Software Software Requirement Java Runtime JRE 1./p>p>Below a standalone installation of the ARender Web-UI.\nNote To install on IBM FileNet systems, you can skip this page and directly go to: ARender installation on IBM FileNet. Warning Since ARender 2023.0.0, the deployment of ARender UI has changed. Please check the detailed upgrade documentation here. Prerequisites Minimal hardware Category Minimum Advised Number of Web-UI server(s) 1 The number of rendition server divided by two (example 4 rendition servers, therefore 2 Web-UI servers) RAM 1GB 2GB CPU type 64Bits 64Bits Software Software Requirement Java Runtime JRE 1.8 64 bits Minimum, OpenJDK 11 advised. Oracle JDK are supported, JRE IBM J9 and java 17 are not supported. ARender Rendition up \u0026amp; running The Rendition health page should be green, see the related documentation. If it is not the case, please install the Rendition following the related documentation. Installation Download installation files Using the username and password beforehand provided (contact arender-sales@arondor.com if you want an access) Download the zip file: Download ARender Web-UI Extract the zip content in the folder of your choice. (Let\u0026rsquo;s call it Web-UI-folder) The zip file contain web-ui service installation script but also removal and startup scripts\n Start ARender Web-UI Open a console and start ARender Web-UI with the command below Example java -jar Web-UI-folder\/arondor-arender-hmi-spring-boot-2023.16.0.jar Open a browser new window Example Access to http:\/\/localhost:8080 via a web browser. Note The URL to use should be built like this: http:\/\/{Web-UI-HostName}:{port-Web-UI}\/{ARenderContext}\/:\n {Web-UI-HostName}: the host name of the application server {port-Web-UI}: the application server port No local Rendition up\u0026amp;running You may have encountered the below error notification.\nIt may mean that:\n Either the local Rendition is not installed\/started In that case please go back to the following documentation the Rendition installation documentation. Either the Rendition is installed on another server In that case, please check to the documentation about arender.server.rendition.hosts property here: ARender Web-UI configuration. Install ARender Web-UI as a service Open a console with Administrator rights, Go to the Web-UI-folder Execute the right installation script like below: Windows Linux $\u0026gt; .\\ARenderHmiService-install.bat $\u0026gt; .\/ARenderHmiService-install.sh The service named ARenderHMIService should be created and started on port 8080.\n/p>p>standalone/p>p>hmi/p>p>configuration/p>p>Web-UI/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/standalone\/ }, { value: Standalone, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/ }, { value: Swagger, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/swagger\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/swagger\/ }, { value: Web UI, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/ }, { value: Web UI API, path: https:\/\/docs.arender.io\/v4\/apis\/web-ui\/, label: p>Get the document UUID To obtain a UUID that will be used to load your document, you must use the following GET call:\n{arender-web-ui_host}\/arendergwt\/openExternalDocument?urlhttps:\/\/arender.io\/docs\/demo\/ARender-doc-demo.pdf You get the UUID in response. The HTTP response must be 200 for a valid response.\nResponse example :\nb64_dXJsPWh0dHBzOi8vYXJlbmRlci5pby9kb2NzL2RlbW8vQVJlbmRlci1kb2MtZGVtby5wZGY To obtain an encrypted UUID, you need the following property :\nWEB-INF\/classes\/arender-server-custom-vanilla.properties arender.documentid.generator.beanNameencryptedDocumentIdGenerator Response example of encrypted UUID :\nbXX_IRwGhKdg4ij~wR~jcpA7NssSfEETwzMM338XuQBixdQbaJtFApJV5IPGEklglZXjDcDGQck1Rog_ Generating an image To generate a png image, use the following URL:/p>p>Get the document UUID To obtain a UUID that will be used to load your document, you must use the following GET call:\n{arender-web-ui_host}\/arendergwt\/openExternalDocument?urlhttps:\/\/arender.io\/docs\/demo\/ARender-doc-demo.pdf You get the UUID in response. The HTTP response must be 200 for a valid response.\nResponse example :\nb64_dXJsPWh0dHBzOi8vYXJlbmRlci5pby9kb2NzL2RlbW8vQVJlbmRlci1kb2MtZGVtby5wZGY To obtain an encrypted UUID, you need the following property :\nWEB-INF\/classes\/arender-server-custom-vanilla.properties arender.documentid.generator.beanNameencryptedDocumentIdGenerator Response example of encrypted UUID :\nbXX_IRwGhKdg4ij~wR~jcpA7NssSfEETwzMM338XuQBixdQbaJtFApJV5IPGEklglZXjDcDGQck1Rog_ Generating an image To generate a png image, use the following URL:\n{arender-web-ui_host}\/arendergwt\/imageServlet?uuidUUID\u0026amp;pagePosition0\u0026amp;descIM_1632_0 Parameter Description uuid The document Id in ARender pagePosition The page number (starts at 0) desc Starts with IM to inform that it is an image, then width of the image in pixel, then rotation in degree. Each parameter is always separated by _ Impression To start printing from the browser, use the following URL:\n{arender-web-ui_host}\/arendergwt\/printServlet?uuidUUID\u0026amp;descIM_1200_0\u0026amp;imagePrintStylewidth:800px;\u0026amp;pages1-19,\u0026amp;asPDFtrue Parameter Description uuid The document Id in ARender desc Starts with IM to inform that it is an image, then width of the image in pixel, then rotation in degree. Each parameter is always separated by _ . The parameter is ignored if the asPDF parameter is present with the value true or false imagePrintStyle Define the CSS style to add on each page of the document. The parameter is ignored if the asPDF parameter is present with the value true or false pages Defines the range of pages that will be printed. The parameter is ignored if the asPDF parameter is present with the value true or false asPDF The printing will be based on the document in PDF, so the document will have the pages to the dimensions of the document. Document layout Description Get the document layout\nURL {ARender_web-ui_host}\/arendergwt\/documentLayout?uuidUUID Request Method GET Parameters Parameter Description uuid The document Id in ARender Return value Data representing the layout in JSON format.\nExample :\n{ \u0026#34;type\u0026#34;:\u0026#34;com.arondor.viewer.client.api.document.DocumentPageLayout\u0026#34;, \u0026#34;documentId\u0026#34;: { \u0026#34;id\u0026#34;:\u0026#34;b64_I2RlZmF1bHQ\u0026#34; }, \u0026#34;documentTitle\u0026#34;:\u0026#34;ARender.pdf\u0026#34;, \u0026#34;mimeType\u0026#34;:\u0026#34;application\/pdf\u0026#34;, \u0026#34;pageDimensionsList\u0026#34;: { \u0026#34;width\u0026#34;:612, \u0026#34;height\u0026#34;:792, \u0026#34;rotation\u0026#34;:0, \u0026#34;dpi\u0026#34;:72, \u0026#34;pageLayers\u0026#34;:null }, { \u0026#34;width\u0026#34;:612, \u0026#34;height\u0026#34;:792, \u0026#34;rotation\u0026#34;:0, \u0026#34;dpi\u0026#34;:72, \u0026#34;pageLayers\u0026#34;:null } } Upload Description POST Used when uploading the document. Generates the provided document in cache. Use Apache\u0026rsquo;s ServletFileUpload package to upload documents.\n GET Check if the document is cached. Return status is 200 if cached, 404 otherwise.\nURL {ARender_web-ui_host}\/arendergwt\/uploadServlet?uuidUUID Request Method GET POST Parameters Parameter Description uuid The document Id in ARender Return value The document Id in ARender.\nDownload Description Downloads the document represented by the ID given in parameter.\nURL {ARender_web-ui_host}\/arendergwt\/downloadServlet?uuidUUID\u0026amp;sourceIdSRCID\u0026amp;titleTITLE Request Method GET Parameters Parameter Description uuid The document Id in ARender. sourceId The document source Id. (Used when downloading with annotations) title The title of the uploaded document. Return value The content of the document.\nDownload with compare Description Compares two documents passed in parameter then downloads the document representing the difference of the documents.\nURL {ARender_web-ui_host}\/arendergwt\/downloadServlet\/mergedWithCompareResult?leftLEFT\u0026amp;rightRIGHT Request Method GET Parameters Parameter Description left The id of the first document to compare. right The id of the second document to compare. Return value The content of the document representing the difference of the documents.\nXFDF Annotations Description GET Retrieves document-related annotations in XFDF format.\n POST Saves a given annotation file and associates it with the document. Use Apache\u0026rsquo;s ServletFileUpload package to upload documents.\nURL {ARender_web-ui_host}\/arendergwt\/servletXFDFAnnotations?uuidUUID\u0026amp;typeTYPE Request Method GET POST Parameters GET Parameter Description uuid The document Id in ARender. type Set to \u0026lsquo;fdf\u0026rsquo; to have a FDF format type. Empty or others values will set the format type to XFDF. POST Parameter Description uuid The document Id in ARender Return value The contents of the file representing the annotations.\nCSV Annotations Description Retrieves document-related annotations in CSV format.\nURL {ARender_web-ui_host}\/arendergwt\/servletCSVAnnotations?uuidUUID Request Method GET Parameters Parameter Description uuid The document Id in ARender Return value The contents of the file representing the annotations.\nWeather Description Retrieves and displays reachability test information for addresses matching the renditions services (like the broker). Default address: http:\/\/localhost:8761\/ The -1 return code means an address reachability failure.\nThe different addresses in the body of the request are separated by commas \u0026lsquo;,\u0026rsquo;.\nURL {ARender_web-ui_host}\/arendergwt\/weather?formatFORM Request Method GET Parameters Parameter Description format The type of format desired (by default html) Return value The list of tested addresses. -1.0 if address unreachable.\nHealth record Retrieves and displays the accessibility information of the micro services associated with the target addresses to be tested. These target addresses can be defined by the previous call to the weather via the PUT and POST methods. Accessibility information for micro services and their associated services is displayed. Information statuses are represented by these possible values: UP, COMPLETE, NONE, PARTIAL.\nDescription URL {ARender_web-ui_host}\/arendergwt\/health\/records Request Method GET Parameters Parameter Description check Two possible values \u0026ldquo;self\u0026rdquo; and \u0026ldquo;rendition\u0026rdquo;, the first allows to have a return status to 200 regardless of the number of effective services. Return value Accessibility information for micro services and their associated services is displayed. Return status is 200 if at least one service is available, 503 otherwise.\nDownload with annotations Downloads the current document with its annotations.\nDescription URL {ARender_web-ui_host}\/arendergwt\/downloadDocumentWithAnnotations Request Method GET Parameters Parameter Description operationName Type d\u0026rsquo;annotations voulu, \u0026lsquo;renderAnnotations\u0026rsquo; pour les annotations ARender par défaut, \u0026lsquo;renderFDFAnnotations\u0026rsquo; pour obtenir les annotations au format FDF. Return value The contents of the document as well as its annotations.\nDownload base 64 encoded Description Downloads the current document encoded in base 64.\nURL {ARender_web-ui_host}\/arendergwt\/downloadBase64EncodedDocument Request Method GET Parameters No parameters.\nReturn value The contents of the base 64 encoded file.\nEvict Description Evicts the document from the ARender cache.\nURL {ARender_web-ui_host}\/arendergwt\/evictDocument?uuidUUID Request Method GET Parameters Parameter Description uuid The document Id in ARender Return value No Return value.\n/p>p>API/p>p>APIs/p>, url: https:\/\/docs.arender.io\/v4\/apis\/web-ui\/ }, { value: What is ARender ?, path: https:\/\/docs.arender.io\/what-is-arender\/, label: p>ARender is a secure web viewer allowing you to view and annotate many different document formats on any device than runs a Web Browser.\nARender is mobile friendly, as we have dedicated interfaces for mobile phones and tablets. Try online: https:\/\/arender.io\/demo/p>p>ARender is a secure web viewer allowing you to view and annotate many different document formats on any device than runs a Web Browser.\nARender is mobile friendly, as we have dedicated interfaces for mobile phones and tablets. Try online: https:\/\/arender.io\/demo\n/p>, url: https:\/\/docs.arender.io\/what-is-arender\/ }, { value: Alfresco connector, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/alfresco\/, label: p>/p>p>/p>p>alfresco/p>p>connector/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/alfresco\/ }, { value: Alfresco connector, path: https:\/\/docs.arender.io\/v4\/connector\/alfresco\/, label: p>Introduction This article details the integration and installation of CMIS connector Arender. This covers the integration part in Alfresco and Web-UI configuration part.\nArchitecture Below a communication diagram of ARender deployed in an Alfresco context:\nNote that this connector uses CMIS protocol, so it can be used with any ECM that supports CMIS protocol\nARender Web-UI configuration Connexion between ARender and Alfresco ARender for Alfresco connector enabled communication between ARender and Alfresco Content Services (and Alfresco Process Services)./p>p>Introduction This article details the integration and installation of CMIS connector Arender. This covers the integration part in Alfresco and Web-UI configuration part.\nArchitecture Below a communication diagram of ARender deployed in an Alfresco context:\nNote that this connector uses CMIS protocol, so it can be used with any ECM that supports CMIS protocol\nARender Web-UI configuration Connexion between ARender and Alfresco ARender for Alfresco connector enabled communication between ARender and Alfresco Content Services (and Alfresco Process Services).\nBy default, ARender is configured to communicate with a local Alfresco using CMIS.\n To configure the CMIS connexion (editor recommandation) with a remote Alfresco, add the below property: arender-server-custom-alfresco.properties arender.server.alfresco.atom.pub.urlhttp:\/\/alfrescoHost\/alfresco\/api\/-default-\/cmis\/versions\/1.1\/atom Note Authentication will be done using an Alfresco ticket. To configure the SOAP connexion (editor recommandation) with a remote Alfresco, add the below properties: arender-server-custom-alfresco.properties arender.server.alfresco.use.soap.wstrue arender.server.alfresco.soap.ws.urlhttp:\/\/alfrescoHost\/alfresco\/cmisws\/cmis?wsdl arender.server.alfresco.useruserNameValue arender.server.alfresco.passwordpasswordValue Context path handling The context path is the path that’s used by applications (for example, Alfresco Share, SOLR, SharePoint, and others). If you want to deploy to a context path that isn’t \/alfresco, it needs to be specified with the following property:\narender.server.alfresco.contextmy-context-path By default, the context path is alfresco (for \/alfresco).\nAnnotations Details on annotation storage No configuration is needed for annotations storage in Alfresco.\nAnnotations will be stored as a child node of the document Node itself. Child node name is: cm:arender-annotations-v{version document}.\nDeactivate annotation migration Add the property hereafter if the below conditions are respected:\n There is no ARender annotation in Alfresco, Or, ARender annotations that exists in Alfresco have been created only with versions newer than the 4.0.9 arender-server-custom-alfresco.properties arender.server.alfresco.annotation.migrate.to.new.child.apifalse /p>p>alfresco/p>p>connector/p>, url: https:\/\/docs.arender.io\/v4\/connector\/alfresco\/ }, { value: APIs, path: https:\/\/docs.arender.io\/development\/apis\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/ }, { value: Architecture, path: https:\/\/docs.arender.io\/learn\/architecture\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/learn\/architecture\/ }, { value: Architecture in Alfresco, path: https:\/\/docs.arender.io\/learn\/architecture\/alfresco-architecture\/, label: p>N1: Alfresco UI: has the responsibility to let the Alfresco user choose which documents he wants to open in ARender, N2: Browser: will create the ARender frame using the URL provided by N1, N3: ARender WEB-UI: is Spring Boot module which contains the Alfresco connector, N4: Alfresco Backend: contains API which ARender connector will interact with to fetch documents (and if needed fetch annotations and metadata and create new documents or new version of documents), N5: ARender Rendition: will generate images, extract text and more./p>p> N1: Alfresco UI: has the responsibility to let the Alfresco user choose which documents he wants to open in ARender, N2: Browser: will create the ARender frame using the URL provided by N1, N3: ARender WEB-UI: is Spring Boot module which contains the Alfresco connector, N4: Alfresco Backend: contains API which ARender connector will interact with to fetch documents (and if needed fetch annotations and metadata and create new documents or new version of documents), N5: ARender Rendition: will generate images, extract text and more. Warning Your ECM port must be different from your ARender WEB-UI port. /p>, url: https:\/\/docs.arender.io\/learn\/architecture\/alfresco-architecture\/ }, { value: Architecture in IBM Filenet, path: https:\/\/docs.arender.io\/learn\/architecture\/filenet-architecture\/, label: p>N1: Filenet UI: has the responsibility to let the Filenet user choose which documents he wants to open in ARender, N2: Browser: will create the ARender frame using the URL provided by N1, N3: ARender WEB-UI: is an application server which contains ARender WEB-UI and the Filenet connector, N4: Filenet Backend: contains API which ARender connector will interact with to fetch documents (and if needed fetch annotations and metadata and create new documents or new version of documents), N5: ARender Rendition: will generate images, extract text and more./p>p> N1: Filenet UI: has the responsibility to let the Filenet user choose which documents he wants to open in ARender, N2: Browser: will create the ARender frame using the URL provided by N1, N3: ARender WEB-UI: is an application server which contains ARender WEB-UI and the Filenet connector, N4: Filenet Backend: contains API which ARender connector will interact with to fetch documents (and if needed fetch annotations and metadata and create new documents or new version of documents), N5: ARender Rendition: will generate images, extract text and more. /p>, url: https:\/\/docs.arender.io\/learn\/architecture\/filenet-architecture\/ }, { value: Architecture in M-Files, path: https:\/\/docs.arender.io\/learn\/architecture\/m-files-architecture\/, label: p>N1: M-Files UI: has the responsibility to let the M-Files user choose which documents he wants to open in ARender, N2: Browser: will create the ARender frame using the URL provided by N1, N3: ARender WEB-UI: is Spring Boot module which contains the M-Files connector, N4: M-Files Backend: contains API which ARender connector will interact with to fetch documents (and if needed fetch annotations and metadata and create new documents or new version of documents), N5: ARender Rendition: will generate images, extract text and more./p>p> N1: M-Files UI: has the responsibility to let the M-Files user choose which documents he wants to open in ARender, N2: Browser: will create the ARender frame using the URL provided by N1, N3: ARender WEB-UI: is Spring Boot module which contains the M-Files connector, N4: M-Files Backend: contains API which ARender connector will interact with to fetch documents (and if needed fetch annotations and metadata and create new documents or new version of documents), N5: ARender Rendition: will generate images, extract text and more. Contains M-Files connector too. /p>, url: https:\/\/docs.arender.io\/learn\/architecture\/m-files-architecture\/ }, { value: Architecture in Nuxeo, path: https:\/\/docs.arender.io\/learn\/architecture\/nuxeo-architecture\/, label: p>You can find the ARender architecture in Nuxeo here/p>p>You can find the ARender architecture in Nuxeo here\n/p>, url: https:\/\/docs.arender.io\/learn\/architecture\/nuxeo-architecture\/ }, { value: ARender for FileNet in Apache Tomcat Application Server, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/filenet\/filenet-tomcat\/, label: p>Below the deployment of ARender HMI for FileNet in Apache Tomcat.\nWarning Limitation: Authentication to IBM FileNet has to be configured with a technical account.\nThe consequences will be that:\n Documents\/Annotations\/Metadata will be fetched with the technical account, Annotations will have the name of the technical account. If the need is to propagate the authentication you can either use WebSphere as Application server (see the documentation here)./p>p>Below the deployment of ARender HMI for FileNet in Apache Tomcat.\nWarning Limitation: Authentication to IBM FileNet has to be configured with a technical account.\nThe consequences will be that:\n Documents\/Annotations\/Metadata will be fetched with the technical account, Annotations will have the name of the technical account. If the need is to propagate the authentication you can either use WebSphere as Application server (see the documentation here).\n In our example, we are deploying the presentation server in an environment with:\n Operating System: Windows Server 2016 Filenet 5.5 Apache Tomcat 9.0 ARender HMI for FileNet version 4.8.21 Retrieve the ARender HMI WAR for FileNet Using the username and password beforehand provided, you can retrieve the web application in EAR format here.\nConfiguration of ARender HMI WAR for FileNet Some additional configuration is needed in the ARender for FileNet WAR to be supported in Tomcat.\nUser context configuration Open the below file:\n arondor-arender-hmi-filenet-4.8.21.war\\WEB-INF\\classes\\arender-user-context.xml And replace the bean having the following id urlFilter by the following bean:\n\u0026lt;bean id\u0026#34;urlFilter\u0026#34; class\u0026#34;com.arondor.viewer.server.security.RequestParameterAuthenticationFilter\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;authenticationManager\u0026#34; ref\u0026#34;authenticationManager\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; Security configuration Remove the below file:\n arondor-arender-hmi-filenet-4.8.21.war\\WEB-INF\\lib\\arondor-arender-filenet-ce-4.8.21.jar\\META-INF\\web-fragment.xml Technical account configuration for the connection to FileNet Open the below file:\n arondor-arender-hmi-filenet-4.8.21.war\\WEB-INF\\classes\\arender-server-custom-filenet.properties And add the below content (change with the value matching your context):\n# Default authentication method is jaasObjectStoreProvider. To activate connect throught a technical account use loginPasswordObjectStoreProvider and set the right login and password below arender.server.filenet.authentication.methodloginPasswordObjectStoreProvider # Exemple of URL for jaasObjectStoreProvider: iiop:\/\/localhost:2809\/FileNet\/Engine and for loginPasswordObjectStoreProvider : http:\/\/localhost:9080\/wsi\/FNCEWS40MTOM\/ arender.server.filenet.ce.urlhttp:\/\/localhost:9080\/wsi\/FNCEWS40MTOM\/ arender.server.filenet.ce.loginloginToChange arender.server.filenet.ce.passwordpasswordToChange Add additional libraries Download the below JARs:\n xercesImpl version 2.11.0: download link. xml-apis version 1.4.01: download link. And place these two libraries into the following folder: arondor-arender-hmi-filenet-4.8.21.war\\WEB-INF\\lib.\n/p>p>standalone/p>p>hmi/p>p>configuration/p>p>filenet/p>p>apache/p>p>tomcat/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/filenet\/filenet-tomcat\/ }, { value: Classic Mode (Non-Docker), path: https:\/\/docs.arender.io\/installation\/standalone\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/ }, { value: Configuration, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/configuration\/, label: p>Configuration files of ARender Web-UI ARender configuration files are located in the configurations\/ folder of ARender Web-UI package.\n File name Details arender-custom-client.properties Custom ARender client properties file. Available properties are listed inside. Uncomment and modify the properties value to use. More information here: Profile arender-custom-server.properties Custom ARender server properties file. Available properties are listed inside. Uncomment and modify the properties value to use./p>p>Configuration files of ARender Web-UI ARender configuration files are located in the configurations\/ folder of ARender Web-UI package.\n File name Details arender-custom-client.properties Custom ARender client properties file. Available properties are listed inside. Uncomment and modify the properties value to use. More information here: Profile arender-custom-server.properties Custom ARender server properties file. Available properties are listed inside. Uncomment and modify the properties value to use. arender-custom-integration.xml Custom Spring Bean XML file. Add your custom XML client configuration in this file. arender-custom-server-integration.xml Custom Spring Bean XML file. Add your custom XML server configuration in this file. application.properties Custom Spring Boot properties file. Add your custom Spring Boot configuration in this file. The various properties available are listed in Spring\u0026rsquo;s online documentation. (File to create if needed). Rendition server definition In order to define one or several rendition servers, edit the arender-custom-server.properties configuration file as follows:\nconfigurations\/arender-custom-server.properties arender.server.rendition.hosts{rendition_server_1:8761\/},{rendition_server_2:8761\/},{rendition_server_n:8761\/} Note The value of \u0026quot;{rendition_server_x}\u0026quot; here has to be changed by the right rendition server address.\n(Don\u0026rsquo;t forget to reboot your Web-UI)\n Custom resource files of ARender Web-UI ARender custom resources files have to be put in the public\/ folder at the root of ARender Web-UI package.\n Example of externalization in public To add a .css file named test.css, place it in the public folder:\n\/configurations\/arender-custom-client.properties style.sheetcss\/arender-style.css,test.css XFDF annotation folder configuration A default folder is configured in ARender to saved annotations as XML files. The user that launch the application server has to have read and write rights on this folder.\nBy default, XFDF annotations are saved in a folder named ARenderAnnotations\/ created in the home folder of the user that launch the application server.\nWarning On Windows, if the application server is launched as a service (without any user configured), the folder will be created in C:\\Windows\\System32\\config\\systemprofile. To configure a specific folder,\n Either modify server properties in arender-custom-server.properties and modify the property arender.server.annotations.xfdf.localstorage.default.path with the wanted value. Either create a system property named arender.annotation.xfdf.localstorage.default.path and set its value with the needed folder path. Style sheet: ARender-mat.css Most of the ARender graphical components can be configured in the style sheet. Consult the file for more details.\nNote This stylesheet is related to default user profile. See the Configuration guide for more information. Configure cache sharing between ARender Web-UIs It is possible to configure the cache sharing between all Web-UIs by configuring HazelCast. It provides better support for the scalability of the Web-UIs thanks to its shared and distributed cache system.\nWarning This configuration should only be used if the environment is like below:\n No sticky session on the load-balancer on top of ARender Web-UIs The cache is shared between all Rendition servers using Hazelcast The Rendition tmp folder is shared between all Rendition server (Using NFS or Lustre FSx) To activate the cache feature you need to modify the arender-custom-server.properties like below:\narender-custom-server.properties # Defines the cache strategy to use. Valid values : ehCacheStrategy, hazelCastStrategy arender.server.cache.strategyhazelCastStrategy # Path of the hazelCast configuration file, if the value is empty then the default one in the classpath will be used. arender.server.cache.hazelCast.config.path # Types of routing table map (local only : Classic OR with Redis backup : Redis OR with Hazelcast backup : Hazelcast) # Possible values are : Classic, Redis or Hazelcast arender.server.routing.table.typeHazelcast See below the default Hazelcast configuration for ARender (arondor-arender-hmi-springboot-2023.16.0.jar\/BOOT-INF\/classes\/hazelcast.yaml):\nhazelcast.yaml hazelcast: map: documentAccessorsHMI: max-idle-seconds: 3600 eviction: eviction-policy: NONE max-size-policy: PER_NODE directDocumentMap: max-idle-seconds: 3600 eviction: eviction-policy: NONE max-size-policy: PER_NODE spring:oauth2:oauth2Authorized: eviction: eviction-policy: NONE max-size-policy: PER_NODE network: port: port: 5702 join: auto-detection: enabled: true rest-api: enabled: true endpoint-groups: CLUSTER_READ: enabled: true HEALTH_CHECK: enabled: true WAN: enabled: true DATA: enabled: true Warning For now the connectors supported by ARender have not yet undergone the necessary changes to support HazelCast.\nIf you have implemented your own connector, then you will need to make your DocumentAccessor properly serializable\/deserializable.\n /p>p>standalone/p>p>hmi/p>p>web ui/p>p>configuration/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/configuration\/ }, { value: Configuration, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/configuration\/, label: p>Microsoft Office configuration For Windows server with Microsoft Office ONLY\nIf you chose to use Microsoft Office with ARender, please follow the below instructions:\n Scripted installation Manual installation Download and execute the following zip file and execute runCheck.bat: AromsCheck Download and install the below softwares:\n .Net 4.5: https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id30653\n Microsoft Visual C\u002b\u002b redistributable 2010: https:\/\/www.microsoft.com\/en-US\/Download\/confirmation.aspx?id14632\n Microsoft Visual C\u002b\u002b redistributable 2008: https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id15336/p>p>Microsoft Office configuration For Windows server with Microsoft Office ONLY\nIf you chose to use Microsoft Office with ARender, please follow the below instructions:\n Scripted installation Manual installation Download and execute the following zip file and execute runCheck.bat: AromsCheck Download and install the below softwares:\n .Net 4.5: https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id30653\n Microsoft Visual C\u002b\u002b redistributable 2010: https:\/\/www.microsoft.com\/en-US\/Download\/confirmation.aspx?id14632\n Microsoft Visual C\u002b\u002b redistributable 2008: https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id15336\n Create the below system folder:\n C:\\Windows\\System32\\config\\systemprofile\\Desktop\n C:\\Windows\\SysWOW64\\config\\systemprofile\\Desktop\n Warning Launch the rendition using a local account - Administrator or not - (Services \u0026gt; ARender Rendition Service \u0026gt; Log On) that opens Microsoft Office without any issues nor without pop-ups. Pop-ups will hinder the piloted mode of Microsoft Office and will block the rendering process of the rendition server. In order to configure Excel file conversion, please check that the user launching Excel has also a default printer configured (as an example, the default printer that outputs XPS files) otherwise Excel won’t be able to do its work on pageSetup and won’t convert the documents. Please do not use as default printer the printer that is forwarded, this is a printer that is only here during remote desktop session and will stop working as soon as you leave the server Microsoft Office properties configuration in ARender It is possible to configure the rendering of Office documents. To do so, modify the file aroms.properties located in the folder: modules\\TaskConversion\\aroms2pdf of the Rendition installation.\nBelow the available properties:\n 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) Hazelcast configuration With the 4.5 version of ARender Hazelcast can be used in ARender to share the cache between all Rendition servers, if and only if, the cache directory is shared between the renditions.\nYou can find the complete documentation on the Hazelcast site.\nDetails on the default configuration The configuration file for Hazelcast is located on the rendition side in the document-service-broker resources. The path to find the configuration is ARender-Rendition-4.X.Y\\modules\\RenditionEngine\\rendition-engine-micro-service-4.X.Y.jar\\BOOT-INF\\classes\\hazelcast.yaml.\nDefault file: 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. rest-api The REST API is enabled by default with the enabled: true property. You can find more details on related Hazelcast documentation.\nendpoint-groups 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.\nCLUSTER_READ Allows access to the following endpoints :\n \/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 :\n \/hazelcast\/health\/node-state \/hazelcast\/health\/cluster-state \/hazelcast\/health\/cluster-safe \/hazelcast\/health\/migration-queue-size \/hazelcast\/health\/cluster-size \/hazelcast\/health\/ready Have custom configuration To customize the Hazelcast configuration, you will need to create your own hazelcast.yaml file and copy the configuration from the file ARender-Rendition-4.X.Y\\modules\\RenditionEngine\\rendition-engine-micro-service-4.X.Y.jar\\BOOT-INF\\classes\\hazelcast.yaml.\nVersion 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, you will need to modify the custom-setenv.bat file or the custom-setenv.sh file in order to specify the path of the new file to use. To do this, you must add the -Dhazelcast.config argument to the list of JVM arguments. By default, if the path specified is hazelcast.yaml then the path where the file should be placed is ARender-Rendition-4.X.Y\\modules\\RenditionEngine.\ncustom-setenv.bat set ARENDER_BROKER_JVM_ARGS-Djava.net.preferIPv4Stacktrue -Djava.net.preferIPv6Addressesfalse -Dloader.path\u0026#34;client_libs\/\u0026#34; -Dfile.encodingUTF-8 -Dhazelcast.confighazelcast.yaml Cache directory not shared between multiple renditions Disable detection of each instance You must disable the property, seen previously, of auto-detection. This property is disabled by default.\nConfigurate the Web-UI You must specify each host of each rendition in the Web-UI server configuration. The distribution will be made by the Web-UI according to the weather of the renditions.\nConfiguration details can be found on the dedicated page.\nCache directory shared between several renditions Hazelcast port opening By default, the port for Hazelcast is 5701. For communication between machines, you must open the hazelcast port for each rendition.\nEnable detection of each instance You must activate the property, seen previously, of auto-detection which allows Hazelcast to know each instance of rendition.\nLocation of rendition instances Each rendition must be placed in the same sub-network to allow cache directory sharing.\nConfigure the shared directory In the context of using Hazelcast with a multi-instance of rendition and a shared directory, you will necessarily need the shared directory to be in NFS .\nFor each microservice of each rendition instance, it is necessary to specify the location of the shared cache directory that will be used. The property is located in the application.yaml file for each microservice.\n document-service-broker document-renderer document-text-handler document-converter temp: files: folder: ..\/..\/tmp\/ shared-files: sharedPath: ..\/..\/tmp\/ shared-files: sharedPath: ..\/..\/tmp\/ tmp: dir: doc: ..\/..\/tmp\/ shared-files: sharedPath: ..\/..\/tmp\/ Configure the Web-UI with Load balancer In case you have a Load balancer between the Web-UI and the renditions, you will have to indicate, in the configuration of the Web-UI server, the host of the Load balancer instead of listing the hosts of each rendition.\narender-server-custom-vanilla.properties arender.server.rendition.hostsLOAD_BALANCER_HOST Configuration details can be found on the dedicated page.\nConfigure the Web-UI without Load balancer If you do not have a Load balancer between the Web-UI and the renditions, you must indicate, in the configuration of the Web-UI server, each host of each rendition. The distribution will be made by the Web-UI according to the weather of the renditions.\nConfiguration details can be found on the dedicated page.\nUse in AWS In an AWS environment, if an instance describe based on a tag needs to be done then it must be ensured that the role attached to the EC2 instance has the right to describe the instance.\nConfigure NFS NFS configuration is important to ensure that different nodes are in sync with each other.\nTwo main optimization configurations in NFS involve a high risk of NFS clients getting out of sync:\n Asynchronous writing (async option), set by default The local read cache (lookupcache or FS-Cache, fsc option) NFS requirements should contain the following options to ensure client synchronization :\nsync,noac,lookupcachenone References :\nnfs(5) - Linux man page 10.3\nNFS Red Hat Enterprise Linux 6\n/p>p>configuration/p>p>rendition/p>p>Microsoft Office/p>p>hazelcast/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/configuration\/ }, { value: Configuration of Hazelcast, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/hazelcastconfiguration\/, label: p>Since the version 4.8.2, it is possible to configure HazelCast for caching DocumentAccessor. It provides better support for the scalability of the Web-UI thanks to its shared and distributed cache system.\nConfigure HazelCast in ARender arender-server.properties # Defines the cache strategy to use. Valid values : ehCacheStrategy, hazelCastStrategy arender.server.cache.strategyehCacheStrategy # Path of the hazelCast configuration file, if the value is empty then the default one in the classpath will be used./p>p>Since the version 4.8.2, it is possible to configure HazelCast for caching DocumentAccessor. It provides better support for the scalability of the Web-UI thanks to its shared and distributed cache system.\nConfigure HazelCast in ARender arender-server.properties # Defines the cache strategy to use. Valid values : ehCacheStrategy, hazelCastStrategy arender.server.cache.strategyehCacheStrategy # Path of the hazelCast configuration file, if the value is empty then the default one in the classpath will be used. arender.server.cache.hazelCast.config.path The default configuration file for Hazelcast can be found on the Web-UI side in the WEB application resources at the path WEB-INF\/classes\/ressources\/hazelcast.yaml\nDefault file: hazelcast.yaml hazelcast: map: documentAccessorsHMI: max-idle-seconds: 3600 eviction: eviction-policy: NONE max-size-policy: PER_NODE size: 5 network: port: port: 5702 join: auto-detection: enabled: true rest-api: enabled: true endpoint-groups: CLUSTER_READ: enabled: true HEALTH_CHECK: enabled: true WAN: enabled: true DATA: enabled: true Warning For now the connectors supported by ARender have not yet undergone the necessary changes to support HazelCast.\nIf you have implemented your own connector, then you will need to make your DocumentAccessor properly serializable\/deserializable.\n /p>p>configuration/p>p>hmi/p>p>web ui/p>p>viewer/p>p>hazelcast/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/hazelcastconfiguration\/ }, { value: Docker, path: https:\/\/docs.arender.io\/v4\/install\/docker\/, label: p>Registry Location All ARender docker images are available on our artifactory, artifactory.arondor.cloud.\nLogin To authenticate, use the docker command with your artifactory credentials\n$\u0026gt; docker login artifactory.arondor.cloud:5001 If you do not have access to our artifactory, please contact our support service.\nRepository list A complete ARender stack is composed by 6 types of containers:\n Component Repository Latest Version Suffix web UI arender-ui 4.8.21 or Alfresco web UI arender-ui 4./p>p>Registry Location All ARender docker images are available on our artifactory, artifactory.arondor.cloud.\nLogin To authenticate, use the docker command with your artifactory credentials\n$\u0026gt; docker login artifactory.arondor.cloud:5001 If you do not have access to our artifactory, please contact our support service.\nRepository list A complete ARender stack is composed by 6 types of containers:\n Component Repository Latest Version Suffix web UI arender-ui 4.8.21 or Alfresco web UI arender-ui 4.8.21 alfresco or IBM FileNet web UI arender-ui 4.8.21 filenet rendition arender-document-service-broker 4.8.21 rendition arender-document-renderer 4.8.21 rendition arender-document-text-handler 4.8.21 rendition arender-document-converter 4.8.21 Pulling images To pull images, use docker pull command with Arondor registry as prefix.\n default specific $\u0026gt; docker pull artifactory.arondor.cloud:5001\/\u0026lt;Repository\u0026gt;:\u0026lt;Version\u0026gt; $\u0026gt; docker pull artifactory.arondor.cloud:5001\/\u0026lt;Repository\u0026gt;:\u0026lt;Version\u0026gt;-\u0026lt;Suffix\u0026gt; Docker compose To start ARender quickly with docker-compose, execute the following commands:\n$\u0026gt; wget -O docker-compose.yml https:\/\/docs.arender.io\/docs\/docker\/v4\/docker-compose.yml $\u0026gt; echo \u0026#34;VERSION4.8.21\u0026#34; \u0026gt; .env $\u0026gt; docker-compose up -d These commands will run the configuration below:\n Since 4.5 before 4.5 version:\u0026#34;3.7\u0026#34;services:ui:image:artifactory.arondor.cloud:5001\/arender-ui:4.8.21container_name:uienvironment:- \u0026#34;ARENDERSRV_ARENDER_SERVER_RENDITION_HOSTShttp:\/\/dsb-service:8761\/\u0026#34;ports:- 8080:8080service-broker:image:artifactory.arondor.cloud:5001\/arender-document-service-broker:4.8.21container_name:dsb-serviceenvironment:- \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DCV-SERVICE19999\u0026#34;- \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DRN-SERVICE9091\u0026#34;- \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DTH-SERVICE8899\u0026#34;ports:- 8761:8761volumes:- arender-tmp:\/arender\/tmpdocument-renderer:image:artifactory.arondor.cloud:5001\/arender-document-renderer:4.8.21container_name:drn-serviceenvironment:- \u0026#34;DRN_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdrn-service\u0026#34;- \u0026#34;DRN_EUREKA_INSTANCE_HOSTNAMEdsb-service\u0026#34;- \u0026#34;DRN_EUREKA_SERVER_PORT8761\u0026#34;ports:- 9091:9091volumes:- arender-tmp:\/arender\/tmpdocument-text-handler:image:artifactory.arondor.cloud:5001\/arender-document-text-handler:4.8.21container_name:dth-serviceenvironment:- \u0026#34;DTH_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdth-service\u0026#34;- \u0026#34;DTH_EUREKA_INSTANCE_HOSTNAMEdsb-service\u0026#34;- \u0026#34;DTH_EUREKA_SERVER_PORT8761\u0026#34;ports:- 8899:8899volumes:- arender-tmp:\/arender\/tmpdocument-converter:image:artifactory.arondor.cloud:5001\/arender-document-converter:4.8.21container_name:dcv-serviceenvironment:- \u0026#34;DCV_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdcv-service\u0026#34;- \u0026#34;DCV_APP_EUREKA_HOSTNAMEdsb-service\u0026#34;- \u0026#34;DCV_APP_EUREKA_PORT8761\u0026#34;ports:- 19999:19999volumes:- arender-tmp:\/arender\/tmp# Shared temporary foldervolumes:arender-tmp: version:\u0026#34;2\u0026#34;services:ui:image:artifactory.arondor.cloud:5001\/arender-ui:4.4.1mem_limit:2gcontainer_name:uienvironment:- \u0026#34;ARENDERSRV_ARENDER_SERVER_RENDITION_HOSTShttp:\/\/dsb-service:8761\/\u0026#34;ports:- 80:8080service-broker:image:artifactory.arondor.cloud:5001\/arender-document-service-broker:4.4.1mem_limit:1gcontainer_name:dsb-serviceenvironment:- \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DCV-SERVICE19999\u0026#34;- \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DRN-SERVICE9091\u0026#34;- \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DTH-SERVICE8899\u0026#34;ports:- 8761:8761document-renderer:image:artifactory.arondor.cloud:5001\/arender-document-renderer:4.4.1mem_limit:1gcontainer_name:drn-serviceenvironment:- \u0026#34;DRN_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdrn-service\u0026#34;- \u0026#34;DRN_EUREKA_INSTANCE_HOSTNAMEdsb-service\u0026#34;- \u0026#34;DRN_EUREKA_SERVER_PORT8761\u0026#34;ports:- 9091:9091document-text-handler:image:artifactory.arondor.cloud:5001\/arender-document-text-handler:4.4.1mem_limit:1gcontainer_name:dth-serviceenvironment:- \u0026#34;DTH_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdth-service\u0026#34;- \u0026#34;DTH_EUREKA_INSTANCE_HOSTNAMEdsb-service\u0026#34;- \u0026#34;DTH_EUREKA_SERVER_PORT8761\u0026#34;ports:- 8899:8899document-file-storage:image:artifactory.arondor.cloud:5001\/arender-document-file-storage:4.4.1mem_limit:500mcontainer_name:dfs-serviceenvironment:- \u0026#34;DFS_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdfs-service\u0026#34;- \u0026#34;DFS_EUREKA_INSTANCE_METADATA.MAP_SOURCE.D.F.Shttp:\/\/dfs-service:8081\u0026#34;- \u0026#34;DFS_EUREKA_INSTANCE_HOSTNAMEdsb-service\u0026#34;- \u0026#34;DFS_EUREKA_SERVER_PORT8761\u0026#34;ports:- 8081:8081document-converter:image:artifactory.arondor.cloud:5001\/arender-document-converter:4.4.1mem_limit:1gcontainer_name:dcv-serviceenvironment:- \u0026#34;DCV_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdcv-service\u0026#34;- \u0026#34;DCV_APP_EUREKA_HOSTNAMEdsb-service\u0026#34;- \u0026#34;DCV_APP_EUREKA_PORT8761\u0026#34;ports:- 19999:19999 /p>p>docker/p>, url: https:\/\/docs.arender.io\/v4\/install\/docker\/ }, { value: Docker architecture, path: https:\/\/docs.arender.io\/learn\/architecture\/docker-architecture\/, label: p>N1: ECM UI: has the responsibility to let the user choose which documents he wants to open in ARender, N2: Browser: will create the ARender frame using the URL provided by N1, N3: ARender WEB-UI: is an application server containing the connector and running in a docker container, N4: ECM Backend: contains API which ARender connector will interact with to fetch documents (and if needed fetch annotations and metadata and create new documents or new version of documents), N5: ARender Rendition: is compounded of 4 Spring Boot microservices running in docker containers that offer different services such as generating images, extracting text, converting document and more./p>p> N1: ECM UI: has the responsibility to let the user choose which documents he wants to open in ARender, N2: Browser: will create the ARender frame using the URL provided by N1, N3: ARender WEB-UI: is an application server containing the connector and running in a docker container, N4: ECM Backend: contains API which ARender connector will interact with to fetch documents (and if needed fetch annotations and metadata and create new documents or new version of documents), N5: ARender Rendition: is compounded of 4 Spring Boot microservices running in docker containers that offer different services such as generating images, extracting text, converting document and more. /p>, url: https:\/\/docs.arender.io\/learn\/architecture\/docker-architecture\/ }, { value: Embed ARender in an application, path: https:\/\/docs.arender.io\/development\/framework\/embedarender\/, label: p>To integrate ARender into your application, simply add an iframe tag pointing to the ARender server in the HTML code of your application.\n1. Embedding the iframe The ARender iframe should be inserted into your application at the most relevant location, depending on your use of ARender.\nHere is a minimal example compatible with any type of framework: ARender.js \u0026lt;iframe id\u0026#34;arender-iframe\u0026#34; src\u0026#34;Insert the ARender URL here\u0026#34; title\u0026#34;Integrated ARender iframe\u0026#34; allow\u0026#34;microphone\u0026#34; \/\u0026gt;/p>p>To integrate ARender into your application, simply add an iframe tag pointing to the ARender server in the HTML code of your application.\n1. Embedding the iframe The ARender iframe should be inserted into your application at the most relevant location, depending on your use of ARender.\nHere is a minimal example compatible with any type of framework: ARender.js \u0026lt;iframe id\u0026#34;arender-iframe\u0026#34; src\u0026#34;Insert the ARender URL here\u0026#34; title\u0026#34;Integrated ARender iframe\u0026#34; allow\u0026#34;microphone\u0026#34; \/\u0026gt; \n The id uniquely identifies the iframe and allows its instance to be retrieved in JavaScript: const iframe document.getElementById(\u0027arender-iframe\u0027); The src parameter must contain the URL of the installed version of ARender. The title provides a textual description of the iframe\u0026rsquo;s content for accessibility purposes. The allow\u0026lsquo;microphone\u0026rsquo; parameter is essential to enable the use of voice annotations in ARender. At this stage of the ARender integration, an iframe pointing to ARender appears in the DOM of the host application. However, it might not yet be visible depending on where it is integrated into the host application. You will need to define its position and dimensions, as shown in the example below.\n2. Framework Information ARender integration tests have been conducted with the following versions:\n React : version 18.3.1 Angular : version 19.0.0 VueJs : version 3.5.13 Svelte : version 5.19.0 React Angular VueJs Svelte JavaScript - Create a component called ARender.tsx or ARender.jsx and insert the iframe as shown in the code below. The component can then be instantiated wherever you need it using the tag: \u0026lsaquo;ARender \/\u0026rsaquo;\n- In React, you can use a reference to interact with the iframe using the ref parameter, instead of using an ID query.\n- You can also style the iframe by adding the classname parameter.\n- Finally, the URL associated with the iframe through the src parameter can be made dynamic, allowing it to be modified dynamically.\nARender.component.tsx import {useRef, useState} from \u0027react\u0027; function ARender() { const iframeRef useRef(null); const arenderUrl, setARenderUrl useState(\u0027\u0027) \/\/ A dynamic url allow you to update easily the parameters const arenderIsDisplayed, setArenderIsDisplayed useState(true) return ( \u0026lt;\u0026gt; { \u0026lt;iframe ref{iframeRef} className{`iframe ${arenderIsDisplayed ? \u0027\u0027 : \u0027hidden\u0027}`} title\u0027integrated-arender\u0027 id\u0027arender-iframe\u0027 src{arenderUrl} allow\u0027microphone\u0027 \/\u0026gt; } \u0026lt;\/\u0026gt; ); } export default ARender; - Create an angular component (you can do it using this CLI command : ng generate component Arender) - Fill typescript and html files as presented below : arender.component.ts import { Component, ElementRef, ViewChild } from \u0026#39;@angular\/core\u0026#39;; @Component({ selector: \u0026#39;app-arender\u0026#39;, templateUrl: \u0026#39;.\/arender.component.html\u0026#39;, styleUrls: \u0026#39;.\/arender.component.css\u0026#39; }) export class ARenderComponent { @ViewChild(\u0026#39;iframeRef\u0026#39;, { static: false }) iframeRef!: ElementRef\u0026lt;HTMLIFrameElement\u0026gt;; \/\/ Reference to the iframe arenderIsDisplayed: boolean true; \/\/ Controls the iframe visibility } arender.component.html \u0026lt;iframe #iframeRef class\u0026#34;iframe\u0026#34; class.hidden\u0026#34;!arenderIsDisplayed\u0026#34; title\u0026#34;integrated-arender\u0026#34; id\u0026#34;arender-iframe\u0026#34; src\u0026#34;\u0026#34; \/\/ Add ARender url here allow\u0026#34;microphone\u0026#34; \u0026gt;\u0026lt;\/iframe\u0026gt; - Add ARenderComponent to the main module (file app.module.ts) if necessary by adding the arender component to the declarations list.\n- Insert the component into the application by placing this tag in the HTML code of the appropriate file: \u0026lt;app-arender\u0026gt;\u0026lt;\/app-arender\u0026gt;\n- The @ViewChild attribute will allow easy interaction with the iframe without needing to use getElementById.\n Installation - Create a new file named ARenderItem.vue and insert the following code: ArenderItem.vue \u0026lt;script setup\u0026gt; import { ref } from \u0026#39;vue\u0026#39; const { arenderIsDisplayed true } defineProps() const iframeRef ref(null) \u0026lt;\/script\u0026gt; \u0026lt;template\u0026gt; \u0026lt;iframe ref\u0026#34;iframeRef\u0026#34; :class\u0026#34;{ hidden: !arenderIsDisplayed }\u0026#34; class\u0026#34;iframe\u0026#34; title\u0026#34;integrated-arender\u0026#34; id\u0026#34;arender-iframe\u0026#34; :src\u0026#34;arenderUrl\u0026#34; allow\u0026#34;microphone\u0026#34; \u0026gt;\u0026lt;\/iframe\u0026gt; \u0026lt;\/template\u0026gt; \u0026lt;style scoped\u0026gt; iframe { ... } \u0026lt;\/style\u0026gt; Usage You can use the ARender component in your Vue application as follows: App.vue \u0026lt;script setup\u0026gt; import Arender from \u0026#39;.\/components\/ArenderItem.vue\u0026#39; import { ref } from \u0026#39;vue\u0026#39; \u0026lt;\/script\u0026gt; \u0026lt;template\u0026gt; \u0026lt;Arender ref\u0026#34;arenderRef\u0026#34; \/\u0026gt; \u0026lt;\/template\u0026gt; Features - Dynamic iframe visibility: The arenderIsDisplayed prop controls whether the iframe is shown or hidden. - Direct iframe reference: The iframeRef prop binds the iframe element, allowing direct interaction. - Custom styling: The iframe can be styled using CSS classes. - Dynamic URL: You can modify the iframe source dynamically by updating the src attribute. Installation - Create a new file named ARender.svelte and insert the following code: Arender.svelte \u0026lt;script\u0026gt; let { arenderIsDisplayed $bindable(true), iframeRef $bindable() } $props(); \u0026lt;\/script\u0026gt; \u0026lt;iframe bind:this{iframeRef} class\u0026#34;iframe\u0026#34; class:hidden{!arenderIsDisplayed} title\u0026#34;integrated-arender\u0026#34; id\u0026#34;arender-iframe\u0026#34; src\u0026#34;\u0026#34; \u0026lt;!-- Add Arender url here --\u0026gt; allow\u0026#34;microphone\u0026#34; \u0026gt;\u0026lt;\/iframe\u0026gt; \u0026lt;style\u0026gt; ... \u0026lt;\/style\u0026gt; Usage You can use the ARender component in your Svelte application as follows: \u0026#43;page.svelte \u0026lt;script\u0026gt; import Arender from \u0026#39;$components\/Arender.svelte\u0026#39; \u0026lt;\/script\u0026gt; \u0026lt;Arender bind:iframeRef \/\u0026gt; Features - Dynamic iframe visibility: The arenderIsDisplayed prop controls whether the iframe is shown or hidden. - Direct iframe reference: The iframeRef prop binds the iframe element, allowing direct interaction. - Custom styling: The iframe can be styled using CSS classes. - Dynamic URL: You can modify the iframe source dynamically by updating the src attribute. To integrate with pure CSS, without using a specific framework, create the following script file: index.js document.addEventListener(\u0026#39;DOMContentLoaded\u0026#39;, function () { \/\/ Iframe creation const iframe document.createElement(\u0026#39;iframe\u0026#39;); iframe.title \u0026#39;integrated-arender\u0026#39;; iframe.id \u0026#39;arender-iframe\u0026#39;; iframe.allow \u0026#39;microphone\u0026#39;; \/\/ Variables for the URL and the iframe states let arenderUrl \u0026#39;\u0026#39;; let arenderIsDisplayed true; \/\/ Add attributes to iframe function updateIframe() { iframe.src arenderUrl; iframe.className arenderIsDisplayed ? \u0026#39;iframe\u0026#39; : \u0026#39;hidden\u0026#39;; } \/\/ Add the iframe to the HTML body document.body.appendChild(iframe); \/\/ Function to update the HTML after an url change in the iframe function setARenderUrl(newUrl) { arenderUrl newUrl; updateIframe(); } \/\/ Display \/ hide iframe function toggleArenderVisibility() { arenderIsDisplayed !arenderIsDisplayed; updateIframe(); } \/\/ Initial update to manage the display of the iframe and the url updateIframe(); \/\/ Add ARender URL setARenderUrl(\u0026#39;\u0026#39;); \/\/ \u0026lt; Add ARender URL here \/\/ Listen to the button click const toggleButton document.getElementById(\u0026#39;toggleButton\u0026#39;); toggleButton.addEventListener(\u0026#39;click\u0026#39;, function() { toggleArenderVisibility(); }); }); This script waits for the HTML document\u0027s DOM to load, creates an iframe element with the necessary parameters, and adds the element to the DOM. Then add the script to the HTML file of your choice : index.html \u0026lt;!DOCTYPE html\u0026gt; \u0026lt;html lang\u0026#34;en\u0026#34;\u0026gt; \u0026lt;head\u0026gt; \u0026lt;meta charset\u0026#34;UTF-8\u0026#34;\u0026gt; \u0026lt;meta name\u0026#34;viewport\u0026#34; content\u0026#34;widthdevice-width, initial-scale1.0\u0026#34;\u0026gt; \u0026lt;title\u0026gt;Document\u0026lt;\/title\u0026gt; \u0026lt;link rel\u0026#34;stylesheet\u0026#34; href\u0026#34;style.css\u0026#34;\u0026gt; \u0026lt;\/head\u0026gt; \u0026lt;body\u0026gt; \u0026lt;button id\u0026#34;toggleButton\u0026#34;\u0026gt;Afficher \/ Masquer l\u0026#39;iframe\u0026lt;\/button\u0026gt; \u0026lt;script src\u0026#34;.\/index.js\u0026#34;\u0026gt;\u0026lt;\/script\u0026gt; \u0026lt;\/body\u0026gt; \u0026lt;\/html\u0026gt; In this example, a button has been added to dynamically show\/hide the iframe. (It will only work once the CSS is added in the next section.)\n In this example, a \u0026lsquo;hidden\u0026rsquo; class has been added to the iframe when we want to hide it (for example, by setting its width to 0px).\nIt is also possible to completely remove the iframe when it\u0026rsquo;s not displayed, but this will result in a reload of ARender each time it\u0026rsquo;s shown again.\nYou can replicate this method of associating a button with code to test the ARender features described in the following pages.\n3. Style the iframe with CSS The CSS classes associated with the iframe will allow us to style it. Often, we want to display ARender on a fixed portion of the screen, occupying, for example, 60% of the screen width, and not disappearing during scrolling. Here is an example of commented CSS:\niframe { position: fixed; \/* ARender will remain displayed even if you scroll in your application *\/ top: 0; right: 0; width: 60%; \/* 60% of screen width *\/ transition: width 0.2s ease-in-out; \/* Facultative transition when displaying d\u0026#39;ARender *\/ height: 100%; \/* Takes all screen height *\/ border: none; \/* Remove iframe borders *\/ border-left: 1px solid var(--ar-color-gray-700); \/* Add a customized border on the left side of the iframe to separate it from the rest of the application *\/ \u0026amp;.hidden { width: 0px; \/* Visualy hides ARender. ARender stays open to avoid reloading each time. *\/ transition: width 0.2s ease-in-out; \/* Facultative transition when hiding d\u0026#39;ARender *\/ } } /p>p>integrate/p>p>integration/p>p>arender/p>p>iframe/p>, url: https:\/\/docs.arender.io\/development\/framework\/embedarender\/ }, { value: Exploitation, path: https:\/\/docs.arender.io\/guides\/exploitation\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/guides\/exploitation\/ }, { value: Features, path: https:\/\/docs.arender.io\/what-is-arender\/features\/, label: p> Feature Standard \/ Optional module View all MIME Types except AutoCAD Standard View multiple document(s) Standard Multiview (horizontally split) Standard Annotation Standard Annotation on media document Standard Annotation auto save Standard Search Standard Split, merge, page manipulation Standard Document textual comparison Standard Document image comparison Standard Hyperlink creation Standard UI customization Standard PDF Layers (OCGs) Standard Redaction Standard Download native format Standard Download as PDF Standard Download as PDF with annotation Standard Print Standard Print with annotation Standard PDF, PDF\/A creation Standard Bookmarks Standard Bookmarks creation\/deletion Standard Image processing Standard Signature validation Standard Crop Box Standard GuideRuler Standard Viewing AutoCAD Optional Module Send e-mail Optional module /p>p> Feature Standard \/ Optional module View all MIME Types except AutoCAD Standard View multiple document(s) Standard Multiview (horizontally split) Standard Annotation Standard Annotation on media document Standard Annotation auto save Standard Search Standard Split, merge, page manipulation Standard Document textual comparison Standard Document image comparison Standard Hyperlink creation Standard UI customization Standard PDF Layers (OCGs) Standard Redaction Standard Download native format Standard Download as PDF Standard Download as PDF with annotation Standard Print Standard Print with annotation Standard PDF, PDF\/A creation Standard Bookmarks Standard Bookmarks creation\/deletion Standard Image processing Standard Signature validation Standard Crop Box Standard GuideRuler Standard Viewing AutoCAD Optional Module Send e-mail Optional module /p>, url: https:\/\/docs.arender.io\/what-is-arender\/features\/ }, { value: GET a comparison order, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/comparison\/get-comparison-order\/, label: p>This API allows you to retrieve a comparison order previously requested.\nAPI technical description Entry point:\nGET \/comparisons\/\u0026lt;comparisonOrderId\u0026gt; Resource path:\n Variable Type Required Description comparisonOrderId String yes The ID of a comparison order to get. Query param:\n Variable Type Required Description timeoutMs String no The maximum waiting time before getting the comparison order. Response:/p>p>This API allows you to retrieve a comparison order previously requested.\nAPI technical description Entry point:\nGET \/comparisons\/\u0026lt;comparisonOrderId\u0026gt; Resource path:\n Variable Type Required Description comparisonOrderId String yes The ID of a comparison order to get. Query param:\n Variable Type Required Description timeoutMs String no The maximum waiting time before getting the comparison order. Response:\n Attribute Type Description comparisonOder ComparisonOrder Comparison order. Examples Retrieve a comparison order The call below generates a request to retrieve the comparison order with id 123e4567-e89b-12d3-a456-426614174000.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/comparisons\/123e4567-e89b-12d3-a456-426614174000?timeoutMs6000\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; Response sample:\n{ \u0026#34;comparisonOrderId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;string\u0026#34; }, \u0026#34;currentState\u0026#34;: \u0026#34;QUEUED\u0026#34;, \u0026#34;errorMessage\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;fuzz\u0026#34;: 0, \u0026#34;highlightColor\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;leftDocumentId\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;lowlightColor\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;processedDate\u0026#34;: \u0026#34;2023-06-19T15:17:14.454Z\u0026#34;, \u0026#34;processingTime\u0026#34;: 0, \u0026#34;queuedDate\u0026#34;: \u0026#34;2023-06-19T15:17:14.454Z\u0026#34;, \u0026#34;queuedTime\u0026#34;: 0, \u0026#34;rightDocumentId\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;targetDocumentId\u0026#34;: \u0026#34;string\u0026#34; } /p>p>tutorial/p>p>comparison/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/comparison\/get-comparison-order\/ }, { value: GET a conversion order, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/conversion\/get-conversion-order\/, label: p>This API allows you to retrieve a conversion order previously requested.\nAPI technical description Entry point:\nGET \/conversions\/\u0026lt;ConversionOrderId\u0026gt; Resource path:\n Variable Description conversionOderId The ID of a conversion order. Response:\n Attribute Type Description conversionOrder ConversionOrder the conversion order details. Examples Retrieve a conversion order The call below generates a request to retrieve the conversion order with id 123e4567-e89b-12d3-a456-426614174000./p>p>This API allows you to retrieve a conversion order previously requested.\nAPI technical description Entry point:\nGET \/conversions\/\u0026lt;ConversionOrderId\u0026gt; Resource path:\n Variable Description conversionOderId The ID of a conversion order. Response:\n Attribute Type Description conversionOrder ConversionOrder the conversion order details. Examples Retrieve a conversion order The call below generates a request to retrieve the conversion order with id 123e4567-e89b-12d3-a456-426614174000.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/conversions\/123e4567-e89b-12d3-a456-426614174000\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; Response sample:\n{ \u0026#34;conversionOrderId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;string\u0026#34; }, \u0026#34;currentState\u0026#34;: \u0026#34;QUEUED\u0026#34;, \u0026#34;documentId\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;errorMessage\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;format\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;processedDate\u0026#34;: \u0026#34;2023-06-19T16:12:24.476Z\u0026#34;, \u0026#34;processingTime\u0026#34;: 0, \u0026#34;queuedDate\u0026#34;: \u0026#34;2023-06-19T16:12:24.476Z\u0026#34;, \u0026#34;queuedTime\u0026#34;: 0 } /p>p>tutorial/p>p>conversion/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/conversion\/get-conversion-order\/ }, { value: GET a document metadata, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-document\/, label: p>This API allows you to retrieve a document metadata.\nAPI Description Endpoint :\nGET \/documents\/{documentId} Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description DFSDocumentAccessor The document accessor Examples Retrieve a document The call below generates a request to retrieve the metadata of the document with id b64_bm9yZS92SDMtMS0xMTh1735080237./p>p>This API allows you to retrieve a document metadata.\nAPI Description Endpoint :\nGET \/documents\/{documentId} Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description DFSDocumentAccessor The document accessor Examples Retrieve a document The call below generates a request to retrieve the metadata of the document with id b64_bm9yZS92SDMtMS0xMTh1735080237.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>tutorial/p>p>document/p>p>metadata/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-document\/ }, { value: GET a transformation order, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/get-transformation-order\/, label: p>This API allows you to retrieve a transformation order previously requested.\nAPI technical description Entry point :\nGET \/transformations\/\u0026lt;transformationOrderId\u0026gt; Resource path:\n Variable Description transformationOderId The ID of a transformation order Response :\n Attribute Type Description transformationOrder TransformationOrder Contains every information related to the given TransformationOrderId Examples Retrieve a transformation order The call below generates a request to retrieve the transformation order with id 123e4567-e89b-12d3-a456-426614174000./p>p>This API allows you to retrieve a transformation order previously requested.\nAPI technical description Entry point :\nGET \/transformations\/\u0026lt;transformationOrderId\u0026gt; Resource path:\n Variable Description transformationOderId The ID of a transformation order Response :\n Attribute Type Description transformationOrder TransformationOrder Contains every information related to the given TransformationOrderId Examples Retrieve a transformation order The call below generates a request to retrieve the transformation order with id 123e4567-e89b-12d3-a456-426614174000.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\/123e4567-e89b-12d3-a456-426614174000\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>tutorial/p>p>transformation/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/get-transformation-order\/ }, { value: GET version, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/admin\/version\/, label: p>This API allows you to retrieve the ARender and isntalled tools versions.\nAPI technical description Endpoint:\nGET \/version Response :\n Type Description JSON ARender and tools versions Examples Get versions curl -X \u0026#39;GET\u0026#39; \u0026#39;http:\/\/localhost:8761\/version\u0026#39; -H \u0026#39;accept: application\/json\u0026#39; /p>p>This API allows you to retrieve the ARender and isntalled tools versions.\nAPI technical description Endpoint:\nGET \/version Response :\n Type Description JSON ARender and tools versions Examples Get versions curl -X \u0026#39;GET\u0026#39; \u0026#39;http:\/\/localhost:8761\/version\u0026#39; -H \u0026#39;accept: application\/json\u0026#39; /p>p>tutorial/p>p>version/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/admin\/version\/ }, { value: In ACA, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/alfresco\/aca\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/alfresco\/aca\/ }, { value: Install in ICN, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/filenet\/filenet-icn\/, label: p>We continue here the installation but in the ICN module of FileNet.\nPrerequisite Concerning SSO between ICN and ARender, cross-domain SSO is not supported, for example z.AAAcompany.com and w.BBBcompany.com - where the DNS domains are different. More information here: https:\/\/www.ibm.com\/docs\/en\/was-nd\/8.5.5?topicauthentication-single-sign-using-ltpa-cookies\nRetrieve the ARender Web-UI archive Using the username and password beforehand provided, you can retrieve the navigator plugin here\nARender and IBM Content Navigator Sharing the LTPA key Thus, you will need to configure LTPA in order to enable session sharing between IBM Content Navigator and Arender Web-UI:/p>p>We continue here the installation but in the ICN module of FileNet.\nPrerequisite Concerning SSO between ICN and ARender, cross-domain SSO is not supported, for example z.AAAcompany.com and w.BBBcompany.com - where the DNS domains are different. More information here: https:\/\/www.ibm.com\/docs\/en\/was-nd\/8.5.5?topicauthentication-single-sign-using-ltpa-cookies\nRetrieve the ARender Web-UI archive Using the username and password beforehand provided, you can retrieve the navigator plugin here\nARender and IBM Content Navigator Sharing the LTPA key Thus, you will need to configure LTPA in order to enable session sharing between IBM Content Navigator and Arender Web-UI:\n Export the LTPA CPE key In WebSphere Administration Console of the CPE, navigate to Security \u0026gt; Global Security, under Authentication, click LTPA\n Specify a password, a filepath, and click \u0026ldquo;Export keys\u0026rdquo; Import the LTPA CPE key in the ARender JVM Copy the key in hte ARender Web-UI server.\nThen import this key in ARender, like below:\n Using the WebSphere Administration Console, navigate to Security \u0026gt; Global Security, under Authentification, click LTPA Fill in the same password you entered when exporting the keys Specify the path where you copied the keys Click Import keys Save the modifications Session invalidation when switching user Since ICN version 3.0.6, if you change of user on the same session then you will get an error message when opening a document with the new user which will look like this:\nError message Error 500: com.ibm.websphere.servlet.session.UnauthorizedSessionRequestException: SESN0008E: A user authenticated as user:localhost:389\/CNuserB,CNUsers,DCircem,DCdev has attempted to access a session owned by user:localhost:389\/CNuserA,CNUsers,DCircem,DCdev The session of the user userA was not invalidated when he disconnected, which will cause the error when opening a document by user userB. There is a property to add in a WebSphere console which will make it possible to invalidate a session on which an unauthorized request is made. This session invalidation will allow the recovery of the correct username by ARender.\nAdding the property Go to your websphere console then in the menu go to servers -\u0026gt; server types -\u0026gt; websphere application servers. Select the server on which you want to make the modification. In our example, we choose serverICN In Container settings go to Session management. In Additional properties, click on custom properties. Click on New\u0026hellip; to add the property. Add the property InvalidateOnUnauthorizedSessionRequestException with the value true so that it is applied. You must then click on Ok then save. Restart your Filenet services to take this property into account. Integration of the arender plugin for FileNet A specific plugin has been implemented to integrate ARender within ICN. Nota: ICN connector uses mixedObjects syntax.\nConnect to Content Navigator.\nGo to the ‘Administration View’ and click on ‘Plug-ins’\nClick on the button \u0026ldquo;New Plugin-in\u0026rdquo;.\nEnter the JAR file path and click on ‘Load’.\nFill ‘ARender context root’ field with ARender’s address (hots \u002b port \u002b context root). Like below:\nTo use this Map, you just need to link it to a Desktop (Desktop tab -\u0026gt; Edit the desktop -\u0026gt; Select the Map in the Viewer Map list)\nAnd finally, click on \u0026ldquo;Save\u0026rdquo;.\nYou can now restart your application servers and attempt to open a file in FileNet.\nUse ARender advanced features directly from ICN End-users can use ARender Compare and Document Builder features directly from ICN.\nCreate a dedicated ICN menu to show ARender advanced feature In ICN, go in the Administration menu Select Menus Search the Menu named Default document context menu Right click on this menu and select Copy Define a Name and a description to the new Menu In the Available box select Compare documents and\/or Merge documents action and add them into the Selected menu on the right Add the created menu to the ICN Desktop In ICN, go in the Administration menu Select Desktops Select the Desktop to update Select the tab Menus Search for the Menu named Document context menu In its drop-down list value, select the menu you created above Use ARender compare feature To compare document, you have to select two documents and select Compare documents from ICN Action menu or using right click\nUse ARender Document Builder feature To merge and split documents, you have to select at least one document and select Merge documents from ICN Action menu or using right click\n/p>p>standalone/p>p>hmi/p>p>web ui/p>p>configuration/p>p>filenet/p>p>ICN/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/filenet\/filenet-icn\/ }, { value: Installation, path: https:\/\/docs.arender.io\/installation\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/installation\/ }, { value: Installation, path: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/install\/, label: p>Warning If upgrading from version 4.8 to version 2023.0, please refer to the detailed upgrade documentation here. Installer Setup We strongly recommend installing ARender using the all-in-one installer, as it includes all necessary third-party components in validated versions. This method ensures the most reliable setup experience. The only requirement is a valid JDK or JRE (see Requirement).\nRetrieving the installer Use the provided credentials (contact arender-sales@arondor.com for access) to download the Rendition installation JAR:/p>p> Warning If upgrading from version 4.8 to version 2023.0, please refer to the detailed upgrade documentation here. Installer Setup We strongly recommend installing ARender using the all-in-one installer, as it includes all necessary third-party components in validated versions. This method ensures the most reliable setup experience. The only requirement is a valid JDK or JRE (see Requirement).\nRetrieving the installer Use the provided credentials (contact arender-sales@arondor.com for access) to download the Rendition installation JAR:\n Download the Rendition installer Installation process Run the following command to start the installation:\n$\u0026gt; java -jar rendition-engine-installer-2023.16.0-rendition.jar Below is an example of the installation steps on Windows:\n Select the installation directory: Select the components to install. Unselected items must be installed manually: Completion screen: Installed software, except LibreOffice, will be located in the third_party software folder:\nCongratulations, the installation is complete!\nAlternative ARender Installation Methods Silent installation Retrieve the configuration file Download Installation configuration Various options can be added:\n Properties Mandatory\/Optional Function Possible value INSTALL_PATH Mandatory Installation Path Absolute path arender.silent.install Optional Set to true on silent install (-options) True\/false arender.install.as.service Optional Install as service True\/false arender.install.libreoffice Optional Libreoffice setup True\/false arender.install.wkhtmltopdf.portable Optional Install Wkhtmltopdf in portable mode True\/false arender.install.imagemagick.portable Optional Install ImageMagick in portable mode True\/false arender.install.ffmpeg.portables Optional Install FFmpeg in portable mode True\/false arender.install.msoffice.prerequisites (Windows) Optional Install Microsoft Office prerequisites for ARender True\/false As example, for a silent installation, set arender.silent.installtrue in install-rendition.properties.\nSilent Installation Command For an installation in a silent mode, an option must be passed as a parameter when launching the installation with the jar.\n$\u0026gt; java -jar ARender-rendition-installer.jar -options install-rendition.properties Zip Packaging Installation Third-Party requirements Install the following additional software:\n Windows Linux We recommend using Chocolatey to ease the installations: https:\/\/chocolatey.org\/ We recommend installing these third parties from the official OS package distribution. Document Type Software Requirement Office Documents LibreOffice or Microsoft Office LibreOffice 5\u002b (ensure libGL.so.1 for RHEL\/CentOS 6). MS Office 2013\u002b recommended. Images ImageMagick ImageMagick 7\u002b (under Windows, validate that the binary named convert.exe is existing, if not, link it from magick.exe) Mails and HTML WKHtmlToPdf wkhtmltopdf 0.12.5\u002b Videos, Audios and GIFs FFmpeg FFmpeg 2.8.15\u002b Ensure third-party tools are in the server\u0026rsquo;s PATH:\n Software Variable that should be in the server PATH environment variable LibreOffice soffice ImageMagick magick (under Windows, validate that the binary named convert.exe is existing, if not, link it from magick.exe) WKHtmlToPdf wkhtmltopdf FFmpeg ffmpeg and ffprobe OS Configuration (Linux Only) If the server lacks an X server, install xvfb and run:\n$\u0026gt; echo -e \u0026#39;#!\/bin\/bash\\nxvfb-run -a --server-args\u0026#34;-screen 0, 1024x768x24\u0026#34; \/usr\/bin\/wkhtmltopdf -q $*\u0026#39; \u0026gt; \/usr\/bin\/wkhtmltopdf.sh $\u0026gt; chmod a\u002bx \/usr\/bin\/wkhtmltopdf.sh $\u0026gt; ln -s \/usr\/bin\/wkhtmltopdf.sh \/usr\/local\/bin\/wkhtmltopdf Installation process Extract the rendition-engine zip file to the desired directory. It is recommended to choose a directory close to the root of your file system to avoid Windows path length limitations.\n/p>p>requirements/p>p>rendition/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/install\/ }, { value: Installation, path: https:\/\/docs.arender.io\/v4\/install\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/v4\/install\/ }, { value: Installation, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/install\/, label: p>Setup with the installer ARender can be installed with an installer that contains all the required third parties, in the right version (validated by the ARender team). The only requirement: a valid JDK or JRE (see Requirement).\nRetrieve the installer Using the username and password beforehand provided (contact arender-sales@arondor.com if you want an access), you can retrieve the Rendition installation in JAR format here.\nInstallation process Simply execute the below command to launch the installation:/p>p>Setup with the installer ARender can be installed with an installer that contains all the required third parties, in the right version (validated by the ARender team). The only requirement: a valid JDK or JRE (see Requirement).\nRetrieve the installer Using the username and password beforehand provided (contact arender-sales@arondor.com if you want an access), you can retrieve the Rendition installation in JAR format here.\nInstallation process Simply execute the below command to launch the installation:\n$\u0026gt; java -jar rendition-engine-installer-4.8.21-rendition.jar Below an example of the different installation steps for Windows:\n Choose where to install your rendition server: Choose which requirements to install. If you unselect some of them, you will have to install them manually on the system All done! Aside from Libreoffice which does not support it, you will find all your installed softwares in the third_party software folder.\nYou have finished the installation!\nOther ways to install ARender Rendition Silent installation Retrieve the configuration file Download Installation configuration Various options can be added:\n Properties Mandatory\/Optional Function Possible value INSTALL_PATH Mandatory Installation Path Absolute path arender.silent.install Optional Set to true on silent install (-options) True\/false arender.install.as.service Optional Install as service True\/false arender.install.libreoffice Optional Libreoffice setup True\/false arender.install.wkhtmltopdf.portable Optional Install Wkhtmltopdf in portable mode True\/false arender.install.imagemagick.portable Optional Install ImageMagick in portable mode True\/false arender.install.ffmpeg.portables Optional Install FFmpeg in portable mode True\/false arender.install.msoffice.prerequisites (Windows) Optional Install Microsoft Office prerequisites for ARender True\/false As example, for a silent installation, the following property arender.silent.installtrue must be set in the install-rendition.properties file.\nInstallation process For an installation in a silent mode, an option must be passed as a parameter when launching the installation with the jar.\n$\u0026gt; java -jar ARender-rendition-installer.jar -options install-rendition.properties Setup with zip packaging Third parties requirement Please install all the following additional softwares.\n Windows Linux We recommend using Chocolatey to ease the installations: https:\/\/chocolatey.org\/ We recommend installing these third parties from the official OS package distribution. Document Type Software Requirement Office Documents LibreOffice or Microsoft Office LibreOffice 5 and up is advised. Warning: LibreOffice 5 on RHEL\/CentOS (6) requires libGL.so.1. Microsoft Office 2013 and up. Images ImageMagick ImageMagick 7 or higher (under Windows, validate that the binary named convert.exe is existing, if not, link it from magick.exe) Mails and HTML WKHtmlToPdf wkhtmltopdf 0.12.5 or higher Videos, Audios and GIFs FFmpeg FFmpeg 2.8.15 or higher Note that third parties are automatically searched in the server PATH variable.\n Software Variable that should be in the server PATH variable LibreOffice soffice ImageMagick magick (under Windows, validate that the binary named convert.exe is existing, if not, link it from magick.exe) WKHtmlToPdf wkhtmltopdf FFmpeg ffmpeg and ffprobe OS configuration If your server does not have an X server (Linux only), please install xvfb and run the following commands:\n$\u0026gt; echo -e \u0026#39;#!\/bin\/bash\\nxvfb-run -a --server-args\u0026#34;-screen 0, 1024x768x24\u0026#34; \/usr\/bin\/wkhtmltopdf -q $*\u0026#39; \u0026gt; \/usr\/bin\/wkhtmltopdf.sh $\u0026gt; chmod a\u002bx \/usr\/bin\/wkhtmltopdf.sh $\u0026gt; ln -s \/usr\/bin\/wkhtmltopdf.sh \/usr\/local\/bin\/wkhtmltopdf Installation process Unzip the rendition-engine zip file in the folder of choice.\nWe recommend using a folder as close as possible from your File system root folder in order to better manage the limit imposed by Windows of maximum number of symbols in a path.\n/p>p>requirements/p>p>rendition/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/install\/ }, { value: Installation ARender Spring Boot with OAuth2, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/filenet\/filenet-oauth\/, label: p>Overview With the transition from traditional Websphere-based deployments to Spring Boot, the application now leverages OAuth2 for authentication. Previously, WebSphere only managed user authentication via JAAS, which integrated seamlessly with FileNet\u0026rsquo;s Java API. The modernization effort aims to enhance security with modern OAuth2 identity providers, and maintain the same capabilities for interacting with FileNet Content Manager.\nThe key challenge addressed here is ensuring OAuth2 tokens can be validated on the FileNet side when using FileNet Java API for operations such as document retrieval or metadata access./p>p>Overview With the transition from traditional Websphere-based deployments to Spring Boot, the application now leverages OAuth2 for authentication. Previously, WebSphere only managed user authentication via JAAS, which integrated seamlessly with FileNet\u0026rsquo;s Java API. The modernization effort aims to enhance security with modern OAuth2 identity providers, and maintain the same capabilities for interacting with FileNet Content Manager.\nThe key challenge addressed here is ensuring OAuth2 tokens can be validated on the FileNet side when using FileNet Java API for operations such as document retrieval or metadata access.\nCurrent Architecture (Spring Boot with OAuth2) The application is now packaged as a standalone JAR file using Spring Boot, enabling easier deployment and upgrade. Connector library can be loaded dynamically from the application\u0026rsquo;s classpath as external dependencies, improving flexibility for upgrades and maintenance.\nConfiguration Requirements:\n OAuth2 Identity Provider ARender Web-UI Spring Boot (JAR \/ ZIP package) FileNet connector FileNet LoginModule Artifactory access Standalone ARender installation is as simple as:\n Download arondor-arender-hmi-spring-boot-package-2023.16.0.zip Unzip it into a folder Download arondor-arender-filenet-ce-2023.16.0-jar-with-dependencies.jar Copy the connector into the lib\/ folder of the step 2 Edit the arender-custom-server.properties in the configurations\/ folder and add the following properties: configurations\/arender-custom-server.properties # Enable OAuth2 arender.server.oauth2.enabledtrue # Set authentication method to use for FileNet arender.server.filenet.authentication.methodoauth2ObjectStoreProvider arender.server.filenet.ce.urlhttp:\/\/localhost:9080\/wsi\/FNCEWS40MTOM\/ Create a application.yml file in the root of the installation folder and edit the file like below. Note: This is example with Keycloak\napplication.yml # Here we are changing the port of the ARender application since Keycloak server is already running in port 8080. server: port: 8082 # Here we are using Keycloak for the authentication keycloak: base-url: http:\/\/localhost:8080\/auth realm: myrealm realm-url: ${keycloak.base-url}\/realms\/${keycloak.realm} # Here we are configuring the Spring Security OAuth2 accordingly to our Keycloak setup spring: security: oauth2: client: registration: arender: client-id: arender-client client-name: ARender client-secret: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx provider: keycloak authorization-grant-type: authorization_code scope: openid redirect-uri: \u0026#34;{baseUrl}\/login\/oauth2\/code\/{registrationId}\u0026#34; provider: keycloak: authorization-uri: ${keycloak.realm-url}\/protocol\/openid-connect\/auth jwk-set-uri: ${keycloak.realm-url}\/protocol\/openid-connect\/certs token-uri: ${keycloak.realm-url}\/protocol\/openid-connect\/token user-name-attribute: preferred_username resourceserver: jwt: issuer-uri: ${keycloak.realm-url} Now that we have setup the ARender application we can then:\n Start the Keycloak server Start the ARender application. In Linux, run the following script\n.\/ARenderConsole.sh In Windows, run the ARenderConsole.bat\nThere are also some scripts for the service mode aswell.\n/p>p>standalone/p>p>hmi/p>p>configuration/p>p>filenet/p>p>oauth/p>p>oauth2/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/filenet\/filenet-oauth\/ }, { value: Installation in Apache Tomcat, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/filenet\/filenet-tomcat\/, label: p>Below the deployment of ARender HMI for FileNet in Apache Tomcat.\nWarning Limitation: Authentication to IBM FileNet has to be configured with a technical account. The consequences will be that:\n Documents\/Annotations\/Metadata will be fetched with the technical account, Annotations will have the name of the technical account. If the need is to propagate the authentication you can either use WebSphere as Application server (see the documentation here). In our example, we are deploying the presentation server in an environment with:/p>p>Below the deployment of ARender HMI for FileNet in Apache Tomcat.\nWarning Limitation: Authentication to IBM FileNet has to be configured with a technical account. The consequences will be that:\n Documents\/Annotations\/Metadata will be fetched with the technical account, Annotations will have the name of the technical account. If the need is to propagate the authentication you can either use WebSphere as Application server (see the documentation here). In our example, we are deploying the presentation server in an environment with:\n Operating System: Windows Server 2016 Filenet 5.5 Apache Tomcat 9.0 ARender HMI for FileNet version 2023.16.0 Retrieve the ARender HMI WAR for FileNet Using the username and password beforehand provided, you can retrieve the web application in EAR format here.\nConfiguration of ARender HMI WAR for FileNet Some additional configuration is needed in the ARender for FileNet WAR to be supported in Tomcat.\nUser context configuration Open the below file:\n arondor-arender-hmi-filenet-2023.16.0.war\\WEB-INF\\classes\\arender-user-context.xml And replace the bean having the following id urlFilter by the following bean: \u0026lt;bean id\u0026#34;urlFilter\u0026#34; class\u0026#34;com.arondor.viewer.server.security.RequestParameterAuthenticationFilter\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;authenticationManager\u0026#34; ref\u0026#34;authenticationManager\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; Security configuration Remove the below file:\n arondor-arender-hmi-filenet-2023.16.0.war\\WEB-INF\\lib\\arondor-arender-filenet-ce-2023.16.0.jar\\META-INF\\web-fragment.xml Technical account configuration for the connection to FileNet Open the below file:\n arondor-arender-hmi-filenet-2023.16.0.war\\WEB-INF\\classes\\arender-server-custom-filenet.properties And add the below content (change with the value matching your context): # Default authentication method is jaasObjectStoreProvider. To activate connect through a technical account use loginPasswordObjectStoreProvider and set the right login and password below arender.server.filenet.authentication.methodloginPasswordObjectStoreProvider # Example of URL for jaasObjectStoreProvider: iiop:\/\/localhost:2809\/FileNet\/Engine and for loginPasswordObjectStoreProvider : http:\/\/localhost:9080\/wsi\/FNCEWS40MTOM\/ arender.server.filenet.ce.urlhttp:\/\/localhost:9080\/wsi\/FNCEWS40MTOM\/ arender.server.filenet.ce.loginloginToChange arender.server.filenet.ce.passwordpasswordToChange Add additional libraries Download the below JARs:\n xercesImpl version 2.11.0: download link. xml-apis version 1.4.01: download link. And place these two libraries into the following folder: arondor-arender-hmi-filenet-2023.16.0.war\\WEB-INF\\lib.\n/p>p>standalone/p>p>hmi/p>p>configuration/p>p>filenet/p>p>apache/p>p>tomcat/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/filenet\/filenet-tomcat\/ }, { value: Installation in Share, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/alfresco\/share\/alfresco-share\/, label: p>We present here the continuation of the installation of the Web-UI, in the Share module of Alfresco.\nRetrieve the presentation server archives Using the username and password beforehand provided, you can retrieve the arender for Share plugin here: arender-for-alfresco-share-plugin-2023.16.0.jar and the arender for ACS plugin here: arender-for-alfresco-ACS-plugin-2023.16.0.jar\nRe-deployment of the ARender Web-UI server in Alfresco If your Alfresco and Share module does not share the same tomcat, you will have to drop the plugin arender-for-alfresco-share-plugin-{version}./p>p>We present here the continuation of the installation of the Web-UI, in the Share module of Alfresco.\nRetrieve the presentation server archives Using the username and password beforehand provided, you can retrieve the arender for Share plugin here: arender-for-alfresco-share-plugin-2023.16.0.jar and the arender for ACS plugin here: arender-for-alfresco-ACS-plugin-2023.16.0.jar\nRe-deployment of the ARender Web-UI server in Alfresco If your Alfresco and Share module does not share the same tomcat, you will have to drop the plugin arender-for-alfresco-share-plugin-{version}.jar and arender-for-alfresco-ACS-plugin-{version}.jar in the lib\/ folder of each of these deployed applications.\nIf they are deployed in the same tomcat, then drop the arender-for-alfresco-share-plugin-{version}.jar and arender-for-alfresco-ACS-plugin-{version}.jar plugin into {alfresco_tomcat}\/shared\/lib.\nThe two plugins respectively allow to extend the ACS REST API used by ARender and the integration of the ARender viewer in share.\nAdd the following lines to the {alfresco_tomcat}\/shared\/classes\/alfresco\/web-extension\/share-config-custom.xml file between the alfresco-config attributes.\n\u0026lt;config evaluator\u0026#34;string-compare\u0026#34; condition\u0026#34;Arender\u0026#34;\u0026gt; \u0026lt;url\u0026gt;http:\/\/{arender_serveur}:{arender_port}\/{arender_contexte}\u0026lt;\/url\u0026gt; \u0026lt;!-- exemple: \u0026lt;url\u0026gt;http:\/\/192.168.1.8:8080\/ARenderHMI\u0026lt;\/url\u0026gt; --\u0026gt; \u0026lt;\/config\u0026gt; The installation complete You can now start the alfresco server and try to open a file stored in it.\nYou have finished the quick installation of ARender for Alfresco Share. To go further, go to the page here : Advanced configuration\n/p>p>standalone/p>p>hmi/p>p>web ui/p>p>configuration/p>p>alfresco/p>p>share/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/alfresco\/share\/alfresco-share\/ }, { value: Installation in Share, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/alfresco\/alfresco-share\/, label: p>We present here the continuation of the installation of the Web-UI, in the Share module of Alfresco.\nRetrieve the presentation server archives Using the username and password beforehand provided, you can retrieve the arender for Share plugin here: arender-for-alfresco-share-plugin-4.8.21.jar and the arender for ACS plugin here: arender-for-alfresco-ACS-plugin-4.8.21.jar\nRe-deployment of the ARender Web-UI server in Alfresco If your Alfresco and Share module does not share the same tomcat, you will have to drop the plugin arender-for-alfresco-share-plugin-{version}./p>p>We present here the continuation of the installation of the Web-UI, in the Share module of Alfresco.\nRetrieve the presentation server archives Using the username and password beforehand provided, you can retrieve the arender for Share plugin here: arender-for-alfresco-share-plugin-4.8.21.jar and the arender for ACS plugin here: arender-for-alfresco-ACS-plugin-4.8.21.jar\nRe-deployment of the ARender Web-UI server in Alfresco If your Alfresco and Share module does not share the same tomcat, you will have to drop the plugin arender-for-alfresco-share-plugin-{version}.jar and arender-for-alfresco-ACS-plugin-{version}.jar in the lib\/ folder of each of these deployed applications.\nIf they are deployed in the same tomcat, then drop the arender-for-alfresco-share-plugin-{version}.jar and arender-for-alfresco-ACS-plugin-{version}.jar plugin into {alfresco_tomcat}\/shared\/lib.\nThe two plugins respectively allow to extend the ACS REST API used by ARender and the integration of the ARender viewer in share.\nAdd the following lines to the {alfresco_tomcat}\/shared\/classes\/alfresco\/web-extension\/share-config-custom.xml file between the alfresco-config attributes.\n\u0026lt;config evaluator\u0026#34;string-compare\u0026#34; condition\u0026#34;Arender\u0026#34;\u0026gt; \u0026lt;url\u0026gt;http:\/\/{arender_serveur}:{arender_port}\/{arender_contexte}\u0026lt;\/url\u0026gt; \u0026lt;!-- exemple: \u0026lt;url\u0026gt;http:\/\/192.168.1.8:8080\/arender-web-ui\u0026lt;\/url\u0026gt; --\u0026gt; \u0026lt;\/config\u0026gt; The installation complete You can now start the alfresco server and try to open a file stored in it.\nYou have finished the quick installation of ARender for Alfresco Share. To go further, go to the page here : Advanced configuration\n/p>p>standalone/p>p>hmi/p>p>web ui/p>p>configuration/p>p>alfresco/p>p>share/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/alfresco\/alfresco-share\/ }, { value: Legacy installation, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/m-files\/legacy-installation\/, label: p>Here we present the Web-UI installation in M-Files.\nIn our example, we deploy the Web-UI in an environment with:\n Operating system : Windows Server 2016 Datacenter M-Files A Tomcat9 server ARender Web-UI version 4.8.21 ARender Rendition version 4.8.21. For more information on how to install, see documentation Steps to Configure the Rendition Place the arondor-arender-mfiles-connector-1.0.5.jar under rendition-engine-package-4.8.21\/modules\/RenditionEngine\/client_libs arondor-arender-mfiles-connector-1.0.5.jar Place the following property file application.properties under rendition-engine-package-4./p>p>Here we present the Web-UI installation in M-Files.\nIn our example, we deploy the Web-UI in an environment with:\n Operating system : Windows Server 2016 Datacenter M-Files A Tomcat9 server ARender Web-UI version 4.8.21 ARender Rendition version 4.8.21. For more information on how to install, see documentation Steps to Configure the Rendition Place the arondor-arender-mfiles-connector-1.0.5.jar under rendition-engine-package-4.8.21\/modules\/RenditionEngine\/client_libs arondor-arender-mfiles-connector-1.0.5.jar Place the following property file application.properties under rendition-engine-package-4.8.21\/modules\/RenditionEngine\/ application.properties Start the ARender Rendition server Steps to install the Web-UI Using the username and password previously provided (contact arender-sales@arondor.com if you want access), you can recover the version of the web application used in WAR format here.\nUse the Tomcat9 server. You just need to deploy your war (arondor-arender-hmi-4.8.21.war into and to rename it arondor-arender-mfiles.war), now place it there :\n Program Files Apache Software Foundation Tomcat 9.0 webapps Copy the previously downloaded arondor-arender-mfiles-connector-1.0.5.jar connector, place it under arondor-arender-mfiles-4.8.21\/WEB-INF\/lib.\nAfterwards :\n Place those files (below) under arondor-arender-mfiles-4.8.21\/WEB-INF\/classes arender-editor-specific-integration.xml arender-server.properties Warning You need to edit different values of the arender-server.properties file depending on your M-Files vault configuration Steps to deploy ARender on M-Files Open your M-File safe Install the ARenderApp.zip in your vault apps. ARenderApp.zip ( M-Files Admin -\u0026gt; choose your vault -\u0026gt; right click -\u0026gt; Applications -\u0026gt; Install )\n Log out of the vault and log back in to ensure changes are accounted for Steps to open a document with M-Files Restart the IIS server Start the Tomcat9 server Access M-Files under M:\/ Select your safe Drag and drop a document to open it with ARender /p>p>standalone/p>p>hmi/p>p>configuration/p>p>m-files/p>p>legacy/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/m-files\/legacy-installation\/ }, { value: Licenses, path: https:\/\/docs.arender.io\/v4\/quickstart\/licenses\/, label: p>Here are listed the licenses of the third-party programs used by ARender.\nWkhtmltopdf Site : http:\/\/wkhtmltopdf.org\/\nCopyright (c) 2007 Free Software Foundation, Inc. http:\/\/fsf.org\/\nDownload : http:\/\/wkhtmltopdf.org\/downloads.html\nLicense : \/third_party\/wk\/LICENSE.txt\nhttps:\/\/github.com\/wkhtmltopdf\/wkhtmltopdf\/blob\/master\/LICENSE\\\nFFmpeg Site : https:\/\/ffmpeg.org\/\nGNU Lesser General Public License (LGPL) version 2.1\nDownload : https:\/\/www.ffmpeg.org\/download.html\nLicense : \/third_party\/ff\/LICENSE.txt\nhttps:\/\/www.ffmpeg.org\/legal.html\\\nImageMagick Site : https:\/\/imagemagick.org\/index.php\nCopyright © 1999 ImageMagick Studio LLC\nDownload : https:\/\/imagemagick.org\/script\/download.php\nLicense : \/third_party\/im\/LICENSE.txt\nhttps:\/\/imagemagick.org\/script\/license.php\\\nLibreoffice Site : https:\/\/www./p>p>Here are listed the licenses of the third-party programs used by ARender.\nWkhtmltopdf Site : http:\/\/wkhtmltopdf.org\/\nCopyright (c) 2007 Free Software Foundation, Inc. http:\/\/fsf.org\/\nDownload : http:\/\/wkhtmltopdf.org\/downloads.html\nLicense : \/third_party\/wk\/LICENSE.txt\nhttps:\/\/github.com\/wkhtmltopdf\/wkhtmltopdf\/blob\/master\/LICENSE\\\nFFmpeg Site : https:\/\/ffmpeg.org\/\nGNU Lesser General Public License (LGPL) version 2.1\nDownload : https:\/\/www.ffmpeg.org\/download.html\nLicense : \/third_party\/ff\/LICENSE.txt\nhttps:\/\/www.ffmpeg.org\/legal.html\\\nImageMagick Site : https:\/\/imagemagick.org\/index.php\nCopyright © 1999 ImageMagick Studio LLC\nDownload : https:\/\/imagemagick.org\/script\/download.php\nLicense : \/third_party\/im\/LICENSE.txt\nhttps:\/\/imagemagick.org\/script\/license.php\\\nLibreoffice Site : https:\/\/www.libreoffice.org\/\nMozilla Public License Version 2.0\nDownload : https:\/\/www.libreoffice.org\/download\/download-libreoffice\/\nLicense : \/third_party\/lo\/LICENSE.txt\nhttps:\/\/www.libreoffice.org\/about-us\/licenses\\\n/p>p>licenses/p>p>license/p>, url: https:\/\/docs.arender.io\/v4\/quickstart\/licenses\/ }, { value: Logs, path: https:\/\/docs.arender.io\/guides\/operation\/logs\/, label: p>Since version 3, ARender relied on two different logging libraries: Log4j (http:\/\/logging.apache.org\/) 1.x (Web-UI) and Logback (https:\/\/docs.spring.io\/spring-boot\/docs\/current\/reference\/htmlsingle\/#boot-features-logging) (Rendition).\nNote that Log4J no longer provides support for its version 1.x since August 2015 which can be problematic for security vulnerabilities that will never be corrected.\nTo harmonize the use of Web-UI and Rendition logs, we have opted to switch to Logback on the Web-UI side rather than staying and upgrading the Log4j version to 2./p>p>Since version 3, ARender relied on two different logging libraries: Log4j (http:\/\/logging.apache.org\/) 1.x (Web-UI) and Logback (https:\/\/docs.spring.io\/spring-boot\/docs\/current\/reference\/htmlsingle\/#boot-features-logging) (Rendition).\nNote that Log4J no longer provides support for its version 1.x since August 2015 which can be problematic for security vulnerabilities that will never be corrected.\nTo harmonize the use of Web-UI and Rendition logs, we have opted to switch to Logback on the Web-UI side rather than staying and upgrading the Log4j version to 2.x.\nObviously, this will have an impact on the configuration since the Log4J configuration is different from Logback.\nTo migrate the log4j.properties files to its logback equivalent, you can use the log4j.properties translator (here).\nConvert Log4J configuration file to Logback The log4j configuration file for the Web-UI part looked like this :\nlog4j.properties log4j.rootCategoryWARN, default log4j.category.com.arondor INFO log4j.category.com.arondor.common.management FATAL log4j.category.arender-startupINFO log4j.category.com.arondor.viewer.common.logger INFO, perf log4j.category.com.arondor.common.reflection.parser.springOFF # Avoid to have the performance log in the default log log4j.additivity.com.arondor.viewer.common.loggerfalse log4j.appender.defaultorg.apache.log4j.ConsoleAppender log4j.appender.default.layoutorg.apache.log4j.PatternLayout log4j.appender.default.layout.ConversionPattern%d{ISO8601} %p %t %c:%L - %m%n log4j.appender.VIEWERorg.apache.log4j.RollingFileAppender log4j.appender.VIEWER.MaxFileSize20000KB log4j.appender.VIEWER.MaxBackupIndex6 log4j.appender.VIEWER.File\/tmp\/viewer\/server.log log4j.appender.VIEWER.layoutorg.apache.log4j.PatternLayout log4j.appender.VIEWER.layout.ConversionPattern%d{ISO8601} %p %t %c:%L - %m%n log4j.appender.perforg.apache.log4j.RollingFileAppender log4j.appender.perf.MaxFileSize20000KB log4j.appender.perf.MaxBackupIndex6 log4j.appender.perf.Filearender-hmi-perf.log log4j.appender.perf.layoutorg.apache.log4j.PatternLayout log4j.appender.perf.layout.ConversionPattern%m%n Now, after going through the log4j.properties translator, we get the following result:\nlogback.xml \u0026lt;?xml version\u0026#34;1.0\u0026#34; encoding\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;configuration\u0026gt; \u0026lt;!-- File Appender for Web-UI server log --\u0026gt; \u0026lt;appender name\u0026#34;SERVER\u0026#34; class\u0026#34;ch.qos.logback.core.rolling.RollingFileAppender\u0026#34;\u0026gt; \u0026lt;file\u0026gt;arender-server.log\u0026lt;\/file\u0026gt; \u0026lt;encoder\u0026gt; \u0026lt;pattern\u0026gt;%d{ISO8601} %p %t %c:%L - %m%n\u0026lt;\/pattern\u0026gt; \u0026lt;\/encoder\u0026gt; \u0026lt;rollingPolicy class\u0026#34;ch.qos.logback.core.rolling.FixedWindowRollingPolicy\u0026#34;\u0026gt; \u0026lt;fileNamePattern\u0026gt;arender-server.%i.log.zip\u0026lt;\/fileNamePattern\u0026gt; \u0026lt;minIndex\u0026gt;1\u0026lt;\/minIndex\u0026gt; \u0026lt;maxIndex\u0026gt;20\u0026lt;\/maxIndex\u0026gt; \u0026lt;\/rollingPolicy\u0026gt; \u0026lt;triggeringPolicy class\u0026#34;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\u0026#34;\u0026gt; \u0026lt;maxFileSize\u0026gt;50MB\u0026lt;\/maxFileSize\u0026gt; \u0026lt;\/triggeringPolicy\u0026gt; \u0026lt;\/appender\u0026gt; \u0026lt;!-- File Appender for Web-UI perf log --\u0026gt; \u0026lt;appender name\u0026#34;PERF\u0026#34; class\u0026#34;ch.qos.logback.core.rolling.RollingFileAppender\u0026#34;\u0026gt; \u0026lt;file\u0026gt;arender-perf.log\u0026lt;\/file\u0026gt; \u0026lt;encoder\u0026gt; \u0026lt;pattern\u0026gt;%msg%n\u0026lt;\/pattern\u0026gt; \u0026lt;\/encoder\u0026gt; \u0026lt;rollingPolicy class\u0026#34;ch.qos.logback.core.rolling.FixedWindowRollingPolicy\u0026#34;\u0026gt; \u0026lt;fileNamePattern\u0026gt;arender-perf.%i.log.zip\u0026lt;\/fileNamePattern\u0026gt; \u0026lt;minIndex\u0026gt;1\u0026lt;\/minIndex\u0026gt; \u0026lt;maxIndex\u0026gt;6\u0026lt;\/maxIndex\u0026gt; \u0026lt;\/rollingPolicy\u0026gt; \u0026lt;triggeringPolicy class\u0026#34;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\u0026#34;\u0026gt; \u0026lt;maxFileSize\u0026gt;50MB\u0026lt;\/maxFileSize\u0026gt; \u0026lt;\/triggeringPolicy\u0026gt; \u0026lt;\/appender\u0026gt; \u0026lt;!-- Console Appender --\u0026gt; \u0026lt;appender name\u0026#34;STDOUT\u0026#34; class\u0026#34;ch.qos.logback.core.ConsoleAppender\u0026#34;\u0026gt; \u0026lt;encoder\u0026gt; \u0026lt;pattern\u0026gt;%d{ISO8601} %p %t %c:%L - %m%n\u0026lt;\/pattern\u0026gt; \u0026lt;\/encoder\u0026gt; \u0026lt;\/appender\u0026gt; \u0026lt;!-- Logger --\u0026gt; \u0026lt;logger name\u0026#34;arender-startup\u0026#34; level\u0026#34;INFO\u0026#34; \/\u0026gt; \u0026lt;logger name\u0026#34;com.arondor.common.reflection.parser.spring\u0026#34; level\u0026#34;OFF\u0026#34;\/\u0026gt; \u0026lt;logger name\u0026#34;com.arondor.viewer.common.logger\u0026#34; level\u0026#34;INFO\u0026#34; additivity\u0026#34;false\u0026#34;\u0026gt; \u0026lt;appender-ref ref\u0026#34;PERF\u0026#34; \/\u0026gt; \u0026lt;\/logger\u0026gt; \u0026lt;logger name\u0026#34;com.arondor\u0026#34; level\u0026#34;INFO\u0026#34;\u0026gt; \u0026lt;appender-ref ref\u0026#34;SERVER\u0026#34; \/\u0026gt; \u0026lt;\/logger\u0026gt; \u0026lt;logger name\u0026#34;com.arondor.common.management\u0026#34; level\u0026#34;FATAL\u0026#34; \/\u0026gt; \u0026lt;root level\u0026#34;WARN\u0026#34;\u0026gt; \u0026lt;appender-ref ref\u0026#34;STDOUT\u0026#34; \/\u0026gt; \u0026lt;\/root\u0026gt; \u0026lt;\/configuration\u0026gt; Location of log files The location of the output log file for the presentation server (Web-UI) is in \u0026lt;TOMCAT_PATH\u0026gt;\/bin\nFor rendition log files, you can find them in the following locations:\n Micro-Service Path Detail RenditionEngine Rendition\/modules\/RenditionEngine\/arender-server.log Logs dedicated to call routing TaskConversionEngine Rendition\/modules\/TaskConversionEngine\/arender-taskconversion.log Logs dedicated to documents conversion JNIPDFEngine Rendition\/modules\/JNIPDFEngine\/arender-jnipdf.log Logs dedicated to image generation PDFBoxEngine Rendition\/modules\/PDFBoxEngine\/arender-pdfbox.log Logs dedicated to PDF manipulations Location of log configuration file Web-UI Service Path Detail Web-UI Server arondor-arender-hmi-spring-boot-2023.16.0.jar\\BOOT-INF\\classes\\logback.xml Logs dedicated to the presentation server Rendition For each of the micro services, you will find the default logback configuration file in their jar.\n Service Path Detail RenditionEngine BOOT-INF\/classes\/logback-spring.xml Logs configuration TaskConversionEngine BOOT-INF\/classes\/logback-spring.xml Logs configuration JNIPDFEngine BOOT-INF\/classes\/logback-spring.xml Logs configuration PDFBoxEngine BOOT-INF\/classes\/logback-spring.xml Logs configuration In order to outsource the logback configuration, simply create your logback.xml file and then create an application.properties file located next to the jar of each of the microservices with the following property to indicate the location of the customized logback configuration file.\napplication.properties logging.configfile:\u0026lt;YOUR_PATH\u0026gt;\/logback-spring.xml Format logs in JSON Most Java logging libraries today offer different layout options for formatting logs to precisely match the needs of each project.\nHere we will see how to format and produce our log entries in JSON format.\nHere is an example of the default Broker microservice configuration so that logs are saved to a file:\nlogback-spring.xml \u0026lt;appender name\u0026#34;SERVER\u0026#34; class\u0026#34;ch.qos.logback.core.rolling.RollingFileAppender\u0026#34;\u0026gt; \u0026lt;file\u0026gt;arender-server.log\u0026lt;\/file\u0026gt; \u0026lt;encoder\u0026gt; \u0026lt;pattern\u0026gt;%date %level %thread %logger{10} %file:%line %msg%n\u0026lt;\/pattern\u0026gt; \u0026lt;\/encoder\u0026gt; \u0026lt;rollingPolicy class\u0026#34;ch.qos.logback.core.rolling.FixedWindowRollingPolicy\u0026#34;\u0026gt; \u0026lt;fileNamePattern\u0026gt;arender-server.%i.log.zip\u0026lt;\/fileNamePattern\u0026gt; \u0026lt;minIndex\u0026gt;1\u0026lt;\/minIndex\u0026gt; \u0026lt;maxIndex\u0026gt;100\u0026lt;\/maxIndex\u0026gt; \u0026lt;\/rollingPolicy\u0026gt; \u0026lt;triggeringPolicy class\u0026#34;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\u0026#34;\u0026gt; \u0026lt;maxFileSize\u0026gt;50MB\u0026lt;\/maxFileSize\u0026gt; \u0026lt;\/triggeringPolicy\u0026gt; \u0026lt;\/appender\u0026gt; To configure the formatting in JSON, you must redefine the encoder tag to use the LayoutWrappingEncoder. This will allow us to use the layout tag to set the JSON formatting as described below:\nlogback-spring.xml \u0026lt;appender name\u0026#34;SERVER\u0026#34; class\u0026#34;ch.qos.logback.core.rolling.RollingFileAppender\u0026#34;\u0026gt; \u0026lt;file\u0026gt;arender-server.log\u0026lt;\/file\u0026gt; \u0026lt;encoder class\u0026#34;ch.qos.logback.core.encoder.LayoutWrappingEncoder\u0026#34;\u0026gt; \u0026lt;layout class\u0026#34;ch.qos.logback.contrib.json.classic.JsonLayout\u0026#34;\u0026gt; \u0026lt;jsonFormatter class\u0026#34;ch.qos.logback.contrib.jackson.JacksonJsonFormatter\u0026#34;\u0026gt; \u0026lt;prettyPrint\u0026gt;true\u0026lt;\/prettyPrint\u0026gt; \u0026lt;\/jsonFormatter\u0026gt; \u0026lt;timestampFormat\u0026gt;yyyy-MM-dd\u0026#39; \u0026#39;HH:mm:ss.SSS\u0026lt;\/timestampFormat\u0026gt; \u0026lt;\/layout\u0026gt; \u0026lt;\/encoder\u0026gt; \u0026lt;rollingPolicy class\u0026#34;ch.qos.logback.core.rolling.FixedWindowRollingPolicy\u0026#34;\u0026gt; \u0026lt;fileNamePattern\u0026gt;arender-server.%i.log.zip\u0026lt;\/fileNamePattern\u0026gt; \u0026lt;minIndex\u0026gt;1\u0026lt;\/minIndex\u0026gt; \u0026lt;maxIndex\u0026gt;100\u0026lt;\/maxIndex\u0026gt; \u0026lt;\/rollingPolicy\u0026gt; \u0026lt;triggeringPolicy class\u0026#34;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\u0026#34;\u0026gt; \u0026lt;maxFileSize\u0026gt;50MB\u0026lt;\/maxFileSize\u0026gt; \u0026lt;\/triggeringPolicy\u0026gt; \u0026lt;\/appender\u0026gt; Automatically reloading configuration file upon modification If instructed to do so, logback-classic will scan for changes in its configuration file and automatically reconfigure itself when the configuration file changes. In order to instruct logback-classic to scan for changes in its configuration file and to automatically re-configure itself set the scan attribute of the element to true, as shown next.\nlogback-spring.xml \u0026lt;configuration scan\u0026#34;true\u0026#34;\u0026gt; ... \u0026lt;\/configuration\u0026gt; /p>p>exploitation/p>p>logs/p>, url: https:\/\/docs.arender.io\/guides\/operation\/logs\/ }, { value: Logs, path: https:\/\/docs.arender.io\/v4\/operation\/logs\/, label: p>Since version 3, ARender relied on two different logging libraries: Log4j (http:\/\/logging.apache.org\/) 1.x (Web-UI) and Logback (https:\/\/docs.spring.io\/spring-boot\/docs\/current\/reference\/htmlsingle\/#boot-features-logging) (Rendition).\nNote that Log4J no longer provides support for its version 1.x since August 2015 which can be problematic for security vulnerabilities that will never be corrected.\nTo harmonize the use of Web-UI and Rendition logs, we have opted to switch to Logback on the Web-UI side rather than staying and upgrading the Log4j version to 2./p>p>Since version 3, ARender relied on two different logging libraries: Log4j (http:\/\/logging.apache.org\/) 1.x (Web-UI) and Logback (https:\/\/docs.spring.io\/spring-boot\/docs\/current\/reference\/htmlsingle\/#boot-features-logging) (Rendition).\nNote that Log4J no longer provides support for its version 1.x since August 2015 which can be problematic for security vulnerabilities that will never be corrected.\nTo harmonize the use of Web-UI and Rendition logs, we have opted to switch to Logback on the Web-UI side rather than staying and upgrading the Log4j version to 2.x.\nObviously, this will have an impact on the configuration since the Log4J configuration is different from Logback.\nTo migrate the log4j.properties files to its logback equivalent, you can use the log4j.properties translator (here).\nConvert Log4J configuration file to Logback The log4j configuration file for the Web-UI part looked like this :\nlog4j.properties log4j.rootCategoryWARN, default log4j.category.com.arondor INFO log4j.category.com.arondor.common.management FATAL log4j.category.arender-startupINFO log4j.category.com.arondor.viewer.common.logger INFO, perf log4j.category.com.arondor.common.reflection.parser.springOFF # Avoid to have the performance log in the default log log4j.additivity.com.arondor.viewer.common.loggerfalse log4j.appender.defaultorg.apache.log4j.ConsoleAppender log4j.appender.default.layoutorg.apache.log4j.PatternLayout log4j.appender.default.layout.ConversionPattern%d{ISO8601} %p %t %c:%L - %m%n log4j.appender.VIEWERorg.apache.log4j.RollingFileAppender log4j.appender.VIEWER.MaxFileSize20000KB log4j.appender.VIEWER.MaxBackupIndex6 log4j.appender.VIEWER.File\/tmp\/viewer\/server.log log4j.appender.VIEWER.layoutorg.apache.log4j.PatternLayout log4j.appender.VIEWER.layout.ConversionPattern%d{ISO8601} %p %t %c:%L - %m%n log4j.appender.perforg.apache.log4j.RollingFileAppender log4j.appender.perf.MaxFileSize20000KB log4j.appender.perf.MaxBackupIndex6 log4j.appender.perf.Filearender-hmi-perf.log log4j.appender.perf.layoutorg.apache.log4j.PatternLayout log4j.appender.perf.layout.ConversionPattern%m%n Now, after going through the log4j.properties translator, we get the following result:\nlogback.xml \u0026lt;?xml version\u0026#34;1.0\u0026#34; encoding\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;configuration\u0026gt; \u0026lt;!-- File Appender for Web-UI server log --\u0026gt; \u0026lt;appender name\u0026#34;SERVER\u0026#34; class\u0026#34;ch.qos.logback.core.rolling.RollingFileAppender\u0026#34;\u0026gt; \u0026lt;file\u0026gt;arender-server.log\u0026lt;\/file\u0026gt; \u0026lt;encoder\u0026gt; \u0026lt;pattern\u0026gt;%d{ISO8601} %p %t %c:%L - %m%n\u0026lt;\/pattern\u0026gt; \u0026lt;\/encoder\u0026gt; \u0026lt;rollingPolicy class\u0026#34;ch.qos.logback.core.rolling.FixedWindowRollingPolicy\u0026#34;\u0026gt; \u0026lt;fileNamePattern\u0026gt;arender-server.%i.log.zip\u0026lt;\/fileNamePattern\u0026gt; \u0026lt;minIndex\u0026gt;1\u0026lt;\/minIndex\u0026gt; \u0026lt;maxIndex\u0026gt;20\u0026lt;\/maxIndex\u0026gt; \u0026lt;\/rollingPolicy\u0026gt; \u0026lt;triggeringPolicy class\u0026#34;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\u0026#34;\u0026gt; \u0026lt;maxFileSize\u0026gt;50MB\u0026lt;\/maxFileSize\u0026gt; \u0026lt;\/triggeringPolicy\u0026gt; \u0026lt;\/appender\u0026gt; \u0026lt;!-- File Appender for Web-UI perf log --\u0026gt; \u0026lt;appender name\u0026#34;PERF\u0026#34; class\u0026#34;ch.qos.logback.core.rolling.RollingFileAppender\u0026#34;\u0026gt; \u0026lt;file\u0026gt;arender-perf.log\u0026lt;\/file\u0026gt; \u0026lt;encoder\u0026gt; \u0026lt;pattern\u0026gt;%msg%n\u0026lt;\/pattern\u0026gt; \u0026lt;\/encoder\u0026gt; \u0026lt;rollingPolicy class\u0026#34;ch.qos.logback.core.rolling.FixedWindowRollingPolicy\u0026#34;\u0026gt; \u0026lt;fileNamePattern\u0026gt;arender-perf.%i.log.zip\u0026lt;\/fileNamePattern\u0026gt; \u0026lt;minIndex\u0026gt;1\u0026lt;\/minIndex\u0026gt; \u0026lt;maxIndex\u0026gt;6\u0026lt;\/maxIndex\u0026gt; \u0026lt;\/rollingPolicy\u0026gt; \u0026lt;triggeringPolicy class\u0026#34;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\u0026#34;\u0026gt; \u0026lt;maxFileSize\u0026gt;50MB\u0026lt;\/maxFileSize\u0026gt; \u0026lt;\/triggeringPolicy\u0026gt; \u0026lt;\/appender\u0026gt; \u0026lt;!-- Console Appender --\u0026gt; \u0026lt;appender name\u0026#34;STDOUT\u0026#34; class\u0026#34;ch.qos.logback.core.ConsoleAppender\u0026#34;\u0026gt; \u0026lt;encoder\u0026gt; \u0026lt;pattern\u0026gt;%d{ISO8601} %p %t %c:%L - %m%n\u0026lt;\/pattern\u0026gt; \u0026lt;\/encoder\u0026gt; \u0026lt;\/appender\u0026gt; \u0026lt;!-- Logger --\u0026gt; \u0026lt;logger name\u0026#34;arender-startup\u0026#34; level\u0026#34;INFO\u0026#34; \/\u0026gt; \u0026lt;logger name\u0026#34;com.arondor.common.reflection.parser.spring\u0026#34; level\u0026#34;OFF\u0026#34;\/\u0026gt; \u0026lt;logger name\u0026#34;com.arondor.viewer.common.logger\u0026#34; level\u0026#34;INFO\u0026#34; additivity\u0026#34;false\u0026#34;\u0026gt; \u0026lt;appender-ref ref\u0026#34;PERF\u0026#34; \/\u0026gt; \u0026lt;\/logger\u0026gt; \u0026lt;logger name\u0026#34;com.arondor\u0026#34; level\u0026#34;INFO\u0026#34;\u0026gt; \u0026lt;appender-ref ref\u0026#34;SERVER\u0026#34; \/\u0026gt; \u0026lt;\/logger\u0026gt; \u0026lt;logger name\u0026#34;com.arondor.common.management\u0026#34; level\u0026#34;FATAL\u0026#34; \/\u0026gt; \u0026lt;root level\u0026#34;WARN\u0026#34;\u0026gt; \u0026lt;appender-ref ref\u0026#34;STDOUT\u0026#34; \/\u0026gt; \u0026lt;\/root\u0026gt; \u0026lt;\/configuration\u0026gt; Location of log files The location of the output log file for the presentation server (Web-UI) is in \u0026lt;TOMCAT_PATH\u0026gt;\/bin\nFor rendition log files, you can find them in the following locations:\n Micro-Service Path Detail RenditionEngine Rendition\/modules\/RenditionEngine\/arender-server.log Logs dedicated to call routing TaskConversionEngine Rendition\/modules\/TaskConversionEngine\/arender-taskconversion.log Logs dedicated to documents conversion JNIPDFEngine Rendition\/modules\/JNIPDFEngine\/arender-jnipdf.log Logs dedicated to image generation PDFBoxEngine Rendition\/modules\/PDFBoxEngine\/arender-pdfbox.log Logs dedicated to PDF manipulations Location of log configuration file Web-UI Service Path Detail Web-UI Server \u0026lt;TOMCAT_PATH\u0026gt;\/\/WEB-INF\/classes\/logback.xml Logs dedicated to the presentation server Rendition For each of the micro services, you will find the default logback configuration file in their jar.\n Service Path Detail RenditionEngine BOOT-INF\/classes\/logback-spring.xml Logs configuration TaskConversionEngine BOOT-INF\/classes\/logback-spring.xml Logs configuration JNIPDFEngine BOOT-INF\/classes\/logback-spring.xml Logs configuration PDFBoxEngine BOOT-INF\/classes\/logback-spring.xml Logs configuration In order to outsource the logback configuration, simply create your logback.xml file and then create an application.properties file located next to the jar of each of the micro services with the following property to indicate the location of the customized logback configuration file.\napplication.properties logging.configfile:\u0026lt;YOUR_PATH\u0026gt;\/logback-spring.xml Format logs in JSON Most Java logging libraries today offer different layout options for formatting logs to precisely match the needs of each project.\nHere we will see how to format and produce our log entries in JSON format.\nHere is an example of the default Broker microservice configuration so that logs are saved to a file:\nlogback-spring.xml \u0026lt;appender name\u0026#34;SERVER\u0026#34; class\u0026#34;ch.qos.logback.core.rolling.RollingFileAppender\u0026#34;\u0026gt; \u0026lt;file\u0026gt;arender-server.log\u0026lt;\/file\u0026gt; \u0026lt;encoder\u0026gt; \u0026lt;pattern\u0026gt;%date %level %thread %logger{10} %file:%line %msg%n\u0026lt;\/pattern\u0026gt; \u0026lt;\/encoder\u0026gt; \u0026lt;rollingPolicy class\u0026#34;ch.qos.logback.core.rolling.FixedWindowRollingPolicy\u0026#34;\u0026gt; \u0026lt;fileNamePattern\u0026gt;arender-server.%i.log.zip\u0026lt;\/fileNamePattern\u0026gt; \u0026lt;minIndex\u0026gt;1\u0026lt;\/minIndex\u0026gt; \u0026lt;maxIndex\u0026gt;100\u0026lt;\/maxIndex\u0026gt; \u0026lt;\/rollingPolicy\u0026gt; \u0026lt;triggeringPolicy class\u0026#34;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\u0026#34;\u0026gt; \u0026lt;maxFileSize\u0026gt;50MB\u0026lt;\/maxFileSize\u0026gt; \u0026lt;\/triggeringPolicy\u0026gt; \u0026lt;\/appender\u0026gt; To configure the formatting in JSON, you must redefine the encoder tag to use the LayoutWrappingEncoder. This will allow us to use the layout tag to set the JSON formatting as described below:\nlogback-spring.xml \u0026lt;appender name\u0026#34;SERVER\u0026#34; class\u0026#34;ch.qos.logback.core.rolling.RollingFileAppender\u0026#34;\u0026gt; \u0026lt;file\u0026gt;arender-server.log\u0026lt;\/file\u0026gt; \u0026lt;encoder class\u0026#34;ch.qos.logback.core.encoder.LayoutWrappingEncoder\u0026#34;\u0026gt; \u0026lt;layout class\u0026#34;ch.qos.logback.contrib.json.classic.JsonLayout\u0026#34;\u0026gt; \u0026lt;jsonFormatter class\u0026#34;ch.qos.logback.contrib.jackson.JacksonJsonFormatter\u0026#34;\u0026gt; \u0026lt;prettyPrint\u0026gt;true\u0026lt;\/prettyPrint\u0026gt; \u0026lt;\/jsonFormatter\u0026gt; \u0026lt;timestampFormat\u0026gt;yyyy-MM-dd\u0026#39; \u0026#39;HH:mm:ss.SSS\u0026lt;\/timestampFormat\u0026gt; \u0026lt;\/layout\u0026gt; \u0026lt;\/encoder\u0026gt; \u0026lt;rollingPolicy class\u0026#34;ch.qos.logback.core.rolling.FixedWindowRollingPolicy\u0026#34;\u0026gt; \u0026lt;fileNamePattern\u0026gt;arender-server.%i.log.zip\u0026lt;\/fileNamePattern\u0026gt; \u0026lt;minIndex\u0026gt;1\u0026lt;\/minIndex\u0026gt; \u0026lt;maxIndex\u0026gt;100\u0026lt;\/maxIndex\u0026gt; \u0026lt;\/rollingPolicy\u0026gt; \u0026lt;triggeringPolicy class\u0026#34;ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\u0026#34;\u0026gt; \u0026lt;maxFileSize\u0026gt;50MB\u0026lt;\/maxFileSize\u0026gt; \u0026lt;\/triggeringPolicy\u0026gt; \u0026lt;\/appender\u0026gt; Automatically reloading configuration file upon modification If instructed to do so, logback-classic will scan for changes in its configuration file and automatically reconfigure itself when the configuration file changes. In order to instruct logback-classic to scan for changes in its configuration file and to automatically re-configure itself set the scan attribute of the element to true, as shown next.\nlogback-spring.xml \u0026lt;configuration scan\u0026#34;true\u0026#34;\u0026gt; ... \u0026lt;\/configuration\u0026gt; /p>p>exploitation/p>p>logs/p>, url: https:\/\/docs.arender.io\/v4\/operation\/logs\/ }, { value: Metrics, path: https:\/\/docs.arender.io\/guides\/exploitation\/metrics\/, label: p>Service status The service responsible for documents rendition needs to be monitored in order to supervise the rendition server.\nTo monitor, you need to verify the service status to check its state.\nDepending on the operating systems, the status identification indicating the operation is different:\n Windows Linux $\u0026gt; sc query ARenderRenditionService If the service is correctly running this command will return: 4 RUNNING\n If systemd is the system initialization component:/p>p>Service status The service responsible for documents rendition needs to be monitored in order to supervise the rendition server.\nTo monitor, you need to verify the service status to check its state.\nDepending on the operating systems, the status identification indicating the operation is different:\n Windows Linux $\u0026gt; sc query ARenderRenditionService If the service is correctly running this command will return: 4 RUNNING\n If systemd is the system initialization component:\n$\u0026gt; systemctl status ARenderRenditionEngineService.service If initd is the system initialization component:\n$\u0026gt; service ARenderRenditionEngineService status If the service is correctly running this command will return: STARTED\n Monitoring system Since version 4, ARender allows sending performance logs to ElasticSearch and viewing metrics on the Kibana dashboard. It is interesting to have the metric data of a service but we must not restrict ourselves to a single monitoring system. This is why we have integrated Micrometer into ARender in order to facilitate the sending of metrics to different monitoring systems.\nSo far we have only made these monitoring systems available: Prometheus, Elasticsearch, CloudWatch and Datadog.\nWe will add later, other systems so as not to be limited to only those.\nConfiguration of the monitoring system Web-UI Server properties You will find below the list of default properties on the Web-UI Server side.\narender-server-default.properties arender.server.metrics.tags.hostarender-hmi arender.server.metrics.tags.applicationarender arender.server.metrics.process.enabledfalse arender.server.metrics.jvm.enabledfalse arender.server.metrics.system.enabledfalse # Set the registry name to use to export metrics # Possible value : prometheus, elastic, datadog # Default to elastic arender.server.meter.registry.nameelastic # Prometheus configurations arender.server.export.prometheus.enabledfalse arender.server.export.prometheus.descriptionsfalse arender.server.export.prometheus.frequency.amount5 arender.server.export.prometheus.frequency.unitMINUTES # Elastic configurations arender.server.export.elastic.enabledfalse arender.server.export.elastic.hosthttp:\/\/localhost:9200 arender.server.export.elastic.indexarender-micrometer-metrics arender.server.export.elastic.index-date-formatyyyy-MM arender.server.export.elastic.timestamp-field-name@timestamp arender.server.export.elastic.auto-create-indextrue arender.server.export.elastic.user-name arender.server.export.elastic.password arender.server.export.elastic.frequency.amount5 arender.server.export.elastic.frequency.unitMINUTES # Datadog configurations arender.server.export.datadog.enabledfalse arender.server.export.datadog.api-key arender.server.export.datadog.application-key arender.server.export.datadog.descriptionsfalse arender.server.export.datadog.host-taginstance arender.server.export.datadog.urihttps:\/\/app.datadoghq.com arender.server.export.datadog.frequency.amount5 arender.server.export.datadog.frequency.unitMINUTES # CloudWatch configurations arender.server.export.cloudwatch.enabledfalse arender.server.export.cloudwatch.namespacearenderHMI arender.server.export.cloudwatch.regioneu-west-1 arender.server.export.cloudwatch.frequency.amount5 arender.server.export.cloudwatch.frequency.unitMINUTES Rendition properties Below is the list of default properties for all rendition services.\n Broker (DSB) TaskConversion (DCV) PDFBox (DTH) JNI (DRN) management.metrics.tags.hostarender-broker management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 management.metrics.enable.tomcatfalse management.metrics.enable.httpfalse management.metrics.enable.logbackfalse management.metrics.enable.jvmfalse management.metrics.enable.processfalse management.metrics.enable.systemfalse management.metrics.enable.applicationfalse management.metrics.enable.executorfalse management.metrics.enable.diskfalse # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step5m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step5m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ # StatsD monitoring system management.metrics.export.statsd.enabledfalse management.metrics.export.statsd.step5m management.metrics.export.statsd.hostlocalhost management.metrics.export.statsd.port8125 # CloudWatch monitoring system management.metrics.export.cloudwatch.enabledfalse management.metrics.export.cloudwatch.namespacebrokerNameSpace management.metrics.export.cloudwatch.step5m management.metrics.export.cloudwatch.batchSize20 management.metrics.export.cloudwatch.regioneu-west-1 management.metrics.tags.hostarender-taskconversion management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 management.metrics.enable.tomcatfalse management.metrics.enable.httpfalse management.metrics.enable.logbackfalse management.metrics.enable.jvmfalse management.metrics.enable.processfalse management.metrics.enable.systemfalse management.metrics.enable.applicationfalse management.metrics.enable.executorfalse management.metrics.enable.diskfalse # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health,shutdown management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step5m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step5m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ # StatsD monitoring system management.metrics.export.statsd.enabledfalse management.metrics.export.statsd.step5m management.metrics.export.statsd.hostlocalhost management.metrics.export.statsd.port8125 # CloudWatch monitoring system management.metrics.export.cloudwatch.enabledfalse management.metrics.export.cloudwatch.namespaceconverterNameSpace management.metrics.export.cloudwatch.step5m management.metrics.export.cloudwatch.batchSize20 management.metrics.export.cloudwatch.regioneu-west-1 management.metrics.tags.hostarender-pdfbox management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 management.metrics.enable.tomcatfalse management.metrics.enable.httpfalse management.metrics.enable.logbackfalse management.metrics.enable.jvmfalse management.metrics.enable.processfalse management.metrics.enable.systemfalse management.metrics.enable.applicationfalse management.metrics.enable.executorfalse management.metrics.enable.diskfalse # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health,shutdown management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step5m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step5m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ # StatsD monitoring system management.metrics.export.statsd.enabledfalse management.metrics.export.statsd.step5m management.metrics.export.statsd.hostlocalhost management.metrics.export.statsd.port8125 # CloudWatch monitoring system management.metrics.export.cloudwatch.enabledfalse management.metrics.export.cloudwatch.namespacepdfboxNameSpace management.metrics.export.cloudwatch.step5m management.metrics.export.cloudwatch.batchSize20 management.metrics.export.cloudwatch.regioneu-west-1 management.metrics.tags.hostarender-jni management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 management.metrics.enable.tomcatfalse management.metrics.enable.httpfalse management.metrics.enable.logbackfalse management.metrics.enable.jvmfalse management.metrics.enable.processfalse management.metrics.enable.systemfalse management.metrics.enable.applicationfalse management.metrics.enable.executorfalse management.metrics.enable.diskfalse # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health,shutdown management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step5m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step5m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ # StatsD monitoring system management.metrics.export.statsd.enabledfalse management.metrics.export.statsd.step5m management.metrics.export.statsd.hostlocalhost management.metrics.export.statsd.port8125 # CloudWatch monitoring system management.metrics.export.cloudwatch.enabledfalse management.metrics.export.cloudwatch.namespacerendererNameSpace management.metrics.export.cloudwatch.step5m management.metrics.export.cloudwatch.batchSize20 management.metrics.export.cloudwatch.regioneu-west-1 Configuring sent metrics ARender sends different metrics to the monitoring system. To avoid overloading the system with dozens of metrics sent by ARender, properties are made available so you can enable\/disable the metrics and tags\/dimensions you need.\nWeb-UI Server properties arender-server-default.properties # ARender endpoint export metric arender.endpoint.metrics.export.has.document.enabledfalse arender.endpoint.metrics.export.bookmarks.enabledfalse arender.endpoint.metrics.export.document.layout.enabledfalse arender.endpoint.metrics.export.document.metadata.enabledfalse arender.endpoint.metrics.export.image.enabledfalse arender.endpoint.metrics.export.page.contents.enabledfalse arender.endpoint.metrics.export.search.enabledfalse arender.endpoint.metrics.export.advanced.search.enabledfalse arender.endpoint.metrics.export.load.document.enabledfalse arender.endpoint.metrics.export.evict.enabledfalse arender.endpoint.metrics.export.alter.document.enabledfalse arender.endpoint.metrics.export.annotation.enabledfalse arender.endpoint.metrics.export.compare.enabledfalse arender.endpoint.metrics.export.named.destinationfalse arender.endpoint.metrics.export.get.file.chunk.enabledfalse arender.endpoint.metrics.export.weather.enabledfalse arender.endpoint.metrics.export.readiness.enabledfalse arender.endpoint.metrics.export.signature.enabledfalse arender.endpoint.metrics.export.printable.pdf.enabledfalse arender.endpoint.metrics.export.opening.time.enabledfalse arender.endpoint.metrics.export.url.parsing.enabledfalse arender.endpoint.metrics.export.document.accessor.enabledfalse arender.endpoint.metrics.export.document.size.enabledfalse # Whitelist tags to be exported, comma separated arender.endpoint.metrics.export.whitelist.tagshost,mimeType # Blacklist tags to be exported from system meter (jvm, process, http, tomcat, etc) arender.system.metrics.export.blacklist.tags # Metric tool to time or count the request. Possible values : TIMER, COUNTER arender.metric.meter.toolCOUNTER You will find below the list of metric names as well as the tags\/dimensions sent, which can be used to whitelist the tags to send.\nRendition properties You will find below the list of properties allowing to deactivate the metrics as well as to whitelist the tags to be sent.\nNote: These are the same properties for each of the rendition services.\napplication.properties # ARender endpoint metrics export arender.endpoint.metrics.export.has.document.enabledfalse arender.endpoint.metrics.export.bookmarks.enabledfalse arender.endpoint.metrics.export.document.layout.enabledfalse arender.endpoint.metrics.export.load.document.content.enabledfalse arender.endpoint.metrics.export.get.file.chunk.enabledfalse arender.endpoint.metrics.export.text.position.enabledfalse arender.endpoint.metrics.export.document.annotation.enabledfalse arender.endpoint.metrics.export.transformation.enabledfalse arender.endpoint.metrics.export.document.metadata.enabledfalse arender.endpoint.metrics.export.image.enabledfalse arender.endpoint.metrics.export.page.contents.enabledfalse arender.endpoint.metrics.export.search.enabledfalse arender.endpoint.metrics.export.advanced.search.enabledfalse arender.endpoint.metrics.export.load.document.enabledfalse arender.endpoint.metrics.export.evict.enabledfalse arender.endpoint.metrics.export.annotation.enabledfalse arender.endpoint.metrics.export.compare.enabledfalse arender.endpoint.metrics.export.named.destinationfalse arender.endpoint.metrics.export.weather.enabledfalse arender.endpoint.metrics.export.readiness.enabledfalse arender.endpoint.metrics.export.signature.enabledfalse arender.endpoint.metrics.export.printable.pdf.enabledfalse arender.endpoint.metrics.export.convert.enabledfalse arender.endpoint.metrics.export.health.record.enabledfalse # Whitelist tags to be exported, comma separated arender.endpoint.metrics.export.whitelist.tagshost,mimeType arender.endpoint.metrics.export.correlation.id.tag.enabledfalse # Blacklist tags to be exported from system meter (jvm, process, http, tomcat, etc) arender.system.metrics.export.blacklist.tags # Metric tool to time or count the request. Possible values : TIMER, COUNTER arender.metric.meter.toolCOUNTER List of all metrics Below is the list of all metrics sent to the configured monitoring system :\n Name Tags \/ Dimensions arender.annotation.accessor documentId arender.annotation.convert.annotations sourceType, targetType, documentId, Accept arender.annotation.extract documentId arender.annotation.search.text documentId arender.application.opening.time documentId, mimetype arender.comparison.post.comparison comparisonRequest arender.comparison.get.comparisonOrder comparisonOrderId arender.comparison.get.difference leftDocumentId, rightDocumentId arender.conversion.get.conversion.order conversionOrderId arender.conversion.post.conversion.order conversionOrderRequest arender.conversion.delete.all.conversion.order arender.conversion.delete.conversion.order conversionOrderId arender.document documentId arender.document.accessor documentId, selector arender.document.accessor.content.raw documentId, selector arender.document.advanced.search documentId arender.document.advanced.search.page documentId arender.document.alter documentIds arender.document.bookmarks documentId arender.document.compare documentIdLeft, documentIdRight arender.document.compare.image documentIdLeft, documentIdRight arender.document.content documentId, format arender.document.convert documentId, mimeType arender.document.printable.document documentId arender.document.document.annotations documentId arender.document.document.check documentId arender.document.evict documentId arender.document.file.chunk documentId, format, range arender.document.image documentId, page, pageDescription, pageWidth, pageRotation arender.document.image.svg documentId, page, pageDescription , pageWidth, pageRotation arender.document.layout documentId arender.document.layout.progressive.update documentId arender.document.load arender.document.accessor.load arender.document.metadata documentId arender.document.named.destinations documentId arender.document.opening documentId, mimeType arender.document.opening.time documentId, mimeType arender.document.page.contents documentId, page arender.document.page.search.result documentId, searchText, caseSensitive, accentSensitive, regex arender.document.search.page documentId arender.document.search.page.for.text.position documentId, searchText, page, caseSensitive, accentSensitive, regex arender.document.search.pages documentId arender.document.signatures documentId arender.document.text.position documentId, page arender.document.upload documentId, mimeType, documentTitle, documentUrl arender.document.upload.document.layout documentLayout arender.health.readiness arender.health.record arender.transformation.all.transformation.order arender.transformation.delete.all.transformation.order arender.transformation.delete.transformation.order transformationOrderId arender.transformation.post.transformation.order transformationRequest arender.transformation.get.transformation.order transformationOrderId, timeoutMs arender.weather All these properties have common tags\/dimensions: exceptionClass, exceptionMessage, host and correlationId. The exceptionClass and exceptionMessage tags are only added to metrics if they are not empty or null.\nExample Prometheus To activate the sending of metrics on the Web-UI side, all you have to do is first indicate the desired registry among the 3 possible registries: prometheus, elastic and datadog. Then activate the export on the desired monitoring system.\nHere we will use Prometheus.\narender-server-default.properties arender.server.meter.registry.nameprometheus arender.server.export.prometheus.enabledtrue Then, it will be necessary to indicate in the configuration of the Prometheus server the end point on which it must recover the metrics. Prometheus metrics on the Web-UI side are exposed on the \/arendergwt\/prometheus endpoint as well as the host\/port on which ARender Web-UI is deployed. You should have something similar to this configuration below:\n\u0026lt;PROMETHEUS_SERVER_PATH\u0026gt;\/prometheus.yaml # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global \u0026#39;evaluation_interval\u0026#39;. rule_files: # - \u0026#34;first_rules.yml\u0026#34; # - \u0026#34;second_rules.yml\u0026#34; # A scrape configuration containing exactly one endpoint to scrape: # Here it\u0026#39;s Prometheus itself. scrape_configs: # The job name is added as a label `job\u0026lt;job_name\u0026gt;` to any timeseries scraped from this config. - job_name: \u0026#34;prometheus\u0026#34; # metrics_path defaults to \u0026#39;\/metrics\u0026#39; # scheme defaults to \u0026#39;http\u0026#39;. metrics_path: \u0026#39;\/arendergwt\/prometheus\u0026#39; scrape_interval: 5s static_configs: - targets: \u0026#34;localhost:8080\u0026#34; In addition, for the rendition part, all you have to do is activate the export of metrics to Prometheus on each of the rendition services.\napplication.properties management.endpoint.prometheus.enabledtrue In the same way as the Web-UI part, it is also necessary to indicate the end point on which the metrics are exposed. On the rendition side, this is exposed on the \/actuator\/prometheus endpoint.\n Broker (DSB) TaskConversion (DCV) PDFBox (DTH) JNI (DRN) # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global \u0026#39;evaluation_interval\u0026#39;. rule_files: # - \u0026#34;first_rules.yml\u0026#34; # - \u0026#34;second_rules.yml\u0026#34; # A scrape configuration containing exactly one endpoint to scrape: # Here it\u0026#39;s Prometheus itself. scrape_configs: # The job name is added as a label `job\u0026lt;job_name\u0026gt;` to any timeseries scraped from this config. - job_name: \u0026#34;prometheus\u0026#34; # metrics_path defaults to \u0026#39;\/metrics\u0026#39; # scheme defaults to \u0026#39;http\u0026#39;. metrics_path: \u0026#39;\/actuator\/prometheus\u0026#39; scrape_interval: 5s static_configs: - targets: \u0026#34;localhost:8761\u0026#34; # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global \u0026#39;evaluation_interval\u0026#39;. rule_files: # - \u0026#34;first_rules.yml\u0026#34; # - \u0026#34;second_rules.yml\u0026#34; # A scrape configuration containing exactly one endpoint to scrape: # Here it\u0026#39;s Prometheus itself. scrape_configs: # The job name is added as a label `job\u0026lt;job_name\u0026gt;` to any timeseries scraped from this config. - job_name: \u0026#34;prometheus\u0026#34; # metrics_path defaults to \u0026#39;\/metrics\u0026#39; # scheme defaults to \u0026#39;http\u0026#39;. metrics_path: \u0026#39;\/actuator\/prometheus\u0026#39; scrape_interval: 5s static_configs: - targets: \u0026#34;localhost:19999\u0026#34; # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global \u0026#39;evaluation_interval\u0026#39;. rule_files: # - \u0026#34;first_rules.yml\u0026#34; # - \u0026#34;second_rules.yml\u0026#34; # A scrape configuration containing exactly one endpoint to scrape: # Here it\u0026#39;s Prometheus itself. scrape_configs: # The job name is added as a label `job\u0026lt;job_name\u0026gt;` to any timeseries scraped from this config. - job_name: \u0026#34;prometheus\u0026#34; # metrics_path defaults to \u0026#39;\/metrics\u0026#39; # scheme defaults to \u0026#39;http\u0026#39;. metrics_path: \u0026#39;\/actuator\/prometheus\u0026#39; scrape_interval: 5s static_configs: - targets: \u0026#34;localhost:8899\u0026#34; # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global \u0026#39;evaluation_interval\u0026#39;. rule_files: # - \u0026#34;first_rules.yml\u0026#34; # - \u0026#34;second_rules.yml\u0026#34; # A scrape configuration containing exactly one endpoint to scrape: # Here it\u0026#39;s Prometheus itself. scrape_configs: # The job name is added as a label `job\u0026lt;job_name\u0026gt;` to any timeseries scraped from this config. - job_name: \u0026#34;prometheus\u0026#34; # metrics_path defaults to \u0026#39;\/metrics\u0026#39; # scheme defaults to \u0026#39;http\u0026#39;. metrics_path: \u0026#39;\/actuator\/prometheus\u0026#39; scrape_interval: 5s static_configs: - targets: \u0026#34;localhost:9091\u0026#34; /p>p>exploitation/p>p>monitoring/p>, url: https:\/\/docs.arender.io\/guides\/exploitation\/metrics\/ }, { value: Migrate from v3, path: https:\/\/docs.arender.io\/v4\/quickstart\/migrating\/, label: p>Migrating from ARender 3 to ARender 4 ARender 3 and 4 APIs are close, but migrating from ARender can induce some minor differences.\nIf you have read the quick start guide so far, you may have an idea of what changed. Here you will find a list of those main changes.\nThe rendition server changes its name The old Jar packaging and wrapper of the rendition server is no longer existing./p>p>Migrating from ARender 3 to ARender 4 ARender 3 and 4 APIs are close, but migrating from ARender can induce some minor differences.\nIf you have read the quick start guide so far, you may have an idea of what changed. Here you will find a list of those main changes.\nThe rendition server changes its name The old Jar packaging and wrapper of the rendition server is no longer existing.\nSomewhat complex to integrate into other partners\/clients automatic builds the jar IzPack format is no longer used. Instead, a simple zip archive is now the new format.\nThis implies new changes though:\n no configuration at installation time possible third party softwares are for now not bundled with the zip archive much simpler \u0026ldquo;installation\u0026rdquo; process: unzip the file ! much simpler \u0026ldquo;removal\u0026rdquo; process: delete the folder ! ARender renews its libraries Spring Boot 1.5, Netflix Eureka for discovery, Micro-service architecture, the API level and functionalities offered have been both raised for ARender 4.\nOn the Java WebApplication side, we upgraded to the latest GWT release which includes some much needed tweaks.\nThose two upgrades imply a requirement of Java 8 (minimum) both for the rendition server and the WebApplication Server.\nARender browser support ARender 4 focuses itself and bringing new features to the world of document preview\/annotation and to do so, we had to cut out browsers that would no longer work with some of those new features.\nThis is why ARender 4 now supports the recent version of Chrome and Firefox (as their are auto-update browsers) and Internet Explore 11. Edge does not yet qualifies as a supported browser because of some issues the browser itself has, aside of ARender.\nCustom client code and ARender 4 As said earlier, the backend of rendition has changed in ARender 4, but its own internal communication API as well.\nThe RMI protocol is now gone, and the XML is deprecated in favor of the new JSON API. Faster, clearer and easier to use the new API is the only way to access the rendition server.\nARender 4 proposes a set of HTTP end points that are the same as ARender 3, and a new set of reworked end points, more normalized and suited for an external use.\nThis API change implies your code has to either:\n Implement the DocumentAccessorHasContentSize interface Be able to be serialized in JSON For the first option, which is the easiest and recommended, your custom code will remain in the WebApplication Server and you only need to include your code to the war deployment lib folder. Content will be streamed to the rendition server seamlessly using our own API, objects and calls.\nIf you wish to go for a JSON serialization of your DocumentAccessor (overall less data transfers), it will reach the rendition server and needs to be recognized by it. We introduced in ARender 4.0.1 a folder named client_libs where you can drop your custom code. Once opened and deserialized by our server, the document will be fetched and the custom code logic will not be propagated into the rendition micro services.\nARender 4 rendition boot phase Something that has changed a lot since ARender 3 is the new boot phase of ARender 4. As we now rely on discovery of services, it takes longer to fully start a rendition server than before, with the guarantee that the sanity of each service is assured during the execution phase of ARender.\nTo compensate that, an end point is exposed at http:\/\/{rendition_host}:8761\/heatlh\/records to show you live your rendition booting status, and its current health status.\nThis end point is as well propagated to the front end server at http:\/\/{arender_ui_host}:{arender_ui_port}\/{arender_context}\/arendergwt\/health\/records.\nIt will show you a summary of all servers, and contain a link to the swagger documentation for them.\nARender 4 rendition customization We recommend you to look at the new cookbooks to know the new configuration possiblities of ARender 4.\nAs ARender 4 relies heavily on Spring boot now, you can open each micro service jar to find out in the folder \u0026ldquo;BOOT-INF\\classes\u0026quot; all possible configuration properties.\nYou can then override any properties by placing aside of the micro service a file named \u0026ldquo;application.properties\u0026rdquo; or \u0026ldquo;application.yaml\u0026rdquo; regarding the syntax of configuration you are the most familiar with. This includes the default host to listen to, ARender supported mime types, etc\u0026hellip; It is advisable not to access the file \u0026ldquo;application.yaml\u0026rdquo;, there is an external file \u0026ldquo;application-security.yml\u0026rdquo; for each module where you can add the changes.\n/p>p>quickstart/p>p>migration/p>, url: https:\/\/docs.arender.io\/v4\/quickstart\/migrating\/ }, { value: New installation, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/m-files\/new-installation\/, label: p>Here we present the Web-UI installation in M-Files.\nIn our example, we deploy the Web-UI in an environment with:\n Operating system : Windows Server 2016 Datacenter M-Files A Tomcat9 server ARender Web-UI version 4.8.21 ARender Rendition version 4.8.21. For more information on how to install, see documentation Steps to Configure the Rendition Place the arondor-arender-mfiles-connector-1.0.5.jar under rendition-engine-package-4.8.21\/modules\/RenditionEngine\/client_libs arondor-arender-mfiles-connector-1.0.5.jar Place the following property file application.properties under rendition-engine-package-4./p>p>Here we present the Web-UI installation in M-Files.\nIn our example, we deploy the Web-UI in an environment with:\n Operating system : Windows Server 2016 Datacenter M-Files A Tomcat9 server ARender Web-UI version 4.8.21 ARender Rendition version 4.8.21. For more information on how to install, see documentation Steps to Configure the Rendition Place the arondor-arender-mfiles-connector-1.0.5.jar under rendition-engine-package-4.8.21\/modules\/RenditionEngine\/client_libs arondor-arender-mfiles-connector-1.0.5.jar Place the following property file application.properties under rendition-engine-package-4.8.21\/modules\/RenditionEngine\/ application.properties Start the ARender Rendition server Steps to install the Web-UI Using the username and password previously provided (contact arender-sales@arondor.com if you want access), you can recover the version of the web application used in WAR format here.\nUse the Tomcat9 server. You just need to deploy your war (arondor-arender-hmi-4.8.21.war into and to rename it arondor-arender-mfiles.war), now place it there :\n Program Files Apache Software Foundation Tomcat 9.0 webapps Copy the previously downloaded arondor-arender-mfiles-connector-1.0.5.jar connector, place it under arondor-arender-mfiles-4.8.21\/WEB-INF\/lib.\nAfterwards :\n Place those files (below) under arondor-arender-mfiles-4.8.21\/WEB-INF\/classes arender-editor-specific-integration.xml arender-server.properties Warning You need to edit different values of the arender-server.properties file depending on your M-Files vault configuration Steps to deploy ARender on M-Files To install ARender on M-Files vault, follow the steps below:\n Download VAF_MFF_ArenderConnector: VAF_MFF_ArenderConnector_22.12.3.mfappx Run M-Files Admin console Right click on the desired vault and select Applications Click Install\u0026hellip; Select the previously downloaded VAF_MFF_ArenderConnector_22.12.3.mfappx file Click Yes if this window shows up The application is now installed Click Close Click Yes if this window shows up Now that we have installed ARender on M-Files vault, we can start configuring the application.\nSteps to configure ARender on M-Files VAF_MFF_ArenderConnector uses a JSON configuration file. You can manage it through the graphic interface within the M-Files Admin client.\n Run M-Files Admin client Click on Configurations for you vault Select Other Applications then select VAF_MFF_ArenderConnector. The dashboard appears Click on Configuration tab Fill in every configuration properties. When clicking the i icon, you will get a help showing up. Once you have configured, click Save Steps to open a document with M-Files Restart the IIS server Start the Tomcat9 server Access M-Files under M:\/ Select your safe Drag and drop a document to open it with ARender /p>p>standalone/p>p>hmi/p>p>configuration/p>p>m-files/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/m-files\/new-installation\/ }, { value: Opening a document, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/document\/, label: p>Opening documents Object: getARenderJS() Since 2023.4.0 before 2023.4.0 Function Description Arguments loadDocument(url, callback) Loads a document providing an URL. It will provide an ARender Id back. Note: This is purely a server-side operation, asynchronous at client side.\n url: the URL to open;\ncallback: the callback function to call when the Id is provided by the server./p>p>Opening documents Object: getARenderJS() Since 2023.4.0 before 2023.4.0 Function Description Arguments loadDocument(url, callback) Loads a document providing an URL. It will provide an ARender Id back. Note: This is purely a server-side operation, asynchronous at client side.\n url: the URL to open;\ncallback: the callback function to call when the Id is provided by the server.\n openDocument(id, resetUI) Opens a document with the id.\nIf the value of resetUI is true, or if it is not provided, the UI resets to its initial state; otherwise, the UI remains unchanged. id: ARender id\nresetUI: Reset or not the UI askChangePage(type, index) Changes the current page. type: \u0027Relative\u0027, \u0027Index\u0027 or \u0027Absolute\u0027;\nindex: -1 or 1 for \u0027Relative\u0027 or \u0027Absolute\u0027, otherwise the page number.\n enablePDFDocumentHyperlinks(boolean) Activate\/de-activate the internal hyperlinks of a document. boolean: Load internal hyperlinks of a document if true, unload them otherwise. disallowClickOnHyperlinks(boolean) Allow\/disallow clicks on a document hyperlink for ARender. boolean: if true, disallow internal hyperlinks of a document, allow them otherwise. Function Description Arguments loadDocument(url, callback) Loads a document providing an URL. It will provide an ARender Id back. Note: This is purely a server-side operation, asynchronous at client side.\n url: the URL to open;\ncallback: the callback function to call when the Id is provided by the server.\n openDocument(id) Opens a document. id: ARender id askChangePage(type, index) Changes the current page. type: \u0027Relative\u0027, \u0027Index\u0027 or \u0027Absolute\u0027;\nindex: -1 or 1 for \u0027Relative\u0027 or \u0027Absolute\u0027, otherwise the page number.\n enablePDFDocumentHyperlinks(boolean) Activate\/de-activate the internal hyperlinks of a document. boolean: Load internal hyperlinks of a document if true, unload them otherwise. disallowClickOnHyperlinks(boolean) Allow\/disallow clicks on a document hyperlink for ARender. boolean: if true, disallow internal hyperlinks of a document, allow them otherwise. scripts\/example.js \/\/ Loads the PDF reference document getARenderJS().loadDocument( \u0026#34;loadingQuery?urlhttp:\/\/www.arender.fr\/pdf\/pdf\/PDFReference15_v5.pdf\u0026#34;, function(id) { getARenderJS().openDocument(id); } ); \/\/ Move to page 24 (note that page index is starting at 0. So page 1 has index 0) getARenderJS().askChangePage(\u0026#39;Index\u0026#39;,23); \/\/ Move to last page getARenderJS().askChangePage(\u0026#39;Absolute\u0026#39;,1); In the example above, loadDocument returns an ID (in the form of a string starting with \u0026ldquo;b64_\u0026quot;) that will allow manipulation of the document in the ARender view.\nopenDocument is then called with the ID of the loaded document as a parameter, thereby displaying the document in question.\nMultiple document opening ARender provides the possibility to open several documents by loading a list of documents which will be provided via JSON in order to define the tree structure. All the technical details can be found here\n/p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/document\/ }, { value: Opening a document, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/document\/, label: p>Opening documents Object: getARenderJS() Function Description Arguments loadDocument(url , callback) Loads a document providing an URL. It will provide an ARender Id back. Note: This is purely a server-side operation, asynchronous at client side.\n url: the URL to open\ncallback: the callback function to call when the Id is provided by the server.\n openDocument(id) Opens a document. id: ARender id askChangePage(type , index) Changes the current page./p>p>Opening documents Object: getARenderJS() Function Description Arguments loadDocument(url , callback) Loads a document providing an URL. It will provide an ARender Id back. Note: This is purely a server-side operation, asynchronous at client side.\n url: the URL to open\ncallback: the callback function to call when the Id is provided by the server.\n openDocument(id) Opens a document. id: ARender id askChangePage(type , index) Changes the current page. type: \u0026lsquo;Relative\u0026rsquo;, \u0026lsquo;Index\u0026rsquo; or \u0026lsquo;Absolute\u0026rsquo;\nindex: -1 or 1 for \u0026lsquo;Relative\u0026rsquo; or \u0026lsquo;Absolute\u0026rsquo;, otherwise the page number\n enablePDFDocumentHyperlinks(boolean) Activate\/de-activate the internal hyperlinks of a document boolean: Load internal hyperlinks of a document if true, unload them otherwise. disallowClickOnHyperlinks(boolean) Allow\/disallow clicks on a document hyperlink for ARender boolean: if true, disallow internal hyperlinks of a document, allow them otherwise. srcipts\/example.js \/\/ Loads the PDF reference document getARenderJS().loadDocument( \u0026#34;loadingQuery?urlhttp:\/\/www.arender.fr\/pdf\/pdf\/PDFReference15_v5.pdf\u0026#34;, function(id) { getARenderJS().openDocument(id); } ); \/\/ Move to page 24 (note that page index is starting at 0. So page 1 has index 0) getARenderJS().askChangePage(\u0026#39;Index\u0026#39;,23); \/\/ Move to last page getARenderJS().askChangePage(\u0026#39;Absolute\u0026#39;,1); Multiple document opening ARender provides the possibility to open several documents by loading a list of documents which will be provided via JSON in order to define the tree structure. All the technical details can be found here\n/p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/document\/ }, { value: Plugins, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/visual\/plugin\/, label: p>ARender allow to integrate plugins. They can be opened in two different ways:\n Direct opening from the ARender URL with the parameter pluginpluginName Opening from ARender by events (Button press\/configuration) Plugins XML configuration If you use the button mode to launch your plugin, you have to make a configuration of it in toppanel-configuration.xml:\nBEFORE version 4.7.0 \u0026lt;bean id\u0026#34;topPanel\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.TopPanel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;containedWidgets\u0026#34;\u0026gt; \u0026lt;list\u0026gt; ... \u0026lt;ref bean\u0026#34;plumeButton\u0026#34; \/\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;moreButton\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;moreButton\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; ./p>p>ARender allow to integrate plugins. They can be opened in two different ways:\n Direct opening from the ARender URL with the parameter pluginpluginName Opening from ARender by events (Button press\/configuration) Plugins XML configuration If you use the button mode to launch your plugin, you have to make a configuration of it in toppanel-configuration.xml:\nBEFORE version 4.7.0 \u0026lt;bean id\u0026#34;topPanel\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.TopPanel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;containedWidgets\u0026#34;\u0026gt; \u0026lt;list\u0026gt; ... \u0026lt;ref bean\u0026#34;plumeButton\u0026#34; \/\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;moreButton\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;moreButton\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; ... \u0026lt;bean id\u0026#34;plumeButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ButtonPresenter\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;imageResource\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.defferedmodules.ExternalImageResource\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;width\u0026#34; value\u0026#34;32\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;height\u0026#34; value\u0026#34;32\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;url\u0026#34; value\u0026#34;icons\/plume.png\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;value\u0026gt;Plume\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.toppanel.behavior.document.GenericHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.document.AskOpenPluginEvent\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;value\u0026gt;plume\u0026lt;\/value\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;property name\u0026#34;openInMultiView\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; SINCE version 4.7.0 \u0026lt;bean id\u0026#34;topPanel\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.TopPanel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;containedWidgets\u0026#34;\u0026gt; \u0026lt;list\u0026gt; ... \u0026lt;ref bean\u0026#34;plumeButton\u0026#34; \/\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;moreButton\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;moreButton\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; ... \u0026lt;bean id\u0026#34;plumeButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ButtonPresenter\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-plugin-plume toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;value\u0026gt;Plume\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.toppanel.behavior.document.GenericHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.document.AskOpenPluginEvent\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;value\u0026gt;plume\u0026lt;\/value\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;property name\u0026#34;openInMultiView\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; The important configuration points in this example are:\n openInMultiView announces to ARender that the plugin can be opened in multiView and not in full window. AskOpenPluginEvent possess a constructor-arg that refers the pluginName defined in the server side XML. In order to configure the plugin itself, it is important to add the configuration either in arender-plugin.xml or in a separate file, referenced in the arender-plugin.xml.\n arender-plugin.xml \u0026lt;?xml version\u0026#34;1.0\u0026#34; encoding\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;beans default-lazy-init\u0026#34;true\u0026#34; default-autowire\u0026#34;no\u0026#34; xmlns\u0026#34;http:\/\/www.springframework.org\/schema\/beans\u0026#34; xmlns:xsi\u0026#34;http:\/\/www.w3.org\/2001\/XMLSchema-instance\u0026#34; xsi:schemaLocation\u0026#34;http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd\u0026#34;\u0026gt; \u0026lt;!-- xml imported by ARender, please add any plugins you wish to import in this file --\u0026gt; \u0026lt;import resource\u0026#34;plume.xml\u0026#34;\/\u0026gt; \u0026lt;\/beans\u0026gt; plume.xml \u0026lt;?xml version\u0026#34;1.0\u0026#34; encoding\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;beans default-lazy-init\u0026#34;true\u0026#34; default-autowire\u0026#34;no\u0026#34; xmlns\u0026#34;http:\/\/www.springframework.org\/schema\/beans\u0026#34; xmlns:xsi\u0026#34;http:\/\/www.w3.org\/2001\/XMLSchema-instance\u0026#34; xsi:schemaLocation\u0026#34;http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd\u0026#34;\u0026gt; \u0026lt;bean id\u0026#34;plume\u0026#34; class\u0026#34;com.arondor.viewer.common.plugin.Plugin\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;iframeSrc\u0026#34; value\u0026#34;http:\/\/plume.arender.fr\/\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/beans\u0026gt; \nPlease observe the configuration of the class com.arondor.viewer.common.plugin.Plugin where we use the property iframeSrc. This property allows to setup and iframe source URL in case the plugin refers to an existing webpage. This webpage will then be integrated into ARender as an iframe.\nThe listing of the different configuration modes are the following:\n iframeSrc: specifies the source of the URL of the iframe integrating the plugin. This implies the iframe mode. html: specifies the HTML content of the plugin. This allows a total control of the plugin integration but remove the setting by javascript calls. innerHTML: specifies the inner HTML content of the plugin. This allows to put an empty iframe source but with inner HTML contents. /p>p>configuration/p>p>plugins/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/visual\/plugin\/ }, { value: POST annotation conversions, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/annotations\/convert-annotation\/, label: p>This API allows you to convert annotations from an existing document id.\nAPI technical description Entry point:\nPOST \/annotations\/conversion Query Param:\n Variable Type Required Description sourceType String yes The source annotation format type, the accepted values are XFDF or FDF. targetType String yes The target annotation format type, the accepted values are XFDF or FDF. documentId String yes The ID of the requested document./p>p>This API allows you to convert annotations from an existing document id.\nAPI technical description Entry point:\nPOST \/annotations\/conversion Query Param:\n Variable Type Required Description sourceType String yes The source annotation format type, the accepted values are XFDF or FDF. targetType String yes The target annotation format type, the accepted values are XFDF or FDF. documentId String yes The ID of the requested document. Header:\n Variable Type Required Description Accept String yes The format output type, the accepted values are application\/json or application\/octet-stream. Response:\n Attribute Type Description annotations InputStream or JSON The annotations for the requested document id. Examples Convert annotations for a specified document The call below generates a request to convert the XFDF annotations for the document with id b64_bG9jYWxlPWZyJnJhbmRvbVVVSUQ9ZmFjMTgyOWItYjc0Ni00ZGVlLTg1YWEtNTZhNzY4NTcyOGMx to FDF and get the result as InputStream.\n$ curl -X \u0026#39;POST\u0026#39;\\ \u0026#39;http:\/\/localhost:8761\/annotations\/conversion?sourceTypeXFDF\u0026amp;targetTypeFDF\u0026amp;documentIdb64_bG9jYWxlPWZyJnJhbmRvbVVVSUQ9ZmFjMTgyOWItYjc0Ni00ZGVlLTg1YWEtNTZhNzY4NTcyOGMx\u0026#39;\\ -H \u0026#39;accept: application\/octet-stream\u0026#39;\\ -H \u0026#39;Content-Type: application\/octet-stream\u0026#39;\\ --data-binary \u0026#39;@Titre.pdf\u0026#39; /p>p>tutorial/p>p>annotation/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/annotations\/convert-annotation\/ }, { value: Pre-configuration, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/preconf-hmi\/, label: p>Here we will make the rendition server reachable from the presentation server.\nBy default, ARender war will search the Rendition server locally. This will only work if you place your server Rendition on the same server as the front-end server.\nThere are many ways to link and we will see here the most durable way.\n In the machine that will contain the presentation server, place a folder named ARenderConfiguration in the home directory of the user starting the presentation server./p>p>Here we will make the rendition server reachable from the presentation server.\nBy default, ARender war will search the Rendition server locally. This will only work if you place your server Rendition on the same server as the front-end server.\nThere are many ways to link and we will see here the most durable way.\n In the machine that will contain the presentation server, place a folder named ARenderConfiguration in the home directory of the user starting the presentation server. In your ARenderConfiguration folder, place a file suffixed by -custom-client-server.properties. This way, it\u0026rsquo;s automatically picked up by ARender, read more about this in the complete documentation of the configuration. If we consider your rendition server to be at the hostname \u0026ldquo;renditionHost\u0026rdquo;, here is what your file should contain:\n~\/ARenderConfiguration\/{name}-custom-client-server.properties arender.server.rendition.hostshttp:\/\/renditionHost:8761\/ /p>p>standalone/p>p>hmi/p>p>web ui/p>p>configuration/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/preconf-hmi\/ }, { value: Rendition, path: https:\/\/docs.arender.io\/v4\/configuration\/rendition\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/rendition\/ }, { value: Rendition API, path: https:\/\/docs.arender.io\/v4\/apis\/rendition\/, label: p>Complete list of the REST API calls ARender rendition provides the list of available REST calls. This is provided with the Swagger which allows REST calls to be tested and gives the indications necessary for the proper execution of the call. The URL is:\n{ARender_rendition_host}\/swagger-ui.html See the following for more detailed examples.\nChecking the existence of a document The verification of the existence of a document is done by the following url in GET call:/p>p>Complete list of the REST API calls ARender rendition provides the list of available REST calls. This is provided with the Swagger which allows REST calls to be tested and gives the indications necessary for the proper execution of the call. The URL is:\n{ARender_rendition_host}\/swagger-ui.html See the following for more detailed examples.\nChecking the existence of a document The verification of the existence of a document is done by the following url in GET call:\nGET {ARender_rendition_host}\/document\/?documentIdmy-custom-document-id The request returns a boolean response. True if the document exists, false otherwise. The HTTP response must be 200 for a valid response.\nLoading a document To load a document in the rendition you will have to use the following POST call:\nPOST {ARender_rendition_host}\/document\/accessor\/upload\/multipart\/?documentIdmy-custom-document-id\u0026amp;documentTitlearender-en.pdf Among the Headers of the request you will have to add:\n Key Value Content-Type multipart\/form-data Accept application\/xml Then the file to load in the rendition must be provided in the Body of the request. The HTTP response must be 200 for a valid response.\nDocument layout retrieval To retrieve the document layout, send a GET request with the documentId as request param :\nGET {ARender_rendition_host}\/document\/layout\/?documentIdmy-custom-document-id If the document is loaded then you will get the complete document layout of the document. The HTTP response must be 200 for a valid response.\nExample of response with a 2 page document { \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.client.api.document.DocumentPageLayout\u0026#34;, \u0026#34;documentId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;b64_bG9jYWxlPWVuJnJhbmRvbVVVSUQ9NDcwZDIzNjMtZDNiOS00MGEzLWE0MTEtMjBjMDI3OWExZDk1\u0026#34; }, \u0026#34;documentTitle\u0026#34;: \u0026#34;Baujagd.pdf\u0026#34;, \u0026#34;mimeType\u0026#34;: \u0026#34;application\/pdf\u0026#34;, \u0026#34;pageDimensionsList\u0026#34;: { \u0026#34;width\u0026#34;: 720, \u0026#34;height\u0026#34;: 540, \u0026#34;rotation\u0026#34;: 0, \u0026#34;dpi\u0026#34;: 72, \u0026#34;pageLayers\u0026#34;: null }, { \u0026#34;width\u0026#34;: 720, \u0026#34;height\u0026#34;: 540, \u0026#34;rotation\u0026#34;: 0, \u0026#34;dpi\u0026#34;: 72, \u0026#34;pageLayers\u0026#34;: null } } Retrieve source or its converted version You can retrieve the source, or the converted versions of a document using the following request in GET call:\nGET {ARender_rendition_host}\/accessor\/getContent\/raw\/{documentId}\/{selector} Please see below the details for the {selector} values:\n Value Description INITIAL The source document RENDERED The converted document (conversion to PDF for non-multimedia documents, MP4 for multimedia documents) The request will send the document in response. The HTTP response must be 200 for a valid response.\nGenerating an image To generate an image of a loaded document, you will need to use the following url in GET call:\nGET {ARender_rendition_host}\/document\/image\/?descriptionIM_1800_0\u0026amp;documentIdmy-documentID\u0026amp;page1\u0026amp;width1800 Parameter Description documentId The document Id in ARender page The page number (starts at 0) description Start with IM to inform that it is an image, then width of the image in pixels, then the rotation in degrees then SVG if you wish to have the image in SVG, otherwise it will be in PNG. Each parameter is always separated by _ width The width of the image in pixels The request will send the requested image in response. The HTTP response must be 200 for a valid response.\n/p>p>API/p>p>APIs/p>p>REST/p>p>swagger/p>, url: https:\/\/docs.arender.io\/v4\/apis\/rendition\/ }, { value: Rendition server, path: https:\/\/docs.arender.io\/installation\/kubernetes\/rendition\/, label: p>Introduction Parameters The following table lists the configurable parameters of the ARender rendition subchart and their default values.\nGeneral values Parameters Description Default global.imagePullSecrets Global Docker registry secret names as an array rendition.enabled Enable the rendition deployment true Document service broker The following table lists the configurable parameters of the document service broker microservice and their default values./p>p>Introduction Parameters The following table lists the configurable parameters of the ARender rendition subchart and their default values.\nGeneral values Parameters Description Default global.imagePullSecrets Global Docker registry secret names as an array rendition.enabled Enable the rendition deployment true Document service broker The following table lists the configurable parameters of the document service broker microservice and their default values.\n Parameters Description Default rendition.broker.replicaCount Number of the broker pod replica to deploy 1 rendition.broker.image.repository Broker image name artifactory.arondor.cloud:5001\/arender-document-service-broker rendition.broker.image.tag Broker image tag. If empty use AppVersion \u0027\u0027 rendition.broker.image.pullPolicy Broker image pull policy Always rendition.broker.rbac.create Specifies whether the role resources to compute the weather should be created true rendition.broker.serviceAccount.create Specifies whether a service account should be created true rendition.broker.serviceAccount.name Name of the service account created. If not set defaulted to ARender UI fullname \u0027\u0027 rendition.broker.podSecurityContext Broker pod security context {} rendition.broker.securityContext Broker container security context {} rendition.broker.service.type Broker service type ClusterIP rendition.broker.ingress.enabled Enable rendition Ingress false rendition.broker.ingress.annotations Ingress rendition annotations {} rendition.broker.ingress.hosts Ingress rendition hosts rendition.broker.ingress.tls Rendition Tls config rendition.broker.resources Broker resources limits and requests {} rendition.broker.nodeSelector Broker node selector {} rendition.broker.environment Environment variables to pass to the broker container as a Map {} Warning If rendition.broker.rbac.create is not set to true, insure that the service account of the service broker has enough rights to compute the \u0026lsquo;weather\u0026rsquo;.\nBy default, given rights are:\nrules:- apiGroups:\u0026#34;*\u0026#34;resources:- \u0026#39;nodes\u0026#39;verbs:- \u0026#39;get\u0026#39;- \u0026#39;list\u0026#39; Document converter The following table lists the configurable parameters of the document converter microservice and their default values.\n Parameters Description Default rendition.converter.replicaCount Number of the converter pod replica to deploy 1 rendition.converter.autoscale.enabled Enable horizontal autoscaling of converter pods false rendition.converter.autoscale.maxReplicas Maximum number of the converter pod replica in the cluster 3 rendition.converter.autoscale.cpuLimit Percentage of CPU requested target to scale horizontally 80 rendition.converter.image.repository Document converter image name artifactory.arondor.cloud:5001\/arender-document-converter rendition.converter.image.tag Document converter image tag. If empty use AppVersion \u0027\u0027 rendition.converter.imagepullPolicy Document converter image pull policy Always rendition.converter.serviceAccount.create Specifies whether a service account should be created true rendition.converter.serviceAccount.name Name of the service account created. If not set defaulted to converter fullname \u0027\u0027 rendition.converter.podSecurityContext Converter pods security context {} rendition.converter.securityContext Converter container security context {} rendition.converter.service.type Converter service type ClusterIP rendition.converter.resources Converter resources limits and requests {} rendition.converter.nodeSelector Converter node selector {} rendition.converter.environment Environment variables to pass to the converter container as a Map {} Hazelcast The following table lists the configurable parameters of the service Hazelcast and their default values in the file values.yaml.\n Parameters Description Default hazelcast.service.port Port used by Hazelcast 5701 hazelcast.service.portname Port name of Hazelcast hazelcast Document text handler The following table lists the configurable parameters of the document text handler microservice and their default values.\n Parameters Description Default rendition.handler.replicaCount Number of the handler pod replica to deploy 1 rendition.handler.autoscale.enabled Enable horizontal autoscaling of handler pods false rendition.handler.autoscale.maxReplicas Maximum number of the handler pod replica in the cluster 3 rendition.handler.autoscale.cpuLimit Percentage of CPU requested target to scale horizontally 80 rendition.handler.image.repository Document handler image name artifactory.arondor.cloud:5001\/arender-document-text-handler rendition.handler.image.tag Document handler image tag. If empty use AppVersion \u0027\u0027 rendition.handler.imagepullPolicy Document handler image pull policy Always rendition.handler.serviceAccount.create Specifies whether a service account should be created true rendition.handler.serviceAccount.name Name of the service account created. If not set defaulted to handler fullname \u0027\u0027 rendition.handler.podSecurityContext handler pods security context {} rendition.handler.securityContext handler container security context {} rendition.handler.service.type handler service type ClusterIP rendition.handler.resources handler resources limits and requests {} rendition.handler.nodeSelector handler node selector {} rendition.handler.environment Environment variables to pass to the handler container as a Map {} Document renderer The following table lists the configurable parameters of the document renderer microservice and their default values.\n Parameters Description Default rendition.renderer.replicaCount Number of the renderer pod replica to deploy 1 rendition.renderer.autoscale.enabled Enable horizontal autoscaling of renderer pods false rendition.renderer.autoscale.maxReplicas Maximum number of the renderer pod replica in the cluster 3 rendition.renderer.autoscale.cpuLimit Percentage of CPU requested target to scale horizontally 80 rendition.renderer.image.repository Document renderer image name artifactory.arondor.cloud:5001\/arender-document-renderer rendition.renderer.image.tag Document renderer image tag. If empty use AppVersion \u0027\u0027 rendition.renderer.imagepullPolicy Document renderer image pull policy Always rendition.renderer.serviceAccount.create Specifies whether a service account should be created true rendition.renderer.serviceAccount.name Name of the service account created. If not set defaulted to renderer fullname \u0027\u0027 rendition.renderer.podSecurityContext renderer pods security context {} rendition.renderer.securityContext renderer container security context {} rendition.renderer.service.type renderer service type ClusterIP rendition.renderer.resources renderer resources limits and requests {} rendition.renderer.nodeSelector renderer node selector {} rendition.renderer.environment Environment variables to pass to the renderer container as a Map {} /p>p>kubernetes/p>p>helm/p>p>rendition/p>, url: https:\/\/docs.arender.io\/installation\/kubernetes\/rendition\/ }, { value: Rendition server, path: https:\/\/docs.arender.io\/v4\/install\/kubernetes\/rendition\/, label: p>Introduction Parameters The following table lists the configurable parameters of the ARender rendition subchart and their default values.\nGeneral values Parameters Description Default global.imagePullSecrets Global Docker registry secret names as an array rendition.enabled Enable the rendition deployment true Document service broker The following table lists the configurable parameters of the document service broker microservice and their default values./p>p>Introduction Parameters The following table lists the configurable parameters of the ARender rendition subchart and their default values.\nGeneral values Parameters Description Default global.imagePullSecrets Global Docker registry secret names as an array rendition.enabled Enable the rendition deployment true Document service broker The following table lists the configurable parameters of the document service broker microservice and their default values.\n Parameters Description Default rendition.broker.replicaCount Number of the borker pod replica to deploy 1 rendition.broker.image.repository Broker image name artifactory.arondor.cloud:5001\/arender-document-service-broker rendition.broker.image.tag Broker image tag. If empty use AppVersion \u0027\u0027 rendition.broker.image.pullPolicy Broker image pull policy Always rendition.broker.rbac.create Specifies whether the role resources to compute the weather should be created true rendition.broker.serviceAccount.create Specifies whether a service account should be created true rendition.broker.serviceAccount.name Name of the service account created. If not set defaulted to ARender UI fullname \u0027\u0027 rendition.broker.podSecurityContext Broker pod security context {} rendition.broker.securityContext Broker container security context {} rendition.broker.service.type Broker service type ClusterIP rendition.broker.ingress.enabled Enable rendition Ingress false rendition.broker.ingress.annotations Ingress rendition annotations {} rendition.broker.ingress.hosts Ingress rendition hosts rendition.broker.ingress.tls Rendition Tls config rendition.broker.resources Broker resources limits and requests {} rendition.broker.nodeSelector Broker node seletor {} rendition.broker.environment Environment variables to pass to the broker container as a Map {} Warning If rendition.broker.rbac.create is not set to true, insure that the service account of the service broker has enough rights to compute the \u0026lsquo;weather\u0026rsquo;.\nBy default, given rights are:\nrules:- apiGroups:\u0026#34;*\u0026#34;resources:- \u0026#39;nodes\u0026#39;verbs:- \u0026#39;get\u0026#39;- \u0026#39;list\u0026#39; Document converter The following table lists the configurable parameters of the document converter microservice and their default values.\n Parameters Description Default rendition.converter.replicaCount Number of the converter pod replica to deploy 1 rendition.converter.autoscale.enabled Enable horitontal autoscaling of converter pods false rendition.converter.autoscale.maxReplicas Maximum number of the converter pod replica in the cluster 3 rendition.converter.autoscale.cpuLimit Percentage of CPU requested target to scale horizontally 80 rendition.converter.image.repository Document converter image name artifactory.arondor.cloud:5001\/arender-document-converter rendition.converter.image.tag Document converter image tag. If empty use AppVersion \u0027\u0027 rendition.converter.imagepullPolicy Document converter image pull policy Always rendition.converter.serviceAccount.create Specifies whether a service account should be created true rendition.converter.serviceAccount.name Name of the service account created. If not set defaulted to converter fullname \u0027\u0027 rendition.converter.podSecurityContext Converter pods security context {} rendition.converter.securityContext Converter container security context {} rendition.converter.service.type Converter service type ClusterIP rendition.converter.resources Converter resources limits and requests {} rendition.converter.nodeSelector Converter node selector {} rendition.converter.environment Environment variables to pass to the converter container as a Map {} Hazelcast The following table lists the configurable parameters of the service Hazelcast and their default values in the file values.yaml.\n Parameters Description Default hazelcast.service.port Port used by Hazelcast 5701 hazelcast.service.portname Port name of Hazelcast hazelcast Document text handler The following table lists the configurable parameters of the document text handler microservice and their default values.\n Parameters Description Default rendition.handler.replicaCount Number of the handler pod replica to deploy 1 rendition.handler.autoscale.enabled Enable horitontal autoscaling of handler pods false rendition.handler.autoscale.maxReplicas Maximum number of the handler pod replica in the cluster 3 rendition.handler.autoscale.cpuLimit Percentage of CPU requested target to scale horizontally 80 rendition.handler.image.repository Document handler image name artifactory.arondor.cloud:5001\/arender-document-text-handler rendition.handler.image.tag Document handler image tag. If empty use AppVersion \u0027\u0027 rendition.handler.imagepullPolicy Document handler image pull policy Always rendition.handler.serviceAccount.create Specifies whether a service account should be created true rendition.handler.serviceAccount.name Name of the service account created. If not set defaulted to handler fullname \u0027\u0027 rendition.handler.podSecurityContext handler pods security context {} rendition.handler.securityContext handler container security context {} rendition.handler.service.type handler service type ClusterIP rendition.handler.resources handler resources limits and requests {} rendition.handler.nodeSelector handler node selector {} rendition.handler.environment Environment variables to pass to the handler container as a Map {} Document renderer The following table lists the configurable parameters of the document renderer microservice and their default values.\n Parameters Description Default rendition.renderer.replicaCount Number of the renderer pod replica to deploy 1 rendition.renderer.autoscale.enabled Enable horitontal autoscaling of renderer pods false rendition.renderer.autoscale.maxReplicas Maximum number of the renderer pod replica in the cluster 3 rendition.renderer.autoscale.cpuLimit Percentage of CPU requested target to scale horizontally 80 rendition.renderer.image.repository Document renderer image name artifactory.arondor.cloud:5001\/arender-document-renderer rendition.renderer.image.tag Document renderer image tag. If empty use AppVersion \u0027\u0027 rendition.renderer.imagepullPolicy Document renderer image pull policy Always rendition.renderer.serviceAccount.create Specifies whether a service account should be created true rendition.renderer.serviceAccount.name Name of the service account created. If not set defaulted to renderer fullname \u0027\u0027 rendition.renderer.podSecurityContext renderer pods security context {} rendition.renderer.securityContext renderer container security context {} rendition.renderer.service.type renderer service type ClusterIP rendition.renderer.resources renderer resources limits and requests {} rendition.renderer.nodeSelector renderer node selector {} rendition.renderer.environment Environment variables to pass to the renderer container as a Map {} /p>p>kubernetes/p>p>helm/p>p>rendition/p>, url: https:\/\/docs.arender.io\/v4\/install\/kubernetes\/rendition\/ }, { value: Rendition stack, path: https:\/\/docs.arender.io\/installation\/docker\/rendition\/, label: p>By Environment Variables All yaml properties can be overridden by environment variables by following the next rules:\n environment variables must be all capitalize capitalized character in yaml must be preceded by \u0026quot;.\u0026quot; use \u0026quot;_\u0026quot; to associate an object use \u0026quot;n\u0026quot; to set a list element (with n as index) Yaml properties Environment variables nurse:samplesDirectory:..\/..\/samples\/components:- functionality:TKC_MailConversionfactoryName:\u0026#34;mailFactory\u0026#34;samplePath:\u0026#34;test.msg\u0026#34;docIdStr:\u0026#34;m41lS4mpl3\u0026#34; environment:- \u0026#34;DCV_NURSE_SAMPLES.DIRECTORY..\/..\/samples\/\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_FUNCTIONALITYTKC_MailConversion\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_FACTORY.NAMEmailFactory\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_SAMPLE.PATHtest.msg\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_DOC.ID.STRm41lS4mpl3\u0026#34; By volumes Configuration files location:/p>p>By Environment Variables All yaml properties can be overridden by environment variables by following the next rules:\n environment variables must be all capitalize capitalized character in yaml must be preceded by \u0026quot;.\u0026quot; use \u0026quot;_\u0026quot; to associate an object use \u0026quot;n\u0026quot; to set a list element (with n as index) Yaml properties Environment variables nurse:samplesDirectory:..\/..\/samples\/components:- functionality:TKC_MailConversionfactoryName:\u0026#34;mailFactory\u0026#34;samplePath:\u0026#34;test.msg\u0026#34;docIdStr:\u0026#34;m41lS4mpl3\u0026#34; environment:- \u0026#34;DCV_NURSE_SAMPLES.DIRECTORY..\/..\/samples\/\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_FUNCTIONALITYTKC_MailConversion\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_FACTORY.NAMEmailFactory\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_SAMPLE.PATHtest.msg\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_DOC.ID.STRm41lS4mpl3\u0026#34; By volumes Configuration files location:\n \/arender\/config\/application.properties\n \/arender\/config\/application-*.properties\n \/arender\/config\/application.yaml\n \/arender\/config\/application-*.yaml\n Note {service-name}: container name without \u0026ldquo;arender\u0026rdquo; 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.\nWarning This feature is currently in an experimental, early-access phase. It 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.\nTo 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.\nDocker image The docker image name with the tag is artifactory.arondor.cloud:5001\/document-renderer-pdfowl:2023.16.0\nExample of using this image with docker compose :\nversion:\u0026#34;3.7\u0026#34;services:ui:image:artifactory.arondor.cloud:5001\/arender-ui-springboot:2023.16.0environment:- \u0026#34;ARENDERSRV_ARENDER_SERVER_RENDITION_HOSTShttp:\/\/service-broker:8761\/\u0026#34;ports:- 8080:8080service-broker:image:artifactory.arondor.cloud:5001\/arender-document-service-broker:2023.16.0environment:- \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DOCUMENT-CONVERTER19999\u0026#34;- \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DOCUMENT-RENDERER9091\u0026#34;- \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DOCUMENT-TEXT-HANDLER8899\u0026#34;- \u0026#34;DSB_MICROSERVICES_PDFRENDERERPDFOwl\u0026#34;ports:- 8761:8761volumes:- arender-tmp:\/arender\/tmpdocument-renderer:image:artifactory.arondor.cloud:5001\/arender-document-renderer-pdfowl:2023.16.0hostname:drn-serviceenvironment:- \u0026#34;DRN_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdocument-renderer\u0026#34;- \u0026#34;DRN_EUREKA_INSTANCE_HOSTNAMEservice-broker\u0026#34;- \u0026#34;DRN_EUREKA_SERVER_PORT8761\u0026#34;- \u0026#34;DRN_PDFOWL_CLIENT_WATCHDOG60000\u0026#34;ports:- 9091:9091volumes:- arender-tmp:\/arender\/tmpdocument-text-handler:image:artifactory.arondor.cloud:5001\/arender-document-text-handler:2023.16.0environment:- \u0026#34;DTH_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdocument-text-handler\u0026#34;- \u0026#34;DTH_EUREKA_INSTANCE_HOSTNAMEservice-broker\u0026#34;- \u0026#34;DTH_EUREKA_SERVER_PORT8761\u0026#34;ports:- 8899:8899volumes:- arender-tmp:\/arender\/tmpdocument-converter:image:artifactory.arondor.cloud:5001\/arender-document-converter:2023.16.0environment:- \u0026#34;DCV_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdocument-converter\u0026#34;- \u0026#34;DCV_APP_EUREKA_HOSTNAMEservice-broker\u0026#34;- \u0026#34;DCV_APP_EUREKA_PORT8761\u0026#34;ports:- 19999:19999volumes:- arender-tmp:\/arender\/tmpvolumes:arender-tmp:Configurations Some properties are available with default values :\n# PdfOwl binary path pdfowl.pathpdfowl # Timeout for pdfowl commands execution in milliseconds pdfowl.client.watchdog10000 # Timeout for idle pdfOwl clients in milliseconds pdfowl.client.ttl30000 # The memory limit used for a thread to work on a single document pdfowl.memlimit.mb1024 /p>p>docker/p>, url: https:\/\/docs.arender.io\/installation\/docker\/rendition\/ }, { value: Rendition stack, path: https:\/\/docs.arender.io\/v4\/install\/docker\/rendition\/, label: p>By Environment Variables All yaml properties can be overridden by environment variables by following the next rules:\n environment variables must be all capitaliaze capitalized character in yaml must be preceded by \u0026quot;.\u0026quot; use \u0026quot;_\u0026quot; to associate an object use \u0026quot;n\u0026quot; to set a list element (with n as index) Yaml properties Environment variables nurse:samplesDirectory:..\/..\/samples\/components:- functionality:TKC_MailConversionfactoryName:\u0026#34;mailFactory\u0026#34;samplePath:\u0026#34;test.msg\u0026#34;docIdStr:\u0026#34;m41lS4mpl3\u0026#34; environment:- \u0026#34;DCV_NURSE_SAMPLES.DIRECTORY..\/..\/samples\/\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_FUNCTIONALITYTKC_MailConversion\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_FACTORY.NAMEmailFactory\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_SAMPLE.PATHtest.msg\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_DOC.ID.STRm41lS4mpl3\u0026#34; By volumes Configuration files location:/p>p>By Environment Variables All yaml properties can be overridden by environment variables by following the next rules:\n environment variables must be all capitaliaze capitalized character in yaml must be preceded by \u0026quot;.\u0026quot; use \u0026quot;_\u0026quot; to associate an object use \u0026quot;n\u0026quot; to set a list element (with n as index) Yaml properties Environment variables nurse:samplesDirectory:..\/..\/samples\/components:- functionality:TKC_MailConversionfactoryName:\u0026#34;mailFactory\u0026#34;samplePath:\u0026#34;test.msg\u0026#34;docIdStr:\u0026#34;m41lS4mpl3\u0026#34; environment:- \u0026#34;DCV_NURSE_SAMPLES.DIRECTORY..\/..\/samples\/\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_FUNCTIONALITYTKC_MailConversion\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_FACTORY.NAMEmailFactory\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_SAMPLE.PATHtest.msg\u0026#34;- \u0026#34;DCV_NURSE_COMPONENTS0_DOC.ID.STRm41lS4mpl3\u0026#34; By volumes Configuration files location:\n \/arender\/config\/application.properties\n \/arender\/config\/application-*.properties\n \/arender\/config\/application.yaml\n \/arender\/config\/application-*.yaml\n Note {service-name}: container name without \u0026ldquo;arender\u0026rdquo; prefix /p>p>docker/p>, url: https:\/\/docs.arender.io\/v4\/install\/docker\/rendition\/ }, { value: Service broker, path: https:\/\/docs.arender.io\/guides\/configurations\/rendition\/service-broker\/, label: p>Environment Key: Kubeprovider Description Parameter Key Type Use localhost for all services useLocalhost Boolean Map of service host and ports kubeHosts Map\u0026lt;String, int\u0026gt; application.yaml kubeprovider:useLocalhost :truekubeHosts:conversion-service:19999jni-service:9091pdfbox-service:8899 Key: provider Description Parameter Key Type Specify running environment environment Enum(LOCAL, KUBERNETES) application.yaml provider:environment:local Using kubernetes environment Metrics server must be installed on Kubernetes if provider./p>p>Environment Key: Kubeprovider Description Parameter Key Type Use localhost for all services useLocalhost Boolean Map of service host and ports kubeHosts Map\u0026lt;String, int\u0026gt; application.yaml kubeprovider:useLocalhost :truekubeHosts:conversion-service:19999jni-service:9091pdfbox-service:8899 Key: provider Description Parameter Key Type Specify running environment environment Enum(LOCAL, KUBERNETES) application.yaml provider:environment:local Using kubernetes environment Metrics server must be installed on Kubernetes if provider.environment is set to KUBERNETES Temporary file storage When the rendition server starts, folders and files in the temporary files folder path will be deleted. This deletion will not be automatic if the default path ..\/..\/tmp has been modified. In this case, the following configuration needs to be done.\n\/modules\/rendition-engine\/application.properties default.document.path.startup.cleartrue Checking disk space Since version 2023.14.0, a disk space availability check has been added. When a request to upload a new document to the rendition arrives and there is not enough disk space available, the request is rejected and a 503 response is returned.\nBy default, the available space threshold is 1GB, a value that can be configured via properties:\n# Disk free space threshold (in GB) disk.free.space.threshold2 /p>, url: https:\/\/docs.arender.io\/guides\/configurations\/rendition\/service-broker\/ }, { value: Service broker, path: https:\/\/docs.arender.io\/v4\/configuration\/rendition\/service-broker\/, label: p>Environment Key: Kubeprovider Description Parameter Key Type Use localhost for all services useLocalhost Boolean Map of service host and ports kubeHosts Map\u0026lt;String, int\u0026gt; application.yaml kubeprovider:useLocalhost :truekubeHosts:conversion-service:19999jni-service:9091pdfbox-service:8899 Key: provider Description Parameter Key Type Specify running environment environment Enum(LOCAL, KUBERNETES) application.yaml provider:environment:local Using kubernetes environment Metrics server must be installed on Kubernetes if provider./p>p>Environment Key: Kubeprovider Description Parameter Key Type Use localhost for all services useLocalhost Boolean Map of service host and ports kubeHosts Map\u0026lt;String, int\u0026gt; application.yaml kubeprovider:useLocalhost :truekubeHosts:conversion-service:19999jni-service:9091pdfbox-service:8899 Key: provider Description Parameter Key Type Specify running environment environment Enum(LOCAL, KUBERNETES) application.yaml provider:environment:local Using kubernetes environment Metrics server must be installed on Kubernetes if provider.environment is set to KUBERNETES Temporary file storage When the rendition server starts, folders and files in the temporary files folder path will be deleted. This deletion will not be automatic if the default path ..\/..\/tmp has been modified. In this case, the following configuration needs to be done.\n\/modules\/endition-engine\/application.properties default.document.path.startup.cleartrue /p>, url: https:\/\/docs.arender.io\/v4\/configuration\/rendition\/service-broker\/ }, { value: Task conversion, path: https:\/\/docs.arender.io\/guides\/configurations\/rendition\/task-conversion\/, label: p>Rendition without internet Access and mails with external images If the Rendition is installed on a server that does not have access to Internet and if mails with external images needs to be viewed, please apply the below configuration:\n Add a proxy for WKHTMLTOPDF configuration. Create a file named application.properties in the TaskConversion module containing the below property (adapt the proxy host if needed) (compatible with version 4.3.8 and higher): application./p>p>Rendition without internet Access and mails with external images If the Rendition is installed on a server that does not have access to Internet and if mails with external images needs to be viewed, please apply the below configuration:\n Add a proxy for WKHTMLTOPDF configuration. Create a file named application.properties in the TaskConversion module containing the below property (adapt the proxy host if needed) (compatible with version 4.3.8 and higher): application.properties located in ARender-Rendition-2023.X.Y\\modules\\TaskConversion tools.wkhtmltopdf.options--disable-javascript,--quiet,--encoding,UTF-8,--load-error-handling,ignore,--disable-external-links,--disable-internal-links,--disable-local-file-access,--proxy,localhost Internal and external links, local file access and iframe URL are disabled by default for HTML to PDF conversion. The purpose of that is to prevent security issue.\nNote this can impact the render of the HTML in ARender:\n Clickable links will be disabled Image display from internal\/external link or local file will not be rendered Iframe URL will not be rendered The default properties in the TaskConversion service looks like this:\napplication.properties located in ARender-Rendition-2023.X.Y\\modules\\TaskConversion tools.wkhtmltopdf.options--disable-javascript,--quiet,--encoding,UTF-8,--load-error-handling,ignore,--disable-external-links,--disable-internal-links,--disable-local-file-access # Disable iframe URL as a safety measure tools.wkhtmltopdf.iframe.disabledtrue Visit card labels language VCF format is supported since the version 2023.6.0. Some information, such as address, phone or email are preceded by the type, called \u0026ldquo;label\u0026rdquo;, such as \u0026ldquo;Home\u0026rdquo; to indicate that the information that follows is personal. It is possible to change the language of these labels. For now, two languages are available: English and French.\nThe default property in the TaskConversion service looks like this:\napplication.properties located in ARender-Rendition-2023.X.Y\\modules\\TaskConversion # Configure the information fields language. Possible values are : \u0026#34;FR\u0026#34;, \u0026#34;EN\u0026#34;. vcard.label.languageEN TIFF images rendering Properties are available to configure the rendering of images generated from TIFFs.\napplication.properties located in ARender-Rendition-2023.X.Y\\modules\\TaskConversion Description Parameter Key Default value Type For PDF creation from images, the maximum asked width (in pixel) image.conversion.maximum.width.px 2000 Integer The mime type of the generated images (Since version 2023.14.0)\nPossible values are image\/png and image\/jpeg image.conversion.target.mime.type image\/png String /p>, url: https:\/\/docs.arender.io\/guides\/configurations\/rendition\/task-conversion\/ }, { value: Task conversion, path: https:\/\/docs.arender.io\/v4\/configuration\/rendition\/task-conversion\/, label: p>Rendition without internet Access and mails with external images If the Rendition is installed on a server that does not have access to Internet and if mails with external images needs to be viewed, please apply the below configuration:\n Add a proxy for WKHTMLTOPDF configuration. Create a file named application.properties in the TaskConversion module containing the below property (adapt the proxy host if needed) (compatible with version 4.3.8 and higher): application./p>p>Rendition without internet Access and mails with external images If the Rendition is installed on a server that does not have access to Internet and if mails with external images needs to be viewed, please apply the below configuration:\n Add a proxy for WKHTMLTOPDF configuration. Create a file named application.properties in the TaskConversion module containing the below property (adapt the proxy host if needed) (compatible with version 4.3.8 and higher): application.properties located in ARender-Rendition-4.X.Y\\modules\\TaskConversion tools.wkhtmltopdf.options--disable-javascript,--quiet,--encoding,UTF-8,--load-error-handling,ignore,--proxy,localhost Since v4.8.13, internal and external links, local file access and iframe URL are disabled by default for HTML to PDF conversion. The purpose of that is to prevent security issue.\nNote this can impact the render of the HTML in ARender:\n Clickable links will be disabled Image display from internal\/external link or local file will not be rendered Iframe URL will not be rendered The default properties in the TaskConversion service looks like this:\napplication.properties located in ARender-Rendition-4.X.Y\\modules\\TaskConversion tools.wkhtmltopdf.options--disable-javascript,--quiet,--encoding,UTF-8,--load-error-handling,ignore,--disable-external-links,--disable-internal-links,--disable-local-file-access # Disable iframe URL as a safety measure tools.wkhtmltopdf.iframe.disabledtrue Legacy image conversion To use the legacy image conversion, used in the version 3 of ARender, modify the application-security.yaml at modules\/TaskConversion file with the desired mime types for the legacyImageFactory element.\napplication-security.yaml app:factoriesBeanNames:legacyImageFactory:\u0026#34;image\/tiff,image\/png,image\/jpeg,image\/gif\u0026#34; Several additional properties can be set for the conversion:\n legacy.image.conversion.adapt.size is used to set the pdf output size as the image input. Can be costly for big images. legacy.image.conversion.keep.aspect sets the output format to A4. The image stretches otherwise. legacy.image.conversion.rotateLandscapes can be used if the image is in a landscape orientation to have a portrait output. application.properties located in ARender-Rendition-4.X.Y\\modules\\TaskConversion # Adapt the output size to the image legacy.image.conversion.adapt.sizefalse # Keep image aspect, otherwise the output is in A4 format legacy.image.conversion.keep.aspecttrue # Rotate the landscaped input to a portrait orientation legacy.image.conversion.rotateLandscapesfalse /p>, url: https:\/\/docs.arender.io\/v4\/configuration\/rendition\/task-conversion\/ }, { value: Web-UI, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/ }, { value: Web-UI, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/ }, { value: Web-UI, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/ }, { value: Web-UI changes, path: https:\/\/docs.arender.io\/guides\/upgrade\/4.8_to_2023.0\/web-ui\/, label: p>Properties Client properties changes (arender.properties) Deleted properties Version 4 Description topPanel.logo Show the top panel logo topPanel.logo.url Define the top panel logo URL topPanel.logo.width The top panel logo width (in pixel) topPanel.logo.height The top panel logo height (in pixel) topPanel.logo.margin.left The top panel logo margin left (in pixel) topPanel.section.file.annotation.buttons.beanNames The list of widgets to define (XML bean names) for the file\/annotation section topPanel./p>p>Properties Client properties changes (arender.properties) Deleted properties Version 4 Description topPanel.logo Show the top panel logo topPanel.logo.url Define the top panel logo URL topPanel.logo.width The top panel logo width (in pixel) topPanel.logo.height The top panel logo height (in pixel) topPanel.logo.margin.left The top panel logo margin left (in pixel) topPanel.section.file.annotation.buttons.beanNames The list of widgets to define (XML bean names) for the file\/annotation section topPanel.section.modification.buttons.beanNames The list of widgets to define (XML bean names) for the modification section topPanel.section.plugin.buttons.beanNames The list of widgets to define (XML bean names) for the plugins topPanel.navigation.buttons.beanNames The list of widgets to define (XML bean names) for the navigation section topPanel.zoom.buttons.beanNames The list of widgets to define (XML bean names) for the zoom section topPanel.rotation.buttons.beanNames The list of widgets to define (XML bean names) for the rotation section topPanel.imageProcessMenu.processBrightness Sets up slider to handle brightness topPanel.imageProcessMenu.processContrast Sets up slider to handle contrast topPanel.imageProcessMenu.maxBrightness Sets up the max value of the brightness slider topPanel.imageProcessMenu.maxContrast Sets up the max value of the contrast slider topPanel.imageProcessMenu.defaultBrightness Sets up the default value of the brightness slider topPanel.imageProcessMenu.defaultContrast Sets up the default value of the contrast slider advanced.searchexplorer.tooltipOnHover.enabled Enables tooltip on hover advanced.searchexplorer.caseSensitive.tooltip.enabled Enables case sensitive tooltip advanced.searchexplorer.accentSensitive.tooltip.enabled Enables accent sensitive tooltip annotationexplorer.enabled Enables the legacy annotation explorer annotation.richtext.edition.doubleClick.time Setup default double click time in milliseconds (ms) filter.comment.showTabImage Allows to filter the annotation in the comment explorer filter.comment.showTabLabel Shows a label instead of icons for filtering filter.comment.showSwitchFilter Shows the switch filter for solved\/unresolved requests annotationExplorer.showStickyNoteReplies Legacy annotation explorer, show the sticky notes replies annotationExplorer.showStickyNoteLabel Legacy annotation explorer, show the sticky notes labels annotationExplorer.adaptativeWidth.enabled Legacy annotation explorer, adapts the width of the panel accordingly Renamed properties Version 4 Version 2023 Description topPanel.section.file.buttons.beanNames topPanel.section.left.buttons.beanNames The list of widgets to define (XML bean names) for the left section of the toppanel topPanel.annotation.buttons.beanNames toolbar.annotation.buttons.beanNames The list of widgets to define (XML bean names) for the annotation toolbar topPanel.obfuscate redactexplorer.redact Activate the redact text annotation button (documentation) topPanel.obfuscateZone redactexplorer.redactZone Activate the redact annotation zone button (documentation) toolbar.lockedObfuscate toolbar.redact.locked All redact annotations will become locked once saved, and can no longer be edited annotation.canHideObfuscate annotation.can.hide.redact All redact annotations can be hidden using the regular hide annotations button topPanel.imageProcessMenu topPanel.imageProcessMenu.brightness.enabled and topPanel.imageProcessMenu.contrast.enabled Activate the brightness slider \/ Activate the contrast slider (documentation) Server properties changes (arender-server-custom-vanilla.properties) Deleted properties Version 4 Description arender.rest.b64.encoding REST API configurations arender.rest.serialization.model REST API configurations Modified properties Version 4 Changes arender.server.default.annotation.accessor Value changed from xfdfAnnotationAccessor to redactConverterAnnotationAccessor to facilitate conversion from V4 to V2023 redact annotation model. The xfdfAnnotationAccessor value is now found at the arender.server.wrapper.source.annotation.accessor property Beans UI configurations (arender-hmi-configuration.xml) Deleted beans Version 4 bean id sorterCommentPresenter annotationExplorer Modified beans Version 4 bean id Changes shortcutManager This bean has no longer the shortcut value. To change the value, use the property according to the wanted shortcut. For example:shortCut.print.key Events configurations (events-configuration.xml) Renamed beans Version 4 bean id Changes obfuscateCreationAction It has been renamed to redactCreationAction obfuscateZoneCreationAction It has been renamed to redactZoneCreationAction Toppanel annotation configurations (toppanel-annotations-configuration.xml) Modified beans Version 4 bean id Changes addObfuscateAnnotationButton This bean has been replaced by addRedactAnnotationButton. It is in arender-hmi-configuration.xml addObfuscateZoneAnnotationButton This bean has been replaced by addRedactZoneAnnotationButton. It is in arender-hmi-configuration.xml Toppanel configurations (toppanel-configuration.xml) Modified beans Version 4 bean id Changes separatorHorizontal, separatorVertical, obfuscationSeparator, printSeparatorHorizontal They have been deleted. rotationSeparatorVertical and annotationSeparatorVertical have been added. It is still possible to add your own seperators fileAndAnnotationSection It has been replaced by the bean topPanelLeftSection. The toppanel is now separate in three sections. This is the left section. Classes Modified classes Class V4 Class actuel ArtifactId of the dependency in V4 ArtifactId of the current dependency DocumentServiceRestClient RenditionRestClient arondor-arender-client-javarmi arender-rendition-rest-client Deleted classes Class V4 DocumentAccessorHasContentSize /p>p>changes/p>p>migration/p>p>web-ui/p>, url: https:\/\/docs.arender.io\/guides\/upgrade\/4.8_to_2023.0\/web-ui\/ }, { value: Admin, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/admin\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/admin\/ }, { value: Advanced integration, path: https:\/\/docs.arender.io\/v4\/quickstart\/advanced-integration\/, label: p>ARender personalization By default, ARender exposes a subset of features to annotate, browse documents, upload new documents, etc\u0026hellip;\nIt is probable that this subset will not entirely fit your need. If it does not, there are two options for you.\nARender Profiles ARender profiles are a Front end server side logic of configuration that is then propagated to each end user.\nA profile defines a set of properties customizing ARender default look and feel, or even alter some features behavior./p>p>ARender personalization By default, ARender exposes a subset of features to annotate, browse documents, upload new documents, etc\u0026hellip;\nIt is probable that this subset will not entirely fit your need. If it does not, there are two options for you.\nARender Profiles ARender profiles are a Front end server side logic of configuration that is then propagated to each end user.\nA profile defines a set of properties customizing ARender default look and feel, or even alter some features behavior.\nARender always have a default profile, named accordingly arender-default. This one cannot be altered.\nARender always have an empty profile, named arender. This one can be altered, and every property overridden in this profile will override the one in arender-default.\n To change profiles, simply call ARender with an additional URL parameter \u0026ldquo;?props\u0026lt;profile_name\u0026gt;\u0026rdquo;. Profiles can be placed anywhere in your Web application server classpath. A full documentation of all ARender profile properties is available in the documentation, containing buttons enabling\/disabling, default coloring, etc\u0026hellip;\nARender JavaScript customization ARender accepts to run a custom JavaScript file during the application loading time to provide this custom JavaScripta reference to ARender JavaScript API.\nOnce your program has this reference, you can hide\/show buttons (using the changeConfigurableElement method), you can open\/close documents, open\/close some panels of ARender interface, etc\u0026hellip;\nPlease refer to the full JavaScript API documentation to have more details regarding this topic.\n/p>p>quickstart/p>p>integration/p>, url: https:\/\/docs.arender.io\/v4\/quickstart\/advanced-integration\/ }, { value: Alfresco, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/alfresco\/, label: p>This page details the configuration of ARender for the ECM Alfresco\nNote To continue on this page, ARender standalone must have been correctly configured.\nIf not yet, then head to this link here.\n Connector Add the cmis connector in the folder \/lib.\n Download the jar file arondor-arender-cmis-2023.16.0-jar-with-dependencies.jar Configurations Connexion between ARender and Alfresco ARender for Alfresco connector enabled communication between ARender and Alfresco Content Services (and Alfresco Process Services)./p>p>This page details the configuration of ARender for the ECM Alfresco\nNote To continue on this page, ARender standalone must have been correctly configured.\nIf not yet, then head to this link here.\n Connector Add the cmis connector in the folder \/lib.\n Download the jar file arondor-arender-cmis-2023.16.0-jar-with-dependencies.jar Configurations Connexion between ARender and Alfresco ARender for Alfresco connector enabled communication between ARender and Alfresco Content Services (and Alfresco Process Services).\nBy default, ARender is configured to communicate with a local Alfresco using CMIS.\n To configure the CMIS connection (editor recommendation) with a remote Alfresco, add the below property: configurations\/arender-custom-server.properties arender.server.alfresco.atom.pub.urlhttp:\/\/alfrescoHost\/alfresco\/api\/-default-\/cmis\/versions\/1.1\/atom Note Authentication will be done using an Alfresco ticket. To configure the SOAP connection (editor recommendation) with a remote Alfresco, add the below properties: configurations\/arender-custom-server.properties arender.server.alfresco.use.soap.wstrue arender.server.alfresco.soap.ws.urlhttp:\/\/alfrescoHost\/alfresco\/cmisws\/cmis?wsdl arender.server.alfresco.useruserNameValue arender.server.alfresco.passwordpasswordValue Context path handling The context path is the path that’s used by applications (for example, Alfresco Share, SOLR, SharePoint, and others). If you want to deploy to a context path that isn’t \/alfresco, it needs to be specified with the following property:\narender.server.alfresco.contextmy-context-path By default, the context path is alfresco (for \/alfresco).\nAnnotations Details on annotation storage No configuration is needed for annotations storage in Alfresco.\nAnnotations will be stored as a child node of the document Node itself. Child node name is: cm:arender-annotations-v{version document}.\nThe installation is complete You can now start the alfresco server and try to open a file with a link formed like this:\nhttp:\/\/{arender_serveur}:{arender_port}\/ARenderHMI\/?nodeRef{nodeRef}\u0026amp;user{user}\u0026amp;alf_ticket{ticket}\u0026amp;versionLabel{version} More information about Alfresco connector here.\n/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/alfresco\/ }, { value: Annotations, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/annotations\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/annotations\/ }, { value: Comparisons, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/comparison\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/comparison\/ }, { value: Configuration, path: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/configuration\/, label: p>Antivirus Settings Ensure that the antivirus does not scan the ARender Rendition folder and sub-folders below.\nCache Management Local vs Shared ARender uses Hazelcast to manage its rendition cache.\nLocal Cache By default, each Rendition instance maintains its own local cache, meaning cached documents are not shared across instances.\nShared Cache With an NFS (Network File System) shared across all Rendition servers and properly configured Hazelcast, cache data can be shared among instances./p>p>Antivirus Settings Ensure that the antivirus does not scan the ARender Rendition folder and sub-folders below.\nCache Management Local vs Shared ARender uses Hazelcast to manage its rendition cache.\nLocal Cache By default, each Rendition instance maintains its own local cache, meaning cached documents are not shared across instances.\nShared Cache With an NFS (Network File System) shared across all Rendition servers and properly configured Hazelcast, cache data can be shared among instances.\nBenefits of Shared Cache:\n 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.\nDefault Hazelcast Configuration The configuration file (hazelcast.yaml) is located within the RenditionEngine resources.\nThe path to find the configuration is modules\/RenditionEngine\/rendition-engine-micro-service-2023.16.0.jar\/BOOT-INF\/classes\/hazelcast.yaml.\nhazelcast.yaml hazelcast: map: documentAccessors: max-idle-seconds: 3600 eviction: eviction-policy: NONE max-size-policy: PER_NODE conversionOrders: max-idle-seconds: 3600 eviction: eviction-policy: NONE max-size-policy: PER_NODE transformationOrders: max-idle-seconds: 3600 eviction: eviction-policy: NONE max-size-policy: PER_NODE 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:\nConfiguration modules\\RenditionEngine\\application.properties default.document.path.startup.cleartrue Adjustable Cleanup Timing: The default behavior is the deletion of all folders created more than a day ago.\nAdjust this value by modifying the configuration below:\napplication.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 \u0026ldquo;SECONDS\u0026rdquo;, \u0026ldquo;MINUTES\u0026rdquo;, \u0026ldquo;HOURS\u0026rdquo; and \u0026ldquo;DAYS\u0026rdquo; 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.\nDefault 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.\nCLUSTER_READ Allows access to the following endpoints :\n \/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 :\n \/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.16.0\\modules\\RenditionEngine\\rendition-engine-micro-service-2023.16.0.jar\\BOOT-INF\\classes\\hazelcast.yaml.\nVersion 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.\nAdd the following argument to the list of JVM arguments: -Dhazelcast.configpath_to_your_file.\nIf the path specified is hazelcast.yaml then the file should be placed into ARender-Rendition-2023.16.0\\modules\\RenditionEngine.\ncustom-setenv.bat set ARENDER_BROKER_JVM_ARGS-Djava.net.preferIPv4Stacktrue -Djava.net.preferIPv6Addressesfalse -Dloader.path\u0026#34;client_libs\/\u0026#34; -Dfile.encodingUTF-8 -Dhazelcast.confighazelcast.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).\nWeb-UI Configuration Specify each Rendition host in the Web-UI server configuration. The distribution will be managed based on the health of the Renditions.\nConfiguration details can be found on the dedicated page.\nFor 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.\nEnable Auto-Detection Activate auto-detection to allow Hazelcast to recognize all Rendition instances.\nRendition Instance Locations Ensure all Rendition instances are on the same subnet for cache sharing.\nConfigure shared directory For using Hazelcast with multiple Rendition instances and a shared directory, the directory must be on NFS.\nEach microservice needs to specify the location of the shared cache directory in the application.yaml file.\n document-service-broker document-renderer document-text-handler document-converter 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:\n For Shared Cache Directories Among Several Renditions, Shared Cache. If a Load Balancer is present between the Web-UI and Renditions, specify the Load Balancer\u0026rsquo;s host in the Web-UI server configuration instead of listing individual Rendition hosts.\narender-server-custom-vanilla.properties arender.server.rendition.hostsLOAD_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\u0027 health.\nDetailed configuration can be found on the dedicated page.\nNetwork File System (NFS) Configuration This configuration is required only when the cache is shared across multiple Rendition instances, see:\n For Shared Cache Directories Among Several Renditions, Shared Cache. Proper NFS configuration is crucial for synchronizing different nodes. Two primary optimizations can cause NFS clients to become out of sync:\n 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,lookupcachenone Refer to the following resources for more information:\nnfs(5) - Linux man page 10.3\nNFS Red Hat Enterprise Linux 6\nOffice backend selection (Optional) ARender offers three configurations for converting Office documents to PDF, each with unique strengths and weaknesses:\n 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. Libreoffice (default) Direct Office (recommended) Microsoft Office Nothing to do, it is the default configuration :). To activate DirectOffice, it must be configured to be associated with the desired mime types:\n Open modules\\TaskConversion Edit application-security.yml Add the following content: mimetype: support: msoffice: \u0026#34;${mime.type.msoffice.publisher},${mime.type.msoffice.visio},${mime.type.msoffice.rtf},${mime.type.msoffice.project}\u0026#34; libreoffice: \u0026#34;${mime.type.libreoffice.text},${mime.type.libreoffice.sheet},${mime.type.libreoffice.presentation},${mime.type.libreoffice.graphics}\u0026#34; directoffice: \u0026#34;${mime.type.msoffice.word},${mime.type.msoffice.excel},${mime.type.msoffice.powerpoint}\u0026#34; 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.\n Installation options Scripted installation\n Download and unzip AromsCheck Run runCheck.bat for automatic setup. Manual installation\nSkip this manual installation if previous scripted installation was a success.\n Download and install the below softwares\n .Net 4.5: Download\n Microsoft Visual C\u002b\u002b redistributable 2010: Download\n Microsoft Visual C\u002b\u002b redistributable 2008: Download\n Configuration Windows system configuration Create the below system folder\nC:\\Windows\\System32\\config\\systemprofile\\Desktop C:\\Windows\\SysWOW64\\config\\systemprofile\\Desktop Important configuration note\n 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:\n 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.\nWarning 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.\nTo 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.\nSetup Navigate to: modules\\RenditionEngine, Open or create the application.properties file, Add the following property: micro-services.pdf-rendererPDFOwl Configurations PDFOwl offers several configurable properties with default values listed below.\nTo update these properties:\n Navigate to: modules\\PDFOwl, Open or create the application.properties file, Add the property and its value. # PdfOwl binary path pdfowl.pathpdfowl # Timeout for pdfowl commands execution in milliseconds pdfowl.client.watchdog10000 # Timeout for idle pdfOwl clients in milliseconds pdfowl.client.ttl30000 # The memory limit used for a thread to work on a single document pdfowl.memlimit.mb1024 PDF Configuration Since 2023.6.0, we have introduced the support of PDF Portfolio and PDF with attachments.\nA PDF Portfolio is a collection of multiple files (PDFs, Word documents, Excel sheets, images, etc.) combined into a single PDF container.\nA PDF with attachments is a standard PDF file that contains other files embedded within it.\nConfigure PDF Portfolio Since 2023.7.0, it\u0026rsquo;s disabled by default.\nTo enable PDF Portfolio feature, set the following property to true.\nmodules\/RenditionEngine\/application.properties arender.server.document.pdf.portfolio.enabledtrue Configure PDF with Attachments Since 2023.7.0, it\u0026rsquo;s disabled by default.\nTo enable PDF with attachments feature, set the following property to true.\nmodules\/RenditionEngine\/application.properties arender.server.document.pdf.attachments.enabledtrue Warning Before 2023.6.0, the DocumentLayout of a PDF was of type DocumentPageLayout for a PDF with attachments so it was not able to hold information regarding the attachment files.\nBut since 2023.6.0, when the property is enabled, PDF with attachments is of type DocumentContainer. In this structure:\n The first child in the children list represents the PDF document itself. The second child is a DocumentContainer that holds all the attachments files within the PDF. Configure PDF search stream timeout Since version 2023.12.0, a new endpoint has been available to search for text within a specific page range of a document. The search will run for a duration defined by the Rendition timeout configuration. If the search times out, it will stop at the last page it was actively searching. The response will then return all results found up to that point, the search status, and the index of that last page.\nTo change the timeout, set the following property to your desire:\nmodules\/PDFBoxEngine\/application.properties # Set PDF search streamed timeout in milliseconds pdf.search.stream.timeout500 Mail Configuration Configure HTML size and conversion performance The property emltopdf.resize.embedded.image.enabled is a Boolean configuration setting that controls whether embedded images within the body of an email are automatically resized during the html-to-PDF conversion process.\nmodules\/RenditionEngine\/application.properties emltopdf.resize.embedded.image.enabledfalse Enabling this feature provides two main benefits:\n Visual Layout: Images are scaled down to fit within the boundaries of the PDF document, preventing content overflow.\n Performance Optimization: Scaling down the image dimensions significantly reduces the overall size (octet) of the HTML, which leads to faster conversion times and lower resource consumption for the rendering engine.\n Warning Enabling this property can significantly alter the rendering and resulting page count of the converted PDF.\nBy scaling down large embedded images, the overall vertical length of the document is reduced, often resulting in fewer pages than if the property were disabled.\nCrucially, this change in page count and content flow will likely invalidate any existing page-number-based references or annotations associated with previously converted versions of the same email.\nIf your workflow relies on consistent page numbering or pre-existing annotation files linked to specific page coordinates, you must exercise caution when enabling this feature.\n /p>p>configuration/p>p>rendition/p>p>Microsoft Office/p>p>hazelcast/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/configuration\/ }, { value: Configuration serveur, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/server\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/server\/ }, { value: Conversion, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/conversion\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/conversion\/ }, { value: DELETE a conversion order, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/conversion\/delete-conversion-order\/, label: p>This API allows to delete a conversion order previously requested.\nAPI technical description Endpoint:\nDELETE \/conversions\/\u0026lt;ConversionOrderId\u0026gt; Resource path:\n Variable Description conversionOderId The id of the conversion order to delete. Examples Delete a conversion order The call below generates a request to delete the transform order with id 123e4567-e89b-12d3-a456-426614174000.\ncurl -X \u0026#39;DELETE\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/conversions\/123e4567-e89b-12d3-a456-426614174000\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>This API allows to delete a conversion order previously requested.\nAPI technical description Endpoint:\nDELETE \/conversions\/\u0026lt;ConversionOrderId\u0026gt; Resource path:\n Variable Description conversionOderId The id of the conversion order to delete. Examples Delete a conversion order The call below generates a request to delete the transform order with id 123e4567-e89b-12d3-a456-426614174000.\ncurl -X \u0026#39;DELETE\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/conversions\/123e4567-e89b-12d3-a456-426614174000\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>tutorial/p>p>conversion/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/conversion\/delete-conversion-order\/ }, { value: DELETE a transformation order, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/delete-transformation-order\/, label: p>This API allows to delete a transformation order previously requested.\nAPI technical description Endpoint :\nDELETE \/transformations\/\u0026lt;transformationOrderId\u0026gt; Ressource path :\n Variable Description transformationOderId Transformation order ID Examples Delete a transformation order The call below generates a request to delete the transform order with id 123e4567-e89b-12d3-a456-426614174000.\ncurl -X \u0026#39;DELETE\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\/123e4567-e89b-12d3-a456-426614174000\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>This API allows to delete a transformation order previously requested.\nAPI technical description Endpoint :\nDELETE \/transformations\/\u0026lt;transformationOrderId\u0026gt; Ressource path :\n Variable Description transformationOderId Transformation order ID Examples Delete a transformation order The call below generates a request to delete the transform order with id 123e4567-e89b-12d3-a456-426614174000.\ncurl -X \u0026#39;DELETE\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\/123e4567-e89b-12d3-a456-426614174000\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>tutorial/p>p>transformation/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/delete-transformation-order\/ }, { value: DELETE Document, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/evict-document\/, label: p>This API allows you to evict (remove) a document from the system.\nAPI Description Endpoint:\nDELETE \/documents\/{documentId} Resource path:\n Variable Required Description documentId Yes The ID of a document Example Evict a Document The following example evicts (removes) a document with the specified document ID.\ncurl -X DELETE \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\u0026#39; /p>p>This API allows you to evict (remove) a document from the system.\nAPI Description Endpoint:\nDELETE \/documents\/{documentId} Resource path:\n Variable Required Description documentId Yes The ID of a document Example Evict a Document The following example evicts (removes) a document with the specified document ID.\ncurl -X DELETE \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\u0026#39; /p>p>evict document/p>p>document/p>p>remove/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/evict-document\/ }, { value: Docker, path: https:\/\/docs.arender.io\/installation\/docker\/, label: p>Registry Location All ARender docker images are available on our artifactory, artifactory.arondor.cloud.\nLogin To authenticate, use the docker command with your artifactory credentials\n$\u0026gt; docker login artifactory.arondor.cloud:5001 If you do not have access to our artifactory, please contact our support service.\nRepository list A complete ARender stack is composed by 6 types of containers:\n Component Repository Latest Version Suffix web UI arender-ui-springboot 2023.16.0 or Alfresco web UI arender-ui-springboot 2023./p>p>Registry Location All ARender docker images are available on our artifactory, artifactory.arondor.cloud.\nLogin To authenticate, use the docker command with your artifactory credentials\n$\u0026gt; docker login artifactory.arondor.cloud:5001 If you do not have access to our artifactory, please contact our support service.\nRepository list A complete ARender stack is composed by 6 types of containers:\n Component Repository Latest Version Suffix web UI arender-ui-springboot 2023.16.0 or Alfresco web UI arender-ui-springboot 2023.16.0 alfresco or IBM FileNet web UI arender-ui-springboot 2023.16.0 filenet rendition arender-document-service-broker 2023.16.0 rendition arender-document-renderer 2023.16.0 rendition arender-document-text-handler 2023.16.0 rendition arender-document-converter 2023.16.0 Pulling images To pull images, use docker pull command with Arondor registry as prefix.\n default specific $\u0026gt; docker pull artifactory.arondor.cloud:5001\/\u0026lt;Repository\u0026gt;:\u0026lt;Version\u0026gt; $\u0026gt; docker pull artifactory.arondor.cloud:5001\/\u0026lt;Repository\u0026gt;:\u0026lt;Version\u0026gt;-\u0026lt;Suffix\u0026gt; Docker compose To start ARender quickly with docker-compose, execute the following commands:\n$\u0026gt; wget -O docker-compose.yml https:\/\/docs.arender.io\/docs\/docker\/docker-compose.yml $\u0026gt; echo \u0026#34;VERSION2023.16.0\u0026#34; \u0026gt; .env $\u0026gt; docker-compose up -d These commands will run the configuration below:\nversion:\u0026#34;3.7\u0026#34;services:ui:image:artifactory.arondor.cloud:5001\/arender-ui-springboot:2023.16.0container_name:uienvironment:- \u0026#34;ARENDERSRV_ARENDER_SERVER_RENDITION_HOSTShttp:\/\/dsb-service:8761\/\u0026#34;ports:- 8080:8080service-broker:image:artifactory.arondor.cloud:5001\/arender-document-service-broker:2023.16.0container_name:dsb-serviceenvironment:- \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DCV-SERVICE19999\u0026#34;- \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DRN-SERVICE9091\u0026#34;- \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DTH-SERVICE8899\u0026#34;ports:- 8761:8761volumes:- arender-tmp:\/arender\/tmpdocument-renderer:image:artifactory.arondor.cloud:5001\/arender-document-renderer:2023.16.0container_name:drn-serviceenvironment:- \u0026#34;DRN_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdrn-service\u0026#34;- \u0026#34;DRN_EUREKA_INSTANCE_HOSTNAMEdsb-service\u0026#34;- \u0026#34;DRN_EUREKA_SERVER_PORT8761\u0026#34;ports:- 9091:9091volumes:- arender-tmp:\/arender\/tmpdocument-text-handler:image:artifactory.arondor.cloud:5001\/arender-document-text-handler:2023.16.0container_name:dth-serviceenvironment:- \u0026#34;DTH_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdth-service\u0026#34;- \u0026#34;DTH_EUREKA_INSTANCE_HOSTNAMEdsb-service\u0026#34;- \u0026#34;DTH_EUREKA_SERVER_PORT8761\u0026#34;ports:- 8899:8899volumes:- arender-tmp:\/arender\/tmpdocument-converter:image:artifactory.arondor.cloud:5001\/arender-document-converter:2023.16.0container_name:dcv-serviceenvironment:- \u0026#34;DCV_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdcv-service\u0026#34;- \u0026#34;DCV_APP_EUREKA_HOSTNAMEdsb-service\u0026#34;- \u0026#34;DCV_APP_EUREKA_PORT8761\u0026#34;ports:- 19999:19999volumes:- arender-tmp:\/arender\/tmp# Shared temporary foldervolumes:arender-tmp:/p>, url: https:\/\/docs.arender.io\/installation\/docker\/ }, { value: Documents, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/ }, { value: Documentum connector, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/documentum\/, label: p>General ARender for Documentum is the integration of the ARender Viewer with the Documentum Platform.\nThis connector preserves native Documentum permissions of users connected in the Viewer. Their identification permits to filter menus, options, buttons to display for proposing a simple role-based and contextual User Interface\nDocuments contents stored in a Documentum repository can now be managed with the powerful features provided by the ARender Viewer, such as:\n Showing documents contained in a folder while selecting the folder Viewing multiple pages of the document at the same time, Zooming and\/or displaying content in Full Screen mode./p>p>General ARender for Documentum is the integration of the ARender Viewer with the Documentum Platform.\nThis connector preserves native Documentum permissions of users connected in the Viewer. Their identification permits to filter menus, options, buttons to display for proposing a simple role-based and contextual User Interface\nDocuments contents stored in a Documentum repository can now be managed with the powerful features provided by the ARender Viewer, such as:\n Showing documents contained in a folder while selecting the folder Viewing multiple pages of the document at the same time, Zooming and\/or displaying content in Full Screen mode. Performing rotations of pages, Viewing the content of a zip, mail, Searching in FullText mode, Uploading of contents from an URL or from a local machine, Saving as PDF, with or without annotations Printing the document, with or without annotations Viewing EMC Documentum virtual documents, Annotating through text (sticky notes) and\/or graphical (highlight, etc\u0026hellip;) features documents by linking and archiving them in a Documentum repository. A Full Web tool easy to deploy, compliant with any web browser and Plug \u0026amp; Play with the last generation of the Documentum clients WebTop, D2 and xCP is now available.\nThe ARender Documentum connector also supports EMC\u0026rsquo;s PDF Annotation Services (PAS) annotation formats, with a seamless migration process to ARender.\n/p>p>documentum/p>p>connector/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/documentum\/ }, { value: Documentum connector, path: https:\/\/docs.arender.io\/v4\/connector\/documentum\/, label: p>General ARender for Documentum is the integration of the ARender Viewer with the Documentum Platform.\nThis connector preserves native Documentum permissions of users connected in the Viewer. Their identification permits to filter menus, options, buttons to display for proposing a simple role-based and contextual User Interface\nDocuments contents stored in a Documentum repository can now be managed with the powerfull features provided by the ARender Viewer, such as:\n Showing documents contained in a folder while selecting the folder Viewing multiple pages of the document at the same time, Zooming and\/or displaying content in Full Screen mode./p>p>General ARender for Documentum is the integration of the ARender Viewer with the Documentum Platform.\nThis connector preserves native Documentum permissions of users connected in the Viewer. Their identification permits to filter menus, options, buttons to display for proposing a simple role-based and contextual User Interface\nDocuments contents stored in a Documentum repository can now be managed with the powerfull features provided by the ARender Viewer, such as:\n Showing documents contained in a folder while selecting the folder Viewing multiple pages of the document at the same time, Zooming and\/or displaying content in Full Screen mode. Performing rotations of pages, Viewing the content of a zip, mail, Searching in FullText mode, Uploading of contents from an URL or from a local machine, Saving as PDF, with or without annotations Printing the document, with or without annotations Viewing EMC Documentum virtual documents, Annotating through text (sticky notes) and\/or graphical (highlight, etc\u0026hellip;) features documents by linking and archiving them in a Documentum repository. A Full Web tool easy to deploy, compliant with any web browser and Plug \u0026amp; Play with the last generation of the Documentum clients WebTop, D2 and xCP is now available.\nThe ARender Documentum connector also supports EMC\u0026rsquo;s PDF Annotation Services (PAS) annotation formats, with a seamless migration process to ARender.\n/p>p>documentum/p>p>connector/p>, url: https:\/\/docs.arender.io\/v4\/connector\/documentum\/ }, { value: ECM connectors, path: https:\/\/docs.arender.io\/what-is-arender\/integrations\/, label: p>Existing connectors You will find below the list of ECM for which a connector to ARender exists:\n Editor Product Hyland Nuxeo Hyland Alfresco Content Services Hyland Alfresco Process Services M-Files M-Files Tessi Docubase Tessi Data Content Extedo EXTEDOpulse platform Extedo esubmanager IBM IBM FileNet Content Manager IBM IBM FileNet P8 IBM IBM Content Manager IBM IBM Content Manager OnDemand Salesforce Salesforce OpenText OpenText OpenText Documentum /p>p>Existing connectors You will find below the list of ECM for which a connector to ARender exists:\n Editor Product Hyland Nuxeo Hyland Alfresco Content Services Hyland Alfresco Process Services M-Files M-Files Tessi Docubase Tessi Data Content Extedo EXTEDOpulse platform Extedo esubmanager IBM IBM FileNet Content Manager IBM IBM FileNet P8 IBM IBM Content Manager IBM IBM Content Manager OnDemand Salesforce Salesforce OpenText OpenText OpenText Documentum /p>, url: https:\/\/docs.arender.io\/what-is-arender\/integrations\/ }, { value: Events, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/events\/, label: p>Register to error events while loading documents Object: getARenderJS() Function Description registerNotifyLoadingErrorEvent(callback) Register a callback function that will be called when an error occurs when loading documents. Arguments: - the callback function to call when an error occurs. scripts\/example.js \/\/ Subscribe a function to the errors getARenderJS().registerNotifyLoadingErrorEvent(function(documentId,message) { console.log(\u0026#34;error: \u0026#34;\u002bmessage) }); \/\/ Loads the PDF reference document \/\/ If an error occurs I am notified on the function defined before!/p>p>Register to error events while loading documents Object: getARenderJS() Function Description registerNotifyLoadingErrorEvent(callback) Register a callback function that will be called when an error occurs when loading documents. Arguments: - the callback function to call when an error occurs. scripts\/example.js \/\/ Subscribe a function to the errors getARenderJS().registerNotifyLoadingErrorEvent(function(documentId,message) { console.log(\u0026#34;error: \u0026#34;\u002bmessage) }); \/\/ Loads the PDF reference document \/\/ If an error occurs I am notified on the function defined before! getARenderJS().loadDocument( \u0026#34;loadingQuery?urlhttp:\/\/www.arender.fr\/pdf\/pdf\/PDFReference15_v5.pdf\u0026#34;, function(id) { getARenderJS().openDocument(id); } ); Know when ARender finished to load its modules Object: getARenderJS() Function Description registerAllAsyncModulesStartedEvent(callback) Register a callback function that will be called when ARender finishes loading its modules. Arguments: - the callback function to call when asynchronous modules are loaded. scripts\/example.js \/\/ Subscribe a function to the loading. When asynchronous modules are loaded I am notified getARenderJS().registerAllAsyncModulesStartedEvent( function() {console.log(\u0026#34;modules are loaded\u0026#34;)} ); Know when a page change occurs Object: getARenderJS() Function Description registerNotifyPageChangeEvent(callback) Register a callback function that will be called when a page change is requested. scripts\/example.js \/\/ I am notified to a page change request getARenderJS().registerNotifyPageChangeEvent( function(currentPage, pageCount, documentId) { console.log(\u0026#34;page \u0026#34; \u002b currentPage \u002b \u0026#34; change requested for document \u0026#34; \u002b documentId) } ); Setup plugin events and plugin parameters Object: getARenderJS() Function Description preparePluginEvent(key,value,pluginName) Insert a (Key,Value) couple in the target URL of the next plugin Event of name pluginName clearPluginEvent(pluginName) Clear all couple (Key,Value) stored in for the name pluginName openPlugin(pluginName,openInMultiView) Open the plugin pluginName in ARender, in multiView or not with the boolean openInMultiView These functions allow you to prepare a plugin opening event in order to enrich its launch in a contextualized way from ARender.\nfunction arenderjs_init(ajs) { \/\/ this line prepare an URL such as http:\/\/plumeURL\/?Tototo@tutu.com ajs.preparePluginEvent(\u0026#34;To\u0026#34;,\u0026#34;toto@tutu.com\u0026#34;,\u0026#34;plume\u0026#34;); \/\/ Here, we clear all stored values for this plugin, \/\/ can be useful if called from a \u0026#34;clear\u0026#34; button ajs.clearPluginEvent(\u0026#34;plume\u0026#34;); } Interact with anchor Objet: getARenderJS()\n Function Description askOpenAnchorModal(isFromThumbPresenter, documentId, x, y, w, h, page) Ouvre la popup de création des ancres isFromThumbPresenter : If true, generate an anchor from selected pictree thumbnails. If false generate an anchor from document view. documentId: The ID of the document. x: The x-coordinate for the anchor\u0026rsquo;s position. y: The y-coordinate for the anchor\u0026rsquo;s position. w: The anchor\u0026rsquo;s width. h: The anchor\u0026rsquo;s height. page: The page number where the anchor is located. scripts\/example.js \/\/ To create an anchor from pictree in page 1 of a document getARenderJS().askOpenAnchorModal(true, \u0026#34;documentId\u0026#34;, 44, 26, 25, 30, 0); /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/events\/ }, { value: Events, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/events\/, label: p>Register to error events while loading documents Object: getARenderJS() Function Description registerNotifyLoadingErrorEvent(callback) Register a callback function that will be called when an error occurs when loading documents. Arguments: - the callback function to call when an error occurs. scripts\/exemple.js \/\/ Subscribe a function to the errors getARenderJS().registerNotifyLoadingErrorEvent(function(documentId,message) { console.log(\u0026#34;error: \u0026#34;\u002bmessage) }); \/\/ Loads the PDF reference document \/\/ If an error occurs I am notified on the function defined before!/p>p>Register to error events while loading documents Object: getARenderJS() Function Description registerNotifyLoadingErrorEvent(callback) Register a callback function that will be called when an error occurs when loading documents. Arguments: - the callback function to call when an error occurs. scripts\/exemple.js \/\/ Subscribe a function to the errors getARenderJS().registerNotifyLoadingErrorEvent(function(documentId,message) { console.log(\u0026#34;error: \u0026#34;\u002bmessage) }); \/\/ Loads the PDF reference document \/\/ If an error occurs I am notified on the function defined before! getARenderJS().loadDocument( \u0026#34;loadingQuery?urlhttp:\/\/www.arender.fr\/pdf\/pdf\/PDFReference15_v5.pdf\u0026#34;, function(id) { getARenderJS().openDocument(id); } ); Know when ARender finished to load its modules Object: getARenderJS() Function Description registerAllAsyncModulesStartedEvent(callback) Register a callback function that will be called when ARender finishes loading its modules. Arguments: - the callback function to call when asynchronous modules are loaded. scripts\/example.js \/\/ Subscribe a function to the loading. When asynchronous modules are loaded I am notified getARenderJS().registerAllAsyncModulesStartedEvent( function() {console.log(\u0026#34;modules are loaded\u0026#34;)} ); Setup plugin events and plugin parameters Object: getARenderJS() Function Description preparePluginEvent(key,value,pluginName) Insert a (Key,Value) couple in the target URL of the next plugin Event of name pluginName clearPluginEvent(pluginName) Clear all couple (Key,Value) stored in for the name pluginName openPlugin(pluginName,openInMultiView) Open the plugin pluginName in ARender, in multiView or not with the boolean openInMultiView Those functions allow to prepare an event before opening the plugin in order to setup a correct URL for parameterizing the plugin from ARender ahead of time.\nfunction arenderjs_init(ajs) { \/\/ this line prepare an URL such as http:\/\/plumeURL\/?Tototo@tutu.com ajs.preparePluginEvent(\u0026#34;To\u0026#34;,\u0026#34;toto@tutu.com\u0026#34;,\u0026#34;plume\u0026#34;); \/\/ Here, we clear all stored values for this plugin, \/\/ can be useful if called from a \u0026#34;clear\u0026#34; button ajs.clearPluginEvent(\u0026#34;plume\u0026#34;); } /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/events\/ }, { value: Installation, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/install\/, label: p>Below a standalone installation of the ARender HMI. For installation on ECM systems, you can skip this page.\nPrerequisites An application server (see the Requirements). Here we will use Apache Tomcat 9.0.21\n Download the last version of ARender HMI : ARender HMI 4.8.21 ↓\n Deploy ARender HMI Move ARender WAR file Move the WAR to the webapps folder of the tomcat application server in order to have the below structure/p>p>Below a standalone installation of the ARender HMI. For installation on ECM systems, you can skip this page.\nPrerequisites An application server (see the Requirements). Here we will use Apache Tomcat 9.0.21\n Download the last version of ARender HMI : ARender HMI 4.8.21 ↓\n Deploy ARender HMI Move ARender WAR file Move the WAR to the webapps folder of the tomcat application server in order to have the below structure\n Tomcat 9.0 bin \u0026hellip; webapps arondor-arender-hmi-4.8.21 Start the application server Start the application server using the startup.bat script located in the bin folder of Tomcat.\nOpen a browser new window Example Access to http:\/\/localhost:8080\/arondor-arender-hmi-4.8.21\/ via a web browser. The URL to use should be built like this: http:\/\/{hmiHostName}:{portHMI}\/{ARenderContext}\/:\n {hmiHostName}: the host name of the application server {portHMI}: the application server port {ARenderContext}: the root context of the HMI in the application server /p>p>standalone/p>p>hmi/p>p>configuration/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/install\/ }, { value: Installation in ACA, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/alfresco\/aca\/alfresco-aca\/, label: p>Quick start with Docker If needed, learn how to run ARender in docker here.\n Change ARender UI context path to \/arender. Note With ARender UI container, change the context with CONTEXT_PATH\/arender in the container environment variable. \n Pull the ACA image from our artifactory with:\n$\u0026gt; docker pull artifactory.arondor.cloud:5001\/adf-content-app-arender:\u0026lt;arender-version\u0026gt;-aca\u0026lt;aca-version\u0026gt; Then run the container with the following configuration: docker-compose.yml version:\u0026#34;3\u0026#34;services:aca:image:alfresco-content-app:AR-11007environment:# ACA host- ADF_PUBLIC_HOSThttp:\/\/localhost# ARender host with \/arender as context path- ARENDER_HOSThttp:\/\/localhost:8080# alfresco content repository host- ALFRESCO_HOSThttp:\/\/localhost:8080# alfresco host for oauth- ALFRESCO_OAUTH_HOSThttp:\/\/localhost:8080# list of extensions that opens with arender as preview (separator \u0026#39;,\u0026#39;)- ARENDER_EXTENSIONSpdf,docx,docm,dotx,dotm,doc,dot,rtf,odt,ott,xlsx,xlsm,xls,xlt,xml,csv,ods,ots,pptx,pptm,ppt,pps,odp,otp,vsdx,msg,eml,html,htm,txt,dwg,dxf,tif,tiff,dcm,mda,ica,mmr,mca,jpg,jpeg,jpe,jfif,jp2,jpf,jpx,j2k,j2c,jpc,png,gif,webp,bmp,mp4,zipports:- 80:8080/p>p>Quick start with Docker If needed, learn how to run ARender in docker here.\n Change ARender UI context path to \/arender. Note With ARender UI container, change the context with CONTEXT_PATH\/arender in the container environment variable. \n Pull the ACA image from our artifactory with:\n$\u0026gt; docker pull artifactory.arondor.cloud:5001\/adf-content-app-arender:\u0026lt;arender-version\u0026gt;-aca\u0026lt;aca-version\u0026gt; Then run the container with the following configuration: docker-compose.yml version:\u0026#34;3\u0026#34;services:aca:image:alfresco-content-app:AR-11007environment:# ACA host- ADF_PUBLIC_HOSThttp:\/\/localhost# ARender host with \/arender as context path- ARENDER_HOSThttp:\/\/localhost:8080# alfresco content repository host- ALFRESCO_HOSThttp:\/\/localhost:8080# alfresco host for oauth- ALFRESCO_OAUTH_HOSThttp:\/\/localhost:8080# list of extensions that opens with arender as preview (separator \u0026#39;,\u0026#39;)- ARENDER_EXTENSIONSpdf,docx,docm,dotx,dotm,doc,dot,rtf,odt,ott,xlsx,xlsm,xls,xlt,xml,csv,ods,ots,pptx,pptm,ppt,pps,odp,otp,vsdx,msg,eml,html,htm,txt,dwg,dxf,tif,tiff,dcm,mda,ica,mmr,mca,jpg,jpeg,jpe,jfif,jp2,jpf,jpx,j2k,j2c,jpc,png,gif,webp,bmp,mp4,zipports:- 80:8080 \n Add ARender to your Alfresco Content App Requirements Alfresco 5.2.4, 6.x Tomcat 7.0 NodeJS v10.16.0, npm 6.14.2 Install As the module is preview and not publicly available you need to add it manually.\n Clone the ACA repository.\n$\u0026gt; git clone https:\/\/github.com\/Alfresco\/alfresco-content-app.git $\u0026gt; git checkout v1.10.1 Download ARender ACA extension sources here and unzip the archive content.\n Create a library project.\n$\u0026gt; ng g library arondor-arender-viewer Replace the content of the created folder by ARender ACA extension sources.\n Add ARender lib to the compiler config. tsconfig.json {\u0026#34;compilerOptions\u0026#34;: {\/\/ ...\u0026#34;paths\u0026#34;: {\/\/ ...\u0026#34;@arondor\/arender-viewer\u0026#34;: \u0026#34;dist\/@arondor\/arender-viewer\u0026#34;,\u0026#34;@arondor\/arender-viewer\/*\u0026#34;: \u0026#34;dist\/@arondor\/arender-viewer\/*\u0026#34;}}}Warning \u0026lt;div class\u0026quot;content\u0026quot;\u0026gt; For versions 2.0 and above, refer to the version 2.0 installation \u0026lt;\/div\u0026gt; \n Add ARender assets to the app and replace project infos. angular.json {\u0026#34;projects\u0026#34;: {\u0026#34;app\u0026#34;: {\u0026#34;architect\u0026#34;: {\/\/...\u0026#34;build\u0026#34;: {\/\/...\u0026#34;options\u0026#34;: {\/\/...\u0026#34;assets\u0026#34;: \/\/...{\u0026#34;glob\u0026#34;: \u0026#34;arender.plugin.json\u0026#34;,\u0026#34;input\u0026#34;: \u0026#34;node_modules\/@arondor\/arender-viewer\/assets\u0026#34;,\u0026#34;output\u0026#34;: \u0026#34;.\/assets\/plugins\u0026#34;},{\u0026#34;glob\u0026#34;: \u0026#34;arender.plugin.json\u0026#34;,\u0026#34;input\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/assets\u0026#34;,\u0026#34;output\u0026#34;: \u0026#34;.\/assets\/plugins\u0026#34;},{\u0026#34;glob\u0026#34;: \u0026#34;**\/*\u0026#34;,\u0026#34;input\u0026#34;: \u0026#34;node_modules\/@arondor\/arender-viewer\/assets\u0026#34;,\u0026#34;output\u0026#34;: \u0026#34;.\/assets\/arender-viewer\u0026#34;},{\u0026#34;glob\u0026#34;: \u0026#34;**\/*\u0026#34;,\u0026#34;input\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/assets\u0026#34;,\u0026#34;output\u0026#34;: \u0026#34;.\/assets\/arender-viewer\u0026#34;}}}}},\/\/...\u0026#34;arondor-arender-viewer\u0026#34;: {\u0026#34;root\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\u0026#34;,\u0026#34;sourceRoot\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/src\u0026#34;,\u0026#34;projectType\u0026#34;: \u0026#34;library\u0026#34;,\u0026#34;prefix\u0026#34;: \u0026#34;arender\u0026#34;,\u0026#34;architect\u0026#34;: {\u0026#34;build\u0026#34;: {\u0026#34;builder\u0026#34;: \u0026#34;@angular-devkit\/build-ng-packagr:build\u0026#34;,\u0026#34;options\u0026#34;: {\u0026#34;tsConfig\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/tsconfig.lib.json\u0026#34;,\u0026#34;project\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/ng-package.json\u0026#34;}},\u0026#34;test\u0026#34;: {\u0026#34;builder\u0026#34;: \u0026#34;@angular-devkit\/build-angular:karma\u0026#34;,\u0026#34;options\u0026#34;: {\u0026#34;main\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/src\/test.ts\u0026#34;,\u0026#34;tsConfig\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/tsconfig.spec.json\u0026#34;,\u0026#34;karmaConfig\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/karma.conf.js\u0026#34;}},\u0026#34;lint\u0026#34;: {\u0026#34;builder\u0026#34;: \u0026#34;@angular-devkit\/build-angular:tslint\u0026#34;,\u0026#34;options\u0026#34;: {\u0026#34;tsConfig\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/tsconfig.lib.json\u0026#34;,\u0026#34;projects\/arondor-arender-viewer\/tsconfig.spec.json\u0026#34;,\u0026#34;exclude\u0026#34;: \u0026#34;**\/node_modules\/**\u0026#34;}}}}}} \n Add ARender extension description. src\/assets\/app.extension.json {\u0026#34;$references\u0026#34;: \u0026#34;arender.plugin.json\u0026#34;,...,} \n Import ARender extension. src\/app\/extension.module.ts import { ArenderExtensionModule } from \u0026#39;@arondor\/arender-viewer\u0026#39;; @NgModule({ imports: ArenderExtensionModule, ... }) \n Add ARender ACA extension to the package build scripts. package.json {\u0026#34;scripts\u0026#34;: {\/\/...\u0026#34;build:arender-extension\u0026#34;: \u0026#34;npx rimraf dist\/@arondor\/arender-viewer \u0026amp;\u0026amp; ng build arondor-arender-viewer \u0026amp;\u0026amp; cpr projects\/arondor-arender-viewer\/ngi.json dist\/@arondor\/arender-viewer\/ngi.json \u0026amp;\u0026amp; cpr projects\/arondor-arender-viewer\/assets dist\/@arondor\/arender-viewer\/assets\u0026#34;,\u0026#34;build.arender\u0026#34;: \u0026#34;npm run build:arender-extension\u0026#34;,\u0026#34;build.extensions\u0026#34;: \u0026#34;npm run build.shared \u0026amp;\u0026amp; npm run build.aos \u0026amp;\u0026amp; npm run build.arender\u0026#34;,\/\/...}} \n Warning For versions 2.0 and above, refer to the version 2.0 installation Configuration ARender server config src\/app.config.json {\u0026#34;arender\u0026#34;: {\u0026#34;host\u0026#34;: \u0026#34;{protocol}\/\/{hostname}:{port}\/arender\/\u0026#34;,\u0026#34;onPromise\u0026#34;: true,\u0026#34;documentbuilder\u0026#34;: true},\/\/...} Description:\n arender.host: arender host with \u0026quot;\/arender\u0026quot; as context path. Use the default configuration to avoid Cross Origin issues. arender.onPromise: enable multiple documents and\/or folders opening. arender.documentbuilder: enable document composition feature by default. File extension openned Modify features.viewer.content.fileExtension list. asset\/arender-viewer\/arender.plugin.json {\/\/...\u0026#34;features\u0026#34;: {\u0026#34;viewer\u0026#34;: {\u0026#34;content\u0026#34;: {\u0026#34;id\u0026#34;: \u0026#34;app.arender.viewer\u0026#34;,\u0026#34;fileExtension\u0026#34;: \u0026#34;docx\u0026#34;,\u0026#34;docm\u0026#34;,\u0026#34;dotx\u0026#34;,\u0026#34;dotm\u0026#34;,\u0026#34;doc\u0026#34;,\u0026#34;dot\u0026#34;,\u0026#34;rtf\u0026#34;,\u0026#34;odt\u0026#34;,\u0026#34;ott\u0026#34;,\u0026#34;xlsx\u0026#34;,\u0026#34;xlsm\u0026#34;,\u0026#34;xls\u0026#34;,\u0026#34;xlt\u0026#34;,\u0026#34;xml\u0026#34;,\u0026#34;csv\u0026#34;,\u0026#34;ods\u0026#34;,\u0026#34;ots\u0026#34;,\u0026#34;pptx\u0026#34;,\u0026#34;pptm\u0026#34;,\u0026#34;ppt\u0026#34;,\u0026#34;pps\u0026#34;,\u0026#34;odp\u0026#34;,\u0026#34;otp\u0026#34;,\u0026#34;vsdx\u0026#34;,\u0026#34;msg\u0026#34;,\u0026#34;eml\u0026#34;,\u0026#34;html\u0026#34;,\u0026#34;htm\u0026#34;,\u0026#34;txt\u0026#34;,\u0026#34;dwg\u0026#34;,\u0026#34;dxf\u0026#34;,\u0026#34;tif\u0026#34;,\u0026#34;tiff\u0026#34;,\u0026#34;dcm\u0026#34;,\u0026#34;mda\u0026#34;,\u0026#34;ica\u0026#34;,\u0026#34;mmr\u0026#34;,\u0026#34;mca\u0026#34;,\u0026#34;jpg\u0026#34;,\u0026#34;jpeg\u0026#34;,\u0026#34;jpe\u0026#34;,\u0026#34;jfif\u0026#34;,\u0026#34;jp2\u0026#34;,\u0026#34;jpf\u0026#34;,\u0026#34;jpx\u0026#34;,\u0026#34;j2k\u0026#34;,\u0026#34;j2c\u0026#34;,\u0026#34;jpc\u0026#34;,\u0026#34;png\u0026#34;,\u0026#34;gif\u0026#34;,\u0026#34;webp\u0026#34;,\u0026#34;bmp\u0026#34;\/\/ \u0026lt;- Add your extensions here or\/and remove element from the list above ^,}},\/\/ ...}} \nBuild and run Install the angular-devkit.\n$\u0026gt; npm install --save-dev @angular-devkit\/build-angular Execute the bash script to build the app.\n$\u0026gt; .\/build-tomcat-e2e.sh Copy the generated folder (alfresco-content-app-1.10.1\\dist\\app for ACA v1.10.1) to your tomcat \u0026ldquo;\/webapps\u0026rdquo; folder and rename it if needed.\n Start Tomcat.\n Install for version 2.0 For versions 2.0 and above, the following additional changes must be done :\n The ARender lib in the compiler configuration are placed in tsconfig.base.json and not in tsconfig.json tsconfig.base.json {\u0026#34;compilerOptions\u0026#34;: {\/\/ ...\u0026#34;paths\u0026#34;: {\/\/ ...\u0026#34;@arondor\/arender-viewer\u0026#34;: \u0026#34;dist\/@arondor\/arender-viewer\u0026#34;,\u0026#34;@arondor\/arender-viewer\/*\u0026#34;: \u0026#34;dist\/@arondor\/arender-viewer\/*\u0026#34;}}} Add ARender ACA extension to the package build scripts. package.json {\u0026#34;scripts\u0026#34;: {\/\/...\u0026#34;build:arender-extension\u0026#34;: \u0026#34;npx rimraf dist\/@arondor\/arender-viewer \u0026amp;\u0026amp; ng build arondor-arender-viewer \u0026amp;\u0026amp; cpr projects\/arondor-arender-viewer\/ngi.json dist\/@arondor\/arender-viewer\/ngi.json \u0026amp;\u0026amp; cpr projects\/arondor-arender-viewer\/assets dist\/@arondor\/arender-viewer\/assets\u0026#34;,\u0026#34;build.arender\u0026#34;: \u0026#34;npm run build:arender-extension\u0026#34;,\u0026#34;build.extensions\u0026#34;: \u0026#34;npm run build.shared \u0026amp;\u0026amp; npm run build.aos \u0026amp;\u0026amp; npm run build.arender\u0026#34;,\u0026#34;build\u0026#34;: \u0026#34;npm run validate-config \u0026amp;\u0026amp; npm run build.extensions \u0026amp;\u0026amp; npm run build.app -- --prod\u0026#34;,\/\/...}} Execute the command to build the app and have the generated folder (\/dist\/app) to place in your tomcat server in the \u0026ldquo;webapps\u0026rdquo; folder.\n$\u0026gt; ng build /p>p>standalone/p>p>hmi/p>p>web ui/p>p>configuration/p>p>alfresco/p>p>adf/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/alfresco\/aca\/alfresco-aca\/ }, { value: Installation in ACA, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/alfresco\/alfresco-aca\/, label: p>Quick start with Docker If needed, learn how to run ARender in docker here.\n Change ARender UI context path to \/arender. Note With ARender UI container, change the context with CONTEXT_PATH\/arender in the container environment variable. \n Pull the ACA image from our artifactory with:\n$\u0026gt; docker pull artifactory.arondor.cloud:5001\/adf-content-app-arender:\u0026lt;arender-version\u0026gt;-aca\u0026lt;aca-version\u0026gt; Then run the container with the following configuration: docker-compose.yml version:\u0026#34;3\u0026#34;services:aca:image:alfresco-content-app:AR-11007environment:# ACA host- ADF_PUBLIC_HOSThttp:\/\/localhost# ARender host with \/arender as context path- ARENDER_HOSThttp:\/\/localhost:8080# alfresco content repository host- ALFRESCO_HOSThttp:\/\/localhost:8080# alfresco host for oauth- ALFRESCO_OAUTH_HOSThttp:\/\/localhost:8080# list of extensions that opens with arender as preview (separator \u0026#39;,\u0026#39;)- ARENDER_EXTENSIONSpdf,docx,docm,dotx,dotm,doc,dot,rtf,odt,ott,xlsx,xlsm,xls,xlt,xml,csv,ods,ots,pptx,pptm,ppt,pps,odp,otp,vsdx,msg,eml,html,htm,txt,dwg,dxf,tif,tiff,dcm,mda,ica,mmr,mca,jpg,jpeg,jpe,jfif,jp2,jpf,jpx,j2k,j2c,jpc,png,gif,webp,bmp,mp4,zipports:- 80:8080/p>p>Quick start with Docker If needed, learn how to run ARender in docker here.\n Change ARender UI context path to \/arender. Note With ARender UI container, change the context with CONTEXT_PATH\/arender in the container environment variable. \n Pull the ACA image from our artifactory with:\n$\u0026gt; docker pull artifactory.arondor.cloud:5001\/adf-content-app-arender:\u0026lt;arender-version\u0026gt;-aca\u0026lt;aca-version\u0026gt; Then run the container with the following configuration: docker-compose.yml version:\u0026#34;3\u0026#34;services:aca:image:alfresco-content-app:AR-11007environment:# ACA host- ADF_PUBLIC_HOSThttp:\/\/localhost# ARender host with \/arender as context path- ARENDER_HOSThttp:\/\/localhost:8080# alfresco content repository host- ALFRESCO_HOSThttp:\/\/localhost:8080# alfresco host for oauth- ALFRESCO_OAUTH_HOSThttp:\/\/localhost:8080# list of extensions that opens with arender as preview (separator \u0026#39;,\u0026#39;)- ARENDER_EXTENSIONSpdf,docx,docm,dotx,dotm,doc,dot,rtf,odt,ott,xlsx,xlsm,xls,xlt,xml,csv,ods,ots,pptx,pptm,ppt,pps,odp,otp,vsdx,msg,eml,html,htm,txt,dwg,dxf,tif,tiff,dcm,mda,ica,mmr,mca,jpg,jpeg,jpe,jfif,jp2,jpf,jpx,j2k,j2c,jpc,png,gif,webp,bmp,mp4,zipports:- 80:8080 \n Add ARender to your Alfresco Content App Requirements Alfresco 5.2.4, 6.x Tomcat 7.0 NodeJS v10.16.0, npm 6.14.2 Install As the module is preview and not publicly available you need to add it manually.\n Clone the ACA repository.\n$\u0026gt; git clone https:\/\/github.com\/Alfresco\/alfresco-content-app.git $\u0026gt; git checkout v1.10.1 Download ARender ACA extension sources here and unzip the archive content.\n Create a library project.\n$\u0026gt; ng g library arondor-arender-viewer Replace the content of the created folder by ARender ACA extension sources.\n Add ARender lib to the compiler config. tsconfig.json {\u0026#34;compilerOptions\u0026#34;: {\/\/ ...\u0026#34;paths\u0026#34;: {\/\/ ...\u0026#34;@arondor\/arender-viewer\u0026#34;: \u0026#34;dist\/@arondor\/arender-viewer\u0026#34;,\u0026#34;@arondor\/arender-viewer\/*\u0026#34;: \u0026#34;dist\/@arondor\/arender-viewer\/*\u0026#34;}}}Warning \u0026lt;div class\u0026quot;content\u0026quot;\u0026gt; For versions 2.0 and above, refer to the version 2.0 installation \u0026lt;\/div\u0026gt; \n Add ARender assets to the app and replace project infos. angular.json {\u0026#34;projects\u0026#34;: {\u0026#34;app\u0026#34;: {\u0026#34;architect\u0026#34;: {\/\/...\u0026#34;build\u0026#34;: {\/\/...\u0026#34;options\u0026#34;: {\/\/...\u0026#34;assets\u0026#34;: \/\/...{\u0026#34;glob\u0026#34;: \u0026#34;arender.plugin.json\u0026#34;,\u0026#34;input\u0026#34;: \u0026#34;node_modules\/@arondor\/arender-viewer\/assets\u0026#34;,\u0026#34;output\u0026#34;: \u0026#34;.\/assets\/plugins\u0026#34;},{\u0026#34;glob\u0026#34;: \u0026#34;arender.plugin.json\u0026#34;,\u0026#34;input\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/assets\u0026#34;,\u0026#34;output\u0026#34;: \u0026#34;.\/assets\/plugins\u0026#34;},{\u0026#34;glob\u0026#34;: \u0026#34;**\/*\u0026#34;,\u0026#34;input\u0026#34;: \u0026#34;node_modules\/@arondor\/arender-viewer\/assets\u0026#34;,\u0026#34;output\u0026#34;: \u0026#34;.\/assets\/arender-viewer\u0026#34;},{\u0026#34;glob\u0026#34;: \u0026#34;**\/*\u0026#34;,\u0026#34;input\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/assets\u0026#34;,\u0026#34;output\u0026#34;: \u0026#34;.\/assets\/arender-viewer\u0026#34;}}}}},\/\/...\u0026#34;arondor-arender-viewer\u0026#34;: {\u0026#34;root\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\u0026#34;,\u0026#34;sourceRoot\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/src\u0026#34;,\u0026#34;projectType\u0026#34;: \u0026#34;library\u0026#34;,\u0026#34;prefix\u0026#34;: \u0026#34;arender\u0026#34;,\u0026#34;architect\u0026#34;: {\u0026#34;build\u0026#34;: {\u0026#34;builder\u0026#34;: \u0026#34;@angular-devkit\/build-ng-packagr:build\u0026#34;,\u0026#34;options\u0026#34;: {\u0026#34;tsConfig\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/tsconfig.lib.json\u0026#34;,\u0026#34;project\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/ng-package.json\u0026#34;}},\u0026#34;test\u0026#34;: {\u0026#34;builder\u0026#34;: \u0026#34;@angular-devkit\/build-angular:karma\u0026#34;,\u0026#34;options\u0026#34;: {\u0026#34;main\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/src\/test.ts\u0026#34;,\u0026#34;tsConfig\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/tsconfig.spec.json\u0026#34;,\u0026#34;karmaConfig\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/karma.conf.js\u0026#34;}},\u0026#34;lint\u0026#34;: {\u0026#34;builder\u0026#34;: \u0026#34;@angular-devkit\/build-angular:tslint\u0026#34;,\u0026#34;options\u0026#34;: {\u0026#34;tsConfig\u0026#34;: \u0026#34;projects\/arondor-arender-viewer\/tsconfig.lib.json\u0026#34;,\u0026#34;projects\/arondor-arender-viewer\/tsconfig.spec.json\u0026#34;,\u0026#34;exclude\u0026#34;: \u0026#34;**\/node_modules\/**\u0026#34;}}}}}} \n Add ARender extension description. src\/assets\/app.extension.json {\u0026#34;$references\u0026#34;: \u0026#34;arender.plugin.json\u0026#34;,...,} \n Import ARender extension. src\/app\/extension.module.ts import { ArenderExtensionModule } from \u0026#39;@arondor\/arender-viewer\u0026#39;; @NgModule({ imports: ArenderExtensionModule, ... }) \n Add ARender ACA extension to the package build scripts. package.json {\u0026#34;scripts\u0026#34;: {\/\/...\u0026#34;build:arender-extension\u0026#34;: \u0026#34;npx rimraf dist\/@arondor\/arender-viewer \u0026amp;\u0026amp; ng build arondor-arender-viewer \u0026amp;\u0026amp; cpr projects\/arondor-arender-viewer\/ngi.json dist\/@arondor\/arender-viewer\/ngi.json \u0026amp;\u0026amp; cpr projects\/arondor-arender-viewer\/assets dist\/@arondor\/arender-viewer\/assets\u0026#34;,\u0026#34;build.arender\u0026#34;: \u0026#34;npm run build:arender-extension\u0026#34;,\u0026#34;build.extensions\u0026#34;: \u0026#34;npm run build.shared \u0026amp;\u0026amp; npm run build.aos \u0026amp;\u0026amp; npm run build.arender\u0026#34;,\/\/...}} \n Warning For versions 2.0 and above, refer to the version 2.0 installation Configuration ARender server config src\/app.config.json {\u0026#34;arender\u0026#34;: {\u0026#34;host\u0026#34;: \u0026#34;{protocol}\/\/{hostname}:{port}\/arender\/\u0026#34;,\u0026#34;onPromise\u0026#34;: true,\u0026#34;documentbuilder\u0026#34;: true},\/\/...} Description:\n arender.host: arender host with \u0026quot;\/arender\u0026quot; as context path. Use the default configuration to avoid Cross Origin issues. arender.onPromise: enable multiple documents and\/or folders opening. arender.documentbuilder: enable document composition feature by default. File extension openned Modify features.viewer.content.fileExtension list. asset\/arender-viewer\/arender.plugin.json {\/\/...\u0026#34;features\u0026#34;: {\u0026#34;viewer\u0026#34;: {\u0026#34;content\u0026#34;: {\u0026#34;id\u0026#34;: \u0026#34;app.arender.viewer\u0026#34;,\u0026#34;fileExtension\u0026#34;: \u0026#34;docx\u0026#34;,\u0026#34;docm\u0026#34;,\u0026#34;dotx\u0026#34;,\u0026#34;dotm\u0026#34;,\u0026#34;doc\u0026#34;,\u0026#34;dot\u0026#34;,\u0026#34;rtf\u0026#34;,\u0026#34;odt\u0026#34;,\u0026#34;ott\u0026#34;,\u0026#34;xlsx\u0026#34;,\u0026#34;xlsm\u0026#34;,\u0026#34;xls\u0026#34;,\u0026#34;xlt\u0026#34;,\u0026#34;xml\u0026#34;,\u0026#34;csv\u0026#34;,\u0026#34;ods\u0026#34;,\u0026#34;ots\u0026#34;,\u0026#34;pptx\u0026#34;,\u0026#34;pptm\u0026#34;,\u0026#34;ppt\u0026#34;,\u0026#34;pps\u0026#34;,\u0026#34;odp\u0026#34;,\u0026#34;otp\u0026#34;,\u0026#34;vsdx\u0026#34;,\u0026#34;msg\u0026#34;,\u0026#34;eml\u0026#34;,\u0026#34;html\u0026#34;,\u0026#34;htm\u0026#34;,\u0026#34;txt\u0026#34;,\u0026#34;dwg\u0026#34;,\u0026#34;dxf\u0026#34;,\u0026#34;tif\u0026#34;,\u0026#34;tiff\u0026#34;,\u0026#34;dcm\u0026#34;,\u0026#34;mda\u0026#34;,\u0026#34;ica\u0026#34;,\u0026#34;mmr\u0026#34;,\u0026#34;mca\u0026#34;,\u0026#34;jpg\u0026#34;,\u0026#34;jpeg\u0026#34;,\u0026#34;jpe\u0026#34;,\u0026#34;jfif\u0026#34;,\u0026#34;jp2\u0026#34;,\u0026#34;jpf\u0026#34;,\u0026#34;jpx\u0026#34;,\u0026#34;j2k\u0026#34;,\u0026#34;j2c\u0026#34;,\u0026#34;jpc\u0026#34;,\u0026#34;png\u0026#34;,\u0026#34;gif\u0026#34;,\u0026#34;webp\u0026#34;,\u0026#34;bmp\u0026#34;\/\/ \u0026lt;- Add your extensions here or\/and remove element from the list above ^,}},\/\/ ...}} \nBuild and run Install the angular-devkit.\n$\u0026gt; npm install --save-dev @angular-devkit\/build-angular Execute the bash script to build the app.\n$\u0026gt; .\/build-tomcat-e2e.sh Copy the generated folder (alfresco-content-app-1.10.1\\dist\\app for ACA v1.10.1) to your tomcat \u0026ldquo;\/webapps\u0026rdquo; folder and rename it if needed.\n Start Tomcat.\n Install for version 2.0 For versions 2.0 and above, the following additional changes must be done :\n The ARender lib in the compiler configuration are placed in tsconfig.base.json and not in tsconfig.json tsconfig.base.json {\u0026#34;compilerOptions\u0026#34;: {\/\/ ...\u0026#34;paths\u0026#34;: {\/\/ ...\u0026#34;@arondor\/arender-viewer\u0026#34;: \u0026#34;dist\/@arondor\/arender-viewer\u0026#34;,\u0026#34;@arondor\/arender-viewer\/*\u0026#34;: \u0026#34;dist\/@arondor\/arender-viewer\/*\u0026#34;}}} Add ARender ACA extension to the package build scripts. package.json {\u0026#34;scripts\u0026#34;: {\/\/...\u0026#34;build:arender-extension\u0026#34;: \u0026#34;npx rimraf dist\/@arondor\/arender-viewer \u0026amp;\u0026amp; ng build arondor-arender-viewer \u0026amp;\u0026amp; cpr projects\/arondor-arender-viewer\/ngi.json dist\/@arondor\/arender-viewer\/ngi.json \u0026amp;\u0026amp; cpr projects\/arondor-arender-viewer\/assets dist\/@arondor\/arender-viewer\/assets\u0026#34;,\u0026#34;build.arender\u0026#34;: \u0026#34;npm run build:arender-extension\u0026#34;,\u0026#34;build.extensions\u0026#34;: \u0026#34;npm run build.shared \u0026amp;\u0026amp; npm run build.aos \u0026amp;\u0026amp; npm run build.arender\u0026#34;,\u0026#34;build\u0026#34;: \u0026#34;npm run validate-config \u0026amp;\u0026amp; npm run build.extensions \u0026amp;\u0026amp; npm run build.app -- --prod\u0026#34;,\/\/...}} Execute the command to build the app and have the generated folder (\/dist\/app) to place in your tomcat server in the \u0026ldquo;webapps\u0026rdquo; folder.\n$\u0026gt; ng build /p>p>standalone/p>p>hmi/p>p>web ui/p>p>configuration/p>p>alfresco/p>p>adf/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/alfresco\/alfresco-aca\/ }, { value: Installation in ICN, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/filenet\/filenet-icn\/, label: p>We continue here the installation but in the ICN module of FileNet.\nPrerequisite Concerning SSO between ICN and ARender, cross-domain SSO is not supported, for example z.AAAcompany.com and w.BBBcompany.com - where the DNS domains are different. More information here: https:\/\/www.ibm.com\/docs\/en\/was-nd\/8.5.5?topicauthentication-single-sign-using-ltpa-cookies\nRetrieve the ARender Web-UI archive Using the username and password beforehand provided, you can retrieve the navigator plugin here\nARender and IBM Content Navigator (or IBM Content Manager) Sharing the LTPA key Thus, you will need to configure LTPA in order to enable session sharing between IBM Content Navigator and ARender Web-UI:/p>p>We continue here the installation but in the ICN module of FileNet.\nPrerequisite Concerning SSO between ICN and ARender, cross-domain SSO is not supported, for example z.AAAcompany.com and w.BBBcompany.com - where the DNS domains are different. More information here: https:\/\/www.ibm.com\/docs\/en\/was-nd\/8.5.5?topicauthentication-single-sign-using-ltpa-cookies\nRetrieve the ARender Web-UI archive Using the username and password beforehand provided, you can retrieve the navigator plugin here\nARender and IBM Content Navigator (or IBM Content Manager) Sharing the LTPA key Thus, you will need to configure LTPA in order to enable session sharing between IBM Content Navigator and ARender Web-UI:\n Export the LTPA CPE key In WebSphere Administration Console of the CPE, navigate to Security \u0026gt; Global Security, under Authentication, click LTPA\n Specify a password, a filepath, and click \u0026ldquo;Export keys\u0026rdquo; Import the LTPA CPE key in the ARender JVM Copy the key in hte ARender Web-UI server.\nThen import this key in ARender, like below:\n Using the WebSphere Administration Console, navigate to Security \u0026gt; Global Security, under Authentification, click LTPA Fill in the same password you entered when exporting the keys Specify the path where you copied the keys Click Import keys Save the modifications Session invalidation when switching user Since ICN version 3.0.6, if you change of user on the same session then you will get an error message when opening a document with the new user which will look like this:\nError message Error 500: com.ibm.websphere.servlet.session.UnauthorizedSessionRequestException: SESN0008E: A user authenticated as user:localhost:389\/CNuserB,CNUsers,DCircem,DCdev has attempted to access a session owned by user:localhost:389\/CNuserA,CNUsers,DCircem,DCdev The session of the user userA was not invalidated when he disconnected, which will cause the error when opening a document by user userB. There is a property to add in a WebSphere console which will make it possible to invalidate a session on which an unauthorized request is made. This session invalidation will allow the recovery of the correct username by ARender.\nAdding the property Go to your websphere console then in the menu go to servers -\u0026gt; server types -\u0026gt; websphere application servers. Select the server on which you want to make the modification. In our example, we choose serverICN In Container settings go to Session management. In Additional properties, click on custom properties. Click on New\u0026hellip; to add the property. Add the property InvalidateOnUnauthorizedSessionRequestException with the value true so that it is applied. You must then click on Ok then save. Restart your Filenet services to take this property into account. Integration of the arender plugin for FileNet A specific plugin has been implemented to integrate ARender within ICN. Nota: ICN connector uses mixedObjects syntax.\nConnect to Content Navigator.\nGo to the ‘Administration View’ and click on ‘Plug-ins’\nClick on the button \u0026ldquo;New Plugin-in\u0026rdquo;.\nEnter the JAR file path and click on ‘Load’.\nFill ‘ARender context root’ field with ARender’s address (host \u002b port \u002b context root). Like below:\nFill \u0026lsquo;Unauthorized Desktops for document builder (id1,id2\u0026hellip;)\u0026rsquo; field with comma-separated values of desktop ID. In the screenshot below, we have black listed the desktop FakeDesktop so it won\u0026rsquo;t have the document builder feature enabled.\nFill \u0026lsquo;Watermark applied on download\u0026rsquo; field with comma-separated key-value pair of respectively desktop id and watermark bean name. The watermark bean name should be configured in ARender. There are some default watermark bean name pre-defined already in the annotationtemplate-catalog.xml, downloadWatermark and printWatermark.\nBelow an example of watermark to be applied on download depending on the desktop. We configured the desktop OS1 to use the downloadWatermark and the desktop CustomWatermark to use downloadWatermark aswell.\nOS1downloadWatermark,CustomDesktopdownloadWatermark Fill \u0026lsquo;Watermark applied on print\u0026rsquo; field with comma-separated key-value pair of respectively desktop id and watermark bean name. The watermark bean name should be configured in ARender. There are some default watermark bean name pre-defined already in the annotationtemplate-catalog.xml, downloadWatermark and printWatermark.\nBelow an example of watermark to be applied on download depending on the desktop. We configured the desktop OS1 to use the printWatermark and the desktop CustomWatermark to use printWatermark aswell.\nOS1printWatermark,CustomDesktopprintWatermark To use this Map, you just need to link it to a Desktop (Desktop tab -\u0026gt; Edit the desktop -\u0026gt; Select the Map in the Viewer Map list)\nAnd finally, click on \u0026ldquo;Save\u0026rdquo;.\nYou can now restart your application servers and attempt to open a file in FileNet.\nUse ARender advanced features directly from ICN End-users can use ARender Compare and Document Builder features directly from ICN.\nCreate a dedicated ICN menu to show ARender advanced feature In ICN, go in the Administration menu Select Menus Search the Menu named Default document context menu Right click on this menu and select Copy Define a Name and a description to the new Menu In the Available box select Compare documents and\/or Merge documents action and add them into the Selected menu on the right Add the created menu to the ICN Desktop In ICN, go in the Administration menu Select Desktops Select the Desktop to update Select the tab Menus Search for the Menu named Document context menu In its drop-down list value, select the menu you created above Use ARender compare feature To compare document, you have to select two documents and select Compare documents from ICN Action menu or using right click\nUse ARender Document Builder feature To merge and split documents, you have to select at least one document and select Merge documents from ICN Action menu or using right click\n/p>p>standalone/p>p>hmi/p>p>web ui/p>p>configuration/p>p>filenet/p>p>ICN/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/filenet\/filenet-icn\/ }, { value: Javascript, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/ }, { value: Javascript API, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/, label: p>/p>p>/p>p>API/p>p>APIs/p>p>Javascript/p>p>jsapi/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/ }, { value: Kubernetes, path: https:\/\/docs.arender.io\/v4\/install\/kubernetes\/, label: p>Warning We assume that you are familiar with Kubernetes.\nIf not, find more informations on https:\/\/kubernetes.io\/docs\/home\/\n TL;DR $\u0026gt; helm repo add arondor https:\/\/artifactory.arondor.cloud\/artifactory\/ARenderHelmVirtual --username \u0026lt;your_user\u0026gt; --password \u0026lt;your_password\u0026gt; $\u0026gt; helm install my-release arondor\/arender Introduction ARender is ready for Kubernetes and you can easily deploy the entire stack with our Helm Chart.\n You can find out more about Helm technology here.\n The Chart is composed of two subchart: rendition and web-ui./p>p> Warning We assume that you are familiar with Kubernetes.\nIf not, find more informations on https:\/\/kubernetes.io\/docs\/home\/\n TL;DR $\u0026gt; helm repo add arondor https:\/\/artifactory.arondor.cloud\/artifactory\/ARenderHelmVirtual --username \u0026lt;your_user\u0026gt; --password \u0026lt;your_password\u0026gt; $\u0026gt; helm install my-release arondor\/arender Introduction ARender is ready for Kubernetes and you can easily deploy the entire stack with our Helm Chart.\n You can find out more about Helm technology here.\n The Chart is composed of two subchart: rendition and web-ui. You can choose to use both or only one of these components by setting the following parameters:\n Component Property Value web-ui web-ui.enabled true or false rendition rendition.enabled true or false Prerequisites Access to Arondor Artifactory Kubernetes 1.14\u002b Helm 3.0\u002b PV provisionner support in the underlying infrastructure Kubernetes Metrics server installed (since ARender 4.3.0) Installing the Chart To install the chart with the release name my-release, run the following commands with your Artifactory credentials:\n$\u0026gt; helm repo add arondor https:\/\/artifactory.arondor.cloud\/artifactory\/ARenderHelmVirtual --username \u0026lt;your_user\u0026gt; --password \u0026lt;your_password\u0026gt; $\u0026gt; helm install my-release arondor\/arender Note You need to create a secret with your Arondor Artifactory credentials to be able to pull the default images.\nRead the page \u0026ldquo;Pull an Image from a Private Registry\u0026rdquo; on the official Kubernetes documentation to create the secret. Then, add it to the list of imagePullSecrets names by setting global.imagePullSecrets parameter.\n Uninstalling the Chart To uninstall\/delete the my-release release:\n$\u0026gt; helm delete my-release Parameters The configurable parameters are listed in the next pages.\nDefault values.yml file Download /p>p>kubernetes/p>p>helm/p>, url: https:\/\/docs.arender.io\/v4\/install\/kubernetes\/ }, { value: Learn, path: https:\/\/docs.arender.io\/learn\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/learn\/ }, { value: Load a document, path: https:\/\/docs.arender.io\/development\/framework\/loadadocument\/, label: p>The JavaScript API allows easy interaction with ARender using various commands listed here .\nLoad a document The loadDocument and openDocument functions from the API, described here allow you to load and open a document on the ARender server.\n Note that document opening is secured, so only documents from your document space can be opened.\nImplementation example from the iframe JavaScript API requests are made on the window object of the iframe, as shown below./p>p>The JavaScript API allows easy interaction with ARender using various commands listed here .\nLoad a document The loadDocument and openDocument functions from the API, described here allow you to load and open a document on the ARender server.\n Note that document opening is secured, so only documents from your document space can be opened.\nImplementation example from the iframe JavaScript API requests are made on the window object of the iframe, as shown below.\n React Angular VueJs Svelte JavaScript const loadAndOpenDocument () \u0026gt; { const iframeWindow iframeRef.current?.contentWindow; if (iframeWindow) { iframeWindow.getARenderJS().loadDocument( \u0026#34;loadingQuery?urlurl\/du\/document.zip\u0026#34;, (id) \u0026gt; { console.log(id); iframeWindow.getARenderJS().openDocument(id); } ); } else { console.error(\u0026#34;The iframe is not accessible or not loaded.\u0026#34;); } }; loadAndOpenDocument(): void { const iframeWindow this.iframeRef.nativeElement.contentWindow; if (iframeWindow) { iframeWindow.getARenderJS().loadDocument( \u0026#34;loadingQuery?urlurl\/du\/document.zip\u0026#34;, (id: string) \u0026gt; { console.log(id); iframeWindow.getARenderJS().openDocument(id); } ); } else { console.error(\u0026#34;The iframe is not accessible or not loaded.\u0026#34;); } } \/** * Returns the ARenderJS object from the iframe. * Throws an error if the iframe is not accessible or not loaded. *\/ function getARenderJS() { const iframeWindow iframeRef.value?.contentWindow ? iframeRef.value.contentWindow : undefined if (iframeWindow) { return iframeWindow.getARenderJS() } throw new Error(\u0026#34;The iframe is not accessible or not loaded.\u0026#34;) } \/** * Loads and opens a document in ARender. * @param url The URL of the document to load. *\/ function loadAndOpenDocument(url) { getARenderJS().loadDocument(\u0026#34;loadingQuery?url\u0026#34; \u002b url, id \u0026gt; { getARenderJS().openDocument(id) }) } \/** * Expose the `loadAndOpenDocument` function to the parent component. *\/ defineExpose({ loadAndOpenDocument }) \/** * Returns the ARenderJS object from the iframe. * Throws an error if the iframe is not accessible or not loaded. *\/ function getARenderJS() { const iframeWindow iframeRef?.contentWindow ? iframeRef.contentWindow : undefined if (iframeWindow) { return iframeWindow.getARenderJS() } throw new Error(\u0026#34;The iframe is not accessible or not loaded.\u0026#34;) } \/** * Loads and opens a document in ARender. * @param url The URL of the document to load. *\/ export function loadAndOpenDocument(url) { getARenderJS().loadDocument(\u0026#34;loadingQuery?url\u0026#34; \u002b url, id \u0026gt; { getARenderJS().openDocument(id) }) } Note that if you attempt to integrate ARender into a local directory, to interact with a local HTML file, you must first serve it on the localhost port of your choice.\nYou can do this easily in several ways, with Python, Node.js, PHP, or others. Here is an example with Python 3.x:\n Open a command prompt in the directory of the host application Start the server with http-server -p 8000 (Replace 8000 with the port of your choice) Access the HTML file from your browser with the URL http:\/\/localhost:8000\/index.html To load and open a document in ARender, you can create the following function in the JavaScript file of the host application: index.js function loadAndOpen() { const iframe document.getElementById(\u0026#39;arender-iframe\u0026#39;); if (iframe \u0026amp;\u0026amp; iframe.contentWindow) { iframeWindow.getARenderJS().loadDocument( \u0026#34;loadingQuery?url\u0026#34;, \/\/ pass the url of the document to load here, after the equal sign (id) \u0026gt; { console.log(id); iframeWindow.getARenderJS().openDocument(id); } ); } else { console.error(\u0026#34;The iframe is inaccesible or has not loaded yet\u0026#34;); } } /p>p>load/p>p>ouvrir/p>p>charger/p>p>document/p>p>loadDocument/p>p>openDocument/p>, url: https:\/\/docs.arender.io\/development\/framework\/loadadocument\/ }, { value: Operation, path: https:\/\/docs.arender.io\/guides\/operation\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/guides\/operation\/ }, { value: Operation, path: https:\/\/docs.arender.io\/v4\/operation\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/v4\/operation\/ }, { value: Presentation server, path: https:\/\/docs.arender.io\/installation\/docker\/presentation\/, label: p>Configuration By Environment Variables All properties can be set with environment variables by following the next rules:\n environment variables must be capitalized use \u0026quot;_\u0026quot; to replace \u0026quot;.\u0026quot; any ARender profile properties must be prefixed by \u0026quot;ARENDER_\u0026quot; any ARender server properties must be prefixed by \u0026quot;ARENDERSRV_\u0026quot; Example preference.color.mode -\u0026gt; ARENDER_COLOR_PREFERENCE\narender.server.rendition.hosts -\u0026gt; ARENDERSRV_ARENDER_SERVER_RENDITION_HOSTS\n By volumes Profile Default configuration file location: \/usr\/local\/tomcat\/webapps\/ROOT\/WEB-INF\/classes\/arender.properties\nCustom config folder location: \/home\/arender\/ARenderConfiguration/p>p>Configuration By Environment Variables All properties can be set with environment variables by following the next rules:\n environment variables must be capitalized use \u0026quot;_\u0026quot; to replace \u0026quot;.\u0026quot; any ARender profile properties must be prefixed by \u0026quot;ARENDER_\u0026quot; any ARender server properties must be prefixed by \u0026quot;ARENDERSRV_\u0026quot; Example preference.color.mode -\u0026gt; ARENDER_COLOR_PREFERENCE\narender.server.rendition.hosts -\u0026gt; ARENDERSRV_ARENDER_SERVER_RENDITION_HOSTS\n By volumes Profile Default configuration file location: \/usr\/local\/tomcat\/webapps\/ROOT\/WEB-INF\/classes\/arender.properties\nCustom config folder location: \/home\/arender\/ARenderConfiguration\nSee documentation:\n Profile ARender front configuration properties list Server Default configuration file location: \/home\/arender\/ARenderConfiguration\/arender-custom-server.properties\nCustom config folder location: \/home\/arender\/ARenderConfiguration\n/p>p>docker/p>, url: https:\/\/docs.arender.io\/installation\/docker\/presentation\/ }, { value: Presentation server, path: https:\/\/docs.arender.io\/v4\/install\/docker\/presentation\/, label: p>Configuration By Environment Variables All properties can be set with environment variables by following the next rules:\n environment variables must be capitalized use \u0026quot;_\u0026quot; to replace \u0026quot;.\u0026quot; any ARender profile properties must be prefixed by \u0026quot;ARENDER_\u0026quot; any ARender server properties must be prefixed by \u0026quot;ARENDERSRV_\u0026quot; Example topPanel.logo -\u0026gt; ARENDER_TOPPANEL_LOGO\narender.server.rendition.hosts -\u0026gt; ARENDERSRV_ARENDER_SERVER_RENDITION_HOSTS\n By volumes Profile Default configuration file location: \/usr\/local\/tomcat\/webapps\/ROOT\/WEB-INF\/classes\/arender.properties\nCustom config folder location: \/home\/arender\/Profile/p>p>Configuration By Environment Variables All properties can be set with environment variables by following the next rules:\n environment variables must be capitalized use \u0026quot;_\u0026quot; to replace \u0026quot;.\u0026quot; any ARender profile properties must be prefixed by \u0026quot;ARENDER_\u0026quot; any ARender server properties must be prefixed by \u0026quot;ARENDERSRV_\u0026quot; Example topPanel.logo -\u0026gt; ARENDER_TOPPANEL_LOGO\narender.server.rendition.hosts -\u0026gt; ARENDERSRV_ARENDER_SERVER_RENDITION_HOSTS\n By volumes Profile Default configuration file location: \/usr\/local\/tomcat\/webapps\/ROOT\/WEB-INF\/classes\/arender.properties\nCustom config folder location: \/home\/arender\/Profile\nSee documentation:\n Profile ARender front configuration properties list Server Default configuration file location: \/home\/arender\/ARenderConfiguration\/arender-custom-server.properties\nCustom config folder location: \/home\/arender\/ARenderConfiguration\n/p>p>docker/p>, url: https:\/\/docs.arender.io\/v4\/install\/docker\/presentation\/ }, { value: Product Analytics, path: https:\/\/docs.arender.io\/learn\/product-analytics\/, label: p>What is Product Analytics in ARender? Since version 2023.5.0, ARender has included a Product Analytics feature powered by Mixpanel, enabling the Uxopian team to better understand how ARender is used in real-world scenarios. This feature is activated by default and can be easily disabled by configuring a simple parameter following the ARender configuration guide.\nWhy Product Analytics? The primary goal of Product Analytics in ARender is to help the Uxopian team:/p>p>What is Product Analytics in ARender? Since version 2023.5.0, ARender has included a Product Analytics feature powered by Mixpanel, enabling the Uxopian team to better understand how ARender is used in real-world scenarios. This feature is activated by default and can be easily disabled by configuring a simple parameter following the ARender configuration guide.\nWhy Product Analytics? The primary goal of Product Analytics in ARender is to help the Uxopian team:\n Gain valuable insights into feature usage. Identify the most and least used functionalities. Prioritize enhancements and new developments in the product roadmap. This ensures that ARender evolves in line with real user needs, ultimately delivering a better experience for all.\nPrivacy and Compliance The Product Analytics feature is compliant with local data protection laws and respects user privacy:\n All data is stored in Europe, ensuring compliance with data protection regulations. No document contents, annotations, or metadata are transmitted. The collected data is limited to feature usage metrics only. With this setup, users can rest assured that their sensitive information remains private and secure.\nWhat Data is Collected? Here are the specific metrics tracked by the Product Analytics feature:\nDocument Usage Opening documents: Tracks the opening of a document. It includes information on MIME type, the number of documents opened, the total page count and also the time taken to open the document.\n Closing documents: Tracks the closing of a document. It includes information on the total page count, the time spent viewing the document and the number of pages viewed.\n Annotations Annotation CRUD: Tracks the number of annotations created, updated, and deleted, along with their types.\n Repeat annotation mode: Tracks the usage of any repeat annotation feature.\n Navigation and Interaction Lasso: Tracks usage of the lasso feature.\n Text search: Tracks the usage of the text search feature.\n Page rotation: Tracks the usage of the rotation feature.\n Document zoom: Tracks the usage of the zoom feature.\n Fullscreen mode: Tracks the usage of the fullscreen feature.\n Document Manipulation Document builder: Tracks the usage of the DocumentBuilder feature.\n Document comparison: Tracks the usage of the Comparison feature.\n Export and Output PDF printing: Tracks the usage of the Print feature.\n Document download: Tracks the usage of the download feature.\n Image filtering: Tracks the usage of the Image filter feature.\n Safe and Purposeful Data Collection The analytics collected are solely for improving the user experience. This data is reviewed by the Uxopian team to:\n Understand how features are being utilized.\n Identify pain points or underused functionalities.\n Prioritize future updates and improvements.\n This feature is designed with user safety and privacy in mind, ensuring that no sensitive document data is ever exposed. By using Product Analytics, ARender becomes a smarter, more focused tool that better serves its users.\nConfiguration Notes For proper functioning of the Product Analytics, ensure that the URL https:\/\/api-js.mixpanel.com\/ is authorized on the users machine.\nTo disable Product Analytics, set the property arender.data.analytics.enabled to false in the configuration settings (More information here).\n/p>, url: https:\/\/docs.arender.io\/learn\/product-analytics\/ }, { value: Properties, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/ }, { value: Rendition changes, path: https:\/\/docs.arender.io\/guides\/upgrade\/4.8_to_2023.0\/rendition\/, label: p>Document Service Broker (RenditionEngine module) Properties in application.properties file Deleted properties Version 4 Description eureka.client.register-with-eureka Former property no longer in use even in latests V4 eureka.client.fetch-registry Former property no longer in use even in latests V4 logging.level.com.netflix.eureka Former property no longer in use even in latests V4 logging.level.com.netflix.discovery Former property no longer in use even in latests V4 spring./p>p>Document Service Broker (RenditionEngine module) Properties in application.properties file Deleted properties Version 4 Description eureka.client.register-with-eureka Former property no longer in use even in latests V4 eureka.client.fetch-registry Former property no longer in use even in latests V4 logging.level.com.netflix.eureka Former property no longer in use even in latests V4 logging.level.com.netflix.discovery Former property no longer in use even in latests V4 spring.servlet.multipart.enabled Enable multipart uploads spring.servlet.multipart.file-size-threshold Threshold after which files are written to disk spring.servlet.multipart.location Location of temporary files spring.servlet.multipart.max-file-size Max file size spring.servlet.multipart.max-request-size Max Request Size server.tomcat.max-http-form-post-size Max Request Size arender.endpoint.metrics.export.document.accessor.enabled ARender load document accessor endpoint metrics export arender.endpoint.metrics.export.document.size.enabled ARender document size endpoint metrics export arender.endpoint.metrics.export.document.dpi.enabled ARender document dpi endpoint metrics export Renamed properties Version 4 Version 2023 Description arender.endpoint.metrics.export.alter.document.enabled arender.endpoint.metrics.export.transformation.enabled ARender document transformation endpoint metrics export arender.endpoint.metrics.export.video.enabled arender.endpoint.metrics.export.get.file.chunk.enabled ARender file chunk endpoint metrics export Properties in application.yaml file Deleted properties Version 4 Description rest-template:connect-timeout Determines the timeout until a new connection is fully established rest-template:read-timeout Determines the timeout until it finishes reading data bytes from the socket rest-template:max-connection-total The total number of connections that can be reused when future requests rest-template:max-connection-per-route The total number of connections per route that can be reused when future requests rest-template:max-keep-alive Determines the lifespan of a connection while it is not used Connections are still configurable with new properties located in the application.properties file.\nDocument Converter (Taskconversion module) Properties in application.properties file Deleted properties Version 4 Description rtf.conversion.timeout Timeout in seconds for RTF files conversion to PDF pdf.merge.timeout Timeout in seconds to merge PDFs into a single PDF emltopdf.custom.mail.title Eml2pdf default configuration for mail headers emltopdf.custom.mail.title.separator Eml2pdf default configuration for mail headers emltopdf.custom.mail.attachment.header Eml2pdf default configuration for mail headers emltopdf.custom.mail.display.subject.in.title Eml2pdf default configuration for mail headers emltopdf.use.legacy.header Eml2pdf default configuration for mail headers emltopdf.custom.rtf.tag.list Eml2pdf default configuration for mail headers emltopdf.config.filter.special.characters.regex Eml2pdf default configuration for mail headers emltopdf.config.filter.replacement.character Eml2pdf default configuration for mail headers emltopdf.encode.header.with.body.encoding If true, may encode the subject and attachments title according to the body main encoding emltopdf.config.format.date Determines the date format in mails text.factory.delegate.bean.name Determines to which bean we delegate the task of converting text to pdf arender.endpoint.metrics.export.document.accessor.enabled ARender load document accessor endpoint metrics export arender.endpoint.metrics.export.document.size.enabled ARender document size endpoint metrics export arender.endpoint.metrics.export.document.dpi.enabled ARender document dpi endpoint metrics export Renamed properties Version 4 Version 2023 Description rendition.office.options\u0026ndash;headless,\u0026ndash;convert-to,pdf:writer_pdf_Export rendition.office.options\u0026ndash;headless,\u0026ndash;convert-to Office options obfuscate.deleteTexttrue redact.deleteTexttrue Property name changed obfuscate.flattenTextfalse redact.flattenTextfalse Property name changed document.fallback.font.path..\/fonts\/ document.font.path..\/fonts\/ Property name changed arender.endpoint.metrics.export.alter.document.enabled arender.endpoint.metrics.export.transformation.enabled ARender document transformation endpoint metrics export arender.endpoint.metrics.export.video.enabled arender.endpoint.metrics.export.get.file.chunk.enabled ARender file chunk endpoint metrics export The mail configuration properties have actually moved to application.properties of Document Service Broker\nHow to configure mime type has changed, for more information see there.\nProperties in application.yaml file Deleted properties Version 4 Description rest-template:connect-timeout Determines the timeout until a new connection is fully established rest-template:read-timeout Determines the timeout until it finishes reading data bytes from the socket rest-template:max-connection-total The total number of connections that can be reused when future requests rest-template:max-connection-per-route The total number of connections per route that can be reused when future requests rest-template:max-keep-alive Determines the lifespan of a connection while it is not used eureka:instance:statusPageUrlPath Former property no longer in use even in latests V4 eureka:instance:healthCheckUrlPath Former property no longer in use even in latests V4 eureka:instance:leaseRenewalIntervalInSeconds Former property no longer in use even in latests V4 eureka:instance:leaseExpirationDurationInSeconds Former property no longer in use even in latests V4 eureka:instance:metadataMap:nativeMimeType Former property no longer in use even in latests V4 eureka:instance:client:enabled Former property no longer in use even in latests V4 eureka:instance:client:registerWithEureka Former property no longer in use even in latests V4 eureka:instance:client:fetchRegistry Former property no longer in use even in latests V4 eureka:instance:client:serviceUrl Former property no longer in use even in latests V4 eureka:instance:client:serviceUrl:defaultZone Former property no longer in use even in latests V4 app:factoriesBeanNames:pdfFactory PDF converter app:factoriesBeanNames:mailFactory Mail converter app:factoriesBeanNames:archiveFactory Archive converter app:factoriesBeanNames:emptyDocumentConverter Empty document conveter app:alterDocumentContentOperations:split Internal operation name that determines what document transformation process to do app:alterDocumentContentOperations:multiSplit Internal operation name that determines what document transformation process to do app:alterDocumentContentOperations:hierarchicalMultiSplit Internal operation name that determines what document transformation process to do app:alterDocumentContentOperations:convert Internal operation name that determines what document transformation process to do app:alterDocumentContentOperations:renderAnnotations Internal operation name that determines what document transformation process to do app:alterDocumentContentOperations:renderFDFAnnotations Internal operation name that determines what document transformation process to do app:alterDocumentContentOperations:compress Internal operation name that determines what document transformation process to do nurse:components0functionality Mail nurse configuration nurse:components0factoryName Mail nurse configuration nurse:components0samplePath Mail nurse configuration nurse:components0docIdStr Mail nurse configuration Renamed properties Version 4 Version 2023 Description eureka:instance:metadataMap:context eureka:instance:metadataMap:context Value changed app:factoriesBeanNames:imageFactory app:factoriesBeanNames:imageFactory Value changed app:factoriesBeanNames:textFactory app:factoriesBeanNames:pdfboxTextFactory Name changed nurse:components1samplePath: \u0026ldquo;video.mp4\u0026rdquo; nurse:components1samplePath: \u0026ldquo;video.avi\u0026rdquo; Value changed nurse:components2factoryName: \u0026ldquo;textFactory\u0026rdquo; nurse:components2factoryName: \u0026ldquo;pdfboxTextFactory\u0026rdquo; Value changed Document Renderer (JNIPdfEngine module) Properties in application.properties file Deleted properties Version 4 Description arender.endpoint.metrics.export.document.accessor.enabled ARender load document accessor endpoint metrics export arender.endpoint.metrics.export.document.size.enabled ARender document size endpoint metrics export arender.endpoint.metrics.export.document.dpi.enabled ARender document dpi endpoint metrics export Renamed properties Version 4 Version 2023 Description arender.endpoint.metrics.export.alter.document.enabled arender.endpoint.metrics.export.transformation.enabled ARender document transformation endpoint metrics export arender.endpoint.metrics.export.video.enabled arender.endpoint.metrics.export.get.file.chunk.enabled ARender file chunk endpoint metrics export Properties in application.yaml file Deleted properties Version 4 Description eureka:instance:statusPageUrlPath Former property no longer in use even in latests V4 eureka:instance:healthCheckUrlPath Former property no longer in use even in latests V4 eureka:instance:leaseRenewalIntervalInSeconds Former property no longer in use even in latests V4 eureka:instance:leaseExpirationDurationInSeconds Former property no longer in use even in latests V4 eureka:client:serviceUrl:defaultZone Former property no longer in use even in latests V4 kubprovider:services:Rendition-Engine:serviceId Former property no longer in use even in latests V4 kubprovider:services:Rendition-Engine:host Former property no longer in use even in latests V4 kubprovider:services:Rendition-Engine:port Former property no longer in use even in latests V4 kubprovider:services:Rendition-Engine:secure Former property no longer in use even in latests V4 kubprovider:services:Rendition-Engine:uri Former property no longer in use even in latests V4 cache:document:maxCacheSize Former property no longer in use even in latests V4 cache:renderer:cacheDuration Former property no longer in use even in latests V4 rest-template:connect-timeout Determines the timeout until a new connection is fully established rest-template:read-timeout Determines the timeout until it finishes reading data bytes from the socket rest-template:max-connection-total The total number of connections that can be reused when future requests rest-template:max-connection-per-route The total number of connections per route that can be reused when future requests rest-template:max-keep-alive Determines the lifespan of a connection while it is not used Document Text Handler (PDFBoxEngine module) Properties in application.properties file Deleted properties Version 4 Description arender.endpoint.metrics.export.document.accessor.enabled ARender load document accessor endpoint metrics export arender.endpoint.metrics.export.document.size.enabled ARender document size endpoint metrics export arender.endpoint.metrics.export.document.dpi.enabled ARender document dpi endpoint metrics export Renamed properties Version 4 Version 2023 Description arender.endpoint.metrics.export.alter.document.enabled arender.endpoint.metrics.export.transformation.enabled ARender document transformation endpoint metrics export arender.endpoint.metrics.export.video.enabled arender.endpoint.metrics.export.get.file.chunk.enabled ARender file chunk endpoint metrics export Properties in application.yaml file Deleted properties Version 4 Description eureka:instance:statusPageUrlPath Former property no longer in use even in latests V4 eureka:instance:healthCheckUrlPath Former property no longer in use even in latests V4 eureka:instance:leaseRenewalIntervalInSeconds Former property no longer in use even in latests V4 eureka:instance:leaseExpirationDurationInSeconds Former property no longer in use even in latests V4 eureka:client:serviceUrl:defaultZone Former property no longer in use even in latests V4 rest-template:connect-timeout Determines the timeout until a new connection is fully established rest-template:read-timeout Determines the timeout until it finishes reading data bytes from the socket rest-template:max-connection-total The total number of connections that can be reused when future requests rest-template:max-connection-per-route The total number of connections per route that can be reused when future requests rest-template:max-keep-alive Determines the lifespan of a connection while it is not used Renamed properties Version 4 Version 2023 Description eureka:instance:metadataMap:context eureka:instance:metadataMap:context Value changed /p>p>changes/p>p>migration/p>p>rendition/p>, url: https:\/\/docs.arender.io\/guides\/upgrade\/4.8_to_2023.0\/rendition\/ }, { value: Restart, path: https:\/\/docs.arender.io\/guides\/operation\/restart\/, label: p>In some cases, it may be necessary to restart one or both part of ARender. Modifications on the configuration files will require a restart for changes to apply. A restart can also be tried in case of unexpected errors. ARender is a stateless service a restart is able to fix any application freeze.\nRendition server You need to restart the ARenderService service. To do so type the following command:\n Windows Linux $\u0026gt; sc stop ARenderRenditionService $\u0026gt; sc start ARenderRenditionService If systemd is the system initialization component:/p>p>In some cases, it may be necessary to restart one or both part of ARender. Modifications on the configuration files will require a restart for changes to apply. A restart can also be tried in case of unexpected errors. ARender is a stateless service a restart is able to fix any application freeze.\nRendition server You need to restart the ARenderService service. To do so type the following command:\n Windows Linux $\u0026gt; sc stop ARenderRenditionService $\u0026gt; sc start ARenderRenditionService If systemd is the system initialization component:\n$\u0026gt; systemctl stop ARenderRenditionEngineService.service $\u0026gt; systemctl start ARenderRenditionEngineService.service If initd is the system initialization component:\n$\u0026gt; service ARenderRenditionEngineService stop $\u0026gt; service ARenderRenditionEngineService start Presentation server The restart of the web application is sufficient. Some application servers do not allow applications to be restarted separately, so it is necessary to fully restart the application server.\n/p>p>exploitation/p>p>restart/p>, url: https:\/\/docs.arender.io\/guides\/operation\/restart\/ }, { value: Restart, path: https:\/\/docs.arender.io\/v4\/operation\/restart\/, label: p>In some cases, it may be necessary to restart one or both part of ARender. Modifications on the configuration files will require a restart for changes to apply. A restart can also be tried in case of unexpected errors. ARender is a stateless service a restart is able to fix any application freeze.\nRendition server You need to restart the ARenderService service. To do so type the following command:\n Windows Linux $\u0026gt; sc stop ARenderRenditionService $\u0026gt; sc start ARenderRenditionService If systemd is the is the system initialisation component:/p>p>In some cases, it may be necessary to restart one or both part of ARender. Modifications on the configuration files will require a restart for changes to apply. A restart can also be tried in case of unexpected errors. ARender is a stateless service a restart is able to fix any application freeze.\nRendition server You need to restart the ARenderService service. To do so type the following command:\n Windows Linux $\u0026gt; sc stop ARenderRenditionService $\u0026gt; sc start ARenderRenditionService If systemd is the is the system initialisation component:\n$\u0026gt; systemctl stop ARenderRenditionEngineService.service $\u0026gt; systemctl start ARenderRenditionEngineService.service If initd is the is the system initialisation component:\n$\u0026gt; service ARenderRenditionEngineService stop $\u0026gt; service ARenderRenditionEngineService start Presentation server The restart of the web application is sufficient. Some application servers do not allow applications to be restarted separately, so it is necessary to fully restart the application server.\n/p>p>exploitation/p>p>restart/p>, url: https:\/\/docs.arender.io\/v4\/operation\/restart\/ }, { value: Servlet, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/ }, { value: Start up, path: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/startup\/, label: p>Manual launch You can launch ARender rendition engine in command line:\n Windows Linux In Windows based OS using ARenderConsole.bat in the folder rendition-engine-package-{VERSION-NUMBER}:\n$\u0026gt; .\\ARenderConsole.bat In Linux based OS using ARenderConsole.sh in the folder rendition-engine-package-{VERSION-NUMBER} (give the file exec rights):\n$\u0026gt; .\/ARenderConsole.sh /p>p>Manual launch You can launch ARender rendition engine in command line:\n Windows Linux In Windows based OS using ARenderConsole.bat in the folder rendition-engine-package-{VERSION-NUMBER}:\n$\u0026gt; .\\ARenderConsole.bat In Linux based OS using ARenderConsole.sh in the folder rendition-engine-package-{VERSION-NUMBER} (give the file exec rights):\n$\u0026gt; .\/ARenderConsole.sh /p>p>rendition/p>p>startup/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/startup\/ }, { value: Start up, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/startup\/, label: p>Manual launch You can launch ARender rendition engine in command line:\n Windows Linux In Windows based OS using ARenderConsole.bat in the folder rendition-engine-package-{VERSION-NUMBER}:\n$\u0026gt; .\\ARenderConsole.bat In Linux based OS using ARenderConsole.sh in the folder rendition-engine-package-{VERSION-NUMBER} (give the file exec rights):\n$\u0026gt; .\/ARenderConsole.sh /p>p>Manual launch You can launch ARender rendition engine in command line:\n Windows Linux In Windows based OS using ARenderConsole.bat in the folder rendition-engine-package-{VERSION-NUMBER}:\n$\u0026gt; .\\ARenderConsole.bat In Linux based OS using ARenderConsole.sh in the folder rendition-engine-package-{VERSION-NUMBER} (give the file exec rights):\n$\u0026gt; .\/ARenderConsole.sh /p>p>rendition/p>p>startup/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/startup\/ }, { value: Swagger UI, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/swagger\/swagger\/, label: p>ARender Rendition REST API comes with an interactive Swagger documentation that allows you to explore and test the available endpoints effortlessly. To access the Swagger UI, navigate to:\nhttp:\/\/localhost:8761\/swagger-ui\/index.html This user-friendly interface provides a comprehensive overview of the API\u0026rsquo;s structure, available endpoints, request parameters, and response formats./p>p>ARender Rendition REST API comes with an interactive Swagger documentation that allows you to explore and test the available endpoints effortlessly. To access the Swagger UI, navigate to:\nhttp:\/\/localhost:8761\/swagger-ui\/index.html This user-friendly interface provides a comprehensive overview of the API\u0026rsquo;s structure, available endpoints, request parameters, and response formats.\n/p>p>tutorial/p>p>swagger/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/swagger\/swagger\/ }, { value: Text handler, path: https:\/\/docs.arender.io\/guides\/configurations\/rendition\/text-handler\/, label: p>Digital signature management ARender supports the display and verification of digital signatures in PDF files. This feature is disabled by default, but can be enabled in the settings. Once enabled, signature information becomes visible, and trusted certificates can be configured to verify the authenticity of signatures in documents.\napplication.properties situé dans ARender-Rendition-2023.X.Y\\modules\\PDFBoxEngine Description Parameter Key Default value Type Enable verification and extraction of digital signatures pdf./p>p>Digital signature management ARender supports the display and verification of digital signatures in PDF files. This feature is disabled by default, but can be enabled in the settings. Once enabled, signature information becomes visible, and trusted certificates can be configured to verify the authenticity of signatures in documents.\napplication.properties situé dans ARender-Rendition-2023.X.Y\\modules\\PDFBoxEngine Description Parameter Key Default value Type Enable verification and extraction of digital signatures pdf.signatures.enable false Boolean Path to the folder containing certificates, at least one of which must match a certificate found in the PDF PUBLIC_CERT ..\/defaultPathPublicCert String Path to the folder containing Adobe-trusted certificates (AATL) (Since version 2023.14.0) trusted.root.certificates.path ..\/defaultPathRootCert String /p>, url: https:\/\/docs.arender.io\/guides\/configurations\/rendition\/text-handler\/ }, { value: Transformations, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/ }, { value: Alfresco, path: https:\/\/docs.arender.io\/installation\/docker\/alfresco\/, label: p>ARender UI for Alfresco To run the container, execute:\n$\u0026gt; docker run artifactory.arondor.cloud:5001\/arender-ui-springboot:2023.16.0-alfresco \\ -e ARENDERSRV_ARENDER_SERVER_ALFRESCO_ATOM_PUB_URL\u0026#34;http:\/\/\u0026lt;alfresco-host\u0026gt;:\u0026lt;alfresco-port\u0026gt;\/alfresco\/api\/-default-\/cmis\/versions\/1.1\/atom\u0026#34; Alfresco in Docker Add the ARender plugin in Alfresco share container and Alfresco content repository container to make it works.\nIf needed, some resources about ARender for Alfresco are available below:\n See Alfresco documentation Download Alfresco plugin Warning The share plugin must be \/tomcat\/shared\/lib. Insure these paths are listed in shared.lib property in Alfresco component\u0026rsquo;s catalina./p>p>ARender UI for Alfresco To run the container, execute:\n$\u0026gt; docker run artifactory.arondor.cloud:5001\/arender-ui-springboot:2023.16.0-alfresco \\ -e ARENDERSRV_ARENDER_SERVER_ALFRESCO_ATOM_PUB_URL\u0026#34;http:\/\/\u0026lt;alfresco-host\u0026gt;:\u0026lt;alfresco-port\u0026gt;\/alfresco\/api\/-default-\/cmis\/versions\/1.1\/atom\u0026#34; Alfresco in Docker Add the ARender plugin in Alfresco share container and Alfresco content repository container to make it works.\nIf needed, some resources about ARender for Alfresco are available below:\n See Alfresco documentation Download Alfresco plugin Warning The share plugin must be \/tomcat\/shared\/lib. Insure these paths are listed in shared.lib property in Alfresco component\u0026rsquo;s catalina.properties. To inform share about the location of the ARender UI server, add the following lines in Alfresco share configuration file.\ntomcat\/shared\/classes\/alfresco\/web-extension\/share-config-custom.xml \u0026lt;config evaluator\u0026#34;string-compare\u0026#34; condition\u0026#34;Arender\u0026#34;\u0026gt; \u0026lt;url\u0026gt;http:\/\/{arender-web-ui-server}\u0026lt;\/url\u0026gt; \u0026lt;!-- example: \u0026lt;url\u0026gt;http:\/\/localhost\u0026lt;\/url\u0026gt; --\u0026gt; \u0026lt;\/config\u0026gt; /p>p>docker/p>, url: https:\/\/docs.arender.io\/installation\/docker\/alfresco\/ }, { value: Alfresco, path: https:\/\/docs.arender.io\/v4\/install\/docker\/alfresco\/, label: p>ARender UI for Alfresco ARender ui for Alfresco images tag are prefixed with \u0026ldquo;-alfresco\u0026rdquo; (e.g arender-ui:4.8.21-alfresco).\nTo run the container, execute:\n$\u0026gt; docker run artifactory.arondor.cloud:5001\/arender-ui:4.8.21-alfresco \\ -e ARENDERSRV_ARENDER_SERVER_ALFRESCO_ATOM_PUB_URL\u0026#34;http:\/\/\u0026lt;alfresco-host\u0026gt;:\u0026lt;alfresco-port\u0026gt;\/alfresco\/api\/-default-\/cmis\/versions\/1.1\/atom\u0026#34; Alfresco in Docker Add the ARender plugin in Alfresco share container and Alfresco content repository container to make it works.\nIf needed, some resources about ARender for Alfresco are available below:\n See Alfresco documentation Download Alfresco plugin Warning The plugin must be in tomcat\/lib or \/tomcat\/shared\/lib./p>p>ARender UI for Alfresco ARender ui for Alfresco images tag are prefixed with \u0026ldquo;-alfresco\u0026rdquo; (e.g arender-ui:4.8.21-alfresco).\nTo run the container, execute:\n$\u0026gt; docker run artifactory.arondor.cloud:5001\/arender-ui:4.8.21-alfresco \\ -e ARENDERSRV_ARENDER_SERVER_ALFRESCO_ATOM_PUB_URL\u0026#34;http:\/\/\u0026lt;alfresco-host\u0026gt;:\u0026lt;alfresco-port\u0026gt;\/alfresco\/api\/-default-\/cmis\/versions\/1.1\/atom\u0026#34; Alfresco in Docker Add the ARender plugin in Alfresco share container and Alfresco content repository container to make it works.\nIf needed, some resources about ARender for Alfresco are available below:\n See Alfresco documentation Download Alfresco plugin Warning The plugin must be in tomcat\/lib or \/tomcat\/shared\/lib. Insure these paths are listed in shared.lib property in Alfresco component\u0026rsquo;s catalina.properties. To inform share about the location of the ARender UI server, add the following lines in Alfresco share configuration file.\ntomcat\/shared\/classes\/alfresco\/web-extension\/share-config-custom.xml \u0026lt;config evaluator\u0026#34;string-compare\u0026#34; condition\u0026#34;Arender\u0026#34;\u0026gt; \u0026lt;url\u0026gt;http:\/\/{arender-web-ui-server}\u0026lt;\/url\u0026gt; \u0026lt;!-- example: \u0026lt;url\u0026gt;http:\/\/localhost\u0026lt;\/url\u0026gt; --\u0026gt; \u0026lt;\/config\u0026gt; /p>p>docker/p>, url: https:\/\/docs.arender.io\/v4\/install\/docker\/alfresco\/ }, { value: Check, path: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/verification\/, label: p>Once the server is starting, you can check the URL http:\/\/renditionServerHost:8761\/health\/records to see status services (please replace \u0026ldquo;renditionServerHost\u0026rdquo; with your actual hostname on which the rendition server is running).\nAll services must be visible, started, and functional.\nIt may happen that not all services appear when rendition does not still completely started, in this case you have to wait a few minutes.\nIf some services or features are incomplete or not started, thank you kindly check the prerequisites of the rendition./p>p>Once the server is starting, you can check the URL http:\/\/renditionServerHost:8761\/health\/records to see status services (please replace \u0026ldquo;renditionServerHost\u0026rdquo; with your actual hostname on which the rendition server is running).\nAll services must be visible, started, and functional.\nIt may happen that not all services appear when rendition does not still completely started, in this case you have to wait a few minutes.\nIf some services or features are incomplete or not started, thank you kindly check the prerequisites of the rendition.\n/p>p>rendition/p>p>check/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/verification\/ }, { value: Check, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/verification\/, label: p>Once the server is starting, you can check the URL http:\/\/renditionServerHost:8761\/health\/records to see status services (please replace \u0026ldquo;renditionServerHost\u0026rdquo; with your actual hostname on which the rendition server is running).\nAll services must be visible, started, and functional.\nIt may happen that not all services appear when rendition does not still completely started, in this case you have to wait a few minutes.\nIf some services or features are incomplete or not started, thank you kindly check the prerequisites of the rendition./p>p>Once the server is starting, you can check the URL http:\/\/renditionServerHost:8761\/health\/records to see status services (please replace \u0026ldquo;renditionServerHost\u0026rdquo; with your actual hostname on which the rendition server is running).\nAll services must be visible, started, and functional.\nIt may happen that not all services appear when rendition does not still completely started, in this case you have to wait a few minutes.\nIf some services or features are incomplete or not started, thank you kindly check the prerequisites of the rendition.\n/p>p>rendition/p>p>check/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/verification\/ }, { value: Configuration, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/configuration\/, label: p>Configuration files of ARender Web-UI ARender configuration files are located in the folder WEB-INF\/classes of ARender webapp\n File name Editable Role and content arender-server-default.properties No Default properties configuration of ARender Web-UI including rendition server access and connector. arender-server.properties No Default custom properties needed for our connectors. You can find ECM properties in there. arender-server-custom-\u0026lt;\u0026hellip;\u0026gt;.properties Yes Custom properties file of ARender Web-UI./p>p>Configuration files of ARender Web-UI ARender configuration files are located in the folder WEB-INF\/classes of ARender webapp\n File name Editable Role and content arender-server-default.properties No Default properties configuration of ARender Web-UI including rendition server access and connector. arender-server.properties No Default custom properties needed for our connectors. You can find ECM properties in there. arender-server-custom-\u0026lt;\u0026hellip;\u0026gt;.properties Yes Custom properties file of ARender Web-UI. To modify it copy the needed properties from arender-server-(default).properties. arender-custom-server-integration.xml Yes Allows to insert custom Spring Bean, without overloading default ARender configuration. arender.xml No Main configuration of ARender Web-UI. ehcache.xml Yes Cache configuration of documents opened via the graphical interface. log4j.properties Yes Application logs configuration. arender-default.properties No Default interface configuration. arender.properties Yes Custom configuration of ARender Web-UI (Cf. Profile) customClient\/\u0026lt;\u0026hellip;\u0026gt;-custom-client-ui.properties Yes Another custom configuration of ARender Web-UI that support a wilcard filename arender-env.properties No Configuration of ARender Web-UI provided through Docker environment variables Rendition server definition In order to define one or several rendition servers, edit the arender-server-custom-\u0026lt;\u0026hellip;\u0026gt;.properties configuration file as follow:\narender-server-custom-\u0026lt;...\\\u0026gt;.properties arender.server.rendition.hosts{rendition_server_1},{rendition_server_2},{rendition_server_n} Note The value of \u0026quot;{rendition_server_x}\u0026quot; here has to be changed by the right rendition server address\n(Don\u0026rsquo;t forget to reboot your Web-UI)\n XFDF annotation folder configuration A default folder is configured in ARender to saved annotations as XML files. The user that launch the application server has to have read and write rights on this folder.\nBy default, XFDF annotations are saved in a folder named ARenderAnnotations\/ created in the home folder of the user that launch the application server.\nWarning On Windows, if the application server is launched as a service (without any user configured), the folder will be created in C:\\Windows\\System32\\config\\systemprofile. To configure a specific folder,\n Either modify server properties in arender-server-custom-\u0026lt;\u0026hellip;\u0026gt;.properties and add the property arender.server.annotations.xfdf.localstorage.default.path with the wanted value. Either create a system property named arender.annotation.xfdf.localstorage.default.path and set its value with the needed folder path. Style sheet: ARender-mat.css Most of the ARender graphical components can be configured in the style sheet. Consult the file for more details.\nNote This stylesheet is related to default user profile. See the Configuration guide for more information. Custom token validation The validation of a token is configurable if it is sent as a POST request cookie or attribute to the URL \/arendergwt\/validateToken.\nThe token must have the name \u0026ldquo;token\u0026rdquo;.\nThe custom validator Java class shall implement the TokenValidator interface. It must be declared in the ARender configuration through the arender.server.json.load.token.validator property. The default validator is NoopTokenValidator.\n/p>p>standalone/p>p>hmi/p>p>web ui/p>p>configuration/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/configuration\/ }, { value: Features, path: https:\/\/docs.arender.io\/v4\/feature\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/v4\/feature\/ }, { value: FileNet connector, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/filenetp8\/, label: p>ARender for IBM FileNet ARender has a pre-configured connector for IBM FileNet P8 (4.x) and IBM FileNet Content Manager (5.x).\n Parameter Description id Unique id of document version vsId VersionSeries id allowing to fetch last version of a document objectStoreName The name of the ObjectStore used to store the document objectType Document type: document, folder, containerXML, mixedObjects (optional for documents) contentElement Optional, index of the content element to display (ContentElement object)./p>p>ARender for IBM FileNet ARender has a pre-configured connector for IBM FileNet P8 (4.x) and IBM FileNet Content Manager (5.x).\n Parameter Description id Unique id of document version vsId VersionSeries id allowing to fetch last version of a document objectStoreName The name of the ObjectStore used to store the document objectType Document type: document, folder, containerXML, mixedObjects (optional for documents) contentElement Optional, index of the content element to display (ContentElement object). Acceptable values are between 1 and the number of elements Example Some examples:\n To open a document stored in FileNet P8, try:\nhttp:\/\/{arender_server}\/ARender.html?id{345A81-KT7SK95747S-5IS8-8SK0}\u0026amp;objectStoreNameOS1\n To open simultaneously two documents with the mixedObjects syntax:\nhttp:\/\/{arender_serveur}\/ARender.html?idsdoc:{345A81-KT7SK95747S-5IS8-8SK0},doc:{F64A9342-6114-4A5C-A5E1-589A2FFB159F}\u0026amp;objectStoreNameOS1\u0026amp;objectTypemixedObjects\n To open simultaneously two documents and a folder:\nhttp:\/\/{arender_serveur}\/ARender.html?objectStoreNameOS1\u0026amp;idsdoc:{3DBE573A-1AC9-4B08-8CB1-8F9495619954},doc:{F64A9342-6114-4A5C-A5E1-589A2FFB159F},folder:{55714817-BDAC-4C8A-9EFB-963E4620A4E4}\u0026amp;objectTypemixedObjects\n To open a specific content element:\nhttp:\/\/{arender_serveur}\/ARender.html?id{345A81-KT7SK95747S-5IS8-8SK0}\u0026amp;objectStoreNameOS1\u0026amp;contentElement2\n Note The mixedObjects syntax is: ids “doc” | “folder” “:” Id du document ou Folder “,\u0026quot; \u002b Document access Regarding authentication mode, two provider types can be used to provide document access.\nSharing FileNet session In the same JVM (or at least in a shared JAAS context) using IIOP protocol:\n Parameter Description content_engine_server URI of Content Engine using the IIOP protocol arender-server-custom-filenet.properties (located in WEB-INF\\classes) arender.server.filenet.authentication.methodjaasObjectStoreProvider arender.server.filenet.ce.urliiop:\/\/{content_engine_server}:2809\/FileNet\/Engine Technical account Using a technical account to connect to FileNet Content Platform Engine requires the below modifications.\nDisable security constraints Comment the security-constraint and security-role pre-configured.\nweb-fragment.xml (located in WEB-INF\\lib\\arondor-arender-filenet-ce-X.Y.Z.jar\\META-INF\\) \u0026lt;?xml version\u0026#34;1.0\u0026#34; encoding\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;web-fragment xmlns:xsi\u0026#34;http:\/\/www.w3.org\/2001\/XMLSchema-instance\u0026#34; xmlns\u0026#34;http:\/\/java.sun.com\/xml\/ns\/javaee\u0026#34; xmlns:web\u0026#34;http:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_2_5.xsd\u0026#34; xsi:schemaLocation\u0026#34;http:\/\/java.sun.com\/xml\/ns\/javaee http:\/\/java.sun.com\/xml\/ns\/javaee\/web-fragment_3_0.xsd\u0026#34; id\u0026#34;WebAppFragment_ID\u0026#34; version\u0026#34;3.0\u0026#34;\u0026gt; \u0026lt;name\u0026gt;web_fragment_ecm\u0026lt;\/name\u0026gt; \u0026lt;!--security-constraint\u0026gt; \u0026lt;web-resource-collection\u0026gt; \u0026lt;web-resource-name\u0026gt;action\u0026lt;\/web-resource-name\u0026gt; \u0026lt;description\u0026gt;Define the container secured resource\u0026lt;\/description\u0026gt; \u0026lt;url-pattern\u0026gt;\/ArondorViewer.jsp\u0026lt;\/url-pattern\u0026gt; \u0026lt;url-pattern\u0026gt;\/ARender.jsp\u0026lt;\/url-pattern\u0026gt; \u0026lt;url-pattern\u0026gt;\/ARender.html\u0026lt;\/url-pattern\u0026gt; \u0026lt;url-pattern\u0026gt;\/DownloadDocumentWithAnnotations.jsp\u0026lt;\/url-pattern\u0026gt; \u0026lt;url-pattern\u0026gt;\/arendergwt\/*\u0026lt;\/url-pattern\u0026gt; \u0026lt;url-pattern\u0026gt;\/openExternalDocument.jsp\u0026lt;\/url-pattern\u0026gt; \u0026lt;\/web-resource-collection\u0026gt; \u0026lt;auth-constraint\u0026gt; \u0026lt;role-name\u0026gt;All Authenticated\u0026lt;\/role-name\u0026gt; \u0026lt;\/auth-constraint\u0026gt; \u0026lt;user-data-constraint\u0026gt; \u0026lt;description\u0026gt;User data constraints\u0026lt;\/description\u0026gt; \u0026lt;transport-guarantee\u0026gt;NONE\u0026lt;\/transport-guarantee\u0026gt; \u0026lt;\/user-data-constraint\u0026gt; \u0026lt;\/security-constraint\u0026gt; \u0026lt;security-role\u0026gt; \u0026lt;description\u0026gt;All Authenticated\u0026lt;\/description\u0026gt; \u0026lt;role-name\u0026gt;All Authenticated\u0026lt;\/role-name\u0026gt; \u0026lt;\/security-role--\u0026gt; \u0026lt;\/web-fragment\u0026gt; Modify the user context Modify the bean having the id urlFilter (by default configured with JAASUserFilter class), by the one below:\narender-user-context.xml (located in WEB-INF\\classes\\) \u0026lt;bean id\u0026#34;urlFilter\u0026#34; class\u0026#34;com.arondor.viewer.server.security.RequestParameterAuthenticationFilter\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;authenticationManager\u0026#34; ref\u0026#34;authenticationManager\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; Configure the HTTP connexion Parameter Description content_engine_server URI of Content Engine based on FileNet WS (MTOM ou DIME) p8_identifiant Username of technical account p8_password Password of technical account arender-server-custom-filenet.properties (located in WEB-INF\\classes) arender.server.filenet.authentication.methodloginPasswordObjectStoreProvider arender.server.filenet.ce.urlhttp:\/\/{content_engine_server}\/wsi\/FNCEWS40MTOM\/ arender.server.filenet.ce.login{p8_identifiant} arender.server.filenet.ce.password{p8_password} Configuration the annotation format to be saved in FileNet Save annotations as XML FileNet format Default configuration, nothing to do here.\nSave annotation as XFDF Simply add the line below to the following file:\narender-server-custom-filenet.properties (located in WEB-INF\/classes) arender.server.default.annotation.accessorxfdfAnnotationAccessor Metadata fetching \u0026lt;bean id\u0026#34;documentPropertiesConfiguration\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.config.DocumentPropertiesConfiguration\u0026#34;\u0026gt; \u0026lt;\/bean\u0026gt; Include system metadata By default, no system metadata is fetched. In order to force it, you need to add\/edit includedSystemProperties property.\n \u0026lt;property name\u0026#34;includedSystemProperties\u0026#34;\u0026gt; \u0026lt;list\u0026gt; \u0026lt;value\u0026gt;DateCreated\u0026lt;\/value\u0026gt; \u0026lt;value\u0026gt;DateLastModified\u0026lt;\/value\u0026gt; \u0026lt;value\u0026gt;Creator\u0026lt;\/value\u0026gt; \u0026lt;value\u0026gt;LastModifier\u0026lt;\/value\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; Exclude custom metadata By default, all custom metadata are fetched and displayed. In order to force exclusion of some ones, you need to add\/edit excludedCustomProperties property\n \u0026lt;property name\u0026#34;excludedCustomProperties\u0026#34;\u0026gt; \u0026lt;list\u0026gt; \u0026lt;value\u0026gt;FactureRef\u0026lt;\/value\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; Note If the following error appears: No LoginModules configured for FilenetP8WSI, an additional configuration is required:\n Save the file jaas.conf.WebSphere in a folder on the WAS server\n Add the following parameter to ARender\u0026rsquo;s JVM:\n-Djava.security.auth.login.configPath_to_jaas_file.conf.WebSphere\nHow to:\n Navigate to the menu Server and select the related server. open Java and Process Management and click on Process Definition. In Start command arguments add the argument. From an user interface IBM Workplace \u0026amp; Workplace XT In order to define which document types have to be opened within ARender, you need to edit the configuration file content-redir.properties (for Workplace XT, in folder: C:\\Program Files\\FileNet\\Config\\WebClient) as follows:\ncontent-redir.properties {mimeType}\/..\/ARender\/ARender.html?{JSP_QUERY_STRING} IBM Content Navigator A specific plugin has been implemented to integrate ARender within ICN.\nNote ICN connector uses mixedObjects syntax. To use it, follow the instruction below:\n Connect to Content Navigator.\n Go to the \u0026lsquo;Administration View\u0026rsquo; and click on \u0026lsquo;Plug-ins\u0026rsquo; Click on the button \u0026ldquo;New Plugin-in\u0026rdquo;. Enter the JAR file path and click on \u0026lsquo;Load\u0026rsquo;. (Example: C:\\sources\\arender-web-ui*arondor-arender-navigator-plugin-2.2.1.jar) Fill \u0026lsquo;ARender context root\u0026rsquo; field with ARender\u0026rsquo;s address (hots \u002b port \u002b context root). Like below: If you want the plugin to automatically detect the host name and replace it in the configuration when called, use the keyword --arender.hostname--.\n Click on the \u0026lsquo;Save\u0026rsquo; button.\n Click on Edit and check that the plugin is correctly installed. Map the new viewer. Go to \u0026lsquo;Viewer Maps\u0026rsquo; The default map is called \u0026lsquo;Default viewer map\u0026rsquo; and is not editable.\n Click on it and then click on copy. Click on \u0026ldquo;New Mapping\u0026rdquo;. Then select \u0026lsquo;Filenet Context Manager\u0026rsquo; for the Repository type. Then select ARenderPluginViewer in the list of viewer available. You can now choose the MIME Types you want to open with ARender, then click on OK. To use this Map, you just need to link it to a Desktop (Desktop tab -\u0026gt; Edit the desktop -\u0026gt; Select the Map in the Viewer Map list) Advanced features Document Builder with advanced merge of metadata Description and configuration For each input Document Builder FileNet document :\n If all documents share the same property, with the same value The property and the value are propagated If the property is common to all documents, but the values are diverging The property is propagated, but the value is zero-ed with the following logic : String types will receive an empty String value Integer\/Double types will be set to 0 Date types will be set to the current Date of the Builder operation Boolean types will be false List types will be populated of a List of the correctly typed single element (empty lists not supported by the engine) If the property is existing in a single document By default, the property will not be propagated, unless specified by its SymbolicName in the configuration In order to propagate a unique property by its SymbolicName, you can add those in the following ARender Web-UI property, in a comma separated list.\narender.server.filenet.document.builder.update.first.document.properties.advanced.updater.propagation.symbolic.names How to activate the advanced merge of metadata In order to activate this feature you will have to edit the following ARender Web-UI property :\narender.server.filenet.document.builder.update.first.document.properties.copy.bean.name The two possible values are legacyFileNetPropertiesCopy (to keep the legacy behavior, by default), or advancedFileNetPropertiesMerger to active the new feature.\nIf you want to have the same behavior as well when updating a document content (and not only when creating document) you will have to add the following bean to the configuration :\narender-custom-server-integration.xml \u0026lt;bean id\u0026#34;filenetDocumentUpdaterNewVersion\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.helper.impl.FileNetDocumentUpdaterNewVersion\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;fileNetPropertiesUpdater\u0026#34; ref\u0026#34;${arender.server.filenet.document.builder.update.first.document.properties.copy.bean.name}\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; By default, this bean does not possess a fileNetPropertiesUpdater to keep its legacy behavior. With this configuration, the bean will follow the same behavior as the one configured for creating new documents.\nForbid document creation\/update in specific ObjectStores, by IDs In order to disable the creation or update of documents from some specific FileNet ObjectStores, we added a configuration so that you can list (separated by commas) theirs IDs :\narender.server.filenet.document.builder.unauthorized.object.store.ids The IDs listed in the configuration property will be protected from any Document Builder operation, and throw an exception when trying to do one regardless.\nBy default, this list is shipped empty, to keep legacy behavior.\nDisable DocumentBuilder feature for checkout\/archived documents It is possible to disable the DocumentBuilder feature for checkout\/archived documents via the activation of the below property:\narender.server.filenet.document.builder.disabled.for.checkout.and.archived.documentstrue Configuration of watermark display You can configure the watermark display depending on user group and\/or Filenet document class.\nTo activate the watermark depending on groups and\/or document classes, you need to add this property :\narender-server-custom-filenet.properties (Located in WEB-INF\\classes) arender.server.watermark.display.providerfileNetDisplayWatermarkProvider To display watermark to all user in certain groups : arender-server-custom-filenet.properties (Located in WEB-INF\\classes) #Comma-separated values that indicates which FileNet groups should have the watermark defined in arender.watermark.bean.name arender.server.watermark.filenet.group.with \nTo not display watermark to all user in certain groups : arender-server-custom-filenet.properties (Located in WEB-INF\\classes) #Comma-separated values that indicates which FileNet groups should not have the watermark defined in arender.watermark.bean.name arender.server.watermark.filenet.group.without \nWarning Both properties can not be used together To display watermark depending on Filenet document class (From 4.1.0 to 4.2.x) :\narender-server-custom-filenet.properties (Located in WEB-INF\\classes) #Comma-separated values that indicates which FileNet document classes should have the watermark defined in arender.watermark.bean.name arender.server.watermark.filenet.document.class.with To display watermark depending on Filenet document class (Since 4.3.0) :\narender-server-custom-filenet.properties (Located in WEB-INF\\classes) #Comma-separated values that indicate which FileNet document classes should have the watermark defined in arender.watermark.bean.name arender.server.watermark.filenet.document.class Advanced watermark configuration To define a watermark depending on Filenet DocumentClass and\/or user group, you need to define a watermark usage for each watermark needed. By default: arender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;fileNetWatermarkUsageDefinition\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetWatermarkUsageDefinition\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;${arender.watermark.bean.name}\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;filenetDocumentClass\u0026#34; ref\u0026#34;fileNetDocumentClassList\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;ldapGroupWithWatermark\u0026#34; ref\u0026#34;ldapGroup\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;ldapGroupWithoutWatermark\u0026#34; ref\u0026#34;ldapGroupException\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of FileNet DocumentClass will be affected by the watermark usage definition--\u0026gt; \u0026lt;bean id\u0026#34;fileNetDocumentClassList\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;${arender.server.watermark.filenet.document.class}\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of LDAP group that will have the watermark--\u0026gt; \u0026lt;bean id\u0026#34;ldapGroup\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;${arender.server.watermark.filenet.group.with}\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of LDAP group that will not have the watermark--\u0026gt; \u0026lt;bean id\u0026#34;ldapGroupException\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;${arender.server.watermark.filenet.group.without}\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \nExamples You can create a new simple watermark usage definition : arender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;newWatermarkDefinition\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetWatermarkUsageDefinition\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;myWatermarkBean\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \nYou can create a new watermark usage definition by filtering with LDAP group : arender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;newWatermarkDefinition\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetWatermarkUsageDefinition\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;myWatermarkBean\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;ldapGroupWithWatermark\u0026#34; ref\u0026#34;ldapGroupExample\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of LDAP group that will have the watermark--\u0026gt; \u0026lt;bean id\u0026#34;ldapGroupExample\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;myGroup\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \nYou can create a new watermark usage definition to display watermark for every user except those that are defined here : arender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;newWatermarkDefinition\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetWatermarkUsageDefinition\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;myWatermarkBean\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;ldapGroupWithoutWatermark\u0026#34; ref\u0026#34;ldapGroupExample\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of LDAP group that will have the watermark--\u0026gt; \u0026lt;bean id\u0026#34;ldapGroupExample\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;myGroup\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \nYou can create a new watermark usage definition depending on FileNet documentClass : arender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;newWatermarkDefinition\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetWatermarkUsageDefinition\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;myWatermarkBean\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;filenetDocumentClass\u0026#34; ref\u0026#34;fileNetDocumentClassList\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of FileNet DocumentClass will be affected by the watermark usage definition--\u0026gt; \u0026lt;bean id\u0026#34;fileNetDocumentClassList\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;${arender.server.watermark.filenet.document.class}\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \nOf course, you can mix them to achieve advanced configuration : arender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;newWatermarkDefinition\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetWatermarkUsageDefinition\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;myWatermarkBean\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;filenetDocumentClass\u0026#34; ref\u0026#34;fileNetDocumentClassList\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;ldapGroupWithWatermark\u0026#34; ref\u0026#34;ldapGroupExample\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of FileNet DocumentClass will be affected by the watermark usage definition--\u0026gt; \u0026lt;bean id\u0026#34;fileNetDocumentClassList\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;${arender.server.watermark.filenet.document.class}\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of LDAP group that will have the watermark--\u0026gt; \u0026lt;bean id\u0026#34;ldapGroupExample\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;myLDAPGroup\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \nWARNING Following line is mandatory to be set :\n\u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;exampleWatermarkBean\u0026#34;\/\u0026gt; Add watermark usage definition Then you need to add all watermark usages to the watermark provider :\narender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;!-- EXAMPLE --\u0026gt; \u0026lt;bean id\u0026#34;fileNetDisplayWatermarkProvider\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetDisplayWatermarkProvider\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;fileNetWatermarkDocument\u0026#34; \u0026gt; \u0026lt;list\u0026gt; \u0026lt;ref bean\u0026#34;fileNetWatermarkUsageDefinition\u0026#34;\/\u0026gt; \u0026lt;ref bean\u0026#34;newWatermarkDefinition\u0026#34;\/\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Create a PDF\/A as new version or new document in document builder Since the ARender version 4.2.0, two new behaviors have been added in order to be able to create or update a document in PDFA.\nAlready existing content update behaviors are :\n UPDATE_NO_DOCUMENT UPDATE_FIRST_DOCUMENT CREATE_NEW_FIRST_DOCUMENT UPDATE_ALL_DOCUMENT The two new ones are :\n UPDATE_FIRST_DOCUMENT_PDFA CREATE_NEW_FIRST_DOCUMENT_PDFA The new behaviors are similar to UPDATE_FIRST_DOCUMENT and CREATE_NEW_FIRST_DOCUMENT except that the file type will be PDFA.\nAs a prerequisite, it is necessary to have the PDFA rendition module.\nExample From the alterdocumentcontent-configuration.xml file configuration, you can copy the saveActionUpdateFirst and saveActionCreateFirst beans to the arender-custom-integration.xml file and modify the contentUpdateBehavior property as it :\narender-custom-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;saveActionUpdateFirst\u0026#34; class\u0026#34;com.arondor.viewer.client.pictree.presenter.nodeaction.TreeNodeAction\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${documentbuilder.button.updateFirst.enabled}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;availability\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.pictree.presenter.nodeaction.TreeNodeActionAvailability$IsEnabledAndNotRoot\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#documentBuilderUpdateFirstDocument\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;pictreeButton saveDocumentUpdateFirstButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;event\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.documentbuilder.DocumentBuilderSaveDocumentEvent\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;freezeDocument\u0026#34; value\u0026#34;${documentbuilder.save.freeze}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;downloadDocument\u0026#34; value\u0026#34;${documentbuilder.save.download}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;deleteDocument\u0026#34; value\u0026#34;${documentbuilder.save.delete}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;contentUpdateBehavior\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.client.api.document.altercontent.AlterContentDescription$ContentUpdateBehavior\u0026#34;\u0026gt;UPDATE_FIRST_DOCUMENT_PDFA\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean id\u0026#34;saveActionCreateFirst\u0026#34; class\u0026#34;com.arondor.viewer.client.pictree.presenter.nodeaction.TreeNodeAction\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${documentbuilder.button.createFirst.enabled}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;availability\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.pictree.presenter.nodeaction.TreeNodeActionAvailability$IsEnabledAndNotRoot\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#documentBuilderCreateFirstDocument\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;pictreeButton saveDocumentCreateFirstButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;event\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.documentbuilder.DocumentBuilderSaveDocumentEvent\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;freezeDocument\u0026#34; value\u0026#34;${documentbuilder.save.freeze}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;downloadDocument\u0026#34; value\u0026#34;${documentbuilder.save.download}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;deleteDocument\u0026#34; value\u0026#34;${documentbuilder.save.delete}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;contentUpdateBehavior\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.client.api.document.altercontent.AlterContentDescription$ContentUpdateBehavior\u0026#34;\u0026gt;CREATE_NEW_FIRST_DOCUMENT_PDFA\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Updating metadata The servlet updateDocumentMetadataServlet is dedicated to updating Filenet document metadata with a POST call.\nHere is an example of the POST call, where {documentId} is to be replaced by the documentId of the targeted document :\nPOST call http:\/\/{HOST_ARENDER}\/arendergwt\/updateDocumentMetadataServlet?uuid{documentId} Then, the body of the request will accept a JSON structure defining each metadata name to modify and the associated value. The propertyKey correspond to the symbolicName and displayName properties of Filenet. The propertyValue is the value that the metadata will take.\nJSON in the request body { \u0026#34;propertyKey1\u0026#34; : \u0026#34;propertyValue1\u0026#34;, \u0026#34;propertyKey2\u0026#34; : \u0026#34;propertyValue2\u0026#34; } Set a default document title The following property allows to configure a default title to the document that does not have one.\narender-server-custom-filenet.properties (Located in WEB-INF\\classes) arender.server.default.filenet.document.name\u0026#34;default name\u0026#34; /p>p>filenet/p>p>connector/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/filenetp8\/ }, { value: FileNet connector, path: https:\/\/docs.arender.io\/v4\/connector\/filenetp8\/, label: p>ARender for IBM FileNet ARender has a pre-configured connector for IBM FileNet P8 (4.x) and IBM FileNet Content Manager (5.x).\n Parameter Description id Unique id of document version vsId VersionSeries id allowing to fetch last version of a document objectStoreName The name of the ObjectStore used to store the document objectType Document type: document, folder, containerXML, mixedObjects (optional for documents) Example Some examples:/p>p>ARender for IBM FileNet ARender has a pre-configured connector for IBM FileNet P8 (4.x) and IBM FileNet Content Manager (5.x).\n Parameter Description id Unique id of document version vsId VersionSeries id allowing to fetch last version of a document objectStoreName The name of the ObjectStore used to store the document objectType Document type: document, folder, containerXML, mixedObjects (optional for documents) Example Some examples:\n To open a document stored in FileNet P8, try:\nhttp:\/\/{arender_server}\/ARender.html?id{345A81-KT7SK95747S-5IS8-8SK0}\u0026amp;objectStoreNameOS1\n To open simultaneously two documents with the mixedObjects syntax:\nhttp:\/\/{arender_serveur}\/ARender.html?idsdoc:{345A81-KT7SK95747S-5IS8-8SK0},doc:{F64A9342-6114-4A5C-A5E1-589A2FFB159F}\u0026amp;objectStoreNameOS1\u0026amp;objectTypemixedObjects\n To open simultaneously two documents and a folder:\nhttp:\/\/{arender_serveur}\/ARender.html?objectStoreNameOS1\u0026amp;idsdoc:{3DBE573A-1AC9-4B08-8CB1-8F9495619954},doc:{F64A9342-6114-4A5C-A5E1-589A2FFB159F},folder:{55714817-BDAC-4C8A-9EFB-963E4620A4E4}\u0026amp;objectTypemixedObjects\n Note The mixedObjects syntax is: ids “doc” | “folder” “:” Id du document ou Folder “,\u0026quot; \u002b Opening a single document To open a specific version of the document :\n Syntax: http:\/\/{arender_server}\/ARender.html?objectStoreName{objectStoreName}\u0026amp;id{documentId}\n Syntax: http:\/\/{arender_server}\/ARender.html?objectStoreId{objectStoreId}\u0026amp;id{documentId}\n To open the latest version of the document :\n Syntax: http:\/\/{arender_server}\/ARender.html?objectStoreName{objectStoreName}\u0026amp;vsId{documentVersionId}\n Syntax: http:\/\/{arender_server}\/ARender.html?objectStoreId{objectStoreId}\u0026amp;vsId{documentVersionId}\n Opening a Folder To open all the documents in the folder, and all the sub-folders recursively :\n Syntax: http:\/\/{arender_server}\/ARender.html?objectStoreName{objectStoreName}\u0026amp;objectTypefolder\u0026amp;id{folderId}\n Syntax: http:\/\/{arender_server}\/ARender.html?objectStoreId{objectStoreId}\u0026amp;objectTypefolder\u0026amp;id{folderId}\n Two-steps loading phase using \/arendergwt\/openExternalDocument Building the URL required by ARender may imply providing information to the end-user\u0026rsquo;s browser which we would like to hide. The two-step loading phase mechanism is here for this purpose. The document is first registered within ARender from the calling application. The URL provided to the end-user only contains a generic meaningless UUID the user can not hack, save or even share. The \/arendergwt\/openExternalDocument resource provides this way to register document resources indirectly.\nBoth \/arendergwt\/openExternalDocument and ARender.html use the list of registered URL parser modules to parse incoming URLs, but results vary.\n ARender.html directly opens the ARender GUI.\n \/arendergwt\/openExternalDocument only generates a volatile UUID corresponding to the parsing of the document. This UUID can then be used to open the document.\n The two-steps loading is as follows :\nhttp:\/\/{arender_server}\/arendergwt\/openExternalDocument?{keyValueArguments}\nGenerates a volatile UUID.\nhttp:\/\/{arender_server}\/ARender.html?uuid{generatedUUID}\nLoads the GUI and opens the corresponding document.\nExample Some example :\n Open an external document retrieved by http : http:\/\/{arender_server}\/ARender.html?urlhttp:\/\/ARender\/pdf\/pdf\/PDFReference15_v5.pdf\n Using a two-step loading : http:\/\/{arender_server}\/arendergwt\/openExternalDocument?urlhttp:\/\/ARender\/pdf\/pdf\/PDFReference15_v5.pdf\nGenerates the UUID d04cca4f-e159-3eec-b85f-21aa3ac79984 (the URL is hashed using UUID standard method) And can be open with :\nhttp:\/\/{arender_server}\/ARender.html?uuidd04cca4f-e159-3eec-b85f-21aa3ac79984\nLoads the corresponding URL.\n POST and IBM FileNet AREnder plugin - xmlDescriptor The xmlDescriptor is an XML file that can be used by the calling application to build a structured list of documents stored in FileNet and show them directly in a single ARender instance.\nmulti-folder.xml \u0026lt;?xml version\u0026#34;1.0\u0026#34; encoding\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;folder title\u0026#34;My virtual folder root\u0026#34;\u0026gt; \u0026lt;folder title\u0026#34;A first folder\u0026#34;\u0026gt; \u0026lt;document title\u0026#34;Facture en français\u0026#34; id\u0026#34;{2659D649-D21D-4E03-9448-3F6B4EB9BFB5}\u0026#34;\/\u0026gt; \u0026lt;document title\u0026#34;Autre Facture\u0026#34; id\u0026#34;{18810D4A-A438-4192-9B6F-05CCC09CE5A7}\u0026#34;\/\u0026gt; \u0026lt;\/folder\u0026gt; \u0026lt;folder title\u0026#34;A second folder\u0026#34;\u0026gt; \u0026lt;document title\u0026#34;Another invoice here\u0026#34; id\u0026#34;{4CC448B2-4C8B-4F94-AF36-3A3B764EE947}\u0026#34;\/\u0026gt; \u0026lt;document title\u0026#34;Document interdit\u0026#34; id\u0026#34;{3613A122-9251-4B71-A7C5-89A25AB713B1}\u0026#34;\/\u0026gt; \u0026lt;\/folder\u0026gt; \u0026lt;\/folder\u0026gt; This XML file must be sent to the \/arendergwt\/openExternalDocument page using a POST query :\nhttp:\/\/{arender_server}\/arendergwt\/openExternalDocument?objectStoreNameAnyObjectStore\u0026amp;objectTypecontentContainerXML\nThe objectStoreName is mandatory to trigger the FileNet CE URL parsing module, but it is not used per se in the process. The result of the query is a UUID corresponding to the registration of this multi-selection, which in turn can be used in the following URL:\nhttp:\/\/{arender_server}\/ARender.html?objectStoreName{objectStore name}1\u0026amp;objectTypemultiSelect\u0026amp;multiSelectId{multi-select Id}\nDocument access Regarding authentication mode, two provider types can be used to provide document access.\nSharing FileNet session In the same JVM (or at least in a shared JAAS context) using IIOP protocol:\n Parameter Description content_engine_server URI of Content Engine using the IIOP protocol arender-server-custom-filenet.properties (located in WEB-INF\\classes) arender.server.filenet.authentication.methodjaasObjectStoreProvider arender.server.filenet.ce.urliiop:\/\/{content_engine_server}:2809\/FileNet\/Engine Technical account Using a technical account to connect to FileNet Content Platform Engine requires the below modifications.\nDisable security constraints Comment the security-constraint and security-role pre-configured.\nweb-fragment.xml (located in WEB-INF\\lib\\arondor-arender-filenet-ce-X.Y.Z.jar\\META-INF\\) \u0026lt;?xml version\u0026#34;1.0\u0026#34; encoding\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;web-fragment xmlns:xsi\u0026#34;http:\/\/www.w3.org\/2001\/XMLSchema-instance\u0026#34; xmlns\u0026#34;http:\/\/java.sun.com\/xml\/ns\/javaee\u0026#34; xmlns:web\u0026#34;http:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_2_5.xsd\u0026#34; xsi:schemaLocation\u0026#34;http:\/\/java.sun.com\/xml\/ns\/javaee http:\/\/java.sun.com\/xml\/ns\/javaee\/web-fragment_3_0.xsd\u0026#34; id\u0026#34;WebAppFragment_ID\u0026#34; version\u0026#34;3.0\u0026#34;\u0026gt; \u0026lt;name\u0026gt;web_fragment_ecm\u0026lt;\/name\u0026gt; \u0026lt;!--security-constraint\u0026gt; \u0026lt;web-resource-collection\u0026gt; \u0026lt;web-resource-name\u0026gt;action\u0026lt;\/web-resource-name\u0026gt; \u0026lt;description\u0026gt;Define the container secured resource\u0026lt;\/description\u0026gt; \u0026lt;url-pattern\u0026gt;\/ArondorViewer.jsp\u0026lt;\/url-pattern\u0026gt; \u0026lt;url-pattern\u0026gt;\/ARender.jsp\u0026lt;\/url-pattern\u0026gt; \u0026lt;url-pattern\u0026gt;\/ARender.html\u0026lt;\/url-pattern\u0026gt; \u0026lt;url-pattern\u0026gt;\/DownloadDocumentWithAnnotations.jsp\u0026lt;\/url-pattern\u0026gt; \u0026lt;url-pattern\u0026gt;\/arendergwt\/*\u0026lt;\/url-pattern\u0026gt; \u0026lt;url-pattern\u0026gt;\/openExternalDocument.jsp\u0026lt;\/url-pattern\u0026gt; \u0026lt;\/web-resource-collection\u0026gt; \u0026lt;auth-constraint\u0026gt; \u0026lt;role-name\u0026gt;All Authenticated\u0026lt;\/role-name\u0026gt; \u0026lt;\/auth-constraint\u0026gt; \u0026lt;user-data-constraint\u0026gt; \u0026lt;description\u0026gt;User data constraints\u0026lt;\/description\u0026gt; \u0026lt;transport-guarantee\u0026gt;NONE\u0026lt;\/transport-guarantee\u0026gt; \u0026lt;\/user-data-constraint\u0026gt; \u0026lt;\/security-constraint\u0026gt; \u0026lt;security-role\u0026gt; \u0026lt;description\u0026gt;All Authenticated\u0026lt;\/description\u0026gt; \u0026lt;role-name\u0026gt;All Authenticated\u0026lt;\/role-name\u0026gt; \u0026lt;\/security-role--\u0026gt; \u0026lt;\/web-fragment\u0026gt; Modify the user context Modify the bean having the id urlFilter (by default configured with JAASUserFilter class), by the one below:\narender-user-context.xml (located in WEB-INF\\classes\\) \u0026lt;bean id\u0026#34;urlFilter\u0026#34; class\u0026#34;com.arondor.viewer.server.security.RequestParameterAuthenticationFilter\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;authenticationManager\u0026#34; ref\u0026#34;authenticationManager\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; Configure the HTTP connexion Parameter Description content_engine_server URI of Content Engine based on FileNet WS (MTOM ou DIME) p8_identifiant Username of technical account p8_password Password of technical account arender-server-custom-filenet.properties (located in WEB-INF\\classes) arender.server.filenet.authentication.methodloginPasswordObjectStoreProvider arender.server.filenet.ce.urlhttp:\/\/{content_engine_server}\/wsi\/FNCEWS40MTOM\/ arender.server.filenet.ce.login{p8_identifiant} arender.server.filenet.ce.password{p8_password} Configuration the annotation format to be saved in FileNet Save annotations as XML FileNet format Default configuration, nothing to do here.\nSave annotation as XFDF Simply add the line below to the following file:\narender-server-custom-filenet.properties (located in WEB-INF\/classes) arender.server.default.annotation.accessorxfdfAnnotationAccessor Metadata fetching \u0026lt;bean id\u0026#34;documentPropertiesConfiguration\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.config.DocumentPropertiesConfiguration\u0026#34;\u0026gt; \u0026lt;\/bean\u0026gt; Include system metadata By default, no system metadata is fetched. In order to force it, you need to add\/edit includedSystemProperties property.\n \u0026lt;property name\u0026#34;includedSystemProperties\u0026#34;\u0026gt; \u0026lt;list\u0026gt; \u0026lt;value\u0026gt;DateCreated\u0026lt;\/value\u0026gt; \u0026lt;value\u0026gt;DateLastModified\u0026lt;\/value\u0026gt; \u0026lt;value\u0026gt;Creator\u0026lt;\/value\u0026gt; \u0026lt;value\u0026gt;LastModifier\u0026lt;\/value\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; Exclude custom metadata By default, all custom metadata are fetched and displayed. In order to force exclusion of some ones, you need to add\/edit excludedCustomProperties property\n \u0026lt;property name\u0026#34;excludedCustomProperties\u0026#34;\u0026gt; \u0026lt;list\u0026gt; \u0026lt;value\u0026gt;FactureRef\u0026lt;\/value\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; Note If the following error appears: No LoginModules configured for FilenetP8WSI, an additional configuration is required:\n Save the file jaas.conf.WebSphere in a folder on the WAS server\n Add the following parameter to ARender\u0026rsquo;s JVM:\n-Djava.security.auth.login.configPath_to_jaas_file.conf.WebSphere\nHow to:\n Navigate to the menu Server and select the related server. open Java and Process Management and click on Process Definition. In Start command arguments add the argument. From an user interface IBM Workplace \u0026amp; Workplace XT In order to define which document types have to be opened within ARender, you need to edit the configuration file content-redir.properties (for Workplace XT, in folder: C:\\Program Files\\FileNet\\Config\\WebClient) as follows:\ncontent-redir.properties {mimeType}\/..\/ARender\/ARender.html?{JSP_QUERY_STRING} IBM Content Navigator A specific plugin has been implemented to integrate ARender within ICN.\nNote ICN connector uses mixedObjects syntax. To use it, follow the instruction below:\n Connect to Content Navigator.\n Go to the \u0026lsquo;Administration View\u0026rsquo; and click on \u0026lsquo;Plug-ins\u0026rsquo; Click on the button \u0026ldquo;New Plugin-in\u0026rdquo;. Enter the JAR file path and click on \u0026lsquo;Load\u0026rsquo;. (Example: C:\\sources\\arender-web-ui*arondor-arender-navigator-plugin-2.2.1.jar) Fill \u0026lsquo;ARender context root\u0026rsquo; field with ARender\u0026rsquo;s address (hots \u002b port \u002b context root). Like below: If you want the plugin to automatically detect the host name and replace it in the configuration when called, use the keyword --arender.hostname--.\n Click on the \u0026lsquo;Save\u0026rsquo; button.\n Click on Edit and check that the plugin is correctly installed. Map the new viewer. Go to \u0026lsquo;Viewer Maps\u0026rsquo; The default map is called \u0026lsquo;Default viewer map\u0026rsquo; and is not editable.\n Click on it and then click on copy. Click on \u0026ldquo;New Mapping\u0026rdquo;. Then select \u0026lsquo;Filenet Context Manager\u0026rsquo; for the Repository type. Then select ARenderPluginViewer in the list of viewer available. You can now choose the MIME Types you want to open with ARender, then click on OK. To use this Map, you just need to link it to a Desktop (Desktop tab -\u0026gt; Edit the desktop -\u0026gt; Select the Map in the Viewer Map list) Advanced features Document Builder with advanced merge of metadata Description and configuration For each input Document Builder FileNet document :\n If all documents share the same property, with the same value The property and the value are propagated If the property is common to all documents, but the values are diverging The property is propagated, but the value is zero-ed with the following logic : String types will receive an empty String value Integer\/Double types will be set to 0 Date types will be set to the current Date of the Builder operation Boolean types will be false List types will be populated of a List of the correctly typed single element (empty lists not supported by the engine) If the property is existing in a single document By default, the property will not be propagated, unless specified by its SymbolicName in the configuration In order to propagate a unique property by its SymbolicName, you can add those in the following ARender Web-UI property, in a comma separated list.\narender.server.filenet.document.builder.update.first.document.properties.advanced.updater.propagation.symbolic.names How to activate the advanced merge of metadata In order to activate this feature you will have to edit the following ARender Web-UI property :\narender.server.filenet.document.builder.update.first.document.properties.copy.bean.name The two possible values are legacyFileNetPropertiesCopy (to keep the legacy behavior, by default), or advancedFileNetPropertiesMerger to active the new feature.\nIf you want to have the same behavior as well when updating a document content (and not only when creating document) you will have to add the following bean to the configuration :\narender-custom-server-integration.xml \u0026lt;bean id\u0026#34;filenetDocumentUpdaterNewVersion\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.helper.impl.FileNetDocumentUpdaterNewVersion\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;fileNetPropertiesUpdater\u0026#34; ref\u0026#34;${arender.server.filenet.document.builder.update.first.document.properties.copy.bean.name}\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; By default, this bean does not possess a fileNetPropertiesUpdater to keep its legacy behavior. With this configuration, the bean will follow the same behavior as the one configured for creating new documents.\nForbid document creation\/update in specific ObjectStores, by IDs In order to disable the creation or update of documents from some specific FileNet ObjectStores, we added a configuration so that you can list (separated by commas) theirs IDs :\narender.server.filenet.document.builder.unauthorized.object.store.ids The IDs listed in the configuration property will be protected from any Document Builder operation, and throw an exception when trying to do one regardless.\nBy default, this list is shipped empty, to keep legacy behavior.\nDisable DocumentBuilder feature for checkout\/archived documents It is possible to disable the DocumentBuilder feature for checkout\/archived documents via the activation of the below property:\narender.server.filenet.document.builder.disabled.for.checkout.and.archived.documentstrue Configuration of watermark display You can configure the watermark display depending on user group and\/or Filenet document class.\nTo activate the watermark depending on groups and\/or document classes, you need to add this property :\narender-server-custom-filenet.properties (Located in WEB-INF\\classes) arender.server.watermark.display.providerfileNetDisplayWatermarkProvider To display watermark to all user in certain groups : arender-server-custom-filenet.properties (Located in WEB-INF\\classes) #Comma-separated values that indicates which FileNet groups should have the watermark defined in arender.watermark.bean.name arender.server.watermark.filenet.group.with \nTo not display watermark to all user in certain groups : arender-server-custom-filenet.properties (Located in WEB-INF\\classes) #Comma-separated values that indicates which FileNet groups should not have the watermark defined in arender.watermark.bean.name arender.server.watermark.filenet.group.without \nWarning Both properties can not be used together To display watermark depending on Filenet document class (From 4.1.0 to 4.2.x) :\narender-server-custom-filenet.properties (Located in WEB-INF\\classes) #Comma-separated values that indicates which FileNet document classes should have the watermark defined in arender.watermark.bean.name arender.server.watermark.filenet.document.class.with To display watermark depending on Filenet document class (Since 4.3.0) :\narender-server-custom-filenet.properties (Located in WEB-INF\\classes) #Comma-separated values that indicate which FileNet document classes should have the watermark defined in arender.watermark.bean.name arender.server.watermark.filenet.document.class Advanced watermark configuration To define a watermark depending on Filenet DocumentClass and\/or user group, you need to define a watermark usage for each watermark needed. By default: arender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;fileNetWatermarkUsageDefinition\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetWatermarkUsageDefinition\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;${arender.watermark.bean.name}\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;filenetDocumentClass\u0026#34; ref\u0026#34;fileNetDocumentClassList\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;ldapGroupWithWatermark\u0026#34; ref\u0026#34;ldapGroup\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;ldapGroupWithoutWatermark\u0026#34; ref\u0026#34;ldapGroupException\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of FileNet DocumentClass will be affected by the watermark usage definition--\u0026gt; \u0026lt;bean id\u0026#34;fileNetDocumentClassList\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;${arender.server.watermark.filenet.document.class}\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of LDAP group that will have the watermark--\u0026gt; \u0026lt;bean id\u0026#34;ldapGroup\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;${arender.server.watermark.filenet.group.with}\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of LDAP group that will not have the watermark--\u0026gt; \u0026lt;bean id\u0026#34;ldapGroupException\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;${arender.server.watermark.filenet.group.without}\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \nExamples You can create a new simple watermark usage definition : arender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;newWatermarkDefinition\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetWatermarkUsageDefinition\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;myWatermarkBean\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \nYou can create a new watermark usage definition by filtering with LDAP group : arender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;newWatermarkDefinition\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetWatermarkUsageDefinition\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;myWatermarkBean\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;ldapGroupWithWatermark\u0026#34; ref\u0026#34;ldapGroupExample\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of LDAP group that will have the watermark--\u0026gt; \u0026lt;bean id\u0026#34;ldapGroupExample\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;myGroup\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \nYou can create a new watermark usage definition to display watermark for every user except those that are defined here : arender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;newWatermarkDefinition\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetWatermarkUsageDefinition\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;myWatermarkBean\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;ldapGroupWithoutWatermark\u0026#34; ref\u0026#34;ldapGroupExample\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of LDAP group that will have the watermark--\u0026gt; \u0026lt;bean id\u0026#34;ldapGroupExample\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;myGroup\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \nYou can create a new watermark usage definition depending on FileNet documentClass : arender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;newWatermarkDefinition\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetWatermarkUsageDefinition\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;myWatermarkBean\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;filenetDocumentClass\u0026#34; ref\u0026#34;fileNetDocumentClassList\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of FileNet DocumentClass will be affected by the watermark usage definition--\u0026gt; \u0026lt;bean id\u0026#34;fileNetDocumentClassList\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;${arender.server.watermark.filenet.document.class}\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \nOf course, you can mix them to achieve advanced configuration : arender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;newWatermarkDefinition\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetWatermarkUsageDefinition\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;myWatermarkBean\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;filenetDocumentClass\u0026#34; ref\u0026#34;fileNetDocumentClassList\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;ldapGroupWithWatermark\u0026#34; ref\u0026#34;ldapGroupExample\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of FileNet DocumentClass will be affected by the watermark usage definition--\u0026gt; \u0026lt;bean id\u0026#34;fileNetDocumentClassList\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;${arender.server.watermark.filenet.document.class}\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;!-- List of LDAP group that will have the watermark--\u0026gt; \u0026lt;bean id\u0026#34;ldapGroupExample\u0026#34; class\u0026#34;org.springframework.util.StringUtils\u0026#34; factory-method\u0026#34;commaDelimitedListToStringArray\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;myLDAPGroup\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; \nWARNING Following line is mandatory to be set :\n\u0026lt;property name\u0026#34;displayWatermarkBeanName\u0026#34; value\u0026#34;exampleWatermarkBean\u0026#34;\/\u0026gt; Add watermark usage definition Then you need to add all watermark usages to the watermark provider :\narender-custom-server-integration.xml (Located in WEB-INF\\classes) \u0026lt;!-- EXAMPLE --\u0026gt; \u0026lt;bean id\u0026#34;fileNetDisplayWatermarkProvider\u0026#34; class\u0026#34;com.arondor.viewer.filenetce.annotation.FileNetDisplayWatermarkProvider\u0026#34; scope\u0026#34;singleton\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;fileNetWatermarkDocument\u0026#34; \u0026gt; \u0026lt;list\u0026gt; \u0026lt;ref bean\u0026#34;fileNetWatermarkUsageDefinition\u0026#34;\/\u0026gt; \u0026lt;ref bean\u0026#34;newWatermarkDefinition\u0026#34;\/\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Create a PDF\/A as new version or new document in document builder Since the ARender version 4.2.0, two new behaviors have been added in order to be able to create or update a document in PDFA.\nAlready existing content update behaviors are :\n UPDATE_NO_DOCUMENT UPDATE_FIRST_DOCUMENT CREATE_NEW_FIRST_DOCUMENT UPDATE_ALL_DOCUMENT The two new ones are :\n UPDATE_FIRST_DOCUMENT_PDFA CREATE_NEW_FIRST_DOCUMENT_PDFA The new behaviors are similar to UPDATE_FIRST_DOCUMENT and CREATE_NEW_FIRST_DOCUMENT except that the file type will be PDFA.\nAs a prerequisite, it is necessary to have the PDFA rendition module.\nExample From the alterdocumentcontent-configuration.xml file configuration, you can copy the saveActionUpdateFirst and saveActionCreateFirst beans to the arender-custom-integration.xml file and modify the contentUpdateBehavior property as it :\narender-custom-integration.xml (Located in WEB-INF\\classes) \u0026lt;bean id\u0026#34;saveActionUpdateFirst\u0026#34; class\u0026#34;com.arondor.viewer.client.pictree.presenter.nodeaction.TreeNodeAction\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${documentbuilder.button.updateFirst.enabled}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;availability\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.pictree.presenter.nodeaction.TreeNodeActionAvailability$IsEnabledAndNotRoot\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#documentBuilderUpdateFirstDocument\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;pictreeButton saveDocumentUpdateFirstButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;event\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.documentbuilder.DocumentBuilderSaveDocumentEvent\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;freezeDocument\u0026#34; value\u0026#34;${documentbuilder.save.freeze}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;downloadDocument\u0026#34; value\u0026#34;${documentbuilder.save.download}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;deleteDocument\u0026#34; value\u0026#34;${documentbuilder.save.delete}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;contentUpdateBehavior\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.client.api.document.altercontent.AlterContentDescription$ContentUpdateBehavior\u0026#34;\u0026gt;UPDATE_FIRST_DOCUMENT_PDFA\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean id\u0026#34;saveActionCreateFirst\u0026#34; class\u0026#34;com.arondor.viewer.client.pictree.presenter.nodeaction.TreeNodeAction\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${documentbuilder.button.createFirst.enabled}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;availability\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.pictree.presenter.nodeaction.TreeNodeActionAvailability$IsEnabledAndNotRoot\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#documentBuilderCreateFirstDocument\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;pictreeButton saveDocumentCreateFirstButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;event\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.documentbuilder.DocumentBuilderSaveDocumentEvent\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;freezeDocument\u0026#34; value\u0026#34;${documentbuilder.save.freeze}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;downloadDocument\u0026#34; value\u0026#34;${documentbuilder.save.download}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;deleteDocument\u0026#34; value\u0026#34;${documentbuilder.save.delete}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;contentUpdateBehavior\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.client.api.document.altercontent.AlterContentDescription$ContentUpdateBehavior\u0026#34;\u0026gt;CREATE_NEW_FIRST_DOCUMENT_PDFA\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Updating metadata The servlet updateDocumentMetadataServlet is dedicated to updating Filenet document metadata with a POST call.\nHere is an example of the POST call, where {documentId} is to be replaced by the documentId of the targeted document :\nPOST call http:\/\/{HOST_ARENDER}\/arendergwt\/updateDocumentMetadataServlet?uuid{documentId} Then, the body of the request will accept a JSON structure defining each metadata name to modify and the associated value. The propertyKey correspond to the symbolicName and displayName properties of Filenet. The propertyValue is the value that the metadata will take.\nJSON in the request body { \u0026#34;propertyKey1\u0026#34; : \u0026#34;propertyValue1\u0026#34;, \u0026#34;propertyKey2\u0026#34; : \u0026#34;propertyValue2\u0026#34; } Changing default document name In Filenet, it is possible to set an empty document title in the document properties.\nIf so, as ARender needs a document name to work properly, a default document name should be set.\nBy default, the name will be set as \u0026ldquo;Document\u0026rdquo; but can be changed by modifying the following property :\narender-server-custom-filenet.properties (located in WEB-INF\\classes) arender.server.default.filenet.document.nameDocument /p>p>filenet/p>p>connector/p>, url: https:\/\/docs.arender.io\/v4\/connector\/filenetp8\/ }, { value: GET all conversion orders, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/conversion\/get-all-conversion-order\/, label: p>This API allows you to retrieve all conversion orders. The call to this API must be authenticated. The credentials are available in the application.yaml configuration file of the document-service-broker.\nrun-mode :username :usernamepassword :passwordAPI technical description Endpoint:\nGET \/conversions Response:\n Attribute Type Description conversionOrders List The conversion orders list. Examples Get all conversion orders The call below generates a request to retrieve all conversion orders./p>p>This API allows you to retrieve all conversion orders. The call to this API must be authenticated. The credentials are available in the application.yaml configuration file of the document-service-broker.\nrun-mode :username :usernamepassword :passwordAPI technical description Endpoint:\nGET \/conversions Response:\n Attribute Type Description conversionOrders List The conversion orders list. Examples Get all conversion orders The call below generates a request to retrieve all conversion orders. It is authenticated using the simple \u0026ldquo;Basic Authentication\u0026rdquo; method, considering the username: user and the password password.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/conversions\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Authorization: Basic dXNlcjpwYXNzd29yZA\u0026#39; Response sample:\n { \u0026#34;conversionOrderId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;string\u0026#34; }, \u0026#34;currentState\u0026#34;: \u0026#34;QUEUED\u0026#34;, \u0026#34;documentId\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;errorMessage\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;format\u0026#34;: \u0026#34;string\u0026#34;, \u0026#34;processedDate\u0026#34;: \u0026#34;2023-06-19T16:12:24.476Z\u0026#34;, \u0026#34;processingTime\u0026#34;: 0, \u0026#34;queuedDate\u0026#34;: \u0026#34;2023-06-19T16:12:24.476Z\u0026#34;, \u0026#34;queuedTime\u0026#34;: 0 } /p>p>tutorial/p>p>conversion/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/conversion\/get-all-conversion-order\/ }, { value: GET all transformation orders, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/get-all-transformation-order\/, label: p>This API allows you to retrieve all transformation orders.\nAPI technical description Endpoint :\nGET \/transformations Response :\n Attribute Type Description transformationOrders List The transformation orders list Examples Get all transformation orders The call below generates a request to retrieve transformation orders.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>This API allows you to retrieve all transformation orders.\nAPI technical description Endpoint :\nGET \/transformations Response :\n Attribute Type Description transformationOrders List The transformation orders list Examples Get all transformation orders The call below generates a request to retrieve transformation orders.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>tutorial/p>p>transformation/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/get-all-transformation-order\/ }, { value: Guides, path: https:\/\/docs.arender.io\/guides\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/guides\/ }, { value: IBM FileNet, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/filenet\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/filenet\/ }, { value: Kubernetes, path: https:\/\/docs.arender.io\/installation\/kubernetes\/, label: p>Warning We assume that you are familiar with Kubernetes.\nIf not, find more information on https:\/\/kubernetes.io\/docs\/home\/\n TL;DR $\u0026gt; helm repo add arondor https:\/\/artifactory.arondor.cloud\/artifactory\/ARenderHelmVirtual --username \u0026lt;your_user\u0026gt; --password \u0026lt;your_password\u0026gt; $\u0026gt; helm install my-release arondor\/arender Introduction ARender is ready for Kubernetes and you can easily deploy the entire stack with our Helm Chart.\n You can find out more about Helm technology here.\n The Chart is composed of two subchart: rendition and web-ui./p>p> Warning We assume that you are familiar with Kubernetes.\nIf not, find more information on https:\/\/kubernetes.io\/docs\/home\/\n TL;DR $\u0026gt; helm repo add arondor https:\/\/artifactory.arondor.cloud\/artifactory\/ARenderHelmVirtual --username \u0026lt;your_user\u0026gt; --password \u0026lt;your_password\u0026gt; $\u0026gt; helm install my-release arondor\/arender Introduction ARender is ready for Kubernetes and you can easily deploy the entire stack with our Helm Chart.\n You can find out more about Helm technology here.\n The Chart is composed of two subchart: rendition and web-ui. You can choose to use both or only one of these components by setting the following parameters:\n Component Property Value web-ui web-ui.enabled true or false rendition rendition.enabled true or false Prerequisites Access to Arondor Artifactory Kubernetes 1.14\u002b Helm 3.0\u002b PV provisionner support in the underlying infrastructure Kubernetes Metrics server installed (since ARender 4.3.0) Installing the Chart To install the chart with the release name my-release, run the following commands with your Artifactory credentials:\n$\u0026gt; helm repo add arondor https:\/\/artifactory.arondor.cloud\/artifactory\/ARenderHelmVirtual --username \u0026lt;your_user\u0026gt; --password \u0026lt;your_password\u0026gt; $\u0026gt; helm install my-release arondor\/arender Note You need to create a secret with your Arondor Artifactory credentials to be able to pull the default images.\nRead the page \u0026ldquo;Pull an Image from a Private Registry\u0026rdquo; on the official Kubernetes documentation to create the secret. Then, add it to the list of imagePullSecrets names by setting global.imagePullSecrets parameter.\n Uninstalling the Chart To uninstall\/delete the my-release release:\n$\u0026gt; helm delete my-release Parameters The configurable parameters are listed in the next pages.\nDefault values.yml file Download /p>, url: https:\/\/docs.arender.io\/installation\/kubernetes\/ }, { value: Legacy installation, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/m-files\/legacy-installation\/, label: p>Here we present the Web-UI installation in M-Files.\nIn our example, we deploy the Web-UI in an environment with:\n Operating system : Windows Server 2016 Datacenter M-Files A Tomcat9 server ARender Web-UI version 2023.16.0 Have a Functional Rendering. So just follow this documentation. Steps to Configure the Rendition Place the arondor-arender-mfiles-connector-1.0.5.jar under rendition-engine-package-2023.16.0\/modules\/RenditionEngine\/client_libs arondor-arender-mfiles-connector-1.0.5.jar Since 4.8.8, you will need to add under rendition-engine-package-2023.16.0\/modules\/RenditionEngine in application.properties the following property: authorized./p>p>Here we present the Web-UI installation in M-Files.\nIn our example, we deploy the Web-UI in an environment with:\n Operating system : Windows Server 2016 Datacenter M-Files A Tomcat9 server ARender Web-UI version 2023.16.0 Have a Functional Rendering. So just follow this documentation. Steps to Configure the Rendition Place the arondor-arender-mfiles-connector-1.0.5.jar under rendition-engine-package-2023.16.0\/modules\/RenditionEngine\/client_libs arondor-arender-mfiles-connector-1.0.5.jar Since 4.8.8, you will need to add under rendition-engine-package-2023.16.0\/modules\/RenditionEngine in application.properties the following property: authorized.urlshttp:\/\/localhost\/REST\/ application.properties Start the ARender Rendition server Steps to install the Web-UI Using the username and password previously provided (contact arender-sales@arondor.com if you want access), you can recover the version of the web application used in WAR format here.\nUse the Tomcat9 server. You just need to deploy your war (arondor-arender-hmi-2023.16.0.war into and to rename it arondor-arender-mfiles.war), now place it there :\n Program Files Apache Software Foundation Tomcat 9.0 webapps Copy the previously downloaded arondor-arender-mfiles-connector-1.0.5.jar connector, place it under arondor-arender-mfiles-2023.16.0\\WEB-INF\\lib.\nAfterwards :\n Place those files (below) under arondor-arender-mfiles-2023.16.0\\WEB-INF\\classes arender-editor-specific-integration.xml arender-server.properties Warning You need to edit different values of the arender-server.properties file depending on your M-Files vault configuration Steps to deploy ARender on M-Files Unzip ARenderApp.zip with 7zip ARenderApp.zip Open dashboard.html Change UI URL by the UI version you deploy (in this example it is a 4.8.7) Open your M-File safe Install the ARenderApp.zip in your vault apps. ARenderApp.zip ( M-Files Admin -\u0026gt; choose your safe -\u0026gt; right clic -\u0026gt; Applications -\u0026gt; Install )\n Log out of the vault and log back in to ensure changes are accounted for Steps to open a document with M-Files Restart the IIS server Start the Tomcat9 server Access M-Files under M:\\ Select your safe Drag and drop a document to open it with ARender /p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/m-files\/legacy-installation\/ }, { value: LTS 4.8 to LTS 2023, path: https:\/\/docs.arender.io\/guides\/upgrade\/4.8_to_2023.0\/, label: p>Welcome to the ARender migration documentation, where we will guide you through the process of upgrading from Version 4 to Version 2023 of ARender.\nThe primary focus of this update is on the UI aspect, transitioning from a WAR deployment in Version 4 to a Spring Boot deployment in Version 2023. Note that for the Rendition aspect, the installation process remains the same for both Versions 4 and 2023.\nIntroduction Version 2023 of ARender represents a significant step in the evolution of our product\u0026rsquo;s UI component, incorporating Spring Boot to enhance stability, performance, and deployment flexibility./p>p>Welcome to the ARender migration documentation, where we will guide you through the process of upgrading from Version 4 to Version 2023 of ARender.\nThe primary focus of this update is on the UI aspect, transitioning from a WAR deployment in Version 4 to a Spring Boot deployment in Version 2023. Note that for the Rendition aspect, the installation process remains the same for both Versions 4 and 2023.\nIntroduction Version 2023 of ARender represents a significant step in the evolution of our product\u0026rsquo;s UI component, incorporating Spring Boot to enhance stability, performance, and deployment flexibility. This documentation is designed to guide you through the process of migrating the UI component from Version 4 to Version 2023, with an emphasis on the necessary changes for Spring Boot deployment.\nPrerequisites Before starting the migration of ARender\u0026rsquo;s UI component, ensure you meet the following prerequisites:\n Basic knowledge of Spring Boot. The ARender UI version 2023 binary should be downloaded and ready to deploy. You can download it here. The ARender Rendition version 2023 binary should be downloaded and ready to install. You can download it here. Specific configurations from your ARender deployment in Version 4. Migrating from Version 4 to Version 2023 of ARender Migrating ARender Rendition Before installing ARender Rendition Version 2023, you need to perform the following steps to migrate your current Version 4 installation to Version 2023:\n Stop and Remove the Rendition Service Windows Linux $\u0026gt; sc stop ARenderRenditionService $\u0026gt; .\\removeService.bat If systemd is the system initialisation component:\n$\u0026gt; systemctl stop ARenderRenditionEngineService.service $\u0026gt; .\/removeService.sh If initd is the system initialisation component:\n$\u0026gt; service ARenderRenditionEngineService stop $\u0026gt; .\/removeService.sh Install Rendition Version 2023: Follow the detailed installation instructions in the official documentation, available here. This documentation will guide you through the Version 2023 installation process.\n Transfer Properties: Once ARender Rendition Version 2023 is installed, you will need to transfer the properties and configurations from your current Version 4 installation to the new one. To do this, refer to the list of property changes listed here. Ensure that all necessary configurations are correctly migrated to Version 2023.\n Configure ARender Rendition Version 2023: After transferring the properties, you can configure ARender Rendition Version 2023 according to your specific needs using the documentation here.\n Migrating ARender UI Version 4 to Version 2023 No change for IBM FileNet installation Please note that this documentation is not intended for configuring ARender within IBM FileNet. No changes are required for IBM FileNet configuration when transitioning from Version 4 to Version 2023 of ARender. Before installing ARender UI Version 2023, you need to perform the following steps to migrate your current Version 4 installation to Version 2023:\n Stop the Application Server Service: Ensure you stop the service of your current application server where ARender UI Version 4 is deployed. This will ensure a smooth transition to Version 2023.\n Install ARender WEB-UI Version 2023: Follow the detailed installation instructions for ARender UI Version 2023 in the official documentation, available here. This documentation will guide you through the Version 2023 installation process.\n Transfer Properties: Once ARender UI Version 2023 is installed, you will need to transfer the properties and configurations from your current Version 4 installation to the new one. To do this, refer to the list of property changes listed here to ensure that all necessary configurations are correctly migrated to Version 2023.\n Configuring ARender UI Version 2023: After transferring the properties, you can customize ARender UI Version 2023 according to your specific requirements by following the documentation available here.\n /p>p>upgrade/p>p>migrate/p>p>general/p>, url: https:\/\/docs.arender.io\/guides\/upgrade\/4.8_to_2023.0\/ }, { value: M-Files, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/m-files\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/m-files\/ }, { value: Monitoring, path: https:\/\/docs.arender.io\/v4\/operation\/service-monitoring\/, label: p>Service status The service responsible for documents rendition need to be watch over in order to supervise the rendition server.\nTo watch over it, you need to check the service\u0026rsquo;s status to check it\u0026rsquo;s state.\nBetween different operating system, normal behaviour identification status is different:\n Windows Linux $\u0026gt; sc query ARenderRenditionService If the service is correctly running this command will return: 4 RUNNING\n If systemd is the is the system initialisation component:/p>p>Service status The service responsible for documents rendition need to be watch over in order to supervise the rendition server.\nTo watch over it, you need to check the service\u0026rsquo;s status to check it\u0026rsquo;s state.\nBetween different operating system, normal behaviour identification status is different:\n Windows Linux $\u0026gt; sc query ARenderRenditionService If the service is correctly running this command will return: 4 RUNNING\n If systemd is the is the system initialisation component:\n$\u0026gt; systemctl status ARenderRenditionEngineService.service If initd is the is the system initialisation component:\n$\u0026gt; service ARenderRenditionEngineService status If the service is correctly running this command will return: STARTED\n Monitoring system Since version 4, ARender allows sending performance logs to ElasticSearch and viewing metrics on the Kibana dashboard. It is interesting to have the metric data of a service but we must not restrict ourselves to a single monitoring system. This is why we have integrated Micrometer into ARender in order to facilitate the sending of metrics to different monitoring systems.\nSo far we have only made these monitoring systems available: Prometheus, Elasticsearch and Datadog.\nWe will add later, other systems so as not to be limited to only those.\nConfiguration of the monitoring system Web-UI Server properties You will find below the list of default properties on the Web-UI Server side.\n From 4.8.0 to 4.8.4 From 4.8.5 to 4.8.6 Since 4.8.7 arender.server.metrics.tags.hostarender-hmi arender.server.metrics.tags.applicationarender # Set the registry name to use to export metrics # Possible value : prometheus, elastic, datadog # Default to elastic arender.server.meter.registry.nameelastic # Prometheus configurations arender.server.export.prometheus.enabledfalse arender.server.export.prometheus.descriptionsfalse arender.server.export.prometheus.frequency.amount1 arender.server.export.prometheus.frequency.unitMINUTES # Elastic configurations arender.server.export.elastic.enabledfalse arender.server.export.elastic.hosthttp:\/\/localhost:9200 arender.server.export.elastic.indexarender-micrometer-metrics arender.server.export.elastic.index-date-formatyyyy-MM arender.server.export.elastic.timestamp-field-name@timestamp arender.server.export.elastic.auto-create-indextrue arender.server.export.elastic.user-name arender.server.export.elastic.password arender.server.export.elastic.frequency.amount1 arender.server.export.elastic.frequency.unitMINUTES # Datadog configurations arender.server.export.datadog.enabledfalse arender.server.export.datadog.api-key arender.server.export.datadog.application-key arender.server.export.datadog.descriptionsfalse arender.server.export.datadog.host-taginstance arender.server.export.datadog.urihttps:\/\/app.datadoghq.com arender.server.export.datadog.frequency.amount1 arender.server.export.datadog.frequency.unitMINUTES arender.server.metrics.tags.hostarender-hmi arender.server.metrics.tags.applicationarender arender.server.metrics.process.enabledtrue arender.server.metrics.jvm.enabledtrue arender.server.metrics.system.enabledtrue # Set the registry name to use to export metrics # Possible value : prometheus, elastic, datadog, cloudwatch # Default to elastic arender.server.meter.registry.nameelastic # Prometheus configurations arender.server.export.prometheus.enabledfalse arender.server.export.prometheus.descriptionsfalse arender.server.export.prometheus.frequency.amount5 arender.server.export.prometheus.frequency.unitMINUTES # Elastic configurations arender.server.export.elastic.enabledfalse arender.server.export.elastic.hosthttp:\/\/localhost:9200 arender.server.export.elastic.indexarender-micrometer-metrics arender.server.export.elastic.index-date-formatyyyy-MM arender.server.export.elastic.timestamp-field-name@timestamp arender.server.export.elastic.auto-create-indextrue arender.server.export.elastic.user-name arender.server.export.elastic.password arender.server.export.elastic.frequency.amount5 arender.server.export.elastic.frequency.unitMINUTES # Datadog configurations arender.server.export.datadog.enabledfalse arender.server.export.datadog.api-key arender.server.export.datadog.application-key arender.server.export.datadog.descriptionsfalse arender.server.export.datadog.host-taginstance arender.server.export.datadog.urihttps:\/\/app.datadoghq.com arender.server.export.datadog.frequency.amount5 arender.server.export.datadog.frequency.unitMINUTES # CloudWatch configurations arender.server.export.cloudwatch.enabledfalse arender.server.export.cloudwatch.namespacearenderHMI arender.server.export.cloudwatch.regioneu-west-1 arender.server.export.cloudwatch.frequency.amount5 arender.server.export.cloudwatch.frequency.unitMINUTES arender.server.metrics.tags.hostarender-hmi arender.server.metrics.tags.applicationarender arender.server.metrics.process.enabledfalse arender.server.metrics.jvm.enabledfalse arender.server.metrics.system.enabledfalse # Set the registry name to use to export metrics # Possible value : prometheus, elastic, datadog, cloudwatch # Default to elastic arender.server.meter.registry.nameelastic # Prometheus configurations arender.server.export.prometheus.enabledfalse arender.server.export.prometheus.descriptionsfalse arender.server.export.prometheus.frequency.amount5 arender.server.export.prometheus.frequency.unitMINUTES # Elastic configurations arender.server.export.elastic.enabledfalse arender.server.export.elastic.hosthttp:\/\/localhost:9200 arender.server.export.elastic.indexarender-micrometer-metrics arender.server.export.elastic.index-date-formatyyyy-MM arender.server.export.elastic.timestamp-field-name@timestamp arender.server.export.elastic.auto-create-indextrue arender.server.export.elastic.user-name arender.server.export.elastic.password arender.server.export.elastic.frequency.amount5 arender.server.export.elastic.frequency.unitMINUTES # Datadog configurations arender.server.export.datadog.enabledfalse arender.server.export.datadog.api-key arender.server.export.datadog.application-key arender.server.export.datadog.descriptionsfalse arender.server.export.datadog.host-taginstance arender.server.export.datadog.urihttps:\/\/app.datadoghq.com arender.server.export.datadog.frequency.amount5 arender.server.export.datadog.frequency.unitMINUTES # CloudWatch configurations arender.server.export.cloudwatch.enabledfalse arender.server.export.cloudwatch.namespacearenderHMI arender.server.export.cloudwatch.regioneu-west-1 arender.server.export.cloudwatch.frequency.amount5 arender.server.export.cloudwatch.frequency.unitMINUTES Rendition properties Below is the list of default properties for all rendition services.\nFrom version 4.8.0 to 4.8.4 :\n Broker (DSB) TaskConversion (DCV) PDFBox (DTH) JNI (DRN) management.metrics.tags.hostarender-broker management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step1m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step1m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ management.metrics.tags.hostarender-taskconversion management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health,shutdown management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step1m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step1m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ management.metrics.tags.hostarender-pdfbox management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health,shutdown management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step1m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step1m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ management.metrics.tags.hostarender-jni management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health,shutdown management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step1m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step1m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ From version 4.8.5 to 4.8.6 :\n Broker (DSB) TaskConversion (DCV) PDFBox (DTH) JNI (DRN) management.metrics.tags.hostarender-broker management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 management.metrics.enable.tomcatfalse management.metrics.enable.httpfalse management.metrics.enable.logbackfalse management.metrics.enable.jvmtrue management.metrics.enable.processtrue management.metrics.enable.systemtrue # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step5m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step5m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ # CloudWatch monitoring system management.metrics.export.cloudwatch.enabledfalse management.metrics.export.cloudwatch.namespacebrokerNameSpace management.metrics.export.cloudwatch.step5m management.metrics.export.cloudwatch.batchSize20 management.metrics.export.cloudwatch.regioneu-west-1 management.metrics.tags.hostarender-taskconversion management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 management.metrics.enable.tomcatfalse management.metrics.enable.httpfalse management.metrics.enable.logbackfalse management.metrics.enable.jvmtrue management.metrics.enable.processtrue management.metrics.enable.systemtrue # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health,shutdown management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step5m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step5m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ # CloudWatch monitoring system management.metrics.export.cloudwatch.enabledfalse management.metrics.export.cloudwatch.namespaceconverterNameSpace management.metrics.export.cloudwatch.step5m management.metrics.export.cloudwatch.batchSize20 management.metrics.export.cloudwatch.regioneu-west-1 management.metrics.tags.hostarender-pdfbox management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 management.metrics.enable.tomcatfalse management.metrics.enable.httpfalse management.metrics.enable.logbackfalse management.metrics.enable.jvmtrue management.metrics.enable.processtrue management.metrics.enable.systemtrue # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health,shutdown management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step5m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step5m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ # CloudWatch monitoring system management.metrics.export.cloudwatch.enabledfalse management.metrics.export.cloudwatch.namespacepdfboxNameSpace management.metrics.export.cloudwatch.step5m management.metrics.export.cloudwatch.batchSize20 management.metrics.export.cloudwatch.regioneu-west-1 management.metrics.tags.hostarender-jni management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 management.metrics.enable.tomcatfalse management.metrics.enable.httpfalse management.metrics.enable.logbackfalse management.metrics.enable.jvmtrue management.metrics.enable.processtrue management.metrics.enable.systemtrue # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health,shutdown management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step5m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step5m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ # CloudWatch monitoring system management.metrics.export.cloudwatch.enabledfalse management.metrics.export.cloudwatch.namespacerendererNameSpace management.metrics.export.cloudwatch.step5m management.metrics.export.cloudwatch.batchSize20 management.metrics.export.cloudwatch.regioneu-west-1 Since 4.8.7 :\n Broker (DSB) TaskConversion (DCV) PDFBox (DTH) JNI (DRN) management.metrics.tags.hostarender-broker management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 management.metrics.enable.tomcatfalse management.metrics.enable.httpfalse management.metrics.enable.logbackfalse management.metrics.enable.jvmfalse management.metrics.enable.processfalse management.metrics.enable.systemfalse # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step5m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step5m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ # CloudWatch monitoring system management.metrics.export.cloudwatch.enabledfalse management.metrics.export.cloudwatch.namespacebrokerNameSpace management.metrics.export.cloudwatch.step5m management.metrics.export.cloudwatch.batchSize20 management.metrics.export.cloudwatch.regioneu-west-1 management.metrics.tags.hostarender-taskconversion management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 management.metrics.enable.tomcatfalse management.metrics.enable.httpfalse management.metrics.enable.logbackfalse management.metrics.enable.jvmfalse management.metrics.enable.processfalse management.metrics.enable.systemfalse # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health,shutdown management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step5m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step5m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ # CloudWatch monitoring system management.metrics.export.cloudwatch.enabledfalse management.metrics.export.cloudwatch.namespaceconverterNameSpace management.metrics.export.cloudwatch.step5m management.metrics.export.cloudwatch.batchSize20 management.metrics.export.cloudwatch.regioneu-west-1 management.metrics.tags.hostarender-pdfbox management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 management.metrics.enable.tomcatfalse management.metrics.enable.httpfalse management.metrics.enable.logbackfalse management.metrics.enable.jvmfalse management.metrics.enable.processfalse management.metrics.enable.systemfalse # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health,shutdown management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step5m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step5m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ # CloudWatch monitoring system management.metrics.export.cloudwatch.enabledfalse management.metrics.export.cloudwatch.namespacepdfboxNameSpace management.metrics.export.cloudwatch.step5m management.metrics.export.cloudwatch.batchSize20 management.metrics.export.cloudwatch.regioneu-west-1 management.metrics.tags.hostarender-jni management.metrics.tags.applicationarender management.metrics.distribution.percentiles-histogram.http.server.requeststrue management.metrics.distribution.sla.http.server.requests100ms, 400ms, 500ms, 2000ms management.metrics.distribution.percentiles.http.server.requests0.5, 0.9, 0.95, 0.99 management.metrics.enable.tomcatfalse management.metrics.enable.httpfalse management.metrics.enable.logbackfalse management.metrics.enable.jvmfalse management.metrics.enable.processfalse management.metrics.enable.systemfalse # Prometheus monitoring system management.endpoints.web.exposure.includeprometheus,metrics,health,shutdown management.endpoint.prometheus.enabledfalse management.endpoint.metrics.enabledtrue # ElasticSearch monitoring system management.metrics.export.elastic.enabledfalse management.metrics.export.elastic.step5m management.metrics.export.elastic.indexarender-micrometer-metrics management.metrics.export.elastic.hosthttp:\/\/localhost:9200 # DataDog monitoring system management.metrics.export.datadog.enabledfalse # Datadog API key management.metrics.export.datadog.api-keyYOUR_KEY # The step size to use (ie the reporting frequency). management.metrics.export.datadog.step5m management.metrics.export.datadog.urihttps:\/\/app.datadoghq.com\/ # CloudWatch monitoring system management.metrics.export.cloudwatch.enabledfalse management.metrics.export.cloudwatch.namespacerendererNameSpace management.metrics.export.cloudwatch.step5m management.metrics.export.cloudwatch.batchSize20 management.metrics.export.cloudwatch.regioneu-west-1 Configuring sent metrics ARender sends several different metrics to the monitoring system. To avoid overloading the system with dozens of metrics sent by ARender, properties are made available so you can enable\/disable the metrics and tags\/dimensions you need.\nWeb-UI Server properties From 4.8.0 to 4.8.4 From 4.8.5 to 4.8.6 Since 4.8.7 # ARender endpoint export metric arender.endpoint.metrics.export.has.document.enabledfalse arender.endpoint.metrics.export.bookmarks.enabledfalse arender.endpoint.metrics.export.document.layout.enabledtrue arender.endpoint.metrics.export.document.metadata.enabledfalse arender.endpoint.metrics.export.image.enabledtrue arender.endpoint.metrics.export.page.contents.enabledfalse arender.endpoint.metrics.export.search.enabledfalse arender.endpoint.metrics.export.advanced.search.enabledfalse arender.endpoint.metrics.export.load.document.enabledtrue arender.endpoint.metrics.export.evict.enabledfalse arender.endpoint.metrics.export.alter.document.enabledtrue arender.endpoint.metrics.export.document.accessor.enabledtrue arender.endpoint.metrics.export.annotation.enabledfalse arender.endpoint.metrics.export.compare.enabledtrue arender.endpoint.metrics.export.named.destinationfalse arender.endpoint.metrics.export.video.enabledtrue arender.endpoint.metrics.export.document.size.enabledtrue arender.endpoint.metrics.export.document.dpi.enabledfalse arender.endpoint.metrics.export.weather.enabledfalse arender.endpoint.metrics.export.readiness.enabledfalse arender.endpoint.metrics.export.signature.enabledfalse arender.endpoint.metrics.export.printable.pdf.enabledtrue # Whitelist tags to be exported, comma separated arender.endpoint.metrics.export.whitelist.tagshost,documentId,mimeType # ARender endpoint export metric arender.endpoint.metrics.export.has.document.enabledfalse arender.endpoint.metrics.export.bookmarks.enabledfalse arender.endpoint.metrics.export.document.layout.enabledtrue arender.endpoint.metrics.export.document.metadata.enabledfalse arender.endpoint.metrics.export.image.enabledtrue arender.endpoint.metrics.export.page.contents.enabledfalse arender.endpoint.metrics.export.search.enabledfalse arender.endpoint.metrics.export.advanced.search.enabledfalse arender.endpoint.metrics.export.load.document.enabledtrue arender.endpoint.metrics.export.evict.enabledfalse arender.endpoint.metrics.export.alter.document.enabledtrue arender.endpoint.metrics.export.document.accessor.enabledtrue arender.endpoint.metrics.export.annotation.enabledfalse arender.endpoint.metrics.export.compare.enabledtrue arender.endpoint.metrics.export.named.destinationfalse arender.endpoint.metrics.export.video.enabledtrue arender.endpoint.metrics.export.document.size.enabledtrue arender.endpoint.metrics.export.document.dpi.enabledfalse arender.endpoint.metrics.export.weather.enabledfalse arender.endpoint.metrics.export.readiness.enabledfalse arender.endpoint.metrics.export.signature.enabledfalse arender.endpoint.metrics.export.printable.pdf.enabledtrue # Whitelist tags to be exported, comma separated arender.endpoint.metrics.export.whitelist.tagshost,mimeType # Metric tool to time or count the request. Possible values : TIMER, COUNTER arender.metric.meter.toolCOUNTER # ARender endpoint export metric arender.endpoint.metrics.export.has.document.enabledfalse arender.endpoint.metrics.export.bookmarks.enabledfalse arender.endpoint.metrics.export.document.layout.enabledfalse arender.endpoint.metrics.export.document.metadata.enabledfalse arender.endpoint.metrics.export.image.enabledfalse arender.endpoint.metrics.export.page.contents.enabledfalse arender.endpoint.metrics.export.search.enabledfalse arender.endpoint.metrics.export.advanced.search.enabledfalse arender.endpoint.metrics.export.load.document.enabledfalse arender.endpoint.metrics.export.evict.enabledfalse arender.endpoint.metrics.export.alter.document.enabledfalse arender.endpoint.metrics.export.document.accessor.enabledfalse arender.endpoint.metrics.export.annotation.enabledfalse arender.endpoint.metrics.export.compare.enabledfalse arender.endpoint.metrics.export.named.destinationfalse arender.endpoint.metrics.export.video.enabledfalse arender.endpoint.metrics.export.document.size.enabledfalse arender.endpoint.metrics.export.document.dpi.enabledfalse arender.endpoint.metrics.export.weather.enabledfalse arender.endpoint.metrics.export.readiness.enabledfalse arender.endpoint.metrics.export.signature.enabledfalse arender.endpoint.metrics.export.printable.pdf.enabledfalse arender.endpoint.metrics.export.opening.time.enabledfalse arender.endpoint.metrics.export.url.parsing.enabledfalse # Whitelist tags to be exported, comma separated arender.endpoint.metrics.export.whitelist.tagshost,mimeType # Blacklist tags to be exported from system meter (jvm, process, http, tomcat, etc) arender.system.metrics.export.blacklist.tags # Metric tool to time or count the request. Possible values : TIMER, COUNTER arender.metric.meter.toolCOUNTER You will find below the list of metric names as well as the tags\/dimensions sent, which can be used to whitelist the tags to send.\nRendition properties You will find below the list of properties allowing to deactivate the metrics as well as to whitelist the tags to be sent.\nNote: These are the same properties for each of the rendition services.\n From 4.8.0 to 4.8.4 From 4.8.5 to 4.8.6 Since 4.8.7 # ARender endpoint metrics export arender.endpoint.metrics.export.has.document.enabledfalse arender.endpoint.metrics.export.bookmarks.enabledfalse arender.endpoint.metrics.export.document.layout.enabledtrue arender.endpoint.metrics.export.document.metadata.enabledfalse arender.endpoint.metrics.export.image.enabledtrue arender.endpoint.metrics.export.page.contents.enabledfalse arender.endpoint.metrics.export.search.enabledfalse arender.endpoint.metrics.export.advanced.search.enabledfalse arender.endpoint.metrics.export.load.document.enabledtrue arender.endpoint.metrics.export.evict.enabledfalse arender.endpoint.metrics.export.alter.document.enabledtrue arender.endpoint.metrics.export.document.accessor.enabledtrue arender.endpoint.metrics.export.annotation.enabledfalse arender.endpoint.metrics.export.compare.enabledtrue arender.endpoint.metrics.export.named.destinationfalse arender.endpoint.metrics.export.video.enabledtrue arender.endpoint.metrics.export.document.size.enabledtrue arender.endpoint.metrics.export.document.dpi.enabledfalse arender.endpoint.metrics.export.weather.enabledfalse arender.endpoint.metrics.export.readiness.enabledfalse arender.endpoint.metrics.export.signature.enabledfalse arender.endpoint.metrics.export.printable.pdf.enabledtrue arender.endpoint.metrics.export.convert.enabledtrue arender.endpoint.metrics.export.health.record.enabledfalse # Whitelist tags to be exported, comma separated arender.endpoint.metrics.export.whitelist.tagshost,documentId,mimeType # ARender endpoint metrics export arender.endpoint.metrics.export.has.document.enabledfalse arender.endpoint.metrics.export.bookmarks.enabledfalse arender.endpoint.metrics.export.document.layout.enabledtrue arender.endpoint.metrics.export.document.metadata.enabledfalse arender.endpoint.metrics.export.image.enabledtrue arender.endpoint.metrics.export.page.contents.enabledfalse arender.endpoint.metrics.export.search.enabledfalse arender.endpoint.metrics.export.advanced.search.enabledfalse arender.endpoint.metrics.export.load.document.enabledtrue arender.endpoint.metrics.export.evict.enabledfalse arender.endpoint.metrics.export.alter.document.enabledtrue arender.endpoint.metrics.export.document.accessor.enabledtrue arender.endpoint.metrics.export.annotation.enabledfalse arender.endpoint.metrics.export.compare.enabledtrue arender.endpoint.metrics.export.named.destinationfalse arender.endpoint.metrics.export.video.enabledtrue arender.endpoint.metrics.export.document.size.enabledtrue arender.endpoint.metrics.export.document.dpi.enabledfalse arender.endpoint.metrics.export.weather.enabledfalse arender.endpoint.metrics.export.readiness.enabledfalse arender.endpoint.metrics.export.signature.enabledfalse arender.endpoint.metrics.export.printable.pdf.enabledtrue arender.endpoint.metrics.export.convert.enabledtrue arender.endpoint.metrics.export.health.record.enabledfalse # Whitelist tags to be exported, comma separated arender.endpoint.metrics.export.whitelist.tagshost,mimeType arender.endpoint.metrics.export.correlation.id.tag.enabledfalse # Metric tool to time or count the request. Possible values : TIMER, COUNTER arender.metric.meter.toolCOUNTER # ARender endpoint metrics export arender.endpoint.metrics.export.has.document.enabledfalse arender.endpoint.metrics.export.bookmarks.enabledfalse arender.endpoint.metrics.export.document.layout.enabledfalse arender.endpoint.metrics.export.document.metadata.enabledfalse arender.endpoint.metrics.export.image.enabledfalse arender.endpoint.metrics.export.page.contents.enabledfalse arender.endpoint.metrics.export.search.enabledfalse arender.endpoint.metrics.export.advanced.search.enabledfalse arender.endpoint.metrics.export.load.document.enabledfalse arender.endpoint.metrics.export.evict.enabledfalse arender.endpoint.metrics.export.alter.document.enabledfalse arender.endpoint.metrics.export.document.accessor.enabledfalse arender.endpoint.metrics.export.annotation.enabledfalse arender.endpoint.metrics.export.compare.enabledfalse arender.endpoint.metrics.export.named.destinationfalse arender.endpoint.metrics.export.video.enabledfalse arender.endpoint.metrics.export.document.size.enabledfalse arender.endpoint.metrics.export.document.dpi.enabledfalse arender.endpoint.metrics.export.weather.enabledfalse arender.endpoint.metrics.export.readiness.enabledfalse arender.endpoint.metrics.export.signature.enabledfalse arender.endpoint.metrics.export.printable.pdf.enabledfalse arender.endpoint.metrics.export.convert.enabledfalse arender.endpoint.metrics.export.health.record.enabledfalse # Whitelist tags to be exported, comma separated arender.endpoint.metrics.export.whitelist.tagshost,mimeType arender.endpoint.metrics.export.correlation.id.tag.enabledfalse # Metric tool to time or count the request. Possible values : TIMER, COUNTER arender.metric.meter.toolCOUNTER Cache metrics Since 4.8.15, ARender also monitors its internal cache usage (Hazelcast\/Ehcache).\nTo enable the export of cache metrics, some configurations are needed.\nFor Rendition component, you will need to enable the following property in the Broker microservice:\napplication.properties management.metrics.export.hazelcast.enabledtrue For the Web-UI component, you will need to enable the following property:\narender-server-custom-vanilla.properties arender.server.cache.export.enabledtrue List of all metrics Below is the list of all metrics sent to the configured monitoring system :\n Name Tags \/ Dimensions arender.notify.opening.times (from 4.8.0 to 4.8.5) documentId, moduleLoadingTime, documentLoadingTime arender.document.opening (from 4.8.5) documentId, mimeType arender.document.opening.time (from 4.8.5) documentId, mimeType arender.application.opening.time (from 4.8.5) documentId, mimeType arender.document.has documentId arender.document.evict documentId arender.document.accessor documentId, selector arender.document.accessor.content documentId, selector arender.document.accessor.content.raw documentId, selector arender.document.accessor.load arender.document.accessor.load.url arender.document.load arender.document.bookmarks documentId arender.document.signatures documentId arender.document.layout documentId, mimeType, pageCount, documentWidth, documentHeight, duration arender.document.layout.progressive.update documentId arender.document.metadata documentId arender.document.page.contents documentId, page arender.document.image documentId, page, pageDescription, pageWidth, pageRotation arender.document.image.svg documentId, page, pageDescription, pageWidth, pageRotation arender.document.alter arender.document.search.page documentId, page arender.document.search.pages documentId arender.document.advanced.search documentId arender.document.advanced.search.page documentId, page arender.document.start.partial.loading documentId, mimeType, documentTitle, contentSize arender.document.continue.partial.loading documentId, offset, finished arender.document.compare documentIdLeft, documentIdRight arender.document.compare.image documentIdLeft, documentIdRight arender.document.named.destinations documentId arender.document.create.printable.pdf documentId arender.document.upload documentId, mimeType, documentTitle arender.document.size documentId, selector arender.document.page.dpi documentId, page arender.annotation.accessor documentId arender.annotation.extract documentId, formatType arender.annotation.convert.stamps documentId arender.annotation.generate documentId, formatType arender.annotation.generate.pdf.with.fdf.annotations documentId arender.annotation.search.text documentId arender.annotation.creation.policy documentId arender.annotation.update documentId arender.annotation.delete documentId arender.annotation.create documentId arender.annotation.get documentId arender.video.chunk documentId, start, length arender.weather arender.health.readiness All these properties have common tags\/dimensions: exceptionClass, exceptionMessage, host and correlationId. The exceptionClass and exceptionMessage tags are only added to metrics if they are not empty or null.\nExample Prometheus To activate the sending of metrics on the Web-UI side, all you have to do is first indicate the desired registry among the 3 possible registries: prometheus, elastic and datadog. Then activate the export on the desired monitoring system.\nHere we will use Prometheus.\narender-serveur-default.properties arender.server.meter.registry.nameprometheus arender.server.export.prometheus.enabledtrue Then, it will be necessary to indicate in the configuration of the Prometheus server the end point on which it must recover the metrics. Prometheus metrics on the Web-UI side are exposed on the \/arendergwt\/prometheus endpoint as well as the host\/port on which ARender Web-UI is deployed. You should have something similar to this configuration below:\n\u0026lt;PROMETHEUS_SERVER_PATH\u0026gt;\/prometheus.yaml # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global \u0026#39;evaluation_interval\u0026#39;. rule_files: # - \u0026#34;first_rules.yml\u0026#34; # - \u0026#34;second_rules.yml\u0026#34; # A scrape configuration containing exactly one endpoint to scrape: # Here it\u0026#39;s Prometheus itself. scrape_configs: # The job name is added as a label `job\u0026lt;job_name\u0026gt;` to any timeseries scraped from this config. - job_name: \u0026#34;prometheus\u0026#34; # metrics_path defaults to \u0026#39;\/metrics\u0026#39; # scheme defaults to \u0026#39;http\u0026#39;. metrics_path: \u0026#39;\/arendergwt\/prometheus\u0026#39; scrape_interval: 5s static_configs: - targets: \u0026#34;localhost:8080\u0026#34; In addition, for the rendition part, all you have to do is activate the export of metrics to Prometheus on each of the rendition services.\napplication.properties management.endpoint.prometheus.enabledtrue In the same way as the Web-UI part, it is also necessary to indicate the end point on which the metrics are exposed. On the rendition side, this is exposed on the \/actuator\/prometheus endpoint.\n Broker (DSB) TaskConversion (DCV) PDFBox (DTH) JNI (DRN) # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global \u0026#39;evaluation_interval\u0026#39;. rule_files: # - \u0026#34;first_rules.yml\u0026#34; # - \u0026#34;second_rules.yml\u0026#34; # A scrape configuration containing exactly one endpoint to scrape: # Here it\u0026#39;s Prometheus itself. scrape_configs: # The job name is added as a label `job\u0026lt;job_name\u0026gt;` to any timeseries scraped from this config. - job_name: \u0026#34;prometheus\u0026#34; # metrics_path defaults to \u0026#39;\/metrics\u0026#39; # scheme defaults to \u0026#39;http\u0026#39;. metrics_path: \u0026#39;\/actuator\/prometheus\u0026#39; scrape_interval: 5s static_configs: - targets: \u0026#34;localhost:8761\u0026#34; # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global \u0026#39;evaluation_interval\u0026#39;. rule_files: # - \u0026#34;first_rules.yml\u0026#34; # - \u0026#34;second_rules.yml\u0026#34; # A scrape configuration containing exactly one endpoint to scrape: # Here it\u0026#39;s Prometheus itself. scrape_configs: # The job name is added as a label `job\u0026lt;job_name\u0026gt;` to any timeseries scraped from this config. - job_name: \u0026#34;prometheus\u0026#34; # metrics_path defaults to \u0026#39;\/metrics\u0026#39; # scheme defaults to \u0026#39;http\u0026#39;. metrics_path: \u0026#39;\/actuator\/prometheus\u0026#39; scrape_interval: 5s static_configs: - targets: \u0026#34;localhost:19999\u0026#34; # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global \u0026#39;evaluation_interval\u0026#39;. rule_files: # - \u0026#34;first_rules.yml\u0026#34; # - \u0026#34;second_rules.yml\u0026#34; # A scrape configuration containing exactly one endpoint to scrape: # Here it\u0026#39;s Prometheus itself. scrape_configs: # The job name is added as a label `job\u0026lt;job_name\u0026gt;` to any timeseries scraped from this config. - job_name: \u0026#34;prometheus\u0026#34; # metrics_path defaults to \u0026#39;\/metrics\u0026#39; # scheme defaults to \u0026#39;http\u0026#39;. metrics_path: \u0026#39;\/actuator\/prometheus\u0026#39; scrape_interval: 5s static_configs: - targets: \u0026#34;localhost:8899\u0026#34; # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global \u0026#39;evaluation_interval\u0026#39;. rule_files: # - \u0026#34;first_rules.yml\u0026#34; # - \u0026#34;second_rules.yml\u0026#34; # A scrape configuration containing exactly one endpoint to scrape: # Here it\u0026#39;s Prometheus itself. scrape_configs: # The job name is added as a label `job\u0026lt;job_name\u0026gt;` to any timeseries scraped from this config. - job_name: \u0026#34;prometheus\u0026#34; # metrics_path defaults to \u0026#39;\/metrics\u0026#39; # scheme defaults to \u0026#39;http\u0026#39;. metrics_path: \u0026#39;\/actuator\/prometheus\u0026#39; scrape_interval: 5s static_configs: - targets: \u0026#34;localhost:9091\u0026#34; /p>p>exploitation/p>p>monitoring/p>, url: https:\/\/docs.arender.io\/v4\/operation\/service-monitoring\/ }, { value: New installation, path: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/m-files\/new-installation\/, label: p>Here we present the Web-UI installation in M-Files.\nIn our example, we deploy the Web-UI in an environment with:\n Operating system : Windows Server 2016 Datacenter M-Files A Tomcat9 server ARender Web-UI version 2023.16.0 Have a Functional Rendering. So just follow this documentation. Steps to Configure the Rendition Place the arondor-arender-mfiles-connector-1.0.5.jar under rendition-engine-package-2023.16.0\/modules\/RenditionEngine\/client_libs arondor-arender-mfiles-connector-1.0.5.jar Since 4.8.8, you will need to add under rendition-engine-package-2023.16.0\/modules\/RenditionEngine in application.properties the following property: authorized./p>p>Here we present the Web-UI installation in M-Files.\nIn our example, we deploy the Web-UI in an environment with:\n Operating system : Windows Server 2016 Datacenter M-Files A Tomcat9 server ARender Web-UI version 2023.16.0 Have a Functional Rendering. So just follow this documentation. Steps to Configure the Rendition Place the arondor-arender-mfiles-connector-1.0.5.jar under rendition-engine-package-2023.16.0\/modules\/RenditionEngine\/client_libs arondor-arender-mfiles-connector-1.0.5.jar Since 4.8.8, you will need to add under rendition-engine-package-2023.16.0\/modules\/RenditionEngine in application.properties the following property: authorized.urlshttp:\/\/localhost\/REST\/ application.properties Start the ARender Rendition server Steps to install the Web-UI Using the username and password previously provided (contact arender-sales@arondor.com if you want access), you can recover the version of the web application used in WAR format here.\nUse the Tomcat9 server. You just need to deploy your war (arondor-arender-hmi-2023.16.0.war into and to rename it arondor-arender-mfiles.war), now place it there :\n Program Files Apache Software Foundation Tomcat 9.0 webapps Copy the previously downloaded arondor-arender-mfiles-connector-1.0.5.jar connector, place it under arondor-arender-mfiles-2023.16.0\\WEB-INF\\lib.\nAfterwards :\n Place those files (below) under arondor-arender-mfiles-2023.16.0\\WEB-INF\\classes arender-editor-specific-integration.xml arender-server.properties Warning You need to edit different values of the arender-server.properties file depending on your M-Files vault configuration Steps to deploy ARender on M-Files To install ARender on M-Files vault, follow the steps below:\n Download VAF_MFF_ArenderConnector: VAF_MFF_ArenderConnector_22.12.3.mfappx Run M-Files Admin console Right click on the desired vault and select Applications Click Install\u0026hellip; Select the previously downloaded VAF_MFF_ArenderConnector_22.12.3.mfappx file Click Yes if this window shows up The application is now installed Click Close Click Yes if this window shows up Now that we have installed ARender on M-Files vault, we can start configuring the application.\nSteps to configure ARender on M-Files VAF_MFF_ArenderConnector uses a JSON configuration file. You can manage it through the graphic interface within the M-Files Admin client.\n Run M-Files Admin client Click on the arrow next to your vault Click on Configurations for your vault Select Other Applications then select VAF_MFF_ArenderConnector. The dashboard appears Click on Configuration tab Fill in every configuration properties. When clicking the i icon, you will get a help showing up. Once you have configured, click Save Steps to open a document with M-Files Restart the IIS server Start the Tomcat9 server Access M-Files under M:\\ Select your safe Drag and drop a document to open it with ARender /p>, url: https:\/\/docs.arender.io\/installation\/standalone\/web-ui\/m-files\/new-installation\/ }, { value: Notifications, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/notifications\/, label: p>Change notifications Objet: getARenderJS() function Description Arguments registerNotifyLogEvent(hook) Trigger a hook function when a notification is displayed hook: The hook function to call The following functions allow to alter the received notification event caught by the hook function.\n Object: getARenderJS() Function Description Argument setLogEventMessage(event, message) Change the notification message by \u0026ldquo;message\u0026rdquo; event: The notification event/p>p>Change notifications Objet: getARenderJS() function Description Arguments registerNotifyLogEvent(hook) Trigger a hook function when a notification is displayed hook: The hook function to call The following functions allow to alter the received notification event caught by the hook function.\n Object: getARenderJS() Function Description Argument setLogEventMessage(event, message) Change the notification message by \u0026ldquo;message\u0026rdquo; event: The notification event\nmessage: the new message\n setLogEventDisplay(event, boolean) Allow the notification display event: The notification event\nboolean: Display the notification if true, hide it if false\n setLogEventLevel(event, level) Change the notification level event: The notification event\nlevel: the new level (\u0026ldquo;SEVERE\u0026rdquo;, \u0026ldquo;WARNING\u0026rdquo;, \u0026ldquo;INFO\u0026rdquo;, \u0026ldquo;CONFIG\u0026rdquo;, \u0026ldquo;FINE\u0026rdquo;, \u0026ldquo;FINER\u0026rdquo;, ou \u0026ldquo;FINEST\u0026rdquo;)\n scripts\/example.js getARenderJS().registerNotifyLogEvent(function(event, level, message){ getARenderJS().setLogEventMessage(event, \u0026#34;Error: \u0026#34; \u002b message); getARenderJS().setLogEventLevel(event, \u0026#34;SEVERE\u0026#34;); getARenderJS().setLogEventDisplay(event, true); }); /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/notifications\/ }, { value: Notifications, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/notifications\/, label: p>Change notifications Objet: getARenderJS() function Description Arguments registerNotifyLogEvent(hook) Trigger a hook function when a notification is displayed hook: The hook function to call The following functions allow to alterate the received notification event caught by the hook function.\n Object: getARenderJS() Function Description Argument setLogEventMessage(event, message) Change the notification message by \u0026ldquo;message\u0026rdquo; event: The notification event/p>p>Change notifications Objet: getARenderJS() function Description Arguments registerNotifyLogEvent(hook) Trigger a hook function when a notification is displayed hook: The hook function to call The following functions allow to alterate the received notification event caught by the hook function.\n Object: getARenderJS() Function Description Argument setLogEventMessage(event, message) Change the notification message by \u0026ldquo;message\u0026rdquo; event: The notification event\nmessage: the new message\n setLogEventDisplay(event, boolean) Allow the notification display event: The notification event\nboolean: Display the notification if true, hide it if false\n setLogEventLevel(event, level) Change the notification level event: The notification event\nlevel: the new level (\u0026ldquo;SEVERE\u0026rdquo;, \u0026ldquo;WARNING\u0026rdquo;, \u0026ldquo;INFO\u0026rdquo;, \u0026ldquo;CONFIG\u0026rdquo;, \u0026ldquo;FINE\u0026rdquo;, \u0026ldquo;FINER\u0026rdquo;, ou \u0026ldquo;FINEST\u0026rdquo;)\n scripts\/example.js getARenderJS().registerNotifyLogEvent(function(event, level, message){ getARenderJS().setLogEventMessage(event, \u0026#34;Error: \u0026#34; \u002b message); getARenderJS().setLogEventLevel(event, \u0026#34;SEVERE\u0026#34;); getARenderJS().setLogEventDisplay(event, true); }); /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/notifications\/ }, { value: Perform a search, path: https:\/\/docs.arender.io\/development\/framework\/performasearch\/, label: p>The JavaScript API functions described here allow you to launch a textual search on an open document, to highlight and position yourself on specific text elements on the ARender viewer.\nTo use them from an application other than ARender, simply make the call from the iframe\u0026rsquo;s window object. The code to access this object will vary slightly depending on the framework used. Below is an example of a simple search for the term \u0026ldquo;ARender./p>p>The JavaScript API functions described here allow you to launch a textual search on an open document, to highlight and position yourself on specific text elements on the ARender viewer.\nTo use them from an application other than ARender, simply make the call from the iframe\u0026rsquo;s window object. The code to access this object will vary slightly depending on the framework used. Below is an example of a simple search for the term \u0026ldquo;ARender.\u0026rdquo; To navigate to the next result, you can call the same function again. For more information on simple search and advanced search usage, refer to the documentation mentioned above.\n React Angular VueJs Svelte JavaScript const iframeWindow iframeRef.current.contentWindow iframeWindow.getARenderJS().getSearchJSAPI().askSearchTextNext(\u0026#34;arender\u0026#34;) const iframeWindow this.iframeRef.nativeElement.contentWindow; iframeWindow.getARenderJS().getSearchJSAPI().askSearchTextNext(\u0026#34;arender\u0026#34;) \/** * Returns the ARenderJS object from the iframe. * Throws an error if the iframe is not accessible or not loaded. *\/ function getARenderJS() { const iframeWindow iframeRef.value?.contentWindow ? iframeRef.value.contentWindow : undefined if (iframeWindow) { return iframeWindow.getARenderJS() } throw new Error(\u0026#34;The iframe is not accessible or not loaded.\u0026#34;) } function askSearchTextNext(text) { getARenderJS() .getSearchJSAPI() .askSearchTextNext(text) } \/** * Expose the `askSearchTextNext` function to the parent component. *\/ defineExpose({ askSearchTextNext }) \/** * Returns the ARenderJS object from the iframe. * Throws an error if the iframe is not accessible or not loaded. *\/ function getARenderJS() { const iframeWindow iframeRef?.contentWindow ? iframeRef.contentWindow : undefined if (iframeWindow) { return iframeWindow.getARenderJS() } throw new Error(\u0026#34;The iframe is not accessible or not loaded.\u0026#34;) } \/** * Asks ARender to search for the next occurrence of the given text. * @param text The text to search for. *\/ export function askSearchTextNext(text) { getARenderJS() .getSearchJSAPI() .askSearchTextNext(text) } function search() { const iframe document.getElementById(\u0026#39;arender-iframe\u0026#39;); if (iframe \u0026amp;\u0026amp; iframe.contentWindow) { const iframeWindow iframe.contentWindow; iframeWindow.getARenderJS().getSearchJSAPI().askSearchTextNext(\u0026#34;arender\u0026#34;); } else { console.error(\u0026#39;Iframe or contentWindow is not accessible.\u0026#39;); } } /p>p>search/p>p>advancedSearch/p>p>getSearchJSAPI/p>, url: https:\/\/docs.arender.io\/development\/framework\/performasearch\/ }, { value: POST Document Layout, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/upload-document-layout\/, label: p>This API allows you to upload the layout information for a document.\nAPI Description Endpoint:\nPOST \/documents\/layout Request body:\n Parameter Description documentLayout The layout information of the document Example Upload Document Layout The following example demonstrates how to upload the layout information for a document \u0026ldquo;document_layout.json\u0026rdquo;.\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/layout\u0026#39; \\ -H \u0026#39;accept: application\/json\u0026#39; \\ -H \u0026#39;Content-Type: application\/json\u0026#39; \\ --data-binary \u0026#39;@document_layout./p>p>This API allows you to upload the layout information for a document.\nAPI Description Endpoint:\nPOST \/documents\/layout Request body:\n Parameter Description documentLayout The layout information of the document Example Upload Document Layout The following example demonstrates how to upload the layout information for a document \u0026ldquo;document_layout.json\u0026rdquo;.\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/layout\u0026#39; \\ -H \u0026#39;accept: application\/json\u0026#39; \\ -H \u0026#39;Content-Type: application\/json\u0026#39; \\ --data-binary \u0026#39;@document_layout.json\u0026#39; /p>p>upload document layout/p>p>document layout/p>p>upload layout/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/upload-document-layout\/ }, { value: Supported File Format, path: https:\/\/docs.arender.io\/what-is-arender\/file-format-support\/, label: p>PDF Format Extension MIME TYPE Portable Document Format (1.x to 2.0) .pdf application\/pdf Portable Document Format Archive PDF\/A-1, PDF\/A-2, PDF\/A-3 .pdf application\/pdf Portable Document Format Portfolio .pdf application\/pdf Form Data Format (FDF) .fdf application\/vnd.fdf XML Forms Data Format (XFDF) .xml text\/xml Images Format Extension MIME TYPE Portable Network Graphics ./p>p>PDF Format Extension MIME TYPE Portable Document Format (1.x to 2.0) .pdf application\/pdf Portable Document Format Archive PDF\/A-1, PDF\/A-2, PDF\/A-3 .pdf application\/pdf Portable Document Format Portfolio .pdf application\/pdf Form Data Format (FDF) .fdf application\/vnd.fdf XML Forms Data Format (XFDF) .xml text\/xml Images Format Extension MIME TYPE Portable Network Graphics .png image\/png Joint Photographic Experts Group .jpeg image\/jpeg Tag Image File Format .tiff image\/tiff Graphics Interchange Format .gif image\/gif Bitmap .bmp image\/x-ms-bmp,image\/x-bmp, image\/x-portable-bitmap Photoshop Document .psd image\/vnd.adobe.photoshop EPS Image .eps image\/x-eps PostScript files .png application\/postscript DICOM .dicom application\/dicom Picture Exchange .pcx application\/pcx,application\/x-pcx,image\/pcx,image\/x-pc-paintbrush,image\/x-pcx,zz-application\/zz-winassoc-pcx JPEG 2000 .jp2 image\/jp2 High Efficiency Image File Format .heif image\/heif WEBP .webp image\/webp EMAILS Format Extension MIME TYPE MSG .msg application\/vnd.ms-outlook EML .eml message\/rfc822,application\/mbox HTML Format Extension MIME TYPE HTML .html text\/html Office Text Format Extension MIME TYPE Microsoft Word .doc,.dot application\/msword Microsoft Office Open XML .docx, .dotx, .docm, .dotm application\/vnd.openxmlformats-officedocument.wordprocessingml.document, application\/vnd.openxmlformats-officedocument.wordprocessingml.template, application\/vnd.ms-word.document.macroEnabled.12, application\/vnd.ms-word.template.macroEnabled.12 Rich Text Format .rtf text\/rtf OpenDocument Text .odt, .odm, .ott application\/vnd.oasis.opendocument.text Office Presentation Format Extension MIME TYPE Microsoft PowerPoint .ppt,.pot,.pps, .ppa application\/vnd.ms-powerpoint Microsoft PowerPoint Open XML .pptx, .potx, .pptm, .potm application\/vnd.openxmlformats-officedocument.presentationml.presentation, application\/vnd.openxmlformats-officedocument.presentationml.template, application\/vnd.ms-powerpoint.presentation.macroEnabled.12, application\/vnd.ms-powerpoint.template.macroEnabled.12 OpenDocument Presentation .odp application\/vnd.oasis.opendocument.presentation Office Excel Format Extension MIME TYPE Microsoft Excel .xls,.xlt, .xla application\/vnd.ms-excel, application\/x-ms-excel Microsoft PowerPoint Open XML .xlsx, .xslm, .xltx, .xltm application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application\/vnd.ms-excel.sheet.macroEnabled.12, application\/vnd.openxmlformats-officedocument.spreadsheetml.template, application\/vnd.ms-excel.template.macroEnabled.12 OpenDocument Spreadsheet .ods application\/vnd.oasis.opendocument.spreadsheet Office Visio Format Extension MIME TYPE Microsoft Visio .vsd application\/visio,application\/x-visio, application\/vsd, application\/x-vsd, image\/x-vsd, zz-application\/zz-winassoc-vsd Microsoft PowerPoint Open XML .vsdx application\/vnd.visio, application\/vnd.ms-visio, application\/visio.drawing OpenDocument Draw .odg application\/vnd.oasis.opendocument.graphics Microsoft Project Format Extension MIME TYPE Microsoft Project .mpp application\/vnd.ms-project Microsoft Publisher Format Extension MIME TYPE Microsoft Project .pub application\/x-mspublisher,application\/vnd.ms-publisher Text Format Extension MIME TYPE Plain text .txt text\/plain Video Format Extension MIME TYPE MP4 .mp4 video\/mp4 QuickTime .mov, .qt video\/quicktime 3GPP .3gpp video\/3gpp FLV .flv video\/x-flv MPEG .mpeg video\/mpeg A\/V Interleave .avi video\/x-msvideo Matroska .mkv video\/x-matroska Windows Media Video .wmv video\/x-ms-asf Matroska .mkv video\/x-matroska MPEG-2 .mp2p video\/mp2p Audio Format Extension MIME TYPE MP3 .mp3 audio\/mp3 Waveform .wav audio\/x-wav Moving Picture Experts Group .mpeg audio\/mpeg, audio\/x-mpeg Audio Interchange File Format .aiff audio\/x-aiff Audio MP4 .wav audio\/mp4 AFP Format Extension MIME TYPE Advanced Function Presentation (AFP) .afp, .mda application\/x-afp AutoCAD Format Extension MIME TYPE AutoCAD DWG (¹) .dwg image\/vnd.dwg, image\/x-dwg, image\/x-dwt, image\/vnd.dwt, image\/x-vnd.dwt AutoCAD DXF (File format 2013 and earlier) .dxf image\/vnd.dxf, image\/x-dxf Autodesk Design Web Format (DWF) .dwf model\/vnd.dwf, image\/x-dwf MicroStation V8 DGN and V7 DGN .dgn image\/vnd.dgn, image\/x-vnd.dgn Industry Foundation Classes (IFC) versions 2x3 and 4 .ifc application\/x-step (¹) AutoCAD DWG supported list DWG 2018 (AC1032) AutoCAD 2018\/2019\/2020\/2021\nDWG 2013 (AC1027) AutoCAD 2013\/2014\/2015\/2016\/2017\nDWG 2010 (AC1024) AutoCAD 2010\/2011\/2012\nDWG 2007 (AC1021) AutoCAD 2007\/2008\/2009\nDWG 2004 (AC1018) AutoCAD 2004\/2005\/2006\nDWG 2000 (AC1015) AutoCAD 2000\/2000i\/2002\nDWG R14 (AC1014) AutoCAD Release 14\nDWG R13 (AC1012) AutoCAD Release 13\nDWG R11\/12 (AC1009) AutoCAD Release 11\/12\n Archives Format Extension MIME TYPE ZIP .zip application\/zip,application\/x-zip,application\/x-zip-compressed 7-Zip .7z application\/x-7z-compressed Java archive .jar application\/java-archive Visit Card Format Extension MIME TYPE vCard (2.1 \u0026amp; 3.0) .vcf text\/vcard /p>, url: https:\/\/docs.arender.io\/what-is-arender\/file-format-support\/ }, { value: Upgrade, path: https:\/\/docs.arender.io\/guides\/upgrade\/, label: p>/p>p>/p>p>upgrade/p>p>migrate/p>p>general/p>, url: https:\/\/docs.arender.io\/guides\/upgrade\/ }, { value: Visual, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/visual\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/visual\/ }, { value: Add a highlight notification, path: https:\/\/docs.arender.io\/development\/framework\/addahighlightnotification\/, label: p>The JavaScript API allows you to set up subscriptions to receive events during various actions on ARender (e.g., adding\/removing notifications, rotating a page, or clicking on a hyperlink). This information is accessible in the documentation \nIt is also possible to create highlight-type annotations directly from the host application, without doing so manually in ARender, using the addAnnotation function of the JavaScript API by following these guidelines ./p>p>The JavaScript API allows you to set up subscriptions to receive events during various actions on ARender (e.g., adding\/removing notifications, rotating a page, or clicking on a hyperlink). This information is accessible in the documentation \nIt is also possible to create highlight-type annotations directly from the host application, without doing so manually in ARender, using the addAnnotation function of the JavaScript API by following these guidelines .\nTo use this function from an application other than ARender, simply replace the window object in the documentation with the appropriate object based on the framework being used.\n React Angular VueJs Svelte JavaScript const iframeWindow iframeRef.current.contentWindow \/* * Add an highlight annotation * * @param {string} documentId - ID of the document * @param {string} type - the annotation type (only \u0026#34;Highlight\u0026#34; is supported) * @param {integer} x - the annotation x coordinate * @param {integer} y - the annotation y coordinate * @param {integer} w - the annotation width * @param {integer} h - the annotation height * @param {page} page - the annotation page * @param {string} color - the annotation color * @param {float} opacity - the annotation opacity *\/ var documentId iframeWindow.getARenderJS().getCurrentDocumentId(); var type \u0026#34;Highlight\u0026#34;; var x 50; var y 150; var w 100; var h 50; var page 0; var color \u0026#34;#FF0000\u0026#34;; var opacity 0.4; iframeWindow.getARenderJS().getAnnotationJSAPI().addAnnotation( documentId, type, x, y, w, h, page, color, opacity); const iframeWindow this.iframeRef.nativeElement.contentWindow; \/* * Add an highlight annotation * * @param {string} documentId - ID of the document * @param {string} type - the annotation type (only \u0026#34;Highlight\u0026#34; is supported) * @param {integer} x - the annotation x coordinate * @param {integer} y - the annotation y coordinate * @param {integer} w - the annotation width * @param {integer} h - the annotation height * @param {page} page - the annotation page * @param {string} color - the annotation color * @param {float} opacity - the annotation opacity *\/ var documentId iframeWindow.getARenderJS().getCurrentDocumentId(); var type \u0026#34;Highlight\u0026#34;; var x 50; var y 150; var w 100; var h 50; var page 0; var color \u0026#34;#FF0000\u0026#34;; var opacity 0.4; iframeWindow.getARenderJS().getAnnotationJSAPI().addAnnotation( documentId, type, x, y, w, h, page, color, opacity); \/** * Returns the ARenderJS object from the iframe. * Throws an error if the iframe is not accessible or not loaded. *\/ function getARenderJS() { const iframeWindow iframeRef.value?.contentWindow ? iframeRef.value.contentWindow : undefined if (iframeWindow) { return iframeWindow.getARenderJS() } throw new Error(\u0026#34;The iframe is not accessible or not loaded.\u0026#34;) } \/** * Adds an annotation to the current document. * @param x The x coordinate of the annotation. * @param y The y coordinate of the annotation. * @param w The width of the annotation. * @param h The height of the annotation. * @param page The page number of the annotation. * @param color The color of the annotation. * @param opacity The opacity of the annotation. * @param type The type of the annotation. *\/ function addAnnotation(x, y, w, h, page, color, opacity, type \u0026#34;Highlight\u0026#34;) { const documentId getARenderJS().getCurrentDocumentId() getARenderJS() .getAnnotationJSAPI() .addAnnotation(documentId, type, x, y, w, h, page, color, opacity) } \/** * Expose the `addAnnotation` function to the parent component. *\/ defineExpose({ addAnnotation }) \/** * Returns the ARenderJS object from the iframe. * Throws an error if the iframe is not accessible or not loaded. *\/ function getARenderJS() { const iframeWindow iframeRef?.contentWindow ? iframeRef.contentWindow : undefined if (iframeWindow) { return iframeWindow.getARenderJS() } throw new Error(\u0026#34;The iframe is not accessible or not loaded.\u0026#34;) } \/** * Adds an annotation to the current document. * @param x The x coordinate of the annotation. * @param y The y coordinate of the annotation. * @param w The width of the annotation. * @param h The height of the annotation. * @param page The page number of the annotation. * @param color The color of the annotation. * @param opacity The opacity of the annotation. * @param type The type of the annotation. *\/ export function addAnnotation( x, y, w, h, page, color, opacity, type \u0026#34;Highlight\u0026#34; ) { let documentId getARenderJS().getCurrentDocumentId() getARenderJS() .getAnnotationJSAPI() .addAnnotation(documentId, type, x, y, w, h, page, color, opacity) } \/* * Add an highlight annotation * * @param {string} documentId - ID of the document * @param {string} type - the annotation type (only \u0026#34;Highlight\u0026#34; is supported) * @param {integer} x - the annotation x coordinate * @param {integer} y - the annotation y coordinate * @param {integer} w - the annotation width * @param {integer} h - the annotation height * @param {page} page - the annotation page * @param {string} color - the annotation color * @param {float} opacity - the annotation opacity *\/ var documentId iframeWindow.getARenderJS().getCurrentDocumentId(); var type \u0026#34;Highlight\u0026#34;; var x 50; var y 150; var w 100; var h 50; var page 0; var color \u0026#34;#FF0000\u0026#34;; var opacity 0.4; const iframe document.getElementById(\u0026#39;arender-iframe\u0026#39;); if (iframe \u0026amp;\u0026amp; iframe.contentWindow) { getARenderJS().getAnnotationJSAPI().addAnnotation( documentId, type, x, y, w, h, page, color, opacity); } else { console.error(\u0026#34;The iframe is inaccessible or not loaded yet.\u0026#34;); } /p>p>highlight/p>p>surlignage/p>p>notification/p>, url: https:\/\/docs.arender.io\/development\/framework\/addahighlightnotification\/ }, { value: Annotation types, path: https:\/\/docs.arender.io\/what-is-arender\/annotation-support\/, label: p>Annotations Name Arrow Bookmark Circle Freetext Freehand Highlight text Hyperlink Image stamp Measurement arrow Polygone Polyline Rectangle Sticky Note Strikethrough Textual stamp Underline Sound Annotations format Editor Annotation format Extension Adobe Acrobat XFDF ./p>p>Annotations Name Arrow Bookmark Circle Freetext Freehand Highlight text Hyperlink Image stamp Measurement arrow Polygone Polyline Rectangle Sticky Note Strikethrough Textual stamp Underline Sound Annotations format Editor Annotation format Extension Adobe Acrobat XFDF .xml IBM FileNet IBM FileNet .xml Daeja ViewONE Daeja ViewONE .ini /p>, url: https:\/\/docs.arender.io\/what-is-arender\/annotation-support\/ }, { value: APIs, path: https:\/\/docs.arender.io\/v4\/apis\/, label: p>/p>p>/p>p>API/p>p>APIs/p>p>REST/p>p>jsapi/p>p>javascript/p>, url: https:\/\/docs.arender.io\/v4\/apis\/ }, { value: Behaviour testing, path: https:\/\/docs.arender.io\/guides\/operation\/test\/, label: p>This chapter is meant to check if ARender is working as expected. The tests can be performed on a punctual basis (install, upgrade, etc) as well as continuously to supervise.\nRendition server The easiest way to validate ARender Rendition installation is to check the health page, see post installation documentation.\nPresentation server To test the presentation application, you just need to load the following URL in a new browser tab: http:\/\/localhost:8080./p>p>This chapter is meant to check if ARender is working as expected. The tests can be performed on a punctual basis (install, upgrade, etc) as well as continuously to supervise.\nRendition server The easiest way to validate ARender Rendition installation is to check the health page, see post installation documentation.\nPresentation server To test the presentation application, you just need to load the following URL in a new browser tab: http:\/\/localhost:8080.\nEnd to end Depending on needs, different level of test can be set-up. As a matter of fact, end-to-end test can be done to test the application as a whole. Typically, HTTP GET requests can be used to test the opening of a document and its rendition.\n Step 1: Using an URL to load a document: http:\/\/localhost:8080\/arendergwt\/openExternalDocument\nThis servlet page will return ARender\u0026rsquo;s ID of the document.\nYou can provide to this servlet any usual URL parameter, ARender is able to use every single connector.\n Step 2: Loading page test: http:\/\/localhost:8080\/arendergwt\/imageServlet?uuidb64_I2RlZmF1bHQ\u0026amp;pagePosition1\u0026amp;descIM_800_0\nThis servlet is made to test the generation of a 800px pictures of page one from the document b64_I2RlZmF1bHQ\nNote In case of complex architecture, this methodology won\u0026rsquo;t be able to test every branch of the platform. Typically, If a rendition farm is defined, it\u0026rsquo;s not possible, using this, to ensure both rendition server have been tested. /p>p>exploitation/p>p>tests/p>, url: https:\/\/docs.arender.io\/guides\/operation\/test\/ }, { value: Behaviour testing, path: https:\/\/docs.arender.io\/v4\/operation\/test\/, label: p>This chapter is meant to check if ARender is working as expected. The tests can be performed on a punctual basis (install, upgrade, etc) as well as continuously to supervise.\nRendition server The easiest way to validate ARender Rendition installation is to check the health page, see post installation documentation.\nPresentation server To test the presentation application, you just need to use the http:\/\/arenderHost\/ARender\/ web page this can be done./p>p>This chapter is meant to check if ARender is working as expected. The tests can be performed on a punctual basis (install, upgrade, etc) as well as continuously to supervise.\nRendition server The easiest way to validate ARender Rendition installation is to check the health page, see post installation documentation.\nPresentation server To test the presentation application, you just need to use the http:\/\/arenderHost\/ARender\/ web page this can be done.\nEnd to end Depending on needs, different level of test can be set-up. As a matter of fact, end-to-end test can be done to test the application as a whole. Typically, HTTP GET requests can be used to test the opening of a document and its rendition.\n Step 1: Using an URL to load a document:\n https:\/\/www.demo.arender.io\/arendergwt\/openExternalDocument?urlhttps:\/\/arender.io\/docs\/demo\/ARender-doc-demo.pdf This servlet page will return ARender\u0026rsquo;s ID of the document.\nYou can provide to this servlet any usual URL parameter, ARender is able to use every single connector.\n Step 2: Loading page test:\n https:\/\/www.demo.arender.io\/arendergwt\/arendergwt\/imageServlet?uuid${id ARender}\u0026amp;pagePosition1\u0026amp;descIM_800_0 This servlet is made to test the generation of a 800px pictures of page one from the document ${id ARender}\nNote In case of complex architecture, this methodology won\u0026rsquo;t be able to test every branch of the platform. Typically, If a rendition farm is defined, it\u0026rsquo;s not possible, using this, to ensure both rendition server have been tested. /p>p>exploitation/p>p>tests/p>, url: https:\/\/docs.arender.io\/v4\/operation\/test\/ }, { value: Configuration, path: https:\/\/docs.arender.io\/v4\/configuration\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/ }, { value: Custom connector, path: https:\/\/docs.arender.io\/v4\/connector\/custom\/, label: p>Introduction A sample code is available in the below link:\n https:\/\/github.com\/arondor-connectors\/sample-connectors Define a connector How to define a connector?\nIn order to use a new connector, following steps have to be done:\nAdd the JAR of the connector to the application server classpath (or add it directly to the WEB-INF\/lib of deployed web application)\nAdd following lines in the WEB-INF\/classes folder:\narender-custom-server-integration.xml \u0026lt;bean id\u0026#34;customUrlParser\u0026#34; class\u0026#34;com.arondor.viewer.YourCustomURLParser\u0026#34; \/\u0026gt; arender-server-custom-\u0026lt;./p>p>Introduction A sample code is available in the below link:\n https:\/\/github.com\/arondor-connectors\/sample-connectors Define a connector How to define a connector?\nIn order to use a new connector, following steps have to be done:\nAdd the JAR of the connector to the application server classpath (or add it directly to the WEB-INF\/lib of deployed web application)\nAdd following lines in the WEB-INF\/classes folder:\narender-custom-server-integration.xml \u0026lt;bean id\u0026#34;customUrlParser\u0026#34; class\u0026#34;com.arondor.viewer.YourCustomURLParser\u0026#34; \/\u0026gt; arender-server-custom-\u0026lt;...\/\u0026gt;.properties arender.server.url.parsers.beanNamescustomUrlParser,DefaultURLParser,DocumentIdURLParser,FileattachmentURLParser,ExternalBeanURLParser,AlterContentParser,FallbackURLParser Oracle Connector This part details how to fetch a document stored in Oracle DB Server using sample code based on Spring JDBC.\nThe aim of this example is to provide ability to visualize a document stored as BLOB in Oracle DB Server. This sample is based on:\n An URL as: http:\/\/{ARENDER_SERVER}\/ARender.html?ref{DOCUMENT_REFERENCE}\n An Oracle schema, named ARender, which contains the T_DOCS table: | REF (VARCHAR) | DOC (BLOB) | The ARender dependencies (in WEB-INFlib folder of Web-UI WEB application): arondor-arender-client-api-2.2.0.jar arondor-arender-rendition-api-2.2.0.jar arondor-arender-common-2.2.0.jar arondor-common-io-2.0.0.jar arondor-common-mime-2.0.11.jar log4j-1.2.16.jar commons-io-1.3.2.jar Spring 3.0.5.RELEASE commons-logging-1.1.1.jar ojdbc5-11.2.0.3.jar (not supplied by ARender) URL Parser The URL parser is the entry point of an ARender connector. This class must implement DocumentServiceURLParser interface.\n Class variables \/\/ The URL parameter to use to get document reference private String docRefParameter; \/\/ The SQL request providing document access private String query; private PreparedStatement preparedStatement; private DataSource dataSource; When should ARender enable this connector? @Override public boolean canParse(DocumentService documentService, ServletContext context, HttpServletRequest request) { \/\/ The connector is enabled\/used when ARender URL contains defined parameter return request.getParameter(docRefParameter) ! null; } Document loading @Override public DocumentId parse(DocumentService documentService, ServletContext context, HttpServletRequest request) throws DocumentNotAvailableException, DocumentFormatNotSupportedException { String docRef request.getParameter(docRefParameter); DocumentId documentId DocumentIdGenerator.generate(docRef); BlobOracleDocumentAccessor oracleDocumentAccessor new BlobOracleDocumentAccessor(docRef, documentId, getOrCreatePreparedStatement()); return documentService.loadDocument(oracleDocumentAccessor); } protected PreparedStatement getOrCreatePreparedStatement() { if (preparedStatement null) { try { Connection connection dataSource.getConnection(); preparedStatement connection.prepareStatement(getQuery()); } catch (SQLException e) { LOGGER.error(\u0026#34;Could not prepare statement for document fetching\u0026#34;, e); } } return preparedStatement; } Add getters and setters to let ability to configure this connector public DataSource getDataSource() { return dataSource; } public void setDataSource(DataSource dataSource) { this.dataSource dataSource; } public String getDocRefParameter() { return docRefParameter; } public void setDocRefParameter(String docRefParameter) { this.docRefParameter docRefParameter; } public String getQuery() { return query; } public void setQuery(String query) { this.query query; } Connector Spring configuration \u0026lt;bean id\u0026#34;oracleURLParser\u0026#34; class\u0026#34;com.arondor.viewer.oracle.OracleURLParser\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;docRefParameter\u0026#34; value\u0026#34;ref\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;query\u0026#34; value\u0026#34;SELECT DOC FROM ARender.T_DOCS WHERE REF?\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;dataSource\u0026#34;\u0026gt; \u0026lt;bean id\u0026#34;dataSource\u0026#34; class\u0026#34;oracle.jdbc.pool.OracleDataSource\u0026#34; destroy-method\u0026#34;close\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;connectionCachingEnabled\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;URL\u0026#34; value\u0026#34;jdbc:oracle:thin:@{host}:{port}:{SID}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;user\u0026#34; value\u0026#34;{user}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;password\u0026#34; value\u0026#34;{password}\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Document content access In this part, it is detailed how to effectively fetch document from its referential. For this, we use a DAO, BlobOracleDocumentAccessor, implementing DocumentAccessor interface.\n Content fetching In order to fetch the stream corresponding to the BLOB file to visualize, the PreparedStatement object, supplied to the constructor, is used:\n@Override public byte toByteArray() throws IOException { try { preparedStatement.setLong(1, Long.parseLong(docRef)); ResultSet resultSet preparedStatement.executeQuery(); if (!resultSet.next()) { LOGGER.error(\u0026#34;No result can be found for F_DocNumber: \u0026#34; \u002b docRef); throw new IOException(\u0026#34;No result can be found for F_DocNumber: \u0026#34; \u002b docRef); } else { Blob blob (Blob) resultSet.getObject(1); return IOUtils.toByteArray(blob.getBinaryStream()); } } catch (NumberFormatException e) { LOGGER.error(\u0026#34;Cannot fetch document content: F_DocNumber is not a valid long: \u0026#34; \u002b docRef, e); throw (e); } catch (SQLException e) { LOGGER.error(\u0026#34;Cannot fetch document content: Impossible to update statement with F_DocNumber: \u0026#34; \u002b docRef,e); throw new IOException(e); } } @Override public InputStream getInputStream() throws IOException { return new ByteArrayInputStream(this.toByteArray()); } @Override public DocumentAccessor asSerializableDocumentAccessor() throws IOException { return new DocumentAccessorByteArray(getUUID(), getInputStream()); } Metadata @Override public DocumentMetadata getDocumentMetadata() { DocumentMetadata documentMetadata new DocumentMetadata(); DocumentProperty docProperty new DocumentProperty(\u0026#34;client\u0026#34;, \u0026#34;Client\u0026#34;); docProperty.setValue(\u0026#34;M. Richard Dupond\u0026#34;); documentMetadata.addDocumentProperty(\u0026#34;client\u0026#34;, docProperty); return documentMetadata; } Download connector sources.\nIt is recommended to add the document title information in the DocumentMetadata in order to fully benefit from certain feature such as the correct display of the title when the document opening has failed, for example by adding the following line in the above code:\ndocumentMetadata.addDocumentProperty(\u0026#34;documentTitle\u0026#34;, getDocumentTitle()); Create a new AnnotationAccessor When you create your own connector you have to define how to fetch, add, update and remove annotations. To do this ARender offers an API that defines four main methods to implement: create, update, get and delete.\nBelow the three main steps to initialize your own AnnotationAccessor:\n Implement the interface AnnotationAccessor Create constructors Methods to implement Implement the interface AnnotationAccessor public class CustomAnnotationAccessor implements AnnotationAccessor { Create constructors The good practice is to define two constructors.\nOne default generic constructor, based only on the documentId\npublic CustomAnnotationAccessor(DocumentService documentService, DocumentId documentId) { if (documentId null) { throw new IllegalArgumentException(\u0026#34;Invalid null documentId provided !\u0026#34;); } this.documentId documentId; } And another one based on the documentAccessor\npublic CustomAnnotationAccessor(DocumentService documentService, DocumentAccessor documentAccessor) { this(documentService, documentAccessor.getUUID()); } Methods to implement Method create This method takes in parameter a list of Annotation that has been created and saved.\nDefine here where and how to store these new annotations.\n@Override public void create(List\u0026lt;com.arondor.viewer.annotation.api.Annotationannotations) throws AnnotationsNotSupportedException, InvalidAnnotationFormatException, AnnotationCredentialsException, AnnotationNotAvailableException { Method update This method takes in parameter a list of Annotation that has been updated and saved.\nDefine here where and how to save these updated annotations.\n@Override public void update(List\u0026lt;com.arondor.viewer.annotation.api.Annotationannotations) throws AnnotationsNotSupportedException, InvalidAnnotationFormatException, AnnotationNotAvailableException, AnnotationCredentialsException { Method get This method returns a list of Annotation to fetch. Define here how to fetch them.\n@Override public synchronized List\u0026lt;Annotationget() throws AnnotationsNotSupportedException, InvalidAnnotationFormatException { Method delete This method takes in parameter a list of Annotation that have been removed. Define here where and how to remove them.\n@Override public void delete(List\u0026lt;com.arondor.viewer.annotation.api.Annotationannotations) throws AnnotationsNotSupportedException, InvalidAnnotationFormatException, AnnotationNotAvailableException, AnnotationCredentialsException { Method getAnnotationCreationPolicy This method returns an Object AnnotationCreationPolicy defining:\n If the user can create or not annotations The user stamp catalog @Override public AnnotationCreationPolicy getAnnotationCreationPolicy() { return annotationCreationPolicy; } Useful links:\n AnnotationAccessor API is available here: http:\/\/arender.fr\/rendition-api\/com\/arondor\/viewer\/rendition\/api\/annotation\/AnnotationAccessor.html Hide parameters from the URL ARender offers a way to hide parameters.\n The first step is to ask ARender to generate the document\u0026rsquo;s UUID (ARender\u0026rsquo;s ID). To do this generate the following URL with parameters you usually use to fetch the document (document id \u0026hellip;): http:\/\/{HOST_ARENDER}\/openExternalDocument.jsp?{PARAMETERS}\n With the UUID fetched from the response of the above call, generate the following URL and visualize the document http:\/\/{HOST_ARENDER}\/?uuid{UUID_FETCHED_ABOVE}\n Get the built document The documentBuilder is the ARender flagship feature. (More informations here). Save a built document implies, by default, the download of the document on the client side.\nIt is possible to override this behavior, to fetch the built content and ofr exemple transfer it to a WebService. To do this, ARender has a dedicated API that define an interface to implement: DocumentAccessorHasUpdateContent.\nBelow an implementation example:\n@Override public DocumentAccessor updateDocumentContent(DocumentService documentService, DocumentId documentId, AlterContentDescription alterContentDescription) throws DocumentNotAvailableException, IOException, AlterContentOperationNotSupportedException, DocumentFormatNotSupportedException, AlterContentOperationException { \/\/ this method is called to update the current DocumentAccessor content with the build document content \/\/ the built documentId is provided in the documentId parameter. DocumentAccessor modifiedDocument getDocumentAccessorSourceToUpdate(documentService, documentId); switch (alterContentDescription.getContentUpdateBehavior()) { case CREATE_NEW_FIRST_DOCUMENT: saveNewDocument(modifiedDocument, true); break; case UPDATE_FIRST_DOCUMENT: updateContent(modifiedDocument); break; default: break; } return modifiedDocument; } protected DocumentAccessor getDocumentAccessorSourceToUpdate(DocumentService documentService, DocumentId sourceId) throws AlterContentOperationNotSupportedException, DocumentNotAvailableException, IOException, DocumentFormatNotSupportedException { \/\/ this method will search for the DocumentAccessor from the rendition service to obtain easily the built document content if (documentService null) { throw new IllegalArgumentException(\u0026#34;No documentLayout provided !\u0026#34;); } DocumentLayout documentLayout documentService.getDocumentLayout(sourceId); if (documentLayout null) { throw new DocumentNotAvailableException(\u0026#34;Source document \u0026#34; \u002b sourceId \u002b \u0026#34;is not available\u0026#34;); } \/\/ this is optional and only if you wish to receive the document title of the document built DocumentLayout documentLayout getDocumentService().getDocumentLayout(alterDocumentContent); if (documentLayout instanceof DocumentContainer) { \/\/ here, we take the first children (to get the built document name) List\u0026lt;DocumentLayoutchildren ((DocumentContainer) documentLayout).getChildren(); if (children ! null \u0026amp;\u0026amp; !children.isEmpty()) { String builtDocumentTitle documentService.getDocumentLayout(children.get(0).getDocumentId()).getDocumentTitle(); \/\/ do what you wish with this title } } \/\/ if you just want the binary content return documentService.getDocumentAccessor(sourceId, DocumentAccessorSelector.RENDERED); } /p>p>custom/p>p>connector/p>, url: https:\/\/docs.arender.io\/v4\/connector\/custom\/ }, { value: DELETE all conversion orders, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/conversion\/delete-all-conversion-order\/, label: p>This API allows you to delete all conversion orders previously requested. The call to this API must be authenticated. The credentials are available in the application.yaml configuration file of the document-service-broker.\nrun-mode :username :usernamepassword :passwordAPI technical description Endpoint:\nDELETE \/conversions Examples Delete all conversion orders in an authenticated way The call below generates a request to delete all conversion orders. It is authenticated using the simple \u0026ldquo;Basic Authentication\u0026rdquo; method, considering the username: user and the password password./p>p>This API allows you to delete all conversion orders previously requested. The call to this API must be authenticated. The credentials are available in the application.yaml configuration file of the document-service-broker.\nrun-mode :username :usernamepassword :passwordAPI technical description Endpoint:\nDELETE \/conversions Examples Delete all conversion orders in an authenticated way The call below generates a request to delete all conversion orders. It is authenticated using the simple \u0026ldquo;Basic Authentication\u0026rdquo; method, considering the username: user and the password password.\ncurl -X \u0026#39;DELETE\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/conversions\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Authorization: Basic dXNlcjpwYXNzd29yZA\u0026#39; /p>p>tutorial/p>p>conversion/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/conversion\/delete-all-conversion-order\/ }, { value: DELETE all transformation orders, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/delete-all-transformation-order\/, label: p>This API allows you to delete all transformation orders previously requested. The call to this API must be authenticated. The credentials are available in the application.yaml configuration file of the document-service-broker.\nrun-mode :username :usernamepassword :passwordAPI technical description Endpoint :\nDELETE \/transformations Examples Delete all transformation orders in an authenticated way The call below generates a request to delete all transformation orders. It is authenticated using the simple \u0026ldquo;Basic Authentication\u0026rdquo; method, considering the username: user and the password password./p>p>This API allows you to delete all transformation orders previously requested. The call to this API must be authenticated. The credentials are available in the application.yaml configuration file of the document-service-broker.\nrun-mode :username :usernamepassword :passwordAPI technical description Endpoint :\nDELETE \/transformations Examples Delete all transformation orders in an authenticated way The call below generates a request to delete all transformation orders. It is authenticated using the simple \u0026ldquo;Basic Authentication\u0026rdquo; method, considering the username: user and the password password.\ncurl -X \u0026#39;DELETE\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Authorization: Basic dXNlcjpwYXNzd29yZA\u0026#39; /p>p>tutorial/p>p>transformation/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/delete-all-transformation-order\/ }, { value: Features, path: https:\/\/docs.arender.io\/features\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/features\/ }, { value: GET Document Layout, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-document-layout\/, label: p>This API allows you to retrieve the layout information of a document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/layout Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description DocumentLayout The layout information of the document Example Get Document Layout The following example retrieves the layout information of a document with the specified document ID./p>p>This API allows you to retrieve the layout information of a document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/layout Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description DocumentLayout The layout information of the document Example Get Document Layout The following example retrieves the layout information of a document with the specified document ID.\ncurl -X GET \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/layout\u0026#39; Result The following example show a DocumentLayout for a PDF of wo pages.\n{ \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.client.api.document.DocumentPageLayout\u0026#34;, \u0026#34;documentId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;b64_N2U5MzY0MmQtYTQ4YS00MzBlLThiYWYtMjhhMjdlNGZlMDQz\u0026#34; }, \u0026#34;documentTitle\u0026#34;: null, \u0026#34;mimeType\u0026#34;: \u0026#34;application\/pdf\u0026#34;, \u0026#34;pageDimensionsList\u0026#34;: { \u0026#34;width\u0026#34;: 595, \u0026#34;height\u0026#34;: 841, \u0026#34;rotation\u0026#34;: 0, \u0026#34;dpi\u0026#34;: 72, \u0026#34;pageLayers\u0026#34;: null }, { \u0026#34;width\u0026#34;: 595, \u0026#34;height\u0026#34;: 841, \u0026#34;rotation\u0026#34;: 0, \u0026#34;dpi\u0026#34;: 72, \u0026#34;pageLayers\u0026#34;: null } } /p>p>get document layout/p>p>document/p>p>layout/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-document-layout\/ }, { value: IBM FileNet, path: https:\/\/docs.arender.io\/installation\/docker\/filenet\/, label: p>ARender UI Spring Boot for IBM FileNet Configuration with a service account Since v2023.4.0, we have created dedicated Docker image for ARender UI Spring Boot with FileNet connector named arender-ui-springboot:2023.16.0-filenet.\nTo run the container, execute:\n$\u0026gt; docker run artifactory.arondor.cloud:5001\/arender-ui-springboot:2023.16.0-filenet \\ -e ARENDERSRV_ARENDER_SERVER_FILENET_AUTHENTICATION_METHOD\u0026#34;LoginPasswordObjectStoreProvider\u0026#34;\\ -e ARENDERSRV_ARENDER_SERVER_FILENET_CE_URL\u0026#34;http:\/\/\u0026lt;filenet-url\u0026gt;:\u0026lt;filent-port\u0026gt;\/wsi\/FNCEWS40MTOM\/\u0026#34;\\ -e ARENDERSRV_ARENDER_SERVER_FILENET_CE_LOGIN\u0026lt;account-name\u0026gt;\\ -e ARENDERSRV_ARENDER_SERVER_FILENET_CE_PASSWORD\u0026lt;account-password\u0026gt; Configuration with OAuth2 Note: If you do not have the necessary credential for ARender artifactory, please contact arender-support@arondor.com.\nIn our example, we will be using Docker Compose so we can have the whole stack up and running./p>p>ARender UI Spring Boot for IBM FileNet Configuration with a service account Since v2023.4.0, we have created dedicated Docker image for ARender UI Spring Boot with FileNet connector named arender-ui-springboot:2023.16.0-filenet.\nTo run the container, execute:\n$\u0026gt; docker run artifactory.arondor.cloud:5001\/arender-ui-springboot:2023.16.0-filenet \\ -e ARENDERSRV_ARENDER_SERVER_FILENET_AUTHENTICATION_METHOD\u0026#34;LoginPasswordObjectStoreProvider\u0026#34;\\ -e ARENDERSRV_ARENDER_SERVER_FILENET_CE_URL\u0026#34;http:\/\/\u0026lt;filenet-url\u0026gt;:\u0026lt;filent-port\u0026gt;\/wsi\/FNCEWS40MTOM\/\u0026#34;\\ -e ARENDERSRV_ARENDER_SERVER_FILENET_CE_LOGIN\u0026lt;account-name\u0026gt;\\ -e ARENDERSRV_ARENDER_SERVER_FILENET_CE_PASSWORD\u0026lt;account-password\u0026gt; Configuration with OAuth2 Note: If you do not have the necessary credential for ARender artifactory, please contact arender-support@arondor.com.\nIn our example, we will be using Docker Compose so we can have the whole stack up and running.\ndocker-compose.yml version: \u0026#34;3.7\u0026#34; services: ui: image: artifactory.arondor.cloud:5001\/arender-ui-springboot:2023.16.0-filenet environment: - \u0026#34;ARENDERSRV_ARENDER_SERVER_RENDITION_HOSTShttp:\/\/service-broker:8761\/\u0026#34; # You can configure ARender properties through environment variable or with the configuration file in a volume like further down #- \u0026#34;ARENDERSRV_ARENDER_SERVER_OAUTH2_ENABLEDtrue\u0026#34; #- \u0026#34;ARENDERSRV_ARENDER_SERVER_FILENET_AUTHENTICATION_METHODoauth2ObjectStoreProvider\u0026#34; #- \u0026#34;ARENDERSRV_ARENDER_SERVER_FILENET_CE_URLhttp:\/\/localhost:9080\/wsi\/FNCEWS40MTOM\/\u0026#34; ports: - 8080:8080 # Here we copy our configuration for OAuth2 in a volume volumes: - .\/volume\/config\/application.yml:\/home\/arender\/application.yml - .\/volume\/configurations\/arender-custom-server.properties:\/home\/arender\/configurations\/arender-custom-server.properties service-broker: image: artifactory.arondor.cloud:5001\/arender-document-service-broker:2023.16.0 environment: - \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DOCUMENT-CONVERTER19999\u0026#34; - \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DOCUMENT-RENDERER9091\u0026#34; - \u0026#34;DSB_KUBEPROVIDER_KUBE.HOSTS_DOCUMENT-TEXT-HANDLER8899\u0026#34; ports: - 8762-8770:8761 volumes: - arender-tmp:\/arender\/tmp document-renderer: image: artifactory.arondor.cloud:5001\/arender-document-renderer:2023.16.0 hostname: drn-service environment: - \u0026#34;DRN_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdocument-renderer\u0026#34; - \u0026#34;DRN_EUREKA_INSTANCE_HOSTNAMEservice-broker\u0026#34; - \u0026#34;DRN_EUREKA_SERVER_PORT8761\u0026#34; ports: - 9091-9100:9091 volumes: - arender-tmp:\/arender\/tmp document-text-handler: image: artifactory.arondor.cloud:5001\/arender-document-text-handler:2023.16.0 environment: - \u0026#34;DTH_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdocument-text-handler\u0026#34; - \u0026#34;DTH_EUREKA_INSTANCE_HOSTNAMEservice-broker\u0026#34; - \u0026#34;DTH_EUREKA_SERVER_PORT8761\u0026#34; ports: - 8899-8908:8899 volumes: - arender-tmp:\/arender\/tmp document-converter: image: artifactory.arondor.cloud:5001\/arender-document-converter:2023.16.0 environment: - \u0026#34;DCV_EUREKA_INSTANCE_METADATA.MAP_HOST.NAMEdocument-converter\u0026#34; - \u0026#34;DCV_APP_EUREKA_HOSTNAMEservice-broker\u0026#34; - \u0026#34;DCV_APP_EUREKA_PORT8761\u0026#34; ports: - 19999-20008:19999 volumes: - arender-tmp:\/arender\/tmp volumes: arender-tmp: ARender or connector configuration files can be put in the \/home\/arender\/configurations\/ folder of the container. Connector lib can be put in the \/home\/arender\/lib\/ folder of the container.\n/p>p>docker/p>p>filenet/p>, url: https:\/\/docs.arender.io\/installation\/docker\/filenet\/ }, { value: IBM FileNet, path: https:\/\/docs.arender.io\/v4\/install\/docker\/filenet\/, label: p>ARender UI for IBM FileNet ARender UI for FileNet images tag are prefixed with \u0026ldquo;-filenet\u0026rdquo; (e.g arender-ui:4.8.21-filenet) since ARender 4.3.0.\nWarning As the application use Tomcat as web server it can only access filenet content engine by using WSI transport method. Find more informations on filenet connector documentation. To run the container, execute:\n$\u0026gt; docker run artifactory.arondor.cloud:5001\/arender-ui:4.8.21-filenet \\ -e ARENDERSRV_ARENDER_SERVER_FILENET_AUTHENTICATION_METHOD\u0026#34;LoginPasswordObjectStoreProvider\u0026#34;\\ -e ARENDERSRV_ARENDER_SERVER_FILENET_CE_URL\u0026#34;http:\/\/\u0026lt;filenet-url\u0026gt;:\u0026lt;filent-port\u0026gt;\/wsi\/FNCEWS40MTOM\/\u0026#34;\\ -e ARENDERSRV_ARENDER_SERVER_FILENET_CE_LOGIN\u0026lt;account-name\u0026gt;\\ -e ARENDERSRV_ARENDER_SERVER_FILENET_CE_PASSWORD\u0026lt;account-password\u0026gt; /p>p>ARender UI for IBM FileNet ARender UI for FileNet images tag are prefixed with \u0026ldquo;-filenet\u0026rdquo; (e.g arender-ui:4.8.21-filenet) since ARender 4.3.0.\nWarning As the application use Tomcat as web server it can only access filenet content engine by using WSI transport method. Find more informations on filenet connector documentation. To run the container, execute:\n$\u0026gt; docker run artifactory.arondor.cloud:5001\/arender-ui:4.8.21-filenet \\ -e ARENDERSRV_ARENDER_SERVER_FILENET_AUTHENTICATION_METHOD\u0026#34;LoginPasswordObjectStoreProvider\u0026#34;\\ -e ARENDERSRV_ARENDER_SERVER_FILENET_CE_URL\u0026#34;http:\/\/\u0026lt;filenet-url\u0026gt;:\u0026lt;filent-port\u0026gt;\/wsi\/FNCEWS40MTOM\/\u0026#34;\\ -e ARENDERSRV_ARENDER_SERVER_FILENET_CE_LOGIN\u0026lt;account-name\u0026gt;\\ -e ARENDERSRV_ARENDER_SERVER_FILENET_CE_PASSWORD\u0026lt;account-password\u0026gt; /p>p>docker/p>p>filenet/p>, url: https:\/\/docs.arender.io\/v4\/install\/docker\/filenet\/ }, { value: Monitoring performance, path: https:\/\/docs.arender.io\/guides\/performance\/monitoring\/, label: p>Monitoring ARender performance is done by logging method execution and complementary fields in logs files.\nSee below an example of log :\nStart1921-01-01 11:02:27,776 || End1921-01-01 11:02:27,777 || TimeMs1 || ModuleLoadingTime227 || DocumentLoadingTime1084 || Usernull || UserAgentnull || MethodServletDocumentService.notifyOpeningTimes(..) || MimeTypenull || DocumentIdb64_I2RlZmF1bHQ || ResultOK || Exceptionnull || Args227, 1084 Description of fields Warning Fields ModuleLoadingTime and DocumentLoadingTime are available since ARender 4.3.0 and above.\nBefore ARender 4.3.0 : Those fields are retrievable with the field \u0026lsquo;args\u0026rsquo; when field \u0026lsquo;method\u0026rsquo; contains \u0026lsquo;notifyLoadingTimes(./p>p>Monitoring ARender performance is done by logging method execution and complementary fields in logs files.\nSee below an example of log :\nStart1921-01-01 11:02:27,776 || End1921-01-01 11:02:27,777 || TimeMs1 || ModuleLoadingTime227 || DocumentLoadingTime1084 || Usernull || UserAgentnull || MethodServletDocumentService.notifyOpeningTimes(..) || MimeTypenull || DocumentIdb64_I2RlZmF1bHQ || ResultOK || Exceptionnull || Args227, 1084 Description of fields Warning Fields ModuleLoadingTime and DocumentLoadingTime are available since ARender 4.3.0 and above.\nBefore ARender 4.3.0 : Those fields are retrievable with the field \u0026lsquo;args\u0026rsquo; when field \u0026lsquo;method\u0026rsquo; contains \u0026lsquo;notifyLoadingTimes(..)\u0026rsquo;. The field \u0026lsquo;args\u0026rsquo; is constructed like following : \u0026lsquo;moduleLoadingTime, documentLoadingTime\u0026rsquo;\n Field Description Start Start date of method execution. The date is formatted as yyyy-mm-dd hh-mm-ss. End End date of method execution. The date is formatted as yyyy-mm-dd hh-mm-ss. TimeMs Method execution time in millisecond. This is calculated with End - Start. ModuleLoadingTime Module loading time in millisecond. Value is equal to -1 when executed method is ServletDocumentService.notifyOpeningTimes(..). DocumentLoadingTime Document loading time in millisecond. Value is equal to -1 when executed method ServletDocumentService.notifyOpeningTimes(..). User User name of current user. Value is null when username has not been retrieved or if the property arender.server.perf.logger.username.fetch is false. UserAgent UserAgent of the current user. Value is null when UserAgent has not been retrieved or the property arender.server.perf.logger.useragent.fetch is false. Method Method name that have been executed and where informations are retrieved from. MimeType MimeType of document used in the executed method. Value is equal to null if method is not equal to DocumentServiceMapper.getDocumentLayout(..). DocumentId DocumentId of document used in the executed method. Value is equal to null when executed method has no need of a documentId. DocumentIdRevertedParams Parameters encoded in the documentId. Value is égal to null when property arender.server.perf.logger.document.id.params.fetch is equal to false. Field is not logged if the documentId has no encoded parameters in it. Result Indicate if the method have been executed successfully. Value is equal to OK if success and KO if failed. Exception Exception thrown when there is method execution error. Value is equal to null if no error. Args List of arguments of the method. Arguments are between square brackets and separated by comma. List of methods logged from rendition : Method Description Parameters Error thrown alterDocumentContent(..) Used when downloading with annotation, saving or updating a document from the documentBuilder List of DocumentId , AlterContentDescription AlterContentOperationException, DocumentNotAvailableException compareDocuments(..) Used when comparing two documents leftDocumentId, rightDocumentId DocumentNotAvailableException compareImages(..) Used when comparing two images documentLeft, documentRight, fuzz, highlightColor , lowlightColor DocumentNotAvailableException convertStampAppearance(..) Used to convert stamp appearances of PDFBox to stamp appearance of ARender List of Annotation DocumentNotAvailableException createPrintablePDF(..) Used at document printing createPrintablePDFStreamed(..) Used at document printing HttpServletResponse evict(..) extractAnnotations(..) Extract annotations from given PDF file formatType, bytes DocumentNotAvailableException generateAnnotations(..) Generate FDF annotations from ARender annotations. Used when downloading with annotation formatType, List of Annotation DocumentNotAvailableException, IOException generatePDFWithFDFAnnotations(..) Used at document downloading with FDF annotations List of Annotation DocumentNotAvailableException, IOException getAdvancedSearchPageResult(..) Used at advanced search for given page searchOptions, pageNumber DocumentNotAvailableException getAdvancedSearchPagesWithResult(..) Used at advanced search for all pages searchOptions DocumentNotAvailableException getAnnotationAccessor(..) Used when document has annotations getAnnotationsContainingSearchText(..) Used at search to retrieve a list of annotation containing the searched text in given page List of Annotation , searchOptions, pageNumber DocumentNotAvailableException getBookmarks(..) Retrieve bookmarks at document loading DocumentNotAvailableException getDocumentAccessor(..) Retrieve document accessor at document loading DocumentAccessorSelector DocumentNotAvailableException getDocumentAccessorContent(..) Retrieve content of the document DocumentAccessorSelector DocumentNotAvailableException getDocumentAccessorController(..) Retrieve document accessor controller getDocumentDPI(..) Retrieve DPI of a page of a document DocumentAccessorSelector, pageNumber Exception getDocumentLayout(..) Retrieve the document layout at document loading DocumentNotAvailableException getDocumentMetadata(..) Retrieve the metadata at document loading DocumentNotAvailableException getPageContents(..) Retrieve textual content of the given page pageNumber DocumentNotAvailableException, PageOutOfRangeException, DocumentFormatNotSupportedException getPageImageStream(..) Retrieve the image of the given page. Used for thumbnails and displayed pages pageNumber, PageImageDescription, HttpServletResponse DocumentNotAvailableException, DocumentFormatNotSupportedException getPageResult(..) Retrieve search results for a given page searchQuery, pageNumber, searchOptions DocumentNotAvailableException getPagesWithResult(..) Retrieve search results for all pages searchQuery DocumentNotAvailableException getSize(..) Retrieve document size DocumentAccessorSelector DocumentNotAvailableException getVideoChunk(..) Retrieve a chunk of a video file start, length, HttpServletResponse DocumentNotAvailableException, DocumentFormatNotSupportedException, IOException hasDocument(..) Check is the micro service DFS has the document loadDocumentAccessor(..) Load a document from his documentAccessor DocumentAccessor DocumentNotAvailableException, DocumentFormatNotSupportedException loadDocumentAccessor(..) Load a document from his documentAccessor and selector DocumentAccessor , DocumentAccessorSelector DocumentNotAvailableException loadPartialDocument(..) Load a part of the document contentBuffer, offset, finished DocumentNotAvailableException, DocumentFormatNotSupportedException startLoadPartialDocument(..) Start to load a part of the document mimeType, documentTitle, contentSize IOException uploadDocument(..) Used to upload a document in ARender mimeType, documentTitle, inputStream List of methods logged from UI : Method Description Parameters Error thrown alterDocumentContent(..) Used when downloading with annotation, saving or updating a document from the documentBuilder sourceDocumentIdList, description AlterContentOperationException, DocumentFormatNotSupportedException, DocumentNotAvailableException compareDocuments(..) Used when comparing two documents documentIdLeft, documentIdRight DocumentNotAvailableException, DocumentServiceDelegateNotAvailable, DocumentFormatNotSupportedException compareImages(..) Used when comparing two images documentIdLeft, documentIdRight, fuzz, highlightColor, lowlightColor DocumentNotAvailableException, DocumentServiceDelegateNotAvailable, DocumentFormatNotSupportedException convertStampAppearance(..) Used to convert stamp appearances of PDFBox to stamp appearance of ARender stampAnnotations DocumentFormatNotSupportedException createPrintablePDF(..) Used at document printing arenderAnnotations DocumentNotAvailableException DownloadServlet.doGet(..) Used at document downloading methodName, revertedDocumentIdParameters evict(..) extractAnnotations(..) Extract annotations from given PDF file sourceId, formatType, contents DocumentFormatNotSupportedException generateAnnotations(..) Generate FDF annotations from ARender annotations. Used when downloading with annotation formatType, arenderAnnotations DocumentNotAvailableException generatePDFWithFDFAnnotations(..) Used at document downloading with FDF annotations arenderAnnotations DocumentNotAvailableException getAdvancedSearchPageResult(..) Used at advanced search for given page searchOptions, pageNumber DocumentNotAvailableException, DocumentFormatNotSupportedException getAdvancedSearchPagesWithResult(..) Used at advanced search for all pages searchOptions DocumentNotAvailableException getAnnotationAccessor(..) Used when document has annotations DocumentNotAvailableException, AnnotationsNotSupportedException getAnnotationsContainingSearchText(..) Used at search to retrieve a list of annotation containing the searched text in given page annotations, searchOptions, pageNumber AnnotationsNotSupportedException, DocumentNotAvailableException getBookmarks(..) Retrieve bookmarks at document loading DocumentNotAvailableException getDocumentAccessor(..) Retrieve document accessor at document loading documentAccessorSelector DocumentNotAvailableException, IOException getDocumentAccessorContent(..) Retrieve content of the document documentAccessorSelector DocumentNotAvailableException getDocumentDPI(..) Retrieve DPI of a page of a document documentAccessorSelector, page Exception getDocumentLayout(..) Retrieve the document layout at document loading DocumentFormatNotSupportedException, DocumentNotAvailableException getDocumentMetadata(..) Retrieve the metadata at document loading DocumentNotAvailableException, DocumentFormatNotSupportedException getPageContents(..) Retrieve textual content of the given page pageNumber DocumentNotAvailableException, PageOutOfRangeException, DocumentFormatNotSupportedException getPageImage(..) Retrieve the image of the given page. Used for thumbnails and displayed pages page, pageImageDescription DocumentNotAvailableException, DocumentFormatNotSupportedException, PageOutOfRangeException, IOException getPageResult(..) Retrieve search results for a given page searchText, pageNumber, searchOptions DocumentNotAvailableException, DocumentFormatNotSupportedException getPagesWithResult(..) Retrieve search results for all pages searchText DocumentNotAvailableException getTargetsWeather(..) Used when accessing at arendergwt\/weather isPrettyHtmlPrint hasCurrentUserParsedDocument(..) Check if the document is available for the current user loadDocumentAccessor(..) Load a document from his documentAccessor documentAccessor DocumentNotAvailableException, DocumentFormatNotSupportedException loadDocumentAccessor(..) Load a document from his documentAccessor and selector documentAccessor, documentAccessorSelector loadDocument(..) Load an already parsed document document mayProcessAnnotationRendition(..) Try to generate a document with annotations sharedDocumentId DocumentFormatNotSupportedException notifyOpeningTimes(..) Used to notify that a document is open and displayed in ARender moduleLoadingTime, documentLoadingTime parseLoadingQueryUrl(..) Used when URL using loadingQuery identifier DocumentNotAvailableException, DocumentFormatNotSupportedException parseReversibleDocumentId(..) DocumentNotAvailableException, DocumentFormatNotSupportedException parseURL(..) Parse URL used before trying to execute action like opening a document applicationContext, request DocumentNotAvailableException, DocumentFormatNotSupportedException PrintServlet.doGet(..) Executed at document printing methodName, revertedDocumentIdParameters uploadDocument(..) Used to upload a document in ARender mimeType, documentTitle, inputStream validateQueryToken(..) Validate if the given token in the request ok or not queryURL /p>p>monitoring/p>p>performance/p>p>log/p>, url: https:\/\/docs.arender.io\/guides\/performance\/monitoring\/ }, { value: Monitoring performance, path: https:\/\/docs.arender.io\/v4\/performance\/monitoring\/, label: p>Monitoring ARender performance is done by logging method execution and complementary fields in logs files.\nSee below an example of log :\nStart1921-01-01 11:02:27,776 || End1921-01-01 11:02:27,777 || TimeMs1 || ModuleLoadingTime227 || DocumentLoadingTime1084 || Usernull || UserAgentnull || MethodServletDocumentService.notifyOpeningTimes(..) || MimeTypenull || DocumentIdb64_I2RlZmF1bHQ || ResultOK || Exceptionnull || Args227, 1084 Description of fields Warning Fields ModuleLoadingTime and DocumentLoadingTime are available since ARender 4.3.0 and above.\nBefore ARender 4.3.0 : Those fields are retrievable with the field \u0026lsquo;args\u0026rsquo; when field \u0026lsquo;method\u0026rsquo; contains \u0026lsquo;notifyLoadingTimes(./p>p>Monitoring ARender performance is done by logging method execution and complementary fields in logs files.\nSee below an example of log :\nStart1921-01-01 11:02:27,776 || End1921-01-01 11:02:27,777 || TimeMs1 || ModuleLoadingTime227 || DocumentLoadingTime1084 || Usernull || UserAgentnull || MethodServletDocumentService.notifyOpeningTimes(..) || MimeTypenull || DocumentIdb64_I2RlZmF1bHQ || ResultOK || Exceptionnull || Args227, 1084 Description of fields Warning Fields ModuleLoadingTime and DocumentLoadingTime are available since ARender 4.3.0 and above.\nBefore ARender 4.3.0 : Those fields are retrievable with the field \u0026lsquo;args\u0026rsquo; when field \u0026lsquo;method\u0026rsquo; contains \u0026lsquo;notifyLoadingTimes(..)\u0026rsquo;. The field \u0026lsquo;args\u0026rsquo; is constructed like following : \u0026lsquo;moduleLoadingTime, documentLoadingTime\u0026rsquo;\n Field Description Start Start date of method execution. The date is formatted as yyyy-mm-dd hh-mm-ss. End End date of method execution. The date is formatted as yyyy-mm-dd hh-mm-ss. TimeMs Method execution time in millisecond. This is calculated with End - Start. ModuleLoadingTime Module loading time in millisecond. Value is equal to -1 when executed method is ServletDocumentService.notifyOpeningTimes(..). DocumentLoadingTime Document loading time in millisecond. Value is equal to -1 when executed method ServletDocumentService.notifyOpeningTimes(..). User User name of current user. Value is null when username has not been retrieved or if the property arender.server.perf.logger.username.fetch is false. UserAgent UserAgent of the current user. Value is null when UserAgent has not been retrieved or the property arender.server.perf.logger.useragent.fetch is false. Method Method name that have been executed and where informations are retrieved from. MimeType MimeType of document used in the executed method. Value is equal to null if method is not equal to DocumentServiceMapper.getDocumentLayout(..). DocumentId DocumentId of document used in the executed method. Value is equal to null when executed method has no need of a documentId. DocumentIdRevertedParams Parameters encoded in the documentId. Value is égal to null when property arender.server.perf.logger.document.id.params.fetch is equal to false. Field is not logged if the documentId has no encoded parameters in it. Result Indicate if the method have been executed successfully. Value is equal to OK if success and KO if failed. Exception Exception thrown when there is method execution error. Value is equal to null if no error. Args List of arguments of the method. Arguments are between square brackets and separated by comma. List of methods logged from rendition : Method Description Parameters Error thrown alterDocumentContent(..) Used when downloading with annotation, saving or updating a document from the documentBuilder List of DocumentId , AlterContentDescription AlterContentOperationException, DocumentNotAvailableException compareDocuments(..) Used when comparing two documents leftDocumentId, rightDocumentId DocumentNotAvailableException compareImages(..) Used when comparing two images documentLeft, documentRight, fuzz, highlightColor , lowlightColor DocumentNotAvailableException convertStampAppearance(..) Used to convert stamp appearances of PDFBox to stamp appearance of ARender List of Annotation DocumentNotAvailableException createPrintablePDF(..) Used at document printing createPrintablePDFStreamed(..) Used at document printing HttpServletResponse evict(..) extractAnnotations(..) Extract annotations from given PDF file formatType, bytes DocumentNotAvailableException generateAnnotations(..) Generate FDF annotations from ARender annotations. Used when downloading with annotation formatType, List of Annotation DocumentNotAvailableException, IOException generatePDFWithFDFAnnotations(..) Used at document downloading with FDF annotations List of Annotation DocumentNotAvailableException, IOException getAdvancedSearchPageResult(..) Used at advanced search for given page searchOptions, pageNumber DocumentNotAvailableException getAdvancedSearchPagesWithResult(..) Used at advanced search for all pages searchOptions DocumentNotAvailableException getAnnotationAccessor(..) Used when document has annotations getAnnotationsContainingSearchText(..) Used at search to retrieve a list of annotation containing the searched text in given page List of Annotation , searchOptions, pageNumber DocumentNotAvailableException getBookmarks(..) Retrieve bookmarks at document loading DocumentNotAvailableException getDocumentAccessor(..) Retrieve document accessor at document loading DocumentAccessorSelector DocumentNotAvailableException getDocumentAccessorContent(..) Retrieve content of the document DocumentAccessorSelector DocumentNotAvailableException getDocumentAccessorController(..) Retrieve document accessor controller getDocumentDPI(..) Retrieve DPI of a page of a document DocumentAccessorSelector, pageNumber Exception getDocumentLayout(..) Retrieve the document layout at document loading DocumentNotAvailableException getDocumentMetadata(..) Retrieve the metadata at document loading DocumentNotAvailableException getPageContents(..) Retrieve textual content of the given page pageNumber DocumentNotAvailableException, PageOutOfRangeException, DocumentFormatNotSupportedException getPageImageStream(..) Retrieve the image of the given page. Used for thumbnails and displayed pages pageNumber, PageImageDescription, HttpServletResponse DocumentNotAvailableException, DocumentFormatNotSupportedException getPageResult(..) Retrieve search results for a given page searchQuery, pageNumber, searchOptions DocumentNotAvailableException getPagesWithResult(..) Retrieve search results for all pages searchQuery DocumentNotAvailableException getSize(..) Retrieve document size DocumentAccessorSelector DocumentNotAvailableException getVideoChunk(..) Retrieve a chunk of a video file start, length, HttpServletResponse DocumentNotAvailableException, DocumentFormatNotSupportedException, IOException hasDocument(..) Check is the micro service DFS has the document loadDocumentAccessor(..) Load a document from his documentAccessor DocumentAccessor DocumentNotAvailableException, DocumentFormatNotSupportedException loadDocumentAccessor(..) Load a document from his documentAccessor and selector DocumentAccessor , DocumentAccessorSelector DocumentNotAvailableException loadPartialDocument(..) Load a part of the document contentBuffer, offset, finished DocumentNotAvailableException, DocumentFormatNotSupportedException startLoadPartialDocument(..) Start to load a part of the document mimeType, documentTitle, contentSize IOException uploadDocument(..) Used to upload a document in ARender mimeType, documentTitle, inputStream List of methods logged from UI : Method Description Parameters Error thrown alterDocumentContent(..) Used when downloading with annotation, saving or updating a document from the documentBuilder sourceDocumentIdList, description AlterContentOperationException, DocumentFormatNotSupportedException, DocumentNotAvailableException compareDocuments(..) Used when comparing two documents documentIdLeft, documentIdRight DocumentNotAvailableException, DocumentServiceDelegateNotAvailable, DocumentFormatNotSupportedException compareImages(..) Used when comparing two images documentIdLeft, documentIdRight, fuzz, highlightColor, lowlightColor DocumentNotAvailableException, DocumentServiceDelegateNotAvailable, DocumentFormatNotSupportedException convertStampAppearance(..) Used to convert stamp appearances of PDFBox to stamp appearance of ARender stampAnnotations DocumentFormatNotSupportedException createPrintablePDF(..) Used at document printing arenderAnnotations DocumentNotAvailableException DownloadServlet.doGet(..) Used at document downloading methodName, revertedDocumentIdParameters evict(..) extractAnnotations(..) Extract annotations from given PDF file sourceId, formatType, contents DocumentFormatNotSupportedException generateAnnotations(..) Generate FDF annotations from ARender annotations. Used when downloading with annotation formatType, arenderAnnotations DocumentNotAvailableException generatePDFWithFDFAnnotations(..) Used at document downloading with FDF annotations arenderAnnotations DocumentNotAvailableException getAdvancedSearchPageResult(..) Used at advanced search for given page searchOptions, pageNumber DocumentNotAvailableException, DocumentFormatNotSupportedException getAdvancedSearchPagesWithResult(..) Used at advanced search for all pages searchOptions DocumentNotAvailableException getAnnotationAccessor(..) Used when document has annotations DocumentNotAvailableException, AnnotationsNotSupportedException getAnnotationsContainingSearchText(..) Used at search to retrieve a list of annotation containing the searched text in given page annotations, searchOptions, pageNumber AnnotationsNotSupportedException, DocumentNotAvailableException getBookmarks(..) Retrieve bookmarks at document loading DocumentNotAvailableException getDocumentAccessor(..) Retrieve document accessor at document loading documentAccessorSelector DocumentNotAvailableException, IOException getDocumentAccessorContent(..) Retrieve content of the document documentAccessorSelector DocumentNotAvailableException getDocumentDPI(..) Retrieve DPI of a page of a document documentAccessorSelector, page Exception getDocumentLayout(..) Retrieve the document layout at document loading DocumentFormatNotSupportedException, DocumentNotAvailableException getDocumentMetadata(..) Retrieve the metadata at document loading DocumentNotAvailableException, DocumentFormatNotSupportedException getPageContents(..) Retrieve textual content of the given page pageNumber DocumentNotAvailableException, PageOutOfRangeException, DocumentFormatNotSupportedException getPageImage(..) Retrieve the image of the given page. Used for thumbnails and displayed pages page, pageImageDescription DocumentNotAvailableException, DocumentFormatNotSupportedException, PageOutOfRangeException, IOException getPageResult(..) Retrieve search results for a given page searchText, pageNumber, searchOptions DocumentNotAvailableException, DocumentFormatNotSupportedException getPagesWithResult(..) Retrieve search results for all pages searchText DocumentNotAvailableException getTargetsWeather(..) Used when accessing at arendergwt\/weather isPrettyHtmlPrint hasCurrentUserParsedDocument(..) Check if the document is available for the current user loadDocumentAccessor(..) Load a document from his documentAccessor documentAccessor DocumentNotAvailableException, DocumentFormatNotSupportedException loadDocumentAccessor(..) Load a document from his documentAccessor and selector documentAccessor, documentAccessorSelector loadDocument(..) Load an already parsed document document mayProcessAnnotationRendition(..) Try to generate a document with annotations sharedDocumentId DocumentFormatNotSupportedException notifyOpeningTimes(..) Used to notify that a document is open and displayed in ARender moduleLoadingTime, documentLoadingTime parseLoadingQueryUrl(..) Used when URL using loadingQuery identifier DocumentNotAvailableException, DocumentFormatNotSupportedException parseReversibleDocumentId(..) DocumentNotAvailableException, DocumentFormatNotSupportedException parseURL(..) Parse URL used before trying to execute action like opening a document applicationContext, request DocumentNotAvailableException, DocumentFormatNotSupportedException PrintServlet.doGet(..) Executed at document printing methodName, revertedDocumentIdParameters uploadDocument(..) Used to upload a document in ARender mimeType, documentTitle, inputStream validateQueryToken(..) Validate if the given token in the request ok or not queryURL /p>p>monitoring/p>p>performance/p>p>log/p>, url: https:\/\/docs.arender.io\/v4\/performance\/monitoring\/ }, { value: Testing, path: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/test\/, label: p>The test jar « arondor-arender-rendition-tester-{VERSION-NUMBER}-jar-with-dependencies.jar », allow the user to launch some functional test on rendition server with following options as admin:\n$\u0026gt; java -jar arondor-arender-rendition-tester-{VERSION-NUMBER}.jar Option Description d Define the rendition server to use. w Width of generated pictures. The given parameter can be the width or a width gap with the number to increment. (Default value: 595) t Number of documents to concurrently process: simulate several users l When user open a document (URL), this one is get before to be sent to rendition server c Disable conversion of pages in pictures p Generated pages./p>p>The test jar « arondor-arender-rendition-tester-{VERSION-NUMBER}-jar-with-dependencies.jar », allow the user to launch some functional test on rendition server with following options as admin:\n$\u0026gt; java -jar arondor-arender-rendition-tester-{VERSION-NUMBER}.jar Option Description d Define the rendition server to use. w Width of generated pictures. The given parameter can be the width or a width gap with the number to increment. (Default value: 595) t Number of documents to concurrently process: simulate several users l When user open a document (URL), this one is get before to be sent to rendition server c Disable conversion of pages in pictures p Generated pages. The configuration is the same as width parameter, the page is directly given or given in a gap. (Default: all pages) n Disable pages content getting back z Waiting time between parsing and pages conversion (Default: 0) o Output folder where are stored the pictures. If no folder is given, picture are stored in cache f Path of a file containing a test files list v Test reporting file path (CSV) r Test reporting file path (XML) k Output folder where are stored renditioned documents h Help menu Basic test: This test is based on the default file of rendition server. To launch the test, all you need is, via the console, go to jar location and type the following command: $\u0026gt; java -jar arondor-arender-rendition-tester-{VERSION-NUMBER}.jar -d http:\/\/rendition-server:8761\/ -w \u0026#34;(100,1100,100)\u0026#34; -t 4 -v report_ARender.csv adapt the port 8761 depending on your configuration In order to test the rendition server against business sample files:\n create a files.txt in the tester folder add one absolute file path per line To launch the test, all you need is, via the console, go to jar location and type the following command:\n$\u0026gt; java -jar arondor-arender-rendition-tester-{VERSION-NUMBER}.jar -d http:\/\/rendition-server:8761\/ -w \u0026#34;(100,1100,100)\u0026#34; -t 4 -l -f .\/fichiers.txt -v rapport_ARender.csv Analysis report Columns Column Description Name Metric name Total Total execution duration (ms) Calls Total number of calls Minimum Minimum execution duration (ms) Maximum Maximum execution duration (ms) TheoricalRate Theorical rate of executions per second and client thread EffectiveRate Effective rate of executions per second Statistics Image_IM()${width}_0: renditions of pages of width ${width} (px) Image: renditions of all pages Image_PageContents: extraction of page textual content Fetch_DocumentPageLayout: extraction of document layout information (mime type, page count, page dimensions) and conversion if necessary Report example (4 threads) name total calls minimum maximum average theoreticalRate effectiveRate Open 10 1 10 10 10.0 100.0 0.25967282 Fetch_DocumentPageLayout 170 1 170 170 170 5.882353 0.25974026 Image_IM_100_0 771 19 17 83 40.57895 24.64332 4.9337835 Image_IM_200_0 317 19 11 31 16.68421 59.9369159.93691 4.9325027 Image_IM_300_0 427 19 14 50 22.473684 44.496487 4.935065 Image_IM_500_0 831 19 29 95 43.736843 22.86402 4.9337835 Image_IM_400_0 648 19 26 53 34.105263 29.320988 4.9337835 Image_IM_600_0 1070 19 35 87 56.31579 17.75701 4.9337835 Image_IM_700_0 1409 19 40 150 74.1579 13.484741 4.9325027 Image_IM_800_0 1411 19 48 148 74.26316 13.465628 4.9325027 Image_IM_900_0 1808 19 59 211 95.1579 10.508849 4.935065 Image_IM_1000_0 1973 19 74 149 103.8421 9.630005 4.9337835 Image_IM_1100_0 2222 19 86 176 116.947365 8.550855 4.9337835 Image 12875 209 11 211 61.60287 16.23301 54.271618 Image_PageContents 561 209 1 42 2.6842105 372.549 54.271618 To conclude, this report shows that:\n the average time to generate 1000 pixels images is 104 milliseconds the rendition server was able to render 54 pages per second PDF layout extract took 170 millisecondes /p>p>rendition/p>p>test/p>, url: https:\/\/docs.arender.io\/installation\/standalone\/rendition\/test\/ }, { value: Testing, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/test\/, label: p>The test jar « arondor-arender-rendition-tester-{VERSION-NUMBER}-jar-with-dependencies.jar », allow the user to launch some functional test on rendition server with following options as admin:\n$\u0026gt; java -jar arondor-arender-rendition-tester-{VERSION-NUMBER}.jar Option Description d Define the rendition server to use. w Width of generated pictures. The given parameter can be the width or a width gap with the number to increment. (Default value: 595) t Number of documents to concurrently process: simulate several users l When user open a document (URL), this one is get before to be sent to rendition server c Disable conversion of pages in pictures p Generated pages./p>p>The test jar « arondor-arender-rendition-tester-{VERSION-NUMBER}-jar-with-dependencies.jar », allow the user to launch some functional test on rendition server with following options as admin:\n$\u0026gt; java -jar arondor-arender-rendition-tester-{VERSION-NUMBER}.jar Option Description d Define the rendition server to use. w Width of generated pictures. The given parameter can be the width or a width gap with the number to increment. (Default value: 595) t Number of documents to concurrently process: simulate several users l When user open a document (URL), this one is get before to be sent to rendition server c Disable conversion of pages in pictures p Generated pages. The configuration is the same as width parameter, the page is directly given or given in a gap. (Default: all pages) n Disable pages content getting back z Waiting time between parsing and pages conversion (Default: 0) o Output folder where are stored the pictures. If no folder is given, picture are stored in cache f Path of a file containing a test files list v Test reporting file path (CSV) r Test reporting file path (XML) k Output folder where are stored renditioned documents h Help menu Basic test: This test is based on the default file of rendition server. To launch the test, all you need is, via the console, go to jar location and type the following command: $\u0026gt; java -jar arondor-arender-rendition-tester-{VERSION-NUMBER}.jar -d http:\/\/rendition-server:8761\/ -w \u0026#34;(100,1100,100)\u0026#34; -t 4 -v report_ARender.csv adapt the port 8761 depending on your configuration In order to test the rendition server against business sample files:\n create a files.txt in the tester folder add one absolute file path per line To launch the test, all you need is, via the console, go to jar location and type the following command:\n$\u0026gt; java -jar arondor-arender-rendition-tester-{VERSION-NUMBER}.jar -d http:\/\/rendition-server:8761\/ -w \u0026#34;(100,1100,100)\u0026#34; -t 4 -l -f .\/fichiers.txt -v rapport_ARender.csv Analysis report Columns Column Description Name Metric name Total Total execution duration (ms) Calls Total number of calls Minimum Minimum execution duration (ms) Maximum Maximum execution duration (ms) TheoricalRate Theorical rate of executions per second and client thread EffectiveRate Effective rate of executions per second Statistics Image_IM()${width}_0: renditions of pages of width ${width} (px) Image: renditions of all pages Image_PageContents: extraction of page textual content Fetch_DocumentPageLayout: extraction of document layout information (mime type, page count, page dimensions) and conversion if necessary Report example (4 threads) name total calls minimum maximum average theoreticalRate effectiveRate Open 10 1 10 10 10.0 100.0 0.25967282 Fetch_DocumentPageLayout 170 1 170 170 170 5.882353 0.25974026 Image_IM_100_0 771 19 17 83 40.57895 24.64332 4.9337835 Image_IM_200_0 317 19 11 31 16.68421 59.9369159.93691 4.9325027 Image_IM_300_0 427 19 14 50 22.473684 44.496487 4.935065 Image_IM_500_0 831 19 29 95 43.736843 22.86402 4.9337835 Image_IM_400_0 648 19 26 53 34.105263 29.320988 4.9337835 Image_IM_600_0 1070 19 35 87 56.31579 17.75701 4.9337835 Image_IM_700_0 1409 19 40 150 74.1579 13.484741 4.9325027 Image_IM_800_0 1411 19 48 148 74.26316 13.465628 4.9325027 Image_IM_900_0 1808 19 59 211 95.1579 10.508849 4.935065 Image_IM_1000_0 1973 19 74 149 103.8421 9.630005 4.9337835 Image_IM_1100_0 2222 19 86 176 116.947365 8.550855 4.9337835 Image 12875 209 11 211 61.60287 16.23301 54.271618 Image_PageContents 561 209 1 42 2.6842105 372.549 54.271618 To conclude, this report shows that:\n the average time to generate 1000 pixels images is 104 milliseconds the rendition server was able to render 54 pages per second PDF layout extract took 170 millisecondes /p>p>rendition/p>p>test/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/test\/ }, { value: Browser support, path: https:\/\/docs.arender.io\/what-is-arender\/browser-support\/, label: p>Browser ARender v5 Google Chrome Supported Mozilla Firefox Supported Microsoft Edge Supported Android Chrome Supported Safari Last Safari version for macOS Monterey, macOS Big Sur and macOS Catalina Safari Mobile Version 11\u002b Internet Explorer Supported* * With ARender in version 4/p>p> Browser ARender v5 Google Chrome Supported Mozilla Firefox Supported Microsoft Edge Supported Android Chrome Supported Safari Last Safari version for macOS Monterey, macOS Big Sur and macOS Catalina Safari Mobile Version 11\u002b Internet Explorer Supported* * With ARender in version 4\n/p>, url: https:\/\/docs.arender.io\/what-is-arender\/browser-support\/ }, { value: Complete example to add redact annotations, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/complete-example-of-redact\/, label: p>In this page we will detail how to create redact annotations from the document transformations REST API.\nRedact annotation on a given text Here, we will use the text \u0026ldquo;Test business\u0026rdquo; as an example. To redact a specific text in the document, we first need to retrieve the position related to.\nRetrieving the position of a text To retrieve the position of the text, the searchText endpoint is used.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bXlkb2N1ZW1udA\/pages\/0\/text?/p>p>In this page we will detail how to create redact annotations from the document transformations REST API.\nRedact annotation on a given text Here, we will use the text \u0026ldquo;Test business\u0026rdquo; as an example. To redact a specific text in the document, we first need to retrieve the position related to.\nRetrieving the position of a text To retrieve the position of the text, the searchText endpoint is used.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bXlkb2N1ZW1udA\/pages\/0\/text?searchTextTest%20business\u0026amp;caseSensitivefalse\u0026amp;accentSensitivefalse\u0026amp;regexfalse\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; We are working here on the first page of the document b64_bXlkb2N1ZW1udA\nThe result tells us the position of the desired text:\n{\u0026#34;searchResults\u0026#34;:{\u0026#34;positionText\u0026#34;:{\u0026#34;pageNumber\u0026#34;:0,\u0026#34;position\u0026#34;:{\u0026#34;x\u0026#34;:42.52,\u0026#34;y\u0026#34;:245.07303,\u0026#34;w\u0026#34;:55.264004,\u0026#34;h\u0026#34;:12.0},\u0026#34;text\u0026#34;:\u0026#34;Test Business\u0026#34;,\u0026#34;individualWidths\u0026#34;:5.3768005,4.8927994,4.4000015,2.4463997,2.4463997,5.869602,4.8927994,4.4000015,1.953598,4.8927994,4.8927994,4.4000015,4.4000015,\u0026#34;fontSize\u0026#34;:8.0,\u0026#34;font\u0026#34;:\u0026#34;JQRQXM\u002bHelvetica\u0026#34;,\u0026#34;clickableDestination\u0026#34;:null,\u0026#34;paragraphId\u0026#34;:3,\u0026#34;rightToLeftText\u0026#34;:false,\u0026#34;startTime\u0026#34;:-1.0,\u0026#34;rotation\u0026#34;:0},\u0026#34;textRangeList\u0026#34;:{\u0026#34;firstCharacter\u0026#34;:0,\u0026#34;lastCharacter\u0026#34;:12}}} Create the redact annotation Now, we know that the position of the text corresponds to:\n{\u0026#34;x\u0026#34;:42.52,\u0026#34;y\u0026#34;:245.07303,\u0026#34;w\u0026#34;:55.264004,\u0026#34;h\u0026#34;:12.0} Let\u0026rsquo;s apply these coordinates to the annotation creation template:\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Content-Type: application\/json\u0026#39; \\ -d \u0026#39;{ \u0026#34;annotations\u0026#34;: { \u0026#34;annotations\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.annotation.api.RedactTextElemType\u0026#34;, \u0026#34;documentId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;b64_bXlkb2N1ZW1udA\u0026#34; }, \u0026#34;page\u0026#34;: 0, \u0026#34;id\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;non-null-value\u0026#34; }, \u0026#34;coords\u0026#34;: { \u0026#34;x\u0026#34;: 42.52, \u0026#34;y\u0026#34;: 245.07303, \u0026#34;w\u0026#34;: 55.264004, \u0026#34;h\u0026#34;: 12.0 } , \u0026#34;color\u0026#34;: { \u0026#34;r\u0026#34;: 0, \u0026#34;g\u0026#34;: 0, \u0026#34;b\u0026#34;: 0 } } }, \u0026#34;format\u0026#34;: \u0026#34;pdf\u0026#34;, \u0026#34;transformationDetails\u0026#34;: { \u0026#34;transformationElements\u0026#34;: { \u0026#34;documentId\u0026#34;: \u0026#34;b64_bXlkb2N1ZW1udA\u0026#34;, \u0026#34;pagesSelectionList\u0026#34;: { \u0026#34;maxPage\u0026#34;: 1, \u0026#34;minPage\u0026#34;: 1 } } , \u0026#34;documentTitle\u0026#34;: \u0026#34;MyDocument\u0026#34; } }\u0026#39; The result gives the id of the transformation:\n{\u0026#34;transformationOrderId\u0026#34;:{\u0026#34;id\u0026#34;:\u0026#34;7325e176-400c-460b-b51e-a8026b78c62a\u0026#34;}} Retrieve information from the transformation Let\u0026rsquo;s retrieve the document id via the previously requested transformation order: 7325e176-400c-460b-b51e-a8026b78c62a\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\/7325e176-400c-460b-b51e-a8026b78c62a\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; Result: here we retrieve the transformationResultDocumentID corresponding to b64_NGZlMWJlMTktNGYyNS00MjAzLWI1ZGQtNGNiYTkxMmI0OGIx\n{\u0026#34;transformationOrderId\u0026#34;:{\u0026#34;id\u0026#34;:\u0026#34;71266b11-2016-4bb6-bcd8-562cf6ca6760\u0026#34;},\u0026#34;transformationDetails\u0026#34;:{\u0026#34;transformationElements\u0026#34;:{\u0026#34;documentId\u0026#34;:{\u0026#34;id\u0026#34;:\u0026#34;b64_bXlkb2N1ZW1udA\u0026#34;},\u0026#34;documentTitle\u0026#34;:null,\u0026#34;pagesSelectionList\u0026#34;:{\u0026#34;minPage\u0026#34;:1,\u0026#34;maxPage\u0026#34;:1}},\u0026#34;documentTitle\u0026#34;:\u0026#34;test123\u0026#34;},\u0026#34;currentState\u0026#34;:\u0026#34;PROCESSED\u0026#34;,\u0026#34;transformationResultDocumentID\u0026#34;:{\u0026#34;id\u0026#34;:\u0026#34;b64_NGZlMWJlMTktNGYyNS00MjAzLWI1ZGQtNGNiYTkxMmI0OGIx\u0026#34;},\u0026#34;annotations\u0026#34;:{\u0026#34;annotations\u0026#34;:{\u0026#34;type\u0026#34;:\u0026#34;com.arondor.viewer.annotation.api.SquareElemType\u0026#34;,\u0026#34;color\u0026#34;:null,\u0026#34;date\u0026#34;:null,\u0026#34;flags\u0026#34;:null,\u0026#34;id\u0026#34;:null,\u0026#34;documentId\u0026#34;:{\u0026#34;id\u0026#34;:\u0026#34;b64_bXlkb2N1ZW1udA\u0026#34;},\u0026#34;lastModifier\u0026#34;:null,\u0026#34;page\u0026#34;:0,\u0026#34;position\u0026#34;:{\u0026#34;x\u0026#34;:42.52,\u0026#34;y\u0026#34;:245.07303,\u0026#34;w\u0026#34;:55.264004,\u0026#34;h\u0026#34;:12.0},\u0026#34;creator\u0026#34;:null,\u0026#34;creationDate\u0026#34;:null,\u0026#34;opacity\u0026#34;:null,\u0026#34;subject\u0026#34;:null,\u0026#34;security\u0026#34;:null,\u0026#34;startTime\u0026#34;:-1.0,\u0026#34;endTime\u0026#34;:-1.0,\u0026#34;contentsRichtext\u0026#34;:null,\u0026#34;contents\u0026#34;:null,\u0026#34;popup\u0026#34;:null,\u0026#34;fringe\u0026#34;:null,\u0026#34;interiorColor\u0026#34;:{\u0026#34;r\u0026#34;:0,\u0026#34;g\u0026#34;:0,\u0026#34;b\u0026#34;:0},\u0026#34;width\u0026#34;:null,\u0026#34;dashes\u0026#34;:null,\u0026#34;style\u0026#34;:null,\u0026#34;intensity\u0026#34;:null}},\u0026#34;format\u0026#34;:\u0026#34;pdf\u0026#34;,\u0026#34;errorMessage\u0026#34;:null,\u0026#34;queuedDate\u0026#34;:\u0026#34;2024-08-07T14:28:51.188\u002b02:00\u0026#34;,\u0026#34;processedDate\u0026#34;:\u0026#34;2024-08-07T14:28:51.237\u002b02:00\u0026#34;,\u0026#34;queuedTime\u0026#34;:3,\u0026#34;processingTime\u0026#34;:45} Download the document from its ID Now that we have the document id b64_NGZlMWJlMTktNGYyNS00MjAzLWI1ZGQtNGNiYTkxMmI0OGIx we can download it:\ncurl -X GET \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_NGZlMWJlMTktNGYyNS00MjAzLWI1ZGQtNGNiYTkxMmI0OGIx\/file?formatpdf\u0026#39; \\ -o my_pdf.pdf This downloaded document has the desired redacted annotation.\nOther way to create redact annotations Create a redact annotation in the defined zone The annotation creation template can directly be used to create a annotation in a zone. To create an annotation at the positions {\u0026ldquo;x\u0026rdquo;:35.0,\u0026ldquo;y\u0026rdquo;:25.0,\u0026ldquo;w\u0026rdquo;:160.0,\u0026ldquo;h\u0026rdquo;:25.0} the call is:\ncurl -X \u0026#39;POST\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/transformations\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Content-Type: application\/json\u0026#39; \\ -d \u0026#39;{ \u0026#34;annotations\u0026#34;: { \u0026#34;annotations\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.annotation.api.RedactElemType\u0026#34;, \u0026#34;documentId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;b64_bXlkb2N1ZW1udA\u0026#34; }, \u0026#34;page\u0026#34;: 0, \u0026#34;id\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;non-null-value\u0026#34; }, \u0026#34;position\u0026#34;: { \u0026#34;x\u0026#34;: 35.0, \u0026#34;y\u0026#34;: 25.0, \u0026#34;w\u0026#34;: 160.0, \u0026#34;h\u0026#34;: 25.0 }, \u0026#34;interiorColor\u0026#34;: { \u0026#34;r\u0026#34;: 0, \u0026#34;g\u0026#34;: 0, \u0026#34;b\u0026#34;: 0 } } }, \u0026#34;format\u0026#34;: \u0026#34;pdf\u0026#34;, \u0026#34;transformationDetails\u0026#34;: { \u0026#34;transformationElements\u0026#34;: { \u0026#34;documentId\u0026#34;: \u0026#34;b64_bXlkb2N1ZW1udA\u0026#34;, \u0026#34;pagesSelectionList\u0026#34;: { \u0026#34;maxPage\u0026#34;: 1, \u0026#34;minPage\u0026#34;: 1 } } , \u0026#34;documentTitle\u0026#34;: \u0026#34;MyDocument\u0026#34; } }\u0026#39; Create a redact annotation based on a rule We can create the annotations based on rules. As example: be able to redact all amounts in a document. This regex is then used: ($0-9\u002b(.0-9\u002b)?)\nWe first need to use the URL encoding to the given regex to get: %28%5C%24%5B0-9%5D%2B%28.%5B0-9%5D%2B%29%3F%29\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bXlkb2N1ZW1udA\/pages\/0\/text?searchText%28%5C%24%5B0-9%5D%2B%28.%5B0-9%5D%2B%29%3F%29\u0026amp;caseSensitivefalse\u0026amp;accentSensitivefalse\u0026amp;regextrue\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; The result tells us all the positions of the matching text, now we can use the annotation creation template, as seen previously, to create the desired annotations.\n/p>p>example/p>p>redact/p>p>transformation/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/transformations\/complete-example-of-redact\/ }, { value: Development, path: https:\/\/docs.arender.io\/development\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/development\/ }, { value: GET Document Content, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-document-content\/, label: p>This API allows you to retrieve the content of a document in specific format if provided otherwise in the original format.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/file Resource path:\n Variable Required Description documentId Yes The ID of a document Query params:\n Parameter Required Description format No The output format of the document Response :/p>p>This API allows you to retrieve the content of a document in specific format if provided otherwise in the original format.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/file Resource path:\n Variable Required Description documentId Yes The ID of a document Query params:\n Parameter Required Description format No The output format of the document Response :\n Type Description HttpServletResponse The document content as a file Example: Get Document Content The following example retrieves the content of a document with the specified document ID in PDF format. The parameter -o allow to save the result in an output file.\ncurl -X GET \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/file?formatpdf\u0026#39; -o document.pdf /p>p>get document content/p>p>document/p>p>download/p>p>format/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-document-content\/ }, { value: Monitoring, path: https:\/\/docs.arender.io\/installation\/docker\/monitoring\/, label: p>Health check probe Component Liveness Readiness arender-ui \/ \/arendergwt\/weather arender-document-service-broker \/swagger-ui\/index.html \/health\/readiness arender-document-renderer \/actuator\/health \/health\/readiness arender-document-text-handler \/actuator\/health \/health\/readiness arender-document-converter \/actuator\/health \/health\/readiness Log files locations Component Files arender-ui \/usr\/local\/tomcat\/logs\/localhost.{year-month-day}.log, stdout arender-document-service-broker \/arender\/logs\/arender-server.log arender-document-renderer \/arender\/logs\/document-renderer\/arender-jnipdf.log arender-document-text-handler \/arender\/logs\/document-text-handler\/arender-pdfbox.log arender-document-converter \/arender\/logs\/document-converter\/arender-taskconversion.log /p>p>Health check probe Component Liveness Readiness arender-ui \/ \/arendergwt\/weather arender-document-service-broker \/swagger-ui\/index.html \/health\/readiness arender-document-renderer \/actuator\/health \/health\/readiness arender-document-text-handler \/actuator\/health \/health\/readiness arender-document-converter \/actuator\/health \/health\/readiness Log files locations Component Files arender-ui \/usr\/local\/tomcat\/logs\/localhost.{year-month-day}.log, stdout arender-document-service-broker \/arender\/logs\/arender-server.log arender-document-renderer \/arender\/logs\/document-renderer\/arender-jnipdf.log arender-document-text-handler \/arender\/logs\/document-text-handler\/arender-pdfbox.log arender-document-converter \/arender\/logs\/document-converter\/arender-taskconversion.log /p>p>docker/p>p>monitoring/p>, url: https:\/\/docs.arender.io\/installation\/docker\/monitoring\/ }, { value: Monitoring, path: https:\/\/docs.arender.io\/v4\/install\/docker\/monitoring\/, label: p>Health check probe Since 4.8.1 Before 4.8.1 Component Liveness Readiness arender-ui \/ \/arendergwt\/weather arender-document-service-broker \/swagger-ui.html \/health\/readiness arender-document-renderer \/health\/health \/health\/readiness arender-document-text-handler \/health\/health \/health\/readiness arender-document-converter \/health\/health \/health\/readiness Component Liveness Readiness arender-ui \/ \/arendergwt\/weather arender-document-service-broker \/health\/records \/weather arender-document-renderer \/health\/record \/health\/record arender-document-text-handler \/health\/record \/health\/record arender-document-converter \/health\/record \/health\/record Log files locations Component Files arender-ui \/usr\/local\/tomcat\/logs\/localhost./p>p>Health check probe Since 4.8.1 Before 4.8.1 Component Liveness Readiness arender-ui \/ \/arendergwt\/weather arender-document-service-broker \/swagger-ui.html \/health\/readiness arender-document-renderer \/health\/health \/health\/readiness arender-document-text-handler \/health\/health \/health\/readiness arender-document-converter \/health\/health \/health\/readiness Component Liveness Readiness arender-ui \/ \/arendergwt\/weather arender-document-service-broker \/health\/records \/weather arender-document-renderer \/health\/record \/health\/record arender-document-text-handler \/health\/record \/health\/record arender-document-converter \/health\/record \/health\/record Log files locations Component Files arender-ui \/usr\/local\/tomcat\/logs\/localhost.{year-month-day}.log, stdout arender-document-service-broker \/arender\/logs\/arender-server.log arender-document-renderer \/arender\/logs\/document-renderer\/arender-jnipdf.log arender-document-text-handler \/arender\/logs\/document-text-handler\/arender-pdfbox.log arender-document-converter \/arender\/logs\/document-converter\/arender-taskconversion.log /p>p>docker/p>p>monitoring/p>, url: https:\/\/docs.arender.io\/v4\/install\/docker\/monitoring\/ }, { value: Performance, path: https:\/\/docs.arender.io\/guides\/performance\/, label: p>Performance planning - the Theory ARender\u0026rsquo;s architectural design is split into two distinct components\n Presentation Server (Web-UI) Rendition Server Presentation Server The Presentation Server, deployed in a standard J2EE Application Server, connects the user, the ECM repository and the Rendition Server. As such it does not perform real work, and does not involve much CPU or RAM in order to work. Standard recommendations for these servers involve at least 128Mb of extra RAM of the JVM in the Application Server./p>p>Performance planning - the Theory ARender\u0026rsquo;s architectural design is split into two distinct components\n Presentation Server (Web-UI) Rendition Server Presentation Server The Presentation Server, deployed in a standard J2EE Application Server, connects the user, the ECM repository and the Rendition Server. As such it does not perform real work, and does not involve much CPU or RAM in order to work. Standard recommendations for these servers involve at least 128Mb of extra RAM of the JVM in the Application Server.\nRendition Server The Rendition Server performs three distinct, important tasks:\n Identify document type, analyze its layout (number of pages, page size) Extract text information for each page, for search\/annotation\/copy-paste features Render pages into images in a streaming manner Document identification and analysis involves mostly disk I\/O and a bit of RAM, but the real worker here is the page rendition part, which requires a large part of RAM and CPU power. As a result, correctly dimensioning a production-grade ARender platform only implies to have a consistent estimation of the number of pages to be rendered per second.\nPer-page performance ARender has a very powerful page image renderer, written in native C for performance. As a rule of thumb, modern hardware and virtual machines are able to render pages with the following performances:\n Image size Width (pixels) Timing (ms) Thumbnails 100px 23ms Mobile device screen 348px 38ms Desktop screen, 2\/3 size 595px 68ms Desktop screen, full screen 1280px 191ms These figures are taken at server-side (not considering network time), on a 8-CPU multi-document scenario. Collecting these figures allows to compute how much CPUs are required to process the number of pages asked.\nEstimated usage On the other hand, we have to estimate the number of pages the rendition server will ask. This is usually estimated by estimating the following:\n Total number of users (ECM users for example) Average percentage of users simultaneously active Average number of documents opened per hour, per user Average number of pages per document, per document format Having this allows to give an accurate average for the number of documents open per second, and then the number of pages open per second. Final dimensioning should take care of the fact that:\n ARender does not necessarily render each page of the document: only the pages shown to the user (and the ones surrounding) are rendered. As a result, the larger the document, the smaller the ratio between pages rendered and total pages. Dimensioning must be done for the busy-hour (peak activity), so whole-day averages can be misleading. As a rule of thumb, a busy-hour can represent from 25% to 50% of the daily activity, depending on the business and organization. Clustering and Rendition farms ARender natively supports horizontal scalability, both for the Presentation server (using standard J2EE techniques), and for the Rendition server (using ARender\u0026rsquo;s rendition-client features).\nHorizontal scaling increases both reliability (high-availability) and performance (load balancing). Because load balancing is performed on a per-document basis without the need of node synchronization, two Rendition servers are considered to open twice as much documents as a single Rendition Server, with no performance loss.\nBenchmarks - Performance in the field Company type - Usage Total number of users Average number of documents opened daily Number \u0026amp; type of Rendition Servers Insurance company - Agencies \u0026amp; Extranet 20,000\u002b 350,000 2x 16 CPU, Physical machine Real Estate company - Internal\/Extranet usage 1,500 20,000 2x 4 CPU, Virtual machine Insurance company - Internal usage \u002b Batch-based document conversion using ARender 800 60,000 6x 4 CPU, Virtual machine /p>p>docker/p>, url: https:\/\/docs.arender.io\/guides\/performance\/ }, { value: Performance, path: https:\/\/docs.arender.io\/v4\/performance\/, label: p>Performance planning - the Theory ARender\u0026rsquo;s architectural design is split into two distinct components\n Presentation Server (Web-UI) Rendition Server Presentation Server The Presentation Server, deployed in a standard J2EE Application Server, connects the user, the ECM repository and the Rendition Server. As such it does not perform real work, and does not involve much CPU or RAM in order to work. Standard recommandations for these servers involve at least 128Mb of extra RAM of the JVM in the Application Server./p>p>Performance planning - the Theory ARender\u0026rsquo;s architectural design is split into two distinct components\n Presentation Server (Web-UI) Rendition Server Presentation Server The Presentation Server, deployed in a standard J2EE Application Server, connects the user, the ECM repository and the Rendition Server. As such it does not perform real work, and does not involve much CPU or RAM in order to work. Standard recommandations for these servers involve at least 128Mb of extra RAM of the JVM in the Application Server.\nRendition Server The Rendition Server performs three distinct, important tasks:\n Identify document type, analyze its layout (number of pages, page size) Extract text information for each page, for search\/annotation\/copy-paste features Render pages into images in a streaming manner Document identification and analysis involves mostly disk I\/O and a bit of RAM, but the real worker here is the page rendition part, which requires a large part of RAM and CPU power. As a result, correctly dimensioning a production-grade ARender platform only implies to have a consistent estimation of the number of pages to be rendered per second.\nPer-page performance ARender has a very powerful page image renderer, written in native C for performance. As a rule of thumb, modern hardware and virtual machines are able to render pages with the following performances:\n Image size Width (pixels) Timing (ms) Thumbnails 100px 23ms Mobile device screen 348px 38ms Desktop screen, 2\/3 size 595px 68ms Desktop screen, full screen 1280px 191ms These figures are taken at server-side (not considering network time), on a 8-CPU multi-document scenario. Collecting these figures allows to compute how much CPUs are required to process the number of pages asked.\nEstimated usage On the other hand, we have to estimate the number of pages the rendition server will ask. This is usually estimated by estimating the following:\n Total number of users (ECM users for example) Average percentage of users simultaneously active Average number of documents opened per hour, per user Average number of pages per document, per document format Having this allows to give an accurate average for the number of documents open per second, and then the number of pages open per second. Final dimensioning should take care of the fact that:\n ARender does not necessarily render each page of the document: only the pages shown to the user (and the ones surrounding) are rendered. As a result, the larger the document, the smaller the ratio between pages rendered and total pages. Dimensioning must be done for the busy-hour (peak activity), so whole-day averages can be misleading. As a rule of thumb, a busy-hour can represent from 25% to 50% of the daily activity, depending on the business and organisation. Clustering and Rendition farms ARender natively supports horizontal scalability, both for the Presentation server (using standard J2EE techniques), and for the Rendition server (using ARender\u0026rsquo;s rendition-client features).\nHorizontal scaling increases both reliability (high-availability) and performance (load balancing). Because load balancing is performed on a per-document basis without the need of node synchronization, two Rendition servers are considered to open twice as much documents as a single Rendition Server, with no performance loss.\nBenchmarks - Performance in the field Company type - Usage Total number of users Average number of documents opened daily Number \u0026amp; type of Rendition Servers Insurance company - Agencies \u0026amp; Extranet 20,000\u002b 350,000 2x 16 CPU, Physical machine Real Estate company - Internal\/Extranet usage 1,500 20,000 2x 4 CPU, Virtual machine Insurance company - Internal usage \u002b Batch-based document conversion using ARender 800 60,000 6x 4 CPU, Virtual machine /p>p>docker/p>, url: https:\/\/docs.arender.io\/v4\/performance\/ }, { value: Connectors, path: https:\/\/docs.arender.io\/v4\/connector\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/v4\/connector\/ }, { value: Get Bookmarks, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-bookmarks\/, label: p>This API allows you to retrieve the bookmarks of a specific document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/bookmarks Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description Bookmarks The bookmarks of the document Examples Get Bookmarks The example below demonstrates how to retrieve the bookmarks of a document with the ID b64_bm9yZS92SDMtMS0xMTh1735080237./p>p>This API allows you to retrieve the bookmarks of a specific document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/bookmarks Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description Bookmarks The bookmarks of the document Examples Get Bookmarks The example below demonstrates how to retrieve the bookmarks of a document with the ID b64_bm9yZS92SDMtMS0xMTh1735080237.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/bookmarks\u0026#39; \\ -H \u0026#39;accept: application\/json\u0026#39; /p>p>documentation/p>p>bookmarks/p>p>get/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-bookmarks\/ }, { value: GET document conversions, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-document-conversions\/, label: p>This API allows you to retrieve a conversion ids of a document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/conversions Resource path:\n Variable Required Description documentId Yes The ID of a document Examples Retrieve conversions The following example retrieves conversion ids of a document with ID b64_bm9yZS92SDMtMS0xMTh1735080237.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/conversions\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>This API allows you to retrieve a conversion ids of a document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/conversions Resource path:\n Variable Required Description documentId Yes The ID of a document Examples Retrieve conversions The following example retrieves conversion ids of a document with ID b64_bm9yZS92SDMtMS0xMTh1735080237.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/conversions\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>documentation/p>p>document/p>p>conversions/p>p>get/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-document-conversions\/ }, { value: GET Document existence, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-document-check\/, label: p>This API allows you to check the existence of a specific document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/check Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description HttpStatus HTTP status code indicating the existence of the document Examples Check Document The following example demonstrates how to check the existence of a document with the ID b64_bm9yZS92SDMtMS0xMTh1735080237./p>p>This API allows you to check the existence of a specific document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/check Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description HttpStatus HTTP status code indicating the existence of the document Examples Check Document The following example demonstrates how to check the existence of a document with the ID b64_bm9yZS92SDMtMS0xMTh1735080237.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/check\u0026#39; \\ -H \u0026#39;accept: application\/json\u0026#39; /p>p>documentation/p>p>check/p>p>document/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-document-check\/ }, { value: GET file chunk, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-file-chunk\/, label: p>This API allows you to retrieve a chunk of a file with a specified range of offset.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/file\/chunk Resource path:\n Variable Required Description documentId Yes The ID of a document Query params:\n Parameter Required Description format No The format of the document in which we retrieve the chunk Resource header:/p>p>This API allows you to retrieve a chunk of a file with a specified range of offset.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/file\/chunk Resource path:\n Variable Required Description documentId Yes The ID of a document Query params:\n Parameter Required Description format No The format of the document in which we retrieve the chunk Resource header:\n Variable Required Description range Yes Range value in “bytesx-y” format with x and y being integers Examples Retrieve Chunk The following example retrieves a chunk of a document with ID b64_bm9yZS92SDMtMS0xMTh1735080237 in txt format which exist in rendition.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/file\/chunk?formattxt\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; \\ -H \u0026#39;Range: bytes0-10\u0026#39; /p>p>documentation/p>p>file chunk/p>p>get/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-file-chunk\/ }, { value: GET Named Destinations, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-named-destination\/, label: p>This API allows you to retrieve the named destinations of a specific document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/destinations Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description NamedDestinations A JSON object representing the named destinations of the document Examples Retrieve Named Destinations The following example retrieves the named destinations for a document with ID b64_bm9yZS92SDMtMS0xMTh1735080237./p>p>This API allows you to retrieve the named destinations of a specific document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/destinations Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description NamedDestinations A JSON object representing the named destinations of the document Examples Retrieve Named Destinations The following example retrieves the named destinations for a document with ID b64_bm9yZS92SDMtMS0xMTh1735080237.\ncurl -X GET \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/destinations\u0026#39; \\ -H \u0026#39;accept: application\/json\u0026#39; /p>p>documentation/p>p>named destinations/p>p>get/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-named-destination\/ }, { value: GET Page Image, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-page-image\/, label: p>This API allows you to retrieve the image of a specific page in a document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/pages\/{page}\/image Resource path:\n Variable Required Description documentId Yes The ID of a document page Yes The index of the page for which you want to retrieve the image Query params:\n Variable Required Description pageImageDescription No The image description./p>p>This API allows you to retrieve the image of a specific page in a document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/pages\/{page}\/image Resource path:\n Variable Required Description documentId Yes The ID of a document page Yes The index of the page for which you want to retrieve the image Query params:\n Variable Required Description pageImageDescription No The image description. It specifies the width, rotation, and filters Response :\n Type Description Image The image file in PNG format Examples Retrieve Page Image The following example demonstrates how to retrieve the image of page 2 in the document with the ID b64_bm9yZS92SDMtMS0xMTh1735080237. The image has a width of 200 and a rotation of 90 degrees. Additionally, the image has filters applied, including contrast and brightness adjustments, as well as inversion.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/pages\/2\/image?pageImageDescriptionIM_200_90_FILTERS~C~35~B~-100~I~50\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>documentation/p>p>page image/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-page-image\/ }, { value: GET Pages Search Result, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-pages-search-result\/, label: p>This API allows you to retrieve the search results for the pages of a specific document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/pages Resource path:\n Variable Required Description documentId Yes The ID of a document Query params:\n Variable Required Description searchText Yes The text to search for accentSensitive No Determines if the search is accent-sensitive caseSensitive No Determines if the search is case-sensitive regex No Determines if the value of the searchText parameter is a regex Response :/p>p>This API allows you to retrieve the search results for the pages of a specific document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/pages Resource path:\n Variable Required Description documentId Yes The ID of a document Query params:\n Variable Required Description searchText Yes The text to search for accentSensitive No Determines if the search is accent-sensitive caseSensitive No Determines if the search is case-sensitive regex No Determines if the value of the searchText parameter is a regex Response :\n Type Description PagesSearchResult The search results for the pages in JSON format Examples Get Pages Search Result The following call generates a request to get the search results for the document with ID b64_bm9yZS92SDMtMS0xMTh1735080237. The search is performed for the text \u0026ldquo;example\u0026rdquo; with case sensitivity enabled.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/pages?searchTextexample\u0026amp;caseSensitivetrue\u0026#39; \\ -H \u0026#39;accept: application\/json\u0026#39; /p>p>documentation/p>p>search/p>p>pages/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-pages-search-result\/ }, { value: GET PDF Document Annotations, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-document-annotations\/, label: p>This API allows you to retrieve the annotations of a specific PDF document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/file\/annotations Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description InputStream The document annotations as a file in the response body Examples Retrieve Document Annotations The following example retrieves the annotations for a PDF document with the ID b64_bm9yZS92SDMtMS0xMTh1735080237./p>p>This API allows you to retrieve the annotations of a specific PDF document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/file\/annotations Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description InputStream The document annotations as a file in the response body Examples Retrieve Document Annotations The following example retrieves the annotations for a PDF document with the ID b64_bm9yZS92SDMtMS0xMTh1735080237.\ncurl -X GET \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/file\/annotations\u0026#39; \\ -H \u0026#39;accept: application\/octet-stream\u0026#39; /p>p>get document annotations/p>p>annotations/p>p>document/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-document-annotations\/ }, { value: GET Printable Document, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-printable-document\/, label: p>This API allows you to retrieve the printable version of a specific document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/printable Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description HttpServletResponse The printable document in PDF format Examples Retrieve Printable Document The following example demonstrates how to retrieve the printable document for a specific document with ID b64_bm9yZS92SDMtMS0xMTh1735080237./p>p>This API allows you to retrieve the printable version of a specific document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/printable Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description HttpServletResponse The printable document in PDF format Examples Retrieve Printable Document The following example demonstrates how to retrieve the printable document for a specific document with ID b64_bm9yZS92SDMtMS0xMTh1735080237. The parameter -o allow to save the result in an output file.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/printable\u0026#39; \\ -H \u0026#39;accept: application\/pdf\u0026#39; \\ -o printable_document.pdf /p>p>documentation/p>p>printing/p>p>document/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-printable-document\/ }, { value: GET Signatures, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-signatures\/, label: p>This API allows you to retrieve the signatures of a specific document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/signatures Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description Signatures The signatures of the document Examples Retrieve Signatures The call below generates a request to retrieve the signatures for a document with the ID b64_bm9yZS92SDMtMS0xMTh1735080237./p>p>This API allows you to retrieve the signatures of a specific document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/signatures Resource path:\n Variable Required Description documentId Yes The ID of a document Response :\n Type Description Signatures The signatures of the document Examples Retrieve Signatures The call below generates a request to retrieve the signatures for a document with the ID b64_bm9yZS92SDMtMS0xMTh1735080237.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/signatures\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>documentation/p>p>signatures/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-signatures\/ }, { value: GET text positions, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-text-position\/, label: p>This API allows you to retrieve the text position of a page.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/pages\/{page}\/text\/position Resource path:\n Variable Required Description documentId Yes The ID of a document page Yes The page where the text is located Response :\n Type Description PageContents The text of the page Examples Retrieve Signatures The call below generates a request to retrieve the first page text of document with ID b64_bm9yZS92SDMtMS0xMTh1735080237./p>p>This API allows you to retrieve the text position of a page.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/pages\/{page}\/text\/position Resource path:\n Variable Required Description documentId Yes The ID of a document page Yes The page where the text is located Response :\n Type Description PageContents The text of the page Examples Retrieve Signatures The call below generates a request to retrieve the first page text of document with ID b64_bm9yZS92SDMtMS0xMTh1735080237.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/pages\/0\/text\/position\u0026#39; \\ -H \u0026#39;accept: *\/*\u0026#39; /p>p>documentation/p>p>text/p>p>position/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/get-text-position\/ }, { value: GET Text Positions with Search in Document, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/search-document-for-text-positions\/, label: p>This API searches for text positions within a specified page range, returning an object that contains the text position found, the last page searched before the process timed out (since the backend has a defined timeout configuration), and the overall status of the search.\nAvailable starting since version 2023.12.0.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/search Resource path:\n Variable Required Description documentId Yes The ID of a document Query params:/p>p>This API searches for text positions within a specified page range, returning an object that contains the text position found, the last page searched before the process timed out (since the backend has a defined timeout configuration), and the overall status of the search.\nAvailable starting since version 2023.12.0.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/search Resource path:\n Variable Required Description documentId Yes The ID of a document Query params:\n Variable Required Description searchText Yes The text to search fromPage Yes The starting page number for the search. Index starting from 0 toPage No The ending page number for the search. If this parameter is set to -1, the search will continue until the last page of the document. Default to -1 caseSensitive No Determines if the search is case-sensitive accentSensitive No Determines if the search is accent-sensitive regex No Determines if the search text is a regular expression Response :\n Type Description MultiPagesSearchResult The search result containing the positions of the text within the document Examples Search Page for Text Positions The following example demonstrates how to search for the text \u0026ldquo;example\u0026rdquo; from page 2 to page 5 of the document with the ID b64_bm9yZS92SDMtMS0xMTh1735080237. The search is case-insensitive and accent-insensitive.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/search?searchTextexample\u0026amp;fromPage2\u0026amp;toPage5\u0026amp;caseSensitivefalse\u0026amp;accentSensitivefalse\u0026amp;regexfalse\u0026#39; \\ -H \u0026#39;accept: application\/json\u0026#39; /p>p>documentation/p>p>text search/p>p>search/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/search-document-for-text-positions\/ }, { value: GET Text Positions with Search on Page, path: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/search-page-for-text-positions\/, label: p>This API allows you to search for text positions within a specific page of a document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/pages\/{page}\/text Resource path:\n Variable Required Description documentId Yes The ID of a document page Yes The index of the page where you want to search for the text Query params:\n Variable Required Description searchText Yes The text to search caseSensitive No Determines if the search is case-sensitive accentSensitive No Determines if the search is accent-sensitive regex No Determines if the search text is a regular expression Response :/p>p>This API allows you to search for text positions within a specific page of a document.\nAPI Description Endpoint:\nGET \/documents\/{documentId}\/pages\/{page}\/text Resource path:\n Variable Required Description documentId Yes The ID of a document page Yes The index of the page where you want to search for the text Query params:\n Variable Required Description searchText Yes The text to search caseSensitive No Determines if the search is case-sensitive accentSensitive No Determines if the search is accent-sensitive regex No Determines if the search text is a regular expression Response :\n Type Description PageSearchResult The search result containing the positions of the text within the page Examples Search Page for Text Positions The following example demonstrates how to search for the text \u0026ldquo;example\u0026rdquo; within page 2 of the document with the ID b64_bm9yZS92SDMtMS0xMTh1735080237. The search is case-insensitive and accent-insensitive.\ncurl -X \u0026#39;GET\u0026#39; \\ \u0026#39;http:\/\/localhost:8761\/documents\/b64_bm9yZS92SDMtMS0xMTh1735080237\/pages\/2\/text?searchTextexample\u0026amp;caseSensitivefalse\u0026amp;accentSensitivefalse\u0026amp;regexfalse\u0026#39; \\ -H \u0026#39;accept: application\/json\u0026#39; /p>p>documentation/p>p>text search/p>, url: https:\/\/docs.arender.io\/development\/apis\/rendition\/rest\/documents\/search-page-for-text-positions\/ }, { value: Releases, path: https:\/\/docs.arender.io\/releases\/, label: p>Below you will find all ARender releases since July 2025. Older release notes are available here.\n 📅 We’ve been on a monthly cadence since January 2025, so you can expect fresh releases beginning of the month.\n December 2025 Dec 02 v2023.16.0 Release\u0026nbsp;Note · Upgrade\u0026nbsp;Note October 2025 Oct 31 v2023.15.0 Release\u0026nbsp;Note · Upgrade\u0026nbsp;Note September 2025 Sep 30 v2023.14.0 Release\u0026nbsp;Note · Upgrade\u0026nbsp;Note August 2025 Aug 29 v2023./p>p>Below you will find all ARender releases since July 2025. Older release notes are available here.\n 📅 We’ve been on a monthly cadence since January 2025, so you can expect fresh releases beginning of the month.\n December 2025 Dec 02 v2023.16.0 Release\u0026nbsp;Note · Upgrade\u0026nbsp;Note October 2025 Oct 31 v2023.15.0 Release\u0026nbsp;Note · Upgrade\u0026nbsp;Note September 2025 Sep 30 v2023.14.0 Release\u0026nbsp;Note · Upgrade\u0026nbsp;Note August 2025 Aug 29 v2023.13.0 Release\u0026nbsp;Note · Upgrade\u0026nbsp;Note Aug 06 v2023.6.1 Release\u0026nbsp;Note · Upgrade\u0026nbsp;Note Aug 01 v2023.12.0 Release\u0026nbsp;Note · Upgrade\u0026nbsp;Note June 2025 Jun 27 v2023.11.0 Release\u0026nbsp;Note · Upgrade\u0026nbsp;Note /p>, url: https:\/\/docs.arender.io\/releases\/ }, { value: Version nomenclature, path: https:\/\/docs.arender.io\/what-is-arender\/version\/, label: p>The versions are formed of 3 numbers separated by dots. We therefore find an X.Y.Z pattern.\n X corresponds to the major version: changes not backward compatible. The major evolutions bring new functionalities, by radically changing the appearance or the architecture of the software.\n Y corresponds to the minor version: addition of backward compatible features, mainly bug fixes, addition of some features.\n Z is patch: backward compatible bug fixes, security vulnerabilities./p>p>The versions are formed of 3 numbers separated by dots. We therefore find an X.Y.Z pattern.\n X corresponds to the major version: changes not backward compatible. The major evolutions bring new functionalities, by radically changing the appearance or the architecture of the software.\n Y corresponds to the minor version: addition of backward compatible features, mainly bug fixes, addition of some features.\n Z is patch: backward compatible bug fixes, security vulnerabilities.\n /p>, url: https:\/\/docs.arender.io\/what-is-arender\/version\/ }, { value: Visual design, path: https:\/\/docs.arender.io\/guides\/visual-design\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/guides\/visual-design\/ }, { value: Cookbooks, path: https:\/\/docs.arender.io\/v4\/cookbook\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/ }, { value: FAQ, path: https:\/\/docs.arender.io\/v4\/faq\/, label: p>How to define another j v m? According to some contexts, a specific JVM may be used for ARender execution.\nFor this purpose, place into the PATH environment variable of the user running ARender service the path to the java executable.\n In which languages is the a render interface translated? ARender is translated into 13 languages:\nArabic, German, English, Spanish, French, Italian, Portuguese, Chinese, Brazilian Portuguese, Hebrew, Russian, Polish, Japanese./p>p>How to define another j v m? According to some contexts, a specific JVM may be used for ARender execution.\nFor this purpose, place into the PATH environment variable of the user running ARender service the path to the java executable.\n In which languages is the a render interface translated? ARender is translated into 13 languages:\nArabic, German, English, Spanish, French, Italian, Portuguese, Chinese, Brazilian Portuguese, Hebrew, Russian, Polish, Japanese.\nIt is also possible to add new languages to the ARender WAR or EAR deployment by adding a label file.\nTo do this, copy the English translation of the labels located in WEB-INF\/classes\/labels\/ARenderLabels_en.properties and create your own translation by renaming it with the locale you want to see supported.\n How to purge web browser cache? After a new installation, it’s possible client side (users) keep in cache another version and that can cause an incompatibility problem with the new ARender Web-UI application installed.\nThe compatibility problem usually solve itself after 24h maximum when browser cache expires.\nTo solve the problem immediately, all you need is to purge the user browser cache.\n Internet Explorer 6 Internet Explorer 9 Click on « Tools » then « Internet options » In the part « Temporary internet files », click on « delete the files» Check the box « Delete all content off-line », then click on « OK » Click on « Tools » then « Internet Options » Int the part « navigation history », click on « Delete » Check the box « Temporary internet files », then click on « Delete » Note This problem comes from applications conception in GWT framework which use a specific resource at loading step called « arendergwt.nocache.js ». The mention \u0026lsquo;.nocache.\u0026rsquo; would have to force the browser to not use the cache for this file , but it’s not really respected by Internet Explorer Where can i find log files? Log files trace information and errors about ARender use.\nRendition server To have access to logs, go to « logs » folder of Rendition server installation (by default: « C:Program FilesARender-Rendition-2.0.3logs»)\nWebSphere To have access to ARender application logs, go to « logs » folder of WebSphere installation folder\n By default:\n« C:Program Files\\IBMWebSphere\\AppServer\\profiles\\App\\Srv01\\logs»\n FileNet CE logs are located by default in:\n« C:\\Program Files\\IBMWebSphere\\AppServer\\profiles\\AppSrv01\\FileNet\\server1»\n Which file types can i visualize? Using ARender, you are able to visualize many types of file as:\nStandard:\n PDF - all versions Images: JPEG, PNG, TIFF, GIF, BMP, JNG, PBM, PSD, EPS, PS, DCM (Format DICOM) and all formats supported by ImageMagick Microsoft Office (97-2013): Word (.doc, .docx) , PowerPoint (.ppt, .pptx), Excel (.xls, .xlsx), WordML (.xml), Visio (.vsd) Composite files: ZIP, EML, MSG Others: TXT, OpenDocument (LibreOffice or OpenOffice) In option:\n AutoCAD DWG What is a render\u0026rsquo;s versions policy? ARender\u0026rsquo;s version policy is set the following way:\n Generation Version.Major Version.Minor Version\n Optionally , a packaging version may be introduce, as follow:\n Generation Version.Major Version.Minor Version-Packaging Version\n Each number indicate:\n Generation version: Generation means technological choices, it\u0026rsquo;s an important change from the previous generation.\n Major Version: Each major version provide APIs and interface changes, as well as important new functions.\n Minor Version: Each minor version provide anomalies corrections as well as additional function, disable by default.\n packaging Version: Each packaging version only provide configuration \/ default parameters changes, without product\u0026rsquo;s code changes.\n Example Majors and Minors versions: Major version 2.3.0 has been published the 18\/06\/2014, and introduced Annotation APIs and JavaScript Api changes.\nPackaging and Minor version: Minor version 2.3.5 has been published the 28\/01\/2015, and version 2.3.5-1 has been published the 02\/02\/2015.\n Publication rythm A major version is published each year, late june.\nThis version may also increment the generation version 2015 will see a new product generation, ARender 3.0.\nA new minor version is published every six weeks. Packaging version are on a need basis or if asked.\nAscending compatibility Every three minor versions of the same major release are retro-compatible. This is true for:\n Specifics parameters on server or client side. Specific development on various APIs Presentation (Web-UI) and rendition server interoperability This means majors version can have significant change that will require upgrade of the various ARender\u0026rsquo;s modules.\nProduct\u0026rsquo;s support Arondor will support every minor versions of the last two major versions, it\u0026rsquo;s all version from the last two years.\n How to set produced image\u0026rsquo;s quality and size ? Most documents are being converted inside ARender to be visualized on the browser.\nThis conversion (rendition) has multiple advantages:\n Streaming: only visualized pages are sent to the client Band width reduction: Most produced images\u0027 size are smaller than the source. Quality: Work being done on the server side, restitution quality doesn\u0026rsquo;t depend on the browser setting (font, graphic hardware, \u0026hellip;). Most fullscreen pages are about 100ko (un example ici).\nComplicated images may be much heavier (scan documents, photos). On this document, we are closer to 900ko. It will also depend on screen resolution: a 1600x900 screen resolution will require a 1300 pixels wide in fullscreen.\nARender\u0026rsquo;s default configuration is conservative quality wise, it works for most documents. However there is no miracle. To be clear, there is always the need to make choices between quality and size the images produced.\nOn ARender\u0026rsquo;s side, the entire configuration is made on the rendition server, on the arender-rendition-{unix|windows}.xml, bean \u0026ldquo;jnipdfRenderer\u0026rdquo;. to be precise. Six main parameters can be used to tip the scale, following are the default values:\n\u0026lt;property name\u0026#34;**pageImageMimeType**\u0026#34; value\u0026#34;image\/jpeg\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;**quality**\u0026#34; value\u0026#34;100\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;**maxWidth**\u0026#34; value\u0026#34;8192\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;**antiAlias**\u0026#34; value\u0026#34;8\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;**imageType**\u0026#34; value\u0026#34;IMAGE_TYPE_RGB\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;**overZoom**\u0026#34; value\u0026#34;1.0\u0026#34;\/\u0026gt; In details:\n imageType: Produced image\u0026rsquo;s colorspace, choose from:\n\u0026#34;IMAGE_TYPE_RGB\u0026#34;, \u0026#34;IMAGE_TYPE_ARGB\u0026#34;, \u0026#34;IMAGE_TYPE_ARGB_PRE\u0026#34;, \u0026#34;IMAGE_TYPE_BGR\u0026#34;, \u0026#34;IMAGE_TYPE_GRAY\u0026#34;, \u0026#34;IMAGE_TYPE_BINARY\u0026#34;, \u0026#34;IMAGE_TYPE_BINARY_DITHER\u0026#34; pageImageMimeType: Image type produced. Can be:\n image\/jpeg: Very effective for scanned documents and pictures\n image\/png: More effective for text document (word, txt, pdf).\nSummary:\n quality: Image compression level, jpeg or png (1-100), default is 100. Grain and compression levels depend on the generated image\u0026rsquo;s type. Maximal quality is selected by default.\n maxWidth: Maximum size for images to produced (in pixels). It\u0026rsquo;s especially important for big paper documents (A0 plans for example), when the user zoom-in.\n antiAlias: Text rendition needs anti-aliasing, via sub-pixelling technique.\n overZoom: Zoom level for the expected zone (float: 0.1 - 2.0, by default: 1.0).\n Example Some examples:\n The 0.8 value imply a 80% zoom on the produced image, if the client is asking for a 1000 pixels wide image, rendition server will produced a 800 pixels wide image, the browser will have to zoom-in at 1000 with the following loss of quality.\n The 1.2 value will apply a 120% zoom on the produced image, therefor the image will be bigger than necessary. With the rise of new sub-pixelling screens, this option may be interesting to improve image.\n Does a render is suitable for people who need better accessibility ? Since version 4.5, buttons and images have a description that can be read by software that help visually impaired people, for example :\nMore details in the documentation on the accessibility\n /p>p>faq/p>p>purge/p>p>version/p>, url: https:\/\/docs.arender.io\/v4\/faq\/ }, { value: Textual content, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/textualcontents\/, label: p>Using lasso feature Object : getARenderJS() The lasso feature is available since version 4.5. The principle is to register for an event, then to activate the lasso mode, which will allow the user to select a text in the document which will be retrieved with the registered event. For example, this text can be used subsequently to automatically fill in a text field.\n Function Description Argument registerNotifyLassoSelectedTextEvent(callback) Registers a callback function to call in case of text retrieval with the lasso callback : The callback function to call in case of text retrieval with the lasso askActivateLassoMode(lassoID) Activate lasso mode with an id that will be returned at the same time as the selected text lassoID : ID to identify where the activation of the lasso mode comes from for the use of the retrieved text askDeactivateLassoMode() Deactivate the lasso mode scripts\/example./p>p>Using lasso feature Object : getARenderJS() The lasso feature is available since version 4.5. The principle is to register for an event, then to activate the lasso mode, which will allow the user to select a text in the document which will be retrieved with the registered event. For example, this text can be used subsequently to automatically fill in a text field.\n Function Description Argument registerNotifyLassoSelectedTextEvent(callback) Registers a callback function to call in case of text retrieval with the lasso callback : The callback function to call in case of text retrieval with the lasso askActivateLassoMode(lassoID) Activate lasso mode with an id that will be returned at the same time as the selected text lassoID : ID to identify where the activation of the lasso mode comes from for the use of the retrieved text askDeactivateLassoMode() Deactivate the lasso mode scripts\/example.js var arenderjs; function arenderjs_init(arenderjs_) { arenderjs arenderjs_ arenderjs.registerNotifyLassoSelectedTextEvent(function(text, lassoID){ armt_onSubmitNotifyLassoSelectedTextEvent(text,lassoID); }); } function armt_onSubmitNotifyLassoSelectedTextEvent(text,lassoID) { var elem document.getElementById(lassoID); elem.innerHTML text; } function armt_activatingLasso(lassoID) { arenderjs.askActivateLassoMode(lassoID); } function armt_deactivatingLasso() { arenderjs.askDeactivateLassoMode(); } /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/textualcontents\/ }, { value: Textual content, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/textualcontents\/, label: p>Using lasso feature Object : getARenderJS() The lasso feature is available since version 4.5. The principle is to register for an event, then to activate the lasso mode, which will allow the user to select a text in the document which will be retrieved with the registered event. For example, this text can be used subsequently to automatically fill in a text field.\n Function Description Argument registerNotifyLassoSelectedTextEvent(callback) Registers a callback function to call in case of text retrieval with the lasso callback : The callback function to call in case of text retrieval with the lasso askActivateLassoMode(lassoID) Activate lasso mode with an id that will be returned at the same time as the selected text lassoID : ID to identify where the activation of the lasso mode comes from for the use of the retrieved text askDeactivateLassoMode() Deactivate the lasso mode scripts\/example./p>p>Using lasso feature Object : getARenderJS() The lasso feature is available since version 4.5. The principle is to register for an event, then to activate the lasso mode, which will allow the user to select a text in the document which will be retrieved with the registered event. For example, this text can be used subsequently to automatically fill in a text field.\n Function Description Argument registerNotifyLassoSelectedTextEvent(callback) Registers a callback function to call in case of text retrieval with the lasso callback : The callback function to call in case of text retrieval with the lasso askActivateLassoMode(lassoID) Activate lasso mode with an id that will be returned at the same time as the selected text lassoID : ID to identify where the activation of the lasso mode comes from for the use of the retrieved text askDeactivateLassoMode() Deactivate the lasso mode scripts\/example.js var arenderjs; function arenderjs_init(arenderjs_) { arenderjs arenderjs_ arenderjs.registerNotifyLassoSelectedTextEvent(function(text, lassoID){ armt_onSubmitNotifyLassoSelectedTextEvent(text,lassoID); }); } function armt_onSubmitNotifyLassoSelectedTextEvent(text,lassoID) { var elem document.getElementById(lassoID); elem.innerHTML text; } function armt_activatingLasso(lassoID) { arenderjs.askActivateLassoMode(lassoID); } function armt_deactivatingLasso() { arenderjs.askDeactivateLassoMode(); } /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/textualcontents\/ }, { value: Accessibility, path: https:\/\/docs.arender.io\/features\/accessibility\/, label: p>Since version 4.5, ARender has a better support for visually impaired users.\nReading content The content of the documents can be read by screen readers.\nTo enable this, the content of the document has been added in tags inside the DOM. These tags can be used by software and screen-reading extensions to read the content.\nFor example, when you use the Screen Reader Google Chrome extension, and you double click items with the mouse, the extension reads the content./p>p>Since version 4.5, ARender has a better support for visually impaired users.\nReading content The content of the documents can be read by screen readers.\nTo enable this, the content of the document has been added in tags inside the DOM. These tags can be used by software and screen-reading extensions to read the content.\nFor example, when you use the Screen Reader Google Chrome extension, and you double click items with the mouse, the extension reads the content.\nAlternative text Images that give information have an alternative text with the CSS attribute alt that allows other applications to read with a synthetic voice for the user to know if an action is possible by clicking or if the icon is just informing for something.\nList of images and icons with alternative text :\n Buttons of top panel Annotations explorer Tabs in side panel Icons in navigation panel Thumbnails of pages of documents Icons of sticky notes Toasters It is possible to set the display time of toasters.\n Property Description Default value toaster.toast.timeout Sets up the timeout for toaster notifications to be hidden (in ms) 2000 Modifying the default value by the value 0 allows access to the toaster elements with the tabulation.\nconfigurations\/arender-custom-client.properties toaster.toast.timeout0 Therefore, it is possible to close or reset the notification panel.\nThey have the rolealert attribute. This allows the screen reader to inform the user that a toaster appears.\nKeyboard navigation Use It is possible to navigate in ARender with the tabulation key of keyboard. When an element is focused, an blue outline appears on it.\nMovements from left to right are done with the tab key. Conversely movements from right to left are done with the keys shift \u002b tab.\nApply to:\n Top panel buttons Sub-menus Navigation buttons Pictree The bookmark management buttons Search advanced buttons Hyperlink explorer buttons Edition panel buttons Color pickers Pop up Text box The navigation of some elements does not work the same way:\n Keyboard arrows navigation:\n List box Bookmarks Radio buttons of the same radio group Check box of the same check box group Ctrl \u002b enter: to enter in text boxes\n Freetext Sticky note The design To set the outline, the following css classes must be changed:\nyour-custom-css-file.css :focus-visible, button:focus, select:focus, type\u0026#34;checkbox\u0026#34;:focus-visible\u002blabel, type\u0026#34;radio\u0026#34;:focus-visible\u002blabel { } .simple-outline:focus-visible, button:focus, select:focus { } Problems of color perception New styles have been added to allow people with deuteranopia, protanopia or tritanopia to see colors that match with their needs.\nEach of these color perception disorders has their own style. It is possible to change the appearance of the product with the following property and one of the values assigned:\n Description Parameter Key Default value Type Change the colors. Will NOT work on Internet Explorer. Authorized value : LEGACY, DARK, LIGHT, CUSTOM, DEUTERANOPIA, PROTANOPIA, TRITANOPIA preference.color.mode LEGACY String If you want to change one of the colors, you can change the value of the associated variable in one of the following CSS classes:\nyour-custom-css-file.css .deuteranopia-theme { } .protanopia-theme { } .tritanopia-theme { } /p>p>feature/p>p>accessibility/p>, url: https:\/\/docs.arender.io\/features\/accessibility\/ }, { value: Accessibility, path: https:\/\/docs.arender.io\/v4\/feature\/accessibility\/, label: p>Since version 4.5, ARender has a better support for visually impaired users.\nAlternatif text Images that give information have an alternative text with the CSS attribute alt that allows other applications to read with a synthatical voice for the user to know if an action is possible by clicking or if the icone is just informing for something.\nList of images and icons with alternative text :\n Buttons of top panel Annotations explorer Tabs in side panel Icons in navigation panel Thumbnails of pages of documents Icons of sticky notes /p>p>Since version 4.5, ARender has a better support for visually impaired users.\nAlternatif text Images that give information have an alternative text with the CSS attribute alt that allows other applications to read with a synthatical voice for the user to know if an action is possible by clicking or if the icone is just informing for something.\nList of images and icons with alternative text :\n Buttons of top panel Annotations explorer Tabs in side panel Icons in navigation panel Thumbnails of pages of documents Icons of sticky notes /p>p>feature/p>p>accessibility/p>, url: https:\/\/docs.arender.io\/v4\/feature\/accessibility\/ }, { value: Activating performance logs, path: https:\/\/docs.arender.io\/learn\/how-to\/activate-perf-es\/, label: p>You can since ARender 4.0.1 send directly each log fragment to the disk (through classic logger), to elasticSearch (6) or both !\nTo activate the feature in ARender Web-UI war Alter, corresponding to your need, the following properties in:\narender-server-custom properties #activate\/deactivate the use of the disk based logger arender.server.perf.logger.usetrue #configure elastic search connection arender.server.perf.es.hostlocalhost arender.server.perf.es.port9200 arender.server.perf.es.protocolhttp arender.server.perf.es.index.namearender-performance #activate\/deactivate the propagation to elastic search of the log messages arender.server.perf.es.usefalse At rendition side YAML properties can be added to the rendition micro service in order to obtain the same behavior as the ARender Web-UI war:/p>p>You can since ARender 4.0.1 send directly each log fragment to the disk (through classic logger), to elasticSearch (6) or both !\nTo activate the feature in ARender Web-UI war Alter, corresponding to your need, the following properties in:\narender-server-custom properties #activate\/deactivate the use of the disk based logger arender.server.perf.logger.usetrue #configure elastic search connection arender.server.perf.es.hostlocalhost arender.server.perf.es.port9200 arender.server.perf.es.protocolhttp arender.server.perf.es.index.namearender-performance #activate\/deactivate the propagation to elastic search of the log messages arender.server.perf.es.usefalse At rendition side YAML properties can be added to the rendition micro service in order to obtain the same behavior as the ARender Web-UI war:\nservice-broker\/application.yaml aop:active:falseactivateLogger:trueactivateEs:falseesHost:localhostesPort:9200esIndexName:arender-rendition-performanceesProtocol:http You will have to alter those values to the desired target in order to activate performance log at the rendition side. To activate the logs, you will have to setup aop.active to true, then choose which backend you want, Es, Logger or both.\nThe same elastic search connection parameters are found at rendition side.\nUse the around invoke to activate the backup of failed documents In the same manner it is possible to use the around invoke configuration to obtain performance logs at the rendition side, it is also possible to activate the backup of documents which caused issues to ARender.\nHere are the existing parameters:\nservice-broker\/application.yaml aop:rejectedDocs:falsenbDaysKept:1rejectedPath:\u0026#34;rejected\/\u0026#34; The property \u0026ldquo;rejectedDocs\u0026rdquo; activates the mechanism. The property \u0026ldquo;nbDaysKept\u0026rdquo; indicates how many days the documents will be kept inside the folder. The property \u0026ldquo;rejectedPath\u0026rdquo; specifies the path in which the documents will be saved when they have errors.\nDefault values are the one from the example.\n/p>p>tutorial/p>p>Elasticsearch/p>p>performance/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/activate-perf-es\/ }, { value: Activating performance logs, path: https:\/\/docs.arender.io\/v4\/cookbook\/activate-perf-es\/, label: p>You can since ARender 4.0.1 send directly each log fragment to the disk (through classic logger), to elasticSearch (6) or both !\nTo activate the feature in ARender Web-UI war Alter, corresponding to your need, the following properties in:\narender-server-custom properties #activate\/deactivate the use of the disk based logger arender.server.perf.logger.usetrue #configure elastic search connection arender.server.perf.es.hostlocalhost arender.server.perf.es.port9200 arender.server.perf.es.protocolhttp arender.server.perf.es.index.namearender-performance #activate\/deactivate the propagation to elastic search of the log messages arender.server.perf.es.usefalse At rendition side YAML properties can be added to the rendition micro service in order to obtain the same behavior as the ARender Web-UI war:/p>p>You can since ARender 4.0.1 send directly each log fragment to the disk (through classic logger), to elasticSearch (6) or both !\nTo activate the feature in ARender Web-UI war Alter, corresponding to your need, the following properties in:\narender-server-custom properties #activate\/deactivate the use of the disk based logger arender.server.perf.logger.usetrue #configure elastic search connection arender.server.perf.es.hostlocalhost arender.server.perf.es.port9200 arender.server.perf.es.protocolhttp arender.server.perf.es.index.namearender-performance #activate\/deactivate the propagation to elastic search of the log messages arender.server.perf.es.usefalse At rendition side YAML properties can be added to the rendition micro service in order to obtain the same behavior as the ARender Web-UI war:\nservice-broker\/application.yaml aop:active:falseactivateLogger:trueactivateEs:falseesHost:localhostesPort:9200esIndexName:arender-rendition-performanceesProtocol:http You will have to alter those values to the desired target in order to activate performance log at the renditoin side. To activate the logs, you will have to setup aop.active to true, then choose which backend you want, Es, Logger or both.\nThe same elastic search connection parameters are found at rendition side.\nUse the around invoke to activate the backup of failed documents In the same manner it is possible to use the around invoke configuration to obtain performance logs at the rendition side, it is also possible to activate the backup of documents which caused issues to ARender.\nHere are the existing parameters:\nservice-broker\/application.yaml aop:rejectedDocs:falsenbDaysKept:1rejectedPath:\u0026#34;rejected\/\u0026#34; The property \u0026ldquo;rejectedDocs\u0026rdquo; activates the mechanism. The property \u0026ldquo;nbDaysKept\u0026rdquo; indicates how many days the documents will be kept inside the folder. The property \u0026ldquo;rejectedPath\u0026rdquo; specifies the path in which the documents will be saved when they have errors.\nDefault values are the one from the example.\n/p>p>tutorial/p>p>Elasticsearch/p>p>performance/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/activate-perf-es\/ }, { value: Add new image\/video mime types, path: https:\/\/docs.arender.io\/learn\/how-to\/addmimetypes\/, label: p>If your rendition server does not possess all the mime types that you wish to use, it is then still possible that the rendition server could convert your file.\nIn the specific case of video\/image conversion, the full list of files that can opened by imagemagick\/ffmpeg is long.\nIf you wish to add a mime type, you just need to create\/modify the application.properties file located in the modules\/RenditionEngine and application-security.yaml file located in the modules\/TaskConversion folder of your rendition./p>p>If your rendition server does not possess all the mime types that you wish to use, it is then still possible that the rendition server could convert your file.\nIn the specific case of video\/image conversion, the full list of files that can opened by imagemagick\/ffmpeg is long.\nIf you wish to add a mime type, you just need to create\/modify the application.properties file located in the modules\/RenditionEngine and application-security.yaml file located in the modules\/TaskConversion folder of your rendition. This file will override the basic configuration file.\nThe application.properties at modules\/RenditionEngine file with the default mime types, to modify to add\/remove the desired mime types:\n# List of mime types that does not need conversion to be rendered arender.format.nativeMimeTypesapplication\/pdf,image\/tiff,video\/mp4 # List of mime types handled by the mail extractor arender.format.documentExtractorBeanNames.mailExtractorapplication\/mbox,message\/rfc822,application\/vnd.ms-outlook # List of mime types handled by the archive extractor arender.format.documentExtractorBeanNames.archiveExtractorapplication\/zip,application\/x-zip,application\/x-zip-compressed,application\/x-rar-compressed,application\/x-rar,application\/java-archive # List of mime types to convert to mp4 arender.format.conversionTargetMimeTypes.video-mp4audio\/x-wav,audio\/mp3,audio\/mpeg,audio\/x-mpeg,video\/quicktime,video\/3gpp,video\/x-flv,video\/mpeg,video\/x-msvideo,video\/x-matroska,video\/x-ms-asf,audio\/x-aiff,audio\/mp4,video\/gif,video\/mp2p # List of mime types to convert to pdf arender.format.conversionTargetMimeTypes.application-pdftext\/rtf,application\/msword,application\/vnd.openxmlformats-officedocument.wordprocessingml.document,application\/vnd.ms-word.document.macroEnabled.12,application\/vnd.openxmlformats-officedocument.wordprocessingml.template,application\/vnd.ms-word.template.macroEnabled.12,\\ application\/vnd.ms-excel,application\/x-ms-excel,application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application\/vnd.ms-excel.sheet.macroEnabled.12,application\/vnd.openxmlformats-officedocument.spreadsheetml.template,application\/vnd.ms-excel.template.macroEnabled.12,\\ application\/vnd.ms-powerpoint,application\/vnd.openxmlformats-officedocument.presentationml.presentation,application\/vnd.ms-powerpoint.presentation.macroEnabled.12,application\/vnd.openxmlformats-officedocument.presentationml.template,application\/vnd.ms-powerpoint.template.macroEnabled.12,\\ application\/vnd.ms-project,\\ application\/visio,application\/x-visio,application\/vnd.visio,application\/vnd.ms-visio,application\/visio.drawing,application\/vsd,application\/x-vsd,image\/x-vsd,zz-application\/zz-winassoc-vsd,\\ application\/x-mspublisher,application\/vnd.ms-publisher,\\ application\/vnd.oasis.opendocument.text,\\ application\/vnd.oasis.opendocument.spreadsheet,\\ application\/vnd.oasis.opendocument.presentation,\\ application\/vnd.oasis.opendocument.graphics,\\ image\/webp,image\/png,image\/jpeg,image\/gif,image\/x-ms-bmp,image\/x-bmp,image\/x-portable-bitmap,image\/vnd.adobe.photoshop,image\/x-eps,application\/postscript,application\/dicom,application\/pcx,application\/x-pcx,image\/pcx,image\/x-pc-paintbrush,image\/x-pcx,zz-application\/zz-winassoc-pcx,image\/jp2,image\/heif,image\/wmf,\\ text\/html,\\ text\/plain The application-security.yaml at modules\/TaskConversion file with the default mime types, to modify to add\/remove the desired mime types to the right converter:\napp:factoriesBeanNames:imageFactory:\u0026#34;image\/webp,image\/png,image\/jpeg,image\/gif,image\/x-ms-bmp,image\/x-bmp,image\/x-portable-bitmap,image\/vnd.adobe.photoshop,image\/x-eps,application\/postscript,application\/dicom,application\/pcx,application\/x-pcx,image\/pcx,image\/x-pc-paintbrush,image\/x-pcx,zz-application\/zz-winassoc-pcx,image\/jp2,image\/heif,image\/wmf\u0026#34;imageIOFactory:\u0026#34;image\/tiff\u0026#34;htmlFactory:\u0026#34;text\/html\u0026#34;genericConvertOffice:\u0026#34;${mime.type.msoffice.word},${mime.type.msoffice.rtf},${mime.type.libreoffice.text}, ${mime.type.msoffice.excel},${mime.type.libreoffice.sheet}, ${mime.type.msoffice.powerpoint},${mime.type.libreoffice.presentation}, ${mime.type.msoffice.visio},${mime.type.libreoffice.graphics}, ${mime.type.msoffice.project}\u0026#34;pdfboxTextFactory:\u0026#34;text\/plain\u0026#34;videoConversionFactory:\u0026#34;video\/mp4,audio\/x-wav,audio\/mp3,audio\/mpeg,audio\/x-mpeg,video\/quicktime,video\/3gpp,video\/x-flv,video\/mpeg,video\/x-msvideo,video\/x-matroska,video\/x-ms-asf,audio\/x-aiff,audio\/mp4,video\/gif,video\/mp2p\u0026#34;/p>p>tutorial/p>p>mimetype/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/addmimetypes\/ }, { value: Add new image\/video mime types, path: https:\/\/docs.arender.io\/v4\/cookbook\/addmimetypes\/, label: p>If your rendition server does not possess all the mime types that you wish to use, it is then still possible that the rendition server could convert your file.\nIn the specific case of video\/image conversion, the full list of files that can opened by imagemagick\/ffmpeg is long.\nIf you wish to add a mime type, you just need to modify the application-security.yml file of the modules\/TaskConversion folder of your rendition./p>p>If your rendition server does not possess all the mime types that you wish to use, it is then still possible that the rendition server could convert your file.\nIn the specific case of video\/image conversion, the full list of files that can opened by imagemagick\/ffmpeg is long.\nIf you wish to add a mime type, you just need to modify the application-security.yml file of the modules\/TaskConversion folder of your rendition. This file will override the basic configuration file.\nFor example, if we want to add the mime type image\/x-bmp.\nIn the application-security.yml file you will find:\nsecurity:user:name:placeholder_loginpassword:placeholder_passwordspring:profiles:include:\u0026gt;security, httpsWould become:\nsecurity:user:name:placeholder_loginpassword:placeholder_passwordspring:profiles:include:\u0026gt;security, httpseureka:instance:metadataMap:convertMimeType:\u0026#34;application\/mbox,message\/rfc822,application\/vnd.ms-outlook,text\/html,application\/zip,application\/x-zip, application\/x-zip-compressed,application\/x-rar-compressed,application\/x-rar,application\/java-archive,text\/rtf, ${mime.type.msoffice.word},${mime.type.libreoffice.text},${mime.type.msoffice.excel},${mime.type.libreoffice.sheet}, ${mime.type.msoffice.powerpoint},${mime.type.libreoffice.presentation},${mime.type.msoffice.project}, ${mime.type.msoffice.visio},${mime.type.msoffice.publisher},${mime.type.libreoffice.graphics}, text\/plain,video\/quicktime,video\/mp4,video\/3gpp,audio\/x-wav,audio\/mp3,video\/x-flv,video\/mpeg, video\/x-msvideo,video\/x-matroska,video\/x-ms-asf,video\/mov,application\/x-empty,audio\/mpeg,audio\/x-mpeg,audio\/x-aiff,audio\/mp4,video\/gif,image\/png,image\/jpeg,image\/gif,image\/x-ms-bmp,image\/x-bmp,image\/x-portable-bitmap,image\/vnd.adobe.photoshop, image\/x-eps,application\/postscript,application\/dicom,application\/pcx,application\/x-pcx,image\/pcx,image\/x-pc-paintbrush,image\/x-pcx,zz-application\/zz-winassoc-pcx,image\/jp2,image\/tiff\u0026#34;app:factoriesBeanNames:imageFactory:\u0026#34;image\/webp,image\/tiff,image\/png,image\/jpeg,image\/gif,image\/x-ms-bmp,image\/x-bmp,image\/x-portable-bitmap,image\/vnd.adobe.photoshop,image\/x-eps,application\/postscript,application\/dicom,application\/pcx,application\/x-pcx,image\/pcx,image\/x-pc-paintbrush,image\/x-pcx,zz-application\/zz-winassoc-pcx,image\/jp2\u0026#34;The lines of code to add are in the jar (open with a 7-zip tool), then go to: BOOT-INF\/classes\/application.yaml\nFor the mime types the factory concerned is the imageFactory, where you can add each mime types desired.\n/p>p>tutorial/p>p>mimetype/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/addmimetypes\/ }, { value: Alfresco, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/alfresco\/, label: p>We present here the installation of the ARender Web-UI in alfresco.\nIn our example, we are deploying the presentation server in an environment with:\n Operating system: Ubuntu 16.04.5 Alfresco Community 5.2.0 (with tomcat server) ARender Web-UI version 4.8.21 Retrieve the presentation server archive Using the username and password beforehand provided (contact arender-sales@arondor.com if you want an access), you can retrieve the web application version used in WAR format here./p>p>We present here the installation of the ARender Web-UI in alfresco.\nIn our example, we are deploying the presentation server in an environment with:\n Operating system: Ubuntu 16.04.5 Alfresco Community 5.2.0 (with tomcat server) ARender Web-UI version 4.8.21 Retrieve the presentation server archive Using the username and password beforehand provided (contact arender-sales@arondor.com if you want an access), you can retrieve the web application version used in WAR format here.\nDeployment of the ARender Web-UI server in Alfresco Stop the Alfresco service Copy the file arondor-arender-hmi-alfresco-{version}.war in your {alfresco_tomcat}\/webapps folder Rename the .war file to ARenderHMI.war The installation is complete You can now start the alfresco server and try to open a file with a link formed like this:\nhttp:\/\/{arender_serveur}:{arender_port}\/ARenderHMI\/?nodeRef{nodeRef}\u0026amp;user{user}\u0026amp;alf_ticket{ticket}\u0026amp;versionLabel{version} You have finished the quick installation of ARender for Alfresco. To go further, go to the page here : Advanced configuration\n/p>p>standalone/p>p>hmi/p>p>web ui/p>p>configuration/p>p>alfresco/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/alfresco\/ }, { value: Annotation creation by rules, path: https:\/\/docs.arender.io\/learn\/how-to\/annotation-creation-rule\/, label: p>General concept The principle of creation of annotations by rules is based on the search for a text or a regular expression on which we are going to apply a defined annotation.\nFor example, it is possible to automate the redact of sensitive information having a specific pattern.\nStructure of annotation creation rules The rules will be defined via beans in the ARender configuration files. A rule is made up of three main parts:/p>p>General concept The principle of creation of annotations by rules is based on the search for a text or a regular expression on which we are going to apply a defined annotation.\nFor example, it is possible to automate the redact of sensitive information having a specific pattern.\nStructure of annotation creation rules The rules will be defined via beans in the ARender configuration files. A rule is made up of three main parts:\n Rule details Search details Annotation details Rule details A rule needs an identifier and a name.\n \u0026lt;property name\u0026#34;ruleId\u0026#34; value\u0026#34;annotationCreationRuleExample\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;ruleName\u0026#34; value\u0026#34;Example of annotation creation rule\u0026#34; \/\u0026gt; Search details The search details allow you to choose a term or a regular expression to search for. The search can be refined by choosing whether accents or case are taken into account.\nDifferent type of search is configurable in order to apply it on different area of the document. The application can be done either on the current page, or on all the pages or a page selection :\n CURRENT_PAGE ALL_PAGES SELECTED_PAGES \u0026lt;property name\u0026#34;searchOptions\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.search.SearchOptions\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;searchText\u0026#34; value\u0026#34;your_text_to_be_search\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;accentSensitive\u0026#34; value\u0026#34;false\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;caseSensitive\u0026#34; value\u0026#34;false\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;regex\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;searchAction\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.client.api.search.SearchAction\u0026#34;\u0026gt;CURRENT_PAGE\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; When the SELECTED_PAGES option is used, the pageSelection property must be added to the bean of the rule, which makes it possible to list the targeted pages.\n \u0026lt;!--ONLY FOR THE SEARCH ACTION *SELECTED_PAGES* --\u0026gt; \u0026lt;property name \u0026#34;pageSelection\u0026#34;\u0026gt; \u0026lt;list\u0026gt; \u0026lt;value\u0026gt;your_page_number_here\u0026lt;\/value\u0026gt; \u0026lt;value\u0026gt;another page number..\u0026lt;\/value\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; Annotation details Annotations compatible with this feature are strikethrough, underline, underline, strikethrough, and text strikethrough annotations. The associated values for each annotation type are :\n Strikeout Underline Highlight Redact RedactText An annotation will need to have the opacity and background color set in order to be constructed. The background color only takes on the value of hexadecimal.\n \u0026lt;property name\u0026#34;annotationTemplate\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.templates.AnnotationTemplate\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationType\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.common.AnnotationType\u0026#34;\u0026gt;Underline\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;annotationStyle\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationStyle\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;backgroundColor\u0026#34; value\u0026#34;#ff0000\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;opacity\u0026#34; value\u0026#34;0.8f\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; Complete rule Here is an example bean of a complete rule combining the three main parts. The example allows underlining in red each word \u0026lsquo;document\u0026rsquo; of the current page.\nconfigurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;annotationCreationRuleExample\u0026#34; class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationCreationRule\u0026#34;\u0026gt; \u0026lt;!-- Rule details --\u0026gt; \u0026lt;property name\u0026#34;ruleId\u0026#34; value\u0026#34;annotationCreationRuleExample\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;ruleName\u0026#34; value\u0026#34;Example of annotation creation rule\u0026#34; \/\u0026gt; \u0026lt;!-- Search details --\u0026gt; \u0026lt;property name\u0026#34;searchOptions\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.search.SearchOptions\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;searchText\u0026#34; value\u0026#34;document\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;accentSensitive\u0026#34; value\u0026#34;false\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;caseSensitive\u0026#34; value\u0026#34;false\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;regex\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;searchAction\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.client.api.search.SearchAction\u0026#34;\u0026gt;CURRENT_PAGE\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;!-- Annotation details --\u0026gt; \u0026lt;property name\u0026#34;annotationTemplate\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.templates.AnnotationTemplate\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationType\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.common.AnnotationType\u0026#34;\u0026gt;Underline\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;annotationStyle\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationStyle\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;backgroundColor\u0026#34; value\u0026#34;#ff0000\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;opacity\u0026#34; value\u0026#34;0.8f\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt;\t\u0026lt;\/bean\u0026gt; Adding a rule to the rule catalog To use the rules, they must be referenced in the rules catalog. The following example will override the default annotationCreationRuleCatalog.\nCustom rules are only known to ARender from the rule catalog which lists the different rule identifiers.\nconfigurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;annotationCreationRuleCatalog\u0026#34; class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationCreationRuleCatalog\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;annotationCreationRules\u0026#34;\u0026gt; \u0026lt;list\u0026gt; \u0026lt;ref bean\u0026#34;annotationCreationRuleExample\u0026#34; \/\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Use of rules by JavaScript It is possible with javascript to trigger the application of all the rules of the catalog.\nexample.js $wnd.getARenderJS().createAnnotationByRuleWithCatalog(); It is also possible to make a list of the identifiers of the rules present in the catalog which must be triggered:\nexample.js $wnd.getARenderJS().createAnnotationByRulesWithRuleId(\u0026#34;annotationCreationRuleExample\u0026#34;); Example of use The following example will allow you to define a rule allowing to cross out the word view on the current page.\nCreating a custom rule configurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;redactRuleExample\u0026#34; class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationCreationRule\u0026#34;\u0026gt; \u0026lt;!-- Rule details --\u0026gt; \u0026lt;property name\u0026#34;ruleId\u0026#34; value\u0026#34;redactRuleExample\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;ruleName\u0026#34; value\u0026#34;Example of annotation creation rule for redact\u0026#34; \/\u0026gt; \u0026lt;!-- Search details --\u0026gt; \u0026lt;property name\u0026#34;searchOptions\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.search.SearchOptions\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;searchText\u0026#34; value\u0026#34;view\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;accentSensitive\u0026#34; value\u0026#34;false\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;caseSensitive\u0026#34; value\u0026#34;false\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;regex\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;searchAction\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.client.api.search.SearchAction\u0026#34;\u0026gt;CURRENT_PAGE\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;!-- Annotation details --\u0026gt; \u0026lt;property name\u0026#34;annotationTemplate\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.templates.AnnotationTemplate\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationType\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.common.AnnotationType\u0026#34;\u0026gt;RedactText\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;annotationStyle\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationStyle\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;backgroundColor\u0026#34; value\u0026#34;#000000\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;opacity\u0026#34; value\u0026#34;1.0f\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt;\t\u0026lt;\/bean\u0026gt; Configuring the Annotation Rule Catalog configurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;annotationCreationRuleCatalog\u0026#34; class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationCreationRuleCatalog\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;annotationCreationRules\u0026#34;\u0026gt; \u0026lt;list\u0026gt; \u0026lt;ref bean\u0026#34;annotationCreationRuleExample\u0026#34; \/\u0026gt; \u0026lt;ref bean\u0026#34;redactRuleExample\u0026#34; \/\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Use in a custom button First, we create the custom button definition:\narender-custom-integration.xml \u0026lt;bean id\u0026#34;customButtonToRedactSomething\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;customButton\u0026#34;\/\u0026gt; \u0026lt;constructor-arg value\u0026#34;Custom Button\u0026#34; \/\u0026gt; \u0026lt;constructor-arg value\u0026#34;standardButton\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.jsapi.toppanel.JSCallButtonHandler\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;jsCode\u0026#34;\u0026gt; \u0026lt;value\u0026gt; $wnd.getARenderJS().createAnnotationByRulesWithRuleId(\u0026#34;redactRuleExample\u0026#34;); \u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Then we must add the bean identifier customButtonToRedactSomething to the list of annotation buttons like below :\nconfigurations\/arender-custom-client.properties topPanel.annotation.buttons.beanNamesaddStickyNoteAnnotationButton,addFreeTextAnnotationButton,customButtonToRedactSomething This example of configuration add 3 buttons to the annotation section of the toppanel.\n/p>p>tutorial/p>p>rules/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/annotation-creation-rule\/ }, { value: Annotations, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/annotation-js-api\/, label: p>Register to added annotation event Object: getARenderJS().getAnnotationJSAPI() Function Description registerNotifyAnnotationAddedEvent(callback) Register a callback function that will be called when an annotation is added. scripts\/example.js \/* * Register to added annotation event * * @param {string} documentId - ID of the document * @param {string} annotation - The json of the added annotation to the document * @param {boolean} isFromDocumentParsing - True if the added annotation came from parsing of the document *\/ getARenderJS()./p>p>Register to added annotation event Object: getARenderJS().getAnnotationJSAPI() Function Description registerNotifyAnnotationAddedEvent(callback) Register a callback function that will be called when an annotation is added. scripts\/example.js \/* * Register to added annotation event * * @param {string} documentId - ID of the document * @param {string} annotation - The json of the added annotation to the document * @param {boolean} isFromDocumentParsing - True if the added annotation came from parsing of the document *\/ getARenderJS().getAnnotationJSAPI().registerNotifyAnnotationAddedEvent(function(documentId, annotation, isFromDocumentParsing) { console.log(\u0026#34;Annotation added. DocumentId \u0026#34; \u002b documentId \u002b \u0026#34; annotation: \u0026#34; \u002b annotation \u002b \u0026#34; isFromDocumentParsing: \u0026#34; \u002b isFromDocumentParsing); }); Register to deleted annotation event Object: getARenderJS().getAnnotationJSAPI() Function Description registerNotifyAnnotationDeletedEvent(callback) Register a callback function that will be called when an annotation is deleted. scripts\/example.js \/* * Register to deleted annotation event * * @param {string} documentId - ID of the document * @param {string} annotation - The json of the deleted annotation from the document *\/ getARenderJS().getAnnotationJSAPI().registerNotifyAnnotationDeletedEvent(function(documentId, annotation) { console.log(\u0026#34;Annotation deleted. DocumentId \u0026#34; \u002b documentId \u002b \u0026#34; annotation: \u0026#34; \u002b annotation); }); Register to updated annotation event Object: getARenderJS().getAnnotationJSAPI() Function Description registerNotifyAnnotationUpdatedEvent(callback) Register a callback function that will be called when an annotation is updated. scripts\/example.js \/* * Register to updated annotation event * * @param {string} documentId - ID of the document * @param {string} annotation - Updated annotation from the document *\/ getARenderJS().getAnnotationJSAPI().registerNotifyAnnotationUpdatedEvent(function(documentId, annotation) { console.log(\u0026#34;Annotation updated. DocumentId \u0026#34; \u002b documentId \u002b \u0026#34; annotation: \u0026#34; \u002b annotation); }); Register to Page rotated event Object: getARenderJS().getRotateJSAPI() Function Description registerNotifyPageRotatedEvent(callback) Register a callback function that will be called when a page is rotated scripts\/example.js \/* * Subscribe a function to the page rotated event * * @param {string} documentId - ID of the document * @param {integer} pageNumber - The page rotated * @param {integer} rotation - Rotation of the page in degree *\/ getARenderJS().getRotateJSAPI().registerNotifyPageRotatedEvent(function(documentId, pageNumber, rotation) { console.log(\u0026#34;Page rotated. DocumentId: \u0026#34; \u002b documentId \u002b \u0026#34; pageNumber: \u0026#34; \u002b pageNumber \u002b \u0026#34; rotation: \u0026#34; \u002b rotation); }); Intercept Hyperlinks Object: getARenderJS().getAnnotationJSAPI() Here is an example of JS code allowing to register a method that will be called each time that an hyperlink is clicked.\nvar annotationjs; function arenderjs_init(ajs) { ajs.onAnnotationModuleReady( function(annotjs){ annotationjsannotjs; annotjs.registerFollowLinkHandler(followLink); console.log(annotationjs.getDestinationTypes()); console.log(annotationjs.getActionTypes()); } ); } function followLink(docId, pageNumber, destination, action) { console.log( \u0026#34;docId\u0026#34; \u002b docId, \u0026#34;pageNumber\u0026#34; \u002b pageNumber, \u0026#34;dest\u0026#34; \u002b destination, \u0026#34;action\u0026#34; \u002b action .join()); console.log(annotationjs.getPropertyFromDestination(destination,\u0026#34;PAGE_TARGET\u0026#34;)); console.log(annotationjs.getPropertyFromAction(action,\u0026#34;GOTO\u0026#34;)); } In this example, you can also observe how to visualize all existing properties in hyperlinks.\nannotationjs.getDestinationTypes() and annotationjs.getActionTypes() contains the list of properties that can be asked for hyperlinks destinations and actions.\nannotationjs.getPropertyFromDestination(destination,property) and annotationjs.getPropertyFromAction(action,property) allow to ask for a particular property once the action or destination have been received.\nYou will find following the list of properties for destinations :\n Type Description PAGE_TARGET Page number of the page targeted URI URI address to go to You will find following the list of properties for actions that will indicate the type of fields you will find in the destination :\n Type Description GOTO The destination is a page number URI The destination is an URI Create an highlight annotation Object: getARenderJS().getAnnotationJSAPI() Function Description addAnnotation(id, type, x, y, w, h, page, color, opacity) Create an annotation at the desired position to the given documentId scripts\/example.js \/* * Add a highlight annotation * * @param {string} documentId - ID of the document * @param {string} type - the annotation type (only \u0026#34;Highlight\u0026#34; is supported) * @param {integer} x - the annotation x coordinate (number of pixels on the left) * @param {integer} y - the annotation y coordinate (number of pixels above) * @param {integer} w - the annotation width (in pixels) * @param {integer} h - the annotation height (in pixels) * @param {page} page - the annotation page number - 1. Note that the page numbers start from 0. * @param {string} color - the annotation color * @param {float} opacity - the annotation opacity (1 Total opacity, 0 Total transparency). *\/ var documentId getARenderJS().getCurrentDocumentId(); \/\/ Retrieve the ID of the document currently being viewed var type \u0026#34;Highlight\u0026#34;; var x 50; var y 150; var w 100; var h 50; var page 0; var color \u0026#34;#FF0000\u0026#34;; var opacity 0.4; getARenderJS().getAnnotationJSAPI().addAnnotation( documentId, type, x, y, w, h, page, color, opacity); DocLink mode functions Object: getARenderJS().getAnnotationJSAPI() Function Description registerDocLinkTextSelectionEvent(callback) Register a callback function that will be called when a text is selected in docLink mode registerDocLinkStateChange(callback) Register a callback function that will be called when a state change in docLink mode registerCloseMultiView(callback) Register a callback function that will be called on closing the multi-view getTargetDocLinkDocumentId() Get the target document Id in docLink mode getAvailableDocLinkDocumentId() Get the available document Id in docLink mode to know which document is not disabled createDocLink(pageNumber) Create the docLink at the desired page. The value of pageNumber starts from 0, which corresponds to the first page. scripts\/example.js \/* * Register to a selected text in docLink mode * *\/ getARenderJS().getAnnotationJSAPI().registerDocLinkTextSelectionEvent(function() { console.log(\u0026#34;Some text is selected\u0026#34;); }); \/* * Register to a state change in docLink mode * *\/ getARenderJS().getAnnotationJSAPI().registerDocLinkStateChange(function() { console.log(\u0026#34;Action in docLink has occurred\u0026#34;); }); \/* * Register to closing multi-view event * *\/ getARenderJS().getAnnotationJSAPI().registerCloseMultiView(function() { console.log(\u0026#34;Multi-view has been closed\u0026#34;); }); \/* * Get the target document Id in docLink mode * *\/ getARenderJS().getAnnotationJSAPI().getTargetDocLinkDocumentId(); \/* * Get the available document Id in docLink mode to know which document is not disabled * *\/ getARenderJS().getAnnotationJSAPI().getAvailableDocLinkDocumentId(); \/* * Create a docLink at the 4th page * * @param {integer} pageNumber -Tthe page to create the target docLink *\/ var pageNumber 3; \/\/ This value is corresponding to the 4th page getARenderJS().getAnnotationJSAPI().createDocLink(pageNumber); /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/annotation-js-api\/ }, { value: Annotations, path: https:\/\/docs.arender.io\/features\/annotations\/, label: p>General Access to the annotations You can access the annotations directly in the top panel:\nAnd the annotation toolbar appears:\nYou can also access the annotations with a right-click on the document:\nSave annotations You can save your annotations by clicking on the \u0026ldquo;Save\u0026rdquo; button:\nShow\/hide annotations You can show or hide an annotation by clicking on the \u0026ldquo;Show\/Hide annotations\u0026rdquo; button:\nSticky note Create a sticky note To create a sticky note, you click on the following button:/p>p>General Access to the annotations You can access the annotations directly in the top panel:\nAnd the annotation toolbar appears:\nYou can also access the annotations with a right-click on the document:\nSave annotations You can save your annotations by clicking on the \u0026ldquo;Save\u0026rdquo; button:\nShow\/hide annotations You can show or hide an annotation by clicking on the \u0026ldquo;Show\/Hide annotations\u0026rdquo; button:\nSticky note Create a sticky note To create a sticky note, you click on the following button:\nor you can right-click on the document and choose \u0026ldquo;Add sticky note\u0026rdquo; in the menu:\nThen, you drag and drop your cursor on the document:\nCustomize a sticky note To customize a sticky note, click on the pencil icon. You are in the edit mode, the annotation toolbar contains buttons for the sticky note modification:\nTo modify your sticky note text, you can write directly in the sticky note. To put your text in bold, italic or underlined, you click on these buttons:\nYou can choose the font and size of your text with these two drop-down lists:\nYou can change the text color and the background color by clicking on these buttons:\nTo move your sticky note, position your cursor on the sticky note header and drag and drop the sticky note:\nWhen your changes are done, exit edit mode by clicking on this button:\nWarning: Internet Explorer 8 forces some conditions on the formatting of rich text in webpages. In order for us to have the same visual restitution in all browser an empty line under Internet Explorer 8 must be done using shift\u002bEnter.\nSee details about a sticky note To see details about a sticky note, you click on it. Your are in the edit mode. In the annotation toolbar, you click on the \u0026ldquo;Details\u0026rdquo; button:\nAnnotation details appear in a pop-in:\nTo exit the pop-in, click anywhere in the document.\nRemove a sticky note To remove a sticky note, click on it to access the edit mode. In the annotation toolbar you click on the \u0026ldquo;Remove annotation\u0026rdquo; button:\nHighlight rectangle Create an highlight rectangle To create an highlight rectangle, click on the following button:\nor you can right-click on the document en choose \u0026ldquo;Add sticky note\u0026rdquo; in the menu:\nthen, you drag and drop your cursor on the area you wish to highlight:\nCustomize an highlight rectangle To customize an highlight rectangle, click on it. You are in the edit mode, the annotation toolbar contains buttons for the rectangle modification:\nWith the toolbar, you can:\n change the rectangle opacity (more information about sliders here). change the background color. see the details about the rectangle. remove the rectangle. stop the rectangle edition. You can also move your rectangle: position your cursor on the rectangle and drag and drop it.\nRemove an highlight rectangle To remove an highlight rectangle, click on it to access the edit mode. Then, in the annotation toolbar, click on the \u0026ldquo;Remove annotation\u0026rdquo; button:\nArrow Create an arrow To create an arrow, click on the \u0026ldquo;Add arrow\u0026rdquo; button:\nor you can right-click on the document and choose \u0026ldquo;Add arrow\u0026rdquo; in the menu:\nCustomize an arrow Change arrow background color You can change the arrow background color by clicking on the \u0026ldquo;Background color\u0026rdquo; button:\n Change arrow opacity You can change arrow opacity by clicking on the cursor button:\n Change arrow size You can change the arrow size by clicking on these buttons:\n Change arrow direction The arrow direction can be changed by clicking on one of its ends (A red circle appears at the tip of the arrow and at its base). You can drag and drop the arrow on the page to move it.\nSee details about the arrow To see details about the arrow, click on it. In the annotation toolbar, click on the \u0026ldquo;Details\u0026rdquo; button:\nHighlight text Create highlighted text To create a highlighted text, select the text with the cursor. Then right-click and choose “Highlight Text” from the menu:\nEdit highlighted text You can remove some of the previously highlighted text. Select the text you want to remove the highlighting with the cursor. Then right-click and choose \u0026ldquo;Delete highlight” in the menu:\nThe rest of the text is always highlighted.\nDelete highlighted text To remove a highlighted text, select the text with the cursor then right-click and choose “Delete Highlight” in the menu.\nAnnotation creation by rules The method of annotation creation by rules allows you to define rules that will be followed for the annotation creation. The annotations of type Strikethrough, Underline, Highlight, Redact or Redact Text are compatible with the creation by rules.\nRules can only be defined in configuration files.\nIt is possible with JavaScript to apply these rules. All the details on the configuration as well as examples of use can be found on the dedicated page.\nAudio annotation Configuration Creation To create an audio annotation, the following property must be set:\nconfigurations\/arender-custom-client.properties # Activate the sound annotation button topPanel.annotationMenu.soundtrue Visibility To display the sound annotation with media controls at opening, use the following property:\nconfigurations\/arender-custom-client.properties # If true, sound annotation will be displayed with media controls at creation annotation.sound.show.controls.at.loadtrue Audio duration To change the maximum audio duration that can be recorded (in ms), use the following property:\nconfigurations\/arender-custom-client.properties # Define the time limitation (in ms) for the record of sound annotation annotation.sound.record.time.limit60000 Warning If ARender is integrated into an HTML iframe tag then it must have the HTML attribute allow\u0026ldquo;microphone\u0026rdquo; in the iframe tag itself.\nFor browser security reasons, use of the microphone is only possible with the HTTPS protocol or if ARender is deployed in localhost. Any other unsecured host is not supported by default. However, in a test scope, it is possible with the Chrome browser to add the Insecure origins treated as secure flag with the URL chrome:\/\/flags\/\n Create an audio annotation To create an audio annotation, click on the following button:\nthen, click on the record audio button to start recording audio input corresponding to the microphone.\nAfter recording, the audio can be stopped and played. The progress bar can be used to jump to a specific time of the audio.\nThe audio pin can be used to hide and move the audio annotation.\n/p>p>feature/p>p>annotations/p>, url: https:\/\/docs.arender.io\/features\/annotations\/ }, { value: Annotations, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/annotation\/, label: p>General Description Parameter Key Default value Type Automatic save mode annotation.autosave false Boolean Auto refreshes the annotations after save annotation.autorefresh true Boolean Load existing annotations annotation.loadExisting true Boolean Display loading GIF when saving annotations annotation.loadingGIF true Boolean Include annotation textual content when searching annotation.searchTextInAnnotations true Boolean Allow annotation preferences update upon edition annotation.preferences.update.onEdit.enabled false Boolean Autosave Description Parameter Key Default value Type Saving may be triggered when using annotation creation repeatable annotation./p>p>General Description Parameter Key Default value Type Automatic save mode annotation.autosave false Boolean Auto refreshes the annotations after save annotation.autorefresh true Boolean Load existing annotations annotation.loadExisting true Boolean Display loading GIF when saving annotations annotation.loadingGIF true Boolean Include annotation textual content when searching annotation.searchTextInAnnotations true Boolean Allow annotation preferences update upon edition annotation.preferences.update.onEdit.enabled false Boolean Autosave Description Parameter Key Default value Type Saving may be triggered when using annotation creation repeatable annotation.autosave.repeatMode.enabled false Boolean Auto save annotation timer delay in milliseconds annotation.autosave.timerDelay 1000 Integer Sticky Note Description Parameter Key Default value Type Opacity annotation.stickyNote.opacity 1.0 Float Minimum width annotation.stickyNote.minimum.width 250 Integer Minimum height annotation.stickyNote.minimum.height 170 Integer Background color annotation.stickyNote.default.color #FFDD00 String Font size annotation.stickyNote.default.fontSize 2 Integer Default font annotation.stickyNote.default.font Helvetica String Underlined text annotation.stickyNote.default.underline false Boolean Bold text annotation.stickyNote.default.bold false Boolean Italic text annotation.stickyNote.default.italic false Boolean Hide border annotation.stickyNote.hide.border true Boolean Hide details about sticky note annotation.stickyNote.hide.details false Boolean Hide \u0026lsquo;reply\u0026rsquo; button when text is empty annotation.stickyNote.can.hide.reply.button false Boolean Minimum sizes are according to zoom annotation.stickyNote.according.to.zoom true Boolean Ratio content edition height \/ total height annotation.stickyNote.content.edition.height.ratio 0.7 Float Font color of the sticky note annotation annotation.stickyNote.default.fontColor #000000 String Enables a link between the pin and the note for sticky note annotation.stickyNote.dotLink.enabled true Boolean Default pin size in pixel for the sticky note annotation.stickyNote.pin.default.size 20 Integer If true reply button will hide when stickyNote text is empty annotation.stickyNote.statusList.enabled true Boolean Allow the display of the label or not : ALWAYS,HOVER,NEVER annotation.stickyNote.action.buttons HOVER String Allow the display of the date or not annotation.stickyNote.show.date true Boolean Display only the initials of the creator name if true annotation.stickyNote.creator.name.initial.only true Boolean INITIALS shows the initials of the creator in the pin. INDEX shows the index of the stickynote annotation.stickyNote.pin.display.mode INITIALS String StickyNote will be outlined in blue and the edition mode will not be activated when the icon in the comment explorer will be clicked annotation.stickyNote.outline false Boolean Rectangle Description Parameter Key Default value Type Opacity annotation.rectangle.opacity 0.7 Float Minimum width annotation.rectangle.minimum.width 30 Integer Minimum height annotation.rectangle.minimum.height 10 Integer Background color annotation.rectangle.default.color #EAF39C String Border color annotation.rectangle.default.border.color #EAF39C String Border width annotation.rectangle.default.border.width 0 Integer Circle Description Parameter Key Default value Type Opacity annotation.circle.opacity 0.7 Float Minimum width annotation.circle.minimum.width 30 Integer Minimum height annotation.circle.minimum.height 10 Integer Background color annotation.circle.default.color #EAF39C String Border color annotation.circle.default.border.color #EAF39C String Border width annotation.circle.default.border.width 0 Integer Highlight, strikeout and underline text Description Parameter Key Default value Type Opacity annotation.highligthtext.opacity 0.7 Float Background color annotation.highlighttext.default.color #EAF39C String Strike width ratio (underline, strike) annotation.highlighttext.strike.width.ratio 0.1 Float Redact Description Parameter Key Default value Type Allow hiding redact annotation.can.hide.redact false Boolean Lock redact toolbar.redact.locked false Boolean Polygon Description Parameter Key Default value Type Opacity annotation.polygon.opacity 0.7 Float Background color annotation.polygon.backgroundColor #2A4869 String Border width annotation.polygon.width 2.0f Float Border color annotation.polygon.borderColor #2A4869 Float Polyline Description Parameter Key Default value Type Opacity annotation.polyline.opacity 1 Float Background color annotation.polyline.backgroundColor #2A4869 String Border width annotation.polyline.width 2.0f Float Freehand Description Parameter Key Default value Type Opacity annotation.ink.opacity 1 Float Background color annotation.ink.backgroundColor #2A4869 String Border width annotation.ink.width 2.0f Float Arrow Description Parameter Key Default value Type Background color annotation.arrow.backgroundColor #2A4869 String (RGB or hexadecimal format) Compute the arrow size annotation.arrow.computeDistance false Boolean Minimum head size annotation.arrow.minimal.head.size -1 Integer (-1 to disable) Default distance between head and tail (X-Axis) annotation.arrow.x.defaultDistance 12 Integer Default distance between head and tail (Y-Axis) annotation.arrow.y.defaultDistance 12 Integer Opacity annotation.arrow.opacity 1.0 Float Border width annotation.arrow.border.width 4.0 Float Head type : NONE, SQUARE, CIRCLE, DIAMOND, OPEN_ARROW, CLOSED_ARROW, BUTT, R_OPEN_ARROW, R_CLOSED_ARROW annotation.arrow.head.type OPEN_ARROW String Tail type : NONE, SQUARE, CIRCLE, DIAMOND, OPEN_ARROW, CLOSED_ARROW, BUTT, R_OPEN_ARROW, R_CLOSED_ARROW annotation.arrow.tail.type NONE String Defines a degree of accuracy for the arrow displayed measure annotation.arrow.distance.degree.accuracy 0.01 Float Measurement arrow Description Parameter Key Default value Type Background color annotation.arrow.backgroundColor #2A4869 String (RGB or hexadecimal format) Minimum head size annotation.arrow.minimal.head.size -1 Integer (-1 to disable) Default distance between head and tail (X-Axis) annotation.arrow.x.defaultDistance 12 Integer Default distance between head and tail (Y-Axis) annotation.arrow.y.defaultDistance 12 Integer Opacity annotation.arrow.opacity 1.0 Float Border width annotation.arrow.border.width 4.0 Float Head type : NONE, SQUARE, CIRCLE, DIAMOND, OPEN_ARROW, CLOSED_ARROW, BUTT, R_OPEN_ARROW, R_CLOSED_ARROW annotation.arrow.measurement.head.type BUTT String Tail type : NONE, SQUARE, CIRCLE, DIAMOND, OPEN_ARROW, CLOSED_ARROW, BUTT, R_OPEN_ARROW, R_CLOSED_ARROW annotation.arrow.measurement.tail.type BUTT String Defines a degree of accuracy for the arrow displayed measure annotation.arrow.distance.degree.accuracy 0.01 Float Date display Description Parameter Key Default value Type Display humanized dates in comments and sticky notes annotation.date.display.humanizedDate.enabled false Boolean Display creation date on comments and sticky notes annotation.date.display.creationDate true Boolean Comment explorer | Description Parameter Key Default value Type The order in which comments appear in the exploration panel annotation.comment.explorer.sortByIncrementDate false Boolean Also filters annotations on the page view annotation.comment.explorer.filterPageAnnotations true Boolean Sets up the comment explorer on the east side annotation.comment.explorer.eastSide.enabled false Boolean Opens the comment explorer when an annotation is edited annotation.comment.explorer.openOnEdit false Boolean Animate while expanding the comment explorer annotation.comment.explorer.animate.on.expand true Boolean Shows a simplified list of all authors annotation.comment.explorer.showAllAnnotators true Boolean Shows a total number of annotations annotation.comment.explorer.showTotalAnnotationsNumber false Boolean Shows the comment explorer at startup annotation.comment.explorer.showAtStartup false Boolean Enable to display annotation in one line if needed annotation.comment.explorer.inline.enabled false Boolean Annotation in comment explorer will be displayed in one line annotation.comment.explorer.show.annotation.minimized.on.open false Boolean Allow the display of the date annotation.comment.explorer.show.date true Boolean Display only the initials of the creator name annotation.comment.explorer.creator.name.initial.only false Boolean Enable to display only one annotation per page annotation.comment.explorer.show.one.annotation.only false Boolean Comments and sticky notes field text This part concerns the comments and the sticky notes.\n Description Parameter Key Default value Type Activate the entry in edit mode with a double click annotation.richtext.edition.doubleClick false Boolean Information popup This part concerns the popups which display annotation information on mouse over.\n Description Parameter Key Default value Type Enable \/ disable popup annotation.info.popup.enabled true Boolean Display the popup even if the annotation is editable annotation.info.popup.evenIfEditable false Boolean Display information about last update annotation.info.popup.displayUpdate false Boolean Per page annotation loading If the connector implements the Interface AnnotationPageAccessor, annotations can be loaded on a per page basis in ARender version 3.1.0\u002b.\nIn order to use this feature activate this parameter:\n annotation.loadPerPagetrue The signature of the interface is the following:\nList\u0026lt;Annotationget(int page) throws AnnotationsNotSupportedException, AnnotationCredentialsException, InvalidAnnotationFormatException; The connector will have to make use of buffers\/per page access to the backend annotation storage in order to benefit fully from this feature.\nUsing local storage Using local storage for annotation properties can be made possible with the property below. Its activation does not allow to use the modifications of certain properties on the fly like the use of profiles.\n Description Parameter Key Type Use local storage annotation.use.local.storage boolean /p>p>configuration/p>p>annotation/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/annotation\/ }, { value: Annotations, path: https:\/\/docs.arender.io\/learn\/how-to\/annotation\/, label: p>Annotation creation policy configuration It is possible to define several behavior for annotation creation in ARender. This configuration is in file configurations\/arender-custom-server.properties.\n Key parameter Description Type arender.server.annotations.can.create Allow users to create annotation. Boolean arender.server.annotations.text.html.support Sticky note supports HTML. Boolean arender.server.annotations.text.reply.support Sticky note supports replies. Boolean arender.server.annotations.text.status.support Sticky note supports status. Boolean arender.server.annotations.text.security.support Sticky note supports security./p>p>Annotation creation policy configuration It is possible to define several behavior for annotation creation in ARender. This configuration is in file configurations\/arender-custom-server.properties.\n Key parameter Description Type arender.server.annotations.can.create Allow users to create annotation. Boolean arender.server.annotations.text.html.support Sticky note supports HTML. Boolean arender.server.annotations.text.reply.support Sticky note supports replies. Boolean arender.server.annotations.text.status.support Sticky note supports status. Boolean arender.server.annotations.text.security.support Sticky note supports security. Boolean arender.server.annotations.text.comment.reply.support Sticky note supports replies in the comment explorer. Boolean Look at corresponding parts for annotation securities AnnotationSecurity and stamp templates Stamp.\nStamp template configuration To modify existing stamp, or add new stamps, default configuration is at annotation-template-catalog.xml. There are two type of stamps are available: Text and image stamp.\nText stamp Configurable properties are:\n Description Key parameter Type Stamp name name String Font color fontColor String (text color or hexadecimal) Font size fontSize Integer Background color backgroundColor Texte (text color or hexadecimal) Border color borderColor Texte (text color or hexadecimal) Border style borderStyle Integer (0 or 1, without or with border) Rotation (°) rotation Integer Text stamp example \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.templates.AnnotationTemplate\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;Urgent\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationType\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.common.AnnotationType\u0026#34;\u0026gt;Stamp\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;contentTemplate\u0026#34; value\u0026#34;Urgent\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationStyle\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationStyle\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;fontColor\u0026#34; value\u0026#34;red\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;fontSize\u0026#34; value\u0026#34;20\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;backgroundColor\u0026#34; value\u0026#34;none\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;borderColor\u0026#34; value\u0026#34;red\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;borderStyle\u0026#34; value\u0026#34;1\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;borderWidth\u0026#34; value\u0026#34;1\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;rotation\u0026#34; value\u0026#34;350\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Image Stamp Configurable properties are:\n Description Key parameter Type Stamp name name String Image url imageLocation String (base64 image or image url) Image size defaultPosition PageRelativePosition Width width Integer Height height Integer Rotation (°) rotation Integer Image stamp example \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.templates.AnnotationTemplate\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;Image\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationType\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.common.AnnotationType\u0026#34;\u0026gt;ImageStamp\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;imageLocation\u0026#34; value\u0026#34;data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABUCAYAAADH\/HimAAAABmJLR0QA\/wD\/AP\u002bgvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3goBDi0zg4i\u002byAAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAABHBSURBVHja7Z17mFR1Gcc\/M7OwuyDgrlyUSwIiKgqYeU9THksrtFALzSyMzGtPRmWPYppaGmrlrTRvoaV5NzPo8pRpV\/CKaYjiJUVQ2FBABRHYOf3xvr\/nvPPbc2Zmd2F3dub3fZ55ZnfmzDm\/3\u002b\u002b89\/f9vQcCAgICAgICAgKqEBnzSvs\u002bCVsD25j\/s0WODQjo0QxSiiGy\u002br4XcBfwJvAWsApYDny7BDMFBPRYOMl\/FPALYJT3fS9gEvAYEBV5\/RTIheUMqFaMVkL\/H7C3frYvMF8\/3wj8BDgaOBiYCtwErNPvNwATgyYJqGYcaAh\u002btr6vAS4tYZr9QI\/9UVjCgGrHNcZsWgyM8EyxpBfAn4A\/B4c9oJocc0vgI4HnlTHeAhYBeeC\/wEElzndo0CAB1cYgjjH6AGeojxGpFhgANADXASv185XA\/WpuzQIuBm4BXtbvfw80h6UNqBYGyQJNwD9UU0TAHUCdOS4LDAe\u002bAMwxzBIBa4EngUuACcpowawKqBo0Ao8agv958B8qSoDlPC2\/A\/Ax4HhgnN6\/bFiqLYc\/GOb4k5pUgTkqA1ninNJU1fIbKMw7nWSODdjMmK4\u002bRx5Y4mmOTGCSitAgqI8X6X1qNX9HwCFhmTa\/VMqqpliii\/wusHtgiophCuf\/jQae8jSGY5KNwFfMb8J928xS6Qqz6LP1s1AiUjn3ZxiwWhlik9Ec7vVxo\u002b2DebWZMdxT00ODJKoIxnBrPwlYb\u002b5R3jDGfOADHjPRw\u002b5bxY\/1arPgfwy0WVGYiYTO80Z7RKpBvoJEsnoScoYpsgnargk4DrgQ\u002bDFwGnGqoFs0YzPwnGGQIwJNVgSGIFHEyDBGHola\/RUY1AM1hfN565Xom4GBGliYhZQw\u002bdXgq4EDfHO\/rotUWgSMAXYyA\/pnFZkoUcJ8LbZDyvjdjeptpFyTMXOyxFUDeaRQ831ghd7AFfrZpg6Mz38HmAacj5T5RGZM85EC0AdS5tmea5JwfR9RAnFH3roWu\/ZgNddH6Gu4rvlg83\u002bTOX4DUsq0WF\/PItspFpp7EXUFg1icaCa7SG98exa9J6jzVn0fA0xGasQOUknmjrMEkkc2fGWBt83fQ4H\u002bykx4PoFds9XI5jF3U5eplp6nJmyLR5Tut1ngTmCKjimvn72H5DdupTAn5a7fHhs\/m0Dg2TLPk09goN7AWBWy44DdgPHK3DljRvnm0VIVxguQxPRjyEY7Zz5mvPlFXe20ZIwKG6B\/z0H2dWysEg3SqA7uFJ2Xk1aLVSotQsKmy5AQ95tKjOVgWySL3azmjiP4gcBWykyDkO3HQ9WRdgy7Evi7EsYLyoAZ4Eajzd0cfgfMAF4yjN5R9NHxNOlrALJFeqjOY7COOWcYsb\/OxzFRg37fW38PkhZYq\u002b\/vKqGv03muBF5TobBU\/15RRKDlPe2WSWLeLc0gbrKjkKJC66yfUSXaox54QgnOaeTHgFOAV5HK5K6YZ6MS5gBlkkOQkOye5pj3zLFOI7kxt6jA2qgmyBLgP2p\u002bvGLMO1cPN0SJ2JkyO6hUHwf002s06Jh6J4x3rTLtC0jF9mv6WqnC1PpCrfq\/\/3p\/S69tVzleX0Syso5jZwBXVomJtSfxdmA3v1wxqdQNOBTZjbmDt\u002bZLVZs0q3TfQRmslxJ4I9C3zKjOJiREvE6JeoMy5GvINgb3WqzXLYcmu502usoHmehN\u002bqUqctAfV2f3Jl3PDHARcIESTVcLAT9HkVfzZbjnC1yhDvqahHP0V9OonzJPnZo\/dcafioh3f65XZngXeEf9qTXKJMXMbuuMZzoYEKgK\/ME4Qu8jpQwdwVjgPrWphxozrhJQh\u002bxfWafzfFlNjEw3Ma677igKk7ORavSACsLTxuZd24nzuL3nbwG7UJnVv81IBexZdM8GLrse2wCvU1hL9XkjWEL1QgWYIPUUJmbmdeJ8Z\u002bo5nkqQlJUw10yR\/7saOeAGT3scbZgjMEgnfRB\/8ZxNuJWq7QORWP9alZhpaKKwTOG3nRjvG\/p\u002bZ6U4cUUcyqgbGTVCws4nGuY4Fbi3ggIHFmm\u002bSCWsZ8mBZ43pcDES13ebZ94gTgCmYYI6bO5G7dqJ8Xwk2NBl\u002b2prDdFdYbRKJVbgZlKEcqVZCW0GltWIxmVmsdcAD6r2oAxH\u002bXDDHOuKLEQ52BaJx98ReCAVfTWI4db8oR5iVjUgkbajgG8AJ6gwra9ExnCLeJgSZAS8qNpiWDvPd7Fhrt90QpO5MV1CXNvVk\u002b3oNGmZK\u002bO4tDUCuJa4jOJJys9jdJZeMikCNltCAAN8UIVuUkvZe1RIV5RZ5SS\/G\u002bSvkWxoR0qB\/23OM70DKtNe0zHEzsTZ2Z7MIFsDpwNfJa67AjgbaX\u002b0N8lZ6DRcYZzyDWredkX5tjt\/bySD\/1kk4Zgt49pTKKwkfpC4P1orklPZq9IYZGcklNoKfN8jzvYQ\u002bGDDHG8De7Tjt9YuHQp8j7aNrTMl7Nf22rJ\u002biHQn4nLvcqJW7QmOfBlJrrn1WQ9cDjxiPju1HRpopt4vxxyHJWjfpN8N6SADZTwB9iXiIsAIyVflimhKdA1cX\u002bWzvWMe1u9eR8pZKkrtz6NtK56OmGizjHR4vp2ElDHEtEB9n34lTDD\/3FurKZZmviRdb3ukzHsJ0ki7RaU8RXyuBuMElzO\/\u002bw0h3YVsSFpK4f7vfyClHpkyNOs9RuK2IhuBSpk7pyN1Vo\u002brAMokBGeyKb5Lxrv\u002b9bRNRv475Xf2URbu2BPN\u002boGU77hA0IcrTfWfogNb1M6bnsQgq8yinewtQjlSdiJS8LesDDu0n2qYU4C\/eHbsPKS\u002bqNg8tkHKQ\/wmBRFwu3dsb6Qw7y5z\/A0JkT8SpPVzRmNcZr670ZzrZeIQfLH16gX8jMJy\u002bAuK\/G6gEqMrEXkPuCpBcPVCCh7HqMBII\/QMcK63Zu7vu0vcrwV63HXedY81waCPd0BAb1HtMUCl5npgn06aaUcSb9tcXiZDuffxSMy\u002bVYMDI1LMBdQM\u002bqFKwk0pjt6kBIfSXvejwDMJN9kRa5M5drAyjN8G568JUtKOdXfibi6rvCjgLmrS5lWTbF9kvFYTXmM0R96YZEmm8AwKE7aPUNi6J2uiYPcac\u002bmmIg755UgZ0QeRygHr\/xyZcF\/dNfbVMb9qfK\u002bJyDaICKnw3StlDbo1cnWCEtljulAdPVdvjVg54jmmyPEuNu9q\/39ifvemkfxZlap1OrZpaiJYB88Si9uRt0cRhswhe5FdJarfHG0tkhDNmcDFJmM3WwY5rcgNnWCOXYXkKXJG860x1\/wRhdXAWY\/A3N\/f8uZ\u002bdoJ5hIZOXaBkI1JMeELKvaj3TL2HkMRwJsGMPQm42axjg\/ndkwlmrXvfCtnim1eHfKwKHKdVbyU5X9OtTOIm4koTLu\/k\u002bfYwi\/WsEkExNTkQ2TzfotGbdSpRdzULMhY4T23zKEWtr1HVfb\u002baLyMTJHnGSPS71Uw6AimgnO5poTfUlPoEccHly8QFic7mX2wIyb\u002bJk4iTdg\u002brmeUwDqlstibSZZ60rVNzx2qmQ42ZtFYdZN\u002b8q0Oqdd36rNaQe\/8izvs9Zu53JPgkqDa9GXkamDtHPfAv4l5n23vXyBm6mKfCJe8FKO7WeaX5ed3aZsg1DXtABzylgwzmJrDETP6YhAnbm3Oy3uSrkGz9sbp4tiTla7qot2m0xjehNiDlLs2qXUr5Odepeh9nbH2rQa1kXq1MsFBNiQbkcW\/WT5mWMMdB6ry68y2gsLp3Hwqz3e71ll4HZfClOjc3zmMNY\u002baRfrm\u002bVG1UH9Kd8yk9VybFr7QNNfJqLib5fEdpNPJ0T9icZwh\u002bSopZNdN8\/xBx4niGCpdcgn\/jGP1nwHe6O6xfZ6Ir4zvod2SJE3lWCmVTok7j1Y7eznx\u002bqf62BdlU9RCyp3g3daTX0LaZ2VQ1z8aoSXQysmPxeh3DncBclV4vqUPcy1vwbdQPyRvii5ANP3649Yvm2q0arZukmuZM1Tbvme8jlbion\/d1Y0LO0nDns8SPgHCEutyYQ80UNt1bbsxHn2iuNcc9USQ0PdCEWlv0\/rfqmu8O7Ad8Rs3eJ9R0mmzoBc3V2GCIzXw36Zq8oAzrxju7hOndrOe9UtfxWsPYue7SIDkTrutoYuYAVZd5pDNGn5RJZVIc7hyFZS1zdaEcMd\u002bS4ki\/qsTdkuKkvwt8V6X24AQt1pfChKZ7Xekd7xj9QykmXqSS\u002bBvq\u002bDvm2IRsJb0H2cbqHNFdPGLdR0O031JJ22SCFs\u002baa7yI7P6zhGqFzx\/NtZPCpA1qbi01EThnjkYeE96OVAGPTmC0gRQ\u002bkmKurs1n9F4t0XEf7mmko02g4NN67omqiW\/XtXGab39Dnzm6OTF8ug7stiJETIptOs4s1P\u002bAHTuohYYhj3Ue4WmfEQkOed5ETTaa\/60WuL5EgKDeqHxH7Esp\/VSrS9TJfEE13EzizoMOjyZou3Wq0cqtjZpozDw3tsYSv\/mVud7TGi79pDLuXNXCt3qRNDeO0UrkfUrcp5z6DUmC4hXgm0oTaQGS\u002bxLWZpOacHNU2FZEaNe9R\u002bpcLdb\/z0I6zjkCzaf8PlLn6m6VEotVgjxD\u002b7dO\u002bm1hbBn0dC\/k\u002bJwS6FNKQHureeNa2LyjCbg7S8z\/IOKCPhegmKVMXoyxWssIW\u002bd13KNU0r\u002bjUvNBytt7fZzO2SUin1afo4XiLXSG6HVHG7\/mNQ0wPE9hAw075sgbS7H7N0rP1cvkvGYrHcwvcY8x\/tOu\u002bvebSPOGRXquioMb\u002bDe9ZE\u002bvEgR2tecMDqJjZdVpOQrbKHmEmhYNOi6rwW4y43ieuISiVPTjMCOZx1PYY6nYWItll5PG7n9XKmQ5VTWj05Yr1OTKlrG\u002bGXNcXcp1MyljypY5vgb19S5AHsvdQHkZ\u002bLSqh4z3m4psjO0Gfa4JI7ZoCPY4jaAcr0z0K\u002bOIriTO4Hb1WIeYqFKk4\u002brTDoasN1Gjbo2SGJzimS0LKOwMGNCNcNJppBLe\u002bymOrwuvXqhRqAxbfkOOL3kuJC7Hb0WeZZgrUwIl5SwqoXz\u002bYAqLGP\u002blUZ2wRbaCTC3\/ZozUSMR0jUfPBD6Voh63NBqREollFOYOPplg1pTLdJWi1rOqoV3g4eYiwiEgoI1dvC\u002bSaY88v2fnCjKPOssg\/ZE6pklVMqeALmCQegqz1\u002b61kLgEPlclc7V1ZwEBJf2M45EM8ueR\/IiL6tye4Fhnqmju4YGmAakBApCSjBuQkocc0rDBVdBeR2HFa0BAzWiOeqQ84kLiBNkwJMPailSopgUTAgKqDn5i7Xzilv0ZJCHo9mmfmmKGBQRUvebYCSnmazDMAvJglwgparOaIyCgZjCDwke0OSZwO82O8pgpMEhATZhVjcgehPHEmXhnOt2mzLG3YY6AgJrBnshmqTEe07imARFS7Rl8joCaw1Qkt7GVxwAZ4G8UdiIJ2iOg6s0pjAl1LPEWSlsWPQgpU9\u002bEbJsNjBFQ9bBlE1mkU\u002bNJtM18jyBuMjDZ\u002by4wSUDVO\u002bOupcxk2m7K2Y64u8d\u002bwecIqBXN4TAU6Q5\/hKdVQHpducYB0zymCgioejQgLUHH0HbPSDOyDzlC9o6TwEABAVWnOWy7zccp3KvhXqOQTU4R0mnDOuzBvAqoWsaw\/WAfJu615BoIgOzfcA75pYSq3IAagStV\/wCyHXbHBMbpj\/S7tfs5csHvCKh2Z9y9jwP\u002bTtw0zppMffW7CGn9SfA1AmqBQbLGdFqGtNDplaA9nlbmuMZojqA1AmoC2yHh2lM9xnEFib9X5jjXc8iDBgmoaqc8Y7TDRZ5Z5Zxy91yNyUFjBNSi3zEHKTBs8BzuRuRJQquQ\/qsEBgmoNSb5MdLdvNn7fADS2XwVslPQfhfMqoCaYI7DkA7oAyjMko9Fuq2vI\/STDahRTEAelLO\/pxU\u002bh7T4t7VVAQE1hX7IcxyO9DTKbOIHovwymFMBtWpanYO0AXUYjTy1yLUFdQ\u002b5yYUlC6g15tidwr3i5wCvEzeS\/jKFD6AJUauAmsJC2j60MlIm2c0wU\u002bgrG1CTmO0xxlKkdGRYWJqAajadyj0uizSR7os8ydT5Ha1hKQNqnZHSfIpgSgUEBATUIv4PjLUPTjqL7sIAAAAASUVORK5CYII\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;defaultPosition\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.geometry.PageRelativePosition\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;w\u0026#34; value\u0026#34;200\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;h\u0026#34; value\u0026#34;100\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;annotationStyle\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationStyle\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;rotation\u0026#34; value\u0026#34;340\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Annotation creation configuration In a annotation creation action button it is possible to override annotation properties defined in configurations\/arender-custom-client.properties, as default annotation color or opacity. This configuration is done in events-configuration.xml in a creation bean (class com.arondor.viewer.client.toppanel.behavior.annotation.CreateAnnotationButtonHandler) In the creation action bean, definition of an annotation is needed.\nComplete definition of empty blue border rectangle:\n\u0026lt;bean id\u0026#34;SquareCreationAction\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.behavior.annotation.CreateAnnotationButtonHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.annotation.events.PrepareAnnotationCreationEvent\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.common.AnnotationType\u0026#34;\u0026gt;Square\u0026lt;\/value\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;!-- annotation definition --\u0026gt; \u0026lt;property name\u0026#34;model\u0026#34;\u0026gt; \u0026lt;!-- annotation classes --\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.api.SquareElemType\u0026#34;\u0026gt; \u0026lt;!-- annotation properties --\u0026gt; \u0026lt;property name\u0026#34;width\u0026#34; value\u0026#34;12\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;opacity\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;color\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.Color\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;r\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;g\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;b\u0026#34; value\u0026#34;255\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;!-- End of annotation definition --\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; Available properties are:\n Annotation type Class Configurable property (property type) Square SquareElemType opacity (decimal), width (integer), color (Color, border color), interiorColor (Color, interior color), style (StyleBEType, border style) Circle CircleElemType opacity (decimal), width (integer), color (Color, border color), interiorColor (Color, interior color), style (StyleBEType, border style) Text SquareElemType opacity (decimal), color (Color) Highlight HighlightElemType opacity (decimal), color (Color), flags (AnnotationFlags) Underline UnderlineElemType opacity (decimal), color (Color), flags (AnnotationFlags) Strikeout StrikeoutElemType opacity (decimal), color (Color), flags (AnnotationFlags) Line LineElemType opacity (decimal), color (Color), head (LineEndType), tail (LineEndType) Polygon PolygonElemType opacity (decimal), width (integer), color (Color,border color), interiorColor (Color, interior color), style (StyleBEType, border style) Polyline PolylineElemType opacity (decimal), width (integer), color (Color) Ink InkElemType opacity (decimal), width (integer), color (Color) Precision about properties:\n Color: a color is defined on this model. r,g et b values are between 0 and 255. \u0026lt;property name\u0026#34;color\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.Color\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;r\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;g\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;b\u0026#34; value\u0026#34;255\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; LineEndType: authorized values SQUARE, CIRCLE, DIAMOND, OPEN_ARROW, CLOSED_ARROW, NONE, BUTT, R_OPEN_ARROW, R_CLOSED_ARROW \u0026lt;property name\u0026#34;head\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.api.LineEndType\u0026#34;\u0026gt;NONE\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; AnnotationFlags: obfuscate tag is available \u0026lt;property name\u0026#34;annotationFlags\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.AnnotationFlags\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;obfuscate\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; Style: Two styles are available: CLOUDY and SOLID \u0026lt;property name\u0026#34;style\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34; com.arondor.viewer.annotation.api.StyleBEType\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;value\u0026gt;CLOUDY\u0026lt;\/value\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; Annotation securities configuration Securities list allows to define securities for all annotations. This list is visible as dropdown list in annotation toolbar when an annotation is in edit mode. Every security has two parameters:\n symbolicName, value sent to server for processing. localizedDisplayNames, a map which have for every entry locale as key and display name as value. Example \u0026lt;bean id\u0026#34;availableSecurityLevels\u0026#34; class\u0026#34;java.util.ArrayList\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;list\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;private\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry\u0026gt; \u0026lt;key\u0026gt; \u0026lt;value\u0026gt;fr\u0026lt;\/value\u0026gt; \u0026lt;\/key\u0026gt; \u0026lt;value\u0026gt;Privé\u0026lt;\/value\u0026gt; \u0026lt;\/entry\u0026gt; \u0026lt;entry\u0026gt; \u0026lt;key\u0026gt; \u0026lt;value\u0026gt;en\u0026lt;\/value\u0026gt; \u0026lt;\/key\u0026gt; \u0026lt;value\u0026gt;Private\u0026lt;\/value\u0026gt; \u0026lt;\/entry\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;public\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry\u0026gt; \u0026lt;key\u0026gt; \u0026lt;value\u0026gt;fr\u0026lt;\/value\u0026gt; \u0026lt;\/key\u0026gt; \u0026lt;value\u0026gt;Public\u0026lt;\/value\u0026gt; \u0026lt;\/entry\u0026gt; \u0026lt;entry\u0026gt; \u0026lt;key\u0026gt; \u0026lt;value\u0026gt;en\u0026lt;\/value\u0026gt; \u0026lt;\/key\u0026gt; \u0026lt;value\u0026gt;Public\u0026lt;\/value\u0026gt; \u0026lt;\/entry\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; Configuration of a submenu for the annotation creation buttons Since the version 4.7.x, the annotation buttons are in the toppanel by default, they are no longer in a submenu.\nCurrent configuration of the buttons in the toppanel Here is the current configuration of the bean serving as the container for the annotation creation buttons :\nExample \u0026lt;bean id\u0026#34;annotationMenu\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.SimpleButtonSetPresenter\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;orderedNamedList\u0026#34; value\u0026#34;${topPanel.annotation.buttons.beanNames}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;fullHeight annotationMenu\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;shrinkToDropDown\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;dropdownId\u0026#34; value\u0026#34;dropdownAnnotation\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;dropdownClassName\u0026#34; value\u0026#34;standardButton icon-add-annotations more-icon\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; Here is an example of a bean that defines an annotation creation button located in the toppanel:\nExample \u0026lt;bean id\u0026#34;addHighlightRectangleAnnotationButton\u0026#34; class\u0026#34;com.arondor.viewer.client.widgets.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addHighlightRectangleAnnotationButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;Square\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;supportDoubleClick\u0026#34; value\u0026#34;${topPanel.annotationMenu.highlight.repeat}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.highlight}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-highlight-area toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#addRectangleAnnotation\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;doubleClickButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;inactiveButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;quitAnnotationCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;supportShortCut\u0026#34; value\u0026#34;true\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;shortcut\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.documentcontent.shortcuts.KeyboardShortCut\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;ctrl\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;key\u0026#34; value\u0026#34;${shortcut.annotation.rectangle.key}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${shortcut.annotation.rectangle.enabled}\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Configuration to put the buttons in a submenu The submenu The container will have to be modified in order to become a button opening a submenu. First the following properties must be deleted because they are not compatible with the submenu :\n shrinkToDropDown dropdownId dropdownClassName The class of the bean must be modified so that it corresponds to a button opening a submenu. The new class to be used is com.arondor.viewer.client.toppanel.presenter.SubMenuButtonPresenter.\nHere is the complete example of the bean, to be put in the arender-custom-integration.xml file, which allows to have a button opening a submenu instead of a simple button container in the toppanel :\nExample \u0026lt;bean id\u0026#34;annotationMenu\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.SubMenuButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;annotationMenu\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;orderedNamedList\u0026#34; value\u0026#34;${topPanel.annotation.buttons.beanNames}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-add-annotations more-icon\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; The buttons in the submenu To put the buttons in a submenu, you will have to take the bean corresponding to the annotations you want to put in the submenu, then add them to the arender-custom-integration.xml file. Then the following properties will need to be removed as they are not compatible with a submenu button :\n name buttonGroup inactiveButtonHandler supportShortCut shortcut The class of the bean must be modified in order to have a button that can be integrated into the submenu. The new class to use is com.arondor.viewer.client.widgets.DropdownMenuItem.\nIf the double-click must be managed, then it will be necessary to add before the buttonHandler property, the following property allowing to define the time, in milliseconds, of the interval between the two clicks :\nExample \u0026lt;property name\u0026#34;clickInterval\u0026#34; value\u0026#34;200\u0026#34; \/\u0026gt; Once these steps are completed, you will have a bean that looks like the following example. The step will have to be repeated for each button to be added in a submenu.\nExample \u0026lt;bean id\u0026#34;addHighlightRectangleAnnotationButton\u0026#34; class\u0026#34;com.arondor.viewer.client.widgets.DropdownMenuItem\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addHighlightRectangleAnnotationButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;supportDoubleClick\u0026#34; value\u0026#34;${topPanel.annotationMenu.highlight.repeat}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.highlight}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-highlight-area toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;clickInterval\u0026#34; value\u0026#34;200\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#addRectangleAnnotation\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;doubleClickButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Result with several annotation creation buttons in the submenu :\n/p>p>tutorial/p>p>annotation/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/annotation\/ }, { value: Annotations, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/annotation-js-api\/, label: p>Intercept Hyperlinks Object: getARenderJS().getAnnotationJSAPI() Here is an example of JS code allowing to register a method that will be called each time that an hyperlink is clicked.\nvar annotationjs; function arenderjs_init(ajs) { ajs.onAnnotationModuleReady( function(annotjs){ annotationjsannotjs; annotjs.registerFollowLinkHandler(followLink); console.log(annotationjs.getDestinationTypes()); console.log(annotationjs.getActionTypes()); } ); } function followLink(docId, pageNumber, destination, action) { console.log( \u0026#34;docId\u0026#34; \u002b docId, \u0026#34;pageNumber\u0026#34; \u002b pageNumber, \u0026#34;dest\u0026#34; \u002b destination, \u0026#34;action\u0026#34; \u002b action .join()); console.log(annotationjs.getPropertyFromDestination(destination,\u0026#34;PAGE_TARGET\u0026#34;)); console.log(annotationjs.getPropertyFromAction(action,\u0026#34;GOTO\u0026#34;)); } In this example, you can also observe how to visualize all existing properties in hyperlinks./p>p>Intercept Hyperlinks Object: getARenderJS().getAnnotationJSAPI() Here is an example of JS code allowing to register a method that will be called each time that an hyperlink is clicked.\nvar annotationjs; function arenderjs_init(ajs) { ajs.onAnnotationModuleReady( function(annotjs){ annotationjsannotjs; annotjs.registerFollowLinkHandler(followLink); console.log(annotationjs.getDestinationTypes()); console.log(annotationjs.getActionTypes()); } ); } function followLink(docId, pageNumber, destination, action) { console.log( \u0026#34;docId\u0026#34; \u002b docId, \u0026#34;pageNumber\u0026#34; \u002b pageNumber, \u0026#34;dest\u0026#34; \u002b destination, \u0026#34;action\u0026#34; \u002b action .join()); console.log(annotationjs.getPropertyFromDestination(destination,\u0026#34;PAGE_TARGET\u0026#34;)); console.log(annotationjs.getPropertyFromAction(action,\u0026#34;GOTO\u0026#34;)); } In this example, you can also observe how to visualize all existing properties in hyperlinks.\nannotationjs.getDestinationTypes() and annotationjs.getActionTypes() contains the list of properties that can be asked for hyperlinks destinations and actions.\nannotationjs.getPropertyFromDestination(destination,property) and annotationjs.getPropertyFromAction(action,property) allow to ask for a particular property once the action or destination have been received.\nYou will find following the list of properties for destinations :\n Type Description PAGE_TARGET Page number of the page targeted URI URI adress to go to You will find following the list of properties for actions that will indicate the type of fields you will find in the destination :\n Type Description GOTO The destination is a page number URI The destination is an URI /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/annotation-js-api\/ }, { value: Annotations, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/annotation\/, label: p>General Key: annotation Description Parameter Key Type Automatic save mode autosave Boolean Load existing annotations loadExisting Boolean Display loading GIF when saving annotations loadingGIF Boolean Include annotation textual content when searching searchTextInAnnotations Boolean arender.properties # Enable autosave mode annotation.autosavetrue # Display loading GIF annotation.loadingGIFtrue Autosave Key: annotation./p>p>General Key: annotation Description Parameter Key Type Automatic save mode autosave Boolean Load existing annotations loadExisting Boolean Display loading GIF when saving annotations loadingGIF Boolean Include annotation textual content when searching searchTextInAnnotations Boolean arender.properties # Enable autosave mode annotation.autosavetrue # Display loading GIF annotation.loadingGIFtrue Autosave Key: annotation.autosave Description Parameter Key Type Saving may be triggered when using annotation creation repeatable repeatMode.enabled Boolean Sticky Note Key: annotation.stickyNote Description Parameter Key Type Opacity opacity Boolean Minimum width minimum.width Integer Minimum height minimum.height Integer Background color default.color String Font size default.fontSize Integer Default font default.font String Underlined text default.underline Boolean Bold text default.bold Boolean Italic text default.italic Boolean Hide border hide.border Boolean Hide details about sticky note hide.details Boolean Hide \u0026lsquo;reply\u0026rsquo; button when text is empty can.hide.reply.button Boolean Minimum sizes are according to zoom according.to.zoom Boolean Ratio content edition height \/ total height content.edition.height.ratio Float Rectangle Key: annotation.rectangle Description Parameter Key Type Opacity opacity Float Minimum width minimum.width Integer Minimum height minimum.height Integer Background color default.color String Border color default.border.color String Border width default.border.width Integer Circle Key: annotation.circle Description Parameter Key Type Opacity opacity Float Minimum width minimum.width Integer Minimum height minimum.height Integer Background color default.color String Border color default.border.color String Border width default.border.width Integer Highlight, strikeout and underline text Key: annotation.highligthtext Description Parameter Key Type Opacity opacity Float Obfuscate Description Parameter Key Type Allow hiding obfuscate annotation.canHideObfuscate Boolean Lock obfuscate toolbar.lockedObfuscate Boolean Polygon Key: annotation.polygon Description Parameter Key Type Opacity opacity Float Background color backgroundColor String Border width width Float Polyline Key: annotation.polyline Description Parameter Key Type Opacity opacity Float Background color backgroundColor String Border width width Float Freehand Key: annotation.ink Description Parameter Key Type Opacity opacity Float Background color backgroundColor String Border width width Float Arrow Key: annotation.arrow Description Parameter Key Type Background color backgroundColor String (RGB or hexadecimal format) Compute the arrow size computeDistance Boolean Minimum head size minimal.head.size Integer (-1 to disable) Default distance between head and tail (X-Axis) x.defaultDistance Integer Default distance between head and tail (Y-Axis) y.defaultDistance Integer Date display Key: annotation.date.display Description Parameter Key Type Display humanized dates in comments and sticky notes humanizedDate.enabled Boolean Display creation date on comments and sticky notes creationDate Boolean Comment explorer Key: annotation.comment.explorer Description Parameter Key Type The order in which comments appear in the exploration panel sortByIncrementDate Boolean Also filters annotations on the page view filterPageAnnotations Boolean Comments and sticky notes field text This part concerns the comments and the sticky notes.\n Key: annotation.richtext Description Parameter Key Type Activate the entry in edit mode with a double click edition.doubleClick Boolean Information popup This part concerns the popups which display annotation information on mouse over.\n Key: annotation.info.popup Description Parameter Key Type Enable \/ disable popup enabled Boolean Display the popup even if the annotation is editable evenIfEditable Boolean Display information about last update displayUpdate Boolean Per page annotation loading If the connector implements the Interface AnnotationPageAccessor, annotations can be loaded on a per page basis in ARender version 3.1.0\u002b.\nIn order to use this feature activate this parameter:\n annotation.loadPerPagetrue The signature of the interface is the following:\nList\u0026lt;Annotationget(int page) throws AnnotationsNotSupportedException, AnnotationCredentialsException, InvalidAnnotationFormatException; The connector will have to make use of buffers\/per page access to the backend annotation storage in order to benefit fully from this feature.\nUsing local storage Using local storage for annotation properties can be made possible with the property below. Its activation does not allow to use the modifications of certain properties on the fly like the use of profiles.\n Description Parameter Key Type Use local storage annotation.use.local.storage boolean /p>p>configuration/p>p>annotation/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/annotation\/ }, { value: Annotations, path: https:\/\/docs.arender.io\/v4\/cookbook\/annotation\/, label: p>Annotation creation policy configuration It is possible to define several behavior for annotation creation in ARender. This configuration is in file arender-server-custom-\u0026lt;\u0026hellip;\u0026gt;.properties.\n Key parameter Description Type arender.server.annotations.can.create Allow users to create annotation. Boolean arender.server.annotations.text.html.support Sticky note supports HTML. Boolean arender.server.annotations.text.reply.support Sticky note supports replies. Boolean arender.server.annotations.text.status.support Sticky note supports status. Boolean arender.server.annotations.text.security.support Sticky note supports security./p>p>Annotation creation policy configuration It is possible to define several behavior for annotation creation in ARender. This configuration is in file arender-server-custom-\u0026lt;\u0026hellip;\u0026gt;.properties.\n Key parameter Description Type arender.server.annotations.can.create Allow users to create annotation. Boolean arender.server.annotations.text.html.support Sticky note supports HTML. Boolean arender.server.annotations.text.reply.support Sticky note supports replies. Boolean arender.server.annotations.text.status.support Sticky note supports status. Boolean arender.server.annotations.text.security.support Sticky note supports security. Boolean arender.server.annotations.text.comment.reply.support Sticky note supports replies in the comment explorer. Boolean Look at corresponding parts for annotation securities AnnotationSecurity and stamp templates Stamp.\nStamp template configuration To modify existing stamp, or add new stamps, default configuration is at annotation-template-catalog.xml. There are two type of stamps are available: Text and image stamp.\nText stamp Configurable properties are:\n Description Key parameter Type Stamp name name String Font color fontColor String (text color or hexadecimal) Font size fontSize Integer Background color backgroundColor Texte (text color or hexadecimal) Border color borderColor Texte (text color or hexadecimal) Border style borderStyle Integer (0 or 1, without or with border) Rotation (°) rotation Integer Text stamp example \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.templates.AnnotationTemplate\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;Urgent\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationType\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.client.api.annotation.Annotation$AnnotationType\u0026#34;\u0026gt;Stamp\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;contentTemplate\u0026#34; value\u0026#34;Urgent\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationStyle\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationStyle\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;fontColor\u0026#34; value\u0026#34;red\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;fontSize\u0026#34; value\u0026#34;20\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;backgroundColor\u0026#34; value\u0026#34;none\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;borderColor\u0026#34; value\u0026#34;red\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;borderStyle\u0026#34; value\u0026#34;1\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;borderWidth\u0026#34; value\u0026#34;1\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;rotation\u0026#34; value\u0026#34;350\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Image Stamp Configurable properties are:\n Description Key parameter Type Stamp name name String Image url imageLocation String (base64 image or image url) Image size defaultPosition PageRelativePosition Width width Integer Height height Integer Rotation (°) rotation Integer Image stamp example \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.templates.AnnotationTemplate\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;Image\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationType\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.client.api.annotation.Annotation$AnnotationType\u0026#34;\u0026gt;ImageStamp\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;imageLocation\u0026#34; value\u0026#34;data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABUCAYAAADH\/HimAAAABmJLR0QA\/wD\/AP\u002bgvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3goBDi0zg4i\u002byAAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAABHBSURBVHja7Z17mFR1Gcc\/M7OwuyDgrlyUSwIiKgqYeU9THksrtFALzSyMzGtPRmWPYppaGmrlrTRvoaV5NzPo8pRpV\/CKaYjiJUVQ2FBABRHYOf3xvr\/nvPPbc2Zmd2F3dub3fZ55ZnfmzDm\/3\u002b\u002b89\/f9vQcCAgICAgICAgKqEBnzSvs\u002bCVsD25j\/s0WODQjo0QxSiiGy\u002br4XcBfwJvAWsApYDny7BDMFBPRYOMl\/FPALYJT3fS9gEvAYEBV5\/RTIheUMqFaMVkL\/H7C3frYvMF8\/3wj8BDgaOBiYCtwErNPvNwATgyYJqGYcaAh\u002btr6vAS4tYZr9QI\/9UVjCgGrHNcZsWgyM8EyxpBfAn4A\/B4c9oJocc0vgI4HnlTHeAhYBeeC\/wEElzndo0CAB1cYgjjH6AGeojxGpFhgANADXASv185XA\/WpuzQIuBm4BXtbvfw80h6UNqBYGyQJNwD9UU0TAHUCdOS4LDAe\u002bAMwxzBIBa4EngUuACcpowawKqBo0Ao8agv958B8qSoDlPC2\/A\/Ax4HhgnN6\/bFiqLYc\/GOb4k5pUgTkqA1ninNJU1fIbKMw7nWSODdjMmK4\u002bRx5Y4mmOTGCSitAgqI8X6X1qNX9HwCFhmTa\/VMqqpliii\/wusHtgiophCuf\/jQae8jSGY5KNwFfMb8J928xS6Qqz6LP1s1AiUjn3ZxiwWhlik9Ec7vVxo\u002b2DebWZMdxT00ODJKoIxnBrPwlYb\u002b5R3jDGfOADHjPRw\u002b5bxY\/1arPgfwy0WVGYiYTO80Z7RKpBvoJEsnoScoYpsgnargk4DrgQ\u002bDFwGnGqoFs0YzPwnGGQIwJNVgSGIFHEyDBGHola\/RUY1AM1hfN565Xom4GBGliYhZQw\u002bdXgq4EDfHO\/rotUWgSMAXYyA\/pnFZkoUcJ8LbZDyvjdjeptpFyTMXOyxFUDeaRQ831ghd7AFfrZpg6Mz38HmAacj5T5RGZM85EC0AdS5tmea5JwfR9RAnFH3roWu\/ZgNddH6Gu4rvlg83\u002bTOX4DUsq0WF\/PItspFpp7EXUFg1icaCa7SG98exa9J6jzVn0fA0xGasQOUknmjrMEkkc2fGWBt83fQ4H\u002bykx4PoFds9XI5jF3U5eplp6nJmyLR5Tut1ngTmCKjimvn72H5DdupTAn5a7fHhs\/m0Dg2TLPk09goN7AWBWy44DdgPHK3DljRvnm0VIVxguQxPRjyEY7Zz5mvPlFXe20ZIwKG6B\/z0H2dWysEg3SqA7uFJ2Xk1aLVSotQsKmy5AQ95tKjOVgWySL3azmjiP4gcBWykyDkO3HQ9WRdgy7Evi7EsYLyoAZ4Eajzd0cfgfMAF4yjN5R9NHxNOlrALJFeqjOY7COOWcYsb\/OxzFRg37fW38PkhZYq\u002b\/vKqGv03muBF5TobBU\/15RRKDlPe2WSWLeLc0gbrKjkKJC66yfUSXaox54QgnOaeTHgFOAV5HK5K6YZ6MS5gBlkkOQkOye5pj3zLFOI7kxt6jA2qgmyBLgP2p\u002bvGLMO1cPN0SJ2JkyO6hUHwf002s06Jh6J4x3rTLtC0jF9mv6WqnC1PpCrfq\/\/3p\/S69tVzleX0Syso5jZwBXVomJtSfxdmA3v1wxqdQNOBTZjbmDt\u002bZLVZs0q3TfQRmslxJ4I9C3zKjOJiREvE6JeoMy5GvINgb3WqzXLYcmu502usoHmehN\u002bqUqctAfV2f3Jl3PDHARcIESTVcLAT9HkVfzZbjnC1yhDvqahHP0V9OonzJPnZo\/dcafioh3f65XZngXeEf9qTXKJMXMbuuMZzoYEKgK\/ME4Qu8jpQwdwVjgPrWphxozrhJQh\u002bxfWafzfFlNjEw3Ma677igKk7ORavSACsLTxuZd24nzuL3nbwG7UJnVv81IBexZdM8GLrse2wCvU1hL9XkjWEL1QgWYIPUUJmbmdeJ8Z\u002bo5nkqQlJUw10yR\/7saOeAGT3scbZgjMEgnfRB\/8ZxNuJWq7QORWP9alZhpaKKwTOG3nRjvG\/p\u002bZ6U4cUUcyqgbGTVCws4nGuY4Fbi3ggIHFmm\u002bSCWsZ8mBZ43pcDES13ebZ94gTgCmYYI6bO5G7dqJ8Xwk2NBl\u002b2prDdFdYbRKJVbgZlKEcqVZCW0GltWIxmVmsdcAD6r2oAxH\u002bXDDHOuKLEQ52BaJx98ReCAVfTWI4db8oR5iVjUgkbajgG8AJ6gwra9ExnCLeJgSZAS8qNpiWDvPd7Fhrt90QpO5MV1CXNvVk\u002b3oNGmZK\u002bO4tDUCuJa4jOJJys9jdJZeMikCNltCAAN8UIVuUkvZe1RIV5RZ5SS\/G\u002bSvkWxoR0qB\/23OM70DKtNe0zHEzsTZ2Z7MIFsDpwNfJa67AjgbaX\u002b0N8lZ6DRcYZzyDWredkX5tjt\/bySD\/1kk4Zgt49pTKKwkfpC4P1orklPZq9IYZGcklNoKfN8jzvYQ\u002bGDDHG8De7Tjt9YuHQp8j7aNrTMl7Nf22rJ\u002biHQn4nLvcqJW7QmOfBlJrrn1WQ9cDjxiPju1HRpopt4vxxyHJWjfpN8N6SADZTwB9iXiIsAIyVflimhKdA1cX\u002bWzvWMe1u9eR8pZKkrtz6NtK56OmGizjHR4vp2ElDHEtEB9n34lTDD\/3FurKZZmviRdb3ukzHsJ0ki7RaU8RXyuBuMElzO\/\u002bw0h3YVsSFpK4f7vfyClHpkyNOs9RuK2IhuBSpk7pyN1Vo\u002brAMokBGeyKb5Lxrv\u002b9bRNRv475Xf2URbu2BPN\u002boGU77hA0IcrTfWfogNb1M6bnsQgq8yinewtQjlSdiJS8LesDDu0n2qYU4C\/eHbsPKS\u002bqNg8tkHKQ\/wmBRFwu3dsb6Qw7y5z\/A0JkT8SpPVzRmNcZr670ZzrZeIQfLH16gX8jMJy\u002bAuK\/G6gEqMrEXkPuCpBcPVCCh7HqMBII\/QMcK63Zu7vu0vcrwV63HXedY81waCPd0BAb1HtMUCl5npgn06aaUcSb9tcXiZDuffxSMy\u002bVYMDI1LMBdQM\u002bqFKwk0pjt6kBIfSXvejwDMJN9kRa5M5drAyjN8G568JUtKOdXfibi6rvCjgLmrS5lWTbF9kvFYTXmM0R96YZEmm8AwKE7aPUNi6J2uiYPcac\u002bmmIg755UgZ0QeRygHr\/xyZcF\/dNfbVMb9qfK\u002bJyDaICKnw3StlDbo1cnWCEtljulAdPVdvjVg54jmmyPEuNu9q\/39ifvemkfxZlap1OrZpaiJYB88Si9uRt0cRhswhe5FdJarfHG0tkhDNmcDFJmM3WwY5rcgNnWCOXYXkKXJG860x1\/wRhdXAWY\/A3N\/f8uZ\u002bdoJ5hIZOXaBkI1JMeELKvaj3TL2HkMRwJsGMPQm42axjg\/ndkwlmrXvfCtnim1eHfKwKHKdVbyU5X9OtTOIm4koTLu\/k\u002bfYwi\/WsEkExNTkQ2TzfotGbdSpRdzULMhY4T23zKEWtr1HVfb\u002baLyMTJHnGSPS71Uw6AimgnO5poTfUlPoEccHly8QFic7mX2wIyb\u002bJk4iTdg\u002brmeUwDqlstibSZZ60rVNzx2qmQ42ZtFYdZN\u002b8q0Oqdd36rNaQe\/8izvs9Zu53JPgkqDa9GXkamDtHPfAv4l5n23vXyBm6mKfCJe8FKO7WeaX5ed3aZsg1DXtABzylgwzmJrDETP6YhAnbm3Oy3uSrkGz9sbp4tiTla7qot2m0xjehNiDlLs2qXUr5Odepeh9nbH2rQa1kXq1MsFBNiQbkcW\/WT5mWMMdB6ry68y2gsLp3Hwqz3e71ll4HZfClOjc3zmMNY\u002baRfrm\u002bVG1UH9Kd8yk9VybFr7QNNfJqLib5fEdpNPJ0T9icZwh\u002bSopZNdN8\/xBx4niGCpdcgn\/jGP1nwHe6O6xfZ6Ir4zvod2SJE3lWCmVTok7j1Y7eznx\u002bqf62BdlU9RCyp3g3daTX0LaZ2VQ1z8aoSXQysmPxeh3DncBclV4vqUPcy1vwbdQPyRvii5ANP3649Yvm2q0arZukmuZM1Tbvme8jlbion\/d1Y0LO0nDns8SPgHCEutyYQ80UNt1bbsxHn2iuNcc9USQ0PdCEWlv0\/rfqmu8O7Ad8Rs3eJ9R0mmzoBc3V2GCIzXw36Zq8oAzrxju7hOndrOe9UtfxWsPYue7SIDkTrutoYuYAVZd5pDNGn5RJZVIc7hyFZS1zdaEcMd\u002bS4ki\/qsTdkuKkvwt8V6X24AQt1pfChKZ7Xekd7xj9QykmXqSS\u002bBvq\u002bDvm2IRsJb0H2cbqHNFdPGLdR0O031JJ22SCFs\u002baa7yI7P6zhGqFzx\/NtZPCpA1qbi01EThnjkYeE96OVAGPTmC0gRQ\u002bkmKurs1n9F4t0XEf7mmko02g4NN67omqiW\/XtXGab39Dnzm6OTF8ug7stiJETIptOs4s1P\u002bAHTuohYYhj3Ue4WmfEQkOed5ETTaa\/60WuL5EgKDeqHxH7Esp\/VSrS9TJfEE13EzizoMOjyZou3Wq0cqtjZpozDw3tsYSv\/mVud7TGi79pDLuXNXCt3qRNDeO0UrkfUrcp5z6DUmC4hXgm0oTaQGS\u002bxLWZpOacHNU2FZEaNe9R\u002bpcLdb\/z0I6zjkCzaf8PlLn6m6VEotVgjxD\u002b7dO\u002bm1hbBn0dC\/k\u002bJwS6FNKQHureeNa2LyjCbg7S8z\/IOKCPhegmKVMXoyxWssIW\u002bd13KNU0r\u002bjUvNBytt7fZzO2SUin1afo4XiLXSG6HVHG7\/mNQ0wPE9hAw075sgbS7H7N0rP1cvkvGYrHcwvcY8x\/tOu\u002bvebSPOGRXquioMb\u002bDe9ZE\u002bvEgR2tecMDqJjZdVpOQrbKHmEmhYNOi6rwW4y43ieuISiVPTjMCOZx1PYY6nYWItll5PG7n9XKmQ5VTWj05Yr1OTKlrG\u002bGXNcXcp1MyljypY5vgb19S5AHsvdQHkZ\u002bLSqh4z3m4psjO0Gfa4JI7ZoCPY4jaAcr0z0K\u002bOIriTO4Hb1WIeYqFKk4\u002brTDoasN1Gjbo2SGJzimS0LKOwMGNCNcNJppBLe\u002bymOrwuvXqhRqAxbfkOOL3kuJC7Hb0WeZZgrUwIl5SwqoXz\u002bYAqLGP\u002blUZ2wRbaCTC3\/ZozUSMR0jUfPBD6Voh63NBqREollFOYOPplg1pTLdJWi1rOqoV3g4eYiwiEgoI1dvC\u002bSaY88v2fnCjKPOssg\/ZE6pklVMqeALmCQegqz1\u002b61kLgEPlclc7V1ZwEBJf2M45EM8ueR\/IiL6tye4Fhnqmju4YGmAakBApCSjBuQkocc0rDBVdBeR2HFa0BAzWiOeqQ84kLiBNkwJMPailSopgUTAgKqDn5i7Xzilv0ZJCHo9mmfmmKGBQRUvebYCSnmazDMAvJglwgparOaIyCgZjCDwke0OSZwO82O8pgpMEhATZhVjcgehPHEmXhnOt2mzLG3YY6AgJrBnshmqTEe07imARFS7Rl8joCaw1Qkt7GVxwAZ4G8UdiIJ2iOg6s0pjAl1LPEWSlsWPQgpU9\u002bEbJsNjBFQ9bBlE1mkU\u002bNJtM18jyBuMjDZ\u002by4wSUDVO\u002bOupcxk2m7K2Y64u8d\u002bwecIqBXN4TAU6Q5\/hKdVQHpducYB0zymCgioejQgLUHH0HbPSDOyDzlC9o6TwEABAVWnOWy7zccp3KvhXqOQTU4R0mnDOuzBvAqoWsaw\/WAfJu615BoIgOzfcA75pYSq3IAagStV\/wCyHXbHBMbpj\/S7tfs5csHvCKh2Z9y9jwP\u002bTtw0zppMffW7CGn9SfA1AmqBQbLGdFqGtNDplaA9nlbmuMZojqA1AmoC2yHh2lM9xnEFib9X5jjXc8iDBgmoaqc8Y7TDRZ5Z5Zxy91yNyUFjBNSi3zEHKTBs8BzuRuRJQquQ\/qsEBgmoNSb5MdLdvNn7fADS2XwVslPQfhfMqoCaYI7DkA7oAyjMko9Fuq2vI\/STDahRTEAelLO\/pxU\u002bh7T4t7VVAQE1hX7IcxyO9DTKbOIHovwymFMBtWpanYO0AXUYjTy1yLUFdQ\u002b5yYUlC6g15tidwr3i5wCvEzeS\/jKFD6AJUauAmsJC2j60MlIm2c0wU\u002bgrG1CTmO0xxlKkdGRYWJqAajadyj0uizSR7os8ydT5Ha1hKQNqnZHSfIpgSgUEBATUIv4PjLUPTjqL7sIAAAAASUVORK5CYII\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;defaultPosition\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.geometry.PageRelativePosition\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;w\u0026#34; value\u0026#34;200\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;h\u0026#34; value\u0026#34;100\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;annotationStyle\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationStyle\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;rotation\u0026#34; value\u0026#34;340\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Annotation creation configuration In a annotation creation action button it is possible to override annotation properties defined in arender-default.properties, as default annotation color or opacity. This configuration is done in events-configuration.xml in a creation bean (class com.arondor.viewer.client.toppanel.behavior.annotation.CreateAnnotationButtonHandler) In the creation action bean, definition of an annotation is needed.\nComplete definition of empty blue border rectangle:\n\u0026lt;bean id\u0026#34;SquareCreationAction\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.behavior.annotation.CreateAnnotationButtonHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.annotation.events.PrepareAnnotationCreationEvent\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.common.AnnotationType\u0026#34;\u0026gt;Square\u0026lt;\/value\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;!-- annotation definition --\u0026gt; \u0026lt;property name\u0026#34;model\u0026#34;\u0026gt; \u0026lt;!-- annotation classes --\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.api.SquareElemType\u0026#34;\u0026gt; \u0026lt;!-- annotation properties --\u0026gt; \u0026lt;property name\u0026#34;width\u0026#34; value\u0026#34;12\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;opacity\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;color\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.Color\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;r\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;g\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;b\u0026#34; value\u0026#34;255\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;!-- End of annotation definition --\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; Available properties are:\n Annotation type Class Configurable property (property type) Square SquareElemType opacity (decimal), width (integer), color (Color, border color), interiorColor (Color, interior color), style (StyleBEType, border style) Circle CircleElemType opacity (decimal), width (integer), color (Color, border color), interiorColor (Color, interior color), style (StyleBEType, border style) Text SquareElemType opacity (decimal), color (Color) Highlight HighlightElemType opacity (decimal), color (Color), flags (AnnotationFlags) Underline UnderlineElemType opacity (decimal), color (Color), flags (AnnotationFlags) Strikeout StrikeoutElemType opacity (decimal), color (Color), flags (AnnotationFlags) Line LineElemType opacity (decimal), color (Color), head (LineEndType), tail (LineEndType) Polygon PolygonElemType opacity (decimal), width (integer), color (Color,border color), interiorColor (Color, interior color), style (StyleBEType, border style) Polyline PolylineElemType opacity (decimal), width (integer), color (Color) Ink InkElemType opacity (decimal), width (integer), color (Color) Precision about properties:\n Color: a color is defined on this model. r,g et b values are between 0 and 255. \u0026lt;property name\u0026#34;color\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.Color\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;r\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;g\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;b\u0026#34; value\u0026#34;255\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; LineEndType: authorized values SQUARE, CIRCLE, DIAMOND, OPEN_ARROW, CLOSED_ARROW, NONE, BUTT, R_OPEN_ARROW, R_CLOSED_ARROW \u0026lt;property name\u0026#34;head\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.api.LineEndType\u0026#34;\u0026gt;NONE\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; AnnotationFlags: obfuscate tag is available \u0026lt;property name\u0026#34;annotationFlags\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.AnnotationFlags\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;obfuscate\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; Style: Two styles are available: CLOUDY and SOLID \u0026lt;property name\u0026#34;style\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34; com.arondor.viewer.annotation.api.StyleBEType\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;value\u0026gt;CLOUDY\u0026lt;\/value\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; Annotation securities configuration Securities list allows to define securities for all annotations. This list is visible as dropdown list in annotation toolbar when an annotation is in edit mode. Every security has two parameters:\n symbolicName, value sent to server for processing. localizedDisplayNames, a map which have for every entry locale as key and display name as value. Example \u0026lt;bean id\u0026#34;availableSecurityLevels\u0026#34; class\u0026#34;java.util.ArrayList\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;list\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;private\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry\u0026gt; \u0026lt;key\u0026gt; \u0026lt;value\u0026gt;fr\u0026lt;\/value\u0026gt; \u0026lt;\/key\u0026gt; \u0026lt;value\u0026gt;Privé\u0026lt;\/value\u0026gt; \u0026lt;\/entry\u0026gt; \u0026lt;entry\u0026gt; \u0026lt;key\u0026gt; \u0026lt;value\u0026gt;en\u0026lt;\/value\u0026gt; \u0026lt;\/key\u0026gt; \u0026lt;value\u0026gt;Private\u0026lt;\/value\u0026gt; \u0026lt;\/entry\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;public\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry\u0026gt; \u0026lt;key\u0026gt; \u0026lt;value\u0026gt;fr\u0026lt;\/value\u0026gt; \u0026lt;\/key\u0026gt; \u0026lt;value\u0026gt;Public\u0026lt;\/value\u0026gt; \u0026lt;\/entry\u0026gt; \u0026lt;entry\u0026gt; \u0026lt;key\u0026gt; \u0026lt;value\u0026gt;en\u0026lt;\/value\u0026gt; \u0026lt;\/key\u0026gt; \u0026lt;value\u0026gt;Public\u0026lt;\/value\u0026gt; \u0026lt;\/entry\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; Configuration of a submenu for the annotation creation buttons Since the version 4.7.x, the annotation buttons are in the toppanel by default, they are no longer in a submenu.\nCurrent configuration of the buttons in the toppanel Here is the current configuration of the bean serving as the container for the annotation creation buttons :\nExample \u0026lt;bean id\u0026#34;annotationMenu\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.SimpleButtonSetPresenter\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;orderedNamedList\u0026#34; value\u0026#34;${topPanel.annotation.buttons.beanNames}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;fullHeight annotationMenu\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;shrinkToDropDown\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;dropdownId\u0026#34; value\u0026#34;dropdownAnnotation\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;dropdownClassName\u0026#34; value\u0026#34;standardButton icon-add-annotations more-icon\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; Here is an example of a bean that defines an annotation creation button located in the toppanel:\nExample \u0026lt;bean id\u0026#34;addHighlightRectangleAnnotationButton\u0026#34; class\u0026#34;com.arondor.viewer.client.widgets.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addHighlightRectangleAnnotationButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;Square\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;supportDoubleClick\u0026#34; value\u0026#34;${topPanel.annotationMenu.highlight.repeat}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.highlight}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-highlight-area toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#addRectangleAnnotation\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;doubleClickButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;inactiveButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;quitAnnotationCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;supportShortCut\u0026#34; value\u0026#34;true\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;shortcut\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.documentcontent.shortcuts.KeyboardShortCut\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;ctrl\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;key\u0026#34; value\u0026#34;${shortcut.annotation.rectangle.key}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${shortcut.annotation.rectangle.enabled}\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Configuration to put the buttons in a submenu The submenu The container will have to be modified in order to become a button opening a submenu. First the following properties must be deleted because they are not compatible with the submenu :\n shrinkToDropDown dropdownId dropdownClassName The class of the bean must be modified so that it corresponds to a button opening a submenu. The new class to be used is com.arondor.viewer.client.toppanel.presenter.SubMenuButtonPresenter.\nHere is the complete example of the bean, to be put in the arender-custom-integration.xml file, which allows to have a button opening a submenu instead of a simple button container in the toppanel :\nExample \u0026lt;bean id\u0026#34;annotationMenu\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.SubMenuButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;annotationMenu\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;orderedNamedList\u0026#34; value\u0026#34;${topPanel.annotation.buttons.beanNames}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-add-annotations more-icon\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; The buttons in the submenu To put the buttons in a submenu, you will have to take the bean corresponding to the annotations you want to put in the submenu, then add them to the arender-custom-integration.xml file. Then the following properties will need to be removed as they are not compatible with a submenu button :\n name buttonGroup inactiveButtonHandler supportShortCut shortcut The class of the bean must be modified in order to have a button that can be integrated into the submenu. The new class to use is com.arondor.viewer.client.widgets.DropdownMenuItem.\nIf the double-click must be managed, then it will be necessary to add before the buttonHandler property, the following property allowing to define the time, in milliseconds, of the interval between the two clicks :\nExample \u0026lt;property name\u0026#34;clickInterval\u0026#34; value\u0026#34;200\u0026#34; \/\u0026gt; Once these steps are completed, you will have a bean that looks like the following example. The step will have to be repeated for each button to be added in a submenu.\nExample \u0026lt;bean id\u0026#34;addHighlightRectangleAnnotationButton\u0026#34; class\u0026#34;com.arondor.viewer.client.widgets.DropdownMenuItem\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addHighlightRectangleAnnotationButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;supportDoubleClick\u0026#34; value\u0026#34;${topPanel.annotationMenu.highlight.repeat}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.highlight}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-highlight-area toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;clickInterval\u0026#34; value\u0026#34;200\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#addRectangleAnnotation\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;doubleClickButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Result with several annotation creation buttons in the submenu :\n/p>p>tutorial/p>p>annotation/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/annotation\/ }, { value: Annotations, path: https:\/\/docs.arender.io\/v4\/feature\/annotations\/, label: p>General Access to the annotations You can access the annotations directly in the top panel:\nAnd the annotation menu appears:\nYou can also access the annotations with a right-click on the document:\nSave annotations You can save your annotations by clicking on the \u0026ldquo;Save annotations\u0026rdquo; button:\nShow\/hide annotations You can show or hide an annotation by clicking on the \u0026ldquo;Show\/Hide annotations\u0026rdquo; button:\nSticky note Create a sticky note To create a sticky note, you click on the following button:/p>p>General Access to the annotations You can access the annotations directly in the top panel:\nAnd the annotation menu appears:\nYou can also access the annotations with a right-click on the document:\nSave annotations You can save your annotations by clicking on the \u0026ldquo;Save annotations\u0026rdquo; button:\nShow\/hide annotations You can show or hide an annotation by clicking on the \u0026ldquo;Show\/Hide annotations\u0026rdquo; button:\nSticky note Create a sticky note To create a sticky note, you click on the following button:\nor you can right-click on the document and choose \u0026ldquo;Add sticky note\u0026rdquo; in the menu:\nThen, you drag and drop your cursor on the document:\nCustomize a sticky note To customize a sticky note, click on it. You are in the edit mode, the toolbar contains buttons for the sticky note modification:\nTo modify your sticky note text, you can write directly in the sticky note. To put your text in bold, italic or underlined, you click on these buttons:\nYou can choose the font and size of your text with these two drop-down lists:\nYou can change the text color and the background color by clicking on these buttons:\nTo move your sticky note, position your cursor on the sticky note header and drag and drop the sticky note:\nWhen your changes are done, exit edit mode by clicking on this button:\nWarning: Internet Explorer 8 forces some conditions on the formatting of rich text in webpages. In order for us to have the same visual resititution in all browser an empty line under Internet Explorer 8 must be done using shift\u002bEnter.\nSee details about a sticky note To see details about a sticky note, you click on it. Your are in the edit mode. In the toolbar, you click on the \u0026ldquo;Details\u0026rdquo; button:\nAnnotation details appear in a pop-in:\nTo exit the pop-in, click anywhere in the document.\nRemove a sticky note To remove a sticky note, click on it to access the edit mode. In the toolbar you click on the \u0026ldquo;Remove annotation\u0026rdquo; button:\nHighlight rectangle Create an highlight rectangle To create an highlight rectangle, click on the following button:\nor you can right-click on the document en choose \u0026ldquo;Add sticky note\u0026rdquo; in the menu:\nthen, you drag and drop your cursor on the area you wish to highlight:\nCustomize an highlight rectangle To customize an highlight rectangle, click on it. You are in the edit mode, the toolbar contains buttons for the rectangle modification:\nWith the toolbar, you can:\n change the rectangle opacity (more information about sliders here) change the background color see the details about the rectangle remove the rectangle stop the rectangle edition You can also move your rectangle: position your cursor on the rectangle and drag and drop it.\nRemove an highlight rectangle To remove an highlight rectangle, click on it to access the edit mode. In the toolbar you click on the \u0026ldquo;Remove annotation\u0026rdquo; button:\nArrow Create an arrow To create an arrow, click on the \u0026ldquo;Add arrow\u0026rdquo; button:\nor you can right-click on the document and choose \u0026ldquo;Add arrow\u0026rdquo; in the menu:\nCustomize an arrow Change arrow background color You can change the arrow background color by clicking on the \u0026ldquo;Background color\u0026rdquo; button:\n Change arrow opacity You can change arrow opacity by clicking on the cursor button:\n Change arrow size You can change the arrow size by clicking on these buttons:\n Change arrow direction The arrow direction can be changed by clicking on one of its ends (A red circle appears at the tip of the arrow and at its base).\nSee details about the arrow To see details about the arrow, click on it. In the toolbar, click on the \u0026ldquo;Details\u0026rdquo; button:\n/p>p>feature/p>p>annotations/p>, url: https:\/\/docs.arender.io\/v4\/feature\/annotations\/ }, { value: Bookmarks, path: https:\/\/docs.arender.io\/features\/bookmarks\/, label: p>You can access the bookmarks by clicking on the bookmark explorer that will open the bookmarks panel. A bookmark has a title and a link to a page in the document.\nAdding a bookmark To create a bookmark, click on the icon to add it. When creating it, you must add the title of the bookmark. The current page number will be used as a link. If you want to add a bookmark to another bookmark, you select the parent bookmark and click the add button./p>p>You can access the bookmarks by clicking on the bookmark explorer that will open the bookmarks panel. A bookmark has a title and a link to a page in the document.\nAdding a bookmark To create a bookmark, click on the icon to add it. When creating it, you must add the title of the bookmark. The current page number will be used as a link. If you want to add a bookmark to another bookmark, you select the parent bookmark and click the add button.\nYou can also select the bookmark, right click and add a bookmark. Remove a bookmark To remove a bookmark, you can select it and click the remove button. You can also select the bookmark, right click and delete the current bookmark. In both cases, a confirmation popup will appear. If the deleted bookmark does not have a child, this popup will appear: If the deleted bookmark has children, this popup will appear: Without selecting, you can delete a bookmark by clicking on the delete button. This popup appears: If you validate, the button will switch to repeat mode, as soon as you click on a bookmark it will be deleted. To disable this mode, click on the delete button again.\nIf you delete a parent bookmark, its children will also be deleted.\nModify a bookmark To rename a bookmark there are two possibilities:\n By double-clicking on it and change the text By right click on the target bookmark and select the “Rename” option in the contextual menu Change the bookmark link To change the page number in the bookmark link, select the bookmark, right-click and change the link. A popup appears, you need to enter your new page number and confirm. Drag and drop It is possible to move a bookmark by dragging and dropping it to its new place.\nDuring the drag drop, a blue line shows you where the bookmark would be added. /p>p>feature/p>p>bookmarks/p>, url: https:\/\/docs.arender.io\/features\/bookmarks\/ }, { value: Categories, path: https:\/\/docs.arender.io\/categories\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/categories\/ }, { value: Composite documents, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/composite-accessors\/, label: p>A composite document is a reference file of documents. It\u0026rsquo;s a Json file that refers to query url that are going to be parsed.\nA servlet exists in ARender in order to create composite (folder) documents over the limits imposed by the URL.\nPrerequisite The following JS call will be functional if the loadbalancer in front of the ARender HMI servers is configured in sticky session\nIt relies on a JSON object that is passed through ARender JS API:/p>p>A composite document is a reference file of documents. It\u0026rsquo;s a Json file that refers to query url that are going to be parsed.\nA servlet exists in ARender in order to create composite (folder) documents over the limits imposed by the URL.\nPrerequisite The following JS call will be functional if the loadbalancer in front of the ARender HMI servers is configured in sticky session\nIt relies on a JSON object that is passed through ARender JS API:\ngetARenderJS().loadDocuments(jsonString, loadingErrorHandlerFunction, customLoadActionFunction); If you provide a custom action function, documents won\u0026rsquo;t be loaded directly into ARender. Instead, you\u0026rsquo;ll get a callback on the function customLoadActionFunction with the documentId generated as parameter. If you do not provide any custom action(by not providing the function), the documents will automatically load into ARender.\nIf you wish to test your JSON file, you can use this CURL command on a non-clustered environnement:\ncurl -X POST http:\/\/\u0026lt;arender_host\u0026gt;\/arendergwt\/compositeAccessorServlet -d @test_openDoc_json.json --header \u0026#34;Content-Type: application\/json\u0026#34; This will return you the ARender ID of the processed document. Here is the content of the Json provided for this example:\n{ \u0026#34;title\u0026#34;: \u0026#34;test_Container\u0026#34;, \u0026#34;references\u0026#34;: { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/cdsinternationalprivacypolicy.pdf\u0026#34; }, { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/programme_de_stabilite_2012-2016.pdf\u0026#34; }, { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/Pearson_-_Coder_Proprement_-_2009.pdf\u0026#34; }, { \u0026#34;title\u0026#34;: \u0026#34;container_two\u0026#34;, \u0026#34;references\u0026#34;: { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/cdsinternationalprivacypolicy.pdf\u0026#34; }, { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/programme_de_stabilite_2012-2016.pdf\u0026#34; }, { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/Pearson_-_Coder_Proprement_-_2009.pdf\u0026#34; } } } You can define a structured JSON Folder structure using this format:\n title (optional): give the current level folder a title. For a document, the document title from the original document might override it. queryUrl (optional): this will define the current level to be a document. It describes a valid loadingQuery. Syntax is loadingQuery?\u0026lt;normal URL parameters\u0026gt; references (optional): this will define the current level to be a folder. It is an array of the same structured objects (title, queryUrl or references). Please take note that references and queryUrl are mutually exclusive and queryUrl will be the one chosen over references. (document over folder).\nThe composite document can also be retrieved:\ncurl -X GET http:\/\/\u0026lt;arender_host\u0026gt;\/arendergwt\/compositeAccessorServlet?titlemyTitle title : document composite title It returns a new document id. It can be used for future request.\n/p>p>tutorial/p>p>composite/p>p>document/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/composite-accessors\/ }, { value: Composite documents, path: https:\/\/docs.arender.io\/learn\/how-to\/composite-accessors\/, label: p>Starting from 3.1.10 a new servlet exists in ARender in order to create composite (folder) documents over the limits imposed by the URL.\nIn the web.xml file of ARender, the default expiration time of the temporary containers can be set. By default, it is of one hour.\nThe following JS call will be functional if the loadbalancer in front of the ARender Web-UI servers is configured in sticky session\nIt relies on a JSON object that is passed through ARender JS API:/p>p>Starting from 3.1.10 a new servlet exists in ARender in order to create composite (folder) documents over the limits imposed by the URL.\nIn the web.xml file of ARender, the default expiration time of the temporary containers can be set. By default, it is of one hour.\nThe following JS call will be functional if the loadbalancer in front of the ARender Web-UI servers is configured in sticky session\nIt relies on a JSON object that is passed through ARender JS API:\ngetARenderJS().loadDocuments(jsonString, loadingErrorHandlerFunction, customLoadActionFunction); If you provide a custom action function, documents won\u0026rsquo;t be loaded directly into ARender. Instead, you\u0026rsquo;ll get a callback on the function customLoadActionFunction with the documentId generated as parameter. If you do not provide any custom action(by not providing the function), the documents will automatically load into ARender.\nIf you wish to test your JSON file, you can use this CURL command on a non-clusterized environnement:\ncurl -X POST http:\/\/\u0026lt;arender_host\u0026gt;\/arendergwt\/compositeAccessorServlet -d @test_openDoc_json.json --header \u0026#34;Content-Type: application\/json\u0026#34; This will return you the ARender ID of the processed document. Here is the content of the Json provided for this example:\n{ \u0026#34;title\u0026#34;: \u0026#34;test_Container\u0026#34;, \u0026#34;references\u0026#34;: { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/cdsinternationalprivacypolicy.pdf\u0026#34; }, { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/programme_de_stabilite_2012-2016.pdf\u0026#34; }, { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/Pearson_-_Coder_Proprement_-_2009.pdf\u0026#34; }, { \u0026#34;title\u0026#34;: \u0026#34;container_two\u0026#34;, \u0026#34;references\u0026#34;: { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/cdsinternationalprivacypolicy.pdf\u0026#34; }, { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/programme_de_stabilite_2012-2016.pdf\u0026#34; }, { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/Pearson_-_Coder_Proprement_-_2009.pdf\u0026#34; } } } You can define a structured JSON Folder structure using this format:\n title (optional): give the current level folder a title. For a document, the document title from the original document might override it. queryUrl (optional): this will define the current level to be a document. It describes a valid loadingQuery. Syntax is loadingQuery?\u0026lt;normal URL parameters\u0026gt; references (optional): this will define the current level to be a folder. It is an array of the same structured objects (title, queryUrl or references). Please take note that references and queryUrl are mutually exclusive and queryUrl will be the one chosen over references. (document over folder).\n/p>p>tutorial/p>p>composite/p>p>document/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/composite-accessors\/ }, { value: Composite documents, path: https:\/\/docs.arender.io\/v4\/cookbook\/composite-accessors\/, label: p>Starting from 3.1.10 a new servlet exists in ARender in order to create composite (folder) documents over the limits imposed by the URL.\nIn the web.xml file of ARender, the default expiration time of the temporary containers can be set. By default, it is of one hour.\nThe following JS call will be functional if the loadbalancer in front of the ARender Web-UI servers is configured in sticky session\nIt relies on a JSON object that is passed through ARender JS API:/p>p>Starting from 3.1.10 a new servlet exists in ARender in order to create composite (folder) documents over the limits imposed by the URL.\nIn the web.xml file of ARender, the default expiration time of the temporary containers can be set. By default, it is of one hour.\nThe following JS call will be functional if the loadbalancer in front of the ARender Web-UI servers is configured in sticky session\nIt relies on a JSON object that is passed through ARender JS API:\ngetARenderJS().loadDocuments(jsonString, loadingErrorHandlerFunction, customLoadActionFunction); If you provide a custom action function, documents won\u0026rsquo;t be loaded directly into ARender. Instead, you\u0026rsquo;ll get a callback on the function customLoadActionFunction with the documentId generated as parameter. If you do not provide any custom action(by not providing the function), the documents will automatically load into ARender.\nIf you wish to test your JSON file, you can use this CURL command on a non-clusterized environnement:\ncurl -X POST http:\/\/\u0026lt;arender_host\u0026gt;\/arendergwt\/compositeAccessorServlet -d @test_openDoc_json.json --header \u0026#34;Content-Type: application\/json\u0026#34; This will return you the ARender ID of the processed document. Here is the content of the Json provided for this example:\n{ \u0026#34;title\u0026#34;: \u0026#34;test_Container\u0026#34;, \u0026#34;references\u0026#34;: { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/cdsinternationalprivacypolicy.pdf\u0026#34; }, { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/programme_de_stabilite_2012-2016.pdf\u0026#34; }, { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/Pearson_-_Coder_Proprement_-_2009.pdf\u0026#34; }, { \u0026#34;title\u0026#34;: \u0026#34;container_two\u0026#34;, \u0026#34;references\u0026#34;: { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/cdsinternationalprivacypolicy.pdf\u0026#34; }, { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/programme_de_stabilite_2012-2016.pdf\u0026#34; }, { \u0026#34;queryUrl\u0026#34;: \u0026#34;loadingQuery?urlhttp:\\\/\\\/arender.arondor.com\\\/pdf\\\/pdf\\\/Pearson_-_Coder_Proprement_-_2009.pdf\u0026#34; } } } You can define a structured JSON Folder structure using this format:\n title (optional): give the current level folder a title. For a document, the document title from the original document might override it. queryUrl (optional): this will define the current level to be a document. It describes a valid loadingQuery. Syntax is loadingQuery?\u0026lt;normal URL parameters\u0026gt; references (optional): this will define the current level to be a folder. It is an array of the same structured objects (title, queryUrl or references). Please take note that references and queryUrl are mutually exclusive and queryUrl will be the one chosen over references. (document over folder).\n/p>p>tutorial/p>p>composite/p>p>document/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/composite-accessors\/ }, { value: Configurations, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/configurations\/, label: p>Retrieve the value of a UI property in JS Since version 2023.4.0, it is possible to retrieve the value of some properties from ARender\u0026rsquo;s JS APIs. To be precise, these are the UI configuration properties which can be found in configurations\/arender-custom-client.properties.\nJS API Object: getARenderJS()\n Function Arguments (type) Description getConfiguration property (String) Allows you to retrieve the value of a property Recoverable properties Here is the list of properties recoverable in version 2023./p>p>Retrieve the value of a UI property in JS Since version 2023.4.0, it is possible to retrieve the value of some properties from ARender\u0026rsquo;s JS APIs. To be precise, these are the UI configuration properties which can be found in configurations\/arender-custom-client.properties.\nJS API Object: getARenderJS()\n Function Arguments (type) Description getConfiguration property (String) Allows you to retrieve the value of a property Recoverable properties Here is the list of properties recoverable in version 2023.4.0:\n Property Default value (in configurations\/arender-custom-client.properties) documentnavigator.width 320 documentnavigator.initialWidth Default thumbexplorer.contextualMenu.createPageAnchor true thumbexplorer.columns 2 Example scripts\/exemple.js Recovery of the property value thumbexplorer.contextualMenu.createPageAnchor\ngetARenderJS().getConfiguration(\u0026#34;thumbexplorer.contextualMenu.createPageAnchor\u0026#34;) /p>p>configurations/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/configurations\/ }, { value: Configure emails, path: https:\/\/docs.arender.io\/learn\/how-to\/email-configuration\/, label: p>Date formatting It is possible to configure a date format for emails. The following configuration will format the date 2022-01-24T04:54:42-05 which will give the result Mon 24 Jan 2022 04:54:42 -0500\nmodules\/RenditionEngine\/application.properties emltopdf.config.format.dateEEE d MMM yyyy HH:mm:ss ZZ Date dependent on time zone The date is configurable according to the user\u0026rsquo;s time zone. By default, the date is formatted according to the UTC time zone.\nconfigurations\/arender-custom-server.properties default./p>p>Date formatting It is possible to configure a date format for emails. The following configuration will format the date 2022-01-24T04:54:42-05 which will give the result Mon 24 Jan 2022 04:54:42 -0500\nmodules\/RenditionEngine\/application.properties emltopdf.config.format.dateEEE d MMM yyyy HH:mm:ss ZZ Date dependent on time zone The date is configurable according to the user\u0026rsquo;s time zone. By default, the date is formatted according to the UTC time zone.\nconfigurations\/arender-custom-server.properties default.url.parser.use.timeZone.for.idstrue Subject and attachments with non-Latin characters Non-Latin characters in subject and attachment names may not be displayed correctly. To enable proper rendering, you must configure the document-converter rendering module as follows :\nmodules\/RenditionEngine\/application.properties emltopdf.encode.header.with.body.encodingtrue emltopdf.config.filter.special.characters.regex emltopdf.config.filter.replacement.character In some cases, the subject and attachments may still have display issues. It will therefore be necessary to apply the following configuration on the Web-UI-server side. This makes it possible to provide the locale of the user which will be used to determine the correct encoding to apply.\nconfigurations\/arender-custom-server.properties default.url.parser.use.locale.for.idstrue Header rendering language It is possible configure the header rendering language for emails. By default, the header is rendered in French. The possible values are : \u0026ldquo;FR\u0026rdquo;, \u0026ldquo;EN\u0026rdquo;.\nmodules\/RenditionEngine\/application.properties # Configure the header rendering language. Possible values are : \u0026#34;FR\u0026#34;, \u0026#34;EN\u0026#34;. emltopdf.config.header.languageFR /p>p>tutorial/p>p>mail/p>p>configuration/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/email-configuration\/ }, { value: Configure emails, path: https:\/\/docs.arender.io\/v4\/cookbook\/email-configuration\/, label: p>Date formatting Since version 4.8.0, it is possible to configure a date format for emails. The following configuration will format the date 2022-01-24T04:54:42-05 which will give the result Mon 24 Jan 2022 04:54:42 -0500\nmodule\/document-converter\/application.properties emltopdf.config.format.dateEEE d MMM yyyy HH:mm:ss ZZ Date dependent on time zone Since version 4.8.0, the date is configurable according to the user\u0026rsquo;s time zone. By default, the date is formatted according to the UTC time zone./p>p>Date formatting Since version 4.8.0, it is possible to configure a date format for emails. The following configuration will format the date 2022-01-24T04:54:42-05 which will give the result Mon 24 Jan 2022 04:54:42 -0500\nmodule\/document-converter\/application.properties emltopdf.config.format.dateEEE d MMM yyyy HH:mm:ss ZZ Date dependent on time zone Since version 4.8.0, the date is configurable according to the user\u0026rsquo;s time zone. By default, the date is formatted according to the UTC time zone.\narender-server.properties default.url.parser.use.timeZone.for.idstrue Subject and attachments with non-Latin characters Since version 4.8.0, non-Latin characters in subject and attachment names may not be displayed correctly. To enable proper rendering, you must configure the document-converter rendering module as follows :\nmodule\/document-converter\/application.properties emltopdf.encode.header.with.body.encodingtrue emltopdf.config.filter.special.characters.regex emltopdf.config.filter.replacement.character In some cases, the subject and attachments may still have display issues. It will therefore be necessary to apply the following configuration on the Web-UI-server side. This makes it possible to provide the locale of the user which will be used to determine the correct encoding to apply.\narender-server.properties default.url.parser.use.locale.for.idstrue /p>p>tutorial/p>p>mail/p>p>configuration/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/email-configuration\/ }, { value: Content Manager, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/content-manager\/, label: p>Below a detail on how to deploy ARender for Content Manager.\nIn our example, we are deploying the presentation server in an environment with:\n Operating System: Windows Server 2012 R2 Standard Content Manager 8.6 Websphere 9.0.5.0 Application Server (you can also use Apache Tomcat 8\u002b) ARender HMI version 4.8.21 Retrieve the ARender HMI archive Using the username and password beforehand provided, you can retrieve the web application in EAR format here./p>p>Below a detail on how to deploy ARender for Content Manager.\nIn our example, we are deploying the presentation server in an environment with:\n Operating System: Windows Server 2012 R2 Standard Content Manager 8.6 Websphere 9.0.5.0 Application Server (you can also use Apache Tomcat 8\u002b) ARender HMI version 4.8.21 Retrieve the ARender HMI archive Using the username and password beforehand provided, you can retrieve the web application in EAR format here.\nWebSphere requirements Warning The version of websphere used here must have java 8 installed and activated. If you like, please follow the instructions here. Deployment in WebSphere Open a WebSphere console at https:\/\/serveur_websphere:9043\/ibm\/console\n Go in the \u0026ldquo;Applications\u0026rdquo; tab, then click on \u0026ldquo;WebSphere enterprise applications\u0026rdquo;\n To launch installation, click on \u0026ldquo;Install\u0026rdquo;\n Choose the EAR path to deploy and click on \u0026ldquo;Next\u0026rdquo; To accept default parameters, click on \u0026ldquo;Next\u0026rdquo; Select webserver(s) and\/or server(s) of the Workplace, then click on \u0026ldquo;Next\u0026rdquo; To accept the parameters by default (virtual host: default_host), click on \u0026ldquo;Next\u0026rdquo; In recap window, click on « Finish » to begin the installation with these parameters after checking them Post setup Libraries loading order Since 4.8.9 Before 4.8.9 Nothing to configure. Websphere must be configured in parent-last which means it has to load its libraries after ARender.\n In the application list click on ARender 4.8.X for Content Manager\n Click on Manage Modules\n Click on the WAR: arondor-arender-hmi-cm-4.8.X.war Select the parent-last configuration in the Class loader order drop-down list Click on \u0026ldquo;OK\u0026rdquo; and save the modifications\n Start ARender application\n ARender deployment for Content Manager is complete You can now access a file via a URL formed like below:\nhttp:\/\/localhost:9080\/ARender\/?docid86%203%20ICM8%20ICMNLSDB7%20NOINDEX59%2026%20A1001001A16B08B91035E0007718%20A16B08B91035E000771%2014%201000 /p>p>standalone/p>p>hmi/p>p>configuration/p>p>content manager/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/content-manager\/ }, { value: Contextual menu, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/contextual-menu\/, label: p>General All contextual menu item can be disabled.\n Description Parameter Key Default value Type Enable contextual menu contextualMenu.enabled true Boolean Enable icons in contextual contextualMenu.icons.enabled true Boolean Print popup contextualMenu.hasPrint false Boolean Print all pages contextualMenu.hasPrintAll false Boolean Create sticky note annotation contextualMenu.hasStickyNote true Boolean Create a cropbox image contextualMenu.hasCropBoxImage false Boolean Create highlight text annotation contextualMenu./p>p>General All contextual menu item can be disabled.\n Description Parameter Key Default value Type Enable contextual menu contextualMenu.enabled true Boolean Enable icons in contextual contextualMenu.icons.enabled true Boolean Print popup contextualMenu.hasPrint false Boolean Print all pages contextualMenu.hasPrintAll false Boolean Create sticky note annotation contextualMenu.hasStickyNote true Boolean Create a cropbox image contextualMenu.hasCropBoxImage false Boolean Create highlight text annotation contextualMenu.hasHighlightText true Boolean Create strikeout text annotation contextualMenu.hasStrikeoutText true Boolean Create underline text annotation contextualMenu.hasUnderlineText true Boolean Create rectangle annotation contextualMenu.hasHighlight true Boolean Create circle annotation contextualMenu.hasCircle true Boolean Create arrow annotation contextualMenu.hasArrow true Boolean Create polygon annotation contextualMenu.hasPolygon false Boolean Create polyline annotation contextualMenu.hasPolyline false Boolean Create freehand annotation contextualMenu.hasFreehand false Boolean Rotate current page to the left\/right contextualMenu.hasPageRotation false Boolean Allow to close multiview contextualMenu.hasMultiView false Boolean Allow to show guide ruler action contextualMenu.hasShowGuideRuler false Boolean Allow to hide guide ruler action contextualMenu.hasHideGuideRuler false Boolean Create anchor annotation contextualMenu.hasAnchor true Boolean Create stamp annotation contextualMenu.hasStamp false Boolean Create freetext annotation contextualMenu.hasFreetext false Boolean /p>p>configuration/p>p>contextual menu/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/contextual-menu\/ }, { value: Contextual menu, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/contextual-menu\/, label: p>General All contextual menu item can be disabled.\n Key: contextualMenu Description Parameter Key Type Enable contextual menu enabled Boolean Enable icons in contextual menuicons.enabled Boolean Print popup hasPrint Boolean Print all pages hasPrintAll Boolean Create sticky note annotation hasStickyNote Boolean Create highlight text annotation hasHighlightText Boolean Create strikeout text annotation hasStrikeoutText Boolean Create underline text annotation hasUnderlineText Boolean Create rectangle annotation hasHighlight Boolean Create circle annotation hasCircle Boolean Create arrow annotation hasArrow Boolean Create polygon annotation hasPolygon Boolean Create polyline annotation hasPolyline Boolean Create freehand annotation hasFreehand Boolean Rotate current page to the left\/right hasPageRotation Boolean Allow to close multiview hasMultiView Boolean Allow to show guide ruler action hasShowGuideRuler Boolean Allow to hide guide ruler action hasHideGuideRuler Boolean arender./p>p>General All contextual menu item can be disabled.\n Key: contextualMenu Description Parameter Key Type Enable contextual menu enabled Boolean Enable icons in contextual menuicons.enabled Boolean Print popup hasPrint Boolean Print all pages hasPrintAll Boolean Create sticky note annotation hasStickyNote Boolean Create highlight text annotation hasHighlightText Boolean Create strikeout text annotation hasStrikeoutText Boolean Create underline text annotation hasUnderlineText Boolean Create rectangle annotation hasHighlight Boolean Create circle annotation hasCircle Boolean Create arrow annotation hasArrow Boolean Create polygon annotation hasPolygon Boolean Create polyline annotation hasPolyline Boolean Create freehand annotation hasFreehand Boolean Rotate current page to the left\/right hasPageRotation Boolean Allow to close multiview hasMultiView Boolean Allow to show guide ruler action hasShowGuideRuler Boolean Allow to hide guide ruler action hasHideGuideRuler Boolean arender.properties # Disallow print from contextual menu contextualMenu.hasPrintfalse contextualMenu.hasPrintAllfalse # Disable the contextual menu contextualMenu.enabledfalse /p>p>configuration/p>p>contextual menu/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/contextual-menu\/ }, { value: Create a conversion module, path: https:\/\/docs.arender.io\/v4\/cookbook\/create-conversion-specific-module\/, label: p>In this tutorial we will focus on the possibility of creating a document conversion service dedicated to a single type of documents.\nInstall the dedicated conversion server Extract the content of the classic rendition packaging on the server that you want to dedicate to a conversion type.\nIn our example, we will dedicate a server to the Office file conversion.\nGo to the modules\/TaskConversion\/ conversion module folder and drop in the following configuration file (application./p>p>In this tutorial we will focus on the possibility of creating a document conversion service dedicated to a single type of documents.\nInstall the dedicated conversion server Extract the content of the classic rendition packaging on the server that you want to dedicate to a conversion type.\nIn our example, we will dedicate a server to the Office file conversion.\nGo to the modules\/TaskConversion\/ conversion module folder and drop in the following configuration file (application.yml):\napp:eureka:hostname:\u0026lt;rendition_host_name\u0026gt;eureka:instance:metadataMap:instanceId:${eureka.instance.instanceId}name:${spring.application.name}context:\u0026#39;{\u0026#34;context\u0026#34;:\u0026#34;\/document\/convert\/\u0026#34;,\u0026#34;validMimeTypes\u0026#34;: }, {\u0026#34;context\u0026#34;:\u0026#34;\/document\/signature\/validate\/\u0026#34;,\u0026#34;validMimeTypes\u0026#34;: }, {\u0026#34;context\u0026#34;:\u0026#34;\/document\/alter\/\u0026#34;,\u0026#34;validMimeTypes\u0026#34;: }, {\u0026#34;context\u0026#34;:\u0026#34;\/document\/image\/\u0026#34;,\u0026#34;validMimeTypes\u0026#34;: \u0026#34;video\/mp4\u0026#34;}\u0026#39;convertMimeType:\u0026#39;text\/rtf, application\/msword,application\/vnd.openxmlformats-officedocument.wordprocessingml.document, application\/vnd.ms-word.document.macroEnabled.12,application\/vnd.openxmlformats-officedocument.wordprocessingml.template, application\/vnd.ms-word.template.macroEnabled.12,application\/vnd.ms-excel,application\/x-ms-excel, application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application\/vnd.ms-excel.sheet.macroEnabled.12, application\/vnd.openxmlformats-officedocument.spreadsheetml.template,application\/vnd.ms-excel.template.macroEnabled.12, application\/vnd.ms-powerpoint,application\/vnd.openxmlformats-officedocument.presentationml.presentation, application\/vnd.ms-powerpoint.presentation.macroEnabled.12,application\/vnd.openxmlformats-officedocument.presentationml.template, application\/vnd.ms-powerpoint.template.macroEnabled.12,application\/visio,application\/x-visio, application\/vnd.visio,application\/vnd.ms-visio,application\/visio.drawing, application\/vsd,application\/x-vsd,image\/x-vsd,zz-application\/zz-winassoc-vsd, application\/vnd.oasis.opendocument.text,application\/vnd.oasis.opendocument.spreadsheet,application\/vnd.ms-project, application\/vnd.oasis.opendocument.presentation,application\/vnd.oasis.opendocument.graphics\u0026#39;server:port:10001nurse:outPath:${tmp.dir.doc}timeInterval:${health.time.interval}samplesDirectory:..\/..\/samples\/components:- functionality:TKC_TextConversionfactoryName:\u0026#34;textFactory\u0026#34;samplePath:\u0026#34;test.docx\u0026#34;docIdStr:\u0026#34;0ff1c3S4mpl3\u0026#34;First, we need to target the rendition server that will be reached by this isolated conversion micro service (replace \u0026lt;rendition_host_name\u0026gt; by your rendition server IP\/hostname):\napp:eureka:hostname:\u0026lt;rendition_host_name\u0026gt;Here we replicate the default configuration of the micro conversion service, but we change the supported mime types to reduce to Office.\nconvertMimeType:\u0026#39;text\/rtf, application\/msword,application\/vnd.openxmlformats-officedocument.wordprocessingml.document, application\/vnd.ms-word.document.macroEnabled.12,application\/vnd.openxmlformats-officedocument.wordprocessingml.template, application\/vnd.ms-word.template.macroEnabled.12,application\/vnd.ms-excel,application\/x-ms-excel, application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application\/vnd.ms-excel.sheet.macroEnabled.12, application\/vnd.openxmlformats-officedocument.spreadsheetml.template,application\/vnd.ms-excel.template.macroEnabled.12, application\/vnd.ms-powerpoint,application\/vnd.openxmlformats-officedocument.presentationml.presentation, application\/vnd.ms-powerpoint.presentation.macroEnabled.12,application\/vnd.openxmlformats-officedocument.presentationml.template, application\/vnd.ms-powerpoint.template.macroEnabled.12,application\/visio,application\/x-visio, application\/vnd.visio,application\/vnd.ms-visio,application\/visio.drawing, application\/vsd,application\/x-vsd,image\/x-vsd,zz-application\/zz-winassoc-vsd, application\/vnd.oasis.opendocument.text,application\/vnd.oasis.opendocument.spreadsheet,application\/vnd.ms-project, application\/vnd.oasis.opendocument.presentation,application\/vnd.oasis.opendocument.graphics\u0026#39;Then we change the default port, so as not to conflict with the standard micro service.\nserver:port:10001As we remove features, we also reduce its spectrum of automatic checks on Office documents.\nnurse:outPath:${tmp.dir.doc}timeInterval:${health.time.interval}samplesDirectory:..\/..\/samples\/components:- functionality:TKC_TextConversionfactoryName:\u0026#34;textFactory\u0026#34;samplePath:\u0026#34;test.docx\u0026#34;docIdStr:\u0026#34;0ff1c3S4mpl3\u0026#34;Once all this configuration done, it is possible to launch this micro service unitarily with the command:\nC:\\Rendition4Office\\modules\\TaskConversion\u0026gt; java -Xmx1024m -jar task-conversion*.jar It is important to go to the modules\/TaskConversion\/ module folder to simulate a classic rendition launch.\nClassic rendition server side We want, in our traditional ARender installation, to remove from the TaskConversion micro service the Office documents that will now be served by our dedicated server.\nTo do this, you must once again add a configuration file (application.yml) next to the TaskConversion micro service jar:\neureka:instance:metadataMap:instanceId:${eureka.instance.instanceId}name:${spring.application.name}context:\u0026#39;{\u0026#34;context\u0026#34;:\u0026#34;\/document\/convert\/\u0026#34;,\u0026#34;validMimeTypes\u0026#34;: }, {\u0026#34;context\u0026#34;:\u0026#34;\/document\/signature\/validate\/\u0026#34;,\u0026#34;validMimeTypes\u0026#34;: }, {\u0026#34;context\u0026#34;:\u0026#34;\/document\/alter\/\u0026#34;,\u0026#34;validMimeTypes\u0026#34;: }, {\u0026#34;context\u0026#34;:\u0026#34;\/document\/image\/\u0026#34;,\u0026#34;validMimeTypes\u0026#34;: \u0026#34;video\/mp4\u0026#34;}\u0026#39;convertMimeType:\u0026#39;message\/rfc822,application\/vnd.ms-outlook,text\/html,application\/zip,application\/x-zip, application\/x-zip-compressed,application\/x-rar-compressed,application\/x-rar,application\/java-archive, text\/plain,image\/png,image\/jpeg,image\/gif,image\/x-ms-bmp,image\/x-bmp,image\/x-portable-bitmap, image\/vnd.adobe.photoshop,image\/x-eps,application\/postscript,application\/dicom,application\/pcx, application\/x-pcx,image\/pcx,image\/x-pc-paintbrush,image\/x-pcx,zz-application\/zz-winassoc-pcx, image\/tiff,video\/quicktime,video\/mp4,video\/3gpp,audio\/x-wav,audio\/mp3,video\/x-flv,video\/mpeg, video\/x-msvideo,video\/x-matroska,video\/x-ms-asf,application\/x-empty\u0026#39;server:port:9999nurse:outPath:${tmp.dir.doc}timeInterval:${health.time.interval}samplesDirectory:..\/..\/samples\/components:- functionality:TKC_MailConversionfactoryName:\u0026#34;mailFactory\u0026#34;samplePath:\u0026#34;test.msg\u0026#34;docIdStr:\u0026#34;m41lS4mpl3\u0026#34;- functionality:TKC_VideoConversionfactoryName:\u0026#34;videoConversionFactory\u0026#34;samplePath:\u0026#34;video.mp4\u0026#34;docIdStr:\u0026#34;v1d30S4mpl3\u0026#34;- functionality:TKC_ImageConversionfactoryName:\u0026#34;imageFactory\u0026#34;samplePath:\u0026#34;img.png\u0026#34;docIdStr:\u0026#34;1m4g3S4mpl3\u0026#34;Here, the treatment is the reverse of what we did for the dedicated service.\nThe port is the default port, but the supported mime types are the base ones except Office, and so are the auto-test components.\nOnce the classic rendition server has been started, this micro service will be started and will take this configuration without the Office mime types.\nConclusion Now it\u0026rsquo;s your turn to choose which file types you want to isolate, or use a dedicated high performance machine to convert video for example.\nThere are many ideas and even more possibilities !\n/p>p>tutorial/p>p>conversion/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/create-conversion-specific-module\/ }, { value: Create a custom document accessor, path: https:\/\/docs.arender.io\/learn\/how-to\/custom-accessors\/, label: p>Depending the kind of service you want to use, we might already have something in-house so don\u0026rsquo;t hesitate to come back to us with the decided service that will be used to fetch documents.\nIf you prefer to directly go and implement your custom integration for fetching documents, there will be two things to do:\nAn URL parser, that will load the parameters you need from the URL and create the second component needed, what we call a document accessor./p>p>Depending the kind of service you want to use, we might already have something in-house so don\u0026rsquo;t hesitate to come back to us with the decided service that will be used to fetch documents.\nIf you prefer to directly go and implement your custom integration for fetching documents, there will be two things to do:\nAn URL parser, that will load the parameters you need from the URL and create the second component needed, what we call a document accessor.\nhttp:\/\/arender.fr\/rendition-api\/com\/arondor\/viewer\/rendition\/api\/DocumentServiceURLParser.html\nThe method canParse has to return true if the parameters in the URL of ARender are sufficient to parse the document.\nThe method parse will parse the parameters contained in the URL and push the documentAccessor to the rendition server. Example:\nList\u0026lt;DocumentIdParameter\u0026gt; parameters new ArrayList\u0026lt;DocumentIdParameter\u0026gt;(); parameters.add(new URLDocumentIdParameter(URL_REQUEST_PARAMETER, url)); DocumentId documentId DocumentIdFactory.getInstance().generate(parameters); DocumentAccessor documentAccessor new DocumentAccessorURL(url, documentId); documentService.loadDocumentAccessor(documentAccessor); return documentAccessor.getUUID(); Here, instead of DocumentAcessorURL, you\u0026rsquo;ll put your own custom DocumentAccessor.\nhttp:\/\/arender.fr\/rendition-api\/com\/arondor\/viewer\/rendition\/api\/document\/DocumentAccessor.html\nThe methods detailed in the documentation are very straightforward and should not cause you any implementation issues.\nOnce you have developed your couple Parser\/Accessor you\u0026rsquo;ll can add the parser in the file arender-custom-server.properties contained in the configurations\/ folder of ARender Web-UI.\n In the file *configurations\/arender-custom-server-integration.xml *, define the bean: configurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;customUrlParser\u0026#34; class\u0026#34;com.arondor.viewer.CustomURLParser\u0026#34; \/\u0026gt; In the file configurations\/arender-custom-server.properties, add your bean Id to the list: configurations\/arender-custom-server.properties arender.server.url.parsers.beanNamescustomUrlParser,DefaultURLParser,DocumentIdURLParser,FileattachmentURLParser,ExternalBeanURLParser,AlterContentParser,FallbackURLParser In the case of creating a custom Accessor\/URLParser we recommend you strongly to make a Maven project and use properties edition in order to overlay and modify default ARender war properly each version.\n/p>p>tutorial/p>p>accessor/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/custom-accessors\/ }, { value: Create a custom document accessor, path: https:\/\/docs.arender.io\/v4\/cookbook\/custom-accessors\/, label: p>Depending the kind of service you want to use, we might already have something in-house so don\u0026rsquo;t hesitate to come back to us with the decided service that will be used to fetch documents.\nIf you prefer to directly go and implement your custom integration for fetching documents, there will be two things to do:\nAn URL parser, that will load the parameters you need from the URL and create the second component needed, what we call a document accessor./p>p>Depending the kind of service you want to use, we might already have something in-house so don\u0026rsquo;t hesitate to come back to us with the decided service that will be used to fetch documents.\nIf you prefer to directly go and implement your custom integration for fetching documents, there will be two things to do:\nAn URL parser, that will load the parameters you need from the URL and create the second component needed, what we call a document accessor.\nhttp:\/\/arender.fr\/rendition-api\/com\/arondor\/viewer\/rendition\/api\/DocumentServiceURLParser.html\nThe method canParse has to return true if the parameters in the URL of ARender are sufficient to parse the document.\nThe method parse will parse the parameters contained in the URL and push the documentAccessor to the rendition server. Example:\nList\u0026lt;DocumentIdParameter\u0026gt; parameters new ArrayList\u0026lt;DocumentIdParameter\u0026gt;(); parameters.add(new URLDocumentIdParameter(URL_REQUEST_PARAMETER, url)); DocumentId documentId DocumentIdFactory.getInstance().generate(parameters); DocumentAccessor documentAccessor new DocumentAccessorURL(url, documentId); documentService.loadDocumentAccessor(documentAccessor); return documentAccessor.getUUID(); Here, instead of DocumentAcessorURL, you\u0026rsquo;ll put your own custom DocumentAccessor.\nhttp:\/\/arender.fr\/rendition-api\/com\/arondor\/viewer\/rendition\/api\/document\/DocumentAccessor.html\nThe methods detailed in the documentation are very straightforward and should not cause you any implementation issues.\nOnce you developed your couple Parser\/Accessor you\u0026rsquo;ll be able to add the parser in the file arender-server-custom-\u0026lt;\u0026hellip;\u0026gt;.properties contained in WEB-INF\/classes\nAdd following lines in the WEB-INF\\classes\\ folder files:\n In file arender-custom-server-integration.xml, define the bean: arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;customUrlParser\u0026#34; class\u0026#34;com.arondor.viewer.CustomURLParser\u0026#34; \/\u0026gt; In file arender-server-custom-\u0026lt;\u0026hellip;\u0026gt;.properties, add your bean Id to the list: arender-server-custom-\u0026lt;...\\\u0026gt;.properties arender.server.url.parsers.beanNamescustomUrlParser,DefaultURLParser,DocumentIdURLParser,FileattachmentURLParser,ExternalBeanURLParser,AlterContentParser,FallbackURLParser In the case of creating a custom Accessor\/URLParser we recommend you strongly to make a Maven project and use properties edition in order to overlay and modify default ARender war properly each version.\n/p>p>tutorial/p>p>accessor/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/custom-accessors\/ }, { value: Create custom localized labels, path: https:\/\/docs.arender.io\/learn\/how-to\/custom-labels\/, label: p>This guide will help you create custom localized labels.\nDefault custom localized resources path ARender internationalization approach uses .properties files where localizable information are stored in.\nARender allows you to customize localized labels from external custom resource files.\nBy default, ARender uses the following order to fetch custom localized resource files:\n Configuration properties \u0026lt;HOME_DIR\u0026gt;\/ARenderCustomLabels\/ arondor-arender-hmi-spring-boot-2023.16.0.jar\\BOOT-INF\\classes\\labels\\ To go further Define the folder path containing the custom labels To define the folder path where the custom labels are stored, you must edit the following property :/p>p>This guide will help you create custom localized labels.\nDefault custom localized resources path ARender internationalization approach uses .properties files where localizable information are stored in.\nARender allows you to customize localized labels from external custom resource files.\nBy default, ARender uses the following order to fetch custom localized resource files:\n Configuration properties \u0026lt;HOME_DIR\u0026gt;\/ARenderCustomLabels\/ arondor-arender-hmi-spring-boot-2023.16.0.jar\\BOOT-INF\\classes\\labels\\ To go further Define the folder path containing the custom labels To define the folder path where the custom labels are stored, you must edit the following property :\nconfigurations\/arender-custom-server.properties # ARender label configuration # Define the folder path where the custom labels are stored # Otherwise leave empty so that ARender can look in the \u0026lt;HOME_DIR\u0026gt;\/ARenderCustomLabels\/ or in the labels\/ folder # NB: Make sure the path ends with a file separator, the slash \/ arender.server.external.custom.labels.path Create your own custom localized labels Typical resource files are named as CustomLabels_{lang}.properties, which lang corresponds to locale code :\n ar (Arabic) de (German) en (English) es (Spanish) fr (French) he (Hebrew) it (Italian) ja (Japanese) pl (Polish) pt (Portuguese) pt-BR (Brazilian Portuguese) ru (Russian) zh-CN (Simplified Chinese) zh-TW (Traditional Chinese) For each language or the one needed, store localizable information in the form of case-sensitive key-value pairs.\nTo provide a concrete example, suppose you need a custom label for a custom button in 3 different languages: english, spanish and french :\nThese .properties files are to be placed whether in \u0026lt;HOME_DIR\u0026gt;\/ARenderCustomLabels\/ or in *arondor-arender-hmi-spring-boot-2023.16.0.jar\\BOOT-INF\\classes\\labels*.\nCustomLabels_en.properties helloHello World CustomLabels_es.properties helloHola Mundo CustomLabels_fr.properties helloBonjour le monde To use this custom label, you will need to reference it with the tag customLabels#{label-key}.\nSince version 2023.0.0:\nconfigurations\/arender-custom-server-integration.xml \u0026lt;!-- Sample implementation of a Custom button --\u0026gt; \u0026lt;bean id\u0026#34;customButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;customButton\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-arender\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;value\u0026gt;Custom Button\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.jsapi.toppanel.JSCallButtonHandler\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;jsCode\u0026#34;\u0026gt; \u0026lt;value\u0026gt; try { alert(\u0026#39;Hello world !\u0026#39;); $wnd.getARenderJS().getGenericNotificationJSAPI().askNotification(\u0026#34;hello\u0026#34;); alert(\u0026#34;Finished !\u0026#34;); } catch(e) { alert(\u0026#34;error !\u0026#34; \u002b e); } \u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; /p>p>label/p>p>locale/p>p>internationalization/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/custom-labels\/ }, { value: Create custom localized labels, path: https:\/\/docs.arender.io\/v4\/cookbook\/custom-labels\/, label: p>This guide will help you create custom localized labels.\nDefault custom localized resources path ARender internationalization approach uses .properties files where localizable informations are stored in.\nARender allows you to customize localized labels from external custom resource files.\nBy default, ARender uses the following order to fetch custom localized resource files :\n Configuration properties \u0026lt;HOME_DIR\u0026gt;\/ARenderCustomLabels\/ \u0026lt;TOMCAT_DIR\u0026gt;\/webapps\/\/WEB-INF\/classes\/labels\/ To go futher Define the folder path containing the custom labels To define the folder path where the custom labels are stored, you must edit the following property :/p>p>This guide will help you create custom localized labels.\nDefault custom localized resources path ARender internationalization approach uses .properties files where localizable informations are stored in.\nARender allows you to customize localized labels from external custom resource files.\nBy default, ARender uses the following order to fetch custom localized resource files :\n Configuration properties \u0026lt;HOME_DIR\u0026gt;\/ARenderCustomLabels\/ \u0026lt;TOMCAT_DIR\u0026gt;\/webapps\/\/WEB-INF\/classes\/labels\/ To go futher Define the folder path containing the custom labels To define the folder path where the custom labels are stored, you must edit the following property :\narender-server-custom-vanilla.properties # ARender label configuration # Define the folder path where the custom labels are stored # Otherwise leave empty so that ARender can look in the \u0026lt;HOME_DIR\u0026gt;\/ARenderCustomLabels\/ or in the labels\/ folder # NB: Make sure the path ends with a file separator, the slash \/ arender.server.external.custom.labels.path Create your own custom localized labels Typical resource files are named as CustomLabels_{lang}.properties, which lang corresponds to locale code :\n ar (Arabic) de (German) en (English) es (Spanish) fr (French) he (Hebrew) it (Italian) ja (Japanese) pl (Polish) pt (Portuguese) pt-BR (Brazilian Portuguese) ru (Russian) zh-CN (Simplified Chinese) zh-TW (Traditional Chinese) For each language or the one needed, store localizable informations in the form of case sensitive key-value pairs.\nTo provide a concrete example, suppose you need a custom label for a custom button in 3 differents language english, spanish and french :\nThese .properties files are to be placed whether in \u0026lt;HOME_DIR\u0026gt;\/ARenderCustomLabels\/ or in \u0026lt;TOMCAT_DIR\u0026gt;\/webapps\/\/WEB-INF\/classes\/labels\/.\nCustomLabels_en.properties helloHello World CustomLabels_es.properties helloHola Mundo CustomLabels_fr.properties helloBonjour le monde To use this custom label, you will need to reference it with the tag customLabels#{label-key}.\nBefore version 4.7.0 :\narender-custom-integration.xml \u0026lt;!-- Sample implementation of a Custom button --\u0026gt; \u0026lt;bean id\u0026#34;customButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;customButton\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;imageResource\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.defferedmodules.ExternalImageResource\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;width\u0026#34; value\u0026#34;16\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;height\u0026#34; value\u0026#34;16\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;url\u0026#34; value\u0026#34;http:\/\/i86.servimg.com\/u\/f86\/14\/46\/83\/49\/biere310.gif\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;!-- Your custom button label --\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;customLabels#hello\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.jsapi.toppanel.JSCallButtonHandler\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;jsCode\u0026#34;\u0026gt; \u0026lt;value\u0026gt; \u0026lt;!-- Custom JS action upon click\/mouseDown\/touch event --\u0026gt; \u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Since version 4.7.0 :\narender-custom-integration.xml \u0026lt;!-- Sample implementation of a Custom button --\u0026gt; \u0026lt;bean id\u0026#34;customButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;customButton\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-arender\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;value\u0026gt;Custom Button\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.jsapi.toppanel.JSCallButtonHandler\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;jsCode\u0026#34;\u0026gt; \u0026lt;value\u0026gt; try { alert(\u0026#39;Hello world !\u0026#39;); $wnd.getARenderJS().getGenericNotificationJSAPI().askNotification(\u0026#34;hello\u0026#34;); alert(\u0026#34;Finished !\u0026#34;); } catch(e) { alert(\u0026#34;error !\u0026#34; \u002b e); } \u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; /p>p>label/p>p>locale/p>p>internationalization/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/custom-labels\/ }, { value: Create Watermarked documents, path: https:\/\/docs.arender.io\/learn\/how-to\/watermarkeddocumentcreation\/, label: p>This code snippet allows you, using the ARender jar dependency arondor-arender-client-javarest, to communicate with rendition servers in order to generate PDFs with annotations.\nIn this particular example, we will setup a repeated stamp annotation on each page of the document in order to generate a watermarking.\nVariables setup Here you will have to setup the address of the rendition server you are targeting and the binary content of the original document you want to watermark./p>p>This code snippet allows you, using the ARender jar dependency arondor-arender-client-javarest, to communicate with rendition servers in order to generate PDFs with annotations.\nIn this particular example, we will setup a repeated stamp annotation on each page of the document in order to generate a watermarking.\nVariables setup Here you will have to setup the address of the rendition server you are targeting and the binary content of the original document you want to watermark. We assume in this example that the data is stored into the field data .\nRenditionRestClient client new RenditionRestClient(); client.setAddress(\u0026#34;http:\/\/localhost:8761\u0026#34;); \/\/ Assuming that this \u0026#34;data\u0026#34; contains your documentContent InputStream data; DocumentAccessor original new DocumentAccessorByteArray(data); Loading of the documentAccessor In this code, we load the documentAccessor and get the RENDERED version of it in case a conversion is needed on the rendition side.\nclient.loadDocumentAccessor(original); DocumentAccessor accessorConverted client.getDocumentAccessor(original.getUUID(), DocumentAccessorSelector.RENDERED); Obtaining the number of pages DocumentLayout layout client.getDocumentLayout(accessorConverted.getUUID()); int nbPages -1; if (layout instanceof DocumentPageLayout) { nbPages ((DocumentPageLayout) layout).getPageCount(); } else { \/\/ send error throw ... } Setup the annotation style for stamps \/\/ configure here the ARender stamp style AnnotationStyle annotationStyle new AnnotationStyle(); annotationStyle.setFontSize(80); annotationStyle.setFontColor(\u0026#34;rgb(0,0,255)\u0026#34;); annotationStyle.setBackgroundColor(\u0026#34;none\u0026#34;); annotationStyle.setBorderWidth(0); Map\u0026lt;String, String\u0026gt; styleMap new HashMap\u0026lt;String, String\u0026gt;(); styleMap.put(\u0026#34;fontSize\u0026#34;, annotationStyle.getFontSize() \u002b \u0026#34;\u0026#34;); styleMap.put(\u0026#34;fontColor\u0026#34;, annotationStyle.getFontColor() \u002b \u0026#34;\u0026#34;); styleMap.put(\u0026#34;borderWidth\u0026#34;, annotationStyle.getBorderWidth() \u002b \u0026#34;\u0026#34;); styleMap.put(\u0026#34;borderColor\u0026#34;, annotationStyle.getBorderColor() \u002b \u0026#34;\u0026#34;); styleMap.put(\u0026#34;backgroundColor\u0026#34;, annotationStyle.getBackgroundColor() \u002b \u0026#34;\u0026#34;); String newAppearance \u0026#34;\u0026#34;; for (String key: styleMap.keySet()) { newAppearance \u002b key \u002b \u0026#34;:\u0026#34; \u002b styleMap.get(key) \u002b \u0026#34;;\u0026#34;; } \/\/ the appearance for the ARender stamp is now built Setup the list of stamps to send \/\/ now we prepare the list of stamps to send the rendition server List\u0026lt;Annotation\u0026gt; stamps new ArrayList\u0026lt;Annotation\u0026gt;(); for (int i 0; i \u0026lt; nbPages; i\u002b\u002b) { StampElemType annotation new StampElemType(); annotation.setDocumentId(DocumentIdFactory.getInstance().generate()); annotation.setContents(\u0026#34;WATERMARK\u0026#34;); annotation.setRotation(0); annotation.setPosition(new PageRelativePosition(0, 100, 400, 400)); annotation.setAppearance(newAppearance); annotation.setPage(i); stamps.add(annotation); } Creation of the conversion task AlterContentDescriptionWithAnnotations alterContent new AlterContentDescriptionWithAnnotations(); \/\/ set annotations alterContent.setAnnotations(stamps); \/\/ set documentId List\u0026lt;DocumentId\u0026gt; sourceDocumentIdList new ArrayList\u0026lt;DocumentId\u0026gt;(); sourceDocumentIdList.add(accessorConverted.getUUID()); DocumentId renderedDoc client.alterDocumentContent(sourceDocumentIdList, alterContent); Fetch of the resulting document DocumentAccessor accessorFinalDocument client.getDocumentAccessor(renderedDoc, DocumentAccessorSelector.RENDERED); The binary data of the resulting document is in:\naccessorFinalDocument.getInputStream(); /p>p>watermarks/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/watermarkeddocumentcreation\/ }, { value: Create Watermarked documents, path: https:\/\/docs.arender.io\/v4\/cookbook\/watermarkeddocumentcreation\/, label: p>This code snippet allows you, using the ARender jar dependency arondor-arender-client-javarest, to communicate with rendition servers in order to generate PDFs with annotations.\nIn this particular example, we will setup a repeated stamp annotation on each page of the document in order to generate a watermarking.\nVariables setup Here you will have to setup the address of the rendition server you are targeting and the binary content of the original document you want to watermark./p>p>This code snippet allows you, using the ARender jar dependency arondor-arender-client-javarest, to communicate with rendition servers in order to generate PDFs with annotations.\nIn this particular example, we will setup a repeated stamp annotation on each page of the document in order to generate a watermarking.\nVariables setup Here you will have to setup the address of the rendition server you are targeting and the binary content of the original document you want to watermark. We assume in this example that the data is stored into the field data .\nDocumentServiceRestClient client new DocumentServiceRestClient(); client.setAddress(\u0026#34;http:\/\/localhost:8761\u0026#34;); \/\/ Assuming that this \u0026#34;data\u0026#34; contains your documentContent InputStream data; DocumentAccessor original new DocumentAccessorByteArray(data); Loading of the documentAccessor In this code, we load the documentAccessor and get the RENDERED version of it in case a conversion is needed on the rendition side.\nclient.loadDocumentAccessor(original); DocumentAccessor accessorConverted client.getDocumentAccessor(original.getUUID(), DocumentAccessorSelector.RENDERED); Obtaining the number of pages DocumentLayout layout client.getDocumentLayout(accessorConverted.getUUID()); int nbPages -1; if (layout instanceof DocumentPageLayout) { nbPages ((DocumentPageLayout) layout).getPageCount(); } else { \/\/ send error throw ... } Setup the annotation style for stamps \/\/ configure here the ARender stamp style AnnotationStyle annotationStyle new AnnotationStyle(); annotationStyle.setFontSize(80); annotationStyle.setFontColor(\u0026#34;rgb(0,0,255)\u0026#34;); annotationStyle.setBackgroundColor(\u0026#34;none\u0026#34;); annotationStyle.setBorderWidth(0); Map\u0026lt;String, String\u0026gt; styleMap new HashMap\u0026lt;String, String\u0026gt;(); styleMap.put(\u0026#34;fontSize\u0026#34;, annotationStyle.getFontSize() \u002b \u0026#34;\u0026#34;); styleMap.put(\u0026#34;fontColor\u0026#34;, annotationStyle.getFontColor() \u002b \u0026#34;\u0026#34;); styleMap.put(\u0026#34;borderWidth\u0026#34;, annotationStyle.getBorderWidth() \u002b \u0026#34;\u0026#34;); styleMap.put(\u0026#34;borderColor\u0026#34;, annotationStyle.getBorderColor() \u002b \u0026#34;\u0026#34;); styleMap.put(\u0026#34;backgroundColor\u0026#34;, annotationStyle.getBackgroundColor() \u002b \u0026#34;\u0026#34;); String newAppearance \u0026#34;\u0026#34;; for (String key: styleMap.keySet()) { newAppearance \u002b key \u002b \u0026#34;:\u0026#34; \u002b styleMap.get(key) \u002b \u0026#34;;\u0026#34;; } \/\/ the appearance for the ARender stamp is now built Setup the list of stamps to send \/\/ now we prepare the list of stamps to send the rendition server List\u0026lt;Annotation\u0026gt; stamps new ArrayList\u0026lt;Annotation\u0026gt;(); for (int i 0; i \u0026lt; nbPages; i\u002b\u002b) { StampElemType annotation new StampElemType(); annotation.setDocumentId(DocumentIdFactory.getInstance().generate()); annotation.setContents(\u0026#34;WATERMARK\u0026#34;); annotation.setRotation(0); annotation.setPosition(new PageRelativePosition(0, 100, 400, 400)); annotation.setAppearance(newAppearance); annotation.setPage(i); stamps.add(annotation); } Creation of the conversion task AlterContentDescriptionWithAnnotations alterContent new AlterContentDescriptionWithAnnotations(); \/\/ set annotations alterContent.setAnnotations(stamps); \/\/ set documentId List\u0026lt;DocumentId\u0026gt; sourceDocumentIdList new ArrayList\u0026lt;DocumentId\u0026gt;(); sourceDocumentIdList.add(accessorConverted.getUUID()); DocumentId renderedDoc client.alterDocumentContent(sourceDocumentIdList, alterContent); Fetch of the resulting document DocumentAccessor accessorFinalDocument client.getDocumentAccessor(renderedDoc, DocumentAccessorSelector.RENDERED); The binary data of the resulting document is in:\naccessorFinalDocument.getInputStream(); /p>p>watermarks/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/watermarkeddocumentcreation\/ }, { value: Crop page, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/crop-image\/, label: p>A servlet is deployed to have an image which corresponds to a cropped page of a document.\nRequest This functionality is accessible via the servlet: cropImageServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/cropImageServlet?uuiddocUUID\u0026amp;localelangue\u0026amp;pagePositionpage\u0026amp;descsize\u0026#39; uuid: document id locale: the language of the text pagePosition: the page of the document desc: the settings for cropping (size, position, color etc) Servlet Response An image is returned corresponding to the document page as a parameter, with a descriptive text to explain how to save the image./p>p>A servlet is deployed to have an image which corresponds to a cropped page of a document.\nRequest This functionality is accessible via the servlet: cropImageServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/cropImageServlet?uuiddocUUID\u0026amp;localelangue\u0026amp;pagePositionpage\u0026amp;descsize\u0026#39; uuid: document id locale: the language of the text pagePosition: the page of the document desc: the settings for cropping (size, position, color etc) Servlet Response An image is returned corresponding to the document page as a parameter, with a descriptive text to explain how to save the image.\n/p>p>tutorial/p>p>crop/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/crop-image\/ }, { value: Custom annotation, path: https:\/\/docs.arender.io\/learn\/how-to\/annotation-line\/, label: p>Example: Line annotation The Line annotation is a variant of the Arrow annotation, with properties head and tail at None. We need only two files for this cookbook concerning ARender font end web application, configurations\/arender-custom-integration.xml and configurations\/arender-custom-client.properties.\nModification of arender-custom-integration.xml In this file, we will do two things. Create the annotation model and made the button to call this annotation.\nAnnotation\u0026rsquo;s model To do it, we can use the arrow annotation and customize it./p>p>Example: Line annotation The Line annotation is a variant of the Arrow annotation, with properties head and tail at None. We need only two files for this cookbook concerning ARender font end web application, configurations\/arender-custom-integration.xml and configurations\/arender-custom-client.properties.\nModification of arender-custom-integration.xml In this file, we will do two things. Create the annotation model and made the button to call this annotation.\nAnnotation\u0026rsquo;s model To do it, we can use the arrow annotation and customize it. Retrieve the arrowCreationAction\u0026rsquo;s bean from the file named event-configuration.xml. Once it\u0026rsquo;s done, to have a line, we need the head and tail properties set to NONE\nconfigurations\/arender-custom-integration.xml \u0026lt;bean id\u0026#34;lineCreationAction\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.behavior.annotation.CreateAnnotationButtonHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.annotation.events.PrepareAnnotationCreationEvent\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.common.AnnotationType\u0026#34;\u0026gt;Line\u0026lt;\/value\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;property name\u0026#34;model\u0026#34;\u0026gt; \u0026lt;!-- Annotation class --\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.api.LineElemType\u0026#34;\u0026gt; \u0026lt;!-- annotation properties --\u0026gt; \u0026lt;property name\u0026#34;head\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.api.LineEndType\u0026#34;\u0026gt;NONE\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;tail\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.api.LineEndType\u0026#34;\u0026gt;NONE\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; It\u0026rsquo;s possible to custom furthermore the annotation to have a particular color or a default size.\nAnnotation\u0026rsquo;s button Now, we will made the annotation button. We can use the arrow button model from_toppannel-annotations-configuration.xml_and custom it in arender-custom-integration.xml.\n Before 4.7.0 After 4.7.0 After 4.8.1 \u0026lt;bean id\u0026#34;addLineAnnotationButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ButtonPresenter\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.line}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;imageResource\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.defferedmodules.ExternalImageResource\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;width\u0026#34; value\u0026#34;32\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;height\u0026#34; value\u0026#34;32\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;url\u0026#34; value\u0026#34;icons\/line.png\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;value\u0026gt;Line\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;lineCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean id\u0026#34;addArrowAnnotationButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addArrowAnnotationButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;Line\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;supportDoubleClick\u0026#34; value\u0026#34;${topPanel.annotationMenu.arrow.repeat}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.arrow}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-add-arrow toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#addArrowAnnotation\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;doubleClickButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;arrowCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;inactiveButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;quitAnnotationCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;arrowCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;supportShortCut\u0026#34; value\u0026#34;true\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;shortcut\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.documentcontent.shortcuts.KeyboardShortCut\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;ctrl\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;key\u0026#34; value\u0026#34;${shortcut.annotation.arrow.key}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${shortcut.annotation.arrow.enabled}\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean id\u0026#34;addArrowAnnotationButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addArrowAnnotationButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;supportDoubleClick\u0026#34; value\u0026#34;${topPanel.annotationMenu.arrow.repeat}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.arrow}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-add-arrow toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#addArrowAnnotation\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;doubleClickButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;arrowCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;inactiveButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;quitAnnotationCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;arrowCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;supportShortCut\u0026#34; value\u0026#34;true\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;shortcut\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.documentcontent.shortcuts.KeyboardShortCut\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;ctrl\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;key\u0026#34; value\u0026#34;${shortcut.annotation.arrow.key}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${shortcut.annotation.arrow.enabled}\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; In the example, the icon has been loaded from the icons folder of ARender front end server. The value could be an external URL from a website.\nModification of configurations\/arender-custom-client.properties Adding the button If the value topPanel.annotation.buttons.beanNames doesn\u0026rsquo;t exist, add it, and add your button.\nconfigurations\/arender-custom-client.properties topPanel.annotation.buttons.beanNamesaddLineAnnotationButton Warning, if you want all the annotations buttons, you should retrieve configurations\/arender-custom-client.properties\u0026rsquo;s topPanel.annotation.buttons.beanNames and add your button in the list. After that, you should activate your annotation.\nconfigurations\/arender-custom-client.properties topPanel.annotationMenu.linetrue Reload your ARender front end application server and your line annotation will be in the annotation menu.\n/p>p>tutorial/p>p>annotation/p>p>custom/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/annotation-line\/ }, { value: Custom annotation, path: https:\/\/docs.arender.io\/v4\/cookbook\/annotation-line\/, label: p>Example: Line annotation The Line annotation is a variant of the Arrow annotation, with properties head and tail at None. We need only two files for this cookbook concerning ARender font end web application, arender-custom-integration.xml and arender.properties.\nModification of arender-custom-integration.xml In this file, we will do two things. Create the annotation model and made the button to call this annotation.\nAnnotation\u0026rsquo;s model To do it, we can use the arrow annotation and customize it./p>p>Example: Line annotation The Line annotation is a variant of the Arrow annotation, with properties head and tail at None. We need only two files for this cookbook concerning ARender font end web application, arender-custom-integration.xml and arender.properties.\nModification of arender-custom-integration.xml In this file, we will do two things. Create the annotation model and made the button to call this annotation.\nAnnotation\u0026rsquo;s model To do it, we can use the arrow annotation and customize it. Retrieve the arrowCreationAction\u0026rsquo;s bean from the file named event-configuration.xml. Once it\u0026rsquo;s done, to have a line, we need the head and tail properties set to NONE\narender-custom-integration.xml \u0026lt;bean id\u0026#34;lineCreationAction\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.behavior.annotation.CreateAnnotationButtonHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.annotation.events.PrepareAnnotationCreationEvent\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.common.AnnotationType\u0026#34;\u0026gt;Line\u0026lt;\/value\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;property name\u0026#34;model\u0026#34;\u0026gt; \u0026lt;!-- Annotation class --\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.api.LineElemType\u0026#34;\u0026gt; \u0026lt;!-- annotation properties --\u0026gt; \u0026lt;property name\u0026#34;head\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.api.LineEndType\u0026#34;\u0026gt;NONE\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;tail\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.api.LineEndType\u0026#34;\u0026gt;NONE\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; It\u0026rsquo;s possible to custom furthermore the annotation to have a particular color or a default size.\nAnnotation\u0026rsquo;s button Now, we will made the annotation button. We can use the arrow button model from_toppannel-annotations-configuration.xml_and custom it in arender-custom-integration.xml.\n Before 4.7.0 After 4.7.0 After 4.8.1 \u0026lt;bean id\u0026#34;addLineAnnotationButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ButtonPresenter\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.line}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;imageResource\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.defferedmodules.ExternalImageResource\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;width\u0026#34; value\u0026#34;32\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;height\u0026#34; value\u0026#34;32\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;url\u0026#34; value\u0026#34;icons\/line.png\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;value\u0026gt;Line\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;lineCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean id\u0026#34;addArrowAnnotationButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addArrowAnnotationButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;Line\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;supportDoubleClick\u0026#34; value\u0026#34;${topPanel.annotationMenu.arrow.repeat}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.arrow}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-add-arrow toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#addArrowAnnotation\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;doubleClickButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;arrowCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;inactiveButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;quitAnnotationCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;arrowCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;supportShortCut\u0026#34; value\u0026#34;true\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;shortcut\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.documentcontent.shortcuts.KeyboardShortCut\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;ctrl\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;key\u0026#34; value\u0026#34;${shortcut.annotation.arrow.key}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${shortcut.annotation.arrow.enabled}\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean id\u0026#34;addArrowAnnotationButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addArrowAnnotationButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;supportDoubleClick\u0026#34; value\u0026#34;${topPanel.annotationMenu.arrow.repeat}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.arrow}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-add-arrow toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#addArrowAnnotation\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;doubleClickButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;arrowCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;inactiveButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;quitAnnotationCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;arrowCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;supportShortCut\u0026#34; value\u0026#34;true\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;shortcut\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.documentcontent.shortcuts.KeyboardShortCut\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;ctrl\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;key\u0026#34; value\u0026#34;${shortcut.annotation.arrow.key}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${shortcut.annotation.arrow.enabled}\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; In the example, the icon has been loaded from the icons folder of ARender front end server. The value could be an external URL from a website.\nModification of arender.properties Adding the button If the value topPanel.annotation.buttons.beanNames doesn\u0026rsquo;t exist, add it, and add your button.\narender.properties topPanel.annotation.buttons.beanNamesaddLineAnnotationButton Warning, if you want all the annotations buttons, you should retrieve arender-default.properties\u0026rsquo;s topPanel.annotation.buttons.beanNames and add your button in the list. After that, you should activate your annotation.\narender.properties topPanel.annotationMenu.linetrue Reload your ARender front end application server and your line annotation will be in the annotation menu.\n/p>p>tutorial/p>p>annotation/p>p>custom/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/annotation-line\/ }, { value: Custom display name, path: https:\/\/docs.arender.io\/learn\/how-to\/custom-username\/, label: p>ARender allows to customize display names.\nBy default, as an example using FileNet, the technical ID of the user will be displayed to the end user. If this ID is not known or it is not meant to be read by the end user, it can be good to alter it only on the browser side and let the server handle the real unique user ID.\nIn order to simplify reading the annotations, ARender allows to implement in the Front end side (Web-UI) an interface of DisplayNameProvider./p>p>ARender allows to customize display names.\nBy default, as an example using FileNet, the technical ID of the user will be displayed to the end user. If this ID is not known or it is not meant to be read by the end user, it can be good to alter it only on the browser side and let the server handle the real unique user ID.\nIn order to simplify reading the annotations, ARender allows to implement in the Front end side (Web-UI) an interface of DisplayNameProvider.\npublic interface DisplayNameProvider { String fetchDisplayName(String originalCreatorName); List\u0026lt;String\u0026gt; fetchDisplayNames(List\u0026lt;String\u0026gt; originalCreatorNames); } Those two methods needs to be implemented (one of them being a list format call of the first) and to return displayNames from given userNames.\nHere is a default base sample (available inside ARender default packaging) which allows to prefix all usernames by arender.\npublic class DefaultPrefixerDisplayNameProvider implements DisplayNameProvider { private String prefix \u0026#34;arender\u0026#34;; private String separator \u0026#34;-\u0026#34;; @Override public String fetchDisplayName(String originalCreatorName) { return getPrefixedString(originalCreatorName); } @Override public List\u0026lt;String\u0026gt; fetchDisplayNames(List\u0026lt;String\u0026gt; originalCreatorNames) { List\u0026lt;String\u0026gt; prefixed new ArrayList\u0026lt;String\u0026gt;(); for (String originalCreatorName: originalCreatorNames) { prefixed.add(getPrefixedString(originalCreatorName)); } return prefixed; } private String getPrefixedString(String originalCreatorName) { if (Strings.isNullOrEmpty(originalCreatorName)) { return prefix; } else { return prefix \u002b separator \u002b originalCreatorName; } } public String getPrefix() { return prefix; } public void setPrefix(String prefix) { this.prefix prefix; } public String getSeparator() { return separator; } public void setSeparator(String separator) { this.separator separator; } } The last remaining step is required to indicate to ARender which display names provider it should use. This is done in the following files:\n Example of bean definition (modifications to do in *arender-custom-server-integration.xml *): \u0026lt;bean id\u0026#34;myCustomNameProvider\u0026#34; class\u0026#34;com.arondor.viewer.MyCustomDisplayNameProvider\u0026#34; \/\u0026gt; Example of property setup (modifications to do in configurations\/arender-custom-server.properties): arender.server.displayName.providermyCustomNameProvider /p>p>tutorial/p>p>display name/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/custom-username\/ }, { value: Custom display name, path: https:\/\/docs.arender.io\/v4\/cookbook\/custom-username\/, label: p>ARender allows to customize display names.\nBy default, as an example using FileNet, the technical ID of the user will be displayed to the end user. If this ID is not known or it is not meant to be read by the end user, it can be good to alter it only on the browser side and let the server handle the real unique user ID.\nIn order to simplify reading the annotations, ARender allows to implement in the Front end side (Web-UI) an interface of DisplayNameProvider./p>p>ARender allows to customize display names.\nBy default, as an example using FileNet, the technical ID of the user will be displayed to the end user. If this ID is not known or it is not meant to be read by the end user, it can be good to alter it only on the browser side and let the server handle the real unique user ID.\nIn order to simplify reading the annotations, ARender allows to implement in the Front end side (Web-UI) an interface of DisplayNameProvider.\npublic interface DisplayNameProvider { String fetchDisplayName(String originalCreatorName); List\u0026lt;String\u0026gt; fetchDisplayNames(List\u0026lt;String\u0026gt; originalCreatorNames); } Those two methods needs to be implemented (one of them being a list format call of the first) and to return displayNames from given userNames.\nHere is a default base sample (available inside ARender default packaging) which allows to prefix all usernames by arender.\npublic class DefaultPrefixerDisplayNameProvider implements DisplayNameProvider { private String prefix \u0026#34;arender\u0026#34;; private String separator \u0026#34;-\u0026#34;; @Override public String fetchDisplayName(String originalCreatorName) { return getPrefixedString(originalCreatorName); } @Override public List\u0026lt;String\u0026gt; fetchDisplayNames(List\u0026lt;String\u0026gt; originalCreatorNames) { List\u0026lt;String\u0026gt; prefixed new ArrayList\u0026lt;String\u0026gt;(); for (String originalCreatorName: originalCreatorNames) { prefixed.add(getPrefixedString(originalCreatorName)); } return prefixed; } private String getPrefixedString(String originalCreatorName) { if (Strings.isNullOrEmpty(originalCreatorName)) { return prefix; } else { return prefix \u002b separator \u002b originalCreatorName; } } public String getPrefix() { return prefix; } public void setPrefix(String prefix) { this.prefix prefix; } public String getSeparator() { return separator; } public void setSeparator(String separator) { this.separator separator; } } The last remaining step is required to indicate to ARender which display names provider it should use. This is done in the following files:\n Example of bean definition (modifications to do in arender-custom-server-integration.xml): \u0026lt;bean id\u0026#34;myCustomNameProvider\u0026#34; class\u0026#34;com.arondor.viewer.MyCustomDisplayNameProvider\u0026#34; \/\u0026gt; Example of property setup (modifications to do in arender-server-custom-\u0026lt;\u0026hellip;\u0026gt;.properties): arender.server.displayName.providermyCustomNameProvider /p>p>tutorial/p>p>display name/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/custom-username\/ }, { value: Custom XML integration location, path: https:\/\/docs.arender.io\/learn\/how-to\/custom-integration\/, label: p>We possess in ARender two files dedicated to custom integrations that ship out empty in order for integration to include easier custom XML into ARender. Those two XML files are imported by ARender.\nThis avoids conflicts on version upgrade of ARender, and facilitates the comparison with the new version of the XML (nothing new is overridden by custom integration), those XML files are empty and will always be at each new version./p>p>We possess in ARender two files dedicated to custom integrations that ship out empty in order for integration to include easier custom XML into ARender. Those two XML files are imported by ARender.\nThis avoids conflicts on version upgrade of ARender, and facilitates the comparison with the new version of the XML (nothing new is overridden by custom integration), those XML files are empty and will always be at each new version.\n In the Web-UI:\n configurations\/arender-custom-integration.xml (GUI, client side configuration) configurations\/arender-custom-server-integration.xml (server side configuration) To externalize your XML files, you can set environment variables to change the location from which those two custom files will be read:\n customXmlServerPath: corresponds to the import path of configurations\/arender-custom-server-integration.xml . customXmlClientPath: corresponds to the import path of configurations\/arender-custom-integration.xml. As an example, if you wish to set a file system full path to your custom server file, you can set customXmlServerPath to:\nfile:C:\\\\configuration\\\\arender-server-configuration.xml /p>p>tutorial/p>p>integration/p>p>location/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/custom-integration\/ }, { value: Custom XML integration location, path: https:\/\/docs.arender.io\/v4\/cookbook\/custom-integration\/, label: p>We possess in ARender two files dedicated to custom integrations that ship out empty in order for integration to include easier custom XML into ARender. Those two XML files are imported by ARender.\nThis avoid conflicts on version upgrade of ARender, and facilitates the comparison with the new version of the XML (nothing new is overriden by custom integration), those XML files are empty and will always be at each new version./p>p>We possess in ARender two files dedicated to custom integrations that ship out empty in order for integration to include easier custom XML into ARender. Those two XML files are imported by ARender.\nThis avoid conflicts on version upgrade of ARender, and facilitates the comparison with the new version of the XML (nothing new is overriden by custom integration), those XML files are empty and will always be at each new version.\n In the Web-UI:\n WEB-INF\/classes\/arender-custom-integration.xml (GUI, client side configuration) WEB-INF\/classes\/arender-custom-server-integration.xml (server side configuration) If you do not wish to place your XML files inside ARender war packaging, you can set environment variables to change the location from which those two custom files will be read:\n customXmlServerPath: corresponds to the import path of arender-custom-server-integration.xml. customXmlClientPath: corresponds to the import path of arender-custom-integration.xml. As an example, if you wish to set a file system full path to your custom server file, you can set customXmlServerPath to:\nfile:C:\\\\configuration\\\\arender-server-configuration.xml /p>p>tutorial/p>p>integration/p>p>location/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/custom-integration\/ }, { value: Destroy session, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/destroy-session\/, label: p>A new servlet is deployed to destroy user session information.\nRequest This functionality is accessible via the servlet: destroySession\nThe request can be used with any HTTP method.\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/destroySession\u0026#39; Servlet Response The session will be destroyed including the following ARender information:\n user userAgent versionUserAgent /p>p>A new servlet is deployed to destroy user session information.\nRequest This functionality is accessible via the servlet: destroySession\nThe request can be used with any HTTP method.\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/destroySession\u0026#39; Servlet Response The session will be destroyed including the following ARender information:\n user userAgent versionUserAgent /p>p>tutorial/p>p>destroy/p>p>session/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/destroy-session\/ }, { value: Document Builder, path: https:\/\/docs.arender.io\/features\/documentbuilder\/, label: p>Activate the document builder The document builder mode allows you to create a new document, alter or delete the desired document, organize and manage pages of the desired document.\nTo active it, add the following property:\nconfigurations\/arender-custom-client.properties documentbuilder.enabledtrue Access the document builder In order to activate the document builder mode, click on the \u0026ldquo;Scissor\u0026rdquo; icon:\nThe document builder mode will now be displayed\nYou can decide to hide or display source documents by clicking on the document explorer button or the separator buttons:/p>p>Activate the document builder The document builder mode allows you to create a new document, alter or delete the desired document, organize and manage pages of the desired document.\nTo active it, add the following property:\nconfigurations\/arender-custom-client.properties documentbuilder.enabledtrue Access the document builder In order to activate the document builder mode, click on the \u0026ldquo;Scissor\u0026rdquo; icon:\nThe document builder mode will now be displayed\nYou can decide to hide or display source documents by clicking on the document explorer button or the separator buttons:\nCreate a new document In order to create a new document, click on the \u0026quot; \u002b \u0026quot; button shown in the following picture\nYou can also create a new document with a right-click on the document builder view:\nYou can rename a document by clicking on the title and then typing the new name\nThen, you can add pages to your document, from your other documents. If you want to keep your other documents, you have to drag and drop your pages from the thumbnails navigation, which contains your source documents:\nIf you do not want to keep your other documents, you can drag and drop your pages from the document builder view. The selected page is no longer in the first document:\nYou can drag and drop several pages in a row:\n keep « Ctrl » pressed and click on every pages you want to select keep « Shift » pressed to select all pages between the first page you clicked on and the second one Download the document To download your new document, click on the following icon\nDelete a document from the document builder view To delete a document from the document builder view, click on the cross corresponding to the document to be deleted:\nIf you delete every pages of a document, the document will be deleted of the view.\nMerge two documents To merge two or more documents, you have to create a new document\nThen, you drag and drop all the pages you want from the source document, to your new document:\nSplit a document To split a document in several documents, you have to create your new documents. Then drag and drop the pages you want in each new documents.\nReshape a document You can move a page into a document with a drag and drop in the document builder view. In this example, the first page is moved to the fourth position:\nYou can add several times the same page in your document. You have to drag and drop the page from the source document to your document in building. In this example, the third page is added three times:\nYou can delete a page from your document. Click on the red cross on the page to be deleted:\nExit the document builder mode To close the document builder, you click on the \u0026ldquo;Scissor\u0026rdquo; icon:\nYou can also close the document builder with a right-click in the document builder view:\n/p>p>feature/p>p>document builder/p>, url: https:\/\/docs.arender.io\/features\/documentbuilder\/ }, { value: Document Builder, path: https:\/\/docs.arender.io\/v4\/feature\/documentbuilder\/, label: p>Access the document builder In order to activate the document builder mode, click on the \u0026ldquo;Scissor\u0026rdquo; icon:\nThe document builder mode will now be displayed\nYou can decide to hide or display source documents by clicking on those following buttons:\nYou can also hide or extend source documents by clicking on these buttons:\nCreate a new document In order to create a new document, click on the \u0026quot; \u002b \u0026quot; button shown in the following picture/p>p>Access the document builder In order to activate the document builder mode, click on the \u0026ldquo;Scissor\u0026rdquo; icon:\nThe document builder mode will now be displayed\nYou can decide to hide or display source documents by clicking on those following buttons:\nYou can also hide or extend source documents by clicking on these buttons:\nCreate a new document In order to create a new document, click on the \u0026quot; \u002b \u0026quot; button shown in the following picture\nYou can also create a new document with a right-click on the document builder view:\nYou can rename a document by clicking on the title and then typing the new name\nThen, you can add pages to your document, from your other documents. If you want to keep your other documents, you have to drag and drop your pages from the thumbnails navigation, which contains your source documents:\nIf you do not want to keep your other documents, you can drag and drop your pages from the document builder view. The selected page is no longer in the first document:\nYou can drag and drop several pages in a row:\n keep « Ctrl » pressed and click on every pages you want to select keep « Shift » pressed to select all pages between the first page you clicked on and the second one Then, save your new document by clicking on the following icon\nThe document is now downloaded.\nDelete a document from the document builder view To delete a document from the document builder view, click on the cross corresponding to the document to be deleted:\nIf you delete every pages of a document, the document will be deleted.\nMerge two documents To merge two or more documents, you have to create a new document\nThen, you drag and drop all the pages you want from the source document, to your new document:\nThen to save your document, click on the following icon.\nSplit a document To split a document in several documents, you have to create your new documents (more information about document creation here). Then drag and drop the pages you want in each new documents.\nThen, to save your new documents, click on these following icons\nReshape a document You can move a page into a document with a drag and drop in the document builder view. In this example, the first page is moved to the fourth position:\nYou can add several times the same page in your document. You have to drag and drop the page from the source document to your document in building. In this example, the third page is added three times:\nYou can delete a page from your document. Click on the red cross on the page to be deleted:\nTo save your changes, click on the following icon:\nExit the document builder mode To close the document builder, you click on the \u0026ldquo;Scissor\u0026rdquo; icon:\nYou can also close the document builder with a right-click in the document builder view:\nUse custom document builder layout The custom document builder makes it possible to have automatically a composition of document defined beforehand according to certain data. It allows you to display pages of desired documents. Also, a list of types can be added to the document composition, allowing the document to be typed.\nTo activate the custom document builder, a set of properties is required :\n# Use a script to retrieve custom layout informations to send it to ARender and create it arenderjs.startupScriptscripts\/arendercustomdocumentbuilder.js # Use the custom populator documentbuilder.populatorPolicyCustomDocument # Enable the saveAll button documentbuilder.button.saveAll.enabledtrue Javascript code to create a custom layout To create a custom document, functions calls are made in the ARender startup script. (arenderjs.startupScript property) :\ngetDocumentBuilder().registerDocumentBuilderOpeningEvent(function(){ }); Allows you to register on the document open event. The main code relating to the creation of the document is therefore done at this moment.\ngetDocumentBuilder().createCustomDocument(documentBuilderLayoutJSON, optionsJSON); Creates the personalized document, must be called with two parameters:\n A Json-formatted text representing the custom composition. A Json-formatted list of available options. May be empty if document typing is not desired. getDocumentBuilder().registerDocumentBuilderSaveCustomEvent(function(resultCustomLayoutJSON){ }); Allows you to register on the event of the custom save of the document. A Json object representing the built documents (new IDs, title and type) can be used for the ECM update.\nSample :\nscripts\/arendercustomdocumentbuilder.js function arenderjs_init(arenderjs_) { \/** * Build the custom document builder in ARender *\/ arenderjs_.getDocumentBuilder().registerDocumentBuilderOpeningEvent(function () { let jsonDocumentBuilderLayout getCustomLayout(); \/\/ Retrieve the json format of the custom document builder layout let jsonCustomOptionsList getOptions(); \/\/ Retrieve the json format of the custom options set in the data list arenderjs_.getDocumentBuilder().createCustomDocument(jsonDocumentBuilderLayout, jsonCustomOptionsList); \/\/ Call the createCustomDocument function to build the custom document builder in ARender }); \/** * Retrieve and log the json format of the custom document builder created in ARender *\/ arenderjs_.getDocumentBuilder().registerDocumentBuilderSaveCustomEvent(function (resultCustomLayoutJSON) { console.info(\u0026#34;resultCustomLayoutJSON :\\n\u0026#34; \u002b resultCustomLayoutJSON); }); } See the document builder API for more details on the functions used.\nThe custom document builder layout needs to be retrieved from the server, in a JSON format.\nIn the same way, a list a custom options needs to be retrieved, in a JSON format.\nWith these two given parameters, the createCustomDocument function can be called, it will create the custom document builder layout.\nAt last, a register call is made (registerDocumentBuilderSaveCustomEvent) to get the object called customJsonDocumentBuilderTypeInfo. This object is a JSON format of the custom document builder created, containing title, id and the selected type of created document to be used to update the ECM.\nDocument builder layout Json format : The custom document builder layout scheme looks like so :\nThe document builder layout contains several documents (nodes) that contains :\n documentInfos : A list of document information that contains : uuid : the original document ID pages : list of wanted document page associated to the document ID metadata : Data that contains : type : the type of the document title : the title of the document Sample :\ndocumentBuilderLayout.json { \u0026#34;documents\u0026#34;: { \u0026#34;documentInfos\u0026#34;: { \u0026#34;uuid\u0026#34;: \u0026#34;b64_dXJsPS4uXC4uXHNhbXBsZXNcVGVzdF9kZV96aXAzLTAuemlw\/1\u0026#34;, \u0026#34;pages\u0026#34;: 0 }, { \u0026#34;uuid\u0026#34;: \u0026#34;b64_dXJsPS4uXC4uXHNhbXBsZXNcVGVzdF9kZV96aXAzLTAuemlw\/2\u0026#34;, \u0026#34;pages\u0026#34;: 3, 4, 5 } , \u0026#34;metadata\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;Accepted Step 2 CS Applications\u0026#34;, \u0026#34;title\u0026#34;: \u0026#34;Accepted Files\u0026#34; } }, { \u0026#34;documentInfos\u0026#34;: { \u0026#34;uuid\u0026#34;: \u0026#34;b64_dXJsPS4uXC4uXHNhbXBsZXNcVGVzdF9kZV96aXAzLTAuemlw\/3\u0026#34;, \u0026#34;pages\u0026#34;: 0 } , \u0026#34;metadata\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;Rejected\u0026#34;, \u0026#34;title\u0026#34;: \u0026#34;Rejected Files\u0026#34; } }, { \u0026#34;documentInfos\u0026#34;: { \u0026#34;uuid\u0026#34;: \u0026#34;b64_dXJsPS4uXC4uXHNhbXBsZXNcVGVzdF9kZV96aXAzLTAuemlw\/4\u0026#34;, \u0026#34;pages\u0026#34;: 0, 1 } , \u0026#34;metadata\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;Sample\u0026#34;, \u0026#34;title\u0026#34;: \u0026#34;Sample Files\u0026#34; } } } This translates in having 3 Nodes in the document builder.\n The first node contains 4 pages, 1 page (page 0) is coming from the document represented by the id b64_dXJsPS4uXC4uXHNhbXBsZXNcVGVzdF9kZV96aXAzLTAuemlw\/1. And three pages (pages 3, 4, 5) coming from the document b64_dXJsPS4uXC4uXHNhbXBsZXNcVGVzdF9kZV96aXAzLTAuemlw\/2. The second node contains 1 page coming from the document b64_dXJsPS4uXC4uXHNhbXBsZXNcVGVzdF9kZV96aXAzLTAuemlw\/3 The third node contains 2 pages (pages 0 and 1) coming from the document b64_dXJsPS4uXC4uXHNhbXBsZXNcVGVzdF9kZV96aXAzLTAuemlw\/4 Options Json format : A list of options is used to fill the drop-down list to set the document type. This list contains several elements represented by a key and a value.\nSample :\ncustomOptionsList.json { \u0026#34;key\u0026#34;: \u0026#34;Action Item\u0026#34;, \u0026#34;value\u0026#34;: \u0026#34;Action Item\u0026#34; }, { \u0026#34;key\u0026#34;: \u0026#34;Accepted Step 2 CS Applications\u0026#34;, \u0026#34;value\u0026#34;: \u0026#34;Accepted Step 2 CS Applications\u0026#34; }, { \u0026#34;key\u0026#34;: \u0026#34;Account Charges\u0026#34;, \u0026#34;value\u0026#34;: \u0026#34;Account Charges\u0026#34; }, { \u0026#34;key\u0026#34;: \u0026#34;Archive\u0026#34;, \u0026#34;value\u0026#34;: \u0026#34;Archive\u0026#34; } The options are given as proposals to fill the drop-down list.\nThe key attributes of this option list will match the type attribute of the metadata of the json file of the document builder layout. In this example with the previous documentBuilderLayout.json used, the type Accepted Step 2 CS Applications matches the type of the metadata of the first document.\nThis results in auto completing the drop-down list with the value of this type, Accepted Step 2 CS Applications is then set in the field.\nIn the others drop-down lists, no given type (Sample or Rejected) is matching any type of metadata, the fields are left empty.\nHere is the visual results of the document builder in ARender :\nThe empty fields can then be filled with desired values or left empty.\nSave action When the save button is pressed, the code given in the registerDocumentBuilderSaveCustomEvent function of the javascript part is executed.\nIn this example, it will log the json format of the current layout of the document builder.\nThe returned json format is the same given as input but with one more mandatory object resultId which is the ID of the modified document used to update the ECM.\nHere is the returned value of the sample used :\ncustomJsonDocumentBuilderTypeInfo.json { \u0026#34;documents\u0026#34;: { \u0026#34;resultId\u0026#34; : \u0026#34;e8e653f2-ea1d-40fa-bcf2-f4a95fa238ad\u0026#34;, \u0026#34;inputFieldEnabled\u0026#34; : \u0026#34;false\u0026#34;, \u0026#34;documentInfos\u0026#34;: { \u0026#34;uuid\u0026#34;: \u0026#34;b64_dXJsPS4uXC4uXHNhbXBsZXNcVGVzdF9kZV96aXAzLTAuemlw\/1\u0026#34;, \u0026#34;pages\u0026#34;: 0 }, { \u0026#34;uuid\u0026#34;: \u0026#34;b64_dXJsPS4uXC4uXHNhbXBsZXNcVGVzdF9kZV96aXAzLTAuemlw\/2\u0026#34;, \u0026#34;pages\u0026#34;: 3, 4, 5 } , \u0026#34;metadata\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;\u0026#34;, \u0026#34;title\u0026#34;: \u0026#34;Sample Files\u0026#34; } }, { \u0026#34;resultId\u0026#34; : \u0026#34;f09acee7-cf94-48a2-a3ee-47b27f5049b6\u0026#34;, \u0026#34;inputFieldEnabled\u0026#34; : \u0026#34;true\u0026#34;, \u0026#34;documentInfos\u0026#34;: { \u0026#34;uuid\u0026#34;: \u0026#34;b64_dXJsPS4uXC4uXHNhbXBsZXNcVGVzdF9kZV96aXAzLTAuemlw\/3\u0026#34;, \u0026#34;pages\u0026#34;: 0 } , \u0026#34;metadata\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;Rejected\u0026#34;, \u0026#34;title\u0026#34;: \u0026#34;Rejected Files\u0026#34; } }, { \u0026#34;resultId\u0026#34; : \u0026#34;4ccb15c6-f556-4778-be84-25b492eecc56\u0026#34;, \u0026#34;inputFieldEnabled\u0026#34; : \u0026#34;true\u0026#34;, \u0026#34;documentInfos\u0026#34;: { \u0026#34;uuid\u0026#34;: \u0026#34;b64_dXJsPS4uXC4uXHNhbXBsZXNcVGVzdF9kZV96aXAzLTAuemlw\/4\u0026#34;, \u0026#34;pages\u0026#34;: 0, 1 } , \u0026#34;metadata\u0026#34;: { \u0026#34;type\u0026#34;: \u0026#34;Accepted Step 2 CS Applications\u0026#34;, \u0026#34;title\u0026#34;: \u0026#34;Accepted Files\u0026#34; } } } This data scheme can then be used to update the ECM.\n/p>p>feature/p>p>document builder/p>, url: https:\/\/docs.arender.io\/v4\/feature\/documentbuilder\/ }, { value: Document builder, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/documentbuilder-js-api\/, label: p>Interacting with the documentBuilder Object: getARenderJS().getDocumentBuilder() Function Description close() Closes the document builder open() Open the document builder reset() Resets the document builder content Register to the documentBuilder save event Object: getARenderJS().getDocumentBuilder()\n Function Description Arguments registerNotifyAlterDocumentContentEvent(callback) Trigger a callback function when a built document is saved callback: the callback function to call registerSubmitAlterDocumentContentEvent(callback) Trigger a callback function when a document creation is submitted callback: the callback function to call getSubmittedAlterDocumentContentDescription(obj) Retrieve content description of altered document obj: the source SubmitAlterDocumentContentEvent object getDocumentMetadata(desc,index) Extract the DocumentMetadata object from the source AlterContentDescription desc: AlterContentDescription/p>p>Interacting with the documentBuilder Object: getARenderJS().getDocumentBuilder() Function Description close() Closes the document builder open() Open the document builder reset() Resets the document builder content Register to the documentBuilder save event Object: getARenderJS().getDocumentBuilder()\n Function Description Arguments registerNotifyAlterDocumentContentEvent(callback) Trigger a callback function when a built document is saved callback: the callback function to call registerSubmitAlterDocumentContentEvent(callback) Trigger a callback function when a document creation is submitted callback: the callback function to call getSubmittedAlterDocumentContentDescription(obj) Retrieve content description of altered document obj: the source SubmitAlterDocumentContentEvent object getDocumentMetadata(desc,index) Extract the DocumentMetadata object from the source AlterContentDescription desc: AlterContentDescription\nindex: index of the document to fetch documentMetadata from\n getResultDocumentId(obj) Fetch resulting DocumentId obj: the event that was sent when the altercontent operation has been done Object: getARenderJS().getDocumentMetadata()\n Function Description Arguments addDocumentMetadata(metadata, key, value) Add a metadata to a documentMetadata object metadata: Metadata to modify\nkey: String that is the key of the metadata\nvalue: String that is the value of the metadata\n scripts\/example.js function arenderjs_init(arenderjs_) { arenderjs_.getDocumentBuilder() .registerSubmitAlterDocumentContentEvent(function(obj){ armt_onSubmitAlterDocumentContentEvent(arenderjs_,obj); }); arenderjs_.getDocumentBuilder() .registerNotifyAlterDocumentContentEvent(function(obj){ armt_onNotifyAlterDocumentContentEvent(arenderjs_,obj); }); } function armt_onSubmitAlterDocumentContentEvent(arenderjs_,obj) { var desc arenderjs_.getDocumentBuilder() .getSubmittedAlterDocumentContentDescription(obj); var meta arenderjs_.getDocumentBuilder() .getDocumentMetadata(desc, 0); arenderjs_.getDocumentMetadata().addDocumentMetadata(meta, \u0026#34;name\u0026#34;, \u0026#34;value\u0026#34;); } function armt_onNotifyAlterDocumentContentEvent(arenderjs_,obj) { console.log(\u0026#34;Notify: \u0026#34; \u002b obj); var docId arenderjs_.getDocumentBuilder().getResultDocumentId(obj); console.log(\u0026#34;Notify: \u0026#34; \u002b docId); console.log(\u0026#34;Notify: docId \u0026#34; \u002b docId); } /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/documentbuilder-js-api\/ }, { value: Document builder, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/documentbuilder\/, label: p>General Description Parameter Key Default value Type Enable\/disable this component documentbuilder.enabled false Boolean Hide\/Show the document builder button documentbuilder.button.visible true Boolean Make thumbs of document builder draggable (or not) documentbuilder.thumbs.draggable true Boolean Enable document builder at startup documentbuilder.activateOnStartup false Boolean Hide document navigator documentbuilder.hideDocumentNavigator false Boolean Width (in pixel) documentbuilder.width 280 Integer Save action documentbuilder./p>p>General Description Parameter Key Default value Type Enable\/disable this component documentbuilder.enabled false Boolean Hide\/Show the document builder button documentbuilder.button.visible true Boolean Make thumbs of document builder draggable (or not) documentbuilder.thumbs.draggable true Boolean Enable document builder at startup documentbuilder.activateOnStartup false Boolean Hide document navigator documentbuilder.hideDocumentNavigator false Boolean Width (in pixel) documentbuilder.width 280 Integer Save action documentbuilder.save.action save String Save behavior (UPDATE_NO_DOCUMENT, CREATE_NEW_FIRST_DOCUMENT, UPDATE_FIRST_DOCUMENT, UPDATE_ALL_DOCUMENT) documentbuilder.save.behavior UPDATE_NO_DOCUMENT String Download created document after save. documentbuilder.save.download true Boolean Clear the created document after save. Otherwise, the document is frozen (since 2.2.1) documentbuilder.save.delete false Boolean Display warning popups when documents are dirty documentbuilder.displaySaveWarning true Boolean Create child document (folders) documentbuilder.addChild.enabled false Boolean Create new document (not only compose) documentbuilder.createDocument.enabled true Boolean Delete on right click a list of selected thumbs documentbuilder.deleteSelectedThumbs.enabled true Boolean Create a new document from selected thumbs documentbuilder.createDocumentFromSelectedThumbs.enabled true Boolean Close the builder documentbuilder.close.enabled true Boolean Display the legacy save document builder button documentbuilder.button.legacySave.enabled false Boolean Display the button : download the builder document locally documentbuilder.button.download.enabled true Boolean Display the button : run custom action on builder document documentbuilder.button.custom.enabled false Boolean Display the button : download the builder document with annotation documentbuilder.button.download.annotations.enabled false Boolean Display the button : update all documents documentbuilder.button.updateAll.enabled false Boolean Display the button : Create new first document documentbuilder.button.createFirst.enabled false Boolean Display the button : Update the document documentbuilder.button.updateFirst.enabled false Boolean Display the saveAll button, even if documents are empty documentbuilder.button.saveAll.active.when.empty false Boolean Display the updateAll button, even if documents are empty documentbuilder.button.updateAll.active.when.empty false Boolean Sets up the policy to populate the document builder (CopyCurrentDocument or EmptyDocument) documentbuilder.populatorPolicy CopyCurrentDocument String Sets up the policy CopyCurrentDocument from the builder : need to flatten the documents indentation or not documentbuilder.populatorPolicy.CopyCurrentDocument.flattenNodeHierarchy true Boolean Hides the document builder button until all documents have been loaded documentbuilder.button.hideUntilLoaded true Boolean Thumb navigator view behavior after processing a download in document builder documentbuilder.afterDownload hide String Display the button : Refresh the document to its original state documentbuilder.button.refresh.enabled true Boolean Enable local download button in the document builder contextual menu documentbuilder.contextual.menu.download.enabled false Boolean Enable annotation download button in the document builder contextual menu documentbuilder.contextual.menu.download.annotations.enabled false Boolean Enable create first document button in the document builder contextual menu documentbuilder.contextual.menu.createFirst.enabled false Boolean Enable update first document button in the document builder contextual menu documentbuilder.contextual.menu.updateFirst.enabled false Boolean Enable delete document button in the document builder contextual menu documentbuilder.contextual.menu.delete.enabled false Boolean /p>p>configuration/p>p>document builder/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/documentbuilder\/ }, { value: Document builder, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/documentbuilder-js-api\/, label: p>Interacting with the documentBuilder Object: getARenderJS().getDocumentBuilder() Function Description close() Closes the document builder open() Open the document builder reset() Resets the document builder content Register to the documentBuilder save event Object: getARenderJS().getDocumentBuilder()\n Function Description Arguments registerNotifyAlterDocumentContentEvent(callback) Trigger a callback function when a built document is saved callback: the callback function to call registerSubmitAlterDocumentContentEvent(callback) Trigger a callback function when a document creation is submitted callback: the callback function to call getSubmittedAlterDocumentContentDescription(obj) Retrieve content description of altered document obj: the source SubmitAlterDocumentContentEvent object getDocumentMetadata(desc,index) Extract the DocumentMetadata object from the source AlterContentDescription desc: AlterContentDescription/p>p>Interacting with the documentBuilder Object: getARenderJS().getDocumentBuilder() Function Description close() Closes the document builder open() Open the document builder reset() Resets the document builder content Register to the documentBuilder save event Object: getARenderJS().getDocumentBuilder()\n Function Description Arguments registerNotifyAlterDocumentContentEvent(callback) Trigger a callback function when a built document is saved callback: the callback function to call registerSubmitAlterDocumentContentEvent(callback) Trigger a callback function when a document creation is submitted callback: the callback function to call getSubmittedAlterDocumentContentDescription(obj) Retrieve content description of altered document obj: the source SubmitAlterDocumentContentEvent object getDocumentMetadata(desc,index) Extract the DocumentMetadata object from the source AlterContentDescription desc: AlterContentDescription\nindex: index of the document to fetch documentMetadata from\n getResultDocumentId(obj) Fetch resulting DocumentId obj: the event that was sent when the altercontent operation has been done Object: getARenderJS().getDocumentMetadata()\n Function Description Arguments addDocumentMetadata(metadata, key, value) Add a metadata to a documentMetadata object metadata: Metadata to modify\nkey: String that is the key of the metadata\nvalue: String that is the value of the metadata\n scripts\/example.js function arenderjs_init(arenderjs_) { arenderjs_.getDocumentBuilder() .registerSubmitAlterDocumentContentEvent(function(obj){ armt_onSubmitAlterDocumentContentEvent(arenderjs_,obj); }); arenderjs_.getDocumentBuilder() .registerNotifyAlterDocumentContentEvent(function(obj){ armt_onNotifyAlterDocumentContentEvent(arenderjs_,obj); }); } function armt_onSubmitAlterDocumentContentEvent(arenderjs_,obj) { var desc arenderjs_.getDocumentBuilder() .getSubmittedAlterDocumentContentDescription(obj); var meta arenderjs_.getDocumentBuilder() .getDocumentMetadata(desc, 0); arenderjs_.getDocumentMetadata().addDocumentMetadata(meta, \u0026#34;name\u0026#34;, \u0026#34;value\u0026#34;); } function armt_onNotifyAlterDocumentContentEvent(arenderjs_,obj) { console.log(\u0026#34;Notify: \u0026#34; \u002b obj); var docId arenderjs_.getDocumentBuilder().getResultDocumentId(obj); console.log(\u0026#34;Notify: \u0026#34; \u002b docId); console.log(\u0026#34;Notify: docId \u0026#34; \u002b docId); } Custom document builder layout Object: getARenderJS().getDocumentBuilder() Function Description Arguments registerDocumentBuilderOpeningEvent(callback) Trigger a callback function when a built document is opened callback: the callback function to call registerDocumentBuilderSaveCustomEvent(callback) Trigger a callback function when a custom document is saved callback: the callback function to call createCustomDocument(builderLayout, optionsList) Create a custom document in the document builder builderLayout: the json format of the custom layout, optionsList: the json format of wanted types options to set in the datalist scripts\/example.js function arenderjs_init(arenderjs_) { \/** * Build the custom document builder in ARender *\/ arenderjs_.getDocumentBuilder().registerDocumentBuilderOpeningEvent(function () { let jsonDocumentBuilderLayout getCustomLayout(); \/\/ Retrieve the json format of the custom document builder layout let jsonCustomOptionsList getOptions(); \/\/ Retrieve the json format of the custom options set in the data list arenderjs_.getDocumentBuilder().createCustomDocument(jsonDocumentBuilderLayout, jsonCustomOptionsList); \/\/ Call the createCustomDocument function to build the custom document builder in ARender }); \/** * Retrieve and log the json format of the custom document builder created in ARender *\/ arenderjs_.getDocumentBuilder().registerDocumentBuilderSaveCustomEvent(function (customJsonDocumentBuilderTypeInfo) { console.info(\u0026#34;customJsonDocumentBuilderTypeInfo :\\n\u0026#34; \u002b customJsonDocumentBuilderTypeInfo); }); } /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/documentbuilder-js-api\/ }, { value: Document builder, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/documentbuilder\/, label: p>General Key: documentbuilder Description Parameter Key Type Enable\/disable this component enabled Boolean Hide\/Show the document builder button button.visible Boolean Make thumbs of document builder draggable (or not) thumbs.draggable Boolean Enable document builder at startup activateOnStartup Boolean Hide document navigator hideDocumentNavigator Boolean Width (in pixel) width Integer Save behavior save.behavior String Download created document after save./p>p>General Key: documentbuilder Description Parameter Key Type Enable\/disable this component enabled Boolean Hide\/Show the document builder button button.visible Boolean Make thumbs of document builder draggable (or not) thumbs.draggable Boolean Enable document builder at startup activateOnStartup Boolean Hide document navigator hideDocumentNavigator Boolean Width (in pixel) width Integer Save behavior save.behavior String Download created document after save. save.download Boolean Clear the created document after save. Otherwise, the document is frozen (since 2.2.1) save.delete Boolean Display warning popups when documents are dirty displaySaveWarning Boolean Enable local download button in the document builder contextual menu contextual.menu.download.enabled Boolean Enable annotation download button in the document builder contextual menu contextual.menu.download.annotations.enabled Boolean Enable create first document button in the document builder contextual menu contextual.menu.createFirst.enabled Boolean Enable update first document button in the document builder contextual menu contextual.menu.updateFirst.enabled Boolean Enable delete document button in the document builder contextual menu contextual.menu.delete.enabled Boolean arender.properties # Enable DocumentBuilder. The saved document will be created into # document referential, then frozen if the save is successful. documentbuilder.enabledtrue documentbuilder.save.behaviorCREATE_NEW_FIRST_DOCUMENT documentbuilder.save.deletefalse /p>p>configuration/p>p>document builder/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/documentbuilder\/ }, { value: Document comparison, path: https:\/\/docs.arender.io\/features\/documentcompare\/, label: p>Compare two documents Image comparison feature The image comparison is a feature available from version 4.4.0 Manual processing To do a comparison between two documents, right click on a document\u0026rsquo;s thumb in the navigation panel and select Open as new and compare or Open as new and compare images if both documents are images.\nCase of textual documents The chosen document opens next to the current one, then the comparison results are displayed./p>p>Compare two documents Image comparison feature The image comparison is a feature available from version 4.4.0 Manual processing To do a comparison between two documents, right click on a document\u0026rsquo;s thumb in the navigation panel and select Open as new and compare or Open as new and compare images if both documents are images.\nCase of textual documents The chosen document opens next to the current one, then the comparison results are displayed.\nCase of image documents The chosen document opens next to the current one, then the comparison result is displayed as a new image.\nAutomatic comparison on start up To automatically start the comparison after the application loading, use the following parameter:\nvisualization.multiView.doComparisontrue The comparison will only be triggered if at least two documents are loaded.\nThe first document of these will be opened on the left and the second one on the right.\nIf both documents are images, then the image comparison will be triggered.\nClose comparison mode To go back to the simple view mode, click on the red cross in the upper right corner of the document to close. It is also possible to close the comparison mode by right clicking on a document and select Close multiView. Parse comparison results Each difference type between two documents corresponds to a specific color:\n Color Meaning Green Added line Red Removed line Grey Modified line Orange Modified text on a specific line Browse results Navigate through results Clicking on the Next result or Previous result button will redirect to the closest one, regardless of the document.\nSynchronized scroll between documents The synchronized scroll function is enabled by default when a comparison is done. It can be disabled using the corresponding button in the top panel.\nResult\u0026rsquo;s match Clicking on a specific result redirects to the matching line on the other document.\nComparison mode\u0026rsquo;s specifications The multi-view mode comes with the concept of current document which is defined has the last document hovered.\nThis document is used for most of functionalities: Annotations, Download, Printing, Text searching, Page rotation, \u0026hellip;\n Document changing using navigation panel\u0026rsquo;s thumbs is disabled.\nOnly thumbs corresponding to documents currently opened in comparison mode allow to jump to the selected page on it.\n How define the focus of document by click To define the focus of the document by click use the parameter:\nvisualization.multiView.focusOnClicktrue The image comparison result After launching image comparison, a new view is displayed where you can see the both images compared, a configuration box in which you can modify the \u0026ldquo;fuzz\u0026rdquo;, \u0026ldquo;highlight color\u0026rdquo; and \u0026ldquo;lowlight color\u0026rdquo; values, and the image result.\nThe image comparison is based on mathematical calculations influenced by the value of the \u0026ldquo;fuzz\u0026rdquo;. A greater \u0026ldquo;fuzz\u0026rdquo; value means a less accurate pixel comparison calculation.\nThe default fuzz value is 3, and is configurable with the following property:\nconfigurations\/arender-custom-client.properties # Setup the default image comparison tolerance value. Value between 0 and 100. Value in percentage. visualization.image.comparison.default.fuzz3 By default, the differences are the red zones (highlight color) and the pixels that are not considered different are colorless (lowlight color).\nThe default colors are configurable with the following properties :\nconfigurations\/arender-custom-client.properties # Setup the default image comparison highlight color. Highlight for the pixels difference visualization.image.comparison.default.highlight.color#FF0000 # Setup the default image comparison lowlight color. Lowlight for the common pixels visualization.image.comparison.default.lowlight.colornone Download documents with comparison results With UI Once the comparison is done, a download button is available to download the two documents side by side with their comparison results on it.\nWith servlet Example of URL allowing the servlet to be used to perform a comparison and then download the side-by-side documents with their comparison results on it.\nExample http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/downloadServlet\/mergedWithCompareResult?left\u0026lt;document_id_left\u0026gt;\u0026amp;right\u0026lt;document_id_right\u0026gt; Allow document switching with vertical scrolling By default, it is not possible to switch documents with a vertical scroll during a document comparison. It is possible to change this behavior and allow document switching with vertical scrolling with the following configuration :\narender.properties # Allow the vertical scrolling to change document while in multiview visualization.multiView.allow.scroll.document.changetrue /p>, url: https:\/\/docs.arender.io\/features\/documentcompare\/ }, { value: Document comparison, path: https:\/\/docs.arender.io\/v4\/feature\/documentcompare\/, label: p>Compare two documents Image comparison feature The image comparison is a feature available from version 4.4.0 Manual processing To do a comparison between two documents, right click on a document\u0026rsquo;s thumb in the navigation panel and select Open as new and compare or Open as new and compare images if both documents are images.\nCase of textual documents The chosen document opens next to the current one, then the comparison results are displayed./p>p>Compare two documents Image comparison feature The image comparison is a feature available from version 4.4.0 Manual processing To do a comparison between two documents, right click on a document\u0026rsquo;s thumb in the navigation panel and select Open as new and compare or Open as new and compare images if both documents are images.\nCase of textual documents The chosen document opens next to the current one, then the comparison results are displayed.\nCase of image documents The chosen document opens next to the current one, then the comparison result is displayed as a new image.\nAutomatic comparison on start up To automatically start the comparison after the application loading, use the following parameter:\nvisualization.multiView.doComparisontrue The comparison will only be triggered if at least two documents are loaded.\nThe first document of these will be opened on the left and the second one on the right.\nIf both documents are images, then the image comparison will be triggered.\nClose comparison mode To go back to the simple view mode, click on the red cross in the upper right corner of the document to close. It is also possible to close the comparison mode by right clicking on a document and select Close multiView. Parse comparison results Each difference type between two documents corresponds to a specific color:\n Color Meaning Green Added line Red Removed line Grey Modified line Orange Modified text on a specific line Browse results Navigate through results Clicking on the Next result or Previous result button will redirect to the closest one, regardless of the document.\nSynchronized scroll between documents The synchronized scroll function is enabled by default when a comparison is done. It can be disabled using the corresponding button in the top panel.\nResult\u0026rsquo;s match Clicking on a specific result redirects to the matching line on the other document.\nComparison mode\u0026rsquo;s specifications The multi-view mode comes with the concept of current document which is defined has the last document hovered.\nThis document is used for most of functionalities: Annotations, Download, Printing, Text searching, Page rotation, \u0026hellip;\n Document changing using navigation panel\u0026rsquo;s thumbs is disabled.\nOnly thumbs corresponding to documents currently opened in comparison mode allow to jump to the selected page on it.\n How define the focus of document by click To define the focus of the document by click use the parameter:\nvisualization.multiView.focusOnClicktrue The image comparison result After launching image comparison, a new view is displayed where you can see the both images compared, a configuration box in which you can modifiate the \u0026ldquo;fuzz\u0026rdquo;, \u0026ldquo;highlight color\u0026rdquo; and \u0026ldquo;lowlight color\u0026rdquo; values, and the image result.\nThe image comparison is based on mathematical calculations influenced by the value of the \u0026ldquo;fuzz\u0026rdquo;. A greater \u0026ldquo;fuzz\u0026rdquo; value means a less accurate pixel comparison calculation.\nThe default fuzz value is 3, and is configurable with the following property:\narender.properties # Setup the default image comparison tolerance value. Value between 0 and 100. Value in percentage. visualization.image.comparison.default.fuzz3 By default, the differences are the red zones (highlight color) and the pixels that are not considered different are colorless (lowlight color).\nThe default colors are configurable with the following properties :\narender.properties # Setup the default image comparison highlight color. Highlight for the pixels difference visualization.image.comparison.default.highlight.color#FF0000 # Setup the default image comparison lowlight color. Lowlight for the common pixels visualization.image.comparison.default.lowlight.colornone Download documents with comparison results With UI Once the comparison is done, a download button is available to download the two documents side by side with their comparison results on it.\nWith servlet Example of URL allowing the servlet to be used to perform a comparison and then download the side-by-side documents with their comparison results on it.\nExample http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/downloadServlet\/mergedWithCompareResult?left\u0026lt;document_id_left\u0026gt;\u0026amp;right\u0026lt;document_id_right\u0026gt; Allow document switching with vertical scrolling By default, it is not possible to switch documents with a vertical scroll during a document comparison.\nIt is possible to change this behavior and allow document switching with vertical scrolling with the following configuration :\narender.properties # Allow the vertical scrolling to change document while in multiview visualization.multiView.allow.scroll.document.changetrue /p>, url: https:\/\/docs.arender.io\/v4\/feature\/documentcompare\/ }, { value: Document download, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/download-js-api\/, label: p>Download documents Object: getARenderJS().getDownloadDocumentJSAPI() Function Description askDownloadDocumentPDF() Download the current document in PDF askDownloadDocumentSource() Download the current document in source format askDownloadAllDocuments() Download a single PDF with all opened documents /p>p>Download documents Object: getARenderJS().getDownloadDocumentJSAPI() Function Description askDownloadDocumentPDF() Download the current document in PDF askDownloadDocumentSource() Download the current document in source format askDownloadAllDocuments() Download a single PDF with all opened documents /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/download-js-api\/ }, { value: Document download, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/download-js-api\/, label: p>Download documents Object: getARenderJS().getDownloadDocumentJSAPI() Function Description askDownloadDocumentPDF() Download the current document in PDF askDownloadDocumentSource() Download the current document in source format askDownloadAllDocuments() Download a single PDF with all opened documents /p>p>Download documents Object: getARenderJS().getDownloadDocumentJSAPI() Function Description askDownloadDocumentPDF() Download the current document in PDF askDownloadDocumentSource() Download the current document in source format askDownloadAllDocuments() Download a single PDF with all opened documents /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/download-js-api\/ }, { value: Document Layout, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/document-layout\/, label: p>Retrieve the Document Layout Object: getARenderJS().getDocumentLayout() Function Description Arguments getDocumentLayout(documentId, layoutCallback, errorCallback) Fetch the document layout of the specified document id documentId: ID of the document\nlayoutCallback: The callback function called when the document layout is retrieved\nerroCallback: The callback function called when an error occurs during the retrieval of the document layout\n /p>p>Retrieve the Document Layout Object: getARenderJS().getDocumentLayout() Function Description Arguments getDocumentLayout(documentId, layoutCallback, errorCallback) Fetch the document layout of the specified document id documentId: ID of the document\nlayoutCallback: The callback function called when the document layout is retrieved\nerroCallback: The callback function called when an error occurs during the retrieval of the document layout\n /p>p>documentlayout/p>p>js/p>p>javascript/p>p>layout/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/document-layout\/ }, { value: Document layout, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/get-layout\/, label: p>Retrieve document layout Object: getARenderJS().getDocumentLayout() Function Description Arguments getDocumentLayout(documentId, handler, errorHandler) Retrieve a flattened document layout documentId: the document id\nhandler: the callback function to call when the layout is resolved\nerrorHandler: the callback function to call when an error occurs\n getShallowDocumentLayout(documentId, handler, errorHandler) Retrieve a document layout. If the layout is a container then the children have only the document id as information./p>p>Retrieve document layout Object: getARenderJS().getDocumentLayout() Function Description Arguments getDocumentLayout(documentId, handler, errorHandler) Retrieve a flattened document layout documentId: the document id\nhandler: the callback function to call when the layout is resolved\nerrorHandler: the callback function to call when an error occurs\n getShallowDocumentLayout(documentId, handler, errorHandler) Retrieve a document layout. If the layout is a container then the children have only the document id as information. documentId: the document id\nhandler: the callback function to call when the layout is resolved\nerrorHandler: the callback function to call when an error occurs\n \/\/ Retrieve a document layout getARenderJS().getDocumentLayout().getShallowDocumentLayout(getARenderJS().getMasterDocumentId(), function(layout) { \/\/ Check if layout is a document container if (layout.isDocumentContainer()) { var children layout.getChildren(); for (var i0; i\u0026lt;children.length; i\u002b\u002b) { var child childreni; \/\/ Print child document ID console.info(\u0026#34;child id \u0026#34; \u002b child.getDocumentId()); } } }); /p>p>document/p>p>layout/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/get-layout\/ }, { value: Document layout, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/document-layout\/, label: p>A document layout describe the structure of a document.\nA new servlet is deployed to display a Json file corresponding to the structure of a document.\nRequest This functionality is accessible via the servlet: documentLayout\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/documentLayout?uuiddoc1UUID\u0026#39; Servlet Response The browser displays the document structure in Json language.\nHere an example of a Json file:\n{ \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.client.api.document.DocumentPageLayout\u0026#34;, \u0026#34;documentId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;doc1UUID\u0026#34; }, \u0026#34;documentTitle\u0026#34;: \u0026#34;title./p>p>A document layout describe the structure of a document.\nA new servlet is deployed to display a Json file corresponding to the structure of a document.\nRequest This functionality is accessible via the servlet: documentLayout\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/documentLayout?uuiddoc1UUID\u0026#39; Servlet Response The browser displays the document structure in Json language.\nHere an example of a Json file:\n{ \u0026#34;type\u0026#34;: \u0026#34;com.arondor.viewer.client.api.document.DocumentPageLayout\u0026#34;, \u0026#34;documentId\u0026#34;: { \u0026#34;id\u0026#34;: \u0026#34;doc1UUID\u0026#34; }, \u0026#34;documentTitle\u0026#34;: \u0026#34;title.pdf\u0026#34;, \u0026#34;mimeType\u0026#34;: \u0026#34;application\/pdf\u0026#34;, \u0026#34;pageDimensionsList\u0026#34;: { \u0026#34;width\u0026#34;: 720.0, \u0026#34;height\u0026#34;: 405.0, \u0026#34;rotation\u0026#34;: 0, \u0026#34;dpi\u0026#34;: 0, \u0026#34;pageLayers\u0026#34;: null }, { \u0026#34;width\u0026#34;: 720.0, \u0026#34;height\u0026#34;: 405.0, \u0026#34;rotation\u0026#34;: 0, \u0026#34;dpi\u0026#34;: 0, \u0026#34;pageLayers\u0026#34;: null }, { \u0026#34;width\u0026#34;: 720.0, \u0026#34;height\u0026#34;: 405.0, \u0026#34;rotation\u0026#34;: 0, \u0026#34;dpi\u0026#34;: 0, \u0026#34;pageLayers\u0026#34;: null }, } /p>p>tutorial/p>p>document/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/document-layout\/ }, { value: Document navigator, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/explorer\/, label: p>General By default, the document navigator is opened on the thumb explorer. The user can browse between panels by clicking on the corresponding icon. He can close the panel by clicking on the icon corresponding to the opened panel.\n Description Parameter Key Default value Type Width of document navigator (in pixels) documentnavigator.width 320 Integer Width of search navigator (in pixels) documentnavigator.search.width 400 Integer Width of annotations navigator (in pixels) documentnavigator./p>p>General By default, the document navigator is opened on the thumb explorer. The user can browse between panels by clicking on the corresponding icon. He can close the panel by clicking on the icon corresponding to the opened panel.\n Description Parameter Key Default value Type Width of document navigator (in pixels) documentnavigator.width 320 Integer Width of search navigator (in pixels) documentnavigator.search.width 400 Integer Width of annotations navigator (in pixels) documentnavigator.annotation.width 400 Integer Time before splitter ears disappear (Deprecated in v.4.7.0, in ms) documentnavigator.ears.hideTimerDelay 100 Integer Position of the splitter on opening (Default, Reduced, Expanded) documentnavigator.initialWidth Default String Sets up the ratio to be applied to the document navigator documentnavigator.expand.reduce.ratio 70 Integer Thumb explorer The table below lists the general configuration of the explorer allowing to browse into documents through thumbs.\n Description Parameter Key Default value Type Enable\/disable the explorer thumbexplorer.enabled true Boolean Indentation between a master document and its children (in pixels) thumbexplorer.indentation 20 Integer Depth level of documents to load thumbexplorer.maxLevelToLoad 10 Integer Enable\/disable metadata display thumbexplorer.metadata true Boolean Allows thumbnails titles to have HTML content thumbexplorer.title.allowHTML false Boolean Thumbnails will display a popup information with document metadata (in ms) thumbexplorer.layout.loading.delay 5 Integer Allows to create an URL anchor to a page from the thumbnails thumbexplorer.contextualMenu.createPageAnchor true Boolean The table below enumerates specific configuration related to thumbs.\n Description Parameter Key Default value Type Default width of the thumbs (in pixels) thumbexplorer.thumb.width 100 Integer Margin between each thumb (in pixels) thumbexplorer.thumb.margin 5 Integer Explorer width from which thumbs are expanded (in pixels) thumbexplorer.thumb.grow.min 300 Integer Increment of thumb expanding (in pixels) thumbexplorer.thumb.grow.increment 10 Integer Sets up the growth ratio corresponding to the growth of the panel thumbexplorer.thumb.grow.ratio 1 Integer Comment explorer Description Property key Default value Type Enable\/Disable this explorer annotation.comment.explorer.enabled true Boolean Possibility to display annotations in minimized format annotation.comment.explorer.inline.enabled false Boolean Display annotations in minimized format when annotation explorer is opened annotation.comment.explorer.show.annotation.minimized.on.open false Boolean Sets up the comment explorer on the east side of ARender annotation.comment.explorer.eastSide.enabled false Boolean Opens the comment explorer when an annotation is edited annotation.comment.explorer.openOnEdit false Boolean Animate while expanding the comment explorer annotation.comment.explorer.animate.on.expand true Boolean Shows a simplified list of all authors on the comment explorer tab annotation.comment.explorer.showAllAnnotators true Boolean Shows a total number of annotations on the comment explorer tab annotation.comment.explorer.showTotalAnnotationsNumber false Boolean Shows the comment explorer at startup of ARender as default panel annotation.comment.explorer.showAtStartup false Boolean Enable\/Disable to also filter annotations in the page view annotation.comment.explorer.filterPageAnnotations false Boolean Set the sorting in increment otherwise in decrement date annotation.comment.explorer.sortByIncrementDate true Boolean Allow the display of the date or not annotation.comment.explorer.show.date true Boolean Display only the initials of the creator name annotation.comment.explorer.creator.name.initial.only false Boolean Enable to display only one annotation per page annotation.comment.explorer.show.one.annotation.only false Boolean Display target icon when annotation is other than numbered sticky note, otherwise the annotation type icon annotation.comment.display.target.enabled false Boolean Enable to enter in edition mode when clicking on a comment zone comment.edit.annotation.onselection.enabled true Boolean Bookmark explorer Description Parameter Key Default value Type Enable\/Disable this explorer bookmarkexplorer.enabled true Boolean Show the bookmark explorer at the application startup bookmarkexplorer.showAtStartup false Boolean Make the bookmarks draggable bookmarkexplorer.draggable true Boolean Enable\/Disable the bookmark creation bookmarkexplorer.add.bookmark.enabled true Boolean Enable\/Disable the bookmark deletion bookmarkexplorer.delete.bookmark.enabled true Boolean Enable\/Disable the bookmark animation bookmarkexplorer.animation.enabled true Boolean Advanced search explorer Description Parameter Key Default value Type Enable\/Disable this explorer advanced.searchexplorer.enabled true Boolean Sets up the minimum character length allowed advanced.searchexplorer.min.characterLength 0 Integer Sets up the maximum character length allowed advanced.searchexplorer.max.characterLength 255 Integer Search is updated on annotation refresh when the advanced search explorer is active advanced.searchexplorer.updates.enabled false Boolean The button for search and highlight is enabled advanced.searchexplorer.search.highlight.enabled true Boolean Hyperlink explorer Description Parameter Key Default value Type Enable\/Disable this explorer hyperlinkexplorer.enabled true Boolean Redact explorer Description Parameter Key Default value Type Enable\/Disable this explorer redactexplorer.enabled false Boolean Activate the redact annotation button redactexplorer.redact true Boolean Activate the redact annotation zone button redactexplorer.redactZone true Boolean /p>p>configuration/p>p>document navigator/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/explorer\/ }, { value: Document navigator, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/explorer\/, label: p>General By default, the document navigator is opened on the thumb explorer. The user can browse between panels by clicking on the corresponding icon. He can close the panel by clicking on the icon corresponding to the opened panel.\n Key: documentnavigator Description Parameter Key Type Width of document navigator width Pixels Time before splitter ears disappear (Depreacted in v.4.7.0) ears./p>p>General By default, the document navigator is opened on the thumb explorer. The user can browse between panels by clicking on the corresponding icon. He can close the panel by clicking on the icon corresponding to the opened panel.\n Key: documentnavigator Description Parameter Key Type Width of document navigator width Pixels Time before splitter ears disappear (Depreacted in v.4.7.0) ears.hideTimerDelay Milliseconds Position of the splitter on opening initialWidth Enum Default: default position\nReduced: hidden\nExpanded: at 70% of window width\n Thumb explorer The table below lists the general configuration of the explorer allowing to browse into documents through thumbs.\n Key: thumbexplorer Description Parameter Key Type Enable\/disable the explorer enabled Boolean Indentation between a master document and its children indentation Pixels Depth level of documents to load maxLevelToLoad Integer Enable\/disable metadata display metadata Boolean arender.properties # Disable the thumb explorer thumbexplorer.enabledfalse The table below enumerates specific configuration related to thumbs.\n Key: thumbexplorer.thumb Description Parameter Key Type Default width of the thumbs width Pixels Margin between each thumb margin Pixels Explorer width from which thumbs are expanded grow.min Pixels Increment of thumb expanding grow.increment Pixels NA grow.ratio Integer arender.properties # Define an explorer whose thumbs are expanded when it is maximized by a user thumbexplorer.thumb.width100 thumbexplorer.thumb.margin200 thumbexplorer.thumb.increment10 Legacy annotation explorer Key: annotationexplorer Description Property key Type Enable\/Disable this explorer enabled Boolean Display Sticky note answer showStickyNoteReplies Boolean Display Sticky note label before content showStickyNoteLabel Boolean Adapt explorer size to fit to the annotation table adaptiveWidth.enabled Boolean arender.properties annotationexplorer.enabledfalse annotationExplorer.showStickyNoteRepliesfalse annotationExplorer.showStickyNoteLabeltrue annotationExplorer.adaptativeWidth.enabledfalse Annotation explorer Key: annotation.comment.explorer Description Property key Type Possibility to display annotations in minimized format inline.enabled Boolean Display annotations in minimized format when annotation explorer is opened show.annotation.minimized.on.open Boolean arender.properties annotation.comment.explorer.inline.enabledtrue annotation.comment.explorer.show.annotation.minimized.on.openfalse Bookmark explorer Key: bookmarkexplorer Description Parameter Key Type Enable\/Disable this explorer enabled Boolean arender.properties # Disable the bookmark explorer bookmarkexplorer.enabledfalse /p>p>configuration/p>p>document navigator/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/explorer\/ }, { value: Documentation, path: https:\/\/docs.arender.io\/, label: p>Welcome to ARender Documentation /p>p>Welcome to ARender Documentation /p>, url: https:\/\/docs.arender.io\/ }, { value: Documentation Version 4, path: https:\/\/docs.arender.io\/v4\/, label: p>Welcome to ARender Documentation version 4 /p>p>Welcome to ARender Documentation version 4 /p>, url: https:\/\/docs.arender.io\/v4\/ }, { value: Download a document, path: https:\/\/docs.arender.io\/features\/downloaddocument\/, label: p>Download a file as PDF To download a file, mouse-over on this button to display the file menu:\nIf you have more than one document opened in ARender, the document currently displayed in the right area is downloaded.\nDownload a file with annotations To download a file, mouse-over on this button to display the file menu:\nThen, click on this button:\nIf you have more than one document opened in ARender, the document currently displayed in the right area is downloaded./p>p>Download a file as PDF To download a file, mouse-over on this button to display the file menu:\nIf you have more than one document opened in ARender, the document currently displayed in the right area is downloaded.\nDownload a file with annotations To download a file, mouse-over on this button to display the file menu:\nThen, click on this button:\nIf you have more than one document opened in ARender, the document currently displayed in the right area is downloaded.\nSticky note For the sticky note, it is possible to display the creation date or the last modification date on the downloaded document.\nmodules\\TaskConversion\\application.properties annotation.date.display.creationDatetrue By default, the value is true. The creation date is displayed on the sticky note of the downloaded document. If the value is set to false, the last modification date will be displayed on the sticky note of the downloaded document.\nDownload all files To download all files, mouse-over on this button to display the file menu:\nThen, click on this button:\nThis button is only visible when multiple documents are opened.\n/p>, url: https:\/\/docs.arender.io\/features\/downloaddocument\/ }, { value: Download a document, path: https:\/\/docs.arender.io\/v4\/feature\/downloaddocument\/, label: p>Download a file as PDF To download a file, mouse-over on this button to display the file menu:\nIf you have more than one document opened in ARender, the document currently displayed in the right area is downloaded.\nDownload a file with annotations To download a file, mouse-over on this button to display the file menu:\nThen, click on this button:\nIf you have more than one document opened in ARender, the document currently displayed in the right area is downloaded./p>p>Download a file as PDF To download a file, mouse-over on this button to display the file menu:\nIf you have more than one document opened in ARender, the document currently displayed in the right area is downloaded.\nDownload a file with annotations To download a file, mouse-over on this button to display the file menu:\nThen, click on this button:\nIf you have more than one document opened in ARender, the document currently displayed in the right area is downloaded.\nDownload all files To download all files, mouse-over on this button to display the file menu:\nThen, click on this button:\nThis button is only visible when multiple documents are opened.\n/p>, url: https:\/\/docs.arender.io\/v4\/feature\/downloaddocument\/ }, { value: Download comparison results, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/download-compare-results\/, label: p>A new servlet is deployed allowing to download the results of the comparison of two documents.\nRequest This functionality relies on the use of the servlet: downloadDocumentWithCompareResultsServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/downloadServlet\/mergedWithCompareResult?leftdoc1UUID\u0026amp;rightdoc2UUID\u0026#39; left : the UUID of the first document to compare right : the UUID of the second document to compare Servlet Response A document is downloaded. It corresponds to the results of the comparison between doc1 and doc2./p>p>A new servlet is deployed allowing to download the results of the comparison of two documents.\nRequest This functionality relies on the use of the servlet: downloadDocumentWithCompareResultsServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/downloadServlet\/mergedWithCompareResult?leftdoc1UUID\u0026amp;rightdoc2UUID\u0026#39; left : the UUID of the first document to compare right : the UUID of the second document to compare Servlet Response A document is downloaded. It corresponds to the results of the comparison between doc1 and doc2. In green: the text common to both documents will be highlighted In red: the different text between the two documents will be highlighted\n/p>p>tutorial/p>p>comparison/p>p>Download/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/download-compare-results\/ }, { value: Download documents, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/download-document\/, label: p>A new servlet is deployed to download documents. Documents can be downloaded as source format, PDF or ZIP format.\nRequest This functionality is accessible via the servlet: downloadServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/downloadServlet?uuiddocUUID\u0026amp;sourceIdsource\u0026amp;titleDocumentTitle\u0026amp;typetype\u0026#39; uuid: document id sourceId: initial document id (optional). Useful if the document id is transformed title: title of the downloaded document type: type of download : INITIAL: initial type of document (without annotations) RENDERED: type that cannot be converted (pdf, mp4, tiff) COMPRESSED: zip type Servlet Response The document sent as a parameter is downloaded in the format corresponding to the type parameter./p>p>A new servlet is deployed to download documents. Documents can be downloaded as source format, PDF or ZIP format.\nRequest This functionality is accessible via the servlet: downloadServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/downloadServlet?uuiddocUUID\u0026amp;sourceIdsource\u0026amp;titleDocumentTitle\u0026amp;typetype\u0026#39; uuid: document id sourceId: initial document id (optional). Useful if the document id is transformed title: title of the downloaded document type: type of download : INITIAL: initial type of document (without annotations) RENDERED: type that cannot be converted (pdf, mp4, tiff) COMPRESSED: zip type Servlet Response The document sent as a parameter is downloaded in the format corresponding to the type parameter. It will be renamed according to the title parameter.\n/p>p>tutorial/p>p>Download/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/download-document\/ }, { value: Download documents as base64-encoded file, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/download-encode\/, label: p>A new servlet is deployed to download a document encoded in base 64.\nRequest This functionality is accessible via the servlet: downloadBase64EncodedDocument\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/downloadBase64EncodedDocument\u0026#39; Servlet Response A document is downloaded. This document is encoded in base 64. It is not possible to open it if it has not been decoded./p>p>A new servlet is deployed to download a document encoded in base 64.\nRequest This functionality is accessible via the servlet: downloadBase64EncodedDocument\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/downloadBase64EncodedDocument\u0026#39; Servlet Response A document is downloaded. This document is encoded in base 64. It is not possible to open it if it has not been decoded.\n/p>p>tutorial/p>p>Download/p>p>encoded/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/download-encode\/ }, { value: Download documents with annotations, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/download-with-annotation\/, label: p>A new servlet is deployed to download a PDF document with annotations.\nRequest This functionality is accessible via the servlet: downloadDocumentWithAnnotations\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/downloadDocumentWithAnnotations?operationNamerenderAnnotations\u0026#39; The operationName parameter can take several values:\n renderAnnotations: the final document will be a PDF with annotations applied on the PDF renderFDFAnnotations: the final document will be a PDF with annotations created on the PDF. The annotations are editable. Servlet Response A document is downloaded in PDF format with annotations./p>p>A new servlet is deployed to download a PDF document with annotations.\nRequest This functionality is accessible via the servlet: downloadDocumentWithAnnotations\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/downloadDocumentWithAnnotations?operationNamerenderAnnotations\u0026#39; The operationName parameter can take several values:\n renderAnnotations: the final document will be a PDF with annotations applied on the PDF renderFDFAnnotations: the final document will be a PDF with annotations created on the PDF. The annotations are editable. Servlet Response A document is downloaded in PDF format with annotations.\n/p>p>tutorial/p>p>Download/p>p>annotation/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/download-with-annotation\/ }, { value: Download the CSV of the annotations, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/csv-annotation\/, label: p>A new servlet is deployed to download the CSV file of the annotations of a document.\nRequest This functionality is accessible via the servlet: servletCSVAnnotations\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/servletCSVAnnotations?uuiddocUUID\u0026#39; Servlet Response The CSV file of document annotations given as parameter is downloaded./p>p>A new servlet is deployed to download the CSV file of the annotations of a document.\nRequest This functionality is accessible via the servlet: servletCSVAnnotations\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/servletCSVAnnotations?uuiddocUUID\u0026#39; Servlet Response The CSV file of document annotations given as parameter is downloaded.\n/p>p>tutorial/p>p>download/p>p>csv/p>p>annotation/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/csv-annotation\/ }, { value: ELK stack configuration, path: https:\/\/docs.arender.io\/learn\/how-to\/arender-elk\/, label: p>Introduction Analyse ARender performances in ELK stack.\nARender returns statistics on its usage, like the loading time of a document and the opened document type. Information is stored in log files. It is possible to analyse these logs with the ELK stack.\nYou need to use following applications from the ELK stack : Elastisearch and Kibana :\n Elasticsearch : stores and indexes data. It is a NoSQL base allowing to manage big data./p>p>Introduction Analyse ARender performances in ELK stack.\nARender returns statistics on its usage, like the loading time of a document and the opened document type. Information is stored in log files. It is possible to analyse these logs with the ELK stack.\nYou need to use following applications from the ELK stack : Elastisearch and Kibana :\n Elasticsearch : stores and indexes data. It is a NoSQL base allowing to manage big data. Kibana : is a Web interface allowing to search and visualize graphical data. In Kibana data are shown in a graphical user friendly way. Graphics creation is simple and there are lots of customization possible.\nSee below examples :\n Average document loading time : MIME Type distribution : Prerequisites To import visualizations and dashboards with .ndjson files Kibana version 7.2.0 and above ElasticSearch version 7.2.0 and above To import visualizations and dashboards with .json files Kibana version 5.x and above ElasticSearch version 5.x and above Elasticsearch Installation Follow official documentation to install ElasticSearch : https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/reference\/current\/\nStart ElasticSearch Follow official documentation to start ElasticSearch : https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/reference\/current\/starting-elasticsearch.html\nKibana Installation Follow official documentation to install Kibana : https:\/\/www.elastic.co\/guide\/en\/kibana\/current\/install.html\nStart Kibana Follow official documentation to start Kibana : https:\/\/www.elastic.co\/guide\/en\/kibana\/current\/start-stop.html\nKibana configuration prerequisites Before configuring Kibana, you need to open at least one document in ARender in order to have indexes created in Elasticsearch.\nKibana configuration Creation of index pattern Open Kibana in your browser. Local URL : http:\/\/localhost:5601\/app\/kibana\n Go to the Management section : Go to the Index Patterns : Add the 2 indexes :\n arender-performance arender-rendition-performance Import dashboard example Go to Saved Objects : For version allowing .ndjson file import (Since Kibana 7.2.0):\n First import visualization. Click on import and select the file : Arender-visualizations.ndjson Then import dashboard. Click on import and select the file : Arender-dashboard-example.ndjson For version only allowing .json file import :\n First import visualization. Click on import and select the file : Arender-visualizations.json Then import dashboard. Click on import and select the file : Arender-dashboard-example.json Open dashboard :\n /p>p>tutorial/p>p>Elasticsearch/p>p>performance/p>p>Kibana/p>p>ELK/p>p>Reporting/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/arender-elk\/ }, { value: ELK stack configuration, path: https:\/\/docs.arender.io\/v4\/cookbook\/arender-elk\/, label: p>Introduction Analyse ARender performances in ELK stack.\nARender returns statistics on its usage, like the loading time of a document and the opened document type. Information is stored in log files. It is possible to analyse these logs with the ELK stack.\nYou need to use following applications from the ELK stack : Elastisearch and Kibana :\n Elasticsearch : stores and indexes data. It is a NoSQL base allowing to manage big data./p>p>Introduction Analyse ARender performances in ELK stack.\nARender returns statistics on its usage, like the loading time of a document and the opened document type. Information is stored in log files. It is possible to analyse these logs with the ELK stack.\nYou need to use following applications from the ELK stack : Elastisearch and Kibana :\n Elasticsearch : stores and indexes data. It is a NoSQL base allowing to manage big data. Kibana : is a Web interface allowing to search and visualize graphical data. In Kibana data are shown in a graphical user friendly way. Graphics creation is simple and there are lots of customization possible.\nSee below examples :\n Average document loading time : MIME Type distribution : Prerequisites To import visualizations and dashboards with .ndjson files Kibana version 7.2.0 and above ElasticSearch version 7.2.0 and above To import visualizations and dashboards with .json files Kibana version 5.x and above ElasticSearch version 5.x and above Elasticsearch Installation Follow official documentation to install ElasticSearch : https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/reference\/current\/\nStart ElasticSearch Follow official documentation to start ElasticSearch : https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/reference\/current\/starting-elasticsearch.html\nKibana Installation Follow official documentation to install Kibana : https:\/\/www.elastic.co\/guide\/en\/kibana\/current\/install.html\nStart Kibana Follow official documentation to start Kibana : https:\/\/www.elastic.co\/guide\/en\/kibana\/current\/start-stop.html\nKibana configuration prerequisites Before configuring Kibana, you need to open at least one document in ARender in order to have indexes created in Elasticsearch.\nKibana configuration Creation of index pattern Open Kibana in your browser. Local URL : http:\/\/localhost:5601\/app\/kibana\n Go to the Management section : Go to the Index Patterns : Add the 2 indexes :\n arender-performance arender-rendition-performance Import dashboard example Go to Saved Objects : For version allowing .ndjson file import (Since Kibana 7.2.0):\n First import visualization. Click on import and select the file : Arender-visualizations.ndjson Then import dashboard. Click on import and select the file : Arender-dashboard-example.ndjson For version only allowing .json file import :\n First import visualization. Click on import and select the file : Arender-visualizations.json Then import dashboard. Click on import and select the file : Arender-dashboard-example.json Open dashboard :\n /p>p>tutorial/p>p>Elasticsearch/p>p>performance/p>p>Kibana/p>p>ELK/p>p>Reporting/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/arender-elk\/ }, { value: Evict document, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/evict-document\/, label: p>A new servlet is deployed to evict a document from both memory cache and FileSystem cache.\nRequest This functionality is accessible via the servlet: evictDocument\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/evictDocument?uuiddoc1UUID\u0026#39; Servlet Response If the document is evicted, a blank page appears and the server has no longer access to the document./p>p>A new servlet is deployed to evict a document from both memory cache and FileSystem cache.\nRequest This functionality is accessible via the servlet: evictDocument\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/evictDocument?uuiddoc1UUID\u0026#39; Servlet Response If the document is evicted, a blank page appears and the server has no longer access to the document.\n/p>p>tutorial/p>p>document/p>p>evict/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/evict-document\/ }, { value: Features Alfresco Content Services, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/alfresco\/features-acs\/, label: p>Use Alfresco roles and permissions in ARender Introduction Alfresco offers a permission system: a user has a role that determines what he can and cannot do in a specific site. Each role has a default set of permissions. The following sections describe these permissions. In general:\n Managers have full rights to all site content - what they have created themselves and what other site members have created. Collaborators have full rights to the site content that they own; they have rights to edit but not delete content created by other site members./p>p>Use Alfresco roles and permissions in ARender Introduction Alfresco offers a permission system: a user has a role that determines what he can and cannot do in a specific site. Each role has a default set of permissions. The following sections describe these permissions. In general:\n Managers have full rights to all site content - what they have created themselves and what other site members have created. Collaborators have full rights to the site content that they own; they have rights to edit but not delete content created by other site members. Contributors have full rights to the site content that they own; they cannot edit or delete content created by other site members. Consumers have view-only rights in a site : they cannot create their own content. User roles for ARender ARender can take these into account by disabling some functionalities according to the logged user role.\n Managers and Collaborators have all the ARender features. Contributors can only modify and delete their own annotations. They also can’t delete the redact content. Consumers cannot create, modify or delete annotations, use the document builder, create a bookmark or use the redact functionality. To enable the use of Alfresco roles, use the following property :\narender.server.alfresco.use.rolestrue Customization of Alfresco roles Rights for each role can be changed applying configuration on ARender side to customize alfresco roles:\nconfigurations\/arender-custom-server.properties This file contains various ARender rights with properties and are associated with Alfresco roles, by default:\nconfigurations\/arender-custom-server.properties arender.server.alfresco.role.create.annotationSiteManager,SiteCollaborator,SiteContributor arender.server.alfresco.role.modify.annotationSiteManager,SiteCollaborator arender.server.alfresco.role.modify.own.annotationSiteContributor arender.server.alfresco.role.create.redactionSiteManager,SiteCollaborator,SiteContributor arender.server.alfresco.role.delete.redactionSiteManager,SiteCollaborator Property Right arender.server.alfresco.role.create.annotation Allows the creation of annotations arender.server.alfresco.role.modify.annotation Allows the modification of annotations arender.server.alfresco.role.modify.own.annotation Allows modification of own annotations arender.server.alfresco.role.create.redaction Allows the creation of redact content arender.server.alfresco.role.delete.redaction Allows the deletion of redact content These properties can be overridden to, for example, to restrict annotation creation to the manager and contributor roles.\nconfigurations\/arender-custom-server.properties arender.server.alfresco.role.create.annotationSiteManager,SiteContributor To configure the use of the document builder and bookmarks, another file must be configured: role-roles.properties\nFor example, the creation of bookmarks for the role manager can be enabled by adding the following line to the role-sitemanager.properties file:\narender-sitemanager.properties bookmarkexplorer.add.bookmark.enabledtrue Using roles with permissions In Alfresco, specific roles can be assigned for each user or group for individual files or folders from the permissions management.\nIt is possible to find the list of permissions linked to a node from the alfresco API : \/alfresco\/s\/slingshot\/doclib\/permissions\/workspace\/SpacesStore\/node\nTo activate the use of permissions :\narender.server.alfresco.use.permissionstrue When a document is open, all the permissions associated with the current user are retrieved:\n The permissions directly associated with the user. The permissions associated with the groups to which the user belongs. The permissions inherited from the parent folder. The role associated with the site user. To choose the role to apply according to the permissions retrieved, a hierarchical configuration exists:\narender.server.alfresco.role.hierarchySiteManager,SiteCollaborator,SiteContributor,SiteConsumer Roles are written there from highest priority to lowest.\nThe applied role will be the highest role in the list corresponding to the roles of the permissions found.\nIf none of the roles found are matching a role in the arender.server.alfresco.role.hierarchy list, then the lowest role in the list is applied. If the arender.server.alfresco.role.hierarchy list is empty, then a default list is taken into account and has the value :\nSiteManager,SiteCollaborator,SiteContributor,SiteConsumer Annotation Deactivate annotation migration Add the property hereafter if the below conditions are respected:\n There is no ARender annotation in Alfresco, Or, ARender annotations that exists in Alfresco have been created only with versions newer than the 4.0.9 configurations\/arender-custom-server.properties arender.server.alfresco.annotation.migrate.to.new.child.apifalse Document Builder Annotations transfer through the document builder When creating or updating a new document on the document builder, the annotations on the current document can be transferred to the new document. To do this, the arender.server.alfresco.document.builder.transfer.annotations property must be enabled :\nconfigurations\/arender-custom-server.properties arender.server.alfresco.document.builder.transfer.annotationstrue Update all in the document builder By using the document builder, updating all documents is allowed with the property :\nconfigurations\/arender-custom-client.properties documentbuilder.button.updateAll.enabledtrue Several versions of the original document will be created corresponding to the documents made in the document builder. Annotation transfer is possible with this feature.\nNumber of renamed built documents When a user saves a new document using ARender Document Builder, the document title can already exist. In that case, ARender will rename the title with a number. Example: documentName(1).pdf\nThe number of renaming is by default: 5. To change this value add the below property:\nconfigurations\/arender-custom-server.properties arender.server.alfresco.document.builder.number.try.rename.document5 Feed the document view activity By default, the activity of viewing a document in Alfresco is displayed in the My activities board.\nTo have this event with ARender, a property must be set :\nconfigurations\/arender-custom-server.properties arender.preview.activity.feed.enabledtrue Show Alfresco metadata in ARender To enable the display of metadata while hovering the document thumbnail, the arender.server.alfresco.show.metadatas property must be enabled.\nconfigurations\/arender-custom-server.properties arender.server.alfresco.show.metadatastrue To specify which metadata will be displayed in the thumbnail, their names will need to be set in the arender.server.alfresco.included.metadatas property\nThey should match the name of the properties located in the properties field when calling the Alfresco metadata retrieval URL http:\/\/127.0.0.1:8080\/alfresco\/service\/api\/metadata?nodeRefXXX\u0026amp;shortQNames\nMultiple properties can be displayed separated by a comma, so to display the creation date of a document and its version type, the property is :\nconfigurations\/arender-custom-server.properties arender.server.alfresco.included.metadatascm:created,cm:version_type The formatting of the display of creation and modification dates can be changed with the date.format property, by default :\nconfigurations\/arender-custom-server.properties date.formatdd-MM-yyyy HH:mm:ss /p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/alfresco\/features-acs\/ }, { value: Features Alfresco Content Services, path: https:\/\/docs.arender.io\/v4\/connector\/alfresco\/features-acs\/, label: p>Use Alfresco roles and permissions in ARender Introduction Alfresco offers a permission system: a user has a role that determines what he can and cannot do in a specific site. Each role has a default set of permissions. The following sections describe these permissions. In general:\n Managers have full rights to all site content - what they have created themselves and what other site members have created. Collaborators have full rights to the site content that they own; they have rights to edit but not delete content created by other site members./p>p>Use Alfresco roles and permissions in ARender Introduction Alfresco offers a permission system: a user has a role that determines what he can and cannot do in a specific site. Each role has a default set of permissions. The following sections describe these permissions. In general:\n Managers have full rights to all site content - what they have created themselves and what other site members have created. Collaborators have full rights to the site content that they own; they have rights to edit but not delete content created by other site members. Contributors have full rights to the site content that they own; they cannot edit or delete content created by other site members. Consumers have view-only rights in a site : they cannot create their own content. User roles for ARender ARender can take these into account by disabling some functionalities according to the logged user role.\n Managers and Collaborators have all the ARender features. Contributors can only modify and delete their own annotations. They also can’t delete the redact content. Consumers cannot create, modify or delete annotations, use the document builder, create a bookmark or use the redact functionality. To enable the use of Alfresco roles, use the following property :\narender.server.alfresco.use.rolestrue Customization of Alfresco roles Rights for each role can be changed applying configuration on ARender side to customize alfresco roles:\narender-server.properties This file contains various ARender rights with properties and are associated with Alfresco roles, by default:\narender-server.properties arender.server.alfresco.role.create.annotationSiteManager,SiteCollaborator,SiteContributor arender.server.alfresco.role.modify.annotationSiteManager,SiteCollaborator arender.server.alfresco.role.modify.own.annotationSiteContributor arender.server.alfresco.role.create.redactionSiteManager,SiteCollaborator,SiteContributor arender.server.alfresco.role.delete.redactionSiteManager,SiteCollaborator Property Right arender.server.alfresco.role.create.annotation Allows the creation of annotations arender.server.alfresco.role.modify.annotation Allows the modification of annotations arender.server.alfresco.role.modify.own.annotation Allows modification of own annotations arender.server.alfresco.role.create.redaction Allows the creation of redact content arender.server.alfresco.role.delete.redaction Allows the deletion of redact content These properties can be overridden to, for example, to restrict annotation creation to the manager and contributor roles.\narender-server-custom-alfresco.properties arender.server.alfresco.role.create.annotationSiteManager,SiteContributor To configure the use of the document builder and bookmarks, another file must be configured: role-roles.properties\nFor example, the creation of bookmarks for the role manager can be enabled by adding the following line to the role-sitemanager.properties file:\narender-sitemanager.properties bookmarkexplorer.add.bookmark.enabledtrue Using roles with permissions In Alfresco, specific roles can be assigned for each user or group for individual files or folders from the permissions management.\nIt is possible to find the list of permissions linked to a node from the alfresco API : \/alfresco\/s\/slingshot\/doclib\/permissions\/workspace\/SpacesStore\/node\nTo activate the use of permissions :\narender.server.alfresco.use.permissionstrue When a document is open, all the permissions associated with the current user are retrieved:\n The permissions directly associated with the user. The permissions associated with the groups to which the user belongs. The permissions inherited from the parent folder. The role associated with the site user. To choose the role to apply according to the permissions retrieved, a hierarchical configuration exists:\narender.server.alfresco.role.hierarchySiteManager,SiteCollaborator,SiteContributor,SiteConsumer Roles are written there from highest priority to lowest.\nThe applied role will be the highest role in the list corresponding to the roles of the permissions found.\nIf none of the roles found are matching a role in the arender.server.alfresco.role.hierarchy list, then the lowest role in the list is applied. If the arender.server.alfresco.role.hierarchy list is empty, then a default list is taken into account and has the value :\nSiteManager,SiteCollaborator,SiteContributor,SiteConsumer Document Builder Annotations transfer through the document builder When creating or updating a new document on the document builder, the annotations on the current document can be transferred to the new document. To do this, the arender.server.alfresco.document.builder.transfer.annotations property must be enabled :\narender-server-custom-alfresco.properties (Located in WEB-INF\\classes) arender.server.alfresco.document.builder.transfer.annotationstrue Update all in the document builder By using the document builder, updating all documents is allowed with the property :\narender.properties documentbuilder.button.updateAll.enabledtrue Several versions of the original document will be created corresponding to the documents made in the document builder. Annotation transfer is possible with this feature.\nNumber of renamed built documents When a user saves a new document using ARender Document Builder, the document title can already exist. In that case, ARender will rename the title with a number. Example: documentName(1).pdf\nThe number of renaming is by default: 5. To change this value add the below property:\narender-server-custom-alfresco.properties (located in WEB-INF\\classes) arender.server.alfresco.document.builder.number.try.rename.document5 Feed the document view activity By default, the activity of viewing a document in Alfresco is displayed in the My activities board.\nTo have this event with ARender, properties must be set in the ARender configuration files.\narender-server-custom-alfresco.properties arender.preview.activity.feed.enabledtrue arender.properties arenderjs.startupScript scripts\/feedAlfrescoActivity.js Show Alfresco metadata in ARender To enable the display of metadata while hovering the document thumbnail, the arender.server.alfresco.show.metadatas property must be enabled.\narender-server-custom-alfresco.properties arender.server.alfresco.show.metadatastrue To specify which metadata will be displayed in the thumbnail, their names will need to be set in the arender.server.alfresco.included.metadatas property\nThey should match the name of the properties located in the properties field when calling the Alfresco metadata retrieval URL http:\/\/127.0.0.1:8080\/alfresco\/service\/api\/metadata?nodeRefXXX\u0026amp;shortQNames\nMultiple properties can be displayed separated by a comma, so to display the creation date of a document and its version type, the property is :\narender-server-custom-alfresco.properties arender.server.alfresco.included.metadatascm:created,cm:version_type The formatting of the display of creation and modification dates can be changed with the date.format property, by default :\narender-server-custom-alfresco.properties date.formatdd-MM-yyyy HH:mm:ss /p>, url: https:\/\/docs.arender.io\/v4\/connector\/alfresco\/features-acs\/ }, { value: Features Alfresco Share, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/alfresco\/features-share\/, label: p>ARender for specific groups only To set ARender viewer to specific Alfresco groups only, follow the below procedure:\n Go to the module deployment page: \/share\/page\/modules\/deploy Choose the ARender module: ARender Preview Plugin Select the evaluator on the right: group.module.evaluator In the Evaluator Properties : negate :falserelation :ORgroups :\u0026lt;group name\u0026gt;Configure document types to open with ARender To configure which type of document should be opened with ARender (other will be opened by the default viewer configured), add the below configuration:/p>p>ARender for specific groups only To set ARender viewer to specific Alfresco groups only, follow the below procedure:\n Go to the module deployment page: \/share\/page\/modules\/deploy Choose the ARender module: ARender Preview Plugin Select the evaluator on the right: group.module.evaluator In the Evaluator Properties : negate :falserelation :ORgroups :\u0026lt;group name\u0026gt;Configure document types to open with ARender To configure which type of document should be opened with ARender (other will be opened by the default viewer configured), add the below configuration:\nalfresco\/tomcat\/shared\/classes\/alfresco\/web-extension\/share-config-custom.xml \u0026lt;config evaluator\u0026#34;string-compare\u0026#34; condition\u0026#34;ArenderExclusion\u0026#34;\u0026gt; \u0026lt;viewerMimeTypes\u0026gt;{mimeType1},{mimeType2},...,{mimeTypeN}\u0026lt;\/viewerMimeTypes\u0026gt; \u0026lt;!-- exemple : \u0026lt;viewerMimeTypes\u0026gt;\u0026#34;application\/msword,image\/vnd.dwg,image\/x-dwg,image\/x-dwf\u0026lt;\/viewerMimeTypes--\u0026gt; \u0026lt;\/config\u0026gt; Configure document types to convert to PDF using ARender ARender plugin for Alfresco Share can ask a conversion of the Document to PDF, before viewing it.\nIt has the advantage to show the document faster, especially for complex document like AutoCAD.\nConfiguration is done like below:\nalfresco\/tomcat\/shared\/classes\/alfresco\/web-extension\/share-config-custom.xml \u0026lt;config evaluator\u0026#34;string-compare\u0026#34; condition\u0026#34;ArenderExclusion\u0026#34;\u0026gt; \u0026lt;renditionMimeTypes\u0026gt;{mimeType1},{mimeType2},...,{mimeTypeN}\u0026lt;\/renditionMimeTypes\u0026gt; \u0026lt;!-- exemple : \u0026lt;renditionMimeTypes\u0026gt;\u0026#34;application\/msword,image\/vnd.dwg,image\/x-dwg,image\/x-dwf\u0026lt;\/renditionMimeTypes--\u0026gt; \u0026lt;\/config\u0026gt; /p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/connectors\/alfresco\/features-share\/ }, { value: Features Alfresco Share, path: https:\/\/docs.arender.io\/v4\/connector\/alfresco\/features-share\/, label: p>ARender for specific groups only To set ARender viewer to specific Alfresco groups only, follow the below procedure:\n Go to the module deployment page: \/share\/page\/modules\/deploy Choose the ARender module: ARender Preview Plugin Select the evaluator on the right: group.module.evaluator In the Evaluator Properties : negate :falserelation :ORgroups :\u0026lt;group name\u0026gt;Configure document types to open with ARender To configure which type of document should be opened with ARender (other will be opened by the default viewer configured), add the below configuration:/p>p>ARender for specific groups only To set ARender viewer to specific Alfresco groups only, follow the below procedure:\n Go to the module deployment page: \/share\/page\/modules\/deploy Choose the ARender module: ARender Preview Plugin Select the evaluator on the right: group.module.evaluator In the Evaluator Properties : negate :falserelation :ORgroups :\u0026lt;group name\u0026gt;Configure document types to open with ARender To configure which type of document should be opened with ARender (other will be opened by the default viewer configured), add the below configuration:\nalfresco\/tomcat\/shared\/classes\/alfresco\/web-extension\/share-config-custom.xml \u0026lt;config evaluator\u0026#34;string-compare\u0026#34; condition\u0026#34;ArenderExclusion\u0026#34;\u0026gt; \u0026lt;viewerMimeTypes\u0026gt;{mimeType1},{mimeType2},...,{mimeTypeN}\u0026lt;\/viewerMimeTypes\u0026gt; \u0026lt;!-- exemple : \u0026lt;viewerMimeTypes\u0026gt;\u0026#34;application\/msword,image\/vnd.dwg,image\/x-dwg,image\/x-dwf\u0026lt;\/viewerMimeTypes--\u0026gt; \u0026lt;\/config\u0026gt; Configure document types to convert to PDF using ARender ARender plugin for Alfresco Share can ask a conversion of the Document to PDF, before viewing it.\nIt has the advantage to show the document faster, especially for complex document like AutoCAD.\nConfiguration is done like below:\nalfresco\/tomcat\/shared\/classes\/alfresco\/web-extension\/share-config-custom.xml \u0026lt;config evaluator\u0026#34;string-compare\u0026#34; condition\u0026#34;ArenderExclusion\u0026#34;\u0026gt; \u0026lt;renditionMimeTypes\u0026gt;{mimeType1},{mimeType2},...,{mimeTypeN}\u0026lt;\/renditionMimeTypes\u0026gt; \u0026lt;!-- exemple : \u0026lt;renditionMimeTypes\u0026gt;\u0026#34;application\/msword,image\/vnd.dwg,image\/x-dwg,image\/x-dwf\u0026lt;\/renditionMimeTypes--\u0026gt; \u0026lt;\/config\u0026gt; /p>, url: https:\/\/docs.arender.io\/v4\/connector\/alfresco\/features-share\/ }, { value: FileNet servlet, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/filenetp8\/, label: p>Updating metadata The servlet updateDocumentMetadataServlet is dedicated to updating Filenet document metadata with a POST call.\nHere is an example of the POST call, where {documentId} is to be replaced by the documentId of the targeted document :\nPOST call http:\/\/{HOST_ARENDER}\/arendergwt\/updateDocumentMetadataServlet?uuid{documentId} Then, the body of the request will accept a JSON structure defining each metadata name to modify and the associated value. The propertyKey correspond to the symbolicName and displayName properties of Filenet./p>p>Updating metadata The servlet updateDocumentMetadataServlet is dedicated to updating Filenet document metadata with a POST call.\nHere is an example of the POST call, where {documentId} is to be replaced by the documentId of the targeted document :\nPOST call http:\/\/{HOST_ARENDER}\/arendergwt\/updateDocumentMetadataServlet?uuid{documentId} Then, the body of the request will accept a JSON structure defining each metadata name to modify and the associated value. The propertyKey correspond to the symbolicName and displayName properties of Filenet. The propertyValue is the value that the metadata will take.\nJSON in the request body { \u0026#34;propertyKey1\u0026#34; : \u0026#34;propertyValue1\u0026#34;, \u0026#34;propertyKey2\u0026#34; : \u0026#34;propertyValue2\u0026#34; } /p>p>filenet/p>p>servlet/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/filenetp8\/ }, { value: Filters, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/filters\/, label: p>Comment Description Parameter Key Default value Type Activates the button to filter annotations created by the current user filter.comment.currentUser.enabled true Boolean /p>p>Comment Description Parameter Key Default value Type Activates the button to filter annotations created by the current user filter.comment.currentUser.enabled true Boolean /p>p>configuration/p>p>filter/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/filters\/ }, { value: Filters, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/filters\/, label: p>Comment Key: filter.comment Description Parameter Key Type Activates the button to filter annotations created by the current user currentUser.enabled Boolean /p>p>Comment Key: filter.comment Description Parameter Key Type Activates the button to filter annotations created by the current user currentUser.enabled Boolean /p>p>configuration/p>p>filter/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/filters\/ }, { value: Full screen, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/fullscreen-js-api\/, label: p>Switch to Full screen Object: getARenderJS().getFullScreenJSAPI() Function Description askOpenFullScreen() Activate full screen mode askCloseFullScreen() Deactivate full screen mode /p>p>Switch to Full screen Object: getARenderJS().getFullScreenJSAPI() Function Description askOpenFullScreen() Activate full screen mode askCloseFullScreen() Deactivate full screen mode /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/fullscreen-js-api\/ }, { value: Fullscreen, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/fullscreen-js-api\/, label: p>Switch to Fullscreen Object: getARenderJS().getFullScreenJSAPI() Function Description askOpenFullScreen() Activate fullscreen mode askCloseFullScreen() Deactivate fullscreen mode /p>p>Switch to Fullscreen Object: getARenderJS().getFullScreenJSAPI() Function Description askOpenFullScreen() Activate fullscreen mode askCloseFullScreen() Deactivate fullscreen mode /p>p>configuration/p>p>js/p>p>javascript/p>p>api/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/fullscreen-js-api\/ }, { value: Get page content, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/page-content\/, label: p>A new servlet is deployed to have a Json file with the page content of a document.\nRequest This functionality is accessible via the servlet: pageContent\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/pageContent?uuiddocuuid\u0026amp;pagePositionnumPage\u0026#39; uuid: document id pagePosition: the page of the document Servlet Response A Json file is returned with information about the page content which is given as a parameter.\nHere an example of a Json file :/p>p>A new servlet is deployed to have a Json file with the page content of a document.\nRequest This functionality is accessible via the servlet: pageContent\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/pageContent?uuiddocuuid\u0026amp;pagePositionnumPage\u0026#39; uuid: document id pagePosition: the page of the document Servlet Response A Json file is returned with information about the page content which is given as a parameter.\nHere an example of a Json file :\n{ \u0026#34;pageNumber\u0026#34;: 3, \u0026#34;positionTextList\u0026#34;: { \u0026#34;pageNumber\u0026#34;: 3, \u0026#34;position\u0026#34;: { \u0026#34;x\u0026#34;: 124.68, \u0026#34;y\u0026#34;: 204.09999, \u0026#34;w\u0026#34;: 113.34983, \u0026#34;h\u0026#34;: 34.0 }, \u0026#34;text\u0026#34;: \u0026#34;Features\u0026#34;, \u0026#34;individualWidths\u0026#34;: 15.070442, 15.797394, 15.601685, 10.960312, 15.76944, 10.904404, 15.797394, 13.448761 , \u0026#34;fontSize\u0026#34;: 27.0, \u0026#34;font\u0026#34;: \u0026#34;BCDIEE\u002bOxygen bold\u0026#34;, \u0026#34;paragraphId\u0026#34;: 0, \u0026#34;rightToLeftText\u0026#34;: false, \u0026#34;startTime\u0026#34;: -1.0 } , \u0026#34;imageHyperlinkPositionList\u0026#34;: } /p>p>tutorial/p>p>content/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/page-content\/ }, { value: Get page image, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/get-image\/, label: p>A new servlet is deployed to get a page from a document.\nRequest This functionality is accessible via the servlet: imageServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/imageServlet?uuiddocUUID\u0026amp;pagePositionpage\u0026amp;descsize\u0026#39; uuid: document id pagePosition: the page of the document desc: the size of the image in pixels Servlet Response An image appears, it corresponds to the document page given in parameter./p>p>A new servlet is deployed to get a page from a document.\nRequest This functionality is accessible via the servlet: imageServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/imageServlet?uuiddocUUID\u0026amp;pagePositionpage\u0026amp;descsize\u0026#39; uuid: document id pagePosition: the page of the document desc: the size of the image in pixels Servlet Response An image appears, it corresponds to the document page given in parameter.\n/p>p>tutorial/p>p>image/p>p>page/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/get-image\/ }, { value: Group annotations, path: https:\/\/docs.arender.io\/learn\/how-to\/groupannotation\/, label: p>The assignment of a group to an annotation is done with the use of the Security property which makes it possible to store the group name of the annotation.\nBy default, only two values can be used :\n Private Public The list of values is configurable. The following property must be enabled in order to view the dropdown list while in annotation edit mode.\nconfigurations\/arender-custom-server.properties arender.server.annotations.text.security.supporttrue Modification by configuration The annotation group list is configurable./p>p>The assignment of a group to an annotation is done with the use of the Security property which makes it possible to store the group name of the annotation.\nBy default, only two values can be used :\n Private Public The list of values is configurable. The following property must be enabled in order to view the dropdown list while in annotation edit mode.\nconfigurations\/arender-custom-server.properties arender.server.annotations.text.security.supporttrue Modification by configuration The annotation group list is configurable.\nExample of configuration of the bean that will populate the annotation group list:\nconfigurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;availableSecurityLevels\u0026#34; class\u0026#34;java.util.ArrayList\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;list\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;group1\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Groupe 1\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Group 1\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;group2\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Groupe 2\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Group 2\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;group3\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Groupe 3\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Group 3\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; Visually, a dropdown list is displayed in the toppanel when editing an annotation.\nModification by connector In the Java class that implements the DocumentAccessor interface, you can change the setter implementation for the AnnotationAccessor to define a new list of values for annotation groups.\nHere is a basic example of the implementation of the function setAnnotationAccessor which will define a new list of values:\n@Override @JsonIgnore public void setAnnotationAccessor(AnnotationAccessor annotationAccessor) throws AnnotationsNotSupportedException { this.annotationAccessor annotationAccessor; List\u0026lt;SecurityLevel\u0026gt; list new ArrayList\u0026lt;\u0026gt;(); list.add(buildSecuriyLevel(\u0026#34;group1\u0026#34;, \u0026#34;Groupe 1\u0026#34;, \u0026#34;Group 1\u0026#34;)); list.add(buildSecuriyLevel(\u0026#34;group2\u0026#34;, \u0026#34;Groupe 2\u0026#34;, \u0026#34;Group 2\u0026#34;)); list.add(buildSecuriyLevel(\u0026#34;group3\u0026#34;, \u0026#34;Groupe 3\u0026#34;, \u0026#34;Group 3\u0026#34;)); annotationAccessor.getAnnotationCreationPolicy().setAnnotationsSupportSecurity(true); annotationAccessor.getAnnotationCreationPolicy().setAvailableSecurityLevels(list); } private SecurityLevel buildSecuriyLevel(String symbolicName, String fr, String en) { SecurityLevel securityLevel new SecurityLevel(); securityLevel.setSymbolicName(symbolicName); securityLevel.setLocalizedDisplayNames(buildLocalizedDisplayNames(fr, en)); return securityLevel; } private Map\u0026lt;String, String\u0026gt; buildLocalizedDisplayNames(String fr, String en) { Map\u0026lt;String, String\u0026gt; map new HashMap\u0026lt;\u0026gt;(); map.put(\u0026#34;fr\u0026#34;, fr); map.put(\u0026#34;en\u0026#34;, en); return map; } Keep the notion of private annotation The notion of private annotation is compatible with the notion of an annotation group. We must keep the definition of property name \u0026ldquo;symbolicName\u0026rdquo; value \u0026ldquo;private\u0026rdquo;. The description of private annotations can be found in the section Annotation securities configuration in the page Annotation\nExample of configuration of the bean that will populate the annotation group list with the Private choice:\nconfigurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;availableSecurityLevels\u0026#34; class\u0026#34;java.util.ArrayList\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;list\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;private\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Privé\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Private\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;group1\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Groupe 1\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Group 1\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;group2\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Groupe 2\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Group 2\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;group3\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Groupe 3\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Group 3\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; How to use the notion of group Now that the annotations have a notion of group, it is possible, for example, to make the annotations in the \u0026ldquo;private\u0026rdquo; group non-modifiable.\nExample in the implementation of the AnnotationAccessor which will create or update the non-modifiable annotations if the group is \u0026ldquo;private\u0026rdquo; :\n@Override public void create(List\u0026lt;Annotation\u0026gt; annotations) throws AnnotationsNotSupportedException, AnnotationCredentialsException, InvalidAnnotationFormatException, AnnotationNotAvailableException { updateAnnotationSecurity(annotations); \/\/ Custom code \u002b call to database to store the annotations } @Override public void update(List\u0026lt;Annotation\u0026gt; annotations) throws AnnotationsNotSupportedException, AnnotationNotAvailableException, AnnotationCredentialsException, InvalidAnnotationFormatException { updateAnnotationSecurity(annotations); \/\/ Custom code \u002b call to database to update the annotations } private void updateAnnotationSecurity(List\u0026lt;Annotation\u0026gt; annotations) { for(Annotation annotation : annotations) { if(\u0026#34;private\u0026#34;.equals(annotation.getSecurity())) { annotation.getFlags().setLocked(true); annotation.getFlags().setReadonly(true); } } } /p>p>tutorial/p>p>annotation/p>p>group/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/groupannotation\/ }, { value: Group annotations, path: https:\/\/docs.arender.io\/v4\/cookbook\/groupannotation\/, label: p>The assignment of a group to an annotation is done with the use of the Security property which makes it possible to store the group name of the annotation.\nBy default, only two values can be used :\n Private Public The list of values is configurable. The following property must be enabled in order to view the dropdown list while in annotation edit mode.\narender-server-custom-vanilla.properties arender.server.annotations.text.security.supporttrue Modification by configuration The annotation group list is configurable./p>p>The assignment of a group to an annotation is done with the use of the Security property which makes it possible to store the group name of the annotation.\nBy default, only two values can be used :\n Private Public The list of values is configurable. The following property must be enabled in order to view the dropdown list while in annotation edit mode.\narender-server-custom-vanilla.properties arender.server.annotations.text.security.supporttrue Modification by configuration The annotation group list is configurable.\nExample of configuration of the bean that will populate the annotation group list :\narender-custom-server-integration.xml \u0026lt;bean id\u0026#34;availableSecurityLevels\u0026#34; class\u0026#34;java.util.ArrayList\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;list\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;group1\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Groupe 1\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Group 1\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;group2\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Groupe 2\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Group 2\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;group3\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Groupe 3\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Group 3\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; Visually, a dropdown list is displayed in the toppanel when editing an annotation.\nModification by connector In the Java class that implements the DocumentAccessor interface, you can change the setter implementation for the AnnotationAccessor to define a new list of values for annotation groups.\nHere is a basic example of the implementation of the function setAnnotationAccessor which will define a new list of values:\n@Override @JsonIgnore public void setAnnotationAccessor(AnnotationAccessor annotationAccessor) throws AnnotationsNotSupportedException { this.annotationAccessor annotationAccessor; List\u0026lt;SecurityLevel\u0026gt; list new ArrayList\u0026lt;\u0026gt;(); list.add(buildSecuriyLevel(\u0026#34;group1\u0026#34;, \u0026#34;Groupe 1\u0026#34;, \u0026#34;Group 1\u0026#34;)); list.add(buildSecuriyLevel(\u0026#34;group2\u0026#34;, \u0026#34;Groupe 2\u0026#34;, \u0026#34;Group 2\u0026#34;)); list.add(buildSecuriyLevel(\u0026#34;group3\u0026#34;, \u0026#34;Groupe 3\u0026#34;, \u0026#34;Group 3\u0026#34;)); annotationAccessor.getAnnotationCreationPolicy().setAnnotationsSupportSecurity(true); annotationAccessor.getAnnotationCreationPolicy().setAvailableSecurityLevels(list); } private SecurityLevel buildSecuriyLevel(String symbolicName, String fr, String en) { SecurityLevel securityLevel new SecurityLevel(); securityLevel.setSymbolicName(symbolicName); securityLevel.setLocalizedDisplayNames(buildLocalizedDisplayNames(fr, en)); return securityLevel; } private Map\u0026lt;String, String\u0026gt; buildLocalizedDisplayNames(String fr, String en) { Map\u0026lt;String, String\u0026gt; map new HashMap\u0026lt;\u0026gt;(); map.put(\u0026#34;fr\u0026#34;, fr); map.put(\u0026#34;en\u0026#34;, en); return map; } Keep the notion of private annotation The notion of private annotation is compatible with the notion of an annotation group. We must keep the definition of property name \u0026ldquo;symbolicName\u0026rdquo; value \u0026ldquo;private\u0026rdquo;. The description of private annotations can be found in the section Annotation securities configuration in the page Annotation\nExample of configuration of the bean that will populate the annotation group list with the Private choice :\narender-custom-server-integration.xml \u0026lt;bean id\u0026#34;availableSecurityLevels\u0026#34; class\u0026#34;java.util.ArrayList\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;list\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;private\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Privé\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Private\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;group1\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Groupe 1\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Group 1\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;group2\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Groupe 2\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Group 2\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.SecurityLevel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;group3\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;localizedDisplayNames\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Groupe 3\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Group 3\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; How to use the notion of group Now that the annotations have a notion of group, it is possible, for example, to make the annotations in the \u0026ldquo;private\u0026rdquo; group non-modifiable.\nExample in the implementation of the AnnotationAccessor which will create or update the non-modifiable annotations if the group is \u0026ldquo;private\u0026rdquo; :\n@Override public void create(List\u0026lt;Annotation\u0026gt; annotations) throws AnnotationsNotSupportedException, AnnotationCredentialsException, InvalidAnnotationFormatException, AnnotationNotAvailableException { updateAnnotationSecurity(annotations); \/\/ Custom code \u002b call to database to store the annotations } @Override public void update(List\u0026lt;Annotation\u0026gt; annotations) throws AnnotationsNotSupportedException, AnnotationNotAvailableException, AnnotationCredentialsException, InvalidAnnotationFormatException { updateAnnotationSecurity(annotations); \/\/ Custom code \u002b call to database to update the annotations } private void updateAnnotationSecurity(List\u0026lt;Annotation\u0026gt; annotations) { for(Annotation annotation : annotations) { if(\u0026#34;private\u0026#34;.equals(annotation.getSecurity())) { annotation.getFlags().setLocked(true); annotation.getFlags().setReadonly(true); } } } /p>p>tutorial/p>p>annotation/p>p>group/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/groupannotation\/ }, { value: Health records server, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/health-records\/, label: p>A new servlet is deployed to display the server performance.\nRequest This functionality is accessible via the servlet: healthRecordsServlet\nUsable in GET.\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/health\/records?checkscope\u0026#39; check: (optional) SELF: returns the HTML page even if no service is complete RENDITION: sends an error if no service is complete Servlet Response An HTML page is displayed with the different services. For each, the port, the state and the availability of the service are display./p>p>A new servlet is deployed to display the server performance.\nRequest This functionality is accessible via the servlet: healthRecordsServlet\nUsable in GET.\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/health\/records?checkscope\u0026#39; check: (optional) SELF: returns the HTML page even if no service is complete RENDITION: sends an error if no service is complete Servlet Response An HTML page is displayed with the different services. For each, the port, the state and the availability of the service are display.\n/p>p>tutorial/p>p>health/p>p>server/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/health-records\/ }, { value: Hyperlink, path: https:\/\/docs.arender.io\/features\/hyperlink\/, label: p>Description Hyperlinks are visible on documents loaded into ARender. By clicking on it, you can access other content. You will need a source text, which will be the selected and clickable text, and a target.\nUses To enable the creation of hyperlinks, highlight some text, the Create link button will then appears. By clicking on it, a menu will ask to select a page or to provide a URL.\nTo select the page, simply change the page on the document navigator and press the OK button./p>p>Description Hyperlinks are visible on documents loaded into ARender. By clicking on it, you can access other content. You will need a source text, which will be the selected and clickable text, and a target.\nUses To enable the creation of hyperlinks, highlight some text, the Create link button will then appears. By clicking on it, a menu will ask to select a page or to provide a URL.\nTo select the page, simply change the page on the document navigator and press the OK button.\nTo provide a URL, enter the desired URL in the text box and press the OK button.\nTo create an hyperlink to a zone, click on the Create a link to a zone button.\nThen, the above popup appears and select the target zone.\nTo edit the source text of an hyperlink, click on the edit button (pencil icon) in the source panel of the desired hyperlink in the hyperlink explorer.\nThe source can be changed by selecting a new text and by pressing the OK button.\nTo modify the target, click on the edit button (pencil icon) in the target panel.\nIt then asks you to select the desired option:\n select the page select the zone enter your URL Hyperlink Explorer Hyperlinks are visible in the hyperlink explorer. By default, it is enabled.\nconfigurations\/arender-custom-client.properties hyperlinkexplorer.enabledtrue The hyperlink explorer displays all the created hyperlinks. A hyperlink contains the following information :\n the name of the creator the date the source text the source document the target Several display options are available:\n Property Description Default value annotation.date.display.creationDate Displays the date of creation otherwise the date of the last modification true annotation.comment.explorer.show.date Enable date display true annotation.comment.explorer.creator.name.initial.only Show creator’s initials false toolbar.securityList.checkOwner Enables the security list for current user annotations true annotation.date.display.humanizedDate.enabled Display humanized date false Filter hyperlinks In the hyperlink explorer, several buttons are available to filter or sort the hyperlinks.\nSeveral filter options are available:\n by document by creator by date by current user You can also use the available filter buttons.\nThe first one allows you to filter based on the username. By hovering the username, it will appear.\nWhen this filter is activated, it will be blue. To deactivate it, simply click on it again.\nThe second filter allow you to filter according to the date. It will be appear by hovering the date (only if the date is displayed).\nIt also be blue when activated. To deactivate it, simply click on it again.\nDocument Linking The docLink feature enables the creation of hyperlinks between documents. It can be activated using a dedicated property in the configuration file.\nconfigurations\/arender-custom-client.properties topPanel.docLinktrue Once activated, a dedicated button appears in the top panel.\nIt is also possible to automatically enable the feature when the document is loaded using the following property:\nconfigurations\/arender-custom-client.properties topPanel.docLink.activateOnStartuptrue Since version 2023.15.0, you can choose whether the \u0026lsquo;Blue Frame\u0026rsquo; button creates a hyperlink from selected text or from a selected area using the following property:\nconfigurations\/arender-custom-client.properties # If true, the \u0026#39;blueZone\u0026#39; hyperlink is activated otherwise it is \u0026#39;blueFrame\u0026#39; hyperlink which is activated topPanel.docLink.enableZoneSelectionfalse Activation Two options are available via a dropdown menu:\n Blue Text Link: Classic hyperlink style with clickable blue text. Blue Frame Link: The clickable text is surrounded by a blue frame. When activated, the docLink feature displays documents side-by-side in multi-view mode.\nThe document on the left serves as the hyperlink source and the right one serves as the hyperlink target. Initially, text must be selected in the source document. The target document is then deactivated, and the cursor switches to text selection mode.\nThe generic case involves opening two documents in ARender, displayed side-by-side in multi-view. Specific cases are also handled:\n Single document: The same document is opened twice in multi-view mode, displayed side-by-side. Three or more documents: Only the first two documents are displayed side-by-side, with a restriction preventing any document changes. Multi-View or comparison mode activated: The documents remain in multi-view, and the docLink mode automatically adjusts the display by deactivating the target document and cleaning up comparison results to enable the hyperlink creation. Creation Once the docLink mode is activated, text must be selected in the source document. After the selection, the source document is deactivated, and the target document becomes active to define the hyperlink target.\nClicking on a position in the target document creates the hyperlink immediately, and the documents return to their initial state.\nIf the ui.legacy.enabledfalse property is set, it is possible to click directly on a thumbnail to create a hyperlink at the page level instead of a specific position.\nDeactivation Clicking the docLink button or pressing ESC deactivates the docLink mode. If a source has already been selected, an alert will notify the user of the cancellation of the hyperlink creation process.\n/p>, url: https:\/\/docs.arender.io\/features\/hyperlink\/ }, { value: Hyperlink, path: https:\/\/docs.arender.io\/v4\/feature\/hyperlink\/, label: p>Description The creation of a hyperlink can be done in several ways with ARender but always needs the same elements for their creation. First of all the selected text which will be the clickable text of the hyperlink, then you will need a target which can be a page number of the current document or a URL.\nHow to use it Contextual menu First, select the text that will be the hyperlink./p>p>Description The creation of a hyperlink can be done in several ways with ARender but always needs the same elements for their creation. First of all the selected text which will be the clickable text of the hyperlink, then you will need a target which can be a page number of the current document or a URL.\nHow to use it Contextual menu First, select the text that will be the hyperlink. Then right-click and click on the Create a link option.\nThen a window appears where you must choose the type of link, either a URL or a page number of the current document.\nOnce the choice is made, press Validate. The hyperlink has been created.\nSince version 4.8.0 Creation button A button is available in the toppanel for hyperlink creation. This button is disabled by default. It is also possible to create hyperlinks in repeat mode.\n Property Description Default value topPanel.annotationMenu.hyperlink Activate the hyperlink annotation button false topPanel.annotationMenu.hyperlink.repeat Activate the hyperlink annotation button for repeat mode false arender.properties topPanel.annotationMenu.hyperlinktrue topPanel.annotationMenu.hyperlink.repeattrue On clicking the button, you will be asked to select the text where the hyperlink will be.\nAfter selection, the cursor changes into a target to let you know that a target is needed for the hyperlink.\nClick on the page of the current document that you choose as target to create the hyperlink.\nNote If you are at the target selection and you made a wrong text selection, you can use the Esc key to return to the text selection. Javascript API It is possible to provide a target from outside ARender with javascript. To do this, you must register a function that will be executed when ARender enters or exits target selection mode.\n var waitingTarget false; function arenderjs_init(arenderjs_) { arenderjs_.registerNotifyHyperlinkToggleTargetModeEvent(function(activated){ if(activated) { waitingTarget true; } else { waitingTarget false; } }); } Next, you will need a function to send the target to ARender when the target selection mode is activated.\n function armt_notifyHyperlinkTarget(target) { if(waitingTarget) { getARenderJS().notifyHyperlinkTarget(target); waitingTarget false; } } /p>, url: https:\/\/docs.arender.io\/v4\/feature\/hyperlink\/ }, { value: Hyperlinks, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/hyperlinks\/, label: p>General Key: hyperlinks Description Parameter Key Type Load URLs into the ARender frame hyperlinks.loadInARender Boolean Load hyperlinks from the source document hyperlinks.loadFromPDF Boolean Display frame\/blue box around hyperlinks if needed hyperlinks.displayFrame Boolean Allow internal hyperlinks from the source document hyperlinks.load.internal Boolean Allow external hyperlinks from the source document hyperlinks.load.external Boolean These parameters allow to influence of the behavior associated with internal hyperlinks stored into source documents./p>p>General Key: hyperlinks Description Parameter Key Type Load URLs into the ARender frame hyperlinks.loadInARender Boolean Load hyperlinks from the source document hyperlinks.loadFromPDF Boolean Display frame\/blue box around hyperlinks if needed hyperlinks.displayFrame Boolean Allow internal hyperlinks from the source document hyperlinks.load.internal Boolean Allow external hyperlinks from the source document hyperlinks.load.external Boolean These parameters allow to influence of the behavior associated with internal hyperlinks stored into source documents. If you do not wish to have the internal links of a PDF to be displayed or clicked, use the parameter hyperlinks.loadFromPDFfalse.\nAnnotation The following properties defines the annotation behaviours when creating hyperlinks:\n Key: annotation.hyperlink Description Parameter Key Type Opacity for the Hyperlink annotation annotation.hyperlink.opacity Float Color for the Hyperlink annotation annotation.hyperlink.default.color String Allow the hyperlink target to be an external document annotation.hyperlink.externe.target.enabled Boolean Define the time limitation (in ms) to display the hyperlink target elements annotation.hyperlink.target.show.timeout Integer Set the legacy hyperlink creation. If true, the target page starts from index 1 otherwise it starts from index 0. annotation.hyperlink.use.legacy.creation Boolean If true, clicking on a hyperlink leading to another document will open this document in a new tab. annotation.hyperlink.open.document.tab Boolean configurations\/arender-custom-client.properties annotation.hyperlink.opacity0.5f annotation.hyperlink.default.color#0000FF annotation.hyperlink.externe.target.enabledtrue annotation.hyperlink.target.show.timeout10000 annotation.hyperlink.use.legacy.creationfalse annotation.hyperlink.open.document.tabtrue /p>p>configuration/p>p>Hyperlinks/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/hyperlinks\/ }, { value: Hyperlinks, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/hyperlinks\/, label: p>General Key: hyperlinks Description Parameter Key Type Load URLs into the ARender frame hyperlinks.loadInARender Boolean Load hyperlinks from the source document hyperlinks.loadFromPDF Boolean Allow internal hyperlinks from the source document hyperlinks.load.internal Boolean Allow external hyperlinks from the source document hyperlinks.load.external Boolean These parameters allow to influence of the behavior associated with internal hyperlinks stored into source documents./p>p>General Key: hyperlinks Description Parameter Key Type Load URLs into the ARender frame hyperlinks.loadInARender Boolean Load hyperlinks from the source document hyperlinks.loadFromPDF Boolean Allow internal hyperlinks from the source document hyperlinks.load.internal Boolean Allow external hyperlinks from the source document hyperlinks.load.external Boolean These parameters allow to influence of the behavior associated with internal hyperlinks stored into source documents. If you do not wish to have the internal links of a PDF to be displayed or clicked, use the parameter hyperlinks.loadFromPDFfalse.\nAnnotation The default color when creating the hyperlink is defined by the following property:\n Property Description Default value annotation.hyperlink.default.color Hyperlink color at creation #EAF39C arender.properties annotation.hyperlink.default.color#EAF39C /p>p>configuration/p>p>Hyperlinks/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/hyperlinks\/ }, { value: Hôte de Rendition, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/server\/rendition-host\/, label: p>Rendition hosts For an HMI to communicate with a rendition, it must be provided with the server host URL. If multiple renditions are deployed, it is also possible to configure them by separating the URLs of the different renditions with the comma character.\n Description Parameter Key Default value Type Comma separated values to define all the HTTP Rendition server hosts available arender.server.rendition.hosts http:\/\/localhost:8761\/ String Rendition load document balancing The HMI server has an internal load balancer that optimizes document loading in Rendition./p>p>Rendition hosts For an HMI to communicate with a rendition, it must be provided with the server host URL. If multiple renditions are deployed, it is also possible to configure them by separating the URLs of the different renditions with the comma character.\n Description Parameter Key Default value Type Comma separated values to define all the HTTP Rendition server hosts available arender.server.rendition.hosts http:\/\/localhost:8761\/ String Rendition load document balancing The HMI server has an internal load balancer that optimizes document loading in Rendition. This feature relies on a load balancing strategy that distributes requests across multiple resources, improving performance and service availability.\n Description Parameter Key Default value Type The frequency at which weather values are retrieved from renditions arender.server.rendition.weather.polling.interval 1000 Integer The default strategy for choosing a rendition target while the polling time interval. Valid values :\n- BEST_TARGET : Choose the rendition with the best weather value\n- WEIGHTED_DISTRIBUTION : Choose a rendition while ensuring a weighted distribution during the polling time interval\n- ROUND_ROBIN : Choose a rendition in a round-robin order, independently of the \u0026lsquo;weather\u0026rsquo; value (Since version 2023.15.0)\n- RANDOM : Choose a rendition randomly, independently of the \u0026lsquo;weather\u0026rsquo; value (Since version 2023.15.0) arender.server.rendition.weather.distribution.strategy WEIGHTED_DISTRIBUTION String /p>p>configuration/p>p>rendition/p>p>hôte/p>p>loadbalancing/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/server\/rendition-host\/ }, { value: IBM Filenet, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/filenet\/, label: p>/p>p>/p>p>standalone/p>p>hmi/p>p>configuration/p>p>filenet/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/filenet\/ }, { value: Image for rejected document, path: https:\/\/docs.arender.io\/learn\/how-to\/rejected\/, label: p>Since version 4.8.0, it is possible to configure the rendition server to display an image indicating that the document could not be loaded correctly.\nActivate the feature To activate the functionality, you will have to make a modification in the application.properties file in the document-service-broker microservice.\napplication.properties rejected.document.enabledtrue Change the default image To modify the default image, you will have to make a modification in the application./p>p>Since version 4.8.0, it is possible to configure the rendition server to display an image indicating that the document could not be loaded correctly.\nActivate the feature To activate the functionality, you will have to make a modification in the application.properties file in the document-service-broker microservice.\napplication.properties rejected.document.enabledtrue Change the default image To modify the default image, you will have to make a modification in the application.properties file in the document-service-broker microservice.\napplication.properties rejected.document.path{path_to_the_file} Change the title of the document To modify the title of the document, you will have to make a modification in the application.properties file in the document-service-broker microservice.\napplication.properties rejected.document.titleCustom title /p>p>tutorial/p>p>rejected/p>p>image/p>p>error/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/rejected\/ }, { value: Image for rejected document, path: https:\/\/docs.arender.io\/v4\/cookbook\/rejected\/, label: p>Since version 4.8.0, it is possible to configure the rendition server to display an image indicating that the document could not be loaded correctly.\nActivate the feature To activate the functionality, you will have to make a modification in the application.properties file in the document-service-broker microservice.\napplication.properties rejected.document.enabledtrue Change the default image To modify the default image, you will have to make a modification in the application./p>p>Since version 4.8.0, it is possible to configure the rendition server to display an image indicating that the document could not be loaded correctly.\nActivate the feature To activate the functionality, you will have to make a modification in the application.properties file in the document-service-broker microservice.\napplication.properties rejected.document.enabledtrue Change the default image To modify the default image, you will have to make a modification in the application.properties file in the document-service-broker microservice.\napplication.properties rejected.document.path{path_to_the_file} Change the title of the document To modify the title of the document, you will have to make a modification in the application.properties file in the document-service-broker microservice.\napplication.properties rejected.document.titleCustom title /p>p>tutorial/p>p>rejected/p>p>image/p>p>error/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/rejected\/ }, { value: Image processing, path: https:\/\/docs.arender.io\/features\/processing\/, label: p>To improve the visibility of elements on certain documents, it is possible to manipulate the contrast, the brightness and the inversion of color by using a slider ranging from -100 to 100 where 0 is the default value.\nThe buttons to display the sliders individually can be activated with the following properties : configurations\/arender-custom-client.properties #Activate the brightness slider topPanel.imageProcessMenu.brightness.enabledtrue #Activate the contrast slider topPanel.imageProcessMenu.contrast.enabledtrue # Activate the invert colors slider topPanel./p>p>To improve the visibility of elements on certain documents, it is possible to manipulate the contrast, the brightness and the inversion of color by using a slider ranging from -100 to 100 where 0 is the default value.\nThe buttons to display the sliders individually can be activated with the following properties : configurations\/arender-custom-client.properties #Activate the brightness slider topPanel.imageProcessMenu.brightness.enabledtrue #Activate the contrast slider topPanel.imageProcessMenu.contrast.enabledtrue # Activate the invert colors slider topPanel.imageProcessMenu.invert.enabledtrue \nBy default, the buttons for the contrast and brightness sliders are enabled.\nImage processing can be applied in three different ways :\n Current page All pages of the current document All pages of all opened documents configurations\/arender-custom-client.properties # Set how image processing is applied : CURRENT_PAGE, ALL_PAGES, ALL_DOCUMENTS topPanel.imageProcessMenu.process.modeALL_DOCUMENTS /p>, url: https:\/\/docs.arender.io\/features\/processing\/ }, { value: Image processing, path: https:\/\/docs.arender.io\/v4\/feature\/processing\/, label: p>To improve the visibility of elements on certain documents, it is possible to manipulate the contrast and brightness by using a slider ranging from -100 to 100 where 0 is the default value.\nThe feature can be activated with the following configuration :\narender.properties # Activate the top panel imageProcessing button topPanel.imageProcessMenutrue Values of the slider can be modified. Those properties are deprecated since version 4.7.0 : arender./p>p>To improve the visibility of elements on certain documents, it is possible to manipulate the contrast and brightness by using a slider ranging from -100 to 100 where 0 is the default value.\nThe feature can be activated with the following configuration :\narender.properties # Activate the top panel imageProcessing button topPanel.imageProcessMenutrue Values of the slider can be modified. Those properties are deprecated since version 4.7.0 : arender.properties # Sets up the max value of the brightness slider topPanel.imageProcessMenu.maxBrightness200 # Sets up the max value of the contrast slider topPanel.imageProcessMenu.maxContrast200 # Sets up the default value of the brightness slider topPanel.imageProcessMenu.defaultBrightness100 # Sets up the default value of the contrast slider topPanel.imageProcessMenu.defaultContrast100 \nImage processing can be applied in three different ways :\n Current page All pages of the current document All pages of all opened documents Before version 4.5.x, you can only apply image processing on every page or current page number on all documents.\nBefore version 4.5.x arender.properties # Enable the image process on all pages topPanel.imageProcessMenu.doOnAllPagetrue \nSince version 4.5.x arender.properties # Set how image processing is applied : CURRENT_PAGE, ALL_PAGES, ALL_DOCUMENTS topPanel.imageProcessMenu.process.modeALL_DOCUMENTS \nActivate image processing buttons Since version 4.7.x, the buttons to display the sliders individually can be activated with the following properties : arender.properties #Activate the brightness slider topPanel.imageProcessMenu.brightness.enabledtrue #Activate the contrast slider topPanel.imageProcessMenu.contrast.enabledtrue \n/p>, url: https:\/\/docs.arender.io\/v4\/feature\/processing\/ }, { value: Import ARender dependencies, path: https:\/\/docs.arender.io\/learn\/how-to\/bom\/, label: p>BOM feature This feature is available from version 4.4.0 Introduction The ARender BOM is simply a POM file containing some of the ARender dependencies defined in a dependencyManagement. Among other things, it makes possible to a project using ARender libraries to always be sure to use the same versions of third-party libraries as ARender. The advantage is that the BOM is importable and then leaves the possibility for a project to have another parent POM./p>p> BOM feature This feature is available from version 4.4.0 Introduction The ARender BOM is simply a POM file containing some of the ARender dependencies defined in a dependencyManagement. Among other things, it makes possible to a project using ARender libraries to always be sure to use the same versions of third-party libraries as ARender. The advantage is that the BOM is importable and then leaves the possibility for a project to have another parent POM.\nARender BOM There are a total of 3 BOMs available: the web-ui, the rendition and the root which is the parent pom and which therefore contains the libraries common to the web-ui and to the rendition.\n\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.arender\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;arender-bom-root\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;${arender.version}\u0026lt;\/version\u0026gt; \u0026lt;\/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.arender\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;arender-bom-web-ui\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;{arender.version}\u0026lt;\/version\u0026gt; \u0026lt;\/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.arender\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;arender-bom-rendition\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;{arender.version}\u0026lt;\/version\u0026gt; \u0026lt;\/dependency\u0026gt; Example \u0026lt;project xmlns\u0026#34;http:\/\/maven.apache.org\/POM\/4.0.0\u0026#34; xmlns:xsi\u0026#34;http:\/\/www.w3.org\/2001\/XMLSchema-instance\u0026#34; xsi:schemaLocation\u0026#34;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\u0026#34;\u0026gt; \u0026lt;modelVersion\u0026gt;4.0.0\u0026lt;\/modelVersion\u0026gt; \u0026lt;parent\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.test\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;my-parent-pom\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;0.0.1-SNAPSHOT\u0026lt;\/version\u0026gt; \u0026lt;\/parent\u0026gt; \u0026lt;artifactId\u0026gt;custom-arender-connector\u0026lt;\/artifactId\u0026gt; \u0026lt;packaging\u0026gt;jar\u0026lt;\/packaging\u0026gt; \u0026lt;dependencyManagement\u0026gt; \u0026lt;dependencies\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.arender\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;arender-bom-web-ui\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;${arender.version}\u0026lt;\/version\u0026gt; \u0026lt;type\u0026gt;pom\u0026lt;\/type\u0026gt; \u0026lt;scope\u0026gt;import\u0026lt;\/scope\u0026gt; \u0026lt;\/dependency\u0026gt; \u0026lt;\/dependencies\u0026gt; \u0026lt;\/dependencyManagement\u0026gt; \u0026lt;dependencies\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.springframework.security\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;spring-security-oauth2-client\u0026lt;\/artifactId\u0026gt; \u0026lt;scope\u0026gt;provided\u0026lt;\/scope\u0026gt; \u0026lt;\/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;javax.servlet\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;javax.servlet-api\u0026lt;\/artifactId\u0026gt; \u0026lt;scope\u0026gt;provided\u0026lt;\/scope\u0026gt; \u0026lt;\/dependency\u0026gt; \u0026lt;\/dependencies\u0026gt; \u0026lt;\/project\u0026gt; We can see here the import of the BOM in the dependencyManagement and the use of some dependencies which do not have a defined version. Indeed, maven will automatically know to retrieve the version defined in the BOM and use it.\n/p>p>tutorial/p>p>import/p>p>maven/p>p>bom/p>p>dependencies/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/bom\/ }, { value: Import ARender dependencies, path: https:\/\/docs.arender.io\/v4\/cookbook\/bom\/, label: p>BOM feature This feature is available from version 4.4.0 Introduction The ARender BOM is simply a POM file containing some of the ARender dependencies defined in a dependencyManagement. Among other things, it makes possible to a project using ARender libraries to always be sure to use the same versions of third-party libraries as ARender. The advantage is that the BOM is importable and then leaves the possibility for a project to have another parent POM./p>p> BOM feature This feature is available from version 4.4.0 Introduction The ARender BOM is simply a POM file containing some of the ARender dependencies defined in a dependencyManagement. Among other things, it makes possible to a project using ARender libraries to always be sure to use the same versions of third-party libraries as ARender. The advantage is that the BOM is importable and then leaves the possibility for a project to have another parent POM.\nARender BOM There are a total of 3 BOMs available: the web-ui, the rendition and the root which is the parent pom and which therefore contains the libraries common to the web-ui and to the rendition.\n\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.arender\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;arender-bom-root\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;${arender.version}\u0026lt;\/version\u0026gt; \u0026lt;\/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.arender\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;arender-bom-web-ui\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;{arender.version}\u0026lt;\/version\u0026gt; \u0026lt;\/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.arender\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;arender-bom-rendition\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;{arender.version}\u0026lt;\/version\u0026gt; \u0026lt;\/dependency\u0026gt; Example \u0026lt;project xmlns\u0026#34;http:\/\/maven.apache.org\/POM\/4.0.0\u0026#34; xmlns:xsi\u0026#34;http:\/\/www.w3.org\/2001\/XMLSchema-instance\u0026#34; xsi:schemaLocation\u0026#34;http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\u0026#34;\u0026gt; \u0026lt;modelVersion\u0026gt;4.0.0\u0026lt;\/modelVersion\u0026gt; \u0026lt;parent\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.test\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;my-parent-pom\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;0.0.1-SNAPSHOT\u0026lt;\/version\u0026gt; \u0026lt;\/parent\u0026gt; \u0026lt;artifactId\u0026gt;custom-arender-connector\u0026lt;\/artifactId\u0026gt; \u0026lt;packaging\u0026gt;jar\u0026lt;\/packaging\u0026gt; \u0026lt;dependencyManagement\u0026gt; \u0026lt;dependencies\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.arender\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;arender-bom-web-ui\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;${arender.version}\u0026lt;\/version\u0026gt; \u0026lt;type\u0026gt;pom\u0026lt;\/type\u0026gt; \u0026lt;scope\u0026gt;import\u0026lt;\/scope\u0026gt; \u0026lt;\/dependency\u0026gt; \u0026lt;\/dependencies\u0026gt; \u0026lt;\/dependencyManagement\u0026gt; \u0026lt;dependencies\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.springframework.security\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;spring-security-oauth2-client\u0026lt;\/artifactId\u0026gt; \u0026lt;scope\u0026gt;provided\u0026lt;\/scope\u0026gt; \u0026lt;\/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;javax.servlet\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;javax.servlet-api\u0026lt;\/artifactId\u0026gt; \u0026lt;scope\u0026gt;provided\u0026lt;\/scope\u0026gt; \u0026lt;\/dependency\u0026gt; \u0026lt;\/dependencies\u0026gt; \u0026lt;\/project\u0026gt; We can see here the import of the BOM in the dependencyManagement and the use of some dependencies which do not have a defined version. Indeed, maven will automatically know to retrieve the version defined in the BOM and use it.\n/p>p>tutorial/p>p>import/p>p>maven/p>p>bom/p>p>dependencies/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/bom\/ }, { value: Internationalization, path: https:\/\/docs.arender.io\/features\/langue\/, label: p>ARender is translated into 13 languages:\nArabic, German, English, Spanish, French, Italian, Portuguese, Chinese, Brazilian Portuguese, Hebrew, Russian, Polish, Japanese.\nIt is also possible to add new languages to the ARender WAR or EAR deployment by adding a label file.\nTo do this, copy the English translation of the labels located in arondor-arender-hmi-spring-boot-2023.16.0.jar\\BOOT-INF\\classes\\labels\\ARenderLabels_en.properties and create your own translation by renaming it with the locale you want to see supported./p>p>ARender is translated into 13 languages:\nArabic, German, English, Spanish, French, Italian, Portuguese, Chinese, Brazilian Portuguese, Hebrew, Russian, Polish, Japanese.\nIt is also possible to add new languages to the ARender WAR or EAR deployment by adding a label file.\nTo do this, copy the English translation of the labels located in arondor-arender-hmi-spring-boot-2023.16.0.jar\\BOOT-INF\\classes\\labels\\ARenderLabels_en.properties and create your own translation by renaming it with the locale you want to see supported.\n/p>, url: https:\/\/docs.arender.io\/features\/langue\/ }, { value: JNDI Configuration for ARender Web-UI, path: https:\/\/docs.arender.io\/learn\/how-to\/jndi-configuration\/, label: p>Compatible only with ARender for FileNet JNDI configuration is only compatible for ARender for FileNet in WebSphere. Other deployment compatibility will come later. Prerequisite arender version \u0026gt; ARender 3.1.9 Benefits of using JNDI with ARender Web-UI JNDI configuration simplifies ARender Web-UI deployment and update.\nSince the version 3.1.9 of ARender, the server configuration is externalized in the property file: arender-server.properties (located in the folder WEB-INF\/classes of ARender Web-UI)./p>p> Compatible only with ARender for FileNet JNDI configuration is only compatible for ARender for FileNet in WebSphere. Other deployment compatibility will come later. Prerequisite arender version \u0026gt; ARender 3.1.9 Benefits of using JNDI with ARender Web-UI JNDI configuration simplifies ARender Web-UI deployment and update.\nSince the version 3.1.9 of ARender, the server configuration is externalized in the property file: arender-server.properties (located in the folder WEB-INF\/classes of ARender Web-UI). It allows the use of JNDI in ARender to define the configuration directly in the application server.\nBelow, you will find the configuration detail for each application server.\nApache Tomcat JNDI configuration Create a property file (example: customer-\u0026lt;integration_type\u0026gt;.properties, with \u0026lt;integration_type\u0026gt; being the type of your current integration ; vanilla,filenet,alfresco) and save it in the folder of your choice (Example: C:\\Dev\\apache-tomcat-8.5.13\\customConfiguration).\n Edit this file with the wanted specific configuration (available properties are in arender-server.properties):\narender.server.rendition.hostshttp:\/\/localhost:8761\/ Open the Apache Tomcat configuration file context.xml (located under the conf folder)\n Edit this file to add an environment variable propertiesFileLocation. Its value is the path of the folder containing the property file customer-\u0026lt;integration_type\u0026gt;.properties defined above. Example:\n \u0026lt;Context\u0026gt; \u0026lt;Environment name\u0026#34;propertiesFileLocation\u0026#34; value\u0026#34;C:\\Dev\\apache-tomcat-8.5.13\\customConfiguration\u0026#34; type\u0026#34;java.lang.String\u0026#34; override\u0026#34;false\u0026#34;\/\u0026gt; \u0026lt;\/Context\u0026gt; Restart the application server. WildFly JNDI configuration Override web.xml configuration\nweb.xml (Located in WEB-INF) \u0026lt;!-- Comment the below configuration --\u0026gt; \u0026lt;!-- \u0026lt;resource-ref\u0026gt; \u0026lt;res-ref-name\u0026gt;propertiesFileLocation\u0026lt;\/res-ref-name\u0026gt; \u0026lt;res-type\u0026gt;java.lang.String\u0026lt;\/res-type\u0026gt; \u0026lt;\/resource-ref\u0026gt; --\u0026gt; Override default JNDI context\narender-jndi-context.xml (Located in WEB-INF\\classes) \u0026lt;!-- Comment the below configuration --\u0026gt; \u0026lt;!--\u0026lt;jee:jndi-lookup id\u0026#34;propertiesFileLocation\u0026#34; jndi-name\u0026#34;java:comp\/env\/propertiesFileLocation\u0026#34; expected-type\u0026#34;java.lang.String\u0026#34; default-value\u0026#34;#{systemProperties\u0026#39;user.home\u0026#39;}\/ARenderConfiguration\/\u0026#34;\/\u0026gt;--\u0026gt; \u0026lt;!--Add the below Wildfly configuration --\u0026gt; \u0026lt;jee:jndi-lookup id\u0026#34;propertiesFileLocation\u0026#34; jndi-name\u0026#34;java:global\/propertiesFileLocation\u0026#34; expected-type\u0026#34;java.lang.String\u0026#34; default-value\u0026#34;#{systemProperties\u0026#39;user.home\u0026#39;}\/ARenderConfiguration\/\u0026#34;\/\u0026gt; Create a property file (example: customer-\u0026lt;integration_type\u0026gt;.properties) and save it in the folder of your choice (Example: C:\\Dev\\apache-tomcat-8.5.13\\customConfiguration).\n Edit this file with the wanted specific configuration (available properties are in arender-server.properties): customer-\u0026lt;integration_type\u0026gt;.properties arender.server.rendition.hostshttp:\/\/rendition-server:8761\/` Open the Wildfly configuration file standalone.xml (located under the configuration folder)\n Edit this file to add a binding propertiesFileLocation. Its value is the path of the folder containing the property file customer-\u0026lt;integration_type\u0026gt;.properties defined above. Example:\nstandalone.xml \u0026lt;subsystem xmlns\u0026#34;urn:jboss:domain:naming:2.0\u0026#34;\u0026gt; \u0026lt;bindings\u0026gt; \u0026lt;simple name\u0026#34;java:global\/propertiesFileLocation\u0026#34; value\u0026#34;C:\\Dev\\customConfiguration\\\u0026#34; type\u0026#34;java.lang.String\u0026#34;\/\u0026gt; \u0026lt;\/bindings\u0026gt; \u0026lt;remote-naming\/\u0026gt; \u0026lt;\/subsystem\u0026gt; Restart the application server.\n Websphere JNDI configuration Create a property file (example: customer-\u0026lt;integration_type\u0026gt;.properties) and save it in the folder of your choice (Example: C:\\Dev\\apache-tomcat-8.5.13\\customConfiguration).\n Edit this file with the wanted specific configuration (available properties are in arender-server.properties): arender-server.properties arender.server.rendition.hostshttp:\/\/rendition-server:8761\/ \n Open Websphere console and go to: Environment -\u0026gt; Naming -\u0026gt; Name space bindings:\n Click on New, then select String and click on Next: Then fill the fiels like below:\nBinding identifier: propertiesFileLocation\nName in namespace relative to lookup name prefix \u0026lsquo;cell\/node\/nodename\/servers\/serverName (replace nodename and server name by your own):\n cell\/node\/nodename\/servers\/serverName\/propertiesFileLocation\n String value: Its value is the path of the folder containing the property file customer-\u0026lt;integration_type\u0026gt;.properties defined above.\n Finally click on Finish Restart the application server. /p>p>tutorial/p>p>jndi/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/jndi-configuration\/ }, { value: JNDI Configuration for ARender Web-UI, path: https:\/\/docs.arender.io\/v4\/cookbook\/jndi-configuration\/, label: p>Prerequisite arender version \u0026gt; ARender 3.1.9 Benefits of using JNDI with ARender Web-UI JNDI configuration simplifies ARender Web-UI deployment and update.\nSince the version 3.1.9 of ARender, the server configuration is externalized in the property file: arender-server.properties (located in the folder WEB-INF\/classes of ARender Web-UI). It allows the use of JNDI in ARender to define the configuration directly in the application server.\nBelow, you will find the configuration detail for each application server./p>p>Prerequisite arender version \u0026gt; ARender 3.1.9 Benefits of using JNDI with ARender Web-UI JNDI configuration simplifies ARender Web-UI deployment and update.\nSince the version 3.1.9 of ARender, the server configuration is externalized in the property file: arender-server.properties (located in the folder WEB-INF\/classes of ARender Web-UI). It allows the use of JNDI in ARender to define the configuration directly in the application server.\nBelow, you will find the configuration detail for each application server.\nApache Tomcat JNDI configuration Create a property file (example: customer-\u0026lt;integration_type\u0026gt;.properties, with \u0026lt;integration_type\u0026gt; being the type of your current integration ; vanilla,filenet,alfresco) and save it in the folder of your choice (Example: C:\\Dev\\apache-tomcat-8.5.13\\customConfiguration).\n Edit this file with the wanted specific configuration (available properties are in arender-server.properties):\narender.server.rendition.hostshttp:\/\/localhost:8761\/ Open the Apache Tomcat configuration file context.xml (located under the conf folder)\n Edit this file to add an environment variable propertiesFileLocation. Its value is the path of the folder containing the property file customer-\u0026lt;integration_type\u0026gt;.properties defined above. Example:\n \u0026lt;Context\u0026gt; \u0026lt;Environment name\u0026#34;propertiesFileLocation\u0026#34; value\u0026#34;C:\\Dev\\apache-tomcat-8.5.13\\customConfiguration\u0026#34; type\u0026#34;java.lang.String\u0026#34; override\u0026#34;false\u0026#34;\/\u0026gt; \u0026lt;\/Context\u0026gt; Restart the application server. WildFly JNDI configuration Override web.xml configuration\nweb.xml (Located in WEB-INF) \u0026lt;!-- Comment the below configuration --\u0026gt; \u0026lt;!-- \u0026lt;resource-ref\u0026gt; \u0026lt;res-ref-name\u0026gt;propertiesFileLocation\u0026lt;\/res-ref-name\u0026gt; \u0026lt;res-type\u0026gt;java.lang.String\u0026lt;\/res-type\u0026gt; \u0026lt;\/resource-ref\u0026gt; --\u0026gt; Override default JNDI context\narender-jndi-context.xml (Located in WEB-INF\\classes) \u0026lt;!-- Comment the below configuration --\u0026gt; \u0026lt;!--\u0026lt;jee:jndi-lookup id\u0026#34;propertiesFileLocation\u0026#34; jndi-name\u0026#34;java:comp\/env\/propertiesFileLocation\u0026#34; expected-type\u0026#34;java.lang.String\u0026#34; default-value\u0026#34;#{systemProperties\u0026#39;user.home\u0026#39;}\/ARenderConfiguration\/\u0026#34;\/\u0026gt;--\u0026gt; \u0026lt;!--Add the below Wildfly configuration --\u0026gt; \u0026lt;jee:jndi-lookup id\u0026#34;propertiesFileLocation\u0026#34; jndi-name\u0026#34;java:global\/propertiesFileLocation\u0026#34; expected-type\u0026#34;java.lang.String\u0026#34; default-value\u0026#34;#{systemProperties\u0026#39;user.home\u0026#39;}\/ARenderConfiguration\/\u0026#34;\/\u0026gt; Create a property file (example: customer-\u0026lt;integration_type\u0026gt;.properties) and save it in the folder of your choice (Example: C:\\Dev\\apache-tomcat-8.5.13\\customConfiguration).\n Edit this file with the wanted specific configuration (available properties are in arender-server.properties): customer-\u0026lt;integration_type\u0026gt;.properties arender.server.rendition.hostshttp:\/\/rendition-server:8761\/` Open the Wildfly configuration file standalone.xml (located under the configuration folder)\n Edit this file to add a binding propertiesFileLocation. Its value is the path of the folder containing the property file customer-\u0026lt;integration_type\u0026gt;.properties defined above. Example:\nstandalone.xml \u0026lt;subsystem xmlns\u0026#34;urn:jboss:domain:naming:2.0\u0026#34;\u0026gt; \u0026lt;bindings\u0026gt; \u0026lt;simple name\u0026#34;java:global\/propertiesFileLocation\u0026#34; value\u0026#34;C:\\Dev\\customConfiguration\\\u0026#34; type\u0026#34;java.lang.String\u0026#34;\/\u0026gt; \u0026lt;\/bindings\u0026gt; \u0026lt;remote-naming\/\u0026gt; \u0026lt;\/subsystem\u0026gt; Restart the application server.\n Websphere JNDI configuration Create a property file (example: customer-\u0026lt;integration_type\u0026gt;.properties) and save it in the folder of your choice (Example: C:\\Dev\\apache-tomcat-8.5.13\\customConfiguration).\n Edit this file with the wanted specific configuration (available properties are in arender-server.properties): arender-server.properties arender.server.rendition.hostshttp:\/\/rendition-server:8761\/ \n Open Websphere console and go to: Environment -\u0026gt; Naming -\u0026gt; Name space bindings:\n Click on New, then select String and click on Next: Then fill the fiels like below:\nBinding identifier: propertiesFileLocation\nName in namespace relative to lookup name prefix \u0026lsquo;cell\/node\/nodename\/servers\/serverName (replace nodename and server name by your own):\n cell\/node\/nodename\/servers\/serverName\/propertiesFileLocation\n String value: Its value is the path of the folder containing the property file customer-\u0026lt;integration_type\u0026gt;.properties defined above.\n Finally click on Finish Restart the application server. /p>p>tutorial/p>p>jndi/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/jndi-configuration\/ }, { value: Lasso, path: https:\/\/docs.arender.io\/features\/lasso\/, label: p>Description The lasso feature allows a user to retrieve a text in the open document. For example, this text will be retrievable for automatically filling the text fields.\nUse The lasso feature can be used with our Javascript API. Instruction to use it can be found here.\nDemonstration Here a demonstration with a custom button./p>p>Description The lasso feature allows a user to retrieve a text in the open document. For example, this text will be retrievable for automatically filling the text fields.\nUse The lasso feature can be used with our Javascript API. Instruction to use it can be found here.\nDemonstration Here a demonstration with a custom button.\n/p>, url: https:\/\/docs.arender.io\/features\/lasso\/ }, { value: Lasso, path: https:\/\/docs.arender.io\/v4\/feature\/lasso\/, label: p>Description The lasso feature allows a user to retrieve a text in the open document. For example, this text will be retrievable for automatically filling the text fields.\nUse The lasso feature can be used with our Javascript API. Instruction to use it can be found here.\nDemonstration Here a demonstration with a custom button./p>p>Description The lasso feature allows a user to retrieve a text in the open document. For example, this text will be retrievable for automatically filling the text fields.\nUse The lasso feature can be used with our Javascript API. Instruction to use it can be found here.\nDemonstration Here a demonstration with a custom button.\n/p>, url: https:\/\/docs.arender.io\/v4\/feature\/lasso\/ }, { value: Layers (OCG\u0027s), path: https:\/\/docs.arender.io\/features\/layers\/, label: p>Description The feature allows you to choose the document layers which will be displayed. It only works on documents that have layers. Layers refer to Optional Content Groups (OCGs). They are a mechanism for selective control of the visibility of the pages content. They are represented by the layers.\nIt is possible to choose via the layers explorer.\nUse It is possible to check or uncheck the layers you want to display./p>p>Description The feature allows you to choose the document layers which will be displayed. It only works on documents that have layers. Layers refer to Optional Content Groups (OCGs). They are a mechanism for selective control of the visibility of the pages content. They are represented by the layers.\nIt is possible to choose via the layers explorer.\nUse It is possible to check or uncheck the layers you want to display.\nBy default, the layer explorer is activated.\nconfigurations\/arender-custom-client.properties layer.explorer.enabledtrue /p>, url: https:\/\/docs.arender.io\/features\/layers\/ }, { value: M-Files, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/m-files\/, label: p>/p>p>/p>p>standalone/p>p>hmi/p>p>configuration/p>p>m-files/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/m-files\/ }, { value: Menu bar, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/toppanel\/, label: p>Document menu Description Parameter Key Default value Type Activate the document sub-menu topPanel.documentMenu true Boolean Upload a document from local disk topPanel.documentMenu.upload true Boolean Upload a document from a remote URL topPanel.documentMenu.url true Boolean Allow to use \u0026ldquo;enter\u0026rdquo; to validate the input URL from the URL button topPanel.documentMenu.url.open.using.enter true Boolean Upload XFDF annotations from local topPanel./p>p>Document menu Description Parameter Key Default value Type Activate the document sub-menu topPanel.documentMenu true Boolean Upload a document from local disk topPanel.documentMenu.upload true Boolean Upload a document from a remote URL topPanel.documentMenu.url true Boolean Allow to use \u0026ldquo;enter\u0026rdquo; to validate the input URL from the URL button topPanel.documentMenu.url.open.using.enter true Boolean Upload XFDF annotations from local topPanel.documentMenu.xfdfUpload false Boolean Download current document in PDF topPanel.documentMenu.downloadPDF true Boolean Download current document in native format (only not PDF document) topPanel.documentMenu.download true Boolean Download all visualized documents topPanel.documentMenu.downloadAll true Boolean Download current document with its annotations topPanel.documentMenu.downloadAnnotation true Boolean Download annotations in CSV format topPanel.documentMenu.downloadCSVAnnotation false Boolean Download document with FDF annotations topPanel.documentMenu.downloadWithFDFAnnotation false Boolean Download annotations in XFDF format topPanel.documentMenu.downloadXFDFAnnotations false Boolean Activate the top panel download composite document button topPanel.documentMenu.download.root true Boolean The default behavior for download : DOWNLOAD_SOURCE or DOWNLOAD_NON_PDF topPanel.documentMenu.download.behavior DOWNLOAD_NON_PDF String Download all current documents as original format in a ZIP topPanel.documentMenu.downloadAllSources true Boolean Download the current document as FDF topPanel.documentMenu.downloadFDFAnnotations false Boolean Download the compared documents side by side with compare result on it topPanel.documentMenu.download.with.compare true Boolean Activate the download sub-menu (Since version 2023.15.0) topPanel.downloadMenu.enabled true Boolean Activate the import sub-menu (Since version 2023.15.0) topPanel.importMenu.enabled true Boolean Print menu Description Parameter Key Default value Type Display a dialog box allowing to choose the type of printing topPanel.print true Boolean configurations\/arender-custom-client.properties # Hide the print button topPanel.printfalse Annotation menu Description Parameter Key Default value Type Activate the annotation sub-menu topPanel.annotationMenu true Boolean Create a sticky note topPanel.annotationMenu.stikyNote true Boolean Create a rectangle topPanel.annotationMenu.highlight true Boolean Create a circle topPanel.annotationMenu.circle true Boolean Create an arrow topPanel.annotationMenu.arrow true Boolean Create a measurement arrow topPanel.annotationMenu.arrow.measure true Boolean Create a highlight text topPanel.annotationMenu.highlightText false Boolean Create an underline text topPanel.annotationMenu.underlineText false Boolean Create a strikeout text topPanel.annotationMenu.strikethroughText false Boolean Create a polygon topPanel.annotationMenu.polygon true Boolean Create a polyline topPanel.annotationMenu.polyline true Boolean Create a freehand topPanel.annotationMenu.freehand true Boolean Create a hyperlink topPanel.annotationMenu.hyperlink false Boolean Create a stamp topPanel.annotationMenu.stamp true Boolean Create an audio annotation topPanel.annotationMenu.sound false Boolean Display\/hide all annotations topPanel.annotationMenu.hide true Boolean Display\/hide annotations \u0026amp; rotations topPanel.annotationMenu.hideAll false Boolean Create a freetext topPanel.annotationMenu.freetext true Boolean Allow the sticky note to be edited topPanel.annotationMenu.stickyNote.editable true Boolean Create a rectangle in repeat mode (does not cancel unless pressed again) topPanel.annotationMenu.highlight.repeat false Boolean Create an arrow in repeat mode (does not cancel unless pressed again) topPanel.annotationMenu.arrow.repeat false Boolean Create a measurement arrow in repeat mode (does not cancel unless pressed again) topPanel.annotationMenu.arrow.measure.repeat false Boolean Create a polygon in repeat mode (does not cancel unless pressed again) topPanel.annotationMenu.polygon.repeat false Boolean Create a polyline in repeat mode (does not cancel unless pressed again) topPanel.annotationMenu.polyline.repeat false Boolean Create a freehand in repeat mode (does not cancel unless pressed again) topPanel.annotationMenu.freehand.repeat false Boolean Create a highlight text in repeat mode (does not cancel unless pressed again) topPanel.annotationMenu.highlightText.repeat false Boolean Create an underline text in repeat mode (does not cancel unless pressed again) topPanel.annotationMenu.underlineText.repeat false Boolean Create a strikeout text in repeat mode (does not cancel unless pressed again) topPanel.annotationMenu.strikethroughText.repeat false Boolean Create a circle in repeat mode (does not cancel unless pressed again) topPanel.annotationMenu.circle.repeat false Boolean Create a hyperlink in repeat mode (does not cancel unless pressed again) topPanel.annotationMenu.hyperlink.repeat false Boolean Navigation Description Parameter Key Default value Type Go to first page topPanel.pageNavigation.first true Boolean Go to previous page topPanel.pageNavigation.previous true Boolean Go to next page topPanel.pageNavigation.next true Boolean Go to last page topPanel.pageNavigation.last true Boolean Zoom Description Parameter Key Default value Type Zoom in topPanel.zoom.in true Boolean Zoom out topPanel.zoom.out true Boolean Zoom on a selected zone topPanel.zoom.zone true Boolean Adjust the zoom to the window width topPanel.zoom.fullWidth true Boolean Adjust the zoom to the window height topPanel.zoom.fullHeight true Boolean Adjust the zoom to both the window width and height topPanel.zoom.fullPage true Boolean Enable zone zoom in external window topPanel.zoom.zoneGlass false Boolean Zone zoom multiplication topPanel.zoom.zoneGlass.value 2 Integer Rotation Description Parameter Key Default value Type Rotate current page to the right topPanel.rotation.right true Boolean Rotate current page to the left topPanel.rotation.left true Boolean Rotate all pages to the left and right topPanel.rotation.all false Boolean Reset all rotations topPanel.rotation.reset false Boolean Sets up the amount of rotation applied when pressing the rotation buttons topPanel.rotation.degree 90 Integer Activates rotations sub-menu topPanel.rotation.add true Boolean Pages navigation Description Parameter Key Default value Type Go to first page navigation topPanel.pageNavigation.first true Boolean Go to previous page navigation topPanel.pageNavigation.previous true Boolean Go to next page navigation topPanel.pageNavigation.next true Boolean Go to last page navigation topPanel.pageNavigation.last true Boolean Other features Description Parameter Key Default value Type Refresh annotations topPanel.refresh true Boolean Full text search topPanel.search true Boolean Default search behavior. Otherwise, open in the advanced search panel topPanel.search.default false Boolean If true and topPanel.search.default is true, display search text results in the AdvancedSearchExplorer topPanel.search.displayResultsInExplorer true Boolean The \u0026ldquo;next result\u0026rdquo; search button will jump to the next result on the current visible page instead of resuming where you left the search topPanel.searchByVisiblePage true Boolean Full screen mode topPanel.fullscreen true Boolean Full screen mode will hide the top panel totally topPanel.fullscreen.hideTopPanel false Boolean The toppanel will always be visible in full screen and won\u0026rsquo;t hide topPanel.fullscreen.alwaysShowTopPanel false Boolean Boxed zoom topPanel.zoomBox true Boolean Copy all text of the document topPanel.document.text false Boolean Cropbox topPanel.cropbox.enabled false Boolean Brightness slider topPanel.imageProcessMenu.brightness.enabled true Boolean Contrast slider topPanel.imageProcessMenu.contrast.enabled false Boolean Invert color slider topPanel.imageProcessMenu.invert.enabled false Boolean Set how image processing is applied : CURRENT_PAGE, ALL_PAGES, ALL_DOCUMENTS topPanel.imageProcessMenu.process.mode ALL_DOCUMENTS String /p>p>configuration/p>p>menu/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/toppanel\/ }, { value: Menu bar, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/toppanel\/, label: p>Logo Key: topPanel.logo Description Parameter Key Type The URL of the image url String The image width width Integer The image height height Integer The image margin left margin.left Integer arender.properties # Change ARender logo for my company\u0026#39;s one topPanel.logo.urlhttp:\/\/www.mycompany.com\/logos\/logo.svg topPanel.logo.width100 topPanel.logo.height40 # Hide the logo topPanel.logofalse Document menu Key: topPanel./p>p>Logo Key: topPanel.logo Description Parameter Key Type The URL of the image url String The image width width Integer The image height height Integer The image margin left margin.left Integer arender.properties # Change ARender logo for my company\u0026#39;s one topPanel.logo.urlhttp:\/\/www.mycompany.com\/logos\/logo.svg topPanel.logo.width100 topPanel.logo.height40 # Hide the logo topPanel.logofalse Document menu Key: topPanel.documentMenu Description Parameter Key Type Upload a document from local disk upload Boolean Upload a document from a remote URL url Boolean Upload XFDF annotations from local xfdfUpload Boolean Download current document in PDF downloadPDF Boolean Download current document in native format (only not PDF document) download Boolean Download all visualized documents downloadAll Boolean Download current document with its annotations downloadAnnotation Boolean Download annotations in CSV format downloadCSVAnnotation Boolean Download document with FDF annotations downloadWithFDFAnnotation Boolean Download annotations in XFDF format downloadXFDFAnnotations Boolean arender.properties # Prevent any possibility to download a document via the menu bar topPanel.documentMenu.downloadfalse topPanel.documentMenu.downloadPDFfalse topPanel.documentMenu.downloadAllfalse # If the downloadAll mode does not work because of a document blocking # the download process (erroneous document) add the below property # in arender-server-custom-\u0026lt;...\u0026gt;.properties file arender.server.rendition.ignore.document.accessors.with.exceptionstrue Print menu Key: topPanel.print Description Type Display a dialog box allowing to choose the type of printing Boolean arender.properties # Hide the print button topPanel.printfalse Annotation menu Key: topPanel.annotationMenu Description Parameter Key Type Create a sticky note stikyNote Boolean Create a rectangle highlight Boolean Create a circle circle Boolean Create an arrow arrow Boolean Create a measurement arrow arrow.measure Boolean Create a highlight text highlightText Boolean Create an underline text underlineText Boolean Create a strikeout text strikethroughText Boolean Create a polygon polygon Boolean Create a polyline polyline Boolean Create a freehand freehand Boolean Create a stamp stamp Boolean Display\/hide all annotations hide Boolean Display\/hide annotations \u0026amp; rotations hideAll Boolean arender.properties # Display sticky note creation button topPanel.annotationMenu.stickyNotetrue # Hide arrow creation button, topPanel.annotationMenu.arrowfalse Navigation Key: topPanel.pageNavigation Description Parameter Key Type Go to first page first Boolean Go to previous page previous Boolean Go to next page next Boolean Go to last page last Boolean arender.properties # Hide buttons to go to first and last pages topPanel.pageNavigation.firstfalse topPanel.pageNavigation.lastfalse Zoom Key: topPanel.zoom Description Parameter Key Type Zoom in in Boolean Zoom out out Boolean Zoom on a selected zone zone Boolean Adjust the zoom to the window width fullWidth Boolean Adjust the zoom to the window height fullHeight Boolean Adjust the zoom to both the window width and height fullPage Boolean Enable zone zoom in external window zoneGlass Boolean Zone zoom multiplication zoneGlass.value Integer arender.properties # Hide the button allowing to enable zonal zoom topPanel.zoom.zonefalse Rotation Key: topPanel.rotation Description Parameter Key Type Rotate current page to the right right Boolean Rotate current page to the left left Boolean Rotate all pages to the left and right all Boolean arender.properties # Disable rotation buttons topPanel.rotation.rightfalse topPanel.rotation.leftfalse Other features Key: topPanel Description Parameter Key Type Create a redact text redact Boolean Refresh annotations refresh Boolean Full text search search Boolean Fullscreen mode fullscreen Boolean /p>p>configuration/p>p>menu/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/toppanel\/ }, { value: Merge documents, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/merge-documents\/, label: p>ARender provides a way to generate a fusion of multiple documents into one PDF. The UUID of the new document (composed of merging those given in parameter) will be returned.\nRequest to use This functionality relies on the use of the servlet: mergeDocumentsServlet.\nUsable in POST or GET.\nRequest example You will find below, exemple with documents accessible by URL. You can also put any kind of parameter matching any connector (FileNet, Alfresco etc\u0026hellip;)/p>p>ARender provides a way to generate a fusion of multiple documents into one PDF. The UUID of the new document (composed of merging those given in parameter) will be returned.\nRequest to use This functionality relies on the use of the servlet: mergeDocumentsServlet.\nUsable in POST or GET.\nRequest example You will find below, exemple with documents accessible by URL. You can also put any kind of parameter matching any connector (FileNet, Alfresco etc\u0026hellip;)\ncurl --data \u0026#34;url..\/..\/samples\/arender.pdf\u0026amp;url..\/..\/samples\/fw4.pdf\u0026#34; http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/mergeDocumentsServlet curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/mergeDocumentsServlet?url..\/..\/samples\/arender.pdf\u0026amp;url..\/..\/samples\/fw4.pdf\u0026amp;url..\/..\/samples\/arender-en.pdf\u0026#39; Servlet Response The servlet returns the UUID of the merged document and its number of pages.\nresponse {\u0026#34;uuid\u0026#34;:\u0026#34;b64_NWNjODk3MmQtMjJhOC00YzM3LWE4YjItNjZiMTkzOGFkMzU0\u0026#34;,\u0026#34;nbPages\u0026#34;:\u0026#34;32\u0026#34;} Here the UUID is: b64_NWNjODk3MmQtMjJhOC00YzM3LWE4YjItNjZiMTkzOGFkMzU0.\nThe number of pages is 32.\nOne the request executed, the merged document is in ARender cache and viewable through the URL below:\n http:\/\/{arender_host}\/ARender\/?uuidb64_NWNjODk3MmQtMjJhOC00YzM3LWE4YjItNjZiMTkzOGFkMzU0\n Even downloadable through:\n http:\/\/{arender_host}\/ARender\/arendergwt\/downloadServlet?uuidb64_NWNjODk3MmQtMjJhOC00YzM3LWE4YjItNjZiMTkzOGFkMzU0\u0026amp;titleDocumentTitle\u0026amp;typeINITIAL\n /p>p>tutorial/p>p>merge/p>p>builder/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/merge-documents\/ }, { value: Merge documents, path: https:\/\/docs.arender.io\/learn\/how-to\/merge-documents\/, label: p>ARender provides a way to generate a fusion of multiple documents into one PDF.\nRequest to use This functionality relies on the use of the servlet: mergeDocumentsServlet.\nUsable in POST or GET.\nRequest example You will find below, exemple with documents accessible by URL. You can also put any kind of parameter matching any connector (FileNet, Alfresco etc\u0026hellip;)\ncurl --data \u0026#34;url..\/..\/samples\/arender.pdf\u0026amp;url..\/..\/samples\/fw4.pdf\u0026#34; http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/mergeDocumentsServlet curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/mergeDocumentsServlet?url..\/..\/samples\/arender.pdf\u0026amp;url..\/..\/samples\/fw4.pdf\u0026amp;url..\/..\/samples\/arender-en.pdf\u0026#39; Servlet Response The servlet returns the UUID of the merged document and its number of pages./p>p>ARender provides a way to generate a fusion of multiple documents into one PDF.\nRequest to use This functionality relies on the use of the servlet: mergeDocumentsServlet.\nUsable in POST or GET.\nRequest example You will find below, exemple with documents accessible by URL. You can also put any kind of parameter matching any connector (FileNet, Alfresco etc\u0026hellip;)\ncurl --data \u0026#34;url..\/..\/samples\/arender.pdf\u0026amp;url..\/..\/samples\/fw4.pdf\u0026#34; http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/mergeDocumentsServlet curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/mergeDocumentsServlet?url..\/..\/samples\/arender.pdf\u0026amp;url..\/..\/samples\/fw4.pdf\u0026amp;url..\/..\/samples\/arender-en.pdf\u0026#39; Servlet Response The servlet returns the UUID of the merged document and its number of pages.\nresponse {\u0026#34;uuid\u0026#34;:\u0026#34;b64_NWNjODk3MmQtMjJhOC00YzM3LWE4YjItNjZiMTkzOGFkMzU0\u0026#34;,\u0026#34;nbPages\u0026#34;:\u0026#34;32\u0026#34;} Here the UUID is: b64_NWNjODk3MmQtMjJhOC00YzM3LWE4YjItNjZiMTkzOGFkMzU0.\nThe number of pages is 32.\nOne the request executed, the merged document is in ARender cache and viewable through the URL below:\n http:\/\/{arender_host}\/ARender\/?uuidb64_NWNjODk3MmQtMjJhOC00YzM3LWE4YjItNjZiMTkzOGFkMzU0\n Even downloadable through:\n http:\/\/{arender_host}\/ARender\/arendergwt\/downloadServlet?uuidb64_NWNjODk3MmQtMjJhOC00YzM3LWE4YjItNjZiMTkzOGFkMzU0\u0026amp;titleDocumentTitle\u0026amp;typeINITIAL\n /p>p>tutorial/p>p>merge/p>p>builder/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/merge-documents\/ }, { value: Merge documents, path: https:\/\/docs.arender.io\/v4\/cookbook\/merge-documents\/, label: p>ARender provides a way to generate a fusion of multiple documents into one PDF.\nRequest to use This functionality relies on the use of the servlet: mergeDocumentsServlet.\nUsable in POST or GET.\nRequest example You will find below, exemple with documents accessible by URL. You can also put any kind of parameter matching any connector (FileNet, Alfresco etc\u0026hellip;)\ncurl --data \u0026#34;url..\/..\/samples\/arender.pdf\u0026amp;url..\/..\/samples\/fw4.pdf\u0026#34; http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/mergeDocumentsServlet curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/mergeDocumentsServlet?url..\/..\/samples\/arender.pdf\u0026amp;url..\/..\/samples\/fw4.pdf\u0026amp;url..\/..\/samples\/arender-en.pdf\u0026#39; Servlet Response The servlet returns the UUID of the merged document and its number of pages./p>p>ARender provides a way to generate a fusion of multiple documents into one PDF.\nRequest to use This functionality relies on the use of the servlet: mergeDocumentsServlet.\nUsable in POST or GET.\nRequest example You will find below, exemple with documents accessible by URL. You can also put any kind of parameter matching any connector (FileNet, Alfresco etc\u0026hellip;)\ncurl --data \u0026#34;url..\/..\/samples\/arender.pdf\u0026amp;url..\/..\/samples\/fw4.pdf\u0026#34; http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/mergeDocumentsServlet curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/mergeDocumentsServlet?url..\/..\/samples\/arender.pdf\u0026amp;url..\/..\/samples\/fw4.pdf\u0026amp;url..\/..\/samples\/arender-en.pdf\u0026#39; Servlet Response The servlet returns the UUID of the merged document and its number of pages.\nresponse {\u0026#34;uuid\u0026#34;:\u0026#34;b64_NWNjODk3MmQtMjJhOC00YzM3LWE4YjItNjZiMTkzOGFkMzU0\u0026#34;,\u0026#34;nbPages\u0026#34;:\u0026#34;32\u0026#34;} Here the UUID is: b64_NWNjODk3MmQtMjJhOC00YzM3LWE4YjItNjZiMTkzOGFkMzU0.\nThe number of pages is 32.\nOne the request executed, the merged document is in ARender cache and viewable through the URL below:\n http:\/\/{arender_host}\/ARender\/?uuidb64_NWNjODk3MmQtMjJhOC00YzM3LWE4YjItNjZiMTkzOGFkMzU0\n Even downloadable through:\n http:\/\/{arender_host}\/ARender\/arendergwt\/downloadServlet?uuidb64_NWNjODk3MmQtMjJhOC00YzM3LWE4YjItNjZiMTkzOGFkMzU0\u0026amp;titleDocumentTitle\u0026amp;typeINITIAL\n /p>p>tutorial/p>p>merge/p>p>builder/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/merge-documents\/ }, { value: Migrate configuration from 4.x to 4.7, path: https:\/\/docs.arender.io\/learn\/how-to\/migrateconfig4-7\/, label: p>Version 4.7 brings a lot of visual modification that involves configuration changes in beans, but also properties in arender.properties as well as CSS. This page aims to show how to properly adapt the old configurations to the new one.\nWarning Since 4.7.2, the configurations made before 4.7 are retro-compatible. However, it is advisable to make the modifications to the new configuration standard. The Toppanel New organization of the Toppanel The Toppanel is organized into several sections to organize the different buttons./p>p>Version 4.7 brings a lot of visual modification that involves configuration changes in beans, but also properties in arender.properties as well as CSS. This page aims to show how to properly adapt the old configurations to the new one.\nWarning Since 4.7.2, the configurations made before 4.7 are retro-compatible. However, it is advisable to make the modifications to the new configuration standard. The Toppanel New organization of the Toppanel The Toppanel is organized into several sections to organize the different buttons. Here are the different sections listed in their default order:\n File And annotation : Contains all buttons related to download, print and annotations File (Contained in the first section) : Contains all buttons related to download and print Annotation (Contained in the first section) : Contains all buttons related to annotations Modification : Contains rotations, brightness and contrasts buttons Navigation : Contains all buttons related to the document navigation Zoom : Contains all buttons related to the zoom. MultiView tools : Contains all buttons related to multiview Plugin : Contains all buttons for Plume and HTML plugins Right : Contains all buttons needed to be to the right like the ellipsis This organization can be modified as in previous versions. Here is a list of the different properties used to manipulate the arrangement of the different elements of the Toppanel:\n topPanel.widgets.beanNames topPanel.upload.buttons.beanNames topPanel.download.buttons.beanNames topPanel.section.file.buttons.beanNames topPanel.section.file.annotation.buttons.beanNames topPanel.section.modification.buttons.beanNames topPanel.ellipsis.buttons.beanNames topPanel.section.plugin.buttons.beanNames topPanel.search.buttons.beanNames topPanel.navigation.buttons.beanNames topPanel.zoom.buttons.beanNames topPanel.rotation.buttons.beanNames topPanel.annotation.buttons.beanNames topPanel.imageProcessing.buttons.vertical.beanNames topPanel.section.right.buttons.beanNames Special cases The File and Annotation section is a section that will simply serve as a container for the File and Annotation sections in order to have them side by side.\nThe Right section is the section which will always be the furthest to the right and which will contain the Ellipsis button (Burger menu).\nButtons, activable buttons and sub-menu items The annotation buttons The annotation buttons are located directly in the toppanel in the Annotation section. The repeat mode can be activated with a double-click if the property associated with the annotation is activated. It is still possible to have the repeat mode on a button with a single click.\nTo have this behavior, you must replace the buttonHandler property. Annotations with a repeat function will have bean references for normal mode and repeat mode.\nHere is an example of a buttonHandler property that activates repeat mode when the button is clicked:\nconfigurations\/arender-custom-server-integration.xml \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCircleCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; Note Bean references for button actions can be found in the file named events-configuration.xml. Example of a standard annotation button configurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;addHighlightCircleAnnotationButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addHighlightCircleAnnotationButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;Circle\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;supportDoubleClick\u0026#34; value\u0026#34;${topPanel.annotationMenu.circle.repeat}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.circle}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-add-circle toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#addCircleAnnotation\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;doubleClickButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCircleCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;inactiveButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;quitAnnotationCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCircleCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Example of annotation button activating repeat mode with one-click configurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;addHighlightCircleAnnotationRepeatButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addHighlightCircleAnnotationRepeatButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.circle.repeat}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;active\u0026#34; value\u0026#34;false\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-add-circle toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#addCircleAnnotation\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCircleCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Activate a button with a keyboard shortcut Buttons can have a keyboard shortcut to activate the action that is usually done on click. The different types of shortcut available are of the form:\n {Specific key} \u002b {Key} {Specific key} \u002b {Specific key} \u002b {Key} {Specific key} \u002b {Specific key} \u002b {Specific key} \u002b {Key} Where {Key} corresponding to a alphabetic or numeric key on the keyboard and {Specific key} can be ALT, SHIFT, or CTRL.\nFor buttons (Using the ButtonPresenter class) and activable buttons (Using the ActivableButtonPresenter class), add the following property in the desired bean:\nconfigurations\/arender-custom-server-integration.xml \u0026lt;property name\u0026#34;shortcut\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.documentcontent.shortcuts.KeyboardShortCut\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;ctrl\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;key\u0026#34; value\u0026#34;KEY_TO_USE\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;IS_ENABLED\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; Property to add in the shortcut bean to activate the CTRL key:\nconfigurations\/arender-custom-server-integration.xml \u0026lt;property name\u0026#34;ctrl\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; Property to add in the shortcut bean to activate the SHIFT key:\nconfigurations\/arender-custom-server-integration.xml \u0026lt;property name\u0026#34;shift\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; Property to add in the shortcut bean to activate the ALT key:\nconfigurations\/arender-custom-server-integration.xml \u0026lt;property name\u0026#34;alt\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; Conversion between button and sub-menu item: The buttons found in the submenus and the buttons found in the toppanel now use different classes. This will also result in differences in the definition of the bean.\nExample of button, activable button and sub-menu item The following examples show a fully constructed bean for the three shapes mentioned. The action that is triggered by each is the printing of the document.\nNote A button is a simple button that will return to the initial visual state after clicking on it. An activable button is a button that will stay at an active visual state on click and then will go back to the default visual state after clicking on it again. Sub menu item configurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;printButton\u0026#34; class\u0026#34;com.arondor.viewer.client.widgets.DropdownMenuItem\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;printButton\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;#{ !${isMobile} and ${topPanel.print}}\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-print toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#printDocument\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;shortCut\u0026#34; value\u0026#34;CTRL \u002b ${shortCut.print.key}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.toppanel.behavior.document.DocumentPrintHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.print.ShowPrintDialogBoxEvent\u0026#34; \/\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Button configurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;printButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;printButton\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;#{ !${isMobile} and ${topPanel.print}}\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-print toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#printDocument\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.toppanel.behavior.document.DocumentPrintHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.print.ShowPrintDialogBoxEvent\u0026#34; \/\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Activable button configurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;printButton\u0026#34; class\u0026#34;com.arondor.viewer.client.widgets.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;printButton\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;#{ !${isMobile} and ${topPanel.print}}\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-print toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#printDocument\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.toppanel.behavior.document.DocumentPrintHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.print.ShowPrintDialogBoxEvent\u0026#34; \/\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; We see that the beans are similar here. But activable buttons (Using the ActivableButtonPresenter class) can accept the following properties:\n name buttonGroup inactiveButtonHandler supportShortCut shortcut For buttons (Using the ButtonPresenter class) only the following properties can be added:\n name supportShortCut shortcut The previous properties cannot be used by submenu items (Using the DropdownMenuItem class).\nPutting the research directly in the toppanel The search button corresponds to the bean with the id searchSection. This bean must then be deleted from the list of beans to be instantiated.\nLocation of the use of the id: arender-default.properties topPanel.section.right.buttons.beanNamesdocumentBuilderButton,fullscreenButton,searchSection,moreButton \nRemoving the id by redefining the property: arender.properties topPanel.section.right.buttons.beanNamesdocumentBuilderButton,fullscreenButton,moreButton \nThen, you will have to redefine a property with the bean id searchBox: arender.properties topPanel.section.right.buttons.beanNamessearchBox,documentBuilderButton,fullscreenButton,moreButton \nClass name changes If you are using 4.7.0 or 4.7.1, then some classes have changed package. Please replace them.\n Old Package name New Package Name com.arondor.viewer.client.toppanel.presenter.SliderPanelPresenter com.arondor.viewer.client.annotation.slider.SliderPanelPresenter com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter com.arondor.viewer.client.widgets.ActivableButtonPresenter com.arondor.viewer.client.toppanel.presenter.DialogBoxPushButton com.arondor.viewer.client.widgets.DialogBoxPushButton com.arondor.viewer.client.toppanel.presenter.SimpleTopPanelSubMenu com.arondor.viewer.client.widgets.SimpleTopPanelSubMenu com.arondor.viewer.client.toppanel.presenter.TopPanelSubMenu com.arondor.viewer.client.widgets.TopPanelSubMenu Warning These class changes are only valid for 4.7.0 and 4.7.1. Since version 4.7.2, the old package names have been added again in order to have better retro-compatibility. Bean changes The bean with the id annotationMenu has changed class. The new class is com.arondor.viewer.client.toppanel.presenter.SimpleButtonSetPresenter.\nThe arrow head or tail selection buttons have been changed. Their class is now com.arondor.viewer.client.widgets.DropdownMenuItem\nThe imageResource property can no longer be used in bean definitions.\nBean deletion (4.7.0 and 4.7.1) List of bean ids removed for version 4.7.0 and 4.7.1:\n documentMenu imageProcessingVerticalSubMenu addHighlightRectangleAnnotationRepeatButton addHighlightCircleAnnotationRepeatButton addArrowAnnotationRepeatButton addHighlightTextAnnotationRepeatButton addUnderlineTextAnnotationRepeatButton addStrikethroughTextAnnotationRepeatButton addPolygonAnnotationRepeatButton addPolylineAnnotationRepeatButton addFreehandAnnotationRepeatButton logo Warning These beans have been added in version 4.7.2 for better retro-compatibility. These beans are in the file toppanel-configuration-legacy.xml. CSS modifications Icon font The toppanel icons have been changed. Icons are made with custom font.\nAdded color variables The background, icon and hover colors in the toppanel can be changed between light color and dark color with a property:\narender.properties preference.color.modeDARK The DARK value will be for the dark color by default, the LIGHT value will be for the light color and the CUSTOM value allows to use custom colors redefined in a css for the css class named .custom-theme . By default, the CUSTOM value will match the colors defined for the DARK value.\nDARK --bg-top-panel-general-items: #4E4E4E --bg-top-panel-specific-items: #313131 --bg-button-hover-specific-items: #505050 --bg-button-hover-general-items: #313131 --bg-input: #585858 --bg-zoom-button: #464646 --bg-zoom-button-hover: #787878 --bg-dropdown-menu: #434343 --bg-item-hover-dropdown-menu: #505050 --color-button: #ADADAD --color-button-hover: #F1F1F1 --color-button-active: #04AEEF --color-button-disabled: #ADADAD4C --color-section-title-dropdown-menu: #878787 --color-item-shortcut-dropdown-menu: #878787 --color-item-shortcut-hover-dropdown-menu: #F1F1F1 --color-separator: #707070 --bg-scrollbar: #f2f2f2 --bg-scrollbar-thumb: #b3b3b3 --bg-scrollbar-thumb-hover: #999999 --bg-scrollbar-thumb-active: #6d6d6d LIGHT --bg-top-panel-general-items: #D3D3D3 --bg-top-panel-specific-items: #F6F6F6 --bg-button-hover-specific-items: #DADADA --bg-button-hover-general-items: #F6F6F6 --bg-input: #EAEAEA --bg-zoom-button: #DFDFDF --bg-zoom-button-hover: #BDBDBD --bg-dropdown-menu: #F6F6F6 --bg-item-hover-dropdown-menu: #DADADA --color-button: #707070 --color-button-hover: #1F1F1F --color-button-active: #04AEEF --color-button-disabled: #7070704C --color-section-title-dropdown-menu: #D0D0D0 --color-item-shortcut-dropdown-menu: #C1C1C1 --color-item-shortcut-hover-dropdown-menu: #868686 --color-separator: #D3D3D3 --bg-scrollbar: #f2f2f2 --bg-scrollbar-thumb: #b3b3b3 --bg-scrollbar-thumb-hover: #999999 --bg-scrollbar-thumb-active: #6d6d6d Warning These color variables are not functional for Internet Explorer. List of css modifications Plume Plugin : Bean id Old CSS class New CSS class plumeMenu none standardButton icon-plugin-plume toppanelButton plumeButton none standardButton icon-plugin-plume toppanelButton replyButton none standardButton icon-reply toppanelButton replyAllButton none standardButton dropdown-MenuButton icon-open-file toppanelButton forwardButton none standardButton icon-forward toppanelButton HTML Plugin : Bean id Old CSS class New CSS class htmlPluginMenu none standardButton icon-plugin-html toppanelButton viewHtmlButton none standardButton icon-plugin-html toppanelButton closeHtmlButton none standardButton icon-close toppanelButton Annotations : Bean id Old CSS class New CSS class annotationMenu standardButton annotationManagerButton fullHeight annotationMenu showAllAnnotationsButton standardButton hideAnnotationButton standardButton icon-hide toppanelButton showAllAnnotationsAndRotationsButton standardButton showAnnotationButton standardButton icon-hide toppanelButton addStickyNoteAnnotationButton standardButton addAnnotationButton standardButton icon-add-sticky toppanelButton addHighlightRectangleAnnotationButton standardButton rectangleAnnotationButton standardButton icon-highlight-area toppanelButton addFreeTextAnnotationButton standardButton freetextAnnotationButton standardButton icon-add-free-text toppanelButton addHighlightTextAnnotationButton standardButton highlightAnnotationButton standardButton icon-highlight addUnderlineTextAnnotationButton standardButton underlineAnnotationButton standardButton icon-underline addStrikethroughTextAnnotationButton standardButton strikethroughAnnotationButton standardButton icon-strikethrough addHighlightCircleAnnotationButton standardButton circleAnnotationButton standardButton icon-add-circle toppanelButton addObfuscateAnnotationButton standardButton obfuscateButton standardButton icon-redact-text addObfuscateZoneAnnotationButton standardButton obfuscateZoneButton standardButton icon-redact-area addArrowAnnotationButton standardButton arrowAnnotationButton standardButton icon-add-arrow toppanelButton addPolygonAnnotationButton standardButton polygonAnnotationButton standardButton icon-add-polygon toppanelButton addPolylineAnnotationButton standardButton polylineAnnotationButton standardButton icon-add-multiline toppanelButton addFreehandAnnotationButton standardButton freehandAnnotationButton standardButton icon-add-hand-draw toppanelButton addStampAnnotationButton standardButton stampAnnotationButton standardButton icon-add-stamp toppanelButton saveDirtyAnnotations standardButton saveAnnotationsButton standardButton icon-save toppanelButton refreshAnnotation standardButton refreshAnnotationButton standardButton icon-refresh-annotations toppanelButton changeLineHead standardButton changeHeadStyleButton standardButton icon-head-solid-arrow changeLineHeadSquare standardButton squareStyleButton standardButton icon-head-square changeLineHeadCircle standardButton circleStyleButton standardButton icon-head-circle changeLineHeadButt standardButton buttStyleButton standardButton icon-head-line changeLineHeadDiamond standardButton diamondStyleButton standardButton icon-head-diamond changeLineHeadOpenArrow standardButton openArrowStyleButton standardButton icon-head-outline-arrow changeLineHeadROpenArrow standardButton rOpenArrowStyleButton standardButton icon-head-outline-arrow-invert changeLineHeadClosedArrow standardButton closedArrowStyleButton standardButton icon-head-solid-arrow changeLineHeadRClosedArrow standardButton rClosedArrowStyleButton standardButton icon-head-solid-arrow-invert changeLineHeadNone standardButton noneStyleButton standardButton icon-arrow-none changeLineTail standardButton changeTailStyleButton standardButton icon-tail-solid-arrow changeLineTailSquare standardButton squareStyleButton standardButton icon-tail-square changeLineTailCircle standardButton circleStyleButton standardButton icon-tail-circle changeLineTailButt standardButton buttStyleButton standardButton icon-tail-line changeLineTailDiamond standardButton diamondStyleButton standardButton icon-tail-diamond changeLineTailOpenArrow standardButton openArrowStyleButton standardButton icon-tail-outline-arrow changeLineTailROpenArrow standardButton rOpenArrowStyleButton standardButton icon-tail-outline-arrow-invert changeLineTailClosedArrow standardButton closedArrowStyleButton standardButton icon-tail-solid-arrow changeLineTailRClosedArrow standardButton rClosedArrowStyleButton standardButton icon-tail-solid-arrow-invert changeLineTailNone standardButton noneStyleButton standardButton icon-arrow-none Bean id Old property name Old CSS class New property name New CSS class showAllAnnotationsButton inactiveClassName standardButton hideAnnotationButton activeClassName standardButton icon-show toppanelButton showAnnotation showAllAnnotationsButton className standardButton showAnnotationButton className standardButton icon-hide toppanelButton showAllAnnotationsAndRotationsButton inactiveClassName standardButton showAnnotationButton activeClassName standardButton icon-show toppanelButton showAnnotation showAllAnnotationsAndRotationsButton className standardButton showAnnotationButton className standardButton icon-show toppanelButton showAnnotation Contextual menu : Bean id Old CSS class New CSS class stampAction standardButton stampAnnotationContextualMenu standardButton icon-add-stamp contextualMenu freetextAction standardButton freetextAnnotationContextualMenu standardButton icon-add-free-text contextualMenu printAction standardButton printContextualMenu standardButton icon-print contextualMenu printAllAction standardButton printContextualMenu standardButton icon-print contextualMenu rotateLeftAction standardButton turnLeftContextualMenu standardButton icon-turn-page-left contextualMenu rotateRightAction standardButton turnRightContextualMenu standardButton icon-turn-page-right contextualMenu stickyNoteAction standardButton addAnnotationContextualMenu standardButton icon-add-sticky contextualMenu hyperlinkAction standardButton hyperlinkAnnotationContextualMenu standardButton icon-hyperlinks contextualMenu cropBoxImageAction standardButton cropBoxImageContextualMenu standardButton cropBoxImageContextualMenu contextualMenu highlightTextAction standardButton highlightAnnotationContextualMenu standardButton icon-highlight contextualMenu deleteHighLightTextAction standardButton removeContextualMenu standardButton icon-delete contextualMenu strikeoutTextAction standardButton strikethroughAnnotationContextualMenu standardButton icon-strikethrough contextualMenu underlineTextAction standardButton underlineAnnotationContextualMenu standardButton icon-underline contextualMenu highlightAction standardButton rectangleAnnotationContextualMenu standardButton icon-highlight-area contextualMenu highlightCircleAction standardButton circleAnnotationContextualMenu standardButton icon-add-circle contextualMenu arrowAction standardButton arrowAnnotationContextualMenu standardButton icon-add-arrow contextualMenu closeMultiViewAction standardButton clearContextualMenu standardButton icon-close contextualMenu addPolygonAction standardButton polygonAnnotationContextualMenu standardButton icon-add-polygon contextualMenu addPolylineAction standardButton polylineAnnotationContextualMenu standardButton icon-add-multiline contextualMenu addFreehandAction standardButton freehandAnnotationContextualMenu standardButton icon-add-hand-draw contextualMenu anchorAnnotationAction standardButton anchorAnnotationContextualMenu standardButton icon-anchor contextualMenu copyAction none standardButton icon-copy contextualMenu downloadContextualMenuAction pictreeButton saveDocumentButton pictreeButton saveDocumentButton contextualMenu downloadAnnotationsContextualMenuAction pictreeButton saveDocumentWithAnnotationsButton pictreeButton saveDocumentWithAnnotationsButton contextualMenu createFirstContextualMenuAction pictreeButton saveDocumentCreateFirstButton pictreeButton saveDocumentCreateFirstButton contextualMenu updateFirstContextualMenuAction pictreeButton saveDocumentUpdateFirstButton pictreeButton saveDocumentUpdateFirstButton contextualMenu deleteDocumentContextualMenuAction pictreeButton deleteDocumentButton pictreeButton deleteDocumentButton contextualMenu Toppanel : Bean id Old CSS class New CSS class documentBuilderButton standardButton selectiveCopyButton standardButton icon-docbuilder firstPageButton standardButton firstPageButton standardButton icon-go-to-first-page noPadding previousPageButton standardButton prevButton standardButton icon-go-to-previous-page noPadding nextPageButton standardButton nextButton standardButton icon-go-to-next-page noPadding lastPageButton standardButton lastPageButton standardButton icon-go-to-last-page noPadding previousDocumentButton standardButton prevButton standardButton icon-go-to-previous-page noPadding nextDocumentButton standardButton nextButton standardButton icon-go-to-next-page noPadding fullscreenButton standardButton fullScreenButton standardButton icon-full-screen toppanelButton printButton standardButton printButton standardButton icon-print toppanelButton printAllButton standardButton printButton standardButton icon-print toppanelButton uploadButton standardButton fileUploadButton standardButton icon-open-file toppanelButton uploadURLButton standardButton urlUploadButton standardButton icon-open-url toppanelButton uploadXFDFButton standardButton xfdfUploadButton standardButton icon-open-file toppanelButton downloadButton standardButton downloadButton standardButton icon-download toppanelButton downloadRootButton standardButton downloadRootButton standardButton icon-export-zip toppanelButton downloadXFDFAnnotationsButton standardButton downloadXFDFAnnotationsButton standardButton icon-export-with-annotations toppanelButton downloadAnnotationsCSVButton standardButton downloadAnnotationAsCSVButton standardButton icon-export-with-annotations toppanelButton downloadPdfButton standardButton downloadPDFButton standardButton icon-export-pdf toppanelButton downloadAllButton standardButton downloadAllButton standardButton icon-export-pdf toppanelButton downloadAllSourcesButton standardButton downloadAllSourcesButton standardButton icon-export-zip toppanelButton downloadAnnotationsButton standardButton downloadAnnotationButton standardButton icon-export-with-annotations toppanelButton downloadWithFDFAnnotationsButton standardButton downloadWithFDFAnnotationButton standardButton icon-export-with-annotations toppanelButton downloadFDFAnnotationsButton standardButton downloadFDFAnnotationButton standardButton icon-export-with-annotations toppanelButton downloadWithCompareButton standardButton downloadCompareButton standardButton icon-download-comparison rotateLeft standardButton turnLeftButton standardButton icon-turn-page-left toppanelButton rotateAllLeft standardButton turnAllLeftButton standardButton icon-turn-all-pages-left rotateAllRight standardButton turnAllRightButton standardButton icon-turn-all-pages-right rotateRight standardButton turnRightButton standardButton icon-turn-page-right toppanelButton rotateReset standardButton resetRotationButton standardButton icon-reset-rotation zoomFullWidth standardButton zoomFullWidthButton standardButton icon-fit-to-width-size toppanelButton zoomFullHeight standardButton zoomFullHeightButton standardButton icon-fit-to-height-size toppanelButton zoomFullPage standardButton zoomFullPageButton standardButton icon-fit-to-page toppanelButton zoomIn standardButton zoomInButton standardButton icon-minus zoomInZone standardButton zoomInZoneButton standardButton icon-zoom-in-area toppanelButton zoomInZoneGlass standardButton zoomInZoneGlassButton standardButton icon-zoom-in-area-new-window toppanelButton zoomOut standardButton zoomOutButton standardButton icon-plus cropBoxButton standardButton cropBoxImage standardButton icon-screenshot previousButton standardButton prevButton standardButton icon-go-to-previous-page synchronizeScrollButton standardButton synchronizeDocumentScrollingButton standardButton icon-sync-scroll nextButton standardButton nextButton standardButton icon-go-to-next-page moreButton standardButton showMoreButton standardButton icon-ellipsis menuButton none e standardButton icon-list-view List of CSS removed topPanelSubMenu:BEFORE topPanelActivableButton topPanelActivatedButton /p>p>tutorial/p>p>migration/p>p>configuration/p>p>4.7/p>p>4.x/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/migrateconfig4-7\/ }, { value: Migrate configuration from 4.x to 4.7, path: https:\/\/docs.arender.io\/v4\/cookbook\/migrateconfig4-7\/, label: p>Version 4.7 brings a lot of visual modification that involves configuration changes in beans, but also properties in arender.properties as well as CSS. This page aims to show how to properly adapt the old configurations to the new one.\nWarning Since 4.7.2, the configurations made before 4.7 are retro-compatible. However, it is advisable to make the modifications to the new configuration standard. The Toppanel New organisation of the Toppanel The Toppanel is organized into several sections to organize the different buttons./p>p>Version 4.7 brings a lot of visual modification that involves configuration changes in beans, but also properties in arender.properties as well as CSS. This page aims to show how to properly adapt the old configurations to the new one.\nWarning Since 4.7.2, the configurations made before 4.7 are retro-compatible. However, it is advisable to make the modifications to the new configuration standard. The Toppanel New organisation of the Toppanel The Toppanel is organized into several sections to organize the different buttons. Here are the different sections listed in their default order:\n File And annotation : Contains all buttons related to download, print and annotations File (Contained in the first section) : Contains all buttons related to download and print Annotation (Contained in the first section) : Contains all buttons related to annotations Modification : Contains rotations, brightness and contrasts buttons Navigation : Contains all buttons related to the document navigation Zoom : Contains all buttons related to the zoom. MultiView tools : Contains all buttons related to multiview Plugin : Contains all buttons for Plume and HTML plugins Right : Contains all buttons needed to be to the right like the ellipsis This organization can be modified as in previous versions. Here is a list of the different properties used to manipulate the arrangement of the different elements of the Toppanel:\n topPanel.widgets.beanNames topPanel.upload.buttons.beanNames topPanel.download.buttons.beanNames topPanel.section.file.buttons.beanNames topPanel.section.file.annotation.buttons.beanNames topPanel.section.modification.buttons.beanNames topPanel.ellipsis.buttons.beanNames topPanel.section.plugin.buttons.beanNames topPanel.search.buttons.beanNames topPanel.navigation.buttons.beanNames topPanel.zoom.buttons.beanNames topPanel.rotation.buttons.beanNames topPanel.annotation.buttons.beanNames topPanel.imageProcessing.buttons.vertical.beanNames topPanel.section.right.buttons.beanNames Special cases The File and Annotation section is a section that will simply serve as a container for the File and Annotation sections in order to have them side by side.\nThe Right section is the section which will always be the furthest to the right and which will contain the Ellipsis button (Burger menu).\nButtons, activable buttons and sub-menu items The annotation buttons The annotation buttons are located directly in the toppanel in the Annotation section. The repeat mode can be activated with a double-click if the property associated with the annotation is activated. It is still possible to have the repeat mode on a button with a single click.\nTo have this behavior, you must replace the buttonHandler property. Annotations with a repeat function will have bean references for normal mode and repeat mode.\nHere is an example of a buttonHandler property that activates repeat mode when the button is clicked:\narender-custom-server-integration.xml \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCircleCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; Note Bean references for button actions can be found in the file named events-configuration.xml. Example of a standard annotation button arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;addHighlightCircleAnnotationButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addHighlightCircleAnnotationButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;Circle\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;supportDoubleClick\u0026#34; value\u0026#34;${topPanel.annotationMenu.circle.repeat}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.circle}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-add-circle toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#addCircleAnnotation\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;doubleClickButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCircleCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;inactiveButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;quitAnnotationCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCircleCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Example of annotation button activating repeat mode with one-click arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;addHighlightCircleAnnotationRepeatButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addHighlightCircleAnnotationRepeatButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${topPanel.annotationMenu.circle.repeat}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;active\u0026#34; value\u0026#34;false\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-add-circle toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#addCircleAnnotation\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;visibilityForTopPanel\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;topPanelVisibilityMode\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;highlightCircleCreationRepeatableAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Activate a button with a keyboard shortcut Buttons can have a keyboard shortcut to activate the action that is usually done on click. The different types of shortcut available are of the form:\n {Specific key} \u002b {Key} {Specific key} \u002b {Specific key} \u002b {Key} {Specific key} \u002b {Specific key} \u002b {Specific key} \u002b {Key} Where {Key} corresponding to a alphabetic or numeric key on the keyboard and {Specific key} can be ALT, SHIFT, or CTRL.\nFor buttons (Using the ButtonPresenter class) and activable buttons (Using the ActivableButtonPresenter class), add the following property in the desired bean:\narender-custom-server-integration.xml \u0026lt;property name\u0026#34;shortcut\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.documentcontent.shortcuts.KeyboardShortCut\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;ctrl\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;key\u0026#34; value\u0026#34;KEY_TO_USE\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;IS_ENABLED\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; Property to add in the shortcut bean to activate the CTRL key:\narender-custom-server-integration.xml \u0026lt;property name\u0026#34;ctrl\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; Property to add in the shortcut bean to activate the SHIFT key:\narender-custom-server-integration.xml \u0026lt;property name\u0026#34;shift\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; Property to add in the shortcut bean to activate the ALT key:\narender-custom-server-integration.xml \u0026lt;property name\u0026#34;alt\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; Conversion between button and sub-menu item: The buttons found in the submenus and the buttons found in the toppanel now use different classes. This will also result in differences in the definition of the bean.\nExample of button, activable button and sub-menu item The following examples show a fully constructed bean for the three shapes mentioned. The action that is triggered by each is the printing of the document.\nNote A button is a simple button that will return to the initial visual state after clicking on it. An activable button is a button that will stay at an active visual state on click and then will go back to the default visual state after clicking on it again. Sub menu item arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;printButton\u0026#34; class\u0026#34;com.arondor.viewer.client.widgets.DropdownMenuItem\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;printButton\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;#{ !${isMobile} and ${topPanel.print}}\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-print toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#printDocument\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;shortCut\u0026#34; value\u0026#34;CTRL \u002b ${shortCut.print.key}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.toppanel.behavior.document.DocumentPrintHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.print.ShowPrintDialogBoxEvent\u0026#34; \/\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Button arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;printButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;printButton\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;#{ !${isMobile} and ${topPanel.print}}\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-print toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#printDocument\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.toppanel.behavior.document.DocumentPrintHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.print.ShowPrintDialogBoxEvent\u0026#34; \/\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Activable button arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;printButton\u0026#34; class\u0026#34;com.arondor.viewer.client.widgets.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;printButton\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;#{ !${isMobile} and ${topPanel.print}}\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-print toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;labels#printDocument\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.toppanel.behavior.document.DocumentPrintHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.print.ShowPrintDialogBoxEvent\u0026#34; \/\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; We see that the beans are similar here. But activable buttons (Using the ActivableButtonPresenter class) can accept the following properties:\n name buttonGroup inactiveButtonHandler supportShortCut shortcut For buttons (Using the ButtonPresenter class) only the following properties can be added:\n name supportShortCut shortcut The previous properties cannot be used by submenu items (Using the DropdownMenuItem class).\nPutting the research directly in the toppanel The search button corresponds to the bean with the id searchSection. This bean must then be deleted from the list of beans to be instantiated.\nLocation of the use of the id: arender-default.properties topPanel.section.right.buttons.beanNamesdocumentBuilderButton,fullscreenButton,searchSection,moreButton \nRemoving the id by redefining the property: arender.properties topPanel.section.right.buttons.beanNamesdocumentBuilderButton,fullscreenButton,moreButton \nThen, you will have to redefine a property with the bean id searchBox: arender.properties topPanel.section.right.buttons.beanNamessearchBox,documentBuilderButton,fullscreenButton,moreButton \nClass name changes If you are using 4.7.0 or 4.7.1, then some classes have changed package. Please replace them.\n Old Package name New Package Name com.arondor.viewer.client.toppanel.presenter.SliderPanelPresenter com.arondor.viewer.client.annotation.slider.SliderPanelPresenter com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter com.arondor.viewer.client.widgets.ActivableButtonPresenter com.arondor.viewer.client.toppanel.presenter.DialogBoxPushButton com.arondor.viewer.client.widgets.DialogBoxPushButton com.arondor.viewer.client.toppanel.presenter.SimpleTopPanelSubMenu com.arondor.viewer.client.widgets.SimpleTopPanelSubMenu com.arondor.viewer.client.toppanel.presenter.TopPanelSubMenu com.arondor.viewer.client.widgets.TopPanelSubMenu Warning These class changes are only valid for 4.7.0 and 4.7.1. Since version 4.7.2, the old package names have been added again in order to have better retro-compatibility. Bean changes The bean with the id annotationMenu has changed class. The new class is com.arondor.viewer.client.toppanel.presenter.SimpleButtonSetPresenter.\nThe arrow head or tail selection buttons have been changed. Their class is now com.arondor.viewer.client.widgets.DropdownMenuItem\nThe imageResource property can no longer be used in bean definitions.\nBean deletion (4.7.0 and 4.7.1) List of bean ids removed for version 4.7.0 and 4.7.1:\n documentMenu imageProcessingVerticalSubMenu addHighlightRectangleAnnotationRepeatButton addHighlightCircleAnnotationRepeatButton addArrowAnnotationRepeatButton addHighlightTextAnnotationRepeatButton addUnderlineTextAnnotationRepeatButton addStrikethroughTextAnnotationRepeatButton addPolygonAnnotationRepeatButton addPolylineAnnotationRepeatButton addFreehandAnnotationRepeatButton logo Warning These beans have been added in version 4.7.2 for better retro-compatibility. These beans are in the file toppanel-configuration-legacy.xml. CSS modifications Icon font The toppanel icons have been changed. Icons are made with custom font.\nAdded color variables The background, icon and hover colors in the toppanel can be changed between light color and dark color with a property:\narender.properties preference.color.modeDARK The DARK value will be for the dark color by default, the LIGHT value will be for the light color and the CUSTOM value allows to use custom colors redefined in a css for the css class named .custom-theme . By default, the CUSTOM value will match the colors defined for the DARK value.\nDARK --bg-top-panel-general-items: #4E4E4E --bg-top-panel-specific-items: #313131 --bg-button-hover-specific-items: #505050 --bg-button-hover-general-items: #313131 --bg-input: #585858 --bg-zoom-button: #464646 --bg-zoom-button-hover: #787878 --bg-dropdown-menu: #434343 --bg-item-hover-dropdown-menu: #505050 --color-button: #ADADAD --color-button-hover: #F1F1F1 --color-button-active: #04AEEF --color-button-disabled: #ADADAD4C --color-section-title-dropdown-menu: #878787 --color-item-shortcut-dropdown-menu: #878787 --color-item-shortcut-hover-dropdown-menu: #F1F1F1 --color-separator: #707070 --bg-scrollbar: #f2f2f2 --bg-scrollbar-thumb: #b3b3b3 --bg-scrollbar-thumb-hover: #999999 --bg-scrollbar-thumb-active: #6d6d6d LIGHT --bg-top-panel-general-items: #D3D3D3 --bg-top-panel-specific-items: #F6F6F6 --bg-button-hover-specific-items: #DADADA --bg-button-hover-general-items: #F6F6F6 --bg-input: #EAEAEA --bg-zoom-button: #DFDFDF --bg-zoom-button-hover: #BDBDBD --bg-dropdown-menu: #F6F6F6 --bg-item-hover-dropdown-menu: #DADADA --color-button: #707070 --color-button-hover: #1F1F1F --color-button-active: #04AEEF --color-button-disabled: #7070704C --color-section-title-dropdown-menu: #D0D0D0 --color-item-shortcut-dropdown-menu: #C1C1C1 --color-item-shortcut-hover-dropdown-menu: #868686 --color-separator: #D3D3D3 --bg-scrollbar: #f2f2f2 --bg-scrollbar-thumb: #b3b3b3 --bg-scrollbar-thumb-hover: #999999 --bg-scrollbar-thumb-active: #6d6d6d Warning These color variables are not functional for Internet Explorer. List of css modifications Plume Plugin : Bean id Old CSS class New CSS class plumeMenu none standardButton icon-plugin-plume toppanelButton plumeButton none standardButton icon-plugin-plume toppanelButton replyButton none standardButton icon-reply toppanelButton replyAllButton none standardButton dropdown-MenuButton icon-open-file toppanelButton forwardButton none standardButton icon-forward toppanelButton HTML Plugin : Bean id Old CSS class New CSS class htmlPluginMenu none standardButton icon-plugin-html toppanelButton viewHtmlButton none standardButton icon-plugin-html toppanelButton closeHtmlButton none standardButton icon-close toppanelButton Annotations : Bean id Old CSS class New CSS class annotationMenu standardButton annotationManagerButton fullHeight annotationMenu showAllAnnotationsButton standardButton hideAnnotationButton standardButton icon-hide toppanelButton showAllAnnotationsAndRotationsButton standardButton showAnnotationButton standardButton icon-hide toppanelButton addStickyNoteAnnotationButton standardButton addAnnotationButton standardButton icon-add-sticky toppanelButton addHighlightRectangleAnnotationButton standardButton rectangleAnnotationButton standardButton icon-highlight-area toppanelButton addFreeTextAnnotationButton standardButton freetextAnnotationButton standardButton icon-add-free-text toppanelButton addHighlightTextAnnotationButton standardButton highlightAnnotationButton standardButton icon-highlight addUnderlineTextAnnotationButton standardButton underlineAnnotationButton standardButton icon-underline addStrikethroughTextAnnotationButton standardButton strikethroughAnnotationButton standardButton icon-strikethrough addHighlightCircleAnnotationButton standardButton circleAnnotationButton standardButton icon-add-circle toppanelButton addObfuscateAnnotationButton standardButton obfuscateButton standardButton icon-redact-text addObfuscateZoneAnnotationButton standardButton obfuscateZoneButton standardButton icon-redact-area addArrowAnnotationButton standardButton arrowAnnotationButton standardButton icon-add-arrow toppanelButton addPolygonAnnotationButton standardButton polygonAnnotationButton standardButton icon-add-polygon toppanelButton addPolylineAnnotationButton standardButton polylineAnnotationButton standardButton icon-add-multiline toppanelButton addFreehandAnnotationButton standardButton freehandAnnotationButton standardButton icon-add-hand-draw toppanelButton addStampAnnotationButton standardButton stampAnnotationButton standardButton icon-add-stamp toppanelButton saveDirtyAnnotations standardButton saveAnnotationsButton standardButton icon-save toppanelButton refreshAnnotation standardButton refreshAnnotationButton standardButton icon-refresh-annotations toppanelButton changeLineHead standardButton changeHeadStyleButton standardButton icon-head-solid-arrow changeLineHeadSquare standardButton squareStyleButton standardButton icon-head-square changeLineHeadCircle standardButton circleStyleButton standardButton icon-head-circle changeLineHeadButt standardButton buttStyleButton standardButton icon-head-line changeLineHeadDiamond standardButton diamondStyleButton standardButton icon-head-diamond changeLineHeadOpenArrow standardButton openArrowStyleButton standardButton icon-head-outline-arrow changeLineHeadROpenArrow standardButton rOpenArrowStyleButton standardButton icon-head-outline-arrow-invert changeLineHeadClosedArrow standardButton closedArrowStyleButton standardButton icon-head-solid-arrow changeLineHeadRClosedArrow standardButton rClosedArrowStyleButton standardButton icon-head-solid-arrow-invert changeLineHeadNone standardButton noneStyleButton standardButton icon-arrow-none changeLineTail standardButton changeTailStyleButton standardButton icon-tail-solid-arrow changeLineTailSquare standardButton squareStyleButton standardButton icon-tail-square changeLineTailCircle standardButton circleStyleButton standardButton icon-tail-circle changeLineTailButt standardButton buttStyleButton standardButton icon-tail-line changeLineTailDiamond standardButton diamondStyleButton standardButton icon-tail-diamond changeLineTailOpenArrow standardButton openArrowStyleButton standardButton icon-tail-outline-arrow changeLineTailROpenArrow standardButton rOpenArrowStyleButton standardButton icon-tail-outline-arrow-invert changeLineTailClosedArrow standardButton closedArrowStyleButton standardButton icon-tail-solid-arrow changeLineTailRClosedArrow standardButton rClosedArrowStyleButton standardButton icon-tail-solid-arrow-invert changeLineTailNone standardButton noneStyleButton standardButton icon-arrow-none Bean id Old property name Old CSS class New property name New CSS class showAllAnnotationsButton inactiveClassName standardButton hideAnnotationButton activeClassName standardButton icon-show toppanelButton showAnnotation showAllAnnotationsButton className standardButton showAnnotationButton className standardButton icon-hide toppanelButton showAllAnnotationsAndRotationsButton inactiveClassName standardButton showAnnotationButton activeClassName standardButton icon-show toppanelButton showAnnotation showAllAnnotationsAndRotationsButton className standardButton showAnnotationButton className standardButton icon-show toppanelButton showAnnotation Contextual menu : Bean id Old CSS class New CSS class stampAction standardButton stampAnnotationContextualMenu standardButton icon-add-stamp contextualMenu freetextAction standardButton freetextAnnotationContextualMenu standardButton icon-add-free-text contextualMenu printAction standardButton printContextualMenu standardButton icon-print contextualMenu printAllAction standardButton printContextualMenu standardButton icon-print contextualMenu rotateLeftAction standardButton turnLeftContextualMenu standardButton icon-turn-page-left contextualMenu rotateRightAction standardButton turnRightContextualMenu standardButton icon-turn-page-right contextualMenu stickyNoteAction standardButton addAnnotationContextualMenu standardButton icon-add-sticky contextualMenu hyperlinkAction standardButton hyperlinkAnnotationContextualMenu standardButton icon-hyperlinks contextualMenu cropBoxImageAction standardButton cropBoxImageContextualMenu standardButton cropBoxImageContextualMenu contextualMenu highlightTextAction standardButton highlightAnnotationContextualMenu standardButton icon-highlight contextualMenu deleteHighLightTextAction standardButton removeContextualMenu standardButton icon-delete contextualMenu strikeoutTextAction standardButton strikethroughAnnotationContextualMenu standardButton icon-strikethrough contextualMenu underlineTextAction standardButton underlineAnnotationContextualMenu standardButton icon-underline contextualMenu highlightAction standardButton rectangleAnnotationContextualMenu standardButton icon-highlight-area contextualMenu highlightCircleAction standardButton circleAnnotationContextualMenu standardButton icon-add-circle contextualMenu arrowAction standardButton arrowAnnotationContextualMenu standardButton icon-add-arrow contextualMenu closeMultiViewAction standardButton clearContextualMenu standardButton icon-close contextualMenu addPolygonAction standardButton polygonAnnotationContextualMenu standardButton icon-add-polygon contextualMenu addPolylineAction standardButton polylineAnnotationContextualMenu standardButton icon-add-multiline contextualMenu addFreehandAction standardButton freehandAnnotationContextualMenu standardButton icon-add-hand-draw contextualMenu anchorAnnotationAction standardButton anchorAnnotationContextualMenu standardButton icon-anchor contextualMenu copyAction none standardButton icon-copy contextualMenu downloadContextualMenuAction pictreeButton saveDocumentButton pictreeButton saveDocumentButton contextualMenu downloadAnnotationsContextualMenuAction pictreeButton saveDocumentWithAnnotationsButton pictreeButton saveDocumentWithAnnotationsButton contextualMenu createFirstContextualMenuAction pictreeButton saveDocumentCreateFirstButton pictreeButton saveDocumentCreateFirstButton contextualMenu updateFirstContextualMenuAction pictreeButton saveDocumentUpdateFirstButton pictreeButton saveDocumentUpdateFirstButton contextualMenu deleteDocumentContextualMenuAction pictreeButton deleteDocumentButton pictreeButton deleteDocumentButton contextualMenu Toppanel : Bean id Old CSS class New CSS class documentBuilderButton standardButton selectiveCopyButton standardButton icon-docbuilder firstPageButton standardButton firstPageButton standardButton icon-go-to-first-page noPadding previousPageButton standardButton prevButton standardButton icon-go-to-previous-page noPadding nextPageButton standardButton nextButton standardButton icon-go-to-next-page noPadding lastPageButton standardButton lastPageButton standardButton icon-go-to-last-page noPadding previousDocumentButton standardButton prevButton standardButton icon-go-to-previous-page noPadding nextDocumentButton standardButton nextButton standardButton icon-go-to-next-page noPadding fullscreenButton standardButton fullScreenButton standardButton icon-full-screen toppanelButton printButton standardButton printButton standardButton icon-print toppanelButton printAllButton standardButton printButton standardButton icon-print toppanelButton uploadButton standardButton fileUploadButton standardButton icon-open-file toppanelButton uploadURLButton standardButton urlUploadButton standardButton icon-open-url toppanelButton uploadXFDFButton standardButton xfdfUploadButton standardButton icon-open-file toppanelButton downloadButton standardButton downloadButton standardButton icon-download toppanelButton downloadRootButton standardButton downloadRootButton standardButton icon-export-zip toppanelButton downloadXFDFAnnotationsButton standardButton downloadXFDFAnnotationsButton standardButton icon-export-with-annotations toppanelButton downloadAnnotationsCSVButton standardButton downloadAnnotationAsCSVButton standardButton icon-export-with-annotations toppanelButton downloadPdfButton standardButton downloadPDFButton standardButton icon-export-pdf toppanelButton downloadAllButton standardButton downloadAllButton standardButton icon-export-pdf toppanelButton downloadAllSourcesButton standardButton downloadAllSourcesButton standardButton icon-export-zip toppanelButton downloadAnnotationsButton standardButton downloadAnnotationButton standardButton icon-export-with-annotations toppanelButton downloadWithFDFAnnotationsButton standardButton downloadWithFDFAnnotationButton standardButton icon-export-with-annotations toppanelButton downloadFDFAnnotationsButton standardButton downloadFDFAnnotationButton standardButton icon-export-with-annotations toppanelButton downloadWithCompareButton standardButton downloadCompareButton standardButton icon-download-comparison rotateLeft standardButton turnLeftButton standardButton icon-turn-page-left toppanelButton rotateAllLeft standardButton turnAllLeftButton standardButton icon-turn-all-pages-left rotateAllRight standardButton turnAllRightButton standardButton icon-turn-all-pages-right rotateRight standardButton turnRightButton standardButton icon-turn-page-right toppanelButton rotateReset standardButton resetRotationButton standardButton icon-reset-rotation zoomFullWidth standardButton zoomFullWidthButton standardButton icon-fit-to-width-size toppanelButton zoomFullHeight standardButton zoomFullHeightButton standardButton icon-fit-to-height-size toppanelButton zoomFullPage standardButton zoomFullPageButton standardButton icon-fit-to-page toppanelButton zoomIn standardButton zoomInButton standardButton icon-minus zoomInZone standardButton zoomInZoneButton standardButton icon-zoom-in-area toppanelButton zoomInZoneGlass standardButton zoomInZoneGlassButton standardButton icon-zoom-in-area-new-window toppanelButton zoomOut standardButton zoomOutButton standardButton icon-plus cropBoxButton standardButton cropBoxImage standardButton icon-screenshot previousButton standardButton prevButton standardButton icon-go-to-previous-page synchronizeScrollButton standardButton synchronizeDocumentScrollingButton standardButton icon-sync-scroll nextButton standardButton nextButton standardButton icon-go-to-next-page moreButton standardButton showMoreButton standardButton icon-ellipsis menuButton none e standardButton icon-list-view List of CSS removed topPanelSubMenu:BEFORE topPanelActivableButton topPanelActivatedButton /p>p>tutorial/p>p>migration/p>p>configuration/p>p>4.7/p>p>4.x/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/migrateconfig4-7\/ }, { value: Navigation, path: https:\/\/docs.arender.io\/features\/navigation\/, label: p>Navigate in a document ARender provides many easy ways to navigate a document:\nUse arrows in the toolbar Use current page number You can type the number of the page you want to display ( included from 1 to the total number of pages of your document) in the text area made for it and then press « Enter » or « Tab »\nUse the mouse cursor\/vertical scrollbar Use the wheel of your mouse or the vertical scrollbar to scroll through the pages/p>p>Navigate in a document ARender provides many easy ways to navigate a document:\nUse arrows in the toolbar Use current page number You can type the number of the page you want to display ( included from 1 to the total number of pages of your document) in the text area made for it and then press « Enter » or « Tab »\nUse the mouse cursor\/vertical scrollbar Use the wheel of your mouse or the vertical scrollbar to scroll through the pages\nUse view document pages thumbs tag You can click on the \u0026ldquo;view document pages thumbs\u0026rdquo; tab:\nThen click on a page thumb:\nThe selected page is displayed on the right panel.\nNavigate by the summary ARender has a menu corresponding to:\n A summary for a Word document Bookmarks for a PDF document Slide Numbers for a Power Point document Navigate by annotations This menu shows the type of annotation or part of the entered text. Annotations are categorized by document and pagination order. Before each annotation, the associated page number is specified.\n/p>, url: https:\/\/docs.arender.io\/features\/navigation\/ }, { value: Navigation, path: https:\/\/docs.arender.io\/v4\/feature\/navigation\/, label: p>Navigate in a document ARender provides many easy ways to navigate a document:\nUse arrows in the toolbar Use current page number You can type the number of the page you want to display ( included from 1 to the total number of pages of your document) in the text area made for it and then press « Enter » or « Tab »\nUse the mouse cursor\/vertical scrollbar Use the wheel of your mouse or the vertical scrollbar to scroll through the pages/p>p>Navigate in a document ARender provides many easy ways to navigate a document:\nUse arrows in the toolbar Use current page number You can type the number of the page you want to display ( included from 1 to the total number of pages of your document) in the text area made for it and then press « Enter » or « Tab »\nUse the mouse cursor\/vertical scrollbar Use the wheel of your mouse or the vertical scrollbar to scroll through the pages\nUse view document pages thumbs tag You can click on the \u0026ldquo;view document pages thumbs\u0026rdquo; tab:\nThen click on a page thumb:\nThe selected page is displayed on the right panel.\nNavigate by the summary ARender has a menu corresponding to:\n A summary for a Word document Bookmarks for a PDF document Slide Numbers for a Power Point document Navigate by annotations This menu shows the type of annotation or part of the entered text. Annotations are categorized by document and pagination order. Before each annotation, the associated page number is specified.\n/p>, url: https:\/\/docs.arender.io\/v4\/feature\/navigation\/ }, { value: Obtain sharper images, path: https:\/\/docs.arender.io\/learn\/how-to\/sharpenimages\/, label: p>By default, internet browsers smooth out the displayed pictures to make webpages more comfortable to browse.\nIf you wish to find by a look alike effect of Adobe Reader, which does not smoothen the pictures, it is now possible in ARender to deactivate this smoothening.\nThe parameter to modify is the following:\nvisualization.images.sharpen and set it to true in ARender profiles.\n Before sharpen With sharpening With Adobe (at approximately the same zoom level) We see with this small text comparison that the rendering is becoming very look alike of Adobe Reader look and feel for text./p>p>By default, internet browsers smooth out the displayed pictures to make webpages more comfortable to browse.\nIf you wish to find by a look alike effect of Adobe Reader, which does not smoothen the pictures, it is now possible in ARender to deactivate this smoothening.\nThe parameter to modify is the following:\nvisualization.images.sharpen and set it to true in ARender profiles.\n Before sharpen With sharpening With Adobe (at approximately the same zoom level) We see with this small text comparison that the rendering is becoming very look alike of Adobe Reader look and feel for text. If your user base is used to this software, you might wanna turn this parameter on. /p>p>tutorial/p>p>images/p>p>sharp/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/sharpenimages\/ }, { value: Obtain sharper images, path: https:\/\/docs.arender.io\/v4\/cookbook\/sharpenimages\/, label: p>By default, internet browsers smooth out the displayed pictures to make webpages more comfortable to browse.\nIf you wish to find by a look alike effect of Adobe Reader, which does not smoothen the pictures, it is now possible in ARender to deactivate this smoothening.\nThe parameter to modify is the following:\nvisualization.images.sharpen and set it to true in ARender profiles.\n Before sharpen With sharpening With Adobe (at approximately the same zoom level) We see with this small text comparison that the rendering is becoming very look alike of Adobe Reader look and feel for text./p>p>By default, internet browsers smooth out the displayed pictures to make webpages more comfortable to browse.\nIf you wish to find by a look alike effect of Adobe Reader, which does not smoothen the pictures, it is now possible in ARender to deactivate this smoothening.\nThe parameter to modify is the following:\nvisualization.images.sharpen and set it to true in ARender profiles.\n Before sharpen With sharpening With Adobe (at approximately the same zoom level) We see with this small text comparison that the rendering is becoming very look alike of Adobe Reader look and feel for text. If your user base is used to this software, you might wanna turn this paramter on. /p>p>tutorial/p>p>images/p>p>sharp/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/sharpenimages\/ }, { value: Office converter, path: https:\/\/docs.arender.io\/learn\/how-to\/convertoffice\/, label: p>This tutorial describe an example of usage of ARender to convert a Word document into a PDF. In order to do so, we are going to explore the API used to connect to the rendition server.\nConfiguration Maven configuration Before everything, we need to import the ARender maven dependencies that are needed for this example. In the case of a maven project, it is sufficient to add this to the pom./p>p>This tutorial describe an example of usage of ARender to convert a Word document into a PDF. In order to do so, we are going to explore the API used to connect to the rendition server.\nConfiguration Maven configuration Before everything, we need to import the ARender maven dependencies that are needed for this example. In the case of a maven project, it is sufficient to add this to the pom.xml file:\n\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.arender\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;arondor-arender-common\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;ARender_version\u0026lt;\/version\u0026gt; \u0026lt;type\u0026gt;jar\u0026lt;\/type\u0026gt; \u0026lt;scope\u0026gt;compile\u0026lt;\/scope\u0026gt; \u0026lt;\/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.arender\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;arender-rendition-rest-client\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;ARender_version\u0026lt;\/version\u0026gt; \u0026lt;type\u0026gt;jar\u0026lt;\/type\u0026gt; \u0026lt;scope\u0026gt;compile\u0026lt;\/scope\u0026gt; \u0026lt;\/dependency\u0026gt; Document service configuration This first step defines the necessary information for the usage of the API. The object DocumentService encapsulate the communication between the Web-UI and the rendition server. (that can be remote)\nRenditionRestClient client new RenditionRestClient(); client.setRemoteTarget(\u0026#34;http:\/\/rendition-server:8761\/\u0026#34;); client.setMaxTries(3); Document loading In order to load the document on the rendition server, we can call loadDocumentAccessor(DocumentAccessor documentAccessor) of the DocumentService interface. In this example, we give a documentAccessor built from an inputStream containing the content of the document.\nString fileToConvertPath \u0026#34;C:\\ARender_User\\Documents\\myWordDocument.docx\u0026#34;; FileInputStream fileInputStream new FileInputStream(fileToConvertPath); DocumentAccessor documentAccessor new DocumentAccessorByteArray(fileInputStream); client.loadDocumentAccessor(documentAccessor); Fetching the converted document Within a rendition server, a document can be located in different states. In this example, the states that interest us are:\nInitial: Corresponds to the document pushed in its initial state, without treatment from the rendition server.\nRendered: Correspond to the document once it has been converted\/processed by the rendition server, this is the document we want to fetch. Therefore, different accessors, implementing the interface DocumentAccessor, are stored allowing to access different states of a same document. The enumeration DocumentAccessorSelector allows to fetch the appropriate DocumentAccessor.\nDocumentAccessor renderedDocumentAccessor client.getDocumentAccessor(documentAccessor.getUUID(),DocumentAccessorSelector.RENDERED); InputStream pdfDocumentInputStream renderedDocumentAccessor.getInputStream(); /p>p>tutorial/p>p>conversion/p>p>office/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/convertoffice\/ }, { value: Office converter, path: https:\/\/docs.arender.io\/v4\/cookbook\/convertoffice\/, label: p>This tutorial describe an example of usage of ARender to convert a Word document into a PDF. In order to do so, we are going to explore the API used to connect to the rendition server.\nConfiguration Maven configuration Before everything, we need to import the ARender maven dependencies that are needed for this example. In the case of a maven project, it is sufficiant to add this to the pom./p>p>This tutorial describe an example of usage of ARender to convert a Word document into a PDF. In order to do so, we are going to explore the API used to connect to the rendition server.\nConfiguration Maven configuration Before everything, we need to import the ARender maven dependencies that are needed for this example. In the case of a maven project, it is sufficiant to add this to the pom.xml file:\n\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.arender\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;arondor-arender-common\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;ARender_version\u0026lt;\/version\u0026gt; \u0026lt;type\u0026gt;jar\u0026lt;\/type\u0026gt; \u0026lt;scope\u0026gt;compile\u0026lt;\/scope\u0026gt; \u0026lt;\/dependency\u0026gt; \u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;com.arondor.arender\u0026lt;\/groupId\u0026gt; \u0026lt;artifactId\u0026gt;arondor-arender-client-javarmi\u0026lt;\/artifactId\u0026gt; \u0026lt;version\u0026gt;ARender_version\u0026lt;\/version\u0026gt; \u0026lt;type\u0026gt;jar\u0026lt;\/type\u0026gt; \u0026lt;scope\u0026gt;compile\u0026lt;\/scope\u0026gt; \u0026lt;\/dependency\u0026gt; Document service configuration This first step defines the necessary information for the usage of the API. The object DocumentService encapsulate the communication between the Web-UI and the rendition server. (that can be remote)\nClientDocumentService clientDocumentService new ClientDocumentService(); clientDocumentService.setRemoteTarget(\u0026#34;http:\/\/rendition-server:8761\/\u0026#34;); clientDocumentService.setMaxTries(3); Document loading In order to load the document on the rendition server, we can call loadDocumentAccessor(DocumentAccessor documentAccessor) of the DocumentService interface. In this exemple, we give a documentAccessor built from an inputStream containing the content of the document.\nString fileToConvertPath \u0026#34;C:\\ARender_User\\Documents\\myWordDocument.docx\u0026#34;; FileInputStream fileInputStream new FileInputStream(fileToConvertPath); DocumentAccessor documentAccessor new DocumentAccessorByteArray(fileInputStream); clientDocumentService.loadDocumentAccessor(documentAccessor); Fetching the converted document Within a rendition server, a document can be located in different states. In this example, the states that interest us are:\nInitial: Corresponds to the document pushed in its initial state, without treatment from the rendition server.\nRendered: Correspond to the document once it has been converted\/processed by the rendition server, this is the document we want to fetch. Therefore, different accessors, implementing the interface DocumentAccessor, are stored allowing to access different states of a same document. The enumration DocumentAccessorSelector allows to fetch the appropriate DocuementAccessor.\nDocumentAccessor renderedDocumentAccessor clientDocumentService.getDocumentAccessor(documentAccessor.getUUID(),DocumentAccessorSelector.RENDERED); InputStream pdfDocumentInputStream renderedDocumentAccessor.getInputStream(); /p>p>tutorial/p>p>conversion/p>p>office/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/convertoffice\/ }, { value: Open a document, path: https:\/\/docs.arender.io\/features\/opendocument\/, label: p>Open a local file To open a local file, click on this button to display the file menu:\nThen, click on this button:\nA pop-in appears. To finish, select your file:\nTo cancel the action , click the \u0026ldquo;Close\u0026rdquo; button\nOpen a file from an URL To open a file from an URL, click on this button:\nThen, click on this button:\nA pop-in appears. Enter the URL in the input field, and click on \u0026ldquo;Open an URL\u0026rdquo;/p>p>Open a local file To open a local file, click on this button to display the file menu:\nThen, click on this button:\nA pop-in appears. To finish, select your file:\nTo cancel the action , click the \u0026ldquo;Close\u0026rdquo; button\nOpen a file from an URL To open a file from an URL, click on this button:\nThen, click on this button:\nA pop-in appears. Enter the URL in the input field, and click on \u0026ldquo;Open an URL\u0026rdquo;\nTo cancel the action , click the \u0026ldquo;Close\u0026rdquo; button\n/p>, url: https:\/\/docs.arender.io\/features\/opendocument\/ }, { value: Open a document, path: https:\/\/docs.arender.io\/v4\/feature\/opendocument\/, label: p>Open a local file To open a local file, click on this button to display the file menu:\nThen, click on this button:\nA pop-in appears. To finish, select your file:\nTo cancel the action , click the \u0026ldquo;Close\u0026rdquo; button\nOpen a file from an URL To open a file from an URL, click on this button:\nThen, click on this button:\nA pop-in appears. Enter the URL in the input field, and click on \u0026ldquo;Open an URL\u0026rdquo;/p>p>Open a local file To open a local file, click on this button to display the file menu:\nThen, click on this button:\nA pop-in appears. To finish, select your file:\nTo cancel the action , click the \u0026ldquo;Close\u0026rdquo; button\nOpen a file from an URL To open a file from an URL, click on this button:\nThen, click on this button:\nA pop-in appears. Enter the URL in the input field, and click on \u0026ldquo;Open an URL\u0026rdquo;\nTo cancel the action , click the \u0026ldquo;Close\u0026rdquo; button\n/p>, url: https:\/\/docs.arender.io\/v4\/feature\/opendocument\/ }, { value: Optimize visualization, path: https:\/\/docs.arender.io\/features\/vizualisation\/, label: p>ARender provides a simple and streamlined Interface for viewing a document. The viewer can adapt the size of the various components of the interface, or even change the zoom of the document\nCustomize the interface elements of the document Explorer menu The size of the Document Explorer menu (on the left) can be set either by stretching or reducing it. Select the separation line between the two panels with the mouse and hold to expand or reduce the size of the left menu:/p>p>ARender provides a simple and streamlined Interface for viewing a document. The viewer can adapt the size of the various components of the interface, or even change the zoom of the document\nCustomize the interface elements of the document Explorer menu The size of the Document Explorer menu (on the left) can be set either by stretching or reducing it. Select the separation line between the two panels with the mouse and hold to expand or reduce the size of the left menu:\nOr click on these following buttons:\nThree display sizes are available for the Document Explorer:\n Hide completely Default size Extended size Zoom a page of a document You can access to zoom buttons in the toolbar:\nZoom out several times a page allows you to visualize multiple pages at once.\nUsers can view full page or zoom in zone (use the \u0026ldquo;Zoom in zone\u0026rdquo; button) to take a closer look.\nAdapt the height or width of a page Click on the \u0026ldquo;Full height\u0026rdquo; button to view document in full height, or click on \u0026ldquo;Full width\u0026rdquo; button to view document in full width.\nYou can also click on \u0026ldquo;Full page\u0026rdquo; button to zoom to the original page size.\nTurn a page of a document You can use the \u0026ldquo;Turn page left\u0026rdquo; or \u0026ldquo;Turn page right\u0026rdquo; buttons in the toolbar:\nor you can right-click on the document and choose \u0026ldquo;Turn page left\u0026rdquo; or \u0026ldquo;Turn page right\u0026rdquo; in the menu:\nTurn all document pages with one click You can also turn all pages of the document at left or at right by clicking on these buttons:\nAccess the full screen mode Click on the \u0026ldquo;Full screen\u0026rdquo; button in the top right corner.\nThe full screen mode displays all document content, without page thumbs and the top panel. You can exit this mode with the Escape key.\n/p>, url: https:\/\/docs.arender.io\/features\/vizualisation\/ }, { value: Optimize visualization, path: https:\/\/docs.arender.io\/v4\/feature\/vizualisation\/, label: p>ARender provides a simple and streamlined Interface for viewing a document. The viewer can adapt the size of the various components of the interface, or even change the zoom of the document\nCustomize the interface elements of the document Explorer menu The size of the Document Explorer menu (on the left) can be set either by stretching or reducing it. Select the separation line between the two panels with the mouse and hold to expand or reduce the size of the left menu:/p>p>ARender provides a simple and streamlined Interface for viewing a document. The viewer can adapt the size of the various components of the interface, or even change the zoom of the document\nCustomize the interface elements of the document Explorer menu The size of the Document Explorer menu (on the left) can be set either by stretching or reducing it. Select the separation line between the two panels with the mouse and hold to expand or reduce the size of the left menu:\nOr click on these following buttons:\nThree display sizes are available for the Document Explorer:\n Hide completely Default size Extended size Zoom a page of a document You can access to zoom buttons in the toolbar:\nZoom out several times a page allows you to visualize multiple pages at once.\nUsers can view full page or zoom in zone (use the \u0026ldquo;Zoom in zone\u0026rdquo; button) to take a closer look.\nAdapt the height or width of a page Click on the \u0026ldquo;Full height\u0026rdquo; button to view document in full height, or click on \u0026ldquo;Full width\u0026rdquo; button to view document in full width.\nYou can also click on \u0026ldquo;Full page\u0026rdquo; button to zoom to the original page size.\nTurn a page of a document You can use the \u0026ldquo;Turn page left\u0026rdquo; or \u0026ldquo;Turn page right\u0026rdquo; buttons in the toolbar:\nor you can right-click on the document and choose \u0026ldquo;Turn page left\u0026rdquo; or \u0026ldquo;Turn page right\u0026rdquo; in the menu:\nTurn all document pages with one click You can also turn all pages of the document at left or at right by clicking on these buttons:\nAccess the full screen mode Click on the \u0026ldquo;Full screen\u0026rdquo; button in the top right corner.\nThe full screen mode displays all document content, without page thumbs and the top panel. You can exit this mode with the Escape key.\n/p>, url: https:\/\/docs.arender.io\/v4\/feature\/vizualisation\/ }, { value: Plugins, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/plugin\/, label: p>ARender allow to integrate plugins. They can be opened in two different ways:\n Direct opening from the ARender URL with the parameter pluginpluginName Opening from ARender by events (Button press\/configuration) Plugins XML configuration If you use the button mode to launch your plugin, you have to make a configuration of it in toppanel-configuration.xml:\nBEFORE version 4.7.0 \u0026lt;bean id\u0026#34;topPanel\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.TopPanel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;containedWidgets\u0026#34;\u0026gt; \u0026lt;list\u0026gt; ... \u0026lt;ref bean\u0026#34;plumeButton\u0026#34; \/\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;moreButton\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;moreButton\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; ./p>p>ARender allow to integrate plugins. They can be opened in two different ways:\n Direct opening from the ARender URL with the parameter pluginpluginName Opening from ARender by events (Button press\/configuration) Plugins XML configuration If you use the button mode to launch your plugin, you have to make a configuration of it in toppanel-configuration.xml:\nBEFORE version 4.7.0 \u0026lt;bean id\u0026#34;topPanel\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.TopPanel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;containedWidgets\u0026#34;\u0026gt; \u0026lt;list\u0026gt; ... \u0026lt;ref bean\u0026#34;plumeButton\u0026#34; \/\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;moreButton\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;moreButton\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; ... \u0026lt;bean id\u0026#34;plumeButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ButtonPresenter\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;imageResource\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.defferedmodules.ExternalImageResource\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;width\u0026#34; value\u0026#34;32\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;height\u0026#34; value\u0026#34;32\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;url\u0026#34; value\u0026#34;icons\/plume.png\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;value\u0026gt;Plume\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.toppanel.behavior.document.GenericHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.document.AskOpenPluginEvent\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;value\u0026gt;plume\u0026lt;\/value\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;property name\u0026#34;openInMultiView\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; SINCE version 4.7.0 \u0026lt;bean id\u0026#34;topPanel\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.TopPanel\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;containedWidgets\u0026#34;\u0026gt; \u0026lt;list\u0026gt; ... \u0026lt;ref bean\u0026#34;plumeButton\u0026#34; \/\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;moreButton\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;moreButton\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; ... \u0026lt;bean id\u0026#34;plumeButton\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ButtonPresenter\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;className\u0026#34; value\u0026#34;standardButton icon-plugin-plume toppanelButton\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonTitle\u0026#34;\u0026gt; \u0026lt;value\u0026gt;Plume\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.toppanel.behavior.document.GenericHandler\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.events.document.AskOpenPluginEvent\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;value\u0026gt;plume\u0026lt;\/value\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;property name\u0026#34;openInMultiView\u0026#34; value\u0026#34;true\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; The important configuration points in this example are:\n openInMultiView announces to ARender that the plugin can be opened in multiView and not in full window. AskOpenPluginEvent possess a constructor-arg that refers the pluginName defined in the server side XML. In order to configure the plugin itself, it is important to add the configuration either in arender-plugin.xml or in a separate file, referenced in the arender-plugin.xml.\n arender-plugin.xml \u0026lt;?xml version\u0026#34;1.0\u0026#34; encoding\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;beans default-lazy-init\u0026#34;true\u0026#34; default-autowire\u0026#34;no\u0026#34; xmlns\u0026#34;http:\/\/www.springframework.org\/schema\/beans\u0026#34; xmlns:xsi\u0026#34;http:\/\/www.w3.org\/2001\/XMLSchema-instance\u0026#34; xsi:schemaLocation\u0026#34;http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd\u0026#34;\u0026gt; \u0026lt;!-- xml imported by ARender, please add any plugins you wish to import in this file --\u0026gt; \u0026lt;import resource\u0026#34;plume.xml\u0026#34;\/\u0026gt; \u0026lt;\/beans\u0026gt; plume.xml \u0026lt;?xml version\u0026#34;1.0\u0026#34; encoding\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;beans default-lazy-init\u0026#34;true\u0026#34; default-autowire\u0026#34;no\u0026#34; xmlns\u0026#34;http:\/\/www.springframework.org\/schema\/beans\u0026#34; xmlns:xsi\u0026#34;http:\/\/www.w3.org\/2001\/XMLSchema-instance\u0026#34; xsi:schemaLocation\u0026#34;http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd\u0026#34;\u0026gt; \u0026lt;bean id\u0026#34;plume\u0026#34; class\u0026#34;com.arondor.viewer.common.plugin.Plugin\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;iframeSrc\u0026#34; value\u0026#34;http:\/\/plume.arender.fr\/\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/beans\u0026gt; \nPlease observe the configuration of the class com.arondor.viewer.common.plugin.Plugin where we use the property iframeSrc. This property allows to setup and iframe source URL in case the plugin refers to an existing webpage. This webpage will then be integrated into ARender as an iframe.\nThe listing of the different configuration modes are the following:\n iframeSrc: specifies the source of the URL of the iframe integrating the plugin. This implies the iframe mode. html: specifies the HTML content of the plugin. This allow a total control of the plugin integration but remove the parameterizing by javascript calls. innerHTML: specifies the inner HTML content of the plugin. This allows to put an empty iframe source but with inner HTML contents. /p>p>configuration/p>p>plugins/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/plugin\/ }, { value: Plume, path: https:\/\/docs.arender.io\/v4\/feature\/plume\/, label: p>Sending emails in ARender Sending email is possible using an application named \u0026ldquo;plume\u0026rdquo; which must be placed in an application server in the same way as ARender.\nARender Setup A configuration is required on the ARender side:\narenderjs.startupScriptscripts\/plume.js plume.enabledtrue plume.url\/plume The plume.url property can be changed to match the url of the plume app deployed.\nPlume configuration Various properties can be activated in plume, corresponding to several functionalities. These properties must be placed in the application./p>p>Sending emails in ARender Sending email is possible using an application named \u0026ldquo;plume\u0026rdquo; which must be placed in an application server in the same way as ARender.\nARender Setup A configuration is required on the ARender side:\narenderjs.startupScriptscripts\/plume.js plume.enabledtrue plume.url\/plume The plume.url property can be changed to match the url of the plume app deployed.\nPlume configuration Various properties can be activated in plume, corresponding to several functionalities. These properties must be placed in the application.properties file whose path is : server\/webapps\/plume\/WEB-INF\/classes\/application.properties\nThe arender.enabled property must be enabled for plume usage in ARender.\narender.enabledtrue SMTP For sending mail via the SMTP protocol, the properties to assign are as follows :\nsmtp.enabledtrue smtp.host smtp.port smtp.username smtp.password smtp.parameters.socketFactory.port587 smtp.parameters.socketFactory.classjavax.net.ssl.SSLSocketFactory smtp.parameters.starttls.enabletrue smtp.parameters.ssl.trust* smtp.parameters.ssl.protocolsTLSv1.2 Property Description smtp.enabled Enable SMTP protocol smtp.host SMTP host smtp.username SMTP user name smtp.password SMTP password Rest Activating the Rest API allows you to retrieve the current document in ARender and use it as an attachment.\nIt is also possible to retrieve a contact list from an url via a Rest call, this list can be used as a means of pre-filling contact fields.\nrest.enabledtrue rest.contacts.url FS Enabling the file system allows recovery of local files which can then be used as attachments, email templates and contact list.\nSent emails can also be saved locally.\nfs.enabledtrue fs.attachment.dir\/attachments fs.template.dir\/templates fs.outgoing.dir Property Description fs.enabled Enable file system fs.attachment.dir Attachments directory path fs.template.dir Templates directory path fs.outgoing.dir Path of the directory where the emails are saved after been sent, leave empty to not save the emails locally To define a contact list as a means of pre-filling contact fields, it is possible to define its contacts directly in the property file in the following form :\nfs.contacts0.firstNamefirstName1 fs.contacts0.lastNamelastName1 fs.contacts0.emailfirstName1.lastName1@test.com fs.contacts1.firstNamefirstName2 fs.contacts1.lastNamelastName2 fs.contacts1.emailfirstName2.lastName2@test.com ... LDAP A contact list can also be retrieved from the LDAP protocol. For this, the properties are as follows :\nldap.enabledtrue ldap.server ldap.username ldap.password ldap.base Property Description ldap.enabled Enable LDAP ldap.server URL du serveur LDAP ldap.username LDAP Server URL ldap.password LDAP password ldap.search.base LDAP base name ldap.search.filter Attributes filter (example : ldap.search.filterobjectClassperson) ldap.attributes.firstname Name of the attribute to display representing the first name ldap.attributes.lastname Name of the attribute to display representing the last name ldap.attributes.mail Name of the attribute to display representing the mail address /p>p>feature/p>p>email/p>p>plume/p>, url: https:\/\/docs.arender.io\/v4\/feature\/plume\/ }, { value: Prepare the opening of an external document, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/open-ext-document\/, label: p>A new servlet is deployed to generate an encrypted UUID. This UUID represents the URL parameters interpreted by the connector. Depending on this configuration the UUID will be base64 or encrypted.\nconfigurations\/arender-custom-server.properties # document id bean names, values are documentIdGenerator (base64) and encryptedDocumentIdGenerator (encrypted) arender.documentid.generator.beanNamedocumentIdGenerator Request This functionality is accessible via the servlet: openExternalDocument\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/openExternalDocument?urldocURL\u0026#39; Servlet Response From the URL sent as a parameter, an encrypted UUID will be generated./p>p>A new servlet is deployed to generate an encrypted UUID. This UUID represents the URL parameters interpreted by the connector. Depending on this configuration the UUID will be base64 or encrypted.\nconfigurations\/arender-custom-server.properties # document id bean names, values are documentIdGenerator (base64) and encryptedDocumentIdGenerator (encrypted) arender.documentid.generator.beanNamedocumentIdGenerator Request This functionality is accessible via the servlet: openExternalDocument\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/openExternalDocument?urldocURL\u0026#39; Servlet Response From the URL sent as a parameter, an encrypted UUID will be generated.\n/p>p>tutorial/p>p>document/p>p>external/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/open-ext-document\/ }, { value: Presentation, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/presentation\/ }, { value: Print, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/print\/, label: p>A new servlet is deployed to print the pages of a document. An HTML page will be displayed to confirm printing with the parameters given. A preview of the result will be displayed on this page.\nRequest This functionality is accessible via the servlet: printServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/printServlet?uuiddocUUID\u0026amp;descdescription\u0026amp;pagespages\u0026amp;imagePrintStylestyle\u0026#39; uuid: document id desc: the image description of the pages to be printed pages: the numbers of the pages to be printed style: the image style of the pages to be printed (optional) Servlet Response An HTML page to confirm printing./p>p>A new servlet is deployed to print the pages of a document. An HTML page will be displayed to confirm printing with the parameters given. A preview of the result will be displayed on this page.\nRequest This functionality is accessible via the servlet: printServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/printServlet?uuiddocUUID\u0026amp;descdescription\u0026amp;pagespages\u0026amp;imagePrintStylestyle\u0026#39; uuid: document id desc: the image description of the pages to be printed pages: the numbers of the pages to be printed style: the image style of the pages to be printed (optional) Servlet Response An HTML page to confirm printing. A preview of the result will be displayed on this page.\n/p>p>tutorial/p>p>document/p>p>print/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/print\/ }, { value: Print, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/print\/, label: p>General Description Key parameter Default value Type Image size with rendition print.renditionWidth 1200 Integer Image size in print preview print.imageStyle width:800px String Include annotation by default at print print.includeAnnotationByDefault false Boolean Activate watermark print.waterMarkActive false Boolean Force the print of annotations (cannot be unchecked) print.forcePrintAnnotations false Boolean Print using a PDF instead of a set of images print./p>p>General Description Key parameter Default value Type Image size with rendition print.renditionWidth 1200 Integer Image size in print preview print.imageStyle width:800px String Include annotation by default at print print.includeAnnotationByDefault false Boolean Activate watermark print.waterMarkActive false Boolean Force the print of annotations (cannot be unchecked) print.forcePrintAnnotations false Boolean Print using a PDF instead of a set of images print.usePDFPrint true Boolean Print by default all documents print.allDocumentsByDefault false Boolean /p>p>configuration/p>p>print/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/print\/ }, { value: Print, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/print\/, label: p>General Key: print Description Key paramter Type Image size with rendition renditionWidth FullWidth, FullHeight or FullPage Image size in print preview imageStyle width:{Integer}px Include annotation by default at print includeAnnotationByDefault Boolean Activate watermark waterMarkActive Boolean /p>p>General Key: print Description Key paramter Type Image size with rendition renditionWidth FullWidth, FullHeight or FullPage Image size in print preview imageStyle width:{Integer}px Include annotation by default at print includeAnnotationByDefault Boolean Activate watermark waterMarkActive Boolean /p>p>configuration/p>p>print/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/print\/ }, { value: Print a document, path: https:\/\/docs.arender.io\/features\/print\/, label: p>Click on the \u0026ldquo;Print Document\u0026rdquo; button:\nA pop-in appears\nThere is a choice of various solutions for printing:\n Print the current page Print all pages Print a selection of pages And you can click on \u0026ldquo;Include annotation\u0026rdquo; for printing annotations include in pages.\nThen click on \u0026ldquo;Ok\u0026rdquo; button. Page(s) will be printed./p>p>Click on the \u0026ldquo;Print Document\u0026rdquo; button:\nA pop-in appears\nThere is a choice of various solutions for printing:\n Print the current page Print all pages Print a selection of pages And you can click on \u0026ldquo;Include annotation\u0026rdquo; for printing annotations include in pages.\nThen click on \u0026ldquo;Ok\u0026rdquo; button. Page(s) will be printed.\n/p>, url: https:\/\/docs.arender.io\/features\/print\/ }, { value: Print a document, path: https:\/\/docs.arender.io\/v4\/feature\/print\/, label: p>Click on the \u0026ldquo;Print Document\u0026rdquo; button:\nA pop-in appears\nThere is a choice of various solutions for printing:\n Print the current page Print all pages Print a selection of pages And you can click on \u0026ldquo;Include annotation\u0026rdquo; for printing annotations include in pages.\nThen click on \u0026ldquo;Ok\u0026rdquo; button. Page(s) will be printed./p>p>Click on the \u0026ldquo;Print Document\u0026rdquo; button:\nA pop-in appears\nThere is a choice of various solutions for printing:\n Print the current page Print all pages Print a selection of pages And you can click on \u0026ldquo;Include annotation\u0026rdquo; for printing annotations include in pages.\nThen click on \u0026ldquo;Ok\u0026rdquo; button. Page(s) will be printed.\n/p>, url: https:\/\/docs.arender.io\/v4\/feature\/print\/ }, { value: Print pages, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/print-page\/, label: p>A new servlet is deployed to print the pages of a document. An HTML file is displayed with the different pages of the document given in parameters.\nRequest This functionality is accessible via the servlet: printPage\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/printPage?uuiddocUUID\u0026amp;nbPagesnbPages\u0026amp;renditionPrintWidthwidth\u0026amp;browserPrintWidthwidth\u0026amp;pagepages\u0026#39; uuid: document id nbPages: the number of pages to print renditionPrintWidth: the size of the image in the rendition browserPrintWidth: the size of the image displayed in the browser pages: the numbers of the pages to be printed Servlet Response An HTML file with the different pages to print./p>p>A new servlet is deployed to print the pages of a document. An HTML file is displayed with the different pages of the document given in parameters.\nRequest This functionality is accessible via the servlet: printPage\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/printPage?uuiddocUUID\u0026amp;nbPagesnbPages\u0026amp;renditionPrintWidthwidth\u0026amp;browserPrintWidthwidth\u0026amp;pagepages\u0026#39; uuid: document id nbPages: the number of pages to print renditionPrintWidth: the size of the image in the rendition browserPrintWidth: the size of the image displayed in the browser pages: the numbers of the pages to be printed Servlet Response An HTML file with the different pages to print.\n/p>p>tutorial/p>p>document/p>p>external/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/print-page\/ }, { value: Profiles, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/profile\/, label: p>Introduction In ARender, a profile enabled the use of a specific interface configuration.\nThanks to the profiles feature, you can use specific CSS, hide\/show icons, modify panel width\u0026hellip;\nExisting profiles ARender is delivered with a default configuration and three profiles as follows:\n Nom Description Base: arender-default.properties Default configuration file offering a standard configuration for standalone use. Do not modify this profile arender Profile dedicated to a specific configuration shared for all users./p>p>Introduction In ARender, a profile enabled the use of a specific interface configuration.\nThanks to the profiles feature, you can use specific CSS, hide\/show icons, modify panel width\u0026hellip;\nExisting profiles ARender is delivered with a default configuration and three profiles as follows:\n Nom Description Base: arender-default.properties Default configuration file offering a standard configuration for standalone use. Do not modify this profile arender Profile dedicated to a specific configuration shared for all users. Editable jsapi-demo Profile presenting all features available with the ARender Javascript API Use of specific profil https:\/\/www.demo.arender.io\/?urlhttps:\/\/arender.io\/docs\/demo\/ARender-doc-demo.pdf\u0026amp;propsjsapi-demo Add 1 or N profiles It is possible to a multiple specific profiles in order to dedicate interface configuration to users ou group of users.\nProperties are listed in the file arender-default.properties located in WEB-INF\/classes of ARender WAR (or EAR).\nSteps to follow to create a new profile Create a file named for example newProfile.properties Add to this file the properties you want to modify (for example: visualization.rotation.save.enabledtrue) Save the file and add it to the Application Server classpath (for example: in the folder WEB-INF\/classes of ARender WAR (or EAR)) Note To trigger the use of this specific profile, add to the URL the parameter props and the name of the profile (without its extension):\nhttp:\/\/localhost:8080\/ARenderHMI\/?url..\/samples\/arender.pdf\u0026amp;propsnewProfile\n /p>p>configuration/p>p>profiles/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/profile\/ }, { value: Prometheus metrics, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/prometheus\/, label: p>A new servlet is deployed to display the metrics generated by Prometheus.\nTo configure the Prometheus monitoring system : configure)\nRequest This functionality is accessible via the servlet: prometheusMetricsServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/prometheus\u0026#39; Servlet Response An HTML page is displayed with the different metrics generated by the Prometheus service./p>p>A new servlet is deployed to display the metrics generated by Prometheus.\nTo configure the Prometheus monitoring system : configure)\nRequest This functionality is accessible via the servlet: prometheusMetricsServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/prometheus\u0026#39; Servlet Response An HTML page is displayed with the different metrics generated by the Prometheus service.\n/p>p>tutorial/p>p>metrics/p>p>prometheus/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/prometheus\/ }, { value: Properties, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/full-config\/, label: p>about property Description type default about.dialog.enabled No description yet provided boolean true about.dialog.statistics.enable Disable\/enable showing statistics in the about dialog box boolean true about.dialog.statistics.table.enable Disable\/enable showing table statistics in the about dialog box (removes as well the graph values) boolean true about.dialog.statistics.charts.enable Disable\/enable the charts in the statistics section pulls the library from google API (gwt charts) boolean false about./p>p>about property Description type default about.dialog.enabled No description yet provided boolean true about.dialog.statistics.enable Disable\/enable showing statistics in the about dialog box boolean true about.dialog.statistics.table.enable Disable\/enable showing table statistics in the about dialog box (removes as well the graph values) boolean true about.dialog.statistics.charts.enable Disable\/enable the charts in the statistics section pulls the library from google API (gwt charts) boolean false about.dialog.show.current.version Displays the current version in the about dialog box boolean true about.dialog.show.current.user Displays the current user in the about dialog box boolean true advanced property Description type default advanced.searchexplorer.enabled If true, enables the advanced search explorer boolean true advanced.searchexplorer.min.characterLength Sets up the minimum character length allowed integer 0 advanced.searchexplorer.max.characterLength Sets up the maximum character length allowed integer 255 advanced.searchexplorer.updates.enabled If true, search is updated on annotation refresh when the the advanced search explorer is active boolean false advanced.searchexplorer.search.highlight.enabled If true, the button for search and highlight is enabled boolean false annotation property Description type default annotation.can.hide.redact If true, all redact annotations can be hidden using the regular hide annotations button boolean false annotation.autosave Allows annotations to be automatically save after edition boolean false annotation.autorefresh Auto refreshes the annotations after save boolean true annotation.autosave.timerDelay Auto save annotation timer delay in milliseconds integer 1000 annotation.autosave.repeatMode.enabled If auto save is enabled, saving may be triggered when using annotation creation repeatable boolean false annotation.loadingGIF When saving annotations, display the loading animation boolean true annotation.loadExisting Load the existing document annotations on display boolean true annotation.displaySaveWarning Display a warning to the end user when annotations are left unsaved boolean true annotation.preferences.update.onEdit.enabled Allow annotation preferences update upon edition boolean false annotation.use.local.storage Use local storage for annotation preferences boolean false annotation.forceReadOnly All saved annotations will be set to read only boolean false annotation.forceLocked All saved annotations will be set to locked boolean false annotation.comment.pictogram.enabled Display a pictogram near the commented annotation boolean true annotation.stickyNote.opacity Opacity of the sticky note annotation float 1.0 annotation.stickyNote.minimum.width Minimum width in pixel of the sticky note annotation integer 250 annotation.stickyNote.minimum.height Minimum height in pixel of the sticky note annotation integer 170 annotation.stickyNote.size.according.to.zoom Minimum sizes (width and height) according to zoom boolean true annotation.stickyNote.content.edition.height.ratio The ratio of the content edition height according to the sticky note height float 0.7 annotation.stickyNote.default.color Color of the sticky note annotation Color, in format #RRGGBB #1865D8 annotation.stickyNote.hide.border Hide borders options of the sticky note annotation boolean true annotation.stickyNote.hide.details Hide details of the sticky note annotation boolean false annotation.stickyNote.default.font Font of the sticky note annotation String Helvetica annotation.stickyNote.default.fontColor Font color of the sticky note annotation Color, in format #RRGGBB #000000 annotation.stickyNote.default.fontSize Font size of the sticky note annotation integer 2 annotation.stickyNote.default.bold Set the font bold by default for the sticky note annotation boolean false annotation.stickyNote.default.underline Set the font underlined by default for the sticky note annotation boolean false annotation.stickyNote.default.italic Set the font italic by default for the sticky note annotation boolean false annotation.stickyNote.dotLink.enabled Enables a link between the pin and the note for sticky note boolean true annotation.stickyNote.pin.default.size Default pin size in pixel for the sticky note integer 20 annotation.stickyNote.pin.display.mode INITIALS shows the initials of the creator in the pin. INDEX shows the index of the stickynote String INITIALS annotation.stickyNote.can.hide.reply.button If true, reply button will hide when stickyNote text is empty boolean false annotation.stickyNote.statusList.enabled Activates the status list drop down boolean true annotation.stickyNote.action.buttons Allow the display of the label or not. ALWAYS the label always appears. HOVER the label appears when the buttons are hovered. NEVER the label is never displayed String HOVER annotation.stickyNote.show.date Allow the display of the date or not. By default, the date is displayed boolean true annotation.stickyNote.creator.name.initial.only Display only the initials of the creator name if true. Full name is displayed if false String true; annotation.stickyNote.outline StickyNote will be outlined in blue and the edition mode will not be activated when the icon in the comment explorer will be clicked boolean false annotation.stickyNote.adapt.font.size.enabled Adapt sticky note font size according to the zoom ratio boolean false annotation.stickyNote.reduce.all Reduce all sticky notes at document loading boolean false annotation.popup.autohide.delay.ms Auto hide delay in milliseconds for the annotation popups integer 300 annotation.popup.default.background.color Popup fallback background color when the annotation background color is empty Color, in format #RRGGBB #F6F6F6 annotation.rectangle.opacity Opacity for the rectangle annotation float 0.7 annotation.rectangle.minimum.width Minimum width in pixel for the rectangle annotation integer 30 annotation.rectangle.minimum.height Minimum height in pixel for the rectangle annotation integer 10 annotation.rectangle.default.color Color for the rectangle annotation Color, in format #RRGGBB #EAF39C annotation.rectangle.default.border.color Border color for the rectangle annotation Color, in format #RRGGBB #EAF39C annotation.rectangle.default.border.width Border width in pixel for the rectangle annotation integer 0 annotation.circle.opacity Opacity for the circle annotation float 0.7 annotation.circle.minimum.width Minimum width in pixel for the circle annotation integer 30 annotation.circle.minimum.height Minimum height for the circle annotation integer 10 annotation.circle.default.color Color for the circle annotation Color, in format #RRGGBB #EAF39C annotation.circle.default.border.color Border color for the circle annotation Color, in format #RRGGBB #EAF39C annotation.circle.default.border.width Border width in pixel for the circle annotation integer 0 annotation.highlighttext.opacity Opacity for the highlight annotation float 0.7 annotation.highlighttext.default.color Color for the highlight annotation Color, in format #RRGGBB #EAF39C annotation.redact.default.opacity Opacity for the redact annotation float 1.0 annotation.redact.default.color Color for the redact annotation Color, in format #RRGGBB #000000 annotation.highlighttext.strike.width.ratio Strike width ratio for underline - strike through annotations float 0.1 annotation.freetext.opacity Opacity for the Freetext annotation float 0.7 annotation.freetext.minimum.width Minimum width in pixel for the Freetext annotation integer 30 annotation.freetext.minimum.height Minimum height in pixel for the Freetext annotation integer 10 annotation.freetext.default.color Color for the Freetext annotation Color, in format #RRGGBB #EEEEEE annotation.freetext.default.border.color Border color for the Freetext annotation Color, in format #RRGGBB #FF0000 annotation.freetext.default.border.width Border width in pixel for the Freetext annotation integer 2 annotation.freetext.default.font.size Font size in pixel integer 16 annotation.freetext.default.font.color Font color Color, in format #RRGGBB #000000 annotation.freetext.default.font Font family name String Helvetica annotation.freetext.adapt.font.size.enabled Adapt font size according to the zoom ratio boolean false annotation.freetext.rotation.enabled If true, freetext will rotate when rotating a page boolean false annotation.arrow.backgroundColor Arrow annotation color Color, in format rgb(r,g,b) rgb(42, 72, 105) annotation.arrow.computeDistance Allow arrows to measure distances boolean false annotation.arrow.minimal.head.size Defines a minimal head size in pixel for arrows integer -1 annotation.arrow.x.defaultDistance Defines a base distance for the head of arrow in X in pixel integer 12 annotation.arrow.y.defaultDistance Defines a base distance for the head of arrow in Y in pixel integer 12 annotation.arrow.opacity Defines arrow opacity float 1.0 annotation.arrow.border.width Defines arrow border width float 4.0 annotation.arrow.head.type Defines arrow head type. Possible values are : NONE, SQUARE, CIRCLE, DIAMOND, OPEN_ARROW, CLOSED_ARROW, BUTT, R_OPEN_ARROW, R_CLOSED_ARROW String OPEN_ARROW annotation.arrow.tail.type Defines arrow tail type. Possible values are : NONE, SQUARE, CIRCLE, DIAMOND, OPEN_ARROW, CLOSED_ARROW, BUTT, R_OPEN_ARROW, R_CLOSED_ARROW String NONE annotation.arrow.measurement.head.type Defines arrow measure head type. Possible values are : NONE, SQUARE, CIRCLE, DIAMOND, OPEN_ARROW, CLOSED_ARROW, BUTT, R_OPEN_ARROW, R_CLOSED_ARROW String BUTT annotation.arrow.measurement.tail.type Defines arrow measure tail type. Possible values are : NONE, SQUARE, CIRCLE, DIAMOND, OPEN_ARROW, CLOSED_ARROW, BUTT, R_OPEN_ARROW, R_CLOSED_ARROW String BUTT annotation.arrow.distance.degree.accuracy Defines a degree of accuracy for the arrow displayed measure. The value is a power of ten (Examples : 1, 0.1, 0.01, 0.001, etc..) float 0.01 annotation.polygon.opacity Opacity for the polygon annotation float 0.7 annotation.polygon.backgroundColor Color for the polygon annotation Color, in format rgb(r,g,b) rgb(42, 72, 105) annotation.polygon.width Border width for the polygon annotation float 2.0f annotation.polygon.borderColor Border color for the polygon annotation Color, in format rgb(r,g,b) rgb(42, 72, 105) annotation.polyline.opacity Opacity for the polyline annotation integer 1 annotation.polyline.backgroundColor Color for the polyline annotation Color, in format rgb(r,g,b) rgb(42, 72, 105) annotation.polyline.width Border width for the polyline annotation float 2.0f annotation.ink.opacity Opacity for the freehand annotation integer 1 annotation.ink.backgroundColor Color for the freehand annotation Color, in format rgb(r,g,b) rgb(42, 72, 105) annotation.ink.width Border width for the freehand annotation float 2.0f annotation.hyperlink.opacity Opacity for the Hyperlink annotation float 0.5f annotation.hyperlink.default.color Color for the Hyperlink annotation Color, in format #RRGGBB #0000FF annotation.hyperlink.externe.target.enabled Allow the hyperlink target to be an external document boolean true annotation.hyperlink.target.show.timeout Define the time limitation (in ms) to display the hyperlink target elements integer 10000 annotation.hyperlink.use.legacy.creation Set the legacy hyperlink creation. If true, the target page starts from index 1 otherwise it starts from index 0. boolean false annotation.hyperlink.open.document.tab If true, clicking on a hyperlink leading to another document will open this document in a new tab. boolean true annotation.sound.show.controls.at.load If true, sound annotation will be displayed with media controls at creation boolean false annotation.sound.record.time.limit Define the time limitation (in ms) for the record of sound annotation integer 60000 annotation.stamp.create.in.browser.orientation Allow stamps to be create in the current browser orientation (including document rotations) boolean false annotation.stamp.create.relative.to.zoom If true, create stamps relatively to the zoom. Otherwise stamps will always have the same size regardless of the current zoom boolean true annotation.stampCustom.enabled Allow custom stamp to be created boolean true annotation.stampCustom.maxFavorite Maximum of custom stamp allowed to be added in favorite integer 15 annotation.stampCustom.min.text.length Set minimum text length allowed for the custom stamp integer 2 annotation.freetext.drag.widgets.on.edit Auto activate the draggable widgets for the Freetext when in edition mode. boolean true annotation.rotation.windmillEffect.enabled Stamp rotation effect in video mode (easter egg) boolean false annotation.loadPerPage Annotations are loaded per page boolean false annotation.searchTextInAnnotations When searching for text, also search within annotation content boolean true annotation.default.stroke.dasharray Default dash array style when the border style is set to DASH String 5.0,2.0 annotation.info.popup.enabled Activate the info popup for annotations boolean true annotation.info.popup.evenIfEditable Activate the popup info for annotations who aren\u0026rsquo;t editable boolean false annotation.info.popup.displayUpdate Display the last updated time for the annotation boolean false annotation.comment.display.target.enabled Display target icon when annotation is other than numbered sticky note, otherwise the annotation type icon boolean false annotation.comment.explorer.enabled Activates the comment explorer for displaying annotation details boolean true annotation.comment.explorer.eastSide.enabled Sets up the comment explorer on the east side of ARender boolean false annotation.comment.explorer.openOnEdit Opens the comment explorer when an annotation is edited boolean false annotation.comment.explorer.animate.on.expand Animate while expanding the comment explorer boolean true annotation.comment.explorer.showAllAnnotators Shows a simplified list of all authors on the comment explorer tab boolean true annotation.comment.explorer.showTotalAnnotationsNumber Shows a total number of annotations on the comment explorer tab boolean false annotation.comment.explorer.showAtStartup Shows the comment explorer at startup of ARender as default pane boolean false annotation.comment.explorer.inline.enabled Enable to display annotation in one line if needed boolean false annotation.comment.explorer.show.annotation.minimized.on.open By default, annotation in comment explorer will be displayed in one line. boolean false annotation.comment.explorer.filterPageAnnotations If true, enable to also filter annotations in the page view boolean false annotation.comment.explorer.sortByIncrementDate If true, set the sorting in increment otherwise in decrement date boolean true annotation.comment.explorer.show.date Allow the display of the date or not. By default, the date is displayed boolean true annotation.comment.explorer.creator.name.initial.only Display only the initials of the creator name if true. Full name is displayed if false boolean false annotation.comment.explorer.show.one.annotation.only Enable to display only one annotation per page. boolean false annotation.date.display.humanizedDate.enabled Display humanized date on comments and sticky notes boolean false annotation.date.display.creationDate If true, display creation date otherwise the last modified date on comments and sticky notes boolean true annotation.richtext.edition.doubleClick If true, double click on the field text is required to enter in edition boolean false annotation.blendMode Enables blend mode for annotations that support it boolean false arender property Description type default arender.web.socket.enabled Enables web socket and try to initiate the web socket if the browser web socket is available boolean true arender.pollLastVersion Enables ARender version check boolean true arender.white.labeling Remove any reference of ARender in the application boolean false arender.data.analytics.enabled Enable data analytics boolean true arenderjs property Description type default arenderjs.startupScript ARenderJS Configuration : customization startup script URL String empty by default bookmarkexplorer property Description type default bookmarkexplorer.enabled If true, enables the bookmark explorer boolean true bookmarkexplorer.showAtStartup If true, show the bookmark explorer at the application startup boolean false bookmarkexplorer.draggable If true, make the bookmarks draggable boolean false bookmarkexplorer.add.bookmark.enabled If true, enables the bookmark creation boolean true bookmarkexplorer.delete.bookmark.enabled If true, enables the bookmark deletion boolean true bookmarkexplorer.animation.enabled If true, enables the bookmark animation boolean false bottomPanel property Description type default bottomPanel.toggle.document.navigator.enabled Enable the button to toggle the documentNavigator boolean false comment property Description type default comment.showAnnotationImage Shows in the comment explorer an icon of the annotation boolean true comment.textArea.maxHeight Comment text area max height corresponds to the maximum height when expanding the text with the button \u0026ldquo;Show more\u0026rdquo;, in pixels integer 0 comment.contextStatusMenu.enabled Enable contextual status menu will allow to right click on an comment annotation to add a status boolean false comment.multiple.thread.level.enabled Enable multiple comment thread level display boolean false comment.richtext.shortcut.enabled Enable richtext shortcut : Enter or Esc validate the annotation comment and Shift\u002bEnter makes a new line boolean false comment.edit.annotation.onselection.enabled Enable to enter in edition mode when clicking on a comment zone boolean true contextualMenu property Description type default contextualMenu.enabled Activates ARender contextual right click menu boolean true contextualMenu.icons.enabled Activates ARender contextual icons mode boolean true contextualMenu.hasPrint Enables the print option for the contextual menu boolean false contextualMenu.hasPrintAll Enables the print all documents option for the contextual menu boolean false contextualMenu.hasStickyNote Enables the create a sticky note option for the contextual menu boolean true contextualMenu.hasCropBoxImage Enables the create a cropbox image from the contextual menu boolean false contextualMenu.hasHighlightText Enables a textual highlight annotation creation option for the contextual menu boolean true contextualMenu.hasStrikeoutText Enables a strike through annotation creation option for the contextual menu boolean true contextualMenu.hasUnderlineText Enables an underline annotation creation option for the contextual menu boolean true contextualMenu.hasHighlight Enables an highlight annotation creation option for the contextual menu boolean true contextualMenu.hasCircle Enables a circle annotation creation option for the contextual menu boolean true contextualMenu.hasArrow Enables an arrow annotation creation option for the contextual menu boolean true contextualMenu.hasPolygon Enables a polygon annotation creation option for the contextual menu boolean false contextualMenu.hasPolyline Enables a polyline annotation creation option for the contextual menu boolean false contextualMenu.hasFreehand Enables a freehand annotation creation option for the contextual menu boolean false contextualMenu.hasPageRotation Enables the rotate option for the contextual menu boolean false contextualMenu.hasMultiView Enables the open multiview option for the contextual menu boolean false contextualMenu.hasShowGuideRuler Enables the \u0026ldquo;show guide here\u0026rdquo; option for the contextual menu boolean false contextualMenu.hasHideGuideRuler Enables the \u0026ldquo;hide guide ruler\u0026rdquo; option for the contextual menu boolean false contextualMenu.hasAnchor Enables an anchor creation option for the contextual menu boolean true contextualMenu.hasStamp Enables a stamp annotation creation option for the contextual menu boolean false contextualMenu.hasFreetext Enables a freetext annotation creation option for the contextual menu boolean false date property Description type default date.format Specify the date format for the annotations String dd\/MM\/yyyy, HH:mm document property Description type default document.vertical.slider.changeToPage.enabled Enabling the scroll by step instead of jumping to page on the scrollUp and scrollDown button boolean false document.vertical.slider.new.click.scrollbar.behavior No description yet provided boolean true document.vertical.slider.use.legacy.scrollbar True to use the browser native scrollbar boolean false document.vertical.slider.use.legacy.scrollbar.limit.pages Set the number of document pages to use the legacy scrollbar otherwise use the ARender native one. For example, set to 1 : document with 1 page (or less) will use the native browser scrollbar integer 2 document.progressiveLoading Activates the progressive loading of ARender front end side (the layout is asked by parts from the front end) boolean false document.loading.progress.update Update and notify the end user to the progressive loading mechanisms boolean true documentbuilder property Description type default documentbuilder.enabled Enables the document builder button (and feature) boolean false documentbuilder.button.visible Sets the document builder button visible boolean true documentbuilder.activateOnStartup Activate the document builder at startup as soon as the documents are ready boolean false documentbuilder.hideDocumentNavigator Hide the document navigator once the document builder is opened boolean true documentbuilder.displaySaveWarning Display a save warning if a document with modifications is left when leaving ARender boolean true documentbuilder.thumbs.draggable Make the document builder thumbnails draggable in order to organize the pages boolean true documentbuilder.width Sets the document builder panel width integer 320 documentbuilder.save.action Sets the document builder default save button action String save documentbuilder.save.behavior Sets the document builder save behavior (legacy) : UPDATE_NO_DOCUMENT, CREATE_NEW_FIRST_DOCUMENT, UPDATE_FIRST_DOCUMENT, UPDATE_ALL_DOCUMENT String UPDATE_NO_DOCUMENT documentbuilder.save.download Activates the local download builder button boolean true documentbuilder.save.delete Activates the delete current document from the builder button boolean false documentbuilder.save.freeze Once documents are built, a frozen title will remain and need to be manually removed to confirm the operation boolean true documentbuilder.addChild.enabled Allow the document builder to create child documents (folders) boolean false documentbuilder.createDocument.enabled Allow the document builder to create new documents (not only compose) boolean true documentbuilder.deleteSelectedThumbs.enabled Activate the feature to delete on right click a list of selected thumbs boolean true documentbuilder.createDocumentFromSelectedThumbs.enabled Activate the feature to create a new document from selected thumbs boolean true documentbuilder.close.enabled Activate the contextual menu option to close the builder boolean true documentbuilder.button.legacySave.enabled Activate the legacy save document builder button boolean false documentbuilder.button.download.enabled Activate the button : download the builder document locally boolean true documentbuilder.button.custom.enabled Activate the button : run custom action on builder document boolean false documentbuilder.button.download.annotations.enabled Activate the button : download the builder document with annotation boolean false documentbuilder.button.updateAll.enabled Activate the button : update all documents boolean false documentbuilder.button.createFirst.enabled Activate the button : Create new first document boolean false documentbuilder.button.updateFirst.enabled Activate the button : Update the document boolean false documentbuilder.button.saveAll.enabled Activate the button : save all documents boolean false documentbuilder.button.saveAll.active.when.empty If active, the saveAll button will be always visible if enabled, even if documents are empty boolean false documentbuilder.button.updateAll.active.when.empty If active, the updateAll button will be always visible if enabled, even if documents are empty boolean false documentbuilder.populatorPolicy Sets up the policy to populate the document builder : CopyCurrentDocument or EmptyDocument String CopyCurrentDocument documentbuilder.populatorPolicy.CopyCurrentDocument.flattenNodeHierarchy Sets up the policy CopyCurrentDocument from the builder, does it need to flatten the documents indentation or not boolean true documentbuilder.button.hideUntilLoaded Hides the document builder button until all documents have been loaded boolean true documentbuilder.afterDownload Thumb navigator view behavior after processing a download in documentbuilder : hide, disable, nochange String hide documentbuilder.button.refresh.enabled Activate the button : Refresh the document to its original state boolean true documentbuilder.button.document.removal.enabled Enable the document removal button in the document builder boolean true documentbuilder.button.page.removal.enabled Enable the red cross button for the page removal in the document builder boolean true documentbuilder.custom.select.readOnly Set the select for custom options in read only mode boolean false documentbuilder.contextual.menu.download.enabled Activate local download action in the contextual menu boolean false documentbuilder.contextual.menu.download.annotations.enabled Activate download document with annotations action in the contextual menu boolean false documentbuilder.contextual.menu.createFirst.enabled Activate the create first document action in the contextual menu boolean false documentbuilder.contextual.menu.updateFirst.enabled Activate the update document action in the contextual menu boolean false documentbuilder.contextual.menu.delete.enabled Activate the delete document action in the contextual menu boolean false documentnavigator property Description type default documentnavigator.width Sets up the width (in pixel) of the document navigator (left tabs of ARender) integer 320 documentnavigator.search.width Sets up the width (in pixel) of the advanced search in the document navigator (left tabs of ARender) integer 400 documentnavigator.annotation.width Sets up the width (in pixel) of the annotation in the document navigator (left tabs of ARender) integer 400 documentnavigator.redact.width Sets up the width (in pixel) of the redact panel in the document navigator (left tabs of ARender) integer 400 documentnavigator.ears.hideTimerDelay Sets up the time (in ms) to auto hide the arrow for maximizing or reducing the document navigator integer 100 documentnavigator.initialWidth Sets up the default position of the document navigator tabs: Default, Reduced or Expanded String Default documentnavigator.expand.reduce.ratio Default value set up to 70. The document navigator will take 70 percent of the screen. integer 70 error property Description type default error.warninDelay Delay (in s) before showing the warning menu that the document might take time to process integer 10 error.hasDownloadButton Allow the error menu to display a download link for the document boolean true error.hideErrorStack Disable the error menu to display error stack traces (useful for debug\/integration testing, not suitable for production) boolean true filter property Description type default filter.comment.currentUser.enabled Activates the button to filter annotations created by the current user boolean true html property Description type default html.plugin.enabled Enables the html plugin, which allows to view html content directly in ARender, instead of the rendition of the html content boolean false hyperlinkexplorer property Description type default hyperlinkexplorer.enabled If true, enables the hyperlink explorer boolean true hyperlinks property Description type default hyperlinks.loadInARender Open hyperlinks into ARender instead of new window boolean false hyperlinks.loadFromPDF Load hyperlinks coming from the PDF file boolean true hyperlinks.displayFrame Display frame\/blue box around hyperlinks if needed boolean true hyperlinks.load.internal Hyperlinks contained from the PDF document will be loaded boolean true hyperlinks.load.external Hyperlinks contained from the annotations will be loaded boolean true image property Description type default image.cropbox.target.dpi Configures the target DPI for the pictures generated from the cropbox (base dpi is 72, default target is 150) integer 150 image.cropbox.window.position.left.px Setup the position in pixel of the Left of the popup window integer 0 image.cropbox.window.position.top.px Setup the position in pixel of the Top of the popup window integer 0 image.cropbox.window.position.width.px If superior to -1, will set the width of the popup window. If -1, will set to a \u0026ldquo;screen ratio\u0026rdquo; of the screen available space integer -1 image.cropbox.window.position.height.px If superior to -1, will set the height of the popup window. If -1, will set to a \u0026ldquo;screen ratio\u0026rdquo; of the screen available space integer -1 image.cropbox.window.screen.ratio Sets the screen ratio to use of available space for the width and height when they are set to -1 integer 3 image.cropbox.can.expand If true, resizing the window will allow the expand of images (over their natural sizes) boolean true image.cropbox.include.annotations If true, annotations will be on the cropbox boolean true layer property Description type default layer.explorer.enabled If true, enables the layer explorer boolean true layer.explorer.update.pages.timeout Sets up the timer delay in Milliseconds before initiating the pages images update integer 500 mousewheel property Description type default mousewheel.speed.factor Mousewheel velocity ratio factor, the higher the faster float 1.0 notifications property Description type default notifications.duration Sets up the time, in milliseconds of ARender legacy notifications integer 500 plume property Description type default plume.enabled Enables Plume integration with ARender boolean false plume.url Plume url String \/plume preference property Description type default preference.color.mode Change the toppanel colors. Will NOT work on Internet Explorer. Authorized value : LEGACY, DARK, LIGHT, CUSTOM, DEUTERANOPIA, PROTANOPIA, TRITANOPIA String LIGHT print property Description type default print.renditionWidth Width in pixels for the images used by the print as images feature integer 1200 print.imageStyle Sets up the CSS print width size once rendered String width:800px; print.includeAnnotationsByDefault Always check by default the \u0026ldquo;print with annotations\u0026rdquo; option boolean false print.forcePrintAnnotations Force the print of annotations (cannot be unchecked) boolean false print.waterMarkActive Activate the watermarking feature from the print menu boolean false print.usePDFPrint Print using a PDF instead of a set of images, lowers total download size boolean true print.allDocumentsByDefault Print by default all documents boolean false quick property Description type default quick.contextual.menu.enabled Activates ARender quick contextual menu when text is selected boolean true quick.contextual.menu.hasHighlightText Enables a textual highlight annotation creation option for the quick contextual menu boolean true quick.contextual.menu.hasStrikeoutText Enables a strike through annotation creation option for the quick contextual menu boolean true quick.contextual.menu.hasUnderlineText Enables an underline annotation creation option for the quick contextual menu boolean true quick.contextual.menu.hasHyperlink Enables a hyperlink creation option for the quick contextual menu boolean true quick.contextual.menu.hasHyperlinkZone Enables a hyperlink area creation option for the quick contextual menu boolean true quick.contextual.menu.hasRedactText Enables a redact annotation creation option for the quick contextual menu boolean true quick.contextual.menu.hasCopyText Enables a copy selected text option for the quick contextual menu boolean true redactexplorer property Description type default redactexplorer.enabled If true, enables the redact explorer boolean false redactexplorer.redact Activate the redact annotation button boolean true redactexplorer.redactZone Activate the redact annotation zone button boolean true redactexplorer.manualInput Activate the manual input button boolean true redactexplorer.rules Activate the rules button boolean true redactexplorer.redactPageContent Activate the redact annotation for current page content button boolean true redactexplorer.redactFullPage Activate the redact annotation for full current page button boolean true redactexplorer.redact.with.reasons If true, the radio button \u0026ldquo;With reason\u0026rdquo; is selected boolean true rotation property Description type default rotation.ignoreForceReadOnly Rotation annotations shall ignore force read only boolean false rotation.ignoreForceLocked Rotation annotations shall ignore force locked boolean false shortCut property Description type default shortCut.copy.enabled Enables copy shortcut with CRTL\u002bC boolean true shortCut.cut.enabled Enables copy shortcut with CRTL\u002bX boolean true shortCut.print.key Configures a print key shortcut String p shortCut.print.enabled Enables a print key shortcut boolean true shortcut property Description type default shortcut.annotation.stickynote.key Configures a key shortcut for stickynote creation. Allowed character are A to Z and 0 to 9 integer 1 shortcut.annotation.stickynote.enabled Enables the shortcut for stickynote creation with CTRL \u002b key boolean true shortcut.annotation.freetext.key Configures a key shortcut for freetext creation. Allowed character are A to Z and 0 to 9 integer 2 shortcut.annotation.freetext.enabled Enables the shortcut for freetext creation with CTRL \u002b key boolean true shortcut.annotation.rectangle.key Configures a key shortcut for highlight rectangle creation. Allowed character are A to Z and 0 to 9 integer 3 shortcut.annotation.rectangle.enabled Enables the shortcut for highlight rectangle creation with CTRL \u002b key boolean true shortcut.annotation.circle.key Configures a key shortcut for circle creation. Allowed character are A to Z and 0 to 9 integer 4 shortcut.annotation.circle.enabled Enables the shortcut for circle creation with CTRL \u002b key boolean true shortcut.annotation.polygon.key Configures a key shortcut for polygon creation. Allowed character are A to Z and 0 to 9 integer 5 shortcut.annotation.polygon.enabled Enables the shortcut for polygon creation with CTRL \u002b key boolean true shortcut.annotation.polyline.key Configures a key shortcut for polyline creation. Allowed character are A to Z and 0 to 9 integer 6 shortcut.annotation.polyline.enabled Enables the shortcut for polyline creation with CTRL \u002b key boolean true shortcut.annotation.freehand.key Configures a key shortcut for freehand creation. Allowed character are A to Z and 0 to 9 integer 7 shortcut.annotation.freehand.enabled Enables the shortcut for freehand creation with CTRL \u002b key boolean true shortcut.annotation.arrow.key Configures a key shortcut for arrow creation. Allowed character are A to Z and 0 to 9 integer 8 shortcut.annotation.arrow.enabled Enables the shortcut for arrow creation with CTRL \u002b key boolean true shortcut.annotation.measure.key Configures a key shortcut for arrow distance creation. Allowed character are A to Z and 0 to 9 integer 9 shortcut.annotation.measure.enabled Enables the shortcut for arrow distance creation with CTRL \u002b key boolean true shortcut.annotation.stamp.key Configures a key shortcut for stamp creation. Allowed character are A to Z and 0 to 9 integer 0 shortcut.annotation.stamp.enabled Enables the shortcut for stamp creation with CTRL \u002b key boolean true startup property Description type default startup.loading.label Display the label when document starts to open String ARender style property Description type default style.sheet Specify one or more comma-separated CSS file paths String css\/arender-style.css text property Description type default text.selection.use.legacy New text selection will select word by word when a word is partially\/completely selected boolean true thumbexplorer property Description type default thumbexplorer.enabled Activates the thumbExplorer : the view to browse the document by thumbnails boolean true thumbexplorer.indentation Sets up the indentation of Thumbs, in pixels when they need to indent (child documents) integer 20 thumbexplorer.maxLevelToLoad Sets up the maximum level of indentation integer 10 thumbexplorer.thumb.margin Sets up the thumbs margin in pixels integer 5 thumbexplorer.thumb.width Sets up the thumbs width in pixels integer 100 thumbexplorer.thumb.grow.min Sets up the minimum amount of pixels needed for the pictree to grow in size integer 300 thumbexplorer.thumb.grow.increment Sets up the growth increment once the thumbnail can grow integer 10 thumbexplorer.thumb.grow.ratio Sets up the growth ratio corresponding to the growth of the panel integer 1 thumbexplorer.title.allowHTML If true, allows thumbnails titles to have HTML content boolean false thumbexplorer.metadata If true, thumbnails will display a popup information with document metadata boolean true thumbexplorer.layout.loading.delay Sets up the delay in milliseconds to load the layout for the thumbnails integer 5 thumbexplorer.contextualMenu.createPageAnchor Allows to create an URL anchor to a page from the thumbnails boolean true thumbexplorer.columns Only applicable when the legacy UI is disabled: ui.legacy.enabledfalse integer 2 timeline property Description type default timeline.panel.annotationBar.showResizeCircleButton Display the resize button for the annotation timeline panel for videos boolean true timeline.panel.annotationBar.changeVideoCurrentTimeOnDrag.enabled On drag of the annotations, update the video timer accordingly boolean true timeline.panel.openIfAnnotated Opens the timeline panel if annotations are existing on the video boolean true timeline.panel.openOnEdit Opens the timeline panel if an annotation is being edited on video boolean true toaster property Description type default toaster.log.severe.autoHide Allows SEVERE toaster notifications to autohide boolean false toaster.log.warning.autoHide Allows WARNING toaster notifications to autohide boolean true toaster.log.info.autoHide Allows INFO toaster notifications to autohide boolean true toaster.log.config.autoHide Allows CONFIG toaster notifications to autohide boolean true toaster.log.fine.autoHide Allows FINE toaster notifications to autohide boolean true toaster.log.finer.autoHide Allows FINER toaster notifications to autohide boolean true toaster.log.finest.autoHide Allows FINEST toaster notifications to autohide boolean true toaster.log.severe.enabled Allows SEVERE toaster notifications to be displayed boolean true toaster.log.warning.enabled Allows WARNING toaster notifications to be displayed boolean true toaster.log.info.enabled Allows INFO toaster notifications to be displayed boolean true toaster.log.config.enabled Allows CONFIG toaster notifications to be displayed boolean false toaster.log.fine.enabled Allows FINE toaster notifications to be displayed boolean false toaster.log.finer.enabled Allows FINER toaster notifications to be displayed boolean false toaster.log.finest.enabled Allows FINEST toaster notifications to be displayed boolean false toaster.toast.timeout Sets up the timeout for toaster notifications to be hidden integer 2000 toaster.toast.newestOnTop If true, displays the newest toaster logs on top, if false, on the bottom boolean true toolbar property Description type default toolbar.annotation.buttons.beanNames The list of widgets to define (XML bean names) for the annotation toolbar String addStrikethroughTextAnnotationButton,addUnderlineTextAnnotationButton,addFreeTextAnnotationButton,addHighlightTextAnnotationButton,addHighlightRectangleAnnotationButton,addHighlightCircleAnnotationButton,addPolygonAnnotationButton,addPolylineAnnotationButton,addFreehandAnnotationButton,addArrowAnnotationButton,addArrowDistanceAnnotationButton,addStampAnnotationButton,addSoundAnnotationButton toolbar.menu.annotation.startup.enabled Allow to show the annotation toolbar with the dynamic widget container at startup boolean false toolbar.activateBorders Allows from the toolbar to alter the borders of annotations boolean true toolbar.distance.physical.units Base physical units. List of handled units : pt, px, in, mm, cm, dm, m, km, ml, yd, ft (NB: both physical and display units need to be the same) String in,cm,px toolbar.distance.display.units Display distance units. List of handled units : pt, px, in, mm, cm, dm, m, km, ml, yd, ft (NB: both physical and display units need to be the same) String in,cm,px toolbar.distance.physical.value.enabled Allow physical distance ratio value to be changed boolean false toolbar.distance.physical.display.units.sync Allow physical and display distance units to be synchronized, changing physical unit will change the display unit boolean true toolbar.distance.display.units.alter.display.ratio.factor.enabled Allow display units change to alter the display ratio value with its corresponding conversion factor boolean true toolbar.redact.locked If true, all redact annotations will become locked once saved, and can no longer be edited boolean false toolbar.opacity.slider.enabled Enables opacity slider for annotations that support it boolean true toolbar.richtext.hasSubscript Enables subscript support in rich text boolean false toolbar.richtext.hasSuperscript Enables superscript support in rich text boolean false toolbar.richtext.hasStrikeThrough Enables strike through support in rich text boolean false toolbar.richtext.hasRemoveFormat Enables the format removal of the selected in rich text boolean false toolbar.richtext.hasFonts Enables fonts name support in rich text boolean true toolbar.richtext.hasFontSize Enables font size support in rich text boolean true toolbar.richtext.hasFontColor Enables font color support in rich text boolean true toolbar.richtext.hasUnderline Enables underline support in rich text boolean true toolbar.richtext.hasBold Enables bold support in rich text boolean true toolbar.richtext.hasItalic Enables italic support in rich text boolean true toolbar.securityList.checkOwner If true, the security list is only shown when the annotation belongs to the current user boolean true topPanel property Description type default topPanel.widgets.beanNames The list of widgets to define (XML bean names) for the top panel String topPanelLeftSection,topPanelMiddleSection,topPanelRightSection topPanel.upload.buttons.beanNames The list of widgets to define (XML bean names) for the upload\/print file dropdown String uploadButton,uploadURLButton,uploadXFDFButton topPanel.download.buttons.beanNames The list of widgets to define (XML bean names) for the download file dropdown String downloadButton,downloadRootButton,downloadAllSourcesButton,downloadPdfButton,downloadAllButton,downloadWithRedactButton,downloadAnnotationsButton,downloadAnnotationsCSVButton,downloadXFDFAnnotationsButton,downloadFDFAnnotationsButton,downloadWithFDFAnnotationsButton,downloadWithCompareButton topPanel.ellipsis.buttons.beanNames The list of widgets to define (XML bean names) for the static content of ellipsis (More button\/hamburger button) String labelAbout, aboutButton topPanel.search.buttons.beanNames The list of widgets to define (XML bean names) for the searchbox String searchBox topPanel.imageProcessing.buttons.vertical.beanNames The list of widgets to define (XML bean names) for the image processing file sub-menu in vertical String brightnessSlider,contrastSlider,invertSlider topPanel.section.left.buttons.beanNames The list of widgets to define (XML bean names) for the left section of the toppanel String importMenu,saveDirtyAnnotations,downloadMenu,printButton,plumeMenu,htmlPluginMenu topPanel.section.middle.buttons.beanNames The list of widgets to define (XML bean names) for the middle section of the toppanel String addStickyNoteAnnotationButton,annotationCreationOpenCreation,documentBuilderButton,imageProcessingMenu,showAllAnnotationsButton,showAllAnnotationsAndRotationsButton,refreshAnnotation,docLinkDropdown topPanel.section.right.buttons.beanNames The list of widgets to define (XML bean names) for the right section of the toppanel String firstPageButton,previousPageButton,pageNavigation,nextPageButton,lastPageButton,zoomBox,fullscreenButton,zoomSelectableDropdown,rotateSelectableDropdown,cropBoxButton,selectAllTextDocument,multiViewTools,searchSection topPanel.selectable.button.zoom.enabled Enable the zoom selectable button of the toppanel boolean true topPanel.selectable.button.zoom.beanNames The list of widgets to define (XML bean names) for the zoom selectable button of the toppanel String zoomFullWidth,zoomFullHeight,zoomFullPage,zoomInZone,zoomInZoneGlass topPanel.selectable.button.zoom.default.beanName XML bean name for the default action selected for the zoom selectable button of the toppanel String zoomFullPage topPanel.selectable.button.rotate.enabled Enable the rotate selectable button of the toppanel boolean true topPanel.selectable.button.rotate.beanNames The list of widgets to define (XML bean names) for the rotate selectable button of the toppanel String rotateLeft,rotateRight,rotateAllLeft,rotateAllRight,rotateReset topPanel.selectable.button.rotate.default.beanName XML bean name for the default action selected for the rotate selectable button of the toppanel String rotateRight topPanel.documentMenu Activate the document sub-menu boolean true topPanel.cropbox.enabled Activate the button for cropbox in the toppanel boolean false topPanel.lineHeadTailMenu Change to false to remove line head options menu. boolean true topPanel.documentMenu.upload Activate the upload file button boolean true topPanel.documentMenu.url Activate the open url button boolean true topPanel.documentMenu.url.open.using.enter Allow to use enter to validate the input URL from the URL button boolean true topPanel.documentMenu.xfdfUpload Activate the top panel XFDF upload button boolean false topPanel.documentMenu.download Activate the top panel download document button boolean true topPanel.documentMenu.download.root Activate the top panel download composite document button boolean true topPanel.documentMenu.download.behavior The default behavior for download. Valid values : DOWNLOAD_SOURCE or DOWNLOAD_NON_PDF String DOWNLOAD_NON_PDF topPanel.documentMenu.downloadPDF Activate the top panel button : download document as PDF boolean true topPanel.documentMenu.downloadAllSources Activate the top panel button : download all current documents as original format in a ZIP boolean true topPanel.documentMenu.downloadAll Activate the top panel button : download all current documents as a single PDF boolean true topPanel.documentMenu.downloadWithRedact Activate the top panel button : download the current document with redact as PDF. If true, only displayed for allowed users boolean true topPanel.documentMenu.downloadAnnotation Activate the top panel button : download the current document with annotations as PDF boolean true topPanel.documentMenu.downloadCSVAnnotations Activate the top panel button : download the current document annotations as CSV boolean false topPanel.documentMenu.downloadWithFDFAnnotation Activate the top panel button : download the current document with annotations as FDF boolean false topPanel.documentMenu.downloadXFDFAnnotations Activate the top panel button : download the current document annotations as XFDF boolean false topPanel.documentMenu.downloadFDFAnnotations Activate the top panel button : download the current document annotations as FDF boolean false topPanel.documentMenu.download.with.compare Activate the top panel button : download the compared documents side by side with compare result on it boolean true topPanel.downloadMenu.enabled Activate the download sub-menu boolean true topPanel.importMenu.enabled Activate the import sub-menu boolean true topPanel.imageProcessMenu.enabled Activate the image processing menu button boolean true topPanel.imageProcessMenu.brightness.enabled Activate the brightness slider boolean true topPanel.imageProcessMenu.contrast.enabled Activate the contrast slider boolean true topPanel.imageProcessMenu.invert.enabled Activate the invert colors slider boolean true topPanel.imageProcessMenu.process.mode Set how image processing is applied : CURRENT_PAGE, ALL_PAGES, ALL_DOCUMENTS String ALL_DOCUMENTS topPanel.subMenu.button.timeOut REMOVED since version 4.7.0 Sets up the time in Milliseconds before the sub-menu buttons disappear integer 100 topPanel.subMenu.subPanel.timeOut REMOVED since version 4.7.0 Sets up the time in Milliseconds before the sub-menu panel disappears integer 500 topPanel.print Activate the print button in the topPanel boolean true topPanel.annotationMenu Activate the annotation sub-menu boolean true topPanel.annotationMenu.stickyNote Activate the sticky note annotation button boolean true topPanel.annotationMenu.freetext Activate the freetext annotation button boolean true topPanel.annotationMenu.stickyNote.editable Allow the sticky note to be edited boolean true topPanel.annotationMenu.highlight Activate the highlight annotation button boolean true topPanel.annotationMenu.highlight.repeat Activate the highlight annotation button, in repeat mode (does not cancel unless pressed again) boolean false topPanel.annotationMenu.arrow Activate the arrow annotation button boolean true topPanel.annotationMenu.arrow.repeat Activate the arrow annotation button, in repeat mode (does not cancel unless pressed again) boolean false topPanel.annotationMenu.arrow.measure Activate the arrow measure annotation button boolean true topPanel.annotationMenu.arrow.measure.repeat Activate the arrow measure annotation button, in repeat mode (does not cancel unless pressed again) boolean false topPanel.annotationMenu.polygon Activate the polygon annotation button boolean true topPanel.annotationMenu.polygon.repeat Activate the polygon annotation button, in repeat mode (does not cancel unless pressed again) boolean false topPanel.annotationMenu.polyline Activate the polyline annotation button boolean true topPanel.annotationMenu.polyline.repeat Activate the polyline annotation button, in repeat mode (does not cancel unless pressed again) boolean false topPanel.annotationMenu.freehand Activate the freehand annotation button boolean true topPanel.annotationMenu.freehand.repeat Activate the freehand annotation button, in repeat mode (does not cancel unless pressed again) boolean false topPanel.annotationMenu.highlightText Activate the text highlight annotation button boolean false topPanel.annotationMenu.highlightText.repeat Activate the text highlight annotation button, in repeat mode (does not cancel unless pressed again) boolean false topPanel.annotationMenu.underlineText Activate the text underline annotation button boolean false topPanel.annotationMenu.underlineText.repeat Activate the text underline annotation button, in repeat mode (does not cancel unless pressed again) boolean false topPanel.annotationMenu.strikethroughText Activate the strikethrough text annotation button boolean false topPanel.annotationMenu.strikethroughText.repeat Activate the strikethrough text annotation button, in repeat mode (does not cancel unless pressed again) boolean false topPanel.annotationMenu.circle Activate the circle annotation button boolean true topPanel.annotationMenu.circle.repeat Activate the circle annotation button, in repeat mode (does not cancel unless pressed again) boolean false topPanel.annotationMenu.stamp Activate the stamp annotation button boolean true topPanel.annotationMenu.hide Activate the hide annotations button boolean true topPanel.annotationMenu.hideAll Activate the hide all annotations button (includes redact) boolean false topPanel.refresh Activate the refresh annotations button boolean true topPanel.zoomBox Activate the boxed zoom button boolean true topPanel.copy.document.text Activate the copy all text of the document button boolean false topPanel.annotationMenu.sound Activate the sound annotation button boolean false topPanel.pageNavigation.first Activates the go to first page navigation button boolean true topPanel.pageNavigation.previous Activates the go to previous page navigation button boolean true topPanel.pageNavigation.next Activates the go to next page navigation button boolean true topPanel.pageNavigation.last Activates the go to last page navigation button boolean true topPanel.zoom.fullWidth Activates the zoom (full width of document) button boolean true topPanel.zoom.fullHeight Activates the zoom (full height of document) button boolean true topPanel.zoom.fullPage Activates the zoom (full page of document) button boolean true topPanel.zoom.in Activates the zoom in button boolean true topPanel.zoom.out Activates the zoom out button boolean true topPanel.zoom.zone Activates the zoom by zone button boolean true topPanel.zoom.zoneGlass Activates the zoom (magnifying glass) button boolean false topPanel.zoom.zoneGlass.value Sets the default zoom ratio for the magnifying glass integer 2 topPanel.rotation.left Activates the rotate left button boolean true topPanel.rotation.right Activates the rotate right button boolean true topPanel.rotation.all Activates the rotate all pages buttons boolean false topPanel.rotation.reset Activates the rotate left button boolean false topPanel.rotation.degree Sets up the amount of rotation applied when pressing the rotation buttons integer 90 topPanel.rotation.add Activates rotations sub-menu boolean true topPanel.search Activates the search in the top panel boolean true topPanel.search.default If true, default search behavior. Otherwise, open in the advanced search panel boolean false topPanel.search.displayResultsInExplorer If true and topPanel.search.default is true, display search text results in the AdvancedSearchExplorer. boolean false topPanel.search.searchByVisiblePage If true, the \u0026ldquo;next result\u0026rdquo; search button will jump to the next result on the current visible page instead of resuming where you left the search boolean true topPanel.fullscreen Activates the full screen button in the top panel boolean true topPanel.fullscreen.hideTopPanel If true, full screen will hide the top panel totally boolean false topPanel.fullscreen.alwaysShowTopPanel If true, the toppanel will always be visible in fullscreen and won\u0026rsquo;t hide boolean false topPanel.docLink Enables the document linking dropdown button boolean false topPanel.docLink.activateOnStartup Activate the document linking at startup as soon as the documents are open boolean false topPanel.docLink.enableZoneSelection If true, the \u0026lsquo;blueZone\u0026rsquo; hyperlink is activated otherwise it is \u0026lsquo;blueFrame\u0026rsquo; hyperlink which is activated boolean false topPanel.selectable.button.docLink.beanNames The list of widgets to define (XML bean names) for the document linking button String blueText,blueFrame,blueZone topPanel.selectable.button.docLink.default.beanName XML bean name for the default action selected for the document linking button String blueText ui property Description type default ui.legacy.enabled Enable the legacy UI (GWT), otherwise will use ReactJS components boolean true upload property Description type default upload.file.openInNewWindow Uploaded files should open in a new window of ARender boolean false visualization property Description type default visualization.mode Visualization mode : Single, BookMode String Single visualization.reload.lower.quality Reload lower quality images once the higher quality has been fetched (always load the perfect size, or save bandwidth) boolean false visualization.reload.minimum.width.change Difference between the old image width and the new image width. Reload the image if difference is greater than this value. float 0.1 visualization.reload.minimum.width.change.mobile Difference between the old image width and the new image width. Reload the image if difference is greater than this value. float 200.0 visualization.video.autoplay Autoplay videos boolean true visualization.pagechange.mouse Mousewheel can change a document page boolean false visualization.pagechange.animation Do animation on page changes (with navigation buttons) boolean false visualization.pagecorner.enabled Display a corner on the pages border, allowing to change pages boolean false visualization.pagecorner.animation Animates the page corner boolean false visualization.fullscreen Activates the full screen visualisation in ARender boolean false visualization.zoom.type Sets up the default zoom type : Default, FullWidth, FullHeight, In, Out, Custom, FullPage String FullWidth visualization.zoom.value Default Zoom value, in percent in case of custom zoom integer 100 visualization.zoom.animation Animate on zoom boolean false visualization.zoom.by.biggest.page Zoom according to the biggest page (width or height). Otherwise to the first page boolean true visualization.zoom.step Zoom step value float 0.1 visualization.rotation.save.enabled Allows rotations to be saved as annotation boolean false visualization.guideruler.enabled Activate the ruler guide for ARender boolean false visualization.guideruler.height Defines the height in pixel of the ruler guide integer 10 visualization.guideruler.increment Defines the movement in height in pixel for the ruler guide integer 10 visualization.multiView.enabled Allows documents to be viewed in multi documents boolean true visualization.multiView.direction Defines the direction in which the multi view will open documents : horizontal or vertical String vertical visualization.multiView.doComparison Allows to compare documents on start of ARender, when two documents or more are opened boolean false visualization.multiView.showOnStart Show the multivew mode on start boolean false visualization.multiView.synchronized Synchronize the scrolling of the views when in multiview boolean true visualization.multiView.focusOnClick Force the user to click on the documents instead of mouse hovering to change on which document can be annotated boolean false visualization.multiView.header.timeoutMs Timeout in milliseconds to auto hide the timer integer 5000 visualization.multiView.allow.scroll.document.change Allow the vertical scrolling to change document while in multiview boolean false visualization.images.sharpen Place a css on document images to undo some of the \u0026ldquo;optimisations\u0026rdquo; browser do to display images boolean false visualization.images.tolerance Adapts the images width tolerance in pixel (received versus drawn on screen). integer 10 visualization.images.svg.preview Enables or disables the SVG previews images boolean true visualization.pages.prefetch Amount of pages to preload before they become visible integer 2 visualization.image.comparison.default.highlight.color Setup the default image comparison highlight color. Highlight for the pixels difference Color, in format #RRGGBB #FF0000 visualization.image.comparison.default.lowlight.color Setup the default image comparison lowlight color. Lowlight for the common pixels String none visualization.image.comparison.default.fuzz Setup the default image comparison tolerance value. Value between 0 and 100. Value in percentage. integer 3 visualization.image.comparison.enabled Enable the images comparison boolean true visualization.image.scheduled.timeoutMs Timeout (in ms) before updating the image while resizing the image integer 500 visualization.maximumConcurrentImageFetching Maximum number of document images to fetch simultaneously integer 8 visualization.nonVisiblePageTimeout Cleanup images which where non-visible for a long time (ms) integer 120000 visualization.imageCleanupPeriod Period at which images are cleaned (ms) integer 1500 visualization.maxImageCacheSize Maximum number of images to store in the cleanup cache before LRU eviction occurs integer 20 window property Description type default window.maximize Maximizes the ARender window boolean false /p>p>configuration/p>p>profile/p>p>property/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/full-config\/ }, { value: Properties, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/full-config\/, label: p>About about.dialog.statistics.enable Type: boolean\n Description: Disable\/enable showing statistics in the about dialog box\n Default:\nabout.dialog.statistics.enabletrue about.dialog.statistics.table.enable Type: boolean\n Description: Disable\/enable showing table statistics in the about dialog box (removes as well the graph values)\n Default:\nabout.dialog.statistics.table.enabletrue about.dialog.statistics.charts.enable Type: boolean\n Description: Disable\/enable the charts in the statistics section pulls the library from google API (gwt charts)/p>p>About about.dialog.statistics.enable Type: boolean\n Description: Disable\/enable showing statistics in the about dialog box\n Default:\nabout.dialog.statistics.enabletrue about.dialog.statistics.table.enable Type: boolean\n Description: Disable\/enable showing table statistics in the about dialog box (removes as well the graph values)\n Default:\nabout.dialog.statistics.table.enabletrue about.dialog.statistics.charts.enable Type: boolean\n Description: Disable\/enable the charts in the statistics section pulls the library from google API (gwt charts)\n Default:\nabout.dialog.statistics.charts.enablefalse about.dialog.show.current.version Type: boolean\n Description: Displays the current version in the about dialog box\n Default:\nabout.dialog.show.current.versiontrue about.dialog.show.current.user Type: boolean\n Description: Displays the current user in the about dialog box\n Default:\nabout.dialog.show.current.usertrue Advanced advanced.searchexplorer.enabled Type: boolean\n Description: If true, enables the advanced search explorer\n Default:\nadvanced.searchexplorer.enabledtrue advanced.searchexplorer.min.characterLength Type: integer\n Description: Sets up the minimum character length allowed\n Default:\nadvanced.searchexplorer.min.characterLength0 advanced.searchexplorer.max.characterLength Type: integer\n Description: Sets up the maximum character length allowed\n Default:\nadvanced.searchexplorer.max.characterLength255 advanced.searchexplorer.tooltipOnHover.enabled Type: boolean\n Description: If true, enables tooltip on hover\n Default:\nadvanced.searchexplorer.tooltipOnHover.enabledtrue advanced.searchexplorer.caseSensitive.tooltip.enabled Type: boolean\n Description: If true, enables case sensitive tooltip\n Default:\nadvanced.searchexplorer.caseSensitive.tooltip.enabledfalse advanced.searchexplorer.accentSensitive.tooltip.enabled Type: boolean\n Description: If true, enables accent sensitive tooltip\n Default:\nadvanced.searchexplorer.accentSensitive.tooltip.enabledfalse advanced.searchexplorer.regex.tooltip.enabled Type: boolean\n Description: If true, enables regex tooltip\n Default:\nadvanced.searchexplorer.regex.tooltip.enabledtrue advanced.searchexplorer.updates.enabled Type: boolean\n Description: If true, search is updated on annotation refresh when the the advanced search explorer is active\n Default:\nadvanced.searchexplorer.updates.enabledfalse Annotation annotation.canHideObfuscate Type: boolean\n Description: If true, all redaction annotations can be hidden using the regular hide annotations button\n Default:\nannotation.canHideObfuscatefalse annotation.autosave Type: boolean\n Description: Allows annotations to be automatically save after edition\n Default:\nannotation.autosavefalse annotation.autorefresh Type: boolean\n Description: Auto refreshes the annotations after save\n Default:\nannotation.autorefreshtrue annotation.autosave.timerDelay Type: integer\n Description: Auto save annotation timer delay in milliseconds\n Default:\nannotation.autosave.timerDelay1000 annotation.loadingGIF Type: boolean\n Description: When saving annotations, display the loading animation\n Default:\nannotation.loadingGIFtrue annotation.loadExisting Type: boolean\n Description: Load the existing document annotations on display\n Default:\nannotation.loadExistingtrue annotation.displaySaveWarning Type: boolean\n Description: Display a warning to the end user when annotations are left unsaved\n Default:\nannotation.displaySaveWarningtrue annotation.forceReadOnly Type: boolean\n Description: All saved annotations will be set to read only\n Default:\nannotation.forceReadOnlyfalse annotation.forceLocked Type: boolean\n Description: All saved annotations will be set to locked\n Default:\nannotation.forceLockedfalse annotation.comment.pictogram.enabled Type: boolean\n Description: Display a pictogram near the commented annotation\n Default:\nannotation.comment.pictogram.enabledtrue annotation.stickyNote.opacity Type: float\n Description: Opacity of the sticky note annotation\n Default:\nannotation.stickyNote.opacity1.0 annotation.stickyNote.minimum.width Type: integer\n Description: Minimum width in pixel of the sticky note annotation\n Default:\nannotation.stickyNote.minimum.width140 annotation.stickyNote.minimum.height Type: integer\n Description: Minimum height in pixel of the sticky note annotation\n Default:\nannotation.stickyNote.minimum.height70 annotation.stickyNote.default.color Type: Color, in format #RRGGBB\n Description: Color of the sticky note annotation\n Default:\nannotation.stickyNote.default.color#F3F001 annotation.stickyNote.hide.border Type: boolean\n Description: Hide borders options of the sticky note annotation\n Default:\nannotation.stickyNote.hide.bordertrue annotation.stickyNote.hide.details Type: boolean\n Description: Hide details of the sticky note annotation\n Default:\nannotation.stickyNote.hide.detailsfalse annotation.stickyNote.default.font Type: String\n Description: Font of the sticky note annotation\n Default:\nannotation.stickyNote.default.fontHelvetica annotation.stickyNote.default.fontColor Type: Color, in format #RRGGBB\n Description: Font color of the sticky note annotation\n Default:\nannotation.stickyNote.default.fontColor#000000 annotation.stickyNote.default.fontSize Type: integer\n Description: Font size of the sticky note annotation\n Default:\nannotation.stickyNote.default.fontSize2 annotation.stickyNote.default.bold Type: boolean\n Description: Set the font bold by default for the sticky note annotation\n Default:\nannotation.stickyNote.default.boldfalse annotation.stickyNote.default.underline Type: boolean\n Description: Set the font underlined by default for the sticky note annotation\n Default:\nannotation.stickyNote.default.underlinefalse annotation.stickyNote.default.italic Type: boolean\n Description: Set the font italic by default for the sticky note annotation\n Default:\nannotation.stickyNote.default.italicfalse annotation.stickyNote.dotLink.enabled Type: boolean\n Description: Enables a link between the pin and the note for sticky note\n Default:\nannotation.stickyNote.dotLink.enabledtrue annotation.stickyNote.pin.default.size Type: integer\n Description: Default pin size in pixel for the sticky note\n Default:\nannotation.stickyNote.pin.default.size20 annotation.stickyNote.adapt.font.size.enabled Type: boolean\n Description: Adapt sticky note font size according to the zoom ratio\n Default:\nannotation.stickyNote.adapt.font.size.enabledfalse annotation.popup.autohide.delay.ms Type: integer\n Description: Auto hide delay in milliseconds for the annotation popups\n Default:\nannotation.popup.autohide.delay.ms300 annotation.popup.default.background.color Type: Color, in format #RRGGBB\n Description: Popup fallback background color when the annotation background color is empty\n Default:\nannotation.popup.default.background.color#F6F6F6 annotation.rectangle.opacity Type: float\n Description: Opacity for the rectangle annotation\n Default:\nannotation.rectangle.opacity0.7 annotation.rectangle.minimum.width Type: integer\n Description: Minimum width in pixel for the rectangle annotation\n Default:\nannotation.rectangle.minimum.width30 annotation.rectangle.minimum.height Type: integer\n Description: Minimum height in pixel for the rectangle annotation\n Default:\nannotation.rectangle.minimum.height10 annotation.rectangle.default.color Type: Color, in format #RRGGBB\n Description: Color for the rectangle annotation\n Default:\nannotation.rectangle.default.color#EAF39C annotation.rectangle.default.border.color Type: Color, in format #RRGGBB\n Description: Border color for the rectangle annotation\n Default:\nannotation.rectangle.default.border.color#EAF39C annotation.rectangle.default.border.width Type: integer\n Description: Border width in pixel for the rectangle annotation\n Default:\nannotation.rectangle.default.border.width0 annotation.circle.opacity Type: float\n Description: Opacity for the circle annotation\n Default:\nannotation.circle.opacity0.7 annotation.circle.minimum.width Type: integer\n Description: Minimum width in pixel for the circle annotation\n Default:\nannotation.circle.minimum.width30 annotation.circle.minimum.height Type: integer\n Description: Minimum height for the circle annotation\n Default:\nannotation.circle.minimum.height10 annotation.circle.default.color Type: Color, in format #RRGGBB\n Description: Color for the circle annotation\n Default:\nannotation.circle.default.color#EAF39C annotation.circle.default.border.color Type: Color, in format #RRGGBB\n Description: Border color for the circle annotation\n Default:\nannotation.circle.default.border.color#EAF39C annotation.circle.default.border.width Type: integer\n Description: Border width in pixel for the circle annotation\n Default:\nannotation.circle.default.border.width0 annotation.highlighttext.opacity Type: float\n Description: Opacity for the highlight annotation\n Default:\nannotation.highlighttext.opacity0.7 annotation.highlighttext.default.color Type: Color, in format #RRGGBB\n Description: Color for the highlight annotation\n Default:\nannotation.highlighttext.default.color#EAF39C annotation.redaction.default.color Type: Color, in format #RRGGBB\n Description: Color for the redaction annotation\n Default:\nannotation.redaction.default.color#273746 annotation.highlighttext.strike.width.ratio Type: float\n Description: Strike width ratio for underline - strike through annotations\n Default:\nannotation.highlighttext.strike.width.ratio0.1 annotation.freetext.opacity Type: float\n Description: Opacity for the Freetext annotation\n Default:\nannotation.freetext.opacity0.7 annotation.freetext.minimum.width Type: integer\n Description: Minimum width in pixel for the Freetext annotation\n Default:\nannotation.freetext.minimum.width30 annotation.freetext.minimum.height Type: integer\n Description: Minimum height in pixel for the Freetext annotation\n Default:\nannotation.freetext.minimum.height10 annotation.freetext.default.color Type: Color, in format #RRGGBB\n Description: Color for the Freetext annotation\n Default:\nannotation.freetext.default.color#EEEEEE annotation.freetext.default.border.color Type: Color, in format #RRGGBB\n Description: Border color for the Freetext annotation\n Default:\nannotation.freetext.default.border.color#FF0000 annotation.freetext.default.border.width Type: integer\n Description: Border width in pixel for the Freetext annotation\n Default:\nannotation.freetext.default.border.width2 annotation.freetext.adapt.font.size.enabled Type: boolean\n Description: Adapt font size according to the zoom ratio\n Default:\nannotation.freetext.adapt.font.size.enabledfalse annotation.arrow.backgroundColor Type: Color, in format rgb(r,g,b)\n Description: Arrow annotation color\n Default:\nannotation.arrow.backgroundColorrgb(42, 72, 105) annotation.arrow.computeDistance Type: boolean\n Description: Allow arrows to measure distances\n Default:\nannotation.arrow.computeDistancefalse annotation.arrow.minimal.head.size Type: integer\n Description: Defines a minimal head size in pixel for arrows\n Default:\nannotation.arrow.minimal.head.size-1 annotation.arrow.x.defaultDistance Type: integer\n Description: Defines a base distance for the head of arrow in X in pixel\n Default:\nannotation.arrow.x.defaultDistance12 annotation.arrow.y.defaultDistance Type: integer\n Description: Defines a base distance for the head of arrow in Y in pixel\n Default:\nannotation.arrow.y.defaultDistance12 annotation.polygon.opacity Type: float\n Description: Opacity for the polygon annotation\n Default:\nannotation.polygon.opacity0.7 annotation.polygon.backgroundColor Type: Color, in format rgb(r,g,b)\n Description: Color for the polygon annotation\n Default:\nannotation.polygon.backgroundColorrgb(42, 72, 105) annotation.polygon.width Type: float\n Description: Border width for the polygon annotation\n Default:\nannotation.polygon.width2.0f annotation.polyline.opacity Type: integer\n Description: Opacity for the polyline annotation\n Default:\nannotation.polyline.opacity1 annotation.polyline.backgroundColor Type: Color, in format rgb(r,g,b)\n Description: Color for the polyline annotation\n Default:\nannotation.polyline.backgroundColorrgb(42, 72, 105) annotation.polyline.width Type: float\n Description: Border width for the polyline annotation\n Default:\nannotation.polyline.width2.0f annotation.ink.opacity Type: integer\n Description: Opacity for the freehand annotation\n Default:\nannotation.ink.opacity1 annotation.ink.backgroundColor Type: Color, in format rgb(r,g,b)\n Description: Color for the freehand annotation\n Default:\nannotation.ink.backgroundColorrgb(42, 72, 105) annotation.ink.width Type: float\n Description: Border width for the freehand annotation\n Default:\nannotation.ink.width2.0f annotation.hyperlink.opacity Type: float\n Description: Opacity for the Hyperlink annotation\n Default:\nannotation.hyperlink.opacity0.5f annotation.hyperlink.default.color Type: Color, in format #RRGGBB\n Description: Color for the Hyperlink annotation\n Default:\nannotation.hyperlink.default.color#0000FF annotation.stamp.create.in.browser.orientation Type: boolean\n Description: Allow stamps to be create in the current browser orientation (including document rotations)\n Default:\nannotation.stamp.create.in.browser.orientationfalse annotation.stampCustom.enabled Type: boolean\n Description: Allow custom stamp to be created\n Default:\nannotation.stampCustom.enabledtrue annotation.stampCustom.maxFavorite Type: integer\n Description: Maximum of custom stamp allowed to be added in favorite\n Default:\nannotation.stampCustom.maxFavorite15 annotation.freetext.drag.widgets.on.edit Type: boolean\n Description: Auto activate the draggable widgets for the Freetext when in edition mode.\n Default:\nannotation.freetext.drag.widgets.on.edittrue annotation.rotation.windmillEffect.enabled Type: boolean\n Description: Stamp rotation effect in video mode (easter egg)\n Default:\nannotation.rotation.windmillEffect.enabledfalse annotation.loadPerPage Type: boolean\n Description: Annotations are loaded per page\n Default:\nannotation.loadPerPagefalse annotation.searchTextInAnnotations Type: boolean\n Description: When searching for text, also search within annotation content\n Default:\nannotation.searchTextInAnnotationstrue annotation.default.stroke.dasharray Type: String\n Description: Default dash array style when the border style is set to DASH\n Default:\nannotation.default.stroke.dasharray5.0,2.0 annotation.info.popup.enabled Type: boolean\n Description: Activate the info popup for annotations\n Default:\nannotation.info.popup.enabledtrue annotation.info.popup.evenIfEditable Type: boolean\n Description: Activate the popup info for annotations who aren\u0026rsquo;t editable\n Default:\nannotation.info.popup.evenIfEditablefalse annotation.info.popup.displayUpdate Type: boolean\n Description: Display the last updated time for the annotation\n Default:\nannotation.info.popup.displayUpdatefalse annotation.comment.explorer.enabled Type: boolean\n Description: Activates the comment explorer for displaying annotation details\n Default:\nannotation.comment.explorer.enabledtrue annotation.comment.explorer.eastSide.enabled Type: boolean\n Description: Sets up the comment explorer on the east side of ARender\n Default:\nannotation.comment.explorer.eastSide.enabledfalse annotation.comment.explorer.openOnEdit Type: boolean\n Description: Opens the comment explorer when an annotation is edited\n Default:\nannotation.comment.explorer.openOnEditfalse annotation.comment.explorer.showAllAnnotators Type: boolean\n Description: Shows a simplified list of all authors on the comment explorer tab\n Default:\nannotation.comment.explorer.showAllAnnotatorstrue annotation.comment.explorer.showTotalAnnotationsNumber Type: boolean\n Description: Shows a total number of annotations on the comment explorer tab\n Default:\nannotation.comment.explorer.showTotalAnnotationsNumberfalse annotation.comment.explorer.showAtStartup Type: boolean\n Description: Shows the comment explorer at startup of ARender as default pane\n Default:\nannotation.comment.explorer.showAtStartupfalse annotation.use.local.storage Type: boolean\n Description: Use local storage for annotation preferences\n Default:\nannotation.use.local.storagefalse Annotation explorer annotationExplorer.showStickyNoteReplies Type: boolean\n Description: Legacy annotation explorer, show the sticky notes replies\n Default:\nannotationExplorer.showStickyNoteRepliesfalse annotationExplorer.showStickyNoteLabel Type: boolean\n Description: Legacy annotation explorer, show the sticky notes labels\n Default:\nannotationExplorer.showStickyNoteLabeltrue annotationExplorer.adaptativeWidth.enabled Type: boolean\n Description: Legacy annotation explorer, adapts the width of the panel accordingly\n Default:\nannotationExplorer.adaptativeWidth.enabledtrue Annotationexplorer annotationexplorer.enabled Type: boolean\n Description: If true, enables the legacy annotation explorer\n Default:\nannotationexplorer.enabledfalse Arender arender.web.socket.enabled Type: boolean\n Description: Enables web socket and try to initiate the web socket if the browser web socket is available. By enabling web sockets, it will try to use it to retrieve the document layout if it is taking more than a second, for example when a conversion is needed, which can optimizes performances.\n Default:\narender.web.socket.enabledtrue arender.pollLastVersion Type: boolean\n Description: Enables ARender version check\n Default:\narender.pollLastVersiontrue Arenderjs arenderjs.startupScript Type: String Description: ARenderJS Configuration: customization startup script URL Default: (none, or empty by default) Bookmarkexplorer bookmarkexplorer.enabled Type: boolean\n Description: If true, enables the bookmark explorer\n Default:\nbookmarkexplorer.enabledtrue bookmarkexplorer.showAtStartup Type: boolean\n Description: If true, show the bookmark explorer at the application startup\n Default:\nbookmarkexplorer.showAtStartupfalse bookmarkexplorer.draggable Type: boolean\n Description: If true, make the bookmarks draggable\n Default:\nbookmarkexplorer.draggablefalse bookmarkexplorer.add.bookmark.enabled Type: boolean\n Description: If true, enables the bookmark creation\n Default:\nbookmarkexplorer.add.bookmark.enabledtrue bookmarkexplorer.delete.bookmark.enabled Type: boolean\n Description: If true, enables the bookmark deletion\n Default:\nbookmarkexplorer.delete.bookmark.enabledtrue Comment comment.showAnnotationImage Type: boolean\n Description: Shows in the comment explorer an icon of the annotation\n Default:\ncomment.showAnnotationImagetrue comment.textArea.maxHeight Type: integer\n Description: Comment text area max height corresponds to the maximum height when expanding the text with the button \u0026ldquo;Show more\u0026rdquo;, in pixels\n Default:\ncomment.textArea.maxHeight0 comment.contextStatusMenu.enabled Type: boolean\n Description: Enable contextual status menu will allow to right click on an comment annotation to add a status\n Default:\ncomment.contextStatusMenu.enabledfalse comment.multiple.thread.level.enabled Type: boolean\n Description: Enable multiple comment thread level display\n Default:\ncomment.multiple.thread.level.enabledfalse comment.richtext.shortcut.enabled Type: boolean\n Description: Enable richtext shortcut: Enter validates the annotation comment and Shift\u002bEnter makes a new line\n Default:\ncomment.richtext.shortcut.enabledfalse Contextual menu contextualMenu.enabled Type: boolean\n Description: Activates ARender contextual right click menu\n Default:\ncontextualMenu.enabledtrue contextualMenu.icons.enabled Type: boolean\n Description: Activates ARender contextual icons mode\n Default:\ncontextualMenu.icons.enabledfalse contextualMenu.hasPrint Type: boolean\n Description: Enables the print option for the contextual menu\n Default:\ncontextualMenu.hasPrintfalse contextualMenu.hasPrintAll Type: boolean\n Description: Enables the print all documents option for the contextual menu\n Default:\ncontextualMenu.hasPrintAllfalse contextualMenu.hasStickyNote Type: boolean\n Description: Enables the create a sticky note option for the contextual menu\n Default:\ncontextualMenu.hasStickyNotetrue contextualMenu.hasCropBoxImage Type: boolean\n Description: Enables the create a cropbox image from the contextual menu\n Default:\ncontextualMenu.hasCropBoxImagefalse contextualMenu.hasHighlightText Type: boolean\n Description: Enables a textual highlight annotation creation option for the contextual menu\n Default:\ncontextualMenu.hasHighlightTexttrue contextualMenu.hasStrikeoutText Type: boolean\n Description: Enables a strike through annotation creation option for the contextual menu\n Default:\ncontextualMenu.hasStrikeoutTexttrue contextualMenu.hasUnderlineText Type: boolean\n Description: Enables an underline annotation creation option for the contextual menu\n Default:\ncontextualMenu.hasUnderlineTexttrue contextualMenu.hasHighlight Type: boolean\n Description: Enables an highlight annotation creation option for the contextual menu\n Default:\ncontextualMenu.hasHighlighttrue contextualMenu.hasCircle Type: boolean\n Description: Enables a circle annotation creation option for the contextual menu\n Default:\ncontextualMenu.hasCircletrue contextualMenu.hasArrow Type: boolean\n Description: Enables an arrow annotation creation option for the contextual menu\n Default:\ncontextualMenu.hasArrowtrue contextualMenu.hasPolygon Type: boolean\n Description: Enables a polygon annotation creation option for the contextual menu\n Default:\ncontextualMenu.hasPolygonfalse contextualMenu.hasPolyline Type: boolean\n Description: Enables a polyline annotation creation option for the contextual menu\n Default:\ncontextualMenu.hasPolylinefalse contextualMenu.hasFreehand Type: boolean\n Description: Enables a freehand annotation creation option for the contextual menu\n Default:\ncontextualMenu.hasFreehandfalse contextualMenu.hasPageRotation Type: boolean\n Description: Enables the rotate option for the contextual menu\n Default:\ncontextualMenu.hasPageRotationfalse contextualMenu.hasMultiView Type: boolean\n Description: Enables the open multiview option for the contextual menu\n Default:\ncontextualMenu.hasMultiViewfalse contextualMenu.hasShowGuideRuler Type: boolean\n Description: Enables the \u0026ldquo;show guide here\u0026rdquo; option for the contextual menu\n Default:\ncontextualMenu.hasShowGuideRulerfalse contextualMenu.hasHideGuideRuler Type: boolean\n Description: Enables the \u0026ldquo;hide guide ruler\u0026rdquo; option for the contextual menu\n Default:\ncontextualMenu.hasHideGuideRulerfalse contextualMenu.hasHyperlink Type: boolean\n Description: Enables a hyperlink creation option for the contextual menu\n Default:\ncontextualMenu.hasHyperlinktrue contextualMenu.hasAnchor Type: boolean\n Description: Enables an anchor creation option for the contextual menu\n Default:\ncontextualMenu.hasAnchortrue contextualMenu.hasStamp Type: boolean\n Description: Enables a stamp annotation creation option for the contextual menu\n Default:\ncontextualMenu.hasStampfalse contextualMenu.hasFreetext Type: boolean\n Description: Enables a freetext annotation creation option for the contextual menu\n Default:\ncontextualMenu.hasFreetextfalse Date date.format Type: String\n Description: Specify the date format for the annotations\n Default:\ndate.formatdd-MM-yyyy HH:mm:ss Document document.vertical.slider.changeToPage.enabled Type: boolean\n Description: Enabling the scroll by step instead of jumping to page on the scrollUp and scrollDown button\n Default:\ndocument.vertical.slider.changeToPage.enabledfalse document.vertical.slider.new.click.scrollbar.behavior Type: boolean\n Description: No description yet provided\n Default:\ndocument.vertical.slider.new.click.scrollbar.behaviortrue document.progressiveLoading Type: boolean\n Description: Activates the progressive loading of ARender front end side (the layout is asked by parts from the front end)\n Default:\ndocument.progressiveLoadingfalse document.loading.progress.update Type: boolean\n Description: Update and notify the end user to the progressive loading mechanisms\n Default:\ndocument.loading.progress.updatetrue Documentbuilder documentbuilder.enabled Type: boolean\n Description: Enables the document builder button (and feature)\n Default:\ndocumentbuilder.enabledfalse documentbuilder.button.visible Type: boolean\n Description: Sets the document builder button visible\n Default:\ndocumentbuilder.button.visibletrue documentbuilder.activateOnStartup Type: boolean\n Description: Activate the document builder at startup as soon as the documents are ready\n Default:\ndocumentbuilder.activateOnStartupfalse documentbuilder.hideDocumentNavigator Type: boolean\n Description: Hide the document navigator once the document builder is opened\n Default:\ndocumentbuilder.hideDocumentNavigatortrue documentbuilder.displaySaveWarning Type: boolean\n Description: Display a save warning if a document with modifications is left when leaving ARender\n Default:\ndocumentbuilder.displaySaveWarningtrue documentbuilder.thumbs.draggable Type: boolean\n Description: Make the document builder thumbnails draggable in order to organize the pages\n Default:\ndocumentbuilder.thumbs.draggabletrue documentbuilder.width Type: integer\n Description: Sets the document builder panel width\n Default:\ndocumentbuilder.width280 documentbuilder.save.action Type: String\n Description: Sets the document builder default save button action\n Default:\ndocumentbuilder.save.actionsave documentbuilder.save.behavior Type: String\n Description: Sets the document builder save behavior (legacy): UPDATE_NO_DOCUMENT, CREATE_NEW_FIRST_DOCUMENT, UPDATE_FIRST_DOCUMENT, UPDATE_ALL_DOCUMENT\n Default:\ndocumentbuilder.save.behaviorUPDATE_NO_DOCUMENT documentbuilder.save.download Type: boolean\n Description: Activates the local download builder button\n Default:\ndocumentbuilder.save.downloadtrue documentbuilder.save.delete Type: boolean\n Description: Activates the delete current document from the builder button\n Default:\ndocumentbuilder.save.deletefalse documentbuilder.save.freeze Type: boolean\n Description: Once documents are built, a frozen title will remain and need to be manually removed to confirm the operation\n Default:\ndocumentbuilder.save.freezetrue documentbuilder.addChild.enabled Type: boolean\n Description: Allow the document builder to create child documents (folders)\n Default:\ndocumentbuilder.addChild.enabledfalse documentbuilder.createDocument.enabled Type: boolean\n Description: Allow the document builder to create new documents (not only compose)\n Default:\ndocumentbuilder.createDocument.enabledtrue documentbuilder.deleteSelectedThumbs.enabled Type: boolean\n Description: Activate the feature to delete on right click a list of selected thumbs\n Default:\ndocumentbuilder.deleteSelectedThumbs.enabledtrue documentbuilder.createDocumentFromSelectedThumbs.enabled Type: boolean\n Description: Activate the feature to create a new document from selected thumbs\n Default:\ndocumentbuilder.createDocumentFromSelectedThumbs.enabledtrue documentbuilder.close.enabled Type: boolean\n Description: Activate the contextual menu option to close the builder\n Default:\ndocumentbuilder.close.enabledtrue documentbuilder.button.legacySave.enabled Type: boolean\n Description: Activate the legacy save document builder button\n Default:\ndocumentbuilder.button.legacySave.enabledfalse documentbuilder.button.download.enabled Type: boolean\n Description: Activate the button: download the builder document locally\n Default:\ndocumentbuilder.button.download.enabledtrue documentbuilder.button.custom.enabled Type: boolean\n Description: Activate the button: run custom action on builder document\n Default:\ndocumentbuilder.button.custom.enabledfalse documentbuilder.button.download.annotations.enabled Type: boolean\n Description: Activate the button: download the builder document with annotation\n Default:\ndocumentbuilder.button.download.annotations.enabledfalse documentbuilder.button.updateAll.enabled Type: boolean\n Description: Activate the button: update all documents\n Default:\ndocumentbuilder.button.updateAll.enabledfalse documentbuilder.button.createFirst.enabled Type: boolean\n Description: Activate the button: Create new first document\n Default:\ndocumentbuilder.button.createFirst.enabledfalse documentbuilder.button.updateFirst.enabled Type: boolean\n Description: Activate the button: Update the document\n Default:\ndocumentbuilder.button.updateFirst.enabledfalse documentbuilder.button.saveAll.enabled Type: boolean\n Description: If active, the saveAll button will visible\n Default:\ndocumentbuilder.button.saveAll.enabledfalse documentbuilder.button.saveAll.active.when.empty Type: boolean\n Description: If active, the saveAll button will be always visible if enabled, even if documents are empty\n Default:\ndocumentbuilder.button.saveAll.active.when.emptyfalse documentbuilder.button.updateAll.active.when.empty Type: boolean\n Description: If active, the updateAll button will be always visible if enabled, even if documents are empty\n Default:\ndocumentbuilder.button.updateAll.active.when.emptyfalse documentbuilder.populatorPolicy Type: String\n Description: Sets up the policy to populate the document builder: CopyCurrentDocument or EmptyDocument\n Default:\ndocumentbuilder.populatorPolicyCopyCurrentDocument documentbuilder.populatorPolicy.CopyCurrentDocument.flattenNodeHierarchy Type: boolean\n Description: Sets up the policy CopyCurrentDocument from the builder, does it need to flatten the documents indentation or not\n Default:\ndocumentbuilder.populatorPolicy.CopyCurrentDocument.flattenNodeHierarchytrue documentbuilder.button.hideUntilLoaded Type: boolean\n Description: Hides the document builder button until all documents have been loaded\n Default:\ndocumentbuilder.button.hideUntilLoadedtrue documentbuilder.afterDownload Type: String\n Description: Thumb navigator view behavior after processing a download in documentbuilder: hide, disable, nochange\n Default:\ndocumentbuilder.afterDownloadhide documentbuilder.button.refresh.enabled Type: boolean\n Description: Activate the button: Refresh the document to its original state\n Default:\ndocumentbuilder.button.refresh.enabledtrue documentbuilder.button.page.removal.enabled Type: boolean\n Description: Activate the red cross button to remove a page in the document builder.\n Default:\ndocumentbuilder.button.page.removal.enabledtrue documentbuilder.button.document.removal.enabled Type: boolean\n Description: Activate the cross button to delete the document in the document builder\n Default:\ndocumentbuilder.button.document.removal.enabledtrue Documentnavigator documentnavigator.width Type: integer\n Description: Sets up the width (in pixel) of the document navigator (left tabs of ARender)\n Default:\ndocumentnavigator.width255 documentnavigator.ears.hideTimerDelay Type: integer\n Description: Sets up the time (in ms) to auto hide the arrow for maximizing or reducing the document navigator\n Default:\ndocumentnavigator.ears.hideTimerDelay500 documentnavigator.initialWidth Type: String\n Description: Sets up the default position of the document navigator tabs: Default, Reduced or Expanded\n Default:\ndocumentnavigator.initialWidthDefault documentnavigator.expand.reduce.ratio Type: integer\n Description: Default value set up to 70. The document navigator will take 70 percent of the screen.\n Default:\ndocumentnavigator.expand.reduce.ratio70 Error error.warninDelay Type: integer\n Description: Delay (in s) before showing the warning menu that the document might take time to process\n Default:\nerror.warninDelay10 error.hasDownloadButton Type: boolean\n Description: Allow the error menu to display a download link for the document\n Default:\nerror.hasDownloadButtontrue error.hideErrorStack Type: boolean\n Description: Disable the error menu to display error stack traces (useful for debug\/integration testing, not suitable for production)\n Default:\nerror.hideErrorStacktrue Filter filter.comment.showTabImage Type: boolean\n Description: Allows to filter the annotation in the comment explorer\n Default:\nfilter.comment.showTabImagetrue filter.comment.showTabLabel Type: boolean\n Description: Shows a label instead of icons for filtering\n Default:\nfilter.comment.showTabLabelfalse filter.comment.showSwitchFilter Type: boolean\n Description: Shows the switch filter for solved\/unresolved requests\n Default:\nfilter.comment.showSwitchFiltertrue Hyperlinks hyperlinks.loadInARender Type: boolean\n Description: Open hyperlinks into ARender instead of new window\n Default:\nhyperlinks.loadInARenderfalse hyperlinks.loadFromPDF Type: boolean\n Description: Load hyperlinks coming from the PDF file\n Default:\nhyperlinks.loadFromPDFtrue hyperlinks.displayFrame Type: boolean\n Description: Display frame\/blue box around hyperlinks if needed\n Default:\nhyperlinks.displayFrametrue hyperlinks.load.internal Type: boolean\n Description: Hyperlinks contained from the PDF document will be loaded\n Default:\nhyperlinks.load.internaltrue hyperlinks.load.external Type: boolean\n Description: Hyperlinks contained from the annotations will be loaded\n Default:\nhyperlinks.load.externaltrue Image image.cropbox.target.dpi Type: integer\n Description: Configures the target DPI for the pictures generated from the cropbox (base dpi is 72, default target is 150)\n Default:\nimage.cropbox.target.dpi150 image.cropbox.window.position.left.px Type: integer\n Description: Setup the position in pixel of the Left of the popup window\n Default:\nimage.cropbox.window.position.left.px0 image.cropbox.window.position.top.px Type: integer\n Description: Setup the position in pixel of the Top of the popup window\n Default:\nimage.cropbox.window.position.top.px0 image.cropbox.window.position.width.px Type: integer\n Description: If superior to -1, will set the width of the popup window. If -1, will set to a \u0026ldquo;screen ratio\u0026rdquo; of the screen available space\n Default:\nimage.cropbox.window.position.width.px-1 image.cropbox.window.position.height.px Type: integer\n Description: If superior to -1, will set the height of the popup window. If -1, will set to a \u0026ldquo;screen ratio\u0026rdquo; of the screen available space\n Default:\nimage.cropbox.window.position.height.px-1 image.cropbox.window.screen.ratio Type: integer\n Description: Sets the screen ratio to use of available space for the width and height when they are set to -1\n Default:\nimage.cropbox.window.screen.ratio3 image.cropbox.can.expand Type: boolean\n Description: If true, resizing the window will allow the expand of images (over their natural sizes)\n Default:\nimage.cropbox.can.expandtrue image.cropbox.include.annotations Type: boolean\n Description: If true, annotations will be on the cropbox\n Default:\nimage.cropbox.include.annotationstrue Mousewheel mousewheel.speed.factor Type: float\n Description: Mousewheel velocity ratio factor, the higher the faster\n Default:\nmousewheel.speed.factor1.0 Notifications notifications.duration Type: integer\n Description: Sets up the time, in milliseconds of ARender legacy notifications\n Default:\nnotifications.duration500 Plume plume.enabled Type: boolean\n Description: Enables Plume integration with ARender\n Default:\nplume.enabledfalse Print print.renditionWidth Type: integer\n Description: Width in pixels for the images used by the print as images feature\n Default:\nprint.renditionWidth1200 print.imageStyle Type: String\n Description: Sets up the CSS print width size once rendered\n Default:\nprint.imageStylewidth:800px; print.includeAnnotationsByDefault Type: boolean\n Description: Always check by default the \u0026ldquo;print with annotations\u0026rdquo; option\n Default:\nprint.includeAnnotationsByDefaultfalse print.forcePrintAnnotations Type: boolean\n Description: Force the print of annotations (cannot be unchecked)\n Default:\nprint.forcePrintAnnotationsfalse print.waterMarkActive Type: boolean\n Description: Activate the watermarking feature from the print menu\n Default:\nprint.waterMarkActivefalse print.usePDFPrint Type: boolean\n Description: Print using a PDF instead of a set of images, lowers total download size\n Default:\nprint.usePDFPrinttrue print.allDocumentsByDefault Type: boolean\n Description: Print by default all documents\n Default:\nprint.allDocumentsByDefaultfalse Rotation rotation.ignoreForceReadOnly Type: boolean\n Description: Rotation annotations shall ignore force read only\n Default:\nrotation.ignoreForceReadOnlyfalse rotation.ignoreForceLocked Type: boolean\n Description: Rotation annotations shall ignore force locked\n Default:\nrotation.ignoreForceLockedfalse Short cut shortCut.copy.enabled Type: boolean\n Description: Enables copy shortcut with CRTL\u002bC\n Default:\nshortCut.copy.enabledtrue shortCut.cut.enabled Type: boolean\n Description: Enables copy shortcut with CRTL\u002bX\n Default:\nshortCut.cut.enabledtrue shortCut.print.key Type: String\n Description: Configures a print key shortcut\n Default:\nshortCut.print.keyp shortCut.print.enabled Type: boolean\n Description: Enables a print key shortcut\n Default:\nshortCut.print.enabledtrue Style style.sheet Type: String\n Description: Change the default ARender CSS\n Default:\nstyle.sheetARender-mat.min.css Thumbexplorer thumbexplorer.enabled Type: boolean\n Description: Activates the thumbExplorer: the view to browse the document by thumbnails\n Default:\nthumbexplorer.enabledtrue thumbexplorer.indentation Type: integer\n Description: Sets up the indentation of Thumbs, in pixels when they need to indent (child documents)\n Default:\nthumbexplorer.indentation20 thumbexplorer.maxLevelToLoad Type: integer\n Description: Sets up the maximum level of indentation\n Default:\nthumbexplorer.maxLevelToLoad10 thumbexplorer.thumb.margin Type: integer\n Description: Sets up the thumbs margin in pixels\n Default:\nthumbexplorer.thumb.margin5 thumbexplorer.thumb.width Type: integer\n Description: Sets up the thumbs width in pixels\n Default:\nthumbexplorer.thumb.width100 thumbexplorer.thumb.grow.min Type: integer\n Description: Sets up the minimum amount of pixels needed for the pictree to grow in size\n Default:\nthumbexplorer.thumb.grow.min300 thumbexplorer.thumb.grow.increment Type: integer\n Description: Sets up the growth increment once the thumbnail can grow\n Default:\nthumbexplorer.thumb.grow.increment10 thumbexplorer.thumb.grow.ratio Type: integer\n Description: Sets up the growth ratio corresponding to the growth of the panel\n Default:\nthumbexplorer.thumb.grow.ratio1 thumbexplorer.title.allowHTML Type: boolean\n Description: If true, allows thumbnails titles to have HTML content\n Default:\nthumbexplorer.title.allowHTMLfalse thumbexplorer.metadata Type: boolean\n Description: If true, thumbnails will display a popup information with document metadata\n Default:\nthumbexplorer.metadatatrue thumbexplorer.layout.loading.delay Type: integer\n Description: Sets up the delay in milliseconds to load the layout for the thumbnails\n Default:\nthumbexplorer.layout.loading.delay5 thumbexplorer.contextualMenu.createPageAnchor Type: boolean\n Description: Allows to create an URL anchor to a page from the thumbnails\n Default:\nthumbexplorer.contextualMenu.createPageAnchortrue Timeline timeline.panel.annotationBar.showResizeCircleButton Type: boolean\n Description: Display the resize button for the annotation timeline panel for videos\n Default:\ntimeline.panel.annotationBar.showResizeCircleButtontrue timeline.panel.annotationBar.changeVideoCurrentTimeOnDrag.enabled Type: boolean\n Description: On drag of the annotations, update the video timer accordingly\n Default:\ntimeline.panel.annotationBar.changeVideoCurrentTimeOnDrag.enabledtrue timeline.panel.openIfAnnotated Type: boolean\n Description: Opens the timeline panel if annotations are existing on the video\n Default:\ntimeline.panel.openIfAnnotatedtrue timeline.panel.openOnEdit Type: boolean\n Description: Opens the timeline panel if an annotation is being edited on video\n Default:\ntimeline.panel.openOnEdittrue Toaster toaster.log.severe.autoHide Type: boolean\n Description: Allows SEVERE toaster notifications to autohide\n Default:\ntoaster.log.severe.autoHidefalse toaster.log.warning.autoHide Type: boolean\n Description: Allows WARNING toaster notifications to autohide\n Default:\ntoaster.log.warning.autoHidetrue toaster.log.info.autoHide Type: boolean\n Description: Allows INFO toaster notifications to autohide\n Default:\ntoaster.log.info.autoHidetrue toaster.log.config.autoHide Type: boolean\n Description: Allows CONFIG toaster notifications to autohide\n Default:\ntoaster.log.config.autoHidetrue toaster.log.fine.autoHide Type: boolean\n Description: Allows FINE toaster notifications to autohide\n Default:\ntoaster.log.fine.autoHidetrue toaster.log.finer.autoHide Type: boolean\n Description: Allows FINER toaster notifications to autohide\n Default:\ntoaster.log.finer.autoHidetrue toaster.log.finest.autoHide Type: boolean\n Description: Allows FINEST toaster notifications to autohide\n Default:\ntoaster.log.finest.autoHidetrue toaster.log.severe.enabled Type: boolean\n Description: Allows SEVERE toaster notifications to be displayed\n Default:\ntoaster.log.severe.enabledtrue toaster.log.warning.enabled Type: boolean\n Description: Allows WARNING toaster notifications to be displayed\n Default:\ntoaster.log.warning.enabledtrue toaster.log.info.enabled Type: boolean\n Description: Allows INFO toaster notifications to be displayed\n Default:\ntoaster.log.info.enabledtrue toaster.log.config.enabled Type: boolean\n Description: Allows CONFIG toaster notifications to be displayed\n Default:\ntoaster.log.config.enabledfalse toaster.log.fine.enabled Type: boolean\n Description: Allows FINE toaster notifications to be displayed\n Default:\ntoaster.log.fine.enabledfalse toaster.log.finer.enabled Type: boolean\n Description: Allows FINER toaster notifications to be displayed\n Default:\ntoaster.log.finer.enabledfalse toaster.log.finest.enabled Type: boolean\n Description: Allows FINEST toaster notifications to be displayed\n Default:\ntoaster.log.finest.enabledfalse toaster.toast.timeout Type: integer\n Description: Sets up the timeout for toaster notifications to be hidden\n Default:\ntoaster.toast.timeout2000 toaster.toast.newestOnTop Type: boolean\n Description: If true, displays the newest toaster logs on top, if false, on the bottom\n Default:\ntoaster.toast.newestOnToptrue Toolbar toolbar.activateBorders Type: boolean\n Description: Allows from the toolbar to alter the borders of annotations\n Default:\ntoolbar.activateBorderstrue toolbar.lockedObfuscate Type: boolean\n Description: If true, all redaction annotations will become locked once saved, and can no longer be edited\n Default:\ntoolbar.lockedObfuscatefalse toolbar.opacity.slider.enabled Type: boolean\n Description: Enables opacity slider for annotations that support it\n Default:\ntoolbar.opacity.slider.enabledtrue toolbar.richtext.hasSubscript Type: boolean\n Description: Enables subscript support in rich text\n Default:\ntoolbar.richtext.hasSubscriptfalse toolbar.richtext.hasSuperscript Type: boolean\n Description: Enables superscript support in rich text\n Default:\ntoolbar.richtext.hasSuperscriptfalse toolbar.richtext.hasStrikeThrough Type: boolean\n Description: Enables strike through support in rich text\n Default:\ntoolbar.richtext.hasStrikeThroughfalse toolbar.richtext.hasRemoveFormat Type: boolean\n Description: Enables the format removal of the selected in rich text\n Default:\ntoolbar.richtext.hasRemoveFormatfalse Top panel topPanel.logo Type: boolean\n Description: Show the top panel logo\n Default:\ntopPanel.logotrue topPanel.logo.url Type: String\n Description: Define the top panel logo URL\n Default:\ntopPanel.logo.urlarender-icones-svg\/arender-logo-white.svg topPanel.logo.width Type: integer\n Description: The top panel logo width (in pixel)\n Default:\ntopPanel.logo.width26 topPanel.logo.height Type: integer\n Description: The top panel logo height (in pixel)\n Default:\ntopPanel.logo.height26 topPanel.logo.margin.left Type: integer\n Description: The top panel logo margin left (in pixel)\n Default:\ntopPanel.logo.margin.left10 topPanel.widgets.beanNames Type: String\n Description: The list of widgets to define (XML bean names) for the top panel\n Default:\ntopPanel.widgets.beanNameslogo,documentMenu,printButton,annotationMenu,cropBoxButton,saveDirtyAnnotations,refreshAnnotation,addObfuscateAnnotationButton,addObfuscateZoneAnnotationButton,ImageProcessingVerticalSubMenu,navigationButtons,zoomButtons,rotationButtons,multiViewTools,annotationToolbar,searchBox,fullscreenButton,documentBuilderButton,plumeMenu topPanel.navigation.buttons.beanNames Type: String\n Description: The list of widgets to define (XML bean names) for the navigation section\n Default:\ntopPanel.navigation.buttons.beanNamesfirstPageButton,previousPageButton,pageNavigation,nextPageButton,lastPageButton topPanel.zoom.buttons.beanNames Type: String\n Description: The list of widgets to define (XML bean names) for the zoom section\n Default:\ntopPanel.zoom.buttons.beanNameszoomOut,zoomBox,zoomIn,zoomInZone,zoomInZoneGlass,zoomFullWidth,zoomFullHeight,zoomFullPage topPanel.rotation.buttons.beanNames Type: String\n Description: The list of widgets to define (XML bean names) for the rotation section\n Default:\ntopPanel.rotation.buttons.beanNamesrotateAllLeft,rotateLeft,rotateRight,rotateAllRight,rotateReset topPanel.annotation.buttons.beanNames Type: String\n Description: The list of widgets to define (XML bean names) for the annotation sub-menu\n Default:\ntopPanel.annotation.buttons.beanNamesaddStickyNoteAnnotationButton,addFreeTextAnnotationButton,addHighlightRectangleAnnotationButton,addHighlightCircleAnnotationButton,addHighlightRectangleAnnotationRepeatButton,addHighlightCircleAnnotationRepeatButton,addPolygonAnnotationButton,addPolylineAnnotationButton,addFreehandAnnotationButton,addHighlightTextAnnotationButton,addUnderlineTextAnnotationButton,addStrikethroughTextAnnotationButton,addArrowAnnotationButton,addArrowAnnotationRepeatButton,addStampAnnotationButton,addPolygonAnnotationRepeatButton,addPolylineAnnotationRepeatButton,addFreehandAnnotationRepeatButton,addHighlightTextAnnotationRepeatButton,addUnderlineTextAnnotationRepeatButton,addStrikethroughTextAnnotationRepeatButton,showAllAnnotationsButton,showAllAnnotationsAndRotationsButton topPanel.download.buttons.beanNames Type: String\n Description: The list of widgets to define (XML bean names) for the download\/upload file sub-menu\n Default:\ntopPanel.download.buttons.beanNamesdownloadButton,downloadRootButton,downloadPdfButton,downloadAllButton,downloadAnnotationsButton,downloadAnnotationsCSVButton,downloadXFDFAnnotationsButton,downloadFDFAnnotationsButton,downloadWithFDFAnnotationsButton,uploadButton,uploadURLButton,uploadXFDFButton topPanel.imageProcessing.buttons.beanNames Type: String\n Description: The list of widgets to define (XML bean names) for the image processing file sub-menu\n Default:\ntopPanel.imageProcessing.buttons.beanNamesImageProcessingVerticalSubMenu topPanel.imageProcessing.buttons.vertical.beanNames Type: String\n Description: The list of widgets to define (XML bean names) for the image processing file sub-menu in vertical\n Default:\ntopPanel.imageProcessing.buttons.vertical.beanNamescontrastSlider,brightnessSlider topPanel.documentMenu Type: boolean\n Description: Activate the document sub-menu\n Default:\ntopPanel.documentMenutrue topPanel.cropbox.enabled Type: boolean\n Description: Activate the button for cropbox in the toppanel\n Default:\ntopPanel.cropbox.enabledfalse topPanel.lineHeadTailMenu Type: boolean\n Description: Change to false to remove line head options menu.\n Default:\ntopPanel.lineHeadTailMenutrue topPanel.documentMenu.upload Type: boolean\n Description: Activate the upload file button\n Default:\ntopPanel.documentMenu.uploadtrue topPanel.documentMenu.url Type: boolean\n Description: Activate the open url button\n Default:\ntopPanel.documentMenu.urltrue topPanel.documentMenu.url.open.using.enter Type: boolean\n Description: Allow to use enter to validate the input URL from the URL button\n Default:\ntopPanel.documentMenu.url.open.using.entertrue topPanel.documentMenu.xfdfUpload Type: boolean\n Description: Activate the top panel XFDF upload button\n Default:\ntopPanel.documentMenu.xfdfUploadfalse topPanel.documentMenu.download Type: boolean\n Description: Activate the top panel download document button\n Default:\ntopPanel.documentMenu.downloadtrue topPanel.documentMenu.download.root Type: boolean\n Description: Activate the top panel download composite document button\n Default:\ntopPanel.documentMenu.download.roottrue topPanel.documentMenu.download.behavior Type: String\n Description: The default behavior for download. Valid values: DOWNLOAD_SOURCE or DOWNLOAD_NON_PDF\n Default:\ntopPanel.documentMenu.download.behaviorDOWNLOAD_NON_PDF topPanel.documentMenu.downloadPDF Type: boolean\n Description: Activate the top panel button: download document as PDF\n Default:\ntopPanel.documentMenu.downloadPDFtrue topPanel.documentMenu.downloadAll Type: boolean\n Description: Activate the top panel button: download all current documents as a single PDF\n Default:\ntopPanel.documentMenu.downloadAlltrue topPanel.documentMenu.downloadAnnotation Type: boolean\n Description: Activate the top panel button: download the current document with annotations as PDF\n Default:\ntopPanel.documentMenu.downloadAnnotationtrue topPanel.documentMenu.downloadCSVAnnotations Type: boolean\n Description: Activate the top panel button: download the current document annotations as CSV\n Default:\ntopPanel.documentMenu.downloadCSVAnnotationsfalse topPanel.documentMenu.downloadWithFDFAnnotation Type: boolean\n Description: Activate the top panel button: download the current document with annotations as FDF\n Default:\ntopPanel.documentMenu.downloadWithFDFAnnotationfalse topPanel.documentMenu.downloadXFDFAnnotations Type: boolean\n Description: Activate the top panel button: download the current document annotations as XFDF\n Default:\ntopPanel.documentMenu.downloadXFDFAnnotationsfalse topPanel.documentMenu.downloadFDFAnnotations Type: boolean\n Description: Activate the top panel button: download the current document annotations as FDF\n Default:\ntopPanel.documentMenu.downloadFDFAnnotationsfalse topPanel.imageProcessMenu.processBrightness Type: String\n Description: Sets up slider to handle brightness\n Default:\ntopPanel.imageProcessMenu.processBrightnessbrightness topPanel.imageProcessMenu.processContrast Type: String\n Description: Sets up slider to handle contrast\n Default:\ntopPanel.imageProcessMenu.processContrastcontrast topPanel.imageProcessMenu.doOnAllPage Type: boolean\n Description: Enable the image process on all pages\n Default:\ntopPanel.imageProcessMenu.doOnAllPagetrue topPanel.imageProcessMenu.maxBrightness Type: integer\n Description: Sets up the max value of the brightness slider\n Default:\ntopPanel.imageProcessMenu.maxBrightness201 topPanel.imageProcessMenu.maxContrast Type: integer\n Description: Sets up the max value of the contrast slider\n Default:\ntopPanel.imageProcessMenu.maxContrast201 topPanel.imageProcessMenu.defaultBrightness Type: integer\n Description: Sets up the default value of the brightness slider\n Default:\ntopPanel.imageProcessMenu.defaultBrightness100 topPanel.imageProcessMenu.defaultContrast Type: integer\n Description: Sets up the default value of the contrast slider\n Default:\ntopPanel.imageProcessMenu.defaultContrast100 topPanel.imageProcessMenu Type: boolean\n Description: Activate the top panel imageProcessing button\n Default:\ntopPanel.imageProcessMenutrue topPanel.subMenu.button.timeOut Type: integer\n Description: Sets up the time in Milliseconds before the sub-menu buttons disappear\n Default:\ntopPanel.subMenu.button.timeOut100 topPanel.subMenu.subPanel.timeOut Type: integer\n Description: Sets up the time in Milliseconds before the sub-menu panel disappears\n Default:\ntopPanel.subMenu.subPanel.timeOut500 topPanel.print Type: boolean\n Description: Activate the print button in the topPanel\n Default:\ntopPanel.printtrue topPanel.annotationMenu Type: boolean\n Description: Activate the annotation sub-menu\n Default:\ntopPanel.annotationMenutrue topPanel.annotationMenu.stickyNote Type: boolean\n Description: Activate the sticky note annotation button\n Default:\ntopPanel.annotationMenu.stickyNotetrue topPanel.annotationMenu.freetext Type: boolean\n Description: Activate the freetext annotation button\n Default:\ntopPanel.annotationMenu.freetexttrue topPanel.annotationMenu.stickyNote.editable Type: boolean\n Description: Allow the sticky note to be edited\n Default:\ntopPanel.annotationMenu.stickyNote.editabletrue topPanel.annotationMenu.highlight Type: boolean\n Description: Activate the highlight annotation button\n Default:\ntopPanel.annotationMenu.highlighttrue topPanel.annotationMenu.highlight.repeat Type: boolean\n Description: Activate the highlight annotation button, in repeat mode (does not cancel unless pressed again)\n Default:\ntopPanel.annotationMenu.highlight.repeatfalse topPanel.annotationMenu.arrow Type: boolean\n Description: Activate the arrow annotation button\n Default:\ntopPanel.annotationMenu.arrowtrue topPanel.annotationMenu.arrow.repeat Type: boolean\n Description: Activate the arrow annotation button, in repeat mode (does not cancel unless pressed again)\n Default:\ntopPanel.annotationMenu.arrow.repeatfalse topPanel.annotationMenu.polygon Type: boolean\n Description: Activate the polygon annotation button\n Default:\ntopPanel.annotationMenu.polygontrue topPanel.annotationMenu.polygon.repeat Type: boolean\n Description: Activate the polygon annotation button, in repeat mode (does not cancel unless pressed again)\n Default:\ntopPanel.annotationMenu.polygon.repeatfalse topPanel.annotationMenu.polyline Type: boolean\n Description: Activate the polyline annotation button\n Default:\ntopPanel.annotationMenu.polylinetrue topPanel.annotationMenu.polyline.repeat Type: boolean\n Description: Activate the polyline annotation button, in repeat mode (does not cancel unless pressed again)\n Default:\ntopPanel.annotationMenu.polyline.repeatfalse topPanel.annotationMenu.freehand Type: boolean\n Description: Activate the freehand annotation button\n Default:\ntopPanel.annotationMenu.freehandtrue topPanel.annotationMenu.freehand.repeat Type: boolean\n Description: Activate the freehand annotation button, in repeat mode (does not cancel unless pressed again)\n Default:\ntopPanel.annotationMenu.freehand.repeatfalse topPanel.annotationMenu.highlightText Type: boolean\n Description: Activate the text highlight annotation button\n Default:\ntopPanel.annotationMenu.highlightTextfalse topPanel.annotationMenu.highlightText.repeat Type: boolean\n Description: Activate the text highlight annotation button, in repeat mode (does not cancel unless pressed again)\n Default:\ntopPanel.annotationMenu.highlightText.repeatfalse topPanel.annotationMenu.underlineText Type: boolean\n Description: Activate the text underline annotation button\n Default:\ntopPanel.annotationMenu.underlineTextfalse topPanel.annotationMenu.underlineText.repeat Type: boolean\n Description: Activate the text underline annotation button, in repeat mode (does not cancel unless pressed again)\n Default:\ntopPanel.annotationMenu.underlineText.repeatfalse topPanel.annotationMenu.strikethroughText Type: boolean\n Description: Activate the strikethrough text annotation button\n Default:\ntopPanel.annotationMenu.strikethroughTextfalse topPanel.annotationMenu.strikethroughText.repeat Type: boolean\n Description: Activate the strikethrough text annotation button, in repeat mode (does not cancel unless pressed again)\n Default:\ntopPanel.annotationMenu.strikethroughText.repeatfalse topPanel.annotationMenu.circle Type: boolean\n Description: Activate the circle annotation button\n Default:\ntopPanel.annotationMenu.circletrue topPanel.annotationMenu.circle.repeat Type: boolean\n Description: Activate the circle annotation button, in repeat mode (does not cancel unless pressed again)\n Default:\ntopPanel.annotationMenu.circle.repeatfalse topPanel.annotationMenu.stamp Type: boolean\n Description: Activate the stamp annotation button\n Default:\ntopPanel.annotationMenu.stamptrue topPanel.annotationMenu.hide Type: boolean\n Description: Activate the hide annotations button\n Default:\ntopPanel.annotationMenu.hidetrue topPanel.annotationMenu.hideAll Type: boolean\n Description: Activate the hide all annotations button (includes redaction)\n Default:\ntopPanel.annotationMenu.hideAllfalse topPanel.obfuscate Type: boolean\n Description: Activate the redaction annotation button\n Default:\ntopPanel.obfuscatefalse topPanel.refresh Type: boolean\n Description: Activate the refresh annotations button\n Default:\ntopPanel.refreshtrue topPanel.zoomBox Type: boolean\n Description: Activate the boxed zoom button\n Default:\ntopPanel.zoomBoxtrue topPanel.pageNavigation.first Type: boolean\n Description: Activates the go to first page navigation button\n Default:\ntopPanel.pageNavigation.firsttrue topPanel.pageNavigation.previous Type: boolean\n Description: Activates the go to previous page navigation button\n Default:\ntopPanel.pageNavigation.previoustrue topPanel.pageNavigation.next Type: boolean\n Description: Activates the go to next page navigation button\n Default:\ntopPanel.pageNavigation.nexttrue topPanel.pageNavigation.last Type: boolean\n Description: Activates the go to last page navigation button\n Default:\ntopPanel.pageNavigation.lasttrue topPanel.zoom.fullWidth Type: boolean\n Description: Activates the zoom (full width of document) button\n Default:\ntopPanel.zoom.fullWidthtrue topPanel.zoom.fullHeight Type: boolean\n Description: Activates the zoom (full height of document) button\n Default:\ntopPanel.zoom.fullHeighttrue topPanel.zoom.fullPage Type: boolean\n Description: Activates the zoom (full page of document) button\n Default:\ntopPanel.zoom.fullPagetrue topPanel.zoom.in Type: boolean\n Description: Activates the zoom in button\n Default:\ntopPanel.zoom.intrue topPanel.zoom.out Type: boolean\n Description: Activates the zoom out button\n Default:\ntopPanel.zoom.outtrue topPanel.zoom.zone Type: boolean\n Description: Activates the zoom by zone button\n Default:\ntopPanel.zoom.zonetrue topPanel.zoom.zoneGlass Type: boolean\n Description: Activates the zoom (magnifying glass) button\n Default:\ntopPanel.zoom.zoneGlassfalse topPanel.zoom.zoneGlass.value Type: integer\n Description: Sets the default zoom ratio for the magnifying glass\n Default:\ntopPanel.zoom.zoneGlass.value2 topPanel.rotation.left Type: boolean\n Description: Activates the rotate left button\n Default:\ntopPanel.rotation.lefttrue topPanel.rotation.right Type: boolean\n Description: Activates the rotate right button\n Default:\ntopPanel.rotation.righttrue topPanel.rotation.all Type: boolean\n Description: Activates the rotate all pages buttons\n Default:\ntopPanel.rotation.allfalse topPanel.rotation.reset Type: boolean\n Description: Activates the rotate left button\n Default:\ntopPanel.rotation.resetfalse topPanel.rotation.degree Type: integer\n Description: Sets up the amount of rotation applied when pressing the rotation buttons\n Default:\ntopPanel.rotation.degree90 topPanel.rotation.add Type: boolean\n Description: Activates rotations sub-menu\n Default:\ntopPanel.rotation.addtrue topPanel.search Type: boolean\n Description: Activates the search in the top panel\n Default:\ntopPanel.searchtrue topPanel.search.default Type: boolean\n Description: If true, default search behavior. Otherwise, open in the advanced search panel\n Default:\ntopPanel.search.defaultfalse topPanel.search.displayResultsInExplorer Type: boolean\n Description: If true and topPanel.search.default is true, display search text results in the AdvancedSearchExplorer.\n Default:\ntopPanel.search.displayResultsInExplorerfalse topPanel.search.searchByVisiblePage Type: boolean\n Description: If true, the \u0026ldquo;next result\u0026rdquo; search button will jump to the next result on the current visible page instead of resuming where you left the search\n Default:\ntopPanel.search.searchByVisiblePagetrue topPanel.fullscreen Type: boolean\n Description: Activates the full screen button in the top panel\n Default:\ntopPanel.fullscreentrue topPanel.fullscreen.hideTopPanel Type: boolean\n Description: If true, full screen will hide the top panel totally\n Default:\ntopPanel.fullscreen.hideTopPanelfalse topPanel.fullscreen.alwaysShowTopPanel Type: boolean\n Description: If true, the toppanel will always be visible in fullscreen and won\u0026rsquo;t hide\n Default:\ntopPanel.fullscreen.alwaysShowTopPanelfalse Upload upload.file.openInNewWindow Type: boolean\n Description: Uploaded files should open in a new window of ARender\n Default:\nupload.file.openInNewWindowfalse Visualization visualization.mode Type: String\n Description: Visualization mode: Single, BookMode\n Default:\nvisualization.modeSingle visualization.reload.lower.quality Type: boolean\n Description: Reload lower quality images once the higher quality has been fetched (always load the perfect size, or save bandwidth)\n Default:\nvisualization.reload.lower.qualityfalse visualization.video.autoplay Type: boolean\n Description: Autoplay videos\n Default:\nvisualization.video.autoplaytrue visualization.pagechange.mouse Type: boolean\n Description: Mousewheel can change a document page\n Default:\nvisualization.pagechange.mousefalse visualization.pagechange.animation Type: boolean\n Description: Do animation on page changes (with navigation buttons)\n Default:\nvisualization.pagechange.animationfalse visualization.pagecorner.enabled Type: boolean\n Description: Display a corner on the pages border, allowing to change pages\n Default:\nvisualization.pagecorner.enabledfalse visualization.pagecorner.animation Type: boolean\n Description: Animates the page corner\n Default:\nvisualization.pagecorner.animationfalse visualization.fullscreen Type: boolean\n Description: Activates the full screen visualisation in ARender\n Default:\nvisualization.fullscreenfalse visualization.zoom.type Type: String\n Description: Sets up the default zoom type: Default, FullWidth, FullHeight, In, Out, Custom, FullPage\n Default:\nvisualization.zoom.typeFullWidth visualization.zoom.value Type: integer\n Description: Default Zoom value, in percent in case of custom zoom\n Default:\nvisualization.zoom.value100 visualization.zoom.animation Type: boolean\n Description: Animate on zoom\n Default:\nvisualization.zoom.animationfalse visualization.zoom.by.biggest.page Type: boolean\n Description: Zoom according to the biggest page (width or height). Otherwise to the first page\n Default:\nvisualization.zoom.by.biggest.pagetrue visualization.rotation.save.enabled Type: boolean\n Description: Allows rotations to be saved as annotation\n Default:\nvisualization.rotation.save.enabledfalse visualization.guideruler.enabled Type: boolean\n Description: Activate the ruler guide for ARender\n Default:\nvisualization.guideruler.enabledfalse visualization.guideruler.height Type: integer\n Description: Defines the height in pixel of the ruler guide\n Default:\nvisualization.guideruler.height10 visualization.guideruler.increment Type: integer\n Description: Defines the movement in height in pixel for the ruler guide\n Default:\nvisualization.guideruler.increment10 visualization.multiView.enabled Type: boolean\n Description: Allows documents to be viewed in multi documents\n Default:\nvisualization.multiView.enabledtrue visualization.multiView.direction Type: String\n Description: Defines the direction in which the multi view will open documents: horizontal or vertical\n Default:\nvisualization.multiView.directionvertical visualization.multiView.doComparison Type: boolean\n Description: Allows to compare documents on start of ARender, when two documents or more are opened\n Default:\nvisualization.multiView.doComparisonfalse visualization.multiView.showOnStart Type: boolean\n Description: Show the multivew mode on start\n Default:\nvisualization.multiView.showOnStartfalse visualization.multiView.synchronized Type: boolean\n Description: Synchronize the scrolling of the views when in multiview\n Default:\nvisualization.multiView.synchronizedtrue visualization.multiView.focusOnClick Type: boolean\n Description: Force the user to click on the documents instead of mouse hovering to change on which document can be annotated\n Default:\nvisualization.multiView.focusOnClickfalse visualization.multiView.header.timeoutMs Type: integer\n Description: Timeout in milliseconds to auto hide the timer\n Default:\nvisualization.multiView.header.timeoutMs5000 visualization.images.sharpen Type: boolean\n Description: Place a css on document images to undo some of the \u0026ldquo;optimisations\u0026rdquo; browser do to display images\n Default:\nvisualization.images.sharpenfalse visualization.images.tolerance Type: integer\n Description: Adapts the images width tolerance in pixel (received versus drawn on screen).\n Default:\nvisualization.images.tolerance10 visualization.images.svg.preview Type: boolean\n Description: Enables or disables the SVG previews images\n Default:\nvisualization.images.svg.previewtrue visualization.pages.prefetch Type: integer\n Description: Amount of pages to preload before they become visible\n Default:\nvisualization.pages.prefetch2 visualization.maximumConcurrentImageFetching Type: integer\n Description: Maximum number of document images to fetch simultaneously\n Default:\nvisualization.maximumConcurrentImageFetching8 visualization.nonVisiblePageTimeout Type: integer\n Description: Cleanup images which where non-visible for a long time (ms)\n Default:\nvisualization.nonVisiblePageTimeout120000 visualization.imageCleanupPeriod Type: integer\n Description: Period at which images are cleaned (ms)\n Default:\nvisualization.imageCleanupPeriod1500 visualization.maxImageCacheSize Type: integer\n Description: Maximum number of images to store in the cleanup cache before LRU eviction occurs\n Default:\nvisualization.maxImageCacheSize20 Window window.maximize Type: boolean\n Description: Maximizes the ARender window\n Default:\nwindow.maximizefalse \n/p>p>configuration/p>p>profile/p>p>property/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/full-config\/ }, { value: Quick menu, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/quick-menu\/, label: p>General Description Parameter Key Default value Type Enable quick menu quick.contextual.menu.enabled true Boolean Enable button to create highlight text annotation quick.contextual.menu.hasHighlightText true Boolean Enable button to create strikeout text annotation quick.contextual.menu.hasStrikeoutText true Boolean Enable button to create underline text annotation quick.contextual.menu.hasUnderlineText true Boolean Enable button to create hyperlink annotation quick.contextual.menu.hasHyperlink true Boolean Enable button to create hyperlink annotation with zone as target quick./p>p>General Description Parameter Key Default value Type Enable quick menu quick.contextual.menu.enabled true Boolean Enable button to create highlight text annotation quick.contextual.menu.hasHighlightText true Boolean Enable button to create strikeout text annotation quick.contextual.menu.hasStrikeoutText true Boolean Enable button to create underline text annotation quick.contextual.menu.hasUnderlineText true Boolean Enable button to create hyperlink annotation quick.contextual.menu.hasHyperlink true Boolean Enable button to create hyperlink annotation with zone as target quick.contextual.menu.hasHyperlinkZone true Boolean Enable button to create redact text quick.contextual.menu.hasRedactText true Boolean Enable button to create copy text quick.contextual.menu.hasCopyText true Boolean /p>p>configuration/p>p>quick menu/p>p>quickmenu/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/quick-menu\/ }, { value: Quickmenu, path: https:\/\/docs.arender.io\/features\/quickmenu\/, label: p>Description The quickmenu is a context menu that appears at the end of a text selection. This menu is positioned below the text and will allow you to perform actions on the text.\nThis menu can be disabled with the following configuration : configurations\/arender-custom-client.properties # Activates ARender quick contextual menu when text is selected quick.contextual.menu.enabledfalse \nActions Annotations creation Annotations requiring text selection have their creation button in the quickmenu./p>p>Description The quickmenu is a context menu that appears at the end of a text selection. This menu is positioned below the text and will allow you to perform actions on the text.\nThis menu can be disabled with the following configuration : configurations\/arender-custom-client.properties # Activates ARender quick contextual menu when text is selected quick.contextual.menu.enabledfalse \nActions Annotations creation Annotations requiring text selection have their creation button in the quickmenu. The quickmenu supports the following annotations:\n highlight underline strikeout redact (If user is allowed to add them) hyperlink Each button is enabled by default. You can individually disable buttons with the following configurations: configurations\/arender-custom-client.properties # Enables a textual highlight annotation creation option for the quick contextual menu quick.contextual.menu.hasHighlightTextfalse # Enables a strike through annotation creation option for the quick contextual menu quick.contextual.menu.hasStrikeoutTextfalse # Enables an underline annotation creation option for the quick contextual menu quick.contextual.menu.hasUnderlineTextfalse # Enables a hyperlink creation option for the quick contextual menu quick.contextual.menu.hasHyperlinkfalse # Enables a hyperlink area creation option for the quick contextual menu quick.contextual.menu.hasHyperlinkZonefalse # Enables a redact annotation creation option for the quick contextual menu quick.contextual.menu.hasRedactTextfalse \nCopy of text A button to copy selected text is enabled by default. This button can be deactivated with the following configuration:\nconfigurations\/arender-custom-client.properties # Enables a copy selected text option for the quick contextual menu quick.contextual.menu.hasCopyTextfalse /p>p>feature/p>p>annotations/p>p>menu/p>p>quickmenu/p>p>text/p>, url: https:\/\/docs.arender.io\/features\/quickmenu\/ }, { value: Redact, path: https:\/\/docs.arender.io\/features\/redact\/, label: p>Activate true redaction By default and for performance optimization, ARender allows any user to select the text behind the redaction.\nIf you need to deactivate this behaviour you need to use true redact, i.e. configure ARender to only fetch the text for authorized users. It is necessary to:\n Activate the fetch of redaction before the image generation: ~\/configurations\/arender-custom-server.properties arender.server.process.annotations.renditiontrue Implement the AuthenticationServiceProvider interface. Example available on GitHub Default behaviour ARender offers the possibility to hide the content of any type of document via the redact feature./p>p>Activate true redaction By default and for performance optimization, ARender allows any user to select the text behind the redaction.\nIf you need to deactivate this behaviour you need to use true redact, i.e. configure ARender to only fetch the text for authorized users. It is necessary to:\n Activate the fetch of redaction before the image generation: ~\/configurations\/arender-custom-server.properties arender.server.process.annotations.renditiontrue Implement the AuthenticationServiceProvider interface. Example available on GitHub Default behaviour ARender offers the possibility to hide the content of any type of document via the redact feature.\nTo activate the redact panel, add the following property. By default, it is disabled.\nconfigurations\/arender-custom-client.properties redactexplorer.enabledtrue This panel will give you access to the different redact buttons. By default, four redaction classic creation buttons are available.\nconfigurations\/arender-custom-client.properties redactexplorer.redacttrue redactexplorer.redactZonetrue redactexplorer.redactPageContenttrue redactexplorer.redactFullPagetrue The first one allows you to add a redact over text. The second one allows you to add a redact over a plotted area. The third allows you to redact all the textual content of the current page. The fourth allows you to redact the whole page.\nTwo buttons of redactions advanced creation are available.\nconfigurations\/arender-custom-client.properties redactexplorer.manualInputtrue redactexplorer.rulestrue redactexplorer.redact.with.reasonstrue The first one allows you to open manual input panel. The second one allows you to open rules panel.\nMore details on advanced redact can be found below.\nIt is possible to select reasons to apply on redactions.\nBy default the \u0026ldquo;With reason\u0026rdquo; radio button is selected.\nconfigurations\/arender-custom-client.properties # If true, the radio button \u0026#34;With reason\u0026#34; is selected redactexplorer.redact.with.reasonstrue The reasons are defined in the configuration files, it is possible to modify them as well as the default reasons as explained in the dedicated documentation\nWarning By default, only admin user can save redacts\nTo test please:\n Log in to ARender as admin: Either Clear the ARender Cookies , Or Open a browser in private navigation. Open ARender with the following query strings in the URL: ?useradmin\u0026amp;redactexplorer.enabledtrue Advanced redact Advanced redact panel offers two buttons, manual input and rules.\nconfigurations\/arender-custom-client.properties redactexplorer.manualInputtrue redactexplorer.rulestrue redactexplorer.redact.with.reasonstrue Manual input The manual input allows you to redact a informed text or a informed pattern in the input text.\nYou can personalize the redact application through the dedicated button:\n Page selection: allows you to choose all pages, a range of pages, several pages or the current page By default, the \u0026ldquo;All pages\u0026rdquo; option is selected. Once the search is done, you can see a preview of the results on your document. If you want to refine your selection, you can open the results panel:\n A vertical panel is opened showing all the results Unselect the results you don\u0026rsquo;t want to redact Apply all the selected redaction by clicking on the \u0026ldquo;Apply\u0026rdquo; button. Rules The rules option allows you to select one or more rules and apply them. These rules are defined in the configuration files as explained in the dedicated documentation\nOnce the rules are selected, trigger the search. It will show a preview of the results in the document. If you want to refine your selection, you can open the results panel:\n A vertical panel is opened showing all the results Unselect the results you don\u0026rsquo;t want to redact Apply all the selected redaction by clicking on the \u0026ldquo;Apply\u0026rdquo; button. Advanced options Add custom buttons It is also possible to add your own buttons. In the file arender-custom-integration.xml add the information of the button.\nconfigurations\/arender-custom-integration.xml \u0026lt;bean id\u0026#34;addRedact\u0026#34; class\u0026#34;com.arondor.viewer.client.toppanel.presenter.ActivableButtonPresenter\u0026#34;\u0026gt; \u0026lt;constructor-arg value\u0026#34;addRedact\u0026#34; \/\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;ref bean\u0026#34;labels#addRedact\u0026#34; \/\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;constructor-arg value\u0026#34;standardButton icon-square toppanelButton\u0026#34;\/\u0026gt; \u0026lt;property name\u0026#34;enabled\u0026#34; value\u0026#34;${redactexplorer.redactZone}\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;buttonGroup\u0026#34; value\u0026#34;topPanel\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;inactiveButtonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;quitAnnotationCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;buttonHandler\u0026#34;\u0026gt; \u0026lt;ref bean\u0026#34;redactZoneCreationAction\u0026#34; \/\u0026gt; \u0026lt;\/property\u0026gt;\t\u0026lt;\/bean\u0026gt; Then add the bean id of your button to the list named “redactButtons”. If it doesn’t exist, create it.\nconfigurations\/arender-custom-integration.xml \u0026lt;bean id\u0026#34;redactExplorerView\u0026#34; class\u0026#34;com.arondor.viewer.client.documentnavigator.redact.RedactExplorerView\u0026#34; scope\u0026#34;prototype\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;redactButtons\u0026#34;\u0026gt; \u0026lt;list\u0026gt; \u0026lt;ref bean\u0026#34;addRedact\u0026#34; \/\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; Conversion from V3\/V4 redactions to V2023 redactions The redaction model has evolved in ARender version 2023. To facilitate the conversion process, a new annotation accessor called RedactConverterAnnotationAccessor has been introduced, which allows for easy on-the-fly conversion.\nUsage via a Bean The new annotation accessor takes the bean name of another annotation accessor as a parameter. You can modify this bean name as follows:\nconfigurations\/arender-custom-server.properties arender.server.wrapper.source.annotation.accessormyCustomAnnotationAccessorBeanName myCustomAnnotationAccessorBeanName is the annotation accessor that will be added to the annotation accessor performing the conversion.\nWarning The annotation accessor must have a constructor with the following signature:\npublic CustomAnnotationAccessor(DocumentService documentService, DocumentAccessor documentAccessor) Usage via Java Code If you instantiate your CustomAnnotationAccessor using Java code, you will need to modify the instantiation as follows:\nCode Example RedactConverterAnnotationAccessor myConverterAccessor new RedactConverterAnnotationAccessor(new CustomAnnotationAccessor()); If you want to stop the on-the-fly conversion, you should use the following method:\nCode Example redactConverterAnnotationAccessor().setConvert(false); And the property:\nCode Example arender.server.wrapper.source.convertfalse /p>, url: https:\/\/docs.arender.io\/features\/redact\/ }, { value: Redact reasons, path: https:\/\/docs.arender.io\/learn\/how-to\/redact-reasons\/, label: p>Add reason It is possible to add redact reasons. These reasons will be directly displayed on the redact.\nChange the value to the values you want.\nWEB-INF\/classes\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;availableRedactReasons\u0026#34; class\u0026#34;java.util.ArrayList\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;list\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.RedactReason\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;(b)(1)\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;displayName\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Informations classées pour protéger la sécurité nationale.\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Information that is classified to protect national security.\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; Default value You can add one or more default reasons with the following property./p>p>Add reason It is possible to add redact reasons. These reasons will be directly displayed on the redact.\nChange the value to the values you want.\nWEB-INF\/classes\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;availableRedactReasons\u0026#34; class\u0026#34;java.util.ArrayList\u0026#34;\u0026gt; \u0026lt;constructor-arg\u0026gt; \u0026lt;list\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.annotation.common.RedactReason\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;symbolicName\u0026#34; value\u0026#34;(b)(1)\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;displayName\u0026#34;\u0026gt; \u0026lt;map\u0026gt; \u0026lt;entry key\u0026#34;fr\u0026#34; value\u0026#34;Informations classées pour protéger la sécurité nationale.\u0026#34; \/\u0026gt; \u0026lt;entry key\u0026#34;en\u0026#34; value\u0026#34;Information that is classified to protect national security.\u0026#34; \/\u0026gt; \u0026lt;\/map\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/list\u0026gt; \u0026lt;\/constructor-arg\u0026gt; \u0026lt;\/bean\u0026gt; Default value You can add one or more default reasons with the following property. The default reason value (here \u0026lsquo;(b)(1)\u0027) corresponds to the value in the “symbolicName” property (see the above example).\nIf there are several default reasons, it should be comma-separated values (ex:(b)(1),(b)(2)).\nWEB-INF\/classes\/arender-server.properties arender.server.annotations.default.redact.reason(b)(1) If this property has no value, by default the redact will have no reason.\nWarning Your default value must be added to your customization file (in arender-custom-integration. xml). Otherwise, this value will not be taken into account. /p>p>tutorial/p>p>reasons/p>p>redact/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/redact-reasons\/ }, { value: Redaction, path: https:\/\/docs.arender.io\/v4\/feature\/redaction\/, label: p>Default behavior ARender offers the possibility to hide content from any document thanks to the redaction feature.\nTo show the redaction buttons, add the below properties:\nWEB-INF\/classes\/arender.properties topPanel.obfuscatetrue topPanel.obfuscateZonetrue Warning By default, only admin user can add Redaction on the document.\nTo test you need to:\n Connect as admin: Either empty ARender cookie, Or open a browser in private navigation. Open the following link: LIVE EXAMPLE True redaction In the previous example, the text below the Redactions is fetched and can be copied by any user./p>p>Default behavior ARender offers the possibility to hide content from any document thanks to the redaction feature.\nTo show the redaction buttons, add the below properties:\nWEB-INF\/classes\/arender.properties topPanel.obfuscatetrue topPanel.obfuscateZonetrue Warning By default, only admin user can add Redaction on the document.\nTo test you need to:\n Connect as admin: Either empty ARender cookie, Or open a browser in private navigation. Open the following link: LIVE EXAMPLE True redaction In the previous example, the text below the Redactions is fetched and can be copied by any user.\nIf you need to use true redact, i.e. only fetch the text for authorized users, you need to:\n Activate the fetch of Redaction annotation before the image generation: WEB-INF\/classes\/arender-server.properties arender.server.process.annotations.renditiontrue Implement the AuthenticationServiceProvider interface. Example available on GitHub /p>, url: https:\/\/docs.arender.io\/v4\/feature\/redaction\/ }, { value: Remove document tree, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/flat-document\/, label: p>A new servlet is deployed to remove the document tree. A Json file is returned and lists each page of child documents without ranking them.\nExample :\n \u0026#34;b64_bG9jYWxlPWZyJnJhbmRvbVVVSUQ9MTFjYmE0YzQtMzUzNy00OWI4LTg2MGEtZjdiNjU4NzU3MjJj\/1\/1\/1\/1|0|612.0\u0026#34;, \u0026#34;b64_bG9jYWxlPWZyJnJhbmRvbVVVSUQ9MTFjYmE0YzQtMzUzNy00OWI4LTg2MGEtZjdiNjU4NzU3MjJj\/1\/1\/1\/2|0|612.0\u0026#34;, \u0026#34;b64_bG9jYWxlPWZyJnJhbmRvbVVVSUQ9MTFjYmE0YzQtMzUzNy00OWI4LTg2MGEtZjdiNjU4NzU3MjJj\/1\/2|0|612.0\u0026#34;, \u0026#34;b64_bG9jYWxlPWZyJnJhbmRvbVVVSUQ9MTFjYmE0YzQtMzUzNy00OWI4LTg2MGEtZjdiNjU4NzU3MjJj\/1\/3|0|841.0\u0026#34;, \u0026#34;b64_bG9jYWxlPWZyJnJhbmRvbVVVSUQ9MTFjYmE0YzQtMzUzNy00OWI4LTg2MGEtZjdiNjU4NzU3MjJj\/1\/3|1|595.0\u0026#34; Request This functionality is accessible via the servlet: flatDocumentLayout\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/flatDocumentLayout?uuiddocuuid\u0026#39; Servlet Response A Json file is returned with the child documents of the initial document without their tree structure./p>p>A new servlet is deployed to remove the document tree. A Json file is returned and lists each page of child documents without ranking them.\nExample :\n \u0026#34;b64_bG9jYWxlPWZyJnJhbmRvbVVVSUQ9MTFjYmE0YzQtMzUzNy00OWI4LTg2MGEtZjdiNjU4NzU3MjJj\/1\/1\/1\/1|0|612.0\u0026#34;, \u0026#34;b64_bG9jYWxlPWZyJnJhbmRvbVVVSUQ9MTFjYmE0YzQtMzUzNy00OWI4LTg2MGEtZjdiNjU4NzU3MjJj\/1\/1\/1\/2|0|612.0\u0026#34;, \u0026#34;b64_bG9jYWxlPWZyJnJhbmRvbVVVSUQ9MTFjYmE0YzQtMzUzNy00OWI4LTg2MGEtZjdiNjU4NzU3MjJj\/1\/2|0|612.0\u0026#34;, \u0026#34;b64_bG9jYWxlPWZyJnJhbmRvbVVVSUQ9MTFjYmE0YzQtMzUzNy00OWI4LTg2MGEtZjdiNjU4NzU3MjJj\/1\/3|0|841.0\u0026#34;, \u0026#34;b64_bG9jYWxlPWZyJnJhbmRvbVVVSUQ9MTFjYmE0YzQtMzUzNy00OWI4LTg2MGEtZjdiNjU4NzU3MjJj\/1\/3|1|595.0\u0026#34; Request This functionality is accessible via the servlet: flatDocumentLayout\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/flatDocumentLayout?uuiddocuuid\u0026#39; Servlet Response A Json file is returned with the child documents of the initial document without their tree structure.\n/p>p>tutorial/p>p>tree/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/flat-document\/ }, { value: Rendition, path: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/v4\/install\/standalone\/rendition\/ }, { value: Rendition REST client, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/server\/rest-client\/, label: p>Configurations Since version 2023.12.0, it is possible to configure the rendition REST client of the HMI in the configurations\/arender-custom-client.properties file.\n Description Parameter Key Default value Type Configure a limit on the number of bytes that can be buffered (in bytes) arender.server.rendition.rest.max.in.memory.size 8000000 Integer The maximum number of connections before starting pending acquisition on existing ones arender.server.rendition.rest.max.connections 200 Integer The maximum time after which a pending acquire must complete (in milliseconds) arender./p>p>Configurations Since version 2023.12.0, it is possible to configure the rendition REST client of the HMI in the configurations\/arender-custom-client.properties file.\n Description Parameter Key Default value Type Configure a limit on the number of bytes that can be buffered (in bytes) arender.server.rendition.rest.max.in.memory.size 8000000 Integer The maximum number of connections before starting pending acquisition on existing ones arender.server.rendition.rest.max.connections 200 Integer The maximum time after which a pending acquire must complete (in milliseconds) arender.server.rendition.rest.pending.acquire.timeout 120000 Integer The maximum number of registered requests for acquire to keep in a pending queue. Set the value \u0026ldquo;-1\u0026rdquo; for no limit. arender.server.rendition.rest.pending.acquire.max.count -1 Integer The Duration after which the channel will be closed when idle (in milliseconds). Set the value \u0026ldquo;-1\u0026rdquo; for no limit. arender.server.rendition.rest.max.idle.time -1 Integer The Duration after which the channel will be closed (in milliseconds). Set the value \u0026ldquo;-1\u0026rdquo; for no limit. arender.server.rendition.rest.max.life.time -1 Integer The maximum time to read a response through the network (in milliseconds) arender.server.rendition.rest.read.timeout 120000 Integer The maximum time to write a request through the network (in milliseconds) arender.server.rendition.rest.write.timeout 120000 Integer /p>p>configuration/p>p>rendition/p>p>rest/p>p>client/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/server\/rest-client\/ }, { value: Resolve mail conversion issue, path: https:\/\/docs.arender.io\/learn\/how-to\/mail-factory\/, label: p>You probably have a configuration problem related to wkhtmltopdf.\nAdvanced configuration If on Windows, the unit conversion does not work, look at the Windows error message if you have one, this may indicate a potential lack of framework. (.NET, Visual Studio Redistributable, etc..)\nIf on Linux, the conversion does not happen with an error indicating an X server problem, you need to install the xvfb package and make the following commands in your linux (adapting them to your wkhtmltopdf installation)/p>p>You probably have a configuration problem related to wkhtmltopdf.\nAdvanced configuration If on Windows, the unit conversion does not work, look at the Windows error message if you have one, this may indicate a potential lack of framework. (.NET, Visual Studio Redistributable, etc..)\nIf on Linux, the conversion does not happen with an error indicating an X server problem, you need to install the xvfb package and make the following commands in your linux (adapting them to your wkhtmltopdf installation)\nmv \/usr\/bin\/wkhtmltopdf \/usr\/bin\/wkhtmltopdf_nohead cp wkhtmltopdf_xvfb \/usr\/bin\/wkhtmltopdf chmod a\u002bx \/usr\/bin\/wkhtmltopdf The contents of the wkhtmltopdf_xvfb file are as follows:\n#!\/bin\/bash xvfb-run -a -s \u0026#34;-screen 0 640x480x16\u0026#34; \/usr\/bin\/wkhtmltopdf_nohead \u0026#34;$@\u0026#34; If the error is related to a network problem when retrieving the images from the mail, it is then up to you to decide whether you want to allow the rendition server to connect to the net to recover these images or to give wkhtmltopdf in the configuration of the rendition server a proxy that will resolve authorized URLs and block others (a proxy blocking all the images is possible but the rendering will be degraded).\n/p>p>tutorial/p>p>mail/p>p>conversion/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/mail-factory\/ }, { value: Resolve mail conversion issue, path: https:\/\/docs.arender.io\/v4\/cookbook\/mail-factory\/, label: p>You probably have a configuration problem related to wkhtmltopdf.\nAdvanced configuration If on Windows, the unit conversion does not work, look at the Windows error message if you have one, this may indicate a potential lack of framework. (.NET, Visual Studio Redistributable, etc..)\nIf on Linux, the conversion does not happen with an error indicating an X server problem, you need to install the xvfb package and make the following commands in your linux (adapting them to your wkhtmltopdf installation)/p>p>You probably have a configuration problem related to wkhtmltopdf.\nAdvanced configuration If on Windows, the unit conversion does not work, look at the Windows error message if you have one, this may indicate a potential lack of framework. (.NET, Visual Studio Redistributable, etc..)\nIf on Linux, the conversion does not happen with an error indicating an X server problem, you need to install the xvfb package and make the following commands in your linux (adapting them to your wkhtmltopdf installation)\nmv \/usr\/bin\/wkhtmltopdf \/usr\/bin\/wkhtmltopdf_nohead cp wkhtmltopdf_xvfb \/usr\/bin\/wkhtmltopdf chmod a\u002bx \/usr\/bin\/wkhtmltopdf The contents of the wkhtmltopdf_xvfb file are as follows:\n#!\/bin\/bash xvfb-run -a -s \u0026#34;-screen 0 640x480x16\u0026#34; \/usr\/bin\/wkhtmltopdf_nohead \u0026#34;$@\u0026#34; If the error is related to a network problem when retrieving the images from the mail, it is then up to you to decide whether you want to allow the rendition server to connect to the net to recover these images or to give wkhtmltopdf in the configuration of the rendition server a proxy that will resolve authorized URLs and block others (a proxy blocking all the images is possible but the rendering will be degraded).\n/p>p>tutorial/p>p>mail/p>p>conversion/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/mail-factory\/ }, { value: Rotate, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/rotate-js-api\/, label: p>Rotate pages Object: getARenderJS().getRotateJSAPI()\n Function Description askRotateCurrentPageLeft() Rotate current page left (counter-clockwise) askRotateCurrentPageRight() Rotate current page right (clockwise) askRotateAllPageLeft() Rotate all pages of the current document left askRotateAllPageRight() Rotate all pages of the current document right askRotatePage(int pageNumber, String documentId, int rotation, boolean clockwise) Rotate a page of a document pageNumber : : The page number of the document to rotate documentId : The id of the document rotation : The rotation to apply (ex : 90, 180 or 270) clockwise : If true page rotate to the right, if false page rotate to the left scripts\/exemple./p>p>Rotate pages Object: getARenderJS().getRotateJSAPI()\n Function Description askRotateCurrentPageLeft() Rotate current page left (counter-clockwise) askRotateCurrentPageRight() Rotate current page right (clockwise) askRotateAllPageLeft() Rotate all pages of the current document left askRotateAllPageRight() Rotate all pages of the current document right askRotatePage(int pageNumber, String documentId, int rotation, boolean clockwise) Rotate a page of a document pageNumber : : The page number of the document to rotate documentId : The id of the document rotation : The rotation to apply (ex : 90, 180 or 270) clockwise : If true page rotate to the right, if false page rotate to the left scripts\/exemple.js \/\/ Rotate page 3 of the document with id \u0026#34;test\u0026#34; by 90° to the right getARenderJS().getRotateJSAPI().askRotatePage(2, \u0026#34;test\u0026#34;, 90, true); \/\/ Rotate page 3 of the document with id \u0026#34;test\u0026#34; by 270° to the left getARenderJS().getRotateJSAPI().askRotatePage(2, \u0026#34;test\u0026#34;, 270, false); /p>p>configuration/p>p>js/p>p>javascript/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/rotate-js-api\/ }, { value: Rotate, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/rotate-js-api\/, label: p>Rotate pages Object: getARenderJS().getRotateJSAPI() Function Description askRotateCurrentPageLeft() Rotate current page left (counter-clockwise) askRotateCurrentPageRight() Rotate current page right (clockwise) askRotateAllPageLeft() Rotate all pages of the current document left askRotateAllPageRight() Rotate all pages of the current document right /p>p>Rotate pages Object: getARenderJS().getRotateJSAPI() Function Description askRotateCurrentPageLeft() Rotate current page left (counter-clockwise) askRotateCurrentPageRight() Rotate current page right (clockwise) askRotateAllPageLeft() Rotate all pages of the current document left askRotateAllPageRight() Rotate all pages of the current document right /p>p>configuration/p>p>js/p>p>javascript/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/rotate-js-api\/ }, { value: Save recomposed document, path: https:\/\/docs.arender.io\/learn\/how-to\/documentbuildersaveddocumentbehavior\/, label: p>Prerequisite Below you will find a configuration with properties modification.\nBe sure to read before the chapter : Web-UI configuration guide.\nMoreover, in order to save new document with ARender you need to activate the documentBuilder functionality as below:\ndocumentbuilder.enabledtrue Tutorial for ARender versions strictly lower than 3.1.4 It is possible to define different behaviors at the save of a built document.\nBelow, the properties to modify:\ndocumentbuilder.save.behaviorUPDATE_NO_DOCUMENT Role: behavior to adopt at the save./p>p>Prerequisite Below you will find a configuration with properties modification.\nBe sure to read before the chapter : Web-UI configuration guide.\nMoreover, in order to save new document with ARender you need to activate the documentBuilder functionality as below:\ndocumentbuilder.enabledtrue Tutorial for ARender versions strictly lower than 3.1.4 It is possible to define different behaviors at the save of a built document.\nBelow, the properties to modify:\ndocumentbuilder.save.behaviorUPDATE_NO_DOCUMENT Role: behavior to adopt at the save.\nPossible values:\nCREATE_NEW_FIRST_DOCUMENT: a new document is created in the CSP.\nUPDATE_FIRST_DOCUMENT: a new version of the document is created in the CSP.\nUPDATE_NO_DOCUMENT: no action on the CSP side.\ndocumentbuilder.save.downloadtrue Role: Activate\/deactivate document download on client side.\nPossible values: true\/false.\nTutorial for ARender versions 3.1.4 and higher It is possible to show different buttons having specific behavior at document save.\nBelow, the properties to modify:\ndocumentbuilder.button.legacySave.enabledtrue Role: get back to the legacy behavior of pre 3.1.4 ARender versions (see Tutorial for ARender versions strictly lower than 3.1.4).\nPossible values: true\/false.\ndocumentbuilder.button.download.enabledtrue Role: Activate\/deactivate the download button of a built document on the client side.\nPossible values: true\/false.\ndocumentbuilder.button.createFirst.enabledtrue Role: Activate\/deactivate the button that create a new document in the CSP corresponding to the built document.\nPossible values: true\/false.\ndocumentbuilder.button.updateFirst.enabledtrue Role: Activate\/deactivate the button that create a new version of the document in the CSP corresponding to the built document.\nPossible values: true\/false.\n/p>p>tutorial/p>p>document builder/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/documentbuildersaveddocumentbehavior\/ }, { value: Save recomposed document, path: https:\/\/docs.arender.io\/v4\/cookbook\/documentbuildersaveddocumentbehavior\/, label: p>Prerequisite Below you will find a configuration with properties modification.\nBe sure to read the chapter Web-UI configuration guide before.\nMoreover, in order to save new document with ARender you need to activate the documentBuilder functionality as below:\ndocumentbuilder.enabledtrue Tutorial for ARender versions strictly lower than 3.1.4 It is possible to define different behaviors at the save of a built document.\nBelow, the properties to modify:\ndocumentbuilder.save.behaviorUPDATE_NO_DOCUMENT Role: behavior to adopt at the save./p>p>Prerequisite Below you will find a configuration with properties modification.\nBe sure to read the chapter Web-UI configuration guide before.\nMoreover, in order to save new document with ARender you need to activate the documentBuilder functionality as below:\ndocumentbuilder.enabledtrue Tutorial for ARender versions strictly lower than 3.1.4 It is possible to define different behaviors at the save of a built document.\nBelow, the properties to modify:\ndocumentbuilder.save.behaviorUPDATE_NO_DOCUMENT Role: behavior to adopt at the save.\nPossible values:\nCREATE_NEW_FIRST_DOCUMENT: a new document is created in the CSP.\nUPDATE_FIRST_DOCUMENT: a new version of the document is created in the CSP.\nUPDATE_NO_DOCUMENT: no action on the CSP side.\ndocumentbuilder.save.downloadtrue Role: Activate\/deactivate document download on client side.\nPossible values: true\/false.\nTutorial for ARender versions 3.1.4 and higher It is possible to show different buttons having specific behavior at document save.\nBelow, the properties to modify:\ndocumentbuilder.button.legacySave.enabledtrue Role: get back to the legacy behavior of pre 3.1.4 ARender versions (see Tutorial for ARender versions strictly lower than 3.1.4).\nPossible values: true\/false.\ndocumentbuilder.button.download.enabledtrue Role: Activate\/deactivate the download button of a built document on the client side.\nPossible values: true\/false.\ndocumentbuilder.button.createFirst.enabledtrue Role: Activate\/deactivate the button that create a new document in the CSP corresponding to the built document.\nPossible values: true\/false.\ndocumentbuilder.button.updateFirst.enabledtrue Role: Activate\/deactivate the button that create a new version of the document in the CSP corresponding to the built document.\nPossible values: true\/false.\n/p>p>tutorial/p>p>document builder/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/documentbuildersaveddocumentbehavior\/ }, { value: Screen split, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/screen-split-js-api\/, label: p>Screen split Objet : getARenderJS().getScreenSplitJSAPI() Function Description askOpenAsNewDocument(String documentId) Method to open the provided document id as new document. The document will be opened in multiple views. scripts\/example.js \/* * @param {string} documentId - document ID *\/ getARenderJS().getScreenSplitJSAPI().askOpenAsNewDocument(\u0026#34;documentId\u0026#34;); /p>p>Screen split Objet : getARenderJS().getScreenSplitJSAPI() Function Description askOpenAsNewDocument(String documentId) Method to open the provided document id as new document. The document will be opened in multiple views. scripts\/example.js \/* * @param {string} documentId - document ID *\/ getARenderJS().getScreenSplitJSAPI().askOpenAsNewDocument(\u0026#34;documentId\u0026#34;); /p>p>configuration/p>p>js/p>p>javascript/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/screen-split-js-api\/ }, { value: Search, path: https:\/\/docs.arender.io\/features\/search\/, label: p>Search text Click on the \u0026ldquo;Search text\u0026rdquo; area and enter the text you need to search.\nFor example, enter \u0026ldquo;Solution\u0026rdquo; as word and click on \u0026ldquo;Enter\u0026rdquo; key:\nAdvanced search General Advanced search is accessible from the search explorer. By default, it is enabled. The width of the explorer is configurable.\n Property Description Default value advanced.searchexplorer.enabled Activate search explorer true documentnavigator.search.width Change the width of the explorer 400 configurations\/arender-custom-client./p>p>Search text Click on the \u0026ldquo;Search text\u0026rdquo; area and enter the text you need to search.\nFor example, enter \u0026ldquo;Solution\u0026rdquo; as word and click on \u0026ldquo;Enter\u0026rdquo; key:\nAdvanced search General Advanced search is accessible from the search explorer. By default, it is enabled. The width of the explorer is configurable.\n Property Description Default value advanced.searchexplorer.enabled Activate search explorer true documentnavigator.search.width Change the width of the explorer 400 configurations\/arender-custom-client.properties advanced.searchexplorer.enabledtrue Use Click on the search box and enter the term(s) you are looking for.\nSearch Options Several search options are available.\nTo the right of the search area there are:\n Case-sensitive button: upper and lower case texts can be treated as separate (case-sensitive) or equivalent (case-insensitive). The accents sensitive button: the sensitivity of the accent is linked to the consideration of accents. Regular expressions button: Regular expressions (“regex”) are templates used to match character combinations in strings. If you click on the button to the left of the search box, two drop-down lists will appear.\nThe drop-down list on the left allows you to choose the scope of the search:\n The whole document Current page All documents The drop-down list on the right allows you to choose the target content of the search:\n With annotations Without annotations Only annotations Launch the search ARender offers several types of search:\n The classic search The search that highlights the text corresponding to the search on the document The search that redact the text corresponding to the search on the document If you have enabled the redact property and you have the rights to it, the search and delete button will appear.\nThe search button that highlights the results is enabled by default.\n Property Description Default value advanced.searchexplorer.search.highlight.enabled Activate the search and highlight button true configurations\/arender-custom-client.properties advanced.searchexplorer.search.highlight.enabledtrue The results will appear in the search explorer and the text corresponding to the search will be highlighted on the document.\nManagement of research results With the header buttons you can refresh the search results (1), reset the search (2) and reduce\/expand (3) the display of the results.\n/p>, url: https:\/\/docs.arender.io\/features\/search\/ }, { value: Search text, path: https:\/\/docs.arender.io\/v4\/feature\/search\/, label: p>Click on the \u0026ldquo;Search text\u0026rdquo; area and enter the text you need to search.\nFor example, enter \u0026ldquo;Solution\u0026rdquo; as word and click on \u0026ldquo;Enter\u0026rdquo; key:/p>p>Click on the \u0026ldquo;Search text\u0026rdquo; area and enter the text you need to search.\nFor example, enter \u0026ldquo;Solution\u0026rdquo; as word and click on \u0026ldquo;Enter\u0026rdquo; key:\n/p>, url: https:\/\/docs.arender.io\/v4\/feature\/search\/ }, { value: Server performance \/ Set server, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/weather\/, label: p>Server performance A servlet is deployed to display the performance of each server. These performances will be sent as a file, if the format parameter is empty, not given in the URL, or equal to HTML, the file will be an HTML file. Otherwise the file will be a JSON file.\nRequest This functionality is accessible via the servlet: weatherServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/weather?formattype\u0026#39; format: the format of the returned file (optional) Servlet Response Performance of each server will be displayed in a file./p>p>Server performance A servlet is deployed to display the performance of each server. These performances will be sent as a file, if the format parameter is empty, not given in the URL, or equal to HTML, the file will be an HTML file. Otherwise the file will be a JSON file.\nRequest This functionality is accessible via the servlet: weatherServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/weather?formattype\u0026#39; format: the format of the returned file (optional) Servlet Response Performance of each server will be displayed in a file. If the format parameter is empty, not given in the URL or equals to HTML the file will be an HTML file. Otherwise the file will be a JSON file.\nSet server A servlet is deployed to add a server thanks to its address.\nRequest This functionality is accessible via the servlet: weatherServlet\nUsable in POST\nRequest example curl -X POST -d \u0026#34;\u0026lt;arender_rendition_host\u0026gt;\u0026#34; \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/weatherServlet\u0026#39; arender_rendition_host : new server address to add. Servlet Response To make sure the server is added, it is possible to use the GET query which will give you the performance of each of your servers.\n/p>p>tutorial/p>p>performance/p>p>server/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/weather\/ }, { value: Signatures, path: https:\/\/docs.arender.io\/features\/signatures\/, label: p>Signatures tab To enable the Signatures tab, the following property must be enabled :\nBefore 4.6.0, the configuration is done in the document-service-broker (RenditionEngine)\napplication-security.yaml services-broker: signaturePDF: true Since 4.6.0, the configuration is done in the document-text-handler service (PDFBoxEngine)\napplication.properties pdf.signatures.enabletrue After opening a document, a new tab dedicated to signature appears. At the header of the latter two icons may appear:/p>p>Signatures tab To enable the Signatures tab, the following property must be enabled :\nBefore 4.6.0, the configuration is done in the document-service-broker (RenditionEngine)\napplication-security.yaml services-broker: signaturePDF: true Since 4.6.0, the configuration is done in the document-text-handler service (PDFBoxEngine)\napplication.properties pdf.signatures.enabletrue After opening a document, a new tab dedicated to signature appears. At the header of the latter two icons may appear:\nValid signature : Invalid signature : Nominal case : a valid signature The signature is designated as valid as long as the header of the tab in question contains the icon of the valid signature.\nA click on it opens the tab like below : On this tab, we can see the following signature information :\n The signer, The PDF integrity, whether or not it\u0026rsquo;s preserved, The validation of the certificate chain, The signature date, The signature reason The signature location. Error cases It is possible that the PDF has been modified after affixing the signature, that the signature contained in the PDF or that its certificates are not valid. Thus, the integrity is not preserved or the identity of the signatory cannot be verified.\nAt the interface level, the alert is given by the invalid signature icon.\nDifferent types of errors are reported to the signature panel :\n Wrong integrity : Whether the document has been modified or damaged.\n Invalid signature : If the signature of the document is invalid.\n Unknown certificate: It is possible to configure a list of valid certificates. To do this, place the desired certificates in a folder defined by the PUBLIC_CERT property for the document-text-handler service, whose default value is ..\/defaultPathPublicCert:\n application.properties PUBLIC_CERT..\/defaultPathPublicCert If the signature does not use one of the certificates placed in this folder, then the unknown certificate error will be reported. To not check the certificates, leave the folder empty.\n /p>p>feature/p>p>signatures/p>, url: https:\/\/docs.arender.io\/features\/signatures\/ }, { value: Signatures, path: https:\/\/docs.arender.io\/v4\/feature\/signatures\/, label: p>Signatures tab To enable the Signatures tab, the following property must be enabled :\nBefore 4.6.0, the configuration is done in the document-service-broker (RenditionEngine)\napplication-security.yaml services-broker: signaturePDF: true Since 4.6.0, the configuration is done in the document-text-handler service (PDFBoxEngine)\napplication.properties pdf.signatures.enabletrue After opening a document, a new tab dedicated to signature appears. At the header of the latter two icons may appear:/p>p>Signatures tab To enable the Signatures tab, the following property must be enabled :\nBefore 4.6.0, the configuration is done in the document-service-broker (RenditionEngine)\napplication-security.yaml services-broker: signaturePDF: true Since 4.6.0, the configuration is done in the document-text-handler service (PDFBoxEngine)\napplication.properties pdf.signatures.enabletrue After opening a document, a new tab dedicated to signature appears. At the header of the latter two icons may appear:\nValid signature : Invalid signature : Nominal case : a valid signature The signature is designated as valid as long as the header of the tab in question contains the icon of the valid signature.\nA click on it opens the tab like below : On this tab, we can see the following signature information :\n The signer, The PDF integrity, whether or not it\u0026rsquo;s preserved, The validation of the certificate chain, The signature date, The signature reason The signature location. Error cases It is possible that the PDF has been modified after affixing the signature, that the signature contained in the PDF or that its certificates are not valid. Thus, the integrity is not preserved or the identity of the signatory cannot be verified.\nAt the interface level, the alert is given by the invalid signature icon.\nDifferent types of errors are reported to the signature panel :\n Wrong integrity : Whether the document has been modified or damaged.\n Invalid signature : If the signature of the document is invalid.\n Unknown certificate: It is possible to configure a list of valid certificates. To do this, place the desired certificates in a folder defined by the PUBLIC_CERT property for the document-text-handler service, whose default value is ..\/defaultPathPublicCert:\n application.properties PUBLIC_CERT..\/defaultPathPublicCert If the signature does not use one of the certificates placed in this folder, then the unknown certificate error will be reported. To not check the certificates, leave the folder empty.\n /p>p>feature/p>p>signatures/p>, url: https:\/\/docs.arender.io\/v4\/feature\/signatures\/ }, { value: Sliders, path: https:\/\/docs.arender.io\/features\/sliders\/, label: p>Description Sliders are used by users to modify the opacity, contrast and brightness values. They are composed of a cursor, a progress bar and a textbox. They have minimum, maximum and default value.\nUse The user can modify the slider value by sliding the cursor, clicking on the progress bar, using the up and down keyboard arrows to increase or to decrease the value and entering his value in the textbox./p>p>Description Sliders are used by users to modify the opacity, contrast and brightness values. They are composed of a cursor, a progress bar and a textbox. They have minimum, maximum and default value.\nUse The user can modify the slider value by sliding the cursor, clicking on the progress bar, using the up and down keyboard arrows to increase or to decrease the value and entering his value in the textbox.\n/p>, url: https:\/\/docs.arender.io\/features\/sliders\/ }, { value: Sliders, path: https:\/\/docs.arender.io\/v4\/feature\/sliders\/, label: p>Description Sliders are used by users to modify the opacity, constrast and brightness values. They are composed of a cursor, a progress bar and a textbox. They have minimum, maximum and default value.\nUse The user can modify the slider value by sliding the cursor, clicking on the progress bar, using the up and down keyboard arrows to increase or to decrease the value and entering his value in the textbox./p>p>Description Sliders are used by users to modify the opacity, constrast and brightness values. They are composed of a cursor, a progress bar and a textbox. They have minimum, maximum and default value.\nUse The user can modify the slider value by sliding the cursor, clicking on the progress bar, using the up and down keyboard arrows to increase or to decrease the value and entering his value in the textbox.\n/p>, url: https:\/\/docs.arender.io\/v4\/feature\/sliders\/ }, { value: Supported MIME types, path: https:\/\/docs.arender.io\/v4\/cookbook\/mimetypes-list\/, label: p>PDF application\/pdf\nImage image\/webp\nimage\/tiff\nimage\/png\nimage\/jpeg\nimage\/gif\nimage\/x-ms-bmp\nimage\/x-bmp\nimage\/x-portable-bitmap\nimage\/vnd.adobe.photoshop\nimage\/x-eps\napplication\/postscript\napplication\/dicom\napplication\/pcx\napplication\/x-pcx\nimage\/pcx\nimage\/x-pc-paintbrush\nimage\/x-pcx\nzz-application\/zz-winassoc-pcx\nimage\/jp2\nimage\/heif\nEmail application\/mbox\nmessage\/rfc822\napplication\/vnd.ms-outlook\nHTML text\/html\nArchive application\/zip\napplication\/x-zip\napplication\/x-zip-compressed\napplication\/x-rar-compressed\napplication\/x-rar\napplication\/java-archive\nMicrosoft Office Word :\ntext\/rtf\napplication\/msword\napplication\/vnd.openxmlformats-officedocument.wordprocessingml.document\napplication\/vnd.ms-word.document.macroEnabled.12\napplication\/vnd.openxmlformats-officedocument.wordprocessingml.template\napplication\/vnd.ms-word.template.macroEnabled.12\n Excel :\napplication\/vnd.ms-excel\napplication\/x-ms-excel\napplication\/vnd.openxmlformats-officedocument.spreadsheetml.sheet\napplication\/vnd.ms-excel.sheet.macroEnabled.12\napplication\/vnd.openxmlformats-officedocument.spreadsheetml.template\napplication\/vnd.ms-excel.template.macroEnabled.12\\\n Powerpoint :\napplication\/vnd.ms-powerpoint\napplication\/vnd.openxmlformats-officedocument.presentationml.presentation\napplication\/vnd.ms-powerpoint.presentation.macroEnabled.12\napplication\/vnd.openxmlformats-officedocument.presentationml.template\napplication\/vnd.ms-powerpoint.template.macroEnabled.12\n Project :/p>p>PDF application\/pdf\nImage image\/webp\nimage\/tiff\nimage\/png\nimage\/jpeg\nimage\/gif\nimage\/x-ms-bmp\nimage\/x-bmp\nimage\/x-portable-bitmap\nimage\/vnd.adobe.photoshop\nimage\/x-eps\napplication\/postscript\napplication\/dicom\napplication\/pcx\napplication\/x-pcx\nimage\/pcx\nimage\/x-pc-paintbrush\nimage\/x-pcx\nzz-application\/zz-winassoc-pcx\nimage\/jp2\nimage\/heif\nEmail application\/mbox\nmessage\/rfc822\napplication\/vnd.ms-outlook\nHTML text\/html\nArchive application\/zip\napplication\/x-zip\napplication\/x-zip-compressed\napplication\/x-rar-compressed\napplication\/x-rar\napplication\/java-archive\nMicrosoft Office Word :\ntext\/rtf\napplication\/msword\napplication\/vnd.openxmlformats-officedocument.wordprocessingml.document\napplication\/vnd.ms-word.document.macroEnabled.12\napplication\/vnd.openxmlformats-officedocument.wordprocessingml.template\napplication\/vnd.ms-word.template.macroEnabled.12\n Excel :\napplication\/vnd.ms-excel\napplication\/x-ms-excel\napplication\/vnd.openxmlformats-officedocument.spreadsheetml.sheet\napplication\/vnd.ms-excel.sheet.macroEnabled.12\napplication\/vnd.openxmlformats-officedocument.spreadsheetml.template\napplication\/vnd.ms-excel.template.macroEnabled.12\\\n Powerpoint :\napplication\/vnd.ms-powerpoint\napplication\/vnd.openxmlformats-officedocument.presentationml.presentation\napplication\/vnd.ms-powerpoint.presentation.macroEnabled.12\napplication\/vnd.openxmlformats-officedocument.presentationml.template\napplication\/vnd.ms-powerpoint.template.macroEnabled.12\n Project :\napplication\/vnd.ms-project\n Visio :\napplication\/visio\napplication\/x-visio\napplication\/vnd.visio\napplication\/vnd.ms-visio\napplication\/visio.drawing\napplication\/vsd\napplication\/x-vsd\nimage\/x-vsd\nzz-application\/zz-winassoc-vsd\n Publisher :\napplication\/x-mspublisher\napplication\/vnd.ms-publisher\n Libreoffice Text :\napplication\/vnd.oasis.opendocument.text\n Sheet :\napplication\/vnd.oasis.opendocument.spreadsheet\n Presentation :\napplication\/vnd.oasis.opendocument.presentation\n Graphics :\napplication\/vnd.oasis.opendocument.graphics\n Text text\/plain\nVideo video\/mp4\naudio\/x-wav\naudio\/mp3\naudio\/mpeg\naudio\/x-mpeg\nvideo\/quicktime\nvideo\/3gpp\nvideo\/x-flv\nvideo\/mpeg\nvideo\/x-msvideo\nvideo\/x-matroska\nvideo\/x-ms-asf\naudio\/x-aiff\naudio\/mp4\nvideo\/gif\nvideo\/mp2p\nTypes requiring an external plugin AutoCAD files : drawing\/dwg drawing\/x-dwf application\/acad image\/vnd.dgn image\/vnddwg image\/x-dwg model\/vnddwf\n AFP files : application\/x-afp\n/p>p>mime/p>p>mimetype/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/mimetypes-list\/ }, { value: Tags, path: https:\/\/docs.arender.io\/tags\/, label: p>/p>p>/p>, url: https:\/\/docs.arender.io\/tags\/ }, { value: Text Selection, path: https:\/\/docs.arender.io\/features\/textselection\/, label: p>Document Text Selection ARender is composed of different layers, which are :\n Content Layer (Lower layer) : Each pages are shown as images Text Layer (Middle layer) : User can select, copy, search or annotate text through document text Annotation Layer (Upper layer) : The user can view, create, modify annotations as separate objects How to select text When the user hovers the mouse over the text, the cursor becomes an I-beam pointer./p>p>Document Text Selection ARender is composed of different layers, which are :\n Content Layer (Lower layer) : Each pages are shown as images Text Layer (Middle layer) : User can select, copy, search or annotate text through document text Annotation Layer (Upper layer) : The user can view, create, modify annotations as separate objects How to select text When the user hovers the mouse over the text, the cursor becomes an I-beam pointer. The user can click and drag the mouse over part or the whole word to select and copy or annotate the text. The selected text is then highlighted. To copy the selected text, the user can press and hold the CTRL button then press the key C (CTRL\u002bC). Once copied, he can paste the text into another software application. The user can, as well, double click on a word to select it.\nWhen the text selection is finished, the quick menu is displayed below the text to allow various actions regarding the selected text.\nText Selection - Character by Character By default, text selection highlights character by character :\nText Selection - Word by Word ARender version 4.1.x introduces a new text selection feature that improves word processing.\nEvery time a word (or a part of it) is selected, the selection is automatically expanded to include the entire word.\nThe user has the option to override this behavior by changing the direction in which the mouse pointer is being dragged as the selection is made. This action undoes the automatic selection of the entire word, and allows the user to precisely select part or the entire word.\nTo enable the new feature, please refer to the dedicated configuration here\nText Selection - Line Since ARender version 4.7.3, you have the possibility to select an entire line with three clicks.\nText Selection - Page Since ARender version 4.7.3, you have the possibility to select an entire page with four clicks.\nText Selection - Entire document ARender version 4.8.0 introduces the selection of all the text of the current document. This feature is available through a button in the toppanel which is disabled by default.\nTo activate the button, add the following property to the configurations\/arender-custom-client.properties configuration file :\nconfigurations\/arender-custom-client.properties # Activate the copy all text of the document button topPanel.copy.document.texttrue When clicked, the button will launch the retrieval of the text of each page of the current document. The progress of the copy will be indicated by a notification at the bottom right. Once the copying of the text is finished, a notification will again be visible to inform the user.\nText Selection - By zone Since ARender version 4.5.x, you have the possibility to select text in a zone.\nThe user can do CTRL \u002b left-click or ALT \u002b left-click to start the text selection by zone.\n/p>, url: https:\/\/docs.arender.io\/features\/textselection\/ }, { value: Text Selection, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/textselection\/, label: p>General Description Parameter Key Default value Type Enable\/disable default text selection character by character text.selection.use.legacy true Boolean configurations\/arender-custom-client.properties # Enable the use of the legacy text selection, character by character : # When disabled, the text selection will select word by word when a word is partially or completely selected text.selection.use.legacytrue /p>p>General Description Parameter Key Default value Type Enable\/disable default text selection character by character text.selection.use.legacy true Boolean configurations\/arender-custom-client.properties # Enable the use of the legacy text selection, character by character : # When disabled, the text selection will select word by word when a word is partially or completely selected text.selection.use.legacytrue /p>p>configuration/p>p>text selection/p>p>selection/p>p>text/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/textselection\/ }, { value: Text Selection, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/textselection\/, label: p>General Key: text.selection Description Parameter Key Type Enable\/disable default text selection character by character use.legacy Boolean arender.properties # Enable the use of the legacy text selection, character by character : # When disabled, the text selection will select word by word when a word is partially or completely selected text.selection.use.legacytrue /p>p>General Key: text.selection Description Parameter Key Type Enable\/disable default text selection character by character use.legacy Boolean arender.properties # Enable the use of the legacy text selection, character by character : # When disabled, the text selection will select word by word when a word is partially or completely selected text.selection.use.legacytrue /p>p>configuration/p>p>text selection/p>p>selection/p>p>text/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/textselection\/ }, { value: Text Selection, path: https:\/\/docs.arender.io\/v4\/feature\/textselection\/, label: p>Document Text Selection ARender is composed of different layers, which are :\n Content Layer (Lower layer) : Each pages are shown as images Text Layer (Middle layer) : User can select, copy, search or annotate text through document text Annotation Layer (Upper layer) : The user can view, create, modify annotations as separate objects How to select text When the user hovers the mouse over the text, the cursor becomes an I-beam pointer./p>p>Document Text Selection ARender is composed of different layers, which are :\n Content Layer (Lower layer) : Each pages are shown as images Text Layer (Middle layer) : User can select, copy, search or annotate text through document text Annotation Layer (Upper layer) : The user can view, create, modify annotations as separate objects How to select text When the user hovers the mouse over the text, the cursor becomes an I-beam pointer. The user can click and drag the mouse over part or the whole word to select and copy or annotate the text. The selected text is then highlighted. To copy the selected text, the user can press and hold the CTRL button then press the key C (CTRL\u002bC). Once copied, he can paste the text into another software application. The user can, as well, double click on a word to select it.\nText Selection - Character by Character By default, text selection highlights character by character :\nText Selection - Word by Word ARender version 4.1.x introduces a new text selection feature that improves word processing.\nEvery time a word (or a part of it) is selected, the selection is automatically expanded to include the entire word.\nThe user has the option to override this behavior by changing the direction in which the mouse pointer is being dragged as the selection is made. This action undoes the automatic selection of the entire word, and allows the user to precisely select part or the entire word.\nTo enable the new feature, please refer to the dedicated configuration here\nText Selection - Line Since ARender version 4.7.3, you have the possibility to select an entire line with three clicks.\nText Selection - Page Since ARender version 4.7.3, you have the possibility to select an entire page with four clicks.\nText Selection - Entire document ARender version 4.8.0 introduces the selection of all the text of the current document. This feature is available through a button in the toppanel which is disabled by default.\nTo activate the button, add the following property to the arender.properties configuration file :\narender.properties # Activate the copy all text of the document button topPanel.copy.document.texttrue When clicked, the button will launch the retrieval of the text of each page of the current document. The progress of the copy will be indicated by a notification at the bottom right. Once the copying of the text is finished, a notification will again be visible to inform the user.\nText Selection - By zone Since ARender version 4.5.x, you have the possibility to select text in a zone.\nThe user can do CTRL \u002b left-click or ALT \u002b left-click to start the text selection by zone.\n/p>, url: https:\/\/docs.arender.io\/v4\/feature\/textselection\/ }, { value: Textual search, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/search-js-api\/, label: p>Search features Object: getARenderJS().getSearchJSAPI() Function Description Argument askAdvancedSearchText(searchText,isCaseSensitive,isAccentSensitive,isRegex,SearchAction,searchAnnotation,postSearchAction) Advanced search searchText: (String) the text searched\nisCaseSensitive: (boolean)\nisAccentSensitive: (boolean)\nisRegex: (boolean)\nSearchAction: (String) null, CurrentPage, AllPages, AllDocuments\nsearchAnnotation: (String) WithAnnotations, WithoutAnnotations, OnlyAnnotations\npostSearchAction: (String) null, Redact, Highlight\n askSearchTextNext(searchText) Searching the next term searchText: (String) the text searched askSearchTextPrevious(searchText) Searching the previous term searchText: (String) the text searched clearSearchResults() Clear current search results Simple search The askSearchTextNext function is used to perform a simple search./p>p>Search features Object: getARenderJS().getSearchJSAPI() Function Description Argument askAdvancedSearchText(searchText,isCaseSensitive,isAccentSensitive,isRegex,SearchAction,searchAnnotation,postSearchAction) Advanced search searchText: (String) the text searched\nisCaseSensitive: (boolean)\nisAccentSensitive: (boolean)\nisRegex: (boolean)\nSearchAction: (String) null, CurrentPage, AllPages, AllDocuments\nsearchAnnotation: (String) WithAnnotations, WithoutAnnotations, OnlyAnnotations\npostSearchAction: (String) null, Redact, Highlight\n askSearchTextNext(searchText) Searching the next term searchText: (String) the text searched askSearchTextPrevious(searchText) Searching the previous term searchText: (String) the text searched clearSearchResults() Clear current search results Simple search The askSearchTextNext function is used to perform a simple search. It takes the text to search for as its input parameter:\ngetARenderJS().getSearchJSAPI().askSearchTextNext(\u0026#34;arender\u0026#34;) This search highlights the searched text across all open documents, case-insensitively, and positions the viewer on the first matching element starting from the current page.\nYou can then navigate sequentially by calling the same function again:\ngetARenderJS().getSearchJSAPI().askSearchTextNext(\u0026#34;arender\u0026#34;) Scrolling through the document in ARender between two calls will restart the search from the current page.\nTo navigate to the previous occurrence of the searched text, you can use the askSearchTextPrevious function:\ngetARenderJS().getSearchJSAPI().askSearchTextPrevious(\u0026#34;arender\u0026#34;) Once the search is completed, to remove the highlighting of search results on the document, you can use the clearSearchResults function:\ngetARenderJS().getSearchJSAPI().clearSearchResults() Advanced Search The advanced search panel in ARender allows for more precise text searches. It can be opened directly from the JavaScript API using the askAdvancedSearchText function.\nThis function takes 6 input parameters:\n searchText: The text to search for. isCaseSensitive: Case sensitivity. isAccentSensitive: Accent sensitivity (true or false). isRegex: If isRegex is true, searchText will be interpreted as a regular expression. SearchAction: Specifies the scope of the search and can take the following values: CurrentPage: Search on the current page. AllPages: Search across all pages of the current document. AllDocuments: Search across all documents. searchAnnotation: Specifies whether the search includes annotations: WithAnnotations: Search within the document text and annotations. WithoutAnnotations: Search within the document text only. OnlyAnnotations: Search within annotations only. postSearchAction: Specifies what to do with the found elements: null: No specific action. Redact: The found elements are converted into redaction annotations (text is hidden and only displayed on mouse hover). Highlight: The searched elements are converted into highlight annotations. - Here is a classic example of usage:\ngetARenderJS().getSearchJSAPI().askAdvancedSearchText(\u0026#34;arender\u0026#34;, false, false, false, \u0026#34;AllDocuments\u0026#34;, \u0026#34;WithAnnotations\u0026#34;, null) In this example:\n The search targets the term \u0026ldquo;arender\u0026rdquo;. The search is case-insensitive. The search ignores accents. The search term is not a regex. The search is conducted across all open documents. The search covers the document text as well as annotations added by the user. No specific action is performed on the elements returned by the search. Navigation through results and clearing search results are done in the same way as for a simple search, using the askSearchTextNext, askSearchTextPrevious, and clearSearchResults functions.\n- Example of a regular expression search:\nA regular expression (or regex) is a rule that defines which sequences of characters are highlighted in a search. For example, \\b\\w{16,}\\b will match words containing more than 16 characters.\nTo perform a search with this regex, you would run the search as follows, making sure to specify true for the isRegex parameter:\ngetARenderJS().getSearchJSAPI().askAdvancedSearchText(\u0026#34;\\b\\w{16,}\\b\u0026#34;, false, false, true, \u0026#34;AllDocuments\u0026#34;, \u0026#34;WithAnnotations\u0026#34;, null) /p>p>configuration/p>p>js/p>p>javascript/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/search-js-api\/ }, { value: Textual search, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/search-js-api\/, label: p>Search features Object: getARenderJS().getSearchJSAPI() Function Description Argument askAdvancedSearchText(searchText,isCaseSensitive,isAccentSensitive,isRegex,SearchAction,searchAnnotation,postSearchAction) Advanced search searchText: (String) the text searched\nisCaseSensitive: (boolean)\nisAccentSensitive: (boolean)\nisRegex: (boolean)\nSearchAction: (String) null, CurrentPage, AllPages, AllDocuments\nsearchAnnotation: (String) WithAnnotations, WithoutAnnotations, OnlyAnnotations\npostSearchAction: (String) null, Redact, Highlight\n askSearchTextNext(searchText) Searching the next term searchText: (String) the text searched askSearchTextPrevious(searchText) Searching the previous term searchText: (String) the text searched clearSearchResults() Clear current search results Simple search The askSearchTextNext function is used to perform a simple search./p>p>Search features Object: getARenderJS().getSearchJSAPI() Function Description Argument askAdvancedSearchText(searchText,isCaseSensitive,isAccentSensitive,isRegex,SearchAction,searchAnnotation,postSearchAction) Advanced search searchText: (String) the text searched\nisCaseSensitive: (boolean)\nisAccentSensitive: (boolean)\nisRegex: (boolean)\nSearchAction: (String) null, CurrentPage, AllPages, AllDocuments\nsearchAnnotation: (String) WithAnnotations, WithoutAnnotations, OnlyAnnotations\npostSearchAction: (String) null, Redact, Highlight\n askSearchTextNext(searchText) Searching the next term searchText: (String) the text searched askSearchTextPrevious(searchText) Searching the previous term searchText: (String) the text searched clearSearchResults() Clear current search results Simple search The askSearchTextNext function is used to perform a simple search. It takes the text to search for as its input parameter:\ngetARenderJS().getSearchJSAPI().askSearchTextNext(\u0026#34;arender\u0026#34;) This search highlights the searched text across all open documents, case-insensitively, and positions the viewer on the first matching element starting from the current page.\nYou can then navigate sequentially by calling the same function again:\ngetARenderJS().getSearchJSAPI().askSearchTextNext(\u0026#34;arender\u0026#34;) Scrolling through the document in ARender between two calls will restart the search from the current page.\nTo navigate to the previous occurrence of the searched text, you can use the askSearchTextPrevious function:\ngetARenderJS().getSearchJSAPI().askSearchTextPrevious(\u0026#34;arender\u0026#34;) Once the search is completed, to remove the highlighting of search results on the document, you can use the clearSearchResults function:\ngetARenderJS().getSearchJSAPI().clearSearchResults() Advanced Search The advanced search panel in ARender allows for more precise text searches. It can be opened directly from the JavaScript API using the askAdvancedSearchText function.\nThis function takes 6 input parameters:\n searchText: The text to search for. isCaseSensitive: Case sensitivity (true or false). isAccentSensitive: Accent sensitivity (true or false). isRegex: If isRegex is true, searchText will be interpreted as a regular expression. SearchAction: Specifies the scope of the search and can take the following values: CurrentPage: Search on the current page. AllPages: Search across all pages of the current document. AllDocuments: Search across all documents. searchAnnotation: Specifies whether the search includes annotations: WithAnnotations: Search within the document text and annotations. WithoutAnnotations: Search within the document text only. OnlyAnnotations: Search within annotations only. postSearchAction: Specifies what to do with the found elements: null: No specific action. Redact: The found elements are converted into redaction annotations (text is hidden and only displayed on mouse hover). Highlight: The searched elements are converted into highlight annotations. - Here is a classic example of usage:\ngetARenderJS().getSearchJSAPI().askAdvancedSearchText(\u0026#34;arender\u0026#34;, false, false, false, \u0026#34;AllDocuments\u0026#34;, \u0026#34;WithAnnotations\u0026#34;, null) In this example:\n The search targets the term \u0026ldquo;arender\u0026rdquo;. The search is case-insensitive. The search ignores accents. The search term is not a regex. The search is conducted across all open documents. The search covers the document text as well as annotations added by the user. No specific action is performed on the elements returned by the search. Navigation through results and clearing search results are done in the same way as for a simple search, using the askSearchTextNext, askSearchTextPrevious, and clearSearchResults functions.\n- Example of a regular expression search:\nA regular expression (or regex) is a rule that defines which sequences of characters are highlighted in a search. For example, \\b\\w{16,}\\b will match words containing more than 16 characters.\nTo perform a search with this regex, you would run the search as follows, making sure to specify true for the isRegex parameter:\ngetARenderJS().getSearchJSAPI().askAdvancedSearchText(\u0026#34;\\b\\w{16,}\\b\u0026#34;, false, false, true, \u0026#34;AllDocuments\u0026#34;, \u0026#34;WithAnnotations\u0026#34;, null) /p>p>configuration/p>p>js/p>p>javascript/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/search-js-api\/ }, { value: Thumbnails, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/thumbnails-js-api\/, label: p>Change the document navigator Objet: getARenderJS().getThumbnailsJSAPI() Function Description resetNavigator() Reset the document navigator size hideNavigator() Hide the document navigator showNavigator() Show the document navigator expandNavigator(width) Enlarge the document navigator size (if width is superior to the current width) reduceNavigator(width) Reduce the document navigator size (if width is inferior to the current width) /p>p>Change the document navigator Objet: getARenderJS().getThumbnailsJSAPI() Function Description resetNavigator() Reset the document navigator size hideNavigator() Hide the document navigator showNavigator() Show the document navigator expandNavigator(width) Enlarge the document navigator size (if width is superior to the current width) reduceNavigator(width) Reduce the document navigator size (if width is inferior to the current width) /p>p>configuration/p>p>js/p>p>javascript/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/thumbnails-js-api\/ }, { value: Thumbnails, path: https:\/\/docs.arender.io\/features\/thumbnails\/, label: p>Introduction The Thumbnail View in ARender offers a condensed visual representation of the document, providing users with a quick and efficient way to navigate through pages.\nHighlighted Thumbnails One of the feature is the dynamic highlighting of thumbnails based on the current page being viewed. This visual cue allows users to easily identify their current location within the document, enhancing navigation and orientation.\nJump to Page Functionality Navigating to a specific page becomes effortless with the Thumbnail View./p>p>Introduction The Thumbnail View in ARender offers a condensed visual representation of the document, providing users with a quick and efficient way to navigate through pages.\nHighlighted Thumbnails One of the feature is the dynamic highlighting of thumbnails based on the current page being viewed. This visual cue allows users to easily identify their current location within the document, enhancing navigation and orientation.\nJump to Page Functionality Navigating to a specific page becomes effortless with the Thumbnail View. Users can simply select the desired thumbnail, and the application will seamlessly jump to the corresponding page. This feature streamlines the navigation process, saving users time and effort.\nAdjusted thumbnail display structure (v2023.1.0 and later) For those who desire control over their thumbnail view, ARender provides a dynamic slider that redefines how you interact with the document thumbnails. This feature allows you to seamlessly adjust the display structure of thumbnails.\nTo use this feature, you can enable it via a simple configuration setting.\n ARender Web-UI Spring Boot ARender Web-UI WAR arender-custom-client.properties (located in configurations\/) ui.legacy.enabledfalse arender.properties (located in WEB-INF\/classes\/) ui.legacy.enabledfalse Default number of columns configuration (v2023.4.0 and later) After enabling the previously mentioned \u0026ldquo;Adjusted thumbnail display structure\u0026rdquo; feature, thumbnails are displayed by default in 2 columns when ARender loads and when loading each new document. This default value can be changed to any number between 1 and 4.\nTo use this feature, you can configure it via a simple configuration setting.\n ARender Web-UI Spring Boot ARender Web-UI WAR arender-custom-client.properties (located in configurations\/) thumbexplorer.columns1 arender.properties (located in WEB-INF\/classes\/) thumbexplorer.columns1 Disabling the Anchor Creation Option (v2023.4.0 and later) By default, when a user right-clicks on a thumbnail, a dropdown menu appears with several options including \u0026ldquo;Create anchor at this page\u0026rdquo;. It is possible to disable this option.\nTo disable this feature, use the following configuration parameter:\n ARender Web-UI Spring Boot ARender Web-UI WAR arender-custom-client.properties (located in configurations\/) thumbexplorer.contextualMenu.createPageAnchorfalse arender.properties (located in WEB-INF\/classes\/) thumbexplorer.contextualMenu.createPageAnchorfalse By default, the configuration parameter is set to true, the \u0026ldquo;Create anchor at this page\u0026rdquo; option is enabled.\nWith the configuration parameter set to false, the \u0026ldquo;Create anchor at this page\u0026rdquo; option is disabled.\n/p>p>feature/p>p>thumbnails/p>p>pictree/p>, url: https:\/\/docs.arender.io\/features\/thumbnails\/ }, { value: Thumbnails, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/thumbnails-js-api\/, label: p>Change the document navigator Objet: getARenderJS().getThumbnailsJSAPI() Function Description resetNavigator() Reset the document navigator size hideNavigator() Hide the document navigator showNavigator() Show the document navigator expandNavigator(width) Enlarge the document navigator size (if width is superior to the current width) reduceNavigator(width) Reduce the document navigator size (if width is inferior to the current width) /p>p>Change the document navigator Objet: getARenderJS().getThumbnailsJSAPI() Function Description resetNavigator() Reset the document navigator size hideNavigator() Hide the document navigator showNavigator() Show the document navigator expandNavigator(width) Enlarge the document navigator size (if width is superior to the current width) reduceNavigator(width) Reduce the document navigator size (if width is inferior to the current width) /p>p>configuration/p>p>js/p>p>javascript/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/thumbnails-js-api\/ }, { value: Token validation, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/validator-token\/, label: p>A new servlet is deployed to configure a token validation.\nRequest This functionality is accessible via the servlet: tokenValidatorServlet\nUsable in POST\nThe validation of a token is configurable if it is sent as a POST request cookie or attribute to the URL \/arendergwt\/validateToken.\nThe token must have the name \u0026ldquo;token\u0026rdquo;.\nThe custom validator Java class shall implement the TokenValidator interface. It must be declared in the ARender configuration through the arender./p>p>A new servlet is deployed to configure a token validation.\nRequest This functionality is accessible via the servlet: tokenValidatorServlet\nUsable in POST\nThe validation of a token is configurable if it is sent as a POST request cookie or attribute to the URL \/arendergwt\/validateToken.\nThe token must have the name \u0026ldquo;token\u0026rdquo;.\nThe custom validator Java class shall implement the TokenValidator interface. It must be declared in the ARender configuration through the arender.server.json.load.token.validator property. It will have to implement the validate method that checks if the token passed as an URL parameter is valid or not. The default validator is NoopTokenValidator. It checks if the token is not null.\n/p>p>tutorial/p>p>token/p>p>validation/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/validator-token\/ }, { value: Upload\/load a document on the server, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/upload-document\/, label: p>Upload A servlet is deployed to upload a document on the server.\nRequest This functionality is accessible via the servlet: uploadServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/uploadServlet?uuiddocUUID\u0026#39; Servlet Response A new UUID is created from the document id sent as a parameter. It will be interpreted by ARender and downloaded to the server. This new id is displayed.\nLoad A servlet is deployed to load a document on the server./p>p>Upload A servlet is deployed to upload a document on the server.\nRequest This functionality is accessible via the servlet: uploadServlet\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/uploadServlet?uuiddocUUID\u0026#39; Servlet Response A new UUID is created from the document id sent as a parameter. It will be interpreted by ARender and downloaded to the server. This new id is displayed.\nLoad A servlet is deployed to load a document on the server.\nRequest This functionality is accessible via the servlet: uploadServlet\nUsable in POST\nRequest example curl -X POST -H \u0026#34;Content-Type: multipart\/form-data\u0026#34; -F \u0026#34;file@yourFile.pdf\u0026#34; \u0026#34;https:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/uploadServlet\u0026#34; yourFile : title of your document Servlet Response A new UUID is created from the document sent in the request. It will be loaded to the server. This new id is displayed.\n/p>p>tutorial/p>p>upload/p>p>server/p>p>load/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/upload-document\/ }, { value: Use REST API, path: https:\/\/docs.arender.io\/v4\/cookbook\/api\/, label: p>This guide is using as default URL for the rendition server http:\/\/localhost:8761 , it will be necessary for you to update these curl calls to your current rendition server URLs and ports for the REST API.\nList of exposed services How to obtain the capabilities of your rendition server In order to obtain the capabilities of the rendition server, you can asked the simple following URL:\nhttp:\/\/localhost:8761\/capabilities\nYou should have an answer of this form if your rendition server is up, in XML format:/p>p>This guide is using as default URL for the rendition server http:\/\/localhost:8761 , it will be necessary for you to update these curl calls to your current rendition server URLs and ports for the REST API.\nList of exposed services How to obtain the capabilities of your rendition server In order to obtain the capabilities of the rendition server, you can asked the simple following URL:\nhttp:\/\/localhost:8761\/capabilities\nYou should have an answer of this form if your rendition server is up, in XML format:\n\u0026lt;ar:capabilities xmlns:ar\u0026#34;http:\/\/www.arender.fr\/rest\u0026#34;\u0026gt; \u0026lt;ar:map\u0026gt; \u0026lt;ar:entry\u0026gt; \u0026lt;ar:string\u0026gt;com.arondor.viewer.client.client.api.Version\u0026lt;\/ar:string\u0026gt; \u0026lt;ar:string\u0026gt;3.1.0-rc3\u0026lt;\/ar:string\u0026gt; \u0026lt;\/ar:entry\u0026gt; \u0026lt;ar:entry\u0026gt; \u0026lt;ar:string\u0026gt; com.arondor.viewer.client.rendition.ServerAddressRest \u0026lt;\/ar:string\u0026gt; \u0026lt;ar:string\u0026gt;http:\/\/localhost:8761\/\u0026lt;\/ar:string\u0026gt; \u0026lt;\/ar:entry\u0026gt; \u0026lt;ar:entry\u0026gt; \u0026lt;ar:string\u0026gt; com.arondor.viewer.client.api.document.ProgressiveDocumentPageLayout.isSupported \u0026lt;\/ar:string\u0026gt; \u0026lt;ar:boolean\u0026gt;false\u0026lt;\/ar:boolean\u0026gt; \u0026lt;\/ar:entry\u0026gt; \u0026lt;ar:entry\u0026gt; \u0026lt;ar:string\u0026gt;com.arondor.viewer.client.rendition.Version\u0026lt;\/ar:string\u0026gt; \u0026lt;ar:string\u0026gt;3.1.0-rc3\u0026lt;\/ar:string\u0026gt; \u0026lt;\/ar:entry\u0026gt; \u0026lt;ar:entry\u0026gt; \u0026lt;ar:string\u0026gt;com.arondor.viewer.client.rendition.ServerAddress\u0026lt;\/ar:string\u0026gt; \u0026lt;ar:string\u0026gt;http:\/\/rendition-server:8761\/\u0026lt;\/ar:string\u0026gt; \u0026lt;\/ar:entry\u0026gt; \u0026lt;\/ar:map\u0026gt; \u0026lt;ar:category\u0026gt;com.arondor.viewer.client.rendition.Capabilities\u0026lt;\/ar:category\u0026gt; \u0026lt;\/ar:capabilities\u0026gt; The corresponding curl command to launch would be:\ncurl -H \u0026#34;Accept: application\/xml\u0026#34; -H \u0026#34;Content-Type: application\/xml\u0026#34; \\ -X GET \u0026#34;http:\/\/localhost:8761\/capabilities\u0026#34; How to know if your rendition server has loaded a document referenced by an ARender documentId Regarding documents, we need to call the document ressource , exposed at this URL: http:\/\/localhost:8761\/document\nAs an example, if you want to know if the default ARender document has been opened already you can check with:\nhttp:\/\/localhost:8761\/document\/b64_I2RlZmF1bHQ\nIf the default document hasn\u0026rsquo;t been opened, that\u0026rsquo;s the typical answer you\u0026rsquo;ll see:\n\u0026lt;ar:boolean xmlns:ar\u0026#34;http:\/\/www.arender.fr\/rest\u0026#34;\u0026gt;false\u0026lt;\/ar:boolean\u0026gt; La corresponding curl command is:\n$\u0026gt; curl -H \u0026#34;Accept: application\/xml\u0026#34; -H \u0026#34;Content-Type: application\/xml\u0026#34; \\ -X GET \u0026#34;http:\/\/localhost:8761\/document\/b64_I2RlZmF1bHQ\u0026#34; Getting the document layout It is possible and useful before asking images to the rendition in curl to know what are the default dimensions and number of page of the original document.\nTo do so, one shall ask the document ressource on its layout method:\n http:\/\/localhost:8761\/document\/{documentId}\/layout\n An example of this call is:\n$\u0026gt; curl -H \u0026#34;Accept: application\/xml\u0026#34; -H \u0026#34;Content-Type: application\/xml\u0026#34; \\ -X GET \u0026#34;http:\/\/localhost:8761\/document\/b64_I2RlZmF1bHQ\/layout\u0026#34; Here is an extract of a result on the default document:\n\u0026lt;ar:documentPageLayout xmlns:ar\u0026#34;http:\/\/www.arender.fr\/rest\u0026#34;\u0026gt; \u0026lt;ar:documentId\u0026gt;b64_I2RlZmF1bHQ\u0026lt;\/ar:documentId\u0026gt; \u0026lt;ar:documentTitle\u0026gt;arender-en.pdf\u0026lt;\/ar:documentTitle\u0026gt; \u0026lt;ar:mimeType\u0026gt;application\/pdf\u0026lt;\/ar:mimeType\u0026gt; \u0026lt;ar:pages\u0026gt; \u0026lt;ar:pageDimensions\u0026gt; \u0026lt;ar:width\u0026gt;720.0\u0026lt;\/ar:width\u0026gt; \u0026lt;ar:height\u0026gt;405.0\u0026lt;\/ar:height\u0026gt; \u0026lt;ar:rotation\u0026gt;0\u0026lt;\/ar:rotation\u0026gt; \u0026lt;ar:dpi\u0026gt;0\u0026lt;\/ar:dpi\u0026gt; \u0026lt;\/ar:pageDimensions\u0026gt; \u0026lt;ar:pageDimensions\u0026gt; \u0026lt;ar:width\u0026gt;720.0\u0026lt;\/ar:width\u0026gt; \u0026lt;ar:height\u0026gt;405.0\u0026lt;\/ar:height\u0026gt; \u0026lt;ar:rotation\u0026gt;0\u0026lt;\/ar:rotation\u0026gt; \u0026lt;ar:dpi\u0026gt;0\u0026lt;\/ar:dpi\u0026gt; \u0026lt;\/ar:pageDimensions\u0026gt; \u0026lt;ar:pageDimensions\u0026gt; \u0026lt;ar:width\u0026gt;720.0\u0026lt;\/ar:width\u0026gt; \u0026lt;ar:height\u0026gt;405.0\u0026lt;\/ar:height\u0026gt; \u0026lt;ar:rotation\u0026gt;0\u0026lt;\/ar:rotation\u0026gt; \u0026lt;ar:dpi\u0026gt;0\u0026lt;\/ar:dpi\u0026gt; \u0026lt;\/ar:pageDimensions\u0026gt; ... \u0026lt;\/ar:pages\u0026gt; \u0026lt;\/ar:documentPageLayout\u0026gt; Upload a document in the rendition server In order to push a document to the rendition server, we have to use a partial chunk loading in order not to saturate the server memory.\nTo start uploading, the first method to call is a POST method named startPartialLoading:\n$\u0026gt; curl -H \u0026#34;Accept: application\/xml\u0026#34; \\ -H \u0026#34;Content-Type: application\/xml\u0026#34; \\ -X POST \u0026#34;http:\/\/localhost:8761\/document\/{documentId}\/startPartialLoading?mimeType{mimeType}\u0026amp;documentTitle{documentTitle}\u0026amp;contentSize{contentSize}\u0026#34; ContentSize is the size in bytes of the file to send. The rendition server will expect as many bytes as declared in this call.\nAnother method is then responsible to load the binary content of the document, chunk by chunk.\nHere is the corresponding curl command, supposing your data chunk in stored in a file called binaryData.bin:\n$\u0026gt; curl --request POST --data-binary \u0026#34;@binaryData.bin\u0026#34; \u0026#34;http:\/\/localhost:8761\/document\/{documentId}\/continuePartialLoading?offset{offset}\u0026amp;finished{finished}\u0026#34; The \u0026ldquo;finished\u0026rdquo; parameter has to be set to true when the last chunk is being sent as it will confirm to the rendition server that the document is finished to transfer and can be parsed. \u0026ldquo;Offset\u0026rdquo; corresponds to the current offset in bytes of the file, allowing you to send custom chunk sizes (useful if you\u0026rsquo;re sending a document you haven\u0026rsquo;t entirely retrieved from your document storage system as an example).\nGetting the rendered pages of a document existing in the rendition server In order to obtain an image, you need to call the document resource on its method \u0026ldquo;image\u0026rdquo;:\n http:\/\/localhost:8761\/document\/{documentId}\/image\/{page}\/{description}\n The parameter \u0026ldquo;description\u0026rdquo; corresponds to \u0026ldquo;IM()\u0026rdquo; followed by two integer values that we use to describe the kind of page we went to receive, successively the width of the picture asked and its rotation in degrees.\nExample IM_1080_90 asks a 1080 pixels wide picture, rotated of 90°.\nHere is a curl example of such a method:\n$\u0026gt; curl -X GET \u0026#39;http:\/\/localhost:8761\/document\/b64_I2RlZmF1bHQ\/image\/0\/IM_1920_0\u0026#39; This obtains the first page of the default document of ARender with a width of 1920px (the width\/height ratio is kept from the original document).\n Getting the textual content of a page After obtaining the images of a document it might be useful to obtain its textual content for search purposes. To do so, one can call the document resource on the \u0026ldquo;contents\u0026rdquo; method:\n http:\/\/localhost:8761\/document\/{documentId}\/contents\/{page}\n Here is an example of such call:\n$\u0026gt; curl -H \u0026#34;Accept: application\/xml\u0026#34; -H \u0026#34;Content-Type: application\/xml\u0026#34; \\ -X GET \u0026#39;http:\/\/localhost:8761\/document\/b64_I2RlZmF1bHQ\/contents\/2\u0026#39; This obtains the textual content of the third page (pages numbers starts at 0 in ARender) of the ARender default document.\nAnd here is an abridged result (we can observe the text contained, its font, font size, and position on the document):\n\u0026lt;ar:pageContents xmlns:ar\u0026#34;http:\/\/www.arender.fr\/rest\u0026#34;\u0026gt; \u0026lt;ar:pageNumber\u0026gt;2\u0026lt;\/ar:pageNumber\u0026gt; \u0026lt;ar:positionTextList\u0026gt; \u0026lt;ar:positionText\u0026gt; \u0026lt;ar:pageNumber\u0026gt;2\u0026lt;\/ar:pageNumber\u0026gt; \u0026lt;ar:position\u0026gt; \u0026lt;ar:x\u0026gt;249.1\u0026lt;\/ar:x\u0026gt; \u0026lt;ar:y\u0026gt;-0.83999634\u0026lt;\/ar:y\u0026gt; \u0026lt;ar:w\u0026gt;456.0941\u0026lt;\/ar:w\u0026gt; \u0026lt;ar:h\u0026gt;36.0\u0026lt;\/ar:h\u0026gt; \u0026lt;\/ar:position\u0026gt; \u0026lt;ar:text\u0026gt;Document Viewing can be hard\u0026lt;\/ar:text\u0026gt; \u0026lt;ar:individualWidths\u0026gt; \u0026lt;ar:float\u0026gt;22.154755\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;18.98465\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;15.238159\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;18.912598\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;28.783173\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;17.939941\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;18.62442\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;12.068054\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;7.7451477\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;20.425598\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;8.285522\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;17.723785\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;25.757172\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;8.285522\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;18.912598\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;16.967285\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;7.991638\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;14.985962\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;17.255493\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;18.912598\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;7.9973145\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;18.912598\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;17.939941\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;8.033325\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;18.912598\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;17.255493\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;12.176147\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;18.912598\u0026lt;\/ar:float\u0026gt; \u0026lt;\/ar:individualWidths\u0026gt; \u0026lt;ar:fontSize\u0026gt;36.0\u0026lt;\/ar:fontSize\u0026gt; \u0026lt;ar:font\u0026gt;ABCDEE\u002bCalibri\u0026lt;\/ar:font\u0026gt; \u0026lt;ar:paragraphId\u0026gt;0\u0026lt;\/ar:paragraphId\u0026gt; \u0026lt;ar:rightToLeftText\u0026gt;false\u0026lt;\/ar:rightToLeftText\u0026gt; \u0026lt;\/ar:positionText\u0026gt; \u0026lt;ar:positionText\u0026gt; \u0026lt;ar:pageNumber\u0026gt;2\u0026lt;\/ar:pageNumber\u0026gt; \u0026lt;ar:position\u0026gt; \u0026lt;ar:x\u0026gt;91.584\u0026lt;\/ar:x\u0026gt; \u0026lt;ar:y\u0026gt;70.66\u0026lt;\/ar:y\u0026gt; \u0026lt;ar:w\u0026gt;102.79086\u0026lt;\/ar:w\u0026gt; \u0026lt;ar:h\u0026gt;18.0\u0026lt;\/ar:h\u0026gt; \u0026lt;\/ar:position\u0026gt; \u0026lt;ar:text\u0026gt;Deployment\u0026lt;\/ar:text\u0026gt; \u0026lt;ar:individualWidths\u0026gt; \u0026lt;ar:float\u0026gt;13.013329\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;9.9132\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;11.012665\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;5.046707\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;11.012665\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;9.859131\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;15.951233\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;9.96727\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;11.012665\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;6.001999\u0026lt;\/ar:float\u0026gt; \u0026lt;\/ar:individualWidths\u0026gt; \u0026lt;ar:fontSize\u0026gt;18.0\u0026lt;\/ar:fontSize\u0026gt; \u0026lt;ar:font\u0026gt;Arial,Bold\u0026lt;\/ar:font\u0026gt; \u0026lt;ar:paragraphId\u0026gt;1\u0026lt;\/ar:paragraphId\u0026gt; \u0026lt;ar:rightToLeftText\u0026gt;false\u0026lt;\/ar:rightToLeftText\u0026gt; \u0026lt;\/ar:positionText\u0026gt; \u0026lt;ar:positionText\u0026gt; \u0026lt;ar:pageNumber\u0026gt;2\u0026lt;\/ar:pageNumber\u0026gt; \u0026lt;ar:position\u0026gt; \u0026lt;ar:x\u0026gt;91.584\u0026lt;\/ar:x\u0026gt; \u0026lt;ar:y\u0026gt;92.26001\u0026lt;\/ar:y\u0026gt; \u0026lt;ar:w\u0026gt;55.979996\u0026lt;\/ar:w\u0026gt; \u0026lt;ar:h\u0026gt;18.0\u0026lt;\/ar:h\u0026gt; \u0026lt;\/ar:position\u0026gt; \u0026lt;ar:text\u0026gt;Issues\u0026lt;\/ar:text\u0026gt; \u0026lt;ar:individualWidths\u0026gt; \u0026lt;ar:float\u0026gt;5.003998\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;10.008003\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;9.954002\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;10.998001\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;10.007996\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;10.007996\u0026lt;\/ar:float\u0026gt; \u0026lt;\/ar:individualWidths\u0026gt; \u0026lt;ar:fontSize\u0026gt;18.0\u0026lt;\/ar:fontSize\u0026gt; \u0026lt;ar:font\u0026gt;Arial,Bold\u0026lt;\/ar:font\u0026gt; \u0026lt;ar:paragraphId\u0026gt;2\u0026lt;\/ar:paragraphId\u0026gt; \u0026lt;ar:rightToLeftText\u0026gt;false\u0026lt;\/ar:rightToLeftText\u0026gt; \u0026lt;\/ar:positionText\u0026gt; \u0026lt;ar:positionText\u0026gt; \u0026lt;ar:pageNumber\u0026gt;2\u0026lt;\/ar:pageNumber\u0026gt; \u0026lt;ar:position\u0026gt; \u0026lt;ar:x\u0026gt;61.296\u0026lt;\/ar:x\u0026gt; \u0026lt;ar:y\u0026gt;81.54001\u0026lt;\/ar:y\u0026gt; \u0026lt;ar:w\u0026gt;20.039997\u0026lt;\/ar:w\u0026gt; \u0026lt;ar:h\u0026gt;20.0\u0026lt;\/ar:h\u0026gt; \u0026lt;\/ar:position\u0026gt; \u0026lt;ar:text\u0026gt;\u0026lt;\/ar:text\u0026gt; \u0026lt;ar:individualWidths\u0026gt; \u0026lt;ar:float\u0026gt;20.039997\u0026lt;\/ar:float\u0026gt; \u0026lt;\/ar:individualWidths\u0026gt; \u0026lt;ar:fontSize\u0026gt;20.0\u0026lt;\/ar:fontSize\u0026gt; \u0026lt;ar:font\u0026gt;ABCDEE\u002bFontAwesome\u0026lt;\/ar:font\u0026gt; \u0026lt;ar:paragraphId\u0026gt;2\u0026lt;\/ar:paragraphId\u0026gt; \u0026lt;ar:rightToLeftText\u0026gt;false\u0026lt;\/ar:rightToLeftText\u0026gt; \u0026lt;\/ar:positionText\u0026gt; \u0026lt;ar:positionText\u0026gt; \u0026lt;ar:pageNumber\u0026gt;2\u0026lt;\/ar:pageNumber\u0026gt; \u0026lt;ar:position\u0026gt; \u0026lt;ar:x\u0026gt;91.584\u0026lt;\/ar:x\u0026gt; \u0026lt;ar:y\u0026gt;138.17\u0026lt;\/ar:y\u0026gt; \u0026lt;ar:w\u0026gt;81.684006\u0026lt;\/ar:w\u0026gt; \u0026lt;ar:h\u0026gt;18.0\u0026lt;\/ar:h\u0026gt; \u0026lt;\/ar:position\u0026gt; \u0026lt;ar:text\u0026gt;Technical\u0026lt;\/ar:text\u0026gt; \u0026lt;ar:individualWidths\u0026gt; \u0026lt;ar:float\u0026gt;9.720001\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;10.008003\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;9.918007\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;10.998001\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;11.070007\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;5.003998\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;10.007996\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;9.953995\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;5.003998\u0026lt;\/ar:float\u0026gt; \u0026lt;\/ar:individualWidths\u0026gt; \u0026lt;ar:fontSize\u0026gt;18.0\u0026lt;\/ar:fontSize\u0026gt; \u0026lt;ar:font\u0026gt;Arial,Bold\u0026lt;\/ar:font\u0026gt; \u0026lt;ar:paragraphId\u0026gt;3\u0026lt;\/ar:paragraphId\u0026gt; \u0026lt;ar:rightToLeftText\u0026gt;false\u0026lt;\/ar:rightToLeftText\u0026gt; \u0026lt;\/ar:positionText\u0026gt; \u0026lt;ar:positionText\u0026gt; \u0026lt;ar:pageNumber\u0026gt;2\u0026lt;\/ar:pageNumber\u0026gt; \u0026lt;ar:position\u0026gt; \u0026lt;ar:x\u0026gt;91.584\u0026lt;\/ar:x\u0026gt; \u0026lt;ar:y\u0026gt;159.77\u0026lt;\/ar:y\u0026gt; \u0026lt;ar:w\u0026gt;103.89601\u0026lt;\/ar:w\u0026gt; \u0026lt;ar:h\u0026gt;18.0\u0026lt;\/ar:h\u0026gt; \u0026lt;\/ar:position\u0026gt; \u0026lt;ar:text\u0026gt;Restrictions\u0026lt;\/ar:text\u0026gt; \u0026lt;ar:individualWidths\u0026gt; \u0026lt;ar:float\u0026gt;12.996002\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;9.918007\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;10.008003\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;5.9940033\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;6.9120026\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;5.003998\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;10.007996\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;5.9940033\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;5.003998\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;11.052002\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;10.998001\u0026lt;\/ar:float\u0026gt; \u0026lt;ar:float\u0026gt;10.007996\u0026lt;\/ar:float\u0026gt; \u0026lt;\/ar:individualWidths\u0026gt; \u0026lt;ar:fontSize\u0026gt;18.0\u0026lt;\/ar:fontSize\u0026gt; \u0026lt;ar:font\u0026gt;Arial,Bold\u0026lt;\/ar:font\u0026gt; \u0026lt;ar:paragraphId\u0026gt;4\u0026lt;\/ar:paragraphId\u0026gt; \u0026lt;ar:rightToLeftText\u0026gt;false\u0026lt;\/ar:rightToLeftText\u0026gt; \u0026lt;\/ar:positionText\u0026gt; \u0026lt;ar:positionText\u0026gt; \u0026lt;ar:pageNumber\u0026gt;2\u0026lt;\/ar:pageNumber\u0026gt; \u0026lt;ar:position\u0026gt; \u0026lt;ar:x\u0026gt;59.76\u0026lt;\/ar:x\u0026gt; \u0026lt;ar:y\u0026gt;145.05\u0026lt;\/ar:y\u0026gt; \u0026lt;ar:w\u0026gt;20.040005\u0026lt;\/ar:w\u0026gt; \u0026lt;ar:h\u0026gt;20.0\u0026lt;\/ar:h\u0026gt; \u0026lt;\/ar:position\u0026gt; \u0026lt;ar:text\u0026gt;\u0026lt;\/ar:text\u0026gt; \u0026lt;ar:individualWidths\u0026gt; \u0026lt;ar:float\u0026gt;20.040005\u0026lt;\/ar:float\u0026gt; \u0026lt;\/ar:individualWidths\u0026gt; \u0026lt;ar:fontSize\u0026gt;20.0\u0026lt;\/ar:fontSize\u0026gt; \u0026lt;ar:font\u0026gt;ABCDEE\u002bFontAwesome\u0026lt;\/ar:font\u0026gt; \u0026lt;ar:paragraphId\u0026gt;4\u0026lt;\/ar:paragraphId\u0026gt; \u0026lt;ar:rightToLeftText\u0026gt;false\u0026lt;\/ar:rightToLeftText\u0026gt; \u0026lt;\/ar:positionText\u0026gt; ... \u0026lt;\/ar:positionTextList\u0026gt; \u0026lt;\/ar:pageContents\u0026gt; /p>p>tutorial/p>p>rest/p>p>API/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/api\/ }, { value: Use SSL, path: https:\/\/docs.arender.io\/learn\/how-to\/activate-https\/, label: p>To allow your Rendition to work over https, you have to change some properties in ARender server and Rendition server.\nWarning Note that you cannot use both of http and https at the same time. On ARender server side Add these lines below in the following file:\nconfigurations\/arender-custom-server.properties arender.server.rendition.hostshttps:\/\/RENDITION_HOSTNAME:RENDITION_PORT\/ arender.rest.ssl.custom.usetrue On rendition server side Copy the files located in \u0026ldquo;YOUR_RENDITION_FOLDER\/secure-mode-properties\/\u0026rdquo; in their respective destination in \u0026ldquo;YOUR_RENDITION_FOLDER\/modules\/\u0026rdquo; as it should then place them correctly in their respective folders./p>p>To allow your Rendition to work over https, you have to change some properties in ARender server and Rendition server.\nWarning Note that you cannot use both of http and https at the same time. On ARender server side Add these lines below in the following file:\nconfigurations\/arender-custom-server.properties arender.server.rendition.hostshttps:\/\/RENDITION_HOSTNAME:RENDITION_PORT\/ arender.rest.ssl.custom.usetrue On rendition server side Copy the files located in \u0026ldquo;YOUR_RENDITION_FOLDER\/secure-mode-properties\/\u0026rdquo; in their respective destination in \u0026ldquo;YOUR_RENDITION_FOLDER\/modules\/\u0026rdquo; as it should then place them correctly in their respective folders.\n/p>p>tutorial/p>p>https/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/activate-https\/ }, { value: Use SSL, path: https:\/\/docs.arender.io\/v4\/cookbook\/activate-https\/, label: p>To allow your Rendition to work over https, you have to change some properties in ARender server and Rendition server.\nWarning Note that you cannot use both of http and https at the same time. On ARender server side Add these following lines in the folowing file:\narender-server-custom-vanilla.properties arender.server.rendition.hostshttps:\/\/RENDITION_HOSTNAME:RENDITION_PORT\/ arender.rest.ssl.custom.usetrue On rendition server side Copy the files located in \u0026ldquo;YOUR_RENDITION_FOLDER\/secure-mode-properties\/\u0026rdquo; in their respective destination in \u0026ldquo;YOUR_RENDITION_FOLDER\/modules\/\u0026rdquo; as it should then place them correctly in their respective folders./p>p>To allow your Rendition to work over https, you have to change some properties in ARender server and Rendition server.\nWarning Note that you cannot use both of http and https at the same time. On ARender server side Add these following lines in the folowing file:\narender-server-custom-vanilla.properties arender.server.rendition.hostshttps:\/\/RENDITION_HOSTNAME:RENDITION_PORT\/ arender.rest.ssl.custom.usetrue On rendition server side Copy the files located in \u0026ldquo;YOUR_RENDITION_FOLDER\/secure-mode-properties\/\u0026rdquo; in their respective destination in \u0026ldquo;YOUR_RENDITION_FOLDER\/modules\/\u0026rdquo; as it should then place them correctly in their respective folders.\n/p>p>tutorial/p>p>https/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/activate-https\/ }, { value: Version, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/version\/, label: p>Since version 2023.6.0, a new servlet has been introduced to display the ARender version.\nRequest This functionality is accessible via the servlet: VersionServlet\nUsable with GET HTTP method\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/version\u0026#39; Servlet Response The deployed ARender version in plain text format/p>p>Since version 2023.6.0, a new servlet has been introduced to display the ARender version.\nRequest This functionality is accessible via the servlet: VersionServlet\nUsable with GET HTTP method\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/version\u0026#39; Servlet Response The deployed ARender version in plain text format\n/p>p>tutorial/p>p>version/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/version\/ }, { value: Visualization, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/vizualisation\/, label: p>General Description Property key Default value Type Visualization mode : Simple, BookMode visualization.mode Simple Text Full screen mode at startup visualization.fullscreen false Boolean Activate save page rotation visualization.rotation.save.enabled false Boolean Autoplay videos visualization.video.autoplay true Boolean Reload Description Property key Default value Type Reload lower quality images once the higher quality has been fetched (always load the perfect size, or save bandwidth) visualization./p>p>General Description Property key Default value Type Visualization mode : Simple, BookMode visualization.mode Simple Text Full screen mode at startup visualization.fullscreen false Boolean Activate save page rotation visualization.rotation.save.enabled false Boolean Autoplay videos visualization.video.autoplay true Boolean Reload Description Property key Default value Type Reload lower quality images once the higher quality has been fetched (always load the perfect size, or save bandwidth) visualization.reload.lower.quality false Boolean Difference between the old image width and the new image width. Reload the image if difference is greater than this value. visualization.reload.minimum.width.change 0.1 Integer Difference between the old image width and the new image width on mobile. Reload the image if difference is greater than this value visualization.reload.minimum.width.change.mobile 200.0 Integer Zoom Description Property key Default value Type Zoom type : Default, FullWidth, FullHeight, In, Out, Custom, FullPage visualization.zoom.type FullWidth String Zoom value (%) visualization.zoom.value 100 Integer Enable zoom animation visualization.zoom.animation false Boolean Zoom according to the biggest page (width or height). Otherwise to the first page visualization.zoom.by.biggest.page true Boolean Custom zoom step value visualization.zoom.step 0.1 Float Page change Description Property key Default value Type Page change on mouse scroll visualization.pageChange.mouse false Boolean Enabling animation on page change visualization.pageChange.animation false Boolean Only when visualization.bookModetrue\n Description Key parameter Default value Type Activate page corners visualization.pageCorner.enabled false Boolean Activate page corners animation visualization.pageCorner.animation false Boolean Guide ruler Description Key parameter Default value Type Activate guide ruler visualization.guideRuler.enabled false Boolean Guide ruler height visualization.guideRuler.height 10 Integer Guide ruler step visualization.guideRuler.increment 10 Integer Multiview Description Key parameter Default value Type Activate multiview visualization.multiview.enabled true Boolean Multiview orientation:vertical , horizontal visualization.multiview.direction vertical String Activate document compare visualization.multiview.doComparison false Boolean Display multiview on startup visualization.multiview.showOnStart false Boolean Synchronized multiview scroll visualization.multiview.synchronized true Boolean Activate the focus of the document by click visualization.multiview.focusOnClick false Boolean Configure the time to hide the multiview header visualization.multiview.header.timeoutMs 5000 Long Notifications General Description Key parameter Default value Type Time elapsed before hiding the notification (ms) toaster.toast.timeout 2000 Integer Display the newest notification on top of the stack toaster.toast.newestOnTop true Boolean Severe Description Key parameter Default value Type Activate notifications for the severe level toaster.log.severe.enabled true Boolean Hide automatically the notif for the severe level toaster.log.severe.autoHide false Boolean Warning Description Key parameter Default value Type Activate notifications for the warning level toaster.log.warning.enabled true Boolean Hide automatically the notif for the warning level toaster.log.warning.autoHide true Boolean Info Description Key parameter Default value Type Activate notifications for the info level toaster.log.info.enabled true Boolean Hide automatically the notif for the info level toaster.log.info.autoHide true Boolean Config Description Key parameter Default value Type Activate notifications for the config level toaster.log.config.enabled false Boolean Hide automatically the notif for the config level toaster.log.config.autoHide true Boolean Fine Description Key parameter Default value Type Activate notifications for the fine level toaster.log.fine.enabled false Boolean Hide automatically the notif for the fine level toaster.log.fine.autoHide true Boolean Finer Description Key parameter Default value Type Activate notifications for the finer level toaster.log.finer.enabled false Boolean Hide automatically the notif for the finer level toaster.log.finer.autoHide true Boolean Finest Description Key parameter Default value Type Activate notifications for the finest level toaster.log.finest.enabled false Boolean Hide automatically the notif for the finest level toaster.log.finest.autoHide true Boolean /p>p>configuration/p>p>visualization/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/vizualisation\/ }, { value: Visualization, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/vizualisation\/, label: p>General Key: visualization Description Property key Type Visualization mode mode Simple, BookMode Fullscreen mode at startup fullscreen Boolean Activate save page rotation rotation.save.enabled Boolean Autoplay videos video.autoplay Boolean Zoom Key: zoom Description Property key Type Zoom type type FullWidth, FullHeight or FullPage Zoom value value Integer (%) Enable zoom animation animation Boolean Page change Key: pageChange/p>p>General Key: visualization Description Property key Type Visualization mode mode Simple, BookMode Fullscreen mode at startup fullscreen Boolean Activate save page rotation rotation.save.enabled Boolean Autoplay videos video.autoplay Boolean Zoom Key: zoom Description Property key Type Zoom type type FullWidth, FullHeight or FullPage Zoom value value Integer (%) Enable zoom animation animation Boolean Page change Key: pageChange\n Description Property key Type Changement de page au scroll de la souris mouse Boolean Activation de l\u0026rsquo;animation au changement de page animation Boolean Key: pageCorner\nOnly when visualization.bookModetrue\n Description Key parameter Type Activate page corners enabled Boolean Activate page corners animation animation Boolean Guide ruler Key: guideRuler Description Key parameter Type Activate guide ruler enabled Boolean Guide ruler height height Integer Guide ruler step increment Integer Multiview Key: multiview Description Key parameter Type Activate multiview enabled Boolean Multiview orientation direction vertical , horizontal Activate document compare doComparison Boolean Display multiview on startup showOnStart Boolean Synchronized multiview scroll synchronized Boolean Activate the focus of the document by click focusOnClick Boolean Configure the time to hide the multiview header header.timeoutMs Long Notifications Key: toaster\n Description Key parameter Type Activate notifications for the chosen level LVL_KEY.enabled Boolean Hide automatically the notif for the chosen level LVL_KEY.autoHide Boolean Time elapsed before hiding the notification toast.timeout Integer (ms) Display the newest notification on top of the stack toast.newestOnTop Boolean level keys Level Key Severe log.severe Warning log.warning Info log.info Config log.config fine log.fine finer log.finer finest log.finest /p>p>configuration/p>p>visualization/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/vizualisation\/ }, { value: Watermarks, path: https:\/\/docs.arender.io\/learn\/how-to\/watermark\/, label: p>This guide will help you configure ARender to use watermarks.\nUse ARender default Watermark A pre-configured watermark exists in ARender. Its content is: Viewed by $USERNAME$ at $TIMESTAMP$ $USERNAME$ will be replaced with the current user name $TIMESTAMP$ will be replaced with the current time and time\nConfiguration To activate this watermark on all documents you need to add the below properties to ARender server configuration (arender-server-custom-vanilla.properties)\nconfigurations\/arender-custom-server.properties # This allows to configure a watermark provider for the type of watermark # to apply on document preview arender./p>p>This guide will help you configure ARender to use watermarks.\nUse ARender default Watermark A pre-configured watermark exists in ARender. Its content is: Viewed by $USERNAME$ at $TIMESTAMP$ $USERNAME$ will be replaced with the current user name $TIMESTAMP$ will be replaced with the current time and time\nConfiguration To activate this watermark on all documents you need to add the below properties to ARender server configuration (arender-server-custom-vanilla.properties)\nconfigurations\/arender-custom-server.properties # This allows to configure a watermark provider for the type of watermark # to apply on document preview arender.server.watermark.display.provideractivableDisplayWatermarkProvider # Activate the watermark at the viewing and on the downloaded document arender.watermark.activate.on.startuptrue # Enable annotations rendition processing if you need to use Redact or Watermark. Can have an impact on performances if the annotations take time to be fetched. arender.server.process.annotations.renditiontrue Activation Simply restart ARender web application and you will see watermarks on each page of the document\nTo go futher Create your own watermark You can create the watermark of your choice by configuring its style and its text content (with variables like the date of the day and its User Name). Below the default ARender watermark.\nconfigurations\/arender-custom-server-integration.xml \u0026lt;bean id\u0026#34;customWatermark\u0026#34; class\u0026#34;com.arondor.viewer.client.api.annotation.templates.AnnotationTemplate\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;CUSTOM\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationType\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.annotation.common.AnnotationType\u0026#34;\u0026gt;Stamp\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;contentTemplate\u0026#34; value\u0026#34;Viewed by $USERNAME$ at $TIMESTAMP$\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationStyle\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationStyle\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;fontColor\u0026#34; value\u0026#34;black\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;fontSize\u0026#34; value\u0026#34;20\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;backgroundColor\u0026#34; value\u0026#34;none\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;borderColor\u0026#34; value\u0026#34;black\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;borderStyle\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;borderWidth\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;rotation\u0026#34; value\u0026#34;340\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;!--watermarkPosition available values are: CENTRE and TOP_LEFT--\u0026gt; \u0026lt;property name\u0026#34;watermarkPosition\u0026#34; value\u0026#34;CENTER\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; Create you own watermark To create your own watermark:\n Copy the above content in your specific ARender configuration (arender-custom-server-integration.xml) Change the bean ID Define its style and its textual content by modifying properties values under annotationStyle Configure the use of your own watermark Add the below property to ARender server configuration (configurations\/arender-custom-server.properties). The value is the id of the bean you just created. configurations\/arender-custom-server.properties # Default watermark used when watermarks are activated on startup arender.watermark.bean.nameChangeWithYouBeanId \nActivate your watermark Simply restart ARender web application and your own watermark will be displayed on each page of the document.\n/p>p>watermarks/p>, url: https:\/\/docs.arender.io\/learn\/how-to\/watermark\/ }, { value: Watermarks, path: https:\/\/docs.arender.io\/v4\/cookbook\/watermark\/, label: p>This guide will help you configure ARender to use watermarks.\nUse ARender default Watermark A pre-configured watermark exists in ARender. Its content is: Viewed by $USERNAME$ at $TIMESTAMP$ $USERNAME$ will be replaced with the current user name $TIMESTAMP$ will be replaced with the current time and time\nConfiguration To activate this watermark on all documents you need to add the below properties to ARender server configuration (arender-server-custom-vanilla.properties)\narender-server-custom-vanilla.properties # This allows to configure a watermark provider for the type of watermark # to apply on document preview arender./p>p>This guide will help you configure ARender to use watermarks.\nUse ARender default Watermark A pre-configured watermark exists in ARender. Its content is: Viewed by $USERNAME$ at $TIMESTAMP$ $USERNAME$ will be replaced with the current user name $TIMESTAMP$ will be replaced with the current time and time\nConfiguration To activate this watermark on all documents you need to add the below properties to ARender server configuration (arender-server-custom-vanilla.properties)\narender-server-custom-vanilla.properties # This allows to configure a watermark provider for the type of watermark # to apply on document preview arender.server.watermark.display.provideractivableDisplayWatermarkProvider # Activate the watermark at the viewing and on the downloaded document arender.watermark.activate.on.startuptrue # Enable annotations rendition processing if you need to use Redact or Watermark. Can have an impact on performances if the annotations take time to be fetched. arender.server.process.annotations.renditiontrue Activation Simply restart ARender web application and you will see watermarks on each page of the document\nTo go futher Create your own watermark You can create the watermark of your choice by configuring its style and its text content (with variables like the date of the day and its User Name). Below the default ARender watermark.\n\u0026lt;bean id\u0026#34;customWatermark\u0026#34; class\u0026#34;com.arondor.viewer.client.api.annotation.templates.AnnotationTemplate\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;name\u0026#34; value\u0026#34;CUSTOM\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationType\u0026#34;\u0026gt; \u0026lt;value type\u0026#34;com.arondor.viewer.client.api.annotation.Annotation$AnnotationType\u0026#34;\u0026gt;Stamp\u0026lt;\/value\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;property name\u0026#34;contentTemplate\u0026#34; value\u0026#34;Viewed by $USERNAME$ at $TIMESTAMP$\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;annotationStyle\u0026#34;\u0026gt; \u0026lt;bean class\u0026#34;com.arondor.viewer.client.api.annotation.AnnotationStyle\u0026#34;\u0026gt; \u0026lt;property name\u0026#34;fontColor\u0026#34; value\u0026#34;black\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;fontSize\u0026#34; value\u0026#34;20\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;backgroundColor\u0026#34; value\u0026#34;none\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;borderColor\u0026#34; value\u0026#34;black\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;borderStyle\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;borderWidth\u0026#34; value\u0026#34;0\u0026#34; \/\u0026gt; \u0026lt;property name\u0026#34;rotation\u0026#34; value\u0026#34;340\u0026#34; \/\u0026gt; \u0026lt;\/bean\u0026gt; \u0026lt;\/property\u0026gt; \u0026lt;!--watermarkPosition available values are: CENTRE and TOP_LEFT--\u0026gt; \u0026lt;property name\u0026#34;watermarkPosition\u0026#34; value\u0026#34;CENTER\u0026#34;\/\u0026gt; \u0026lt;\/bean\u0026gt; Create you own watermark To create your own watermark:\n Copy the above content in your specific ARender configuration (arender-custom-integration.xml) Change the bean ID Define its style and its textual content by modifying properties values under annotationStyle Configure the use of your own watermark Add the below property to ARender server configuration (arender-server-custom-vanilla.properties). The value is the id of the bean you just created. arender-server-custom-vanilla.properties # Default watermark used when watermarks are activated on startup arender.watermark.bean.nameChangeWithYouBeanId \nActivate your watermark Simply restart ARender web application and your own watermark will be displayed on each page of the document.\n/p>p>watermarks/p>, url: https:\/\/docs.arender.io\/v4\/cookbook\/watermark\/ }, { value: White label, path: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/whitelabel\/, label: p>Introduction Since ARender 4.4.1, you can remove any references of the ARender brand through the configuration.\nConfiguration The References to ARender in \u0026ldquo;About\u0026rdquo; section A property allows removing references to \u0026lsquo;ARender\u0026rsquo;. Removed references are in the \u0026ldquo;About\u0026rdquo; panel. Apply following property to remove those references : configurations\/arender-custom-client.properties # Remove any references of ARender in the application arender.white.labelingtrue \nResult after activation of the white label property :/p>p>Introduction Since ARender 4.4.1, you can remove any references of the ARender brand through the configuration.\nConfiguration The References to ARender in \u0026ldquo;About\u0026rdquo; section A property allows removing references to \u0026lsquo;ARender\u0026rsquo;. Removed references are in the \u0026ldquo;About\u0026rdquo; panel. Apply following property to remove those references : configurations\/arender-custom-client.properties # Remove any references of ARender in the application arender.white.labelingtrue \nResult after activation of the white label property :\nThe references at loading and saving At document loading or saving, an \u0026lsquo;ARender\u0026rsquo; text is visible at the center of the page.\nThis text is configurable with the following property :\nconfigurations\/arender-custom-client.properties # Display the label when document starts to open startup.loading.labelJust-Loading Modification of window title Last \u0026lsquo;ARender\u0026rsquo; reference is in the window title of the browser. This can be modified by editing the file ARender.html that can be found at the root folder of your ARender deployment. Then you can modify the following line to remove \u0026lsquo;ARender\u0026rsquo; :\nAfter edit :\n/p>p>configuration/p>p>WhiteLabel/p>p>label/p>p>White label/p>, url: https:\/\/docs.arender.io\/guides\/configurations\/web-ui\/properties\/whitelabel\/ }, { value: White label, path: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/whitelabel\/, label: p>Introduction Since ARender 4.4.1, you can remove any references of the ARender brand through the configuration.\nConfiguration The References to ARender in \u0026ldquo;About\u0026rdquo; section A property allows to remove references to \u0026lsquo;ARender\u0026rsquo;. Removed references are in the \u0026ldquo;About\u0026rdquo; panel. Apply following property to remove those references : arender.properties # Remove any references of ARender in the application arender.white.labelingtrue \nResult after activation of the white label property :/p>p>Introduction Since ARender 4.4.1, you can remove any references of the ARender brand through the configuration.\nConfiguration The References to ARender in \u0026ldquo;About\u0026rdquo; section A property allows to remove references to \u0026lsquo;ARender\u0026rsquo;. Removed references are in the \u0026ldquo;About\u0026rdquo; panel. Apply following property to remove those references : arender.properties # Remove any references of ARender in the application arender.white.labelingtrue \nResult after activation of the white label property :\nThe references at loading and saving At document loading or saving, an \u0026lsquo;ARender\u0026rsquo; text is visible at the center of the page.\nThis text is configurable with the following property :\narender.properties # Display the label when document starts to open startup.loading.labelJust-Loading ARender logo To modify ARender logo from the top panel, apply following configuration.\nTo use the white icon : arender.properties # Define the top panel logo URL topPanel.logo.urlarender-icones-svg-white\/submenu\/toolbar\/icone-details.svg \nTo use the gray icon : arender.properties # Define the top panel logo URL topPanel.logo.urlarender-icones-svg\/submenu\/toolbar\/icone-details.svg \nModification of window title Last \u0026lsquo;ARender\u0026rsquo; reference is in the window title of the browser. This can be modified by editing the file ARender.html that can be found at the root folder of your ARender deployment. Then you can modify the following line to remove \u0026lsquo;ARender\u0026rsquo; :\nAfter edit :\n/p>p>configuration/p>p>WhiteLabel/p>p>label/p>p>White label/p>, url: https:\/\/docs.arender.io\/v4\/configuration\/web-ui\/whitelabel\/ }, { value: XFDF of the annotations, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/xfdf-annotation\/, label: p>Download XFDF or FDF A servlet is deployed to download the XFDF or FDF file of the annotations of a document.\nRequest This functionality is accessible via the servlet: servletXFDFAnnotations\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/servletXFDFAnnotations?uuiddocUUID\u0026amp;typetypeFile\u0026#39; uuid: document id type: the type of file to download. XFDF or FDF (default: XFDF) Servlet Response The XFDF or FDF file of document annotations given as parameter is downloaded./p>p>Download XFDF or FDF A servlet is deployed to download the XFDF or FDF file of the annotations of a document.\nRequest This functionality is accessible via the servlet: servletXFDFAnnotations\nUsable in GET\nRequest example curl -X GET \u0026#39;http:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/servletXFDFAnnotations?uuiddocUUID\u0026amp;typetypeFile\u0026#39; uuid: document id type: the type of file to download. XFDF or FDF (default: XFDF) Servlet Response The XFDF or FDF file of document annotations given as parameter is downloaded.\nLoad XFDF A servlet is deployed to load the XFDF file of the annotations to a document sent in parameter.\nRequest This functionality is accessible via the servlet: servletXFDFAnnotations\nUsable in POST\nRequest example curl -X POST -H \u0026#34;Content-Type: multipart\/form-data\u0026#34; -F \u0026#34;file@yourXFDF.xfdf\u0026#34; \u0026#34;https:\/\/\u0026lt;arender_host\u0026gt;\/ARender\/arendergwt\/servletXFDFAnnotations?uuiddocUUID\u0026#34; uuid: document id yourXFDF: title of your XFDF file If the file or annotations format are in FDF format, they will be loaded in XFDF format.\nExample XFDF file\n\u0026lt;?xml version\u0026#34;1.0\u0026#34; encoding\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;ns0:xfdf xmlns:ns0\u0026#34;http:\/\/ns.adobe.com\/xfdf\/\u0026#34;\u0026gt;\u0026lt;ns0:annots\u0026gt; \u0026lt;ns0:highlight color\u0026#34;#273746\u0026#34; flags\u0026#34;obfuscate\u0026#34; name\u0026#34;c553fe65-a3a0-4628-b396-1201bfea6285\u0026#34; page\u0026#34;1\u0026#34; rect\u0026#34;153.26161,334.42,264.57193,374.02002\u0026#34; title\u0026#34;admin\u0026#34; creationdate\u0026#34;D:20221214090312\u002b00\u0026#39;00\u0026#39;\u0026#34; opacity\u0026#34;1.0\u0026#34; coords\u0026#34;153.26161,374.02002,264.57193,374.02002,153.26161,334.42,264.57193,334.42\u0026#34;\/\u0026gt; \u0026lt;ns0:highlight color\u0026#34;#273746\u0026#34; flags\u0026#34;obfuscate\u0026#34; name\u0026#34;d374f298-205f-420e-a7d6-acd55e337151\u0026#34; page\u0026#34;1\u0026#34; rect\u0026#34;43.2,334.42,114.40608,374.02002\u0026#34; title\u0026#34;admin\u0026#34; creationdate\u0026#34;D:20221214090312\u002b00\u0026#39;00\u0026#39;\u0026#34; opacity\u0026#34;1.0\u0026#34; coords\u0026#34;43.2,374.02002,114.40608,374.02002,43.2,334.42,114.40608,334.42\u0026#34;\/\u0026gt; \u0026lt;ns0:circle color\u0026#34;#EAF39C\u0026#34; flags\u0026#34;\u0026#34; name\u0026#34;cfdbee9c-dce1-4e62-bc10-55ab1554476b\u0026#34; page\u0026#34;0\u0026#34; rect\u0026#34;82.02787,218.50267,183.40193,337.67523\u0026#34; title\u0026#34;Unknown\u0026#34; creationdate\u0026#34;D:20221228084701\u002b00\u0026#39;00\u0026#39;\u0026#34; opacity\u0026#34;0.7\u0026#34; fringe\u0026#34;0.0,0.0,0.0,0.0\u0026#34; interior-color\u0026#34;#EAF39C\u0026#34; width\u0026#34;0.0\u0026#34; style\u0026#34;solid\u0026#34; intensity\u0026#34;\u0026#34;\/\u0026gt; \u0026lt;\/ns0:annots\u0026gt; \u0026lt;\/ns0:xfdf\u0026gt; Servlet Response The XFDF or FDF file of document annotations given as parameter is downloaded.\n/p>p>tutorial/p>p>download/p>p>xfdf/p>p>annotation/p>p>load/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/servlet\/xfdf-annotation\/ }, { value: Zoom api, path: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/zoom-js-api\/, label: p>Change zoom Object: getARenderJS().getZoomJSAPI() Function Description askZoomIn() Zoom askZoomOut() Zoom out askZoomFullWidth() Zoom full width askZoomFullHeight() Zoom full height askZoomFullPage() Zoom full page: adapted to both width and height /p>p>Change zoom Object: getARenderJS().getZoomJSAPI() Function Description askZoomIn() Zoom askZoomOut() Zoom out askZoomFullWidth() Zoom full width askZoomFullHeight() Zoom full height askZoomFullPage() Zoom full page: adapted to both width and height /p>p>configuration/p>p>js/p>p>javascript/p>, url: https:\/\/docs.arender.io\/development\/apis\/web-ui\/javascript\/zoom-js-api\/ }, { value: Zoom api, path: https:\/\/docs.arender.io\/v4\/apis\/javascript\/zoom-js-api\/, label: p>Change zoom Object: getARenderJS().getZoomJSAPI() Function Description askZoomIn() Zoom askZoomOut() Zoom out askZoomFullWidth() Zoom full width askZoomFullHeight() Zoom full height askZoomFullPage() Zoom full page: adapted to both width and height /p>p>Change zoom Object: getARenderJS().getZoomJSAPI() Function Description askZoomIn() Zoom askZoomOut() Zoom out askZoomFullWidth() Zoom full width askZoomFullHeight() Zoom full height askZoomFullPage() Zoom full page: adapted to both width and height /p>p>configuration/p>p>js/p>p>javascript/p>, url: https:\/\/docs.arender.io\/v4\/apis\/javascript\/zoom-js-api\/ }, ; $(#search).autocomplete({ source: projects, appendTo: #autocomplete-container, }).data(ui-autocomplete)._renderItem function (ul, item) { return $(li>) .append(a href + item.url + + \ "\ + > + item.value + span class\secondary\ >(+ item.path + )/span>/a> + item.label) .appendTo(ul); }; }); /script> /div>/div> /div> /div> /div>/section> !-- topics -->div classcontainer> section classsection documentation> div classrow justify-content-center> !-- topic-item -->div idcontent stylewidth: 100%> div classcontainer documentation> div classrow> div classsimple-section row w-100> div classcol-12 col-lg-4 p-3> div classcard card-clickable text-center h-100 pt-3 > a hrefhttps://docs.arender.io/what-is-arender/? classbutton float-right iq-mt-20> div classicon-bg center-block m-auto> i aria-hiddentrue classicon mdi-lightbulb-outline>/i> /div> div classcard-body d-flex flex-column mt-0> h5 classcard-title>What is ARender ?/h5> p classcard-text text-justify lead>/p> /div> /a>/div> /div> div classcol-12 col-lg-4 p-3> div classcard card-clickable text-center h-100 pt-3 > a hrefhttps://docs.arender.io/installation/? classbutton float-right iq-mt-20> div classicon-bg center-block m-auto> i aria-hiddentrue classicon mdi-wrench-outline>/i> /div> div classcard-body d-flex flex-column mt-0> h5 classcard-title>Installation/h5> p classcard-text text-justify lead>/p> /div> /a>/div> /div> div classcol-12 col-lg-4 p-3> div classcard card-clickable text-center h-100 pt-3 > a hrefhttps://docs.arender.io/learn/? classbutton float-right iq-mt-20> div classicon-bg center-block m-auto> i aria-hiddentrue classicon mdi-book-open-variant>/i> /div> div classcard-body d-flex flex-column mt-0> h5 classcard-title>Learn/h5> p classcard-text text-justify lead>/p> /div> /a>/div> /div> div classcol-sm-12 col-md-6 p-2> div classcard h-100 p-2 w-100 stylemax-width:100%;> div classcard-body> a hrefhttps://docs.arender.io/guides/ onmouseoverstartHoverShowAll(this) onmouseoutendHoverShowAll(this) classbutton float-right>Show alli classfas fa-long-arrow-alt-right>/i>/a> h5 classcard-title styleclear:none;>Guides/h5> p classcard-text lead mb-4>/p> div classsection-with-sub row w-100 p-2> ul classcol-sm-12 col-md-6 p-2 flex> a classflex w-100 hrefhttps://docs.arender.io/guides/configurations/> li classcard-clickable w-100> i classicon mdi-cog>/i> span>Configurations/span> p classtext-muted small>/p> /li> /a> /ul> ul classcol-sm-12 col-md-6 p-2 flex> a classflex w-100 hrefhttps://docs.arender.io/guides/exploitation/> li classcard-clickable w-100> i classicon mdi-monitor-dashboard>/i> span>Exploitation/span> p classtext-muted small>/p> /li> /a> /ul> ul classcol-sm-12 col-md-6 p-2 flex> a classflex w-100 hrefhttps://docs.arender.io/guides/operation/> li classcard-clickable w-100> i classicon mdi-monitor-eye>/i> span>Operation/span> p classtext-muted small>/p> /li> /a> /ul> ul classcol-sm-12 col-md-6 p-2 flex> a classflex w-100 hrefhttps://docs.arender.io/guides/upgrade/> li classcard-clickable w-100> i classicon mdi-database-arrow-right-outline>/i> span>Upgrade/span> p classtext-muted small>/p> /li> /a> /ul> /div> /div> /div> /div> div classcol-sm-12 col-md-6 p-2> div classcard h-100 p-2 w-100 stylemax-width:100%;> div classcard-body> a hrefhttps://docs.arender.io/features/ onmouseoverstartHoverShowAll(this) onmouseoutendHoverShowAll(this) classbutton float-right>Show alli classfas fa-long-arrow-alt-right>/i>/a> h5 classcard-title styleclear:none;>Features/h5> p classcard-text lead mb-4>/p> div classsection-with-sub row w-100 p-2> ul classcol-sm-12 col-md-6 p-2 flex> a classflex w-100 hrefhttps://docs.arender.io/features/accessibility/> li classcard-clickable w-100> i classicon mdi-human-handsdown>/i> span>Accessibility/span> p classtext-muted small>/p> /li> /a> /ul> ul classcol-sm-12 col-md-6 p-2 flex> a classflex w-100 hrefhttps://docs.arender.io/features/annotations/> li classcard-clickable w-100> i classicon mdi-comment-text-outline>/i> span>Annotations/span> p classtext-muted small>/p> /li> /a> /ul> ul classcol-sm-12 col-md-6 p-2 flex> a classflex w-100 hrefhttps://docs.arender.io/features/bookmarks/> li classcard-clickable w-100> i classicon mdi-bookmark-outline>/i> span>Bookmarks/span> p classtext-muted small>/p> /li> /a> /ul> ul classcol-sm-12 col-md-6 p-2 flex> a classflex w-100 hrefhttps://docs.arender.io/features/documentbuilder/> li classcard-clickable w-100> i classicon mdi-scissors-cutting>/i> span>Document Builder/span> p classtext-muted small>/p> /li> /a> /ul> /div> /div> /div> /div> div classcol-sm-12 col-md-12 p-2> div classcard h-100 p-2 w-100 stylemax-width:100%;> div classcard-body> a hrefhttps://docs.arender.io/development/ onmouseoverstartHoverShowAll(this) onmouseoutendHoverShowAll(this) classbutton float-right>Show alli classfas fa-long-arrow-alt-right>/i>/a> h5 classcard-title styleclear:none;>Development/h5> p classcard-text lead mb-4>/p> div classsection-with-sub row w-100 p-2> ul classcol-sm-12 col-md-6 p-2 flex> a classflex w-100 hrefhttps://docs.arender.io/development/connector/> li classcard-clickable w-100> i classicon mdi-file-code>/i> span>Connector/span> p classtext-muted small>/p> /li> /a> /ul> ul classcol-sm-12 col-md-6 p-2 flex> a classflex w-100 hrefhttps://docs.arender.io/development/framework/> li classcard-clickable w-100> i classicon mdi-file-code>/i> span>Framework/span> p classtext-muted small>/p> /li> /a> /ul> ul classcol-sm-12 col-md-6 p-2 flex> a classflex w-100 hrefhttps://docs.arender.io/development/apis/> li classcard-clickable w-100> i classicon mdi-api>/i> span>APIs/span> p classtext-muted small>/p> /li> /a> /ul> /div> /div> /div> /div> div classcol-sm-12 col-md-12 p-2> div classcard card-clickable text-center h-100 pt-3 stylemax-width:100%;> a hrefhttps://docs.arender.io/releases/? classbutton float-right iq-mt-20> div classicon-bg center-block m-auto> i aria-hiddentrue classicon mdi-history>/i> /div> div classcard-body d-flex flex-column mt-0> h5 classcard-title>Releases/h5> p classcard-text text-justify lead>/p> /div> /a>/div> /div> div classcol-sm-12 col-md-12 p-2> div classcard card-clickable text-center h-100 pt-3 stylemax-width:100%;> a hrefhttps://docs.arender.io/v4/? classbutton float-right iq-mt-20> div classicon-bg center-block m-auto> i aria-hiddentrue classicon mdi-book-open-page-variant>/i> /div> div classcard-body d-flex flex-column mt-0> h5 classcard-title>Documentation Version 4/h5> p classcard-text text-justify lead>/p> /div> /a>/div> /div> /div> /div> /div>/div>!-- /topics --> /div> /section>/div>div idback-to-top> a classtop idtop href#top> i classicon mdi-arrow-up-bold-box-outline>/i> /a>/div> footer> div classfooter bg-footer section border-bottom padding-footer-without-news> div classcontainer> div classrow> div classcol-lg-4 col-sm-8 mb-5 mb-lg-0> a classlogo-footer href/>img classbackground-header img-fluid mb-4 srchttps://docs.arender.io/images/Uxopian/UxopianSoftwareLogo.svg altARender | View any document anywhere>/a> /div> div classcol-lg-2 col-md-3 col-sm-4 col-6 mb-5 mb-md-0> h4 classtext-white mb-5 text-uppercase>Company/h4> ul classlist-unstyled> li classmb-3>a classtext-color hrefhttps://www.uxopian.com/en/about-us>About Uxopian Software/a>/li> li classmb-3>a classtext-color hrefhttps://www.uxopian.com/en/contact-us>Contact us/a>/li> /ul> /div> div classcol-lg-2 col-md-3 col-sm-4 col-6 mb-5 mb-md-0> h4 classtext-white mb-5 text-uppercase>Resources/h4> ul classlist-unstyled> li classmb-3>a classtext-color hrefhttps://www.uxopian.com/en/demohub>Free Trial/a>/li> li classmb-3>a classtext-color hrefhttps://www.uxopian.com/blog>Blog/a>/li> li classmb-3>a classtext-color hrefhttps://www.uxopian.com/resources-gallery>Resources gallery/a>/li> /ul> /div> div classcol-lg-2 col-md-3 col-sm-4 col-6 mb-5 mb-md-0> h4 classtext-white mb-5 text-uppercase>Links/h4> ul classlist-unstyled> li classmb-3>a classtext-color hrefhttps://www.uxopian.com/faq>FAQ/a>/li> li classmb-3>a classtext-color hrefhttps://www.uxopian.com/en/releases-lifecycle>Release lifecycle/a>/li> /ul> /div> div classcol-lg-2 col-md-3 col-sm-4 col-6 mb-5 mb-md-0> h4 classtext-white mb-5 text-uppercase>Products/h4> ul classlist-unstyled> li classmb-3>a classtext-color hrefhttps://www.uxopian.com/en/flowerdocsplatform>Flowerdocs/a>/li> li classmb-3>a classtext-color hrefhttps://www.uxopian.com/en/fast2>Fast2/a>/li> li classmb-3>a classtext-color hrefhttps://www.uxopian.com/en/ai>UxopianAI/a>/li> /ul> /div> /div> /div> /div> div classcopyright py-4 bg-footer> div classcontainer> div classrow> div classcol-sm-7 text-sm-left text-center> p classmb-0 no-link>© 2020 ARender. All Rights Reserved. span classmb-0 stylepadding-left: 20px; color: white!important;>a href/legal-notice>Legal notice/a>/span> span classmb-0 stylepadding-left: 20px;>Hugo theme by a hrefhttps://themefisher.com>themefisher/a>/span> /p> /div> div classcol-sm-5 text-sm-right text-center> ul classlist-inline> li classlist-inline-item>a classd-inline-block p-2 hrefhttps://www.linkedin.com/company/uxopiansoftware>i classti-linkedin text-primary>/i>/a>/li> li classlist-inline-item>a classd-inline-block p-2 hrefhttps://www.youtube.com/@Uxopian>i classti-youtube text-primary>/i>/a>/li> /ul> /div> /div> /div> /div>/footer>!-- Google Map API -->!-- Main Script -->script srchttps://docs.arender.io/js/script.min.js>/script>!-- google analitycs -->script> (function (i, s, o, g, r, a, m) { iGoogleAnalyticsObject r; ir ir || function () { (ir.q ir.q || ).push(arguments) }, ir.l 1 * new Date(); a s.createElement(o), m s.getElementsByTagName(o)0; a.async 1; a.src g; m.parentNode.insertBefore(a, m) })(window, document, script, //www.google-analytics.com/analytics.js, ga); ga(create, UA-86567727-5, auto); ga(send, pageview);/script>script> new WOW().init();/script>script> window.onload function () { $(document).ready(function () { $(table).each(function () { var table $(this); var wrapDiv document.createElement(div); document.body.appendChild(wrapDiv); wrapDiv.classList.add(table-overflow); $(this).wrap(wrapDiv); }); }); };/script> script typetext/javascript idhs-script-loader async defer src//js.hs-scripts.com/5356029.js>/script> noscript> img srchttps://ws.zoominfo.com/pixel/61377f852f261d0013f189c5 width1 height1 styledisplay: none; /> /noscript>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]