<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article Upgrade to Qlik NPrinting June 2020 or newer with modified rendering configuration files in Official Support Articles</title>
    <link>https://community.qlik.com/t5/Official-Support-Articles/Upgrade-to-Qlik-NPrinting-June-2020-or-newer-with-modified/ta-p/1700647</link>
    <description>&lt;BLOCKQUOTE&gt;You must read this article only if you customized the Qlik Sense rendering configuration&amp;nbsp;section of your Qlik NPrinting Engine configuration files (engine.config).&lt;/BLOCKQUOTE&gt;
&lt;P&gt;For default upgrade instructions, see&amp;nbsp;&lt;A href="https://help.qlik.com/en-US/nprinting/May2021/Content/NPrinting/DeployingQVNprinting/Upgrading-Qlik-NPrinting.htm" target="_blank" rel="noopener"&gt;Upgrading Qlik NPrinting&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;FONT color="#339966"&gt;&lt;STRONG&gt;Environment:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H4&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;LI-PRODUCT title="Qlik NPrinting" id="qlikNPrinting"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;&lt;BR /&gt;&lt;LI-PRODUCT title="Qlik Sense Enterprise on Windows" id="qlikSenseEnterpriseWindows"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;&lt;BR /&gt;Modified rendering configuration files (engine.config)&lt;/P&gt;
&lt;P&gt;In NPrinting April 2020 and earlier versions, by default, engine.config settings are stored in &lt;EM&gt;C:\Program Files\NPrintingServer\NPrinting\Engine\engine.config.&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;For example, if you have &lt;EM&gt;uncommented&lt;/EM&gt;&amp;nbsp;any of the following parameters, you must migrate to the new configuration:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;&amp;lt;!-- minimum Sense (QRS) version from which to use printing-live.html mashup page --&amp;gt;
  &amp;lt;!-- &amp;lt;add key="webrenderer-live-mashup-sense-version" value="23.1.0" /&amp;gt; --&amp;gt;

	&amp;lt;!-- minimum number of browser workers --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-min-worker-number" value="0" /&amp;gt; --&amp;gt;

	&amp;lt;!-- maximum number of browser workers --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-max-worker-number" value="cpu%200" /&amp;gt; --&amp;gt;

	&amp;lt;!-- rendering timeout for the overall rendering request, inclusive queueing --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-request-overall-timeout-msec" value="300000" /&amp;gt; --&amp;gt;

	&amp;lt;!-- rendering timeout for the whole render method at the renderer --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-remote-request-timeout-msec" value="60000" /&amp;gt; --&amp;gt;

	&amp;lt;!-- rendering timeout for a JavaScript render method at the renderer --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-remote-request-js-timeout-msec" value="30000" /&amp;gt; --&amp;gt;

&amp;lt;!-- max image dimensions rendered supported by CEF, the final image is upscaled to produce the correct dimensions --&amp;gt;
	&amp;lt;!--
	&amp;lt;add key="webrenderer-max-image-width-px" value="3000" /&amp;gt;
	&amp;lt;add key="webrenderer-max-image-height-px" value="3000" /&amp;gt;
	--&amp;gt;

	&amp;lt;!-- number of binary equal snapshots in a row used to consider a snapshot valid --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-snapshot-equality-threshold" value="3" /&amp;gt; --&amp;gt;

&amp;lt;!-- maximum number of snapshots to take before stopping comparing, the last one is deemed as valid --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-snapshot-max-count" value="5" /&amp;gt; --&amp;gt;

	&amp;lt;!-- how often to ping the Sense server to keep the mashup session alive --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-sense-ping-interval-msec" value="300000" /&amp;gt; --&amp;gt;

	&amp;lt;!-- maximum number of pending requests --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-max-pending-requests" value="1000" /&amp;gt; --&amp;gt;

	&amp;lt;!-- web renderer executable path --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-path" value="lib\rwr\x64\reporting_web_renderer.exe" /&amp;gt; --&amp;gt;

	&amp;lt;!-- web renderer arguments --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-skip-process-start" value="false" /&amp;gt; --&amp;gt;

&amp;lt;!-- webrenderer-grpc-port-scan. True if the grpc channel port need to be set at runtime. False otherwise --&amp;gt;
&amp;lt;!-- When set to True, parameters webrenderer-args grpc-addr and grpc-channel-addr must be set as runtime args --&amp;gt;
&amp;lt;!-- When set to False, parameters webrenderer-args grpc-addr and grpc-channel-addr must be set as static args --&amp;gt;
	&amp;lt;!-- Usefull when Qlik and NPrinting are running in the same machine --&amp;gt;
	&amp;lt;!--&amp;lt;add key="webrenderer-grpc-port-scan" value="false" /&amp;gt;--&amp;gt;

&amp;lt;!-- web renderer arguments. -port arg can be express with {0} (resolved at runtime) or by explicit value -mb=500--&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-args" value="-l=info -grpc-addr=127.0.0.1:51051 -e=1" /&amp;gt; --&amp;gt;
&amp;lt;!-- web renderer options in the form: "opt1=val1;opt2=val2" . -port arg can be express with {0} (resolved at runtime) or by explicit value--&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-options" value="grpc-channel-addr=localhost:51051" /&amp;gt; --&amp;gt;

	&amp;lt;!-- web renderer address of web socket host --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-wshost" value="localhost" /&amp;gt; --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-wsport" value="2727" /&amp;gt; --&amp;gt;

	&amp;lt;!-- mashup page query string parameters --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-mashup-qs" value="logging=net,ws" /&amp;gt; --&amp;gt;

	&amp;lt;!-- web renderer rate limit default 100 requests per second--&amp;gt;
	&amp;lt;!--&amp;lt;add key="webrenderer-max-capacity" value="100" /&amp;gt;--&amp;gt;
	&amp;lt;!--&amp;lt;add key="webrenderer-refill-interval-msec" value="1000" /&amp;gt;--&amp;gt;
  &amp;lt;!--&amp;lt;add key="webrenderer-use-old-mashup" value="true" /&amp;gt;--&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have not edited any of these parameters,&amp;nbsp; you can skip this section above.&lt;/P&gt;
&lt;P&gt;The management of reporting web renderer parameters has been simplified.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The modification consists of two steps:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Parameters have been moved from the Qlik NPrinting Engine to the Qlik NPrinting Scheduler configuration file to ensure that all Qlik NPrinting Engines have uniform behaviour.&lt;/LI&gt;
&lt;LI&gt;Some parameters have been simplified for easier handling.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;This guide covers three topics:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The migration to the new configuration. This is mandatory if you edited the web renderer settings in the Qlik NPrinting &lt;STRONG&gt;engine.config&lt;/STRONG&gt; file.&lt;/LI&gt;
&lt;LI&gt;Simplifying parameter settings (optional).&lt;/LI&gt;
&lt;LI&gt;Editing parameters in the &lt;STRONG&gt;renderer.config&lt;/STRONG&gt; file (for customers editing these settings for the first time).&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Before upgrading&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Before upgrading your installation to&amp;nbsp;Qlik &lt;STRONG&gt;&lt;SPAN&gt;NPrinting&lt;/SPAN&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;STRONG&gt;&lt;SPAN&gt;June 2020 and later versions&lt;/SPAN&gt;&lt;/STRONG&gt;, create backup copies of all your Qlik NPrinting Engine configuration files.&lt;/LI&gt;
&lt;LI&gt;By default, they are stored in&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI-CODE lang="markup"&gt;C:\Program Files\NPrintingServer\NPrinting\Engine\engine.config&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;Migrating the parameters in the NPrinting Engine.config file&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Do the following:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Stop the Qlik NPrinting &lt;STRONG&gt;Scheduler&lt;/STRONG&gt; and &lt;STRONG&gt;Engine&lt;/STRONG&gt; Windows services.&lt;/LI&gt;
&lt;LI&gt;Copy any parameter you have previously set in your&amp;nbsp;Qlik NPrinting Engine configuration files (the &lt;EM&gt;engine.config&lt;/EM&gt;&lt;EM&gt; file of all your Engines)&amp;nbsp;&lt;/EM&gt;into the new file on the Qlik NPrinting Server computer. &lt;EM&gt;&lt;STRONG&gt;Ensure you notice the new formatting in the renderer.config file.&lt;/STRONG&gt; &lt;/EM&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI-CODE lang="markup"&gt;C:\Program Files\NPrintingServer\NPrinting\Scheduler\renderer.config&lt;/LI-CODE&gt;
&lt;OL&gt;
&lt;LI&gt;You may need to open the file in administrator mode.&lt;/LI&gt;
&lt;LI&gt;When editing the strings&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;webrenderer-mashup-qs&amp;nbsp;&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;or&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;webrenderer-args&lt;/EM&gt;&lt;/STRONG&gt;&amp;nbsp;parameters&amp;nbsp; within the &lt;STRONG&gt;renderer.config&lt;/STRONG&gt; file, ensure that the options are separated with a &lt;STRONG&gt;&lt;EM&gt;semicolon&lt;/EM&gt;&lt;/STRONG&gt; as shown in the example below on the right.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="BodyCopy-Qlik"&gt;Reformatting examples:&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;engine.config (previous)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;renderer.config (current)&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-mashup-qs" value="logging=net,&lt;STRONG&gt;ws&amp;amp;amp;&lt;/STRONG&gt;wssecure=1" /&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-mashup-qs" value="logging=net,&lt;STRONG&gt;ws;&lt;/STRONG&gt;wssecure=1" /&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-args" value="-l=info -grpc-addr=127.0.0.1:&lt;STRONG&gt;51051 -e=1&lt;/STRONG&gt;" /&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-args" value="-l=info;-grpc-addr=127.0.0.1:&lt;STRONG&gt;51051;-e=1&lt;/STRONG&gt;" /&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Simplify the parameters after the migration (optional)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;If you edited any of the parameters&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;webrenderer-request-overall-timeout-msec&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;, &lt;EM&gt;webrenderer-remote-request-timeout-msec &lt;/EM&gt;or &lt;EM&gt;webrenderer-remote-request-js-timeout-msec,&lt;/EM&gt;&amp;nbsp;&lt;/STRONG&gt;you can simplify the setting of the timeout by using a single parameter that will set overall timeouts.&lt;/P&gt;
&lt;P&gt;Do the following:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Take the maximum value between &lt;STRONG&gt;&lt;EM&gt;webrenderer-remote-request-timeout-msec&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt; and &lt;EM&gt;webrenderer-remote-request-js-timeout-msec.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Divide this value by 1000 to convert from milliseconds to seconds.&lt;/LI&gt;
&lt;LI&gt;Use the calculated value to set &lt;STRONG&gt;&lt;EM&gt;webrenderer-timeout-sec.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Remove all&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;webrenderer-request-overall-timeout-msec, webrenderer-remote-request-timeout-msec &lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;and&lt;EM&gt; webrenderer-remote-request-js-timeout-msec&lt;/EM&gt;&lt;/STRONG&gt;&amp;nbsp;settings.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Configuration examples:&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE border="1" width="99.93412384716733%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="49.93412384716733%"&gt;
&lt;P&gt;&lt;STRONG&gt;engine.config (April 2020 &amp;amp; earlier versions of NPrinting)&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="50%"&gt;&lt;STRONG&gt;renderer.config (June 2020 &amp;amp; newer versions of&lt;/STRONG&gt;&lt;STRONG&gt; NPrinting)&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="49.93412384716733%"&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-request-overall-timeout-msec" value="300000" /&amp;gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-remote-request-timeout-msec" value="60000" /&amp;gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-remote-request-js-timeout-msec" value="30000" /&amp;gt;&lt;/EM&gt;&lt;/TD&gt;
&lt;TD width="50%"&gt;&lt;EM&gt;&amp;lt;add&amp;nbsp;key="webrenderer-timeout-sec"&amp;nbsp;value="60"&amp;nbsp;/&amp;gt;&amp;nbsp;&lt;/EM&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="49.93412384716733%"&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-request-overall-timeout-msec" value="300000" /&amp;gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-remote-request-timeout-msec" value="60000" /&amp;gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-remote-request-js-timeout-msec" value="90000" /&amp;gt;&lt;/EM&gt;&lt;/TD&gt;
&lt;TD width="50%"&gt;&lt;EM&gt;&amp;lt;add&amp;nbsp;key="webrenderer-timeout-sec"&amp;nbsp;value="90"&amp;nbsp;/&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/EM&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;From NP June 2020 and newer versions&lt;/STRONG&gt; the value settings are now in '&lt;STRONG&gt;seconds&lt;/STRONG&gt;' rather than milliseconds and only 'one' value is needed rather than 'three'&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;NOTE&lt;/STRONG&gt;: Restart the Qlik NPrinting Scheduler and Engine Windows services to enable updated &lt;STRONG&gt;renderer.config&lt;/STRONG&gt; file values&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Editing parameters in the &lt;EM&gt;renderer.config&lt;/EM&gt; file&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The parameters available in&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;C:\Program Files\NPrintingServer\NPrinting\Scheduler\renderer.config&lt;/LI-CODE&gt;
&lt;P&gt;lets you change &lt;EM&gt;t&lt;/EM&gt;wo basic operation settings.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1. Set the web renderer logging level to debug&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;If you want to set the logging level to debug only for the reporting web renderer:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open the&lt;EM&gt; renderer.config&lt;/EM&gt; file.&lt;/LI&gt;
&lt;LI&gt;Set the value to &lt;EM&gt;&amp;lt;add&amp;nbsp;key="webrenderer-logs"&amp;nbsp;value="verbose"&amp;nbsp;/&amp;gt;&lt;/EM&gt;.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;This value is automatically set when the Qlik NPrinting Engine is set to debug log level in accordance with&amp;nbsp;&lt;A href="https://help.qlik.com/en-US/nprinting/June2020/Content/NPrinting/AdministeringQVNprinting/Logging.htm" target="_blank" rel="noopener"&gt;Logging&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2. Increase the rendering timeouts&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The rendering timeout is set by default to 30 seconds. This can be increased if there are timeout errors due to charts that render slowly.&lt;/P&gt;
&lt;P&gt;Timeouts errors appear in the Qlik NPrinting Engine logs as &lt;EM&gt;CefRenderingException&lt;/EM&gt; with the error code&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;EM&gt;SENSE_JS_RENDER_TIMEOUT&lt;/EM&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;EM&gt;ErrorMaxJsAttemptsExceededResult&lt;/EM&gt; &lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;EM&gt;ERROR_RENDER_TIMEOUT_RESULT&lt;/EM&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To verify that the issue is generated by a chart that is slow to render, check the chart load time in the Qlik Sense app.&lt;/P&gt;
&lt;P&gt;To increase the rendering timeout:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open the&lt;EM&gt; renderer.config&lt;/EM&gt; file.&lt;/LI&gt;
&lt;LI&gt;Uncomment the&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;webrenderer-timeout-sec&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;option.&lt;/LI&gt;
&lt;LI&gt;Set the desired value in seconds. For example, to set the timeout to 180 seconds, change the parameter to: &lt;STRONG&gt;&lt;EM&gt;&amp;lt;add&amp;nbsp;key="webrenderer-timeout-sec"&amp;nbsp;value="180"&amp;nbsp;/&amp;gt;.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;</description>
    <pubDate>Tue, 24 May 2022 18:45:36 GMT</pubDate>
    <dc:creator>Ruggero_Piccoli</dc:creator>
    <dc:date>2022-05-24T18:45:36Z</dc:date>
    <item>
      <title>Upgrade to Qlik NPrinting June 2020 or newer with modified rendering configuration files</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/Upgrade-to-Qlik-NPrinting-June-2020-or-newer-with-modified/ta-p/1700647</link>
      <description>&lt;BLOCKQUOTE&gt;You must read this article only if you customized the Qlik Sense rendering configuration&amp;nbsp;section of your Qlik NPrinting Engine configuration files (engine.config).&lt;/BLOCKQUOTE&gt;
&lt;P&gt;For default upgrade instructions, see&amp;nbsp;&lt;A href="https://help.qlik.com/en-US/nprinting/May2021/Content/NPrinting/DeployingQVNprinting/Upgrading-Qlik-NPrinting.htm" target="_blank" rel="noopener"&gt;Upgrading Qlik NPrinting&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;FONT color="#339966"&gt;&lt;STRONG&gt;Environment:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H4&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;LI-PRODUCT title="Qlik NPrinting" id="qlikNPrinting"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;&lt;BR /&gt;&lt;LI-PRODUCT title="Qlik Sense Enterprise on Windows" id="qlikSenseEnterpriseWindows"&gt;&lt;/LI-PRODUCT&gt;&amp;nbsp;&lt;BR /&gt;Modified rendering configuration files (engine.config)&lt;/P&gt;
&lt;P&gt;In NPrinting April 2020 and earlier versions, by default, engine.config settings are stored in &lt;EM&gt;C:\Program Files\NPrintingServer\NPrinting\Engine\engine.config.&lt;/EM&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;For example, if you have &lt;EM&gt;uncommented&lt;/EM&gt;&amp;nbsp;any of the following parameters, you must migrate to the new configuration:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;&amp;lt;!-- minimum Sense (QRS) version from which to use printing-live.html mashup page --&amp;gt;
  &amp;lt;!-- &amp;lt;add key="webrenderer-live-mashup-sense-version" value="23.1.0" /&amp;gt; --&amp;gt;

	&amp;lt;!-- minimum number of browser workers --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-min-worker-number" value="0" /&amp;gt; --&amp;gt;

	&amp;lt;!-- maximum number of browser workers --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-max-worker-number" value="cpu%200" /&amp;gt; --&amp;gt;

	&amp;lt;!-- rendering timeout for the overall rendering request, inclusive queueing --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-request-overall-timeout-msec" value="300000" /&amp;gt; --&amp;gt;

	&amp;lt;!-- rendering timeout for the whole render method at the renderer --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-remote-request-timeout-msec" value="60000" /&amp;gt; --&amp;gt;

	&amp;lt;!-- rendering timeout for a JavaScript render method at the renderer --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-remote-request-js-timeout-msec" value="30000" /&amp;gt; --&amp;gt;

&amp;lt;!-- max image dimensions rendered supported by CEF, the final image is upscaled to produce the correct dimensions --&amp;gt;
	&amp;lt;!--
	&amp;lt;add key="webrenderer-max-image-width-px" value="3000" /&amp;gt;
	&amp;lt;add key="webrenderer-max-image-height-px" value="3000" /&amp;gt;
	--&amp;gt;

	&amp;lt;!-- number of binary equal snapshots in a row used to consider a snapshot valid --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-snapshot-equality-threshold" value="3" /&amp;gt; --&amp;gt;

&amp;lt;!-- maximum number of snapshots to take before stopping comparing, the last one is deemed as valid --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-snapshot-max-count" value="5" /&amp;gt; --&amp;gt;

	&amp;lt;!-- how often to ping the Sense server to keep the mashup session alive --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-sense-ping-interval-msec" value="300000" /&amp;gt; --&amp;gt;

	&amp;lt;!-- maximum number of pending requests --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-max-pending-requests" value="1000" /&amp;gt; --&amp;gt;

	&amp;lt;!-- web renderer executable path --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-path" value="lib\rwr\x64\reporting_web_renderer.exe" /&amp;gt; --&amp;gt;

	&amp;lt;!-- web renderer arguments --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-skip-process-start" value="false" /&amp;gt; --&amp;gt;

&amp;lt;!-- webrenderer-grpc-port-scan. True if the grpc channel port need to be set at runtime. False otherwise --&amp;gt;
&amp;lt;!-- When set to True, parameters webrenderer-args grpc-addr and grpc-channel-addr must be set as runtime args --&amp;gt;
&amp;lt;!-- When set to False, parameters webrenderer-args grpc-addr and grpc-channel-addr must be set as static args --&amp;gt;
	&amp;lt;!-- Usefull when Qlik and NPrinting are running in the same machine --&amp;gt;
	&amp;lt;!--&amp;lt;add key="webrenderer-grpc-port-scan" value="false" /&amp;gt;--&amp;gt;

&amp;lt;!-- web renderer arguments. -port arg can be express with {0} (resolved at runtime) or by explicit value -mb=500--&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-args" value="-l=info -grpc-addr=127.0.0.1:51051 -e=1" /&amp;gt; --&amp;gt;
&amp;lt;!-- web renderer options in the form: "opt1=val1;opt2=val2" . -port arg can be express with {0} (resolved at runtime) or by explicit value--&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-options" value="grpc-channel-addr=localhost:51051" /&amp;gt; --&amp;gt;

	&amp;lt;!-- web renderer address of web socket host --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-wshost" value="localhost" /&amp;gt; --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-wsport" value="2727" /&amp;gt; --&amp;gt;

	&amp;lt;!-- mashup page query string parameters --&amp;gt;
	&amp;lt;!-- &amp;lt;add key="webrenderer-mashup-qs" value="logging=net,ws" /&amp;gt; --&amp;gt;

	&amp;lt;!-- web renderer rate limit default 100 requests per second--&amp;gt;
	&amp;lt;!--&amp;lt;add key="webrenderer-max-capacity" value="100" /&amp;gt;--&amp;gt;
	&amp;lt;!--&amp;lt;add key="webrenderer-refill-interval-msec" value="1000" /&amp;gt;--&amp;gt;
  &amp;lt;!--&amp;lt;add key="webrenderer-use-old-mashup" value="true" /&amp;gt;--&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have not edited any of these parameters,&amp;nbsp; you can skip this section above.&lt;/P&gt;
&lt;P&gt;The management of reporting web renderer parameters has been simplified.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The modification consists of two steps:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Parameters have been moved from the Qlik NPrinting Engine to the Qlik NPrinting Scheduler configuration file to ensure that all Qlik NPrinting Engines have uniform behaviour.&lt;/LI&gt;
&lt;LI&gt;Some parameters have been simplified for easier handling.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;This guide covers three topics:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The migration to the new configuration. This is mandatory if you edited the web renderer settings in the Qlik NPrinting &lt;STRONG&gt;engine.config&lt;/STRONG&gt; file.&lt;/LI&gt;
&lt;LI&gt;Simplifying parameter settings (optional).&lt;/LI&gt;
&lt;LI&gt;Editing parameters in the &lt;STRONG&gt;renderer.config&lt;/STRONG&gt; file (for customers editing these settings for the first time).&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Before upgrading&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Before upgrading your installation to&amp;nbsp;Qlik &lt;STRONG&gt;&lt;SPAN&gt;NPrinting&lt;/SPAN&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;STRONG&gt;&lt;SPAN&gt;June 2020 and later versions&lt;/SPAN&gt;&lt;/STRONG&gt;, create backup copies of all your Qlik NPrinting Engine configuration files.&lt;/LI&gt;
&lt;LI&gt;By default, they are stored in&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI-CODE lang="markup"&gt;C:\Program Files\NPrintingServer\NPrinting\Engine\engine.config&lt;/LI-CODE&gt;
&lt;P&gt;&lt;STRONG&gt;Migrating the parameters in the NPrinting Engine.config file&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Do the following:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Stop the Qlik NPrinting &lt;STRONG&gt;Scheduler&lt;/STRONG&gt; and &lt;STRONG&gt;Engine&lt;/STRONG&gt; Windows services.&lt;/LI&gt;
&lt;LI&gt;Copy any parameter you have previously set in your&amp;nbsp;Qlik NPrinting Engine configuration files (the &lt;EM&gt;engine.config&lt;/EM&gt;&lt;EM&gt; file of all your Engines)&amp;nbsp;&lt;/EM&gt;into the new file on the Qlik NPrinting Server computer. &lt;EM&gt;&lt;STRONG&gt;Ensure you notice the new formatting in the renderer.config file.&lt;/STRONG&gt; &lt;/EM&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI-CODE lang="markup"&gt;C:\Program Files\NPrintingServer\NPrinting\Scheduler\renderer.config&lt;/LI-CODE&gt;
&lt;OL&gt;
&lt;LI&gt;You may need to open the file in administrator mode.&lt;/LI&gt;
&lt;LI&gt;When editing the strings&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;webrenderer-mashup-qs&amp;nbsp;&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;or&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;webrenderer-args&lt;/EM&gt;&lt;/STRONG&gt;&amp;nbsp;parameters&amp;nbsp; within the &lt;STRONG&gt;renderer.config&lt;/STRONG&gt; file, ensure that the options are separated with a &lt;STRONG&gt;&lt;EM&gt;semicolon&lt;/EM&gt;&lt;/STRONG&gt; as shown in the example below on the right.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="BodyCopy-Qlik"&gt;Reformatting examples:&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;engine.config (previous)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;renderer.config (current)&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-mashup-qs" value="logging=net,&lt;STRONG&gt;ws&amp;amp;amp;&lt;/STRONG&gt;wssecure=1" /&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-mashup-qs" value="logging=net,&lt;STRONG&gt;ws;&lt;/STRONG&gt;wssecure=1" /&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-args" value="-l=info -grpc-addr=127.0.0.1:&lt;STRONG&gt;51051 -e=1&lt;/STRONG&gt;" /&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-args" value="-l=info;-grpc-addr=127.0.0.1:&lt;STRONG&gt;51051;-e=1&lt;/STRONG&gt;" /&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Simplify the parameters after the migration (optional)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;If you edited any of the parameters&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;webrenderer-request-overall-timeout-msec&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;, &lt;EM&gt;webrenderer-remote-request-timeout-msec &lt;/EM&gt;or &lt;EM&gt;webrenderer-remote-request-js-timeout-msec,&lt;/EM&gt;&amp;nbsp;&lt;/STRONG&gt;you can simplify the setting of the timeout by using a single parameter that will set overall timeouts.&lt;/P&gt;
&lt;P&gt;Do the following:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Take the maximum value between &lt;STRONG&gt;&lt;EM&gt;webrenderer-remote-request-timeout-msec&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt; and &lt;EM&gt;webrenderer-remote-request-js-timeout-msec.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Divide this value by 1000 to convert from milliseconds to seconds.&lt;/LI&gt;
&lt;LI&gt;Use the calculated value to set &lt;STRONG&gt;&lt;EM&gt;webrenderer-timeout-sec.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Remove all&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;webrenderer-request-overall-timeout-msec, webrenderer-remote-request-timeout-msec &lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;and&lt;EM&gt; webrenderer-remote-request-js-timeout-msec&lt;/EM&gt;&lt;/STRONG&gt;&amp;nbsp;settings.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Configuration examples:&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE border="1" width="99.93412384716733%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="49.93412384716733%"&gt;
&lt;P&gt;&lt;STRONG&gt;engine.config (April 2020 &amp;amp; earlier versions of NPrinting)&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="50%"&gt;&lt;STRONG&gt;renderer.config (June 2020 &amp;amp; newer versions of&lt;/STRONG&gt;&lt;STRONG&gt; NPrinting)&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="49.93412384716733%"&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-request-overall-timeout-msec" value="300000" /&amp;gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-remote-request-timeout-msec" value="60000" /&amp;gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-remote-request-js-timeout-msec" value="30000" /&amp;gt;&lt;/EM&gt;&lt;/TD&gt;
&lt;TD width="50%"&gt;&lt;EM&gt;&amp;lt;add&amp;nbsp;key="webrenderer-timeout-sec"&amp;nbsp;value="60"&amp;nbsp;/&amp;gt;&amp;nbsp;&lt;/EM&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="49.93412384716733%"&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-request-overall-timeout-msec" value="300000" /&amp;gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-remote-request-timeout-msec" value="60000" /&amp;gt;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;lt;add key="webrenderer-remote-request-js-timeout-msec" value="90000" /&amp;gt;&lt;/EM&gt;&lt;/TD&gt;
&lt;TD width="50%"&gt;&lt;EM&gt;&amp;lt;add&amp;nbsp;key="webrenderer-timeout-sec"&amp;nbsp;value="90"&amp;nbsp;/&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/EM&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;From NP June 2020 and newer versions&lt;/STRONG&gt; the value settings are now in '&lt;STRONG&gt;seconds&lt;/STRONG&gt;' rather than milliseconds and only 'one' value is needed rather than 'three'&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;NOTE&lt;/STRONG&gt;: Restart the Qlik NPrinting Scheduler and Engine Windows services to enable updated &lt;STRONG&gt;renderer.config&lt;/STRONG&gt; file values&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Editing parameters in the &lt;EM&gt;renderer.config&lt;/EM&gt; file&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The parameters available in&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;C:\Program Files\NPrintingServer\NPrinting\Scheduler\renderer.config&lt;/LI-CODE&gt;
&lt;P&gt;lets you change &lt;EM&gt;t&lt;/EM&gt;wo basic operation settings.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1. Set the web renderer logging level to debug&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;If you want to set the logging level to debug only for the reporting web renderer:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open the&lt;EM&gt; renderer.config&lt;/EM&gt; file.&lt;/LI&gt;
&lt;LI&gt;Set the value to &lt;EM&gt;&amp;lt;add&amp;nbsp;key="webrenderer-logs"&amp;nbsp;value="verbose"&amp;nbsp;/&amp;gt;&lt;/EM&gt;.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;This value is automatically set when the Qlik NPrinting Engine is set to debug log level in accordance with&amp;nbsp;&lt;A href="https://help.qlik.com/en-US/nprinting/June2020/Content/NPrinting/AdministeringQVNprinting/Logging.htm" target="_blank" rel="noopener"&gt;Logging&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2. Increase the rendering timeouts&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The rendering timeout is set by default to 30 seconds. This can be increased if there are timeout errors due to charts that render slowly.&lt;/P&gt;
&lt;P&gt;Timeouts errors appear in the Qlik NPrinting Engine logs as &lt;EM&gt;CefRenderingException&lt;/EM&gt; with the error code&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;EM&gt;SENSE_JS_RENDER_TIMEOUT&lt;/EM&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;EM&gt;ErrorMaxJsAttemptsExceededResult&lt;/EM&gt; &lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;EM&gt;ERROR_RENDER_TIMEOUT_RESULT&lt;/EM&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To verify that the issue is generated by a chart that is slow to render, check the chart load time in the Qlik Sense app.&lt;/P&gt;
&lt;P&gt;To increase the rendering timeout:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open the&lt;EM&gt; renderer.config&lt;/EM&gt; file.&lt;/LI&gt;
&lt;LI&gt;Uncomment the&amp;nbsp;&lt;STRONG&gt;&lt;EM&gt;webrenderer-timeout-sec&lt;/EM&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;option.&lt;/LI&gt;
&lt;LI&gt;Set the desired value in seconds. For example, to set the timeout to 180 seconds, change the parameter to: &lt;STRONG&gt;&lt;EM&gt;&amp;lt;add&amp;nbsp;key="webrenderer-timeout-sec"&amp;nbsp;value="180"&amp;nbsp;/&amp;gt;.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;</description>
      <pubDate>Tue, 24 May 2022 18:45:36 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/Upgrade-to-Qlik-NPrinting-June-2020-or-newer-with-modified/ta-p/1700647</guid>
      <dc:creator>Ruggero_Piccoli</dc:creator>
      <dc:date>2022-05-24T18:45:36Z</dc:date>
    </item>
  </channel>
</rss>

