Browser stucked and not responding while rendering 5000 table rows in chrome-pdf

  • jsreport.config.json :

      "httpPort": 3333,
      "store": {
        "provider": "fs"
      "blobStorage": {
        "provider": "fs"
      "logger": {
        "console": {
          "transport": "console",
          "level": "debug"
      "allowLocalFilesAccess": false,
      "reportTimeout": 600000,
      "templatingEngines": {
        "strategy": "http-server"
      "extensions": {
        "authentication": {
          "cookieSession": {},
          "admin": {
            "username": "admin",
            "password": "password"
          "enabled": false
        "scripts": {
          "strategy": "http-server"


    {#asset gridTemplate.css @encoding=utf8}
    {{if data}}
    	{{if drillDownPfdHearder.length }}
    		<ul class="drillHeader p-2 ">
    			{{for drillDownPfdHearder}}
    				<li><span class="font-Bold">{{:tabLabel}} :</span> {{:tabName}}</li>
    	<div class="d-flex w-100">
    		<table style="width: {{:tableWidth}}%" class="table table-bordered">
    				{{for columnHeaderslst}}
    					<tr >
    						{{for : }}
    							<th scope="col" style="{{if colspan <= 1}}width: {{:columnWidth}}%{{/if}}" rowspan="{{:rowspan}}" colspan="{{:colspan}}">{{:caption}}</th>
    				{{for gridDataSet}}
    						{{for : }}
    							<td class="{{:class}}">{{:value}}</td>
    	<div class="d-flex justify-content-center font-18">
    		No Records Found

  • Please elaborate... Does it work with fewer rows?
    What does it mean browser hanged, do you invoke the rendering from browser?
    Please share the jsreport server logs.

  • Yeah it is work with the fewer rows. But more than 5000 rows the browser is stuck and not responding. yes, i invoked the rendering from browser.

    log Details:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation. All rights reserved.


    D:>cd jsreport_sample

    D:\jsreport_sample>cd JSREPORT_NPM

    D:\jsreport_sample\JSREPORT_NPM>jsreport start
    2021-03-31T06:34:26.245Z - info: Initializing jsreport@2.11.0 in development mod
    e using configuration file: jsreport.config.json
    2021-03-31T06:34:26.249Z - info: Searching for available extensions in D:\jsrepo
    2021-03-31T06:34:26.271Z - info: Extensions location cache contains up to date i
    nformation, skipping crawling in D:\jsreport_sample\JSREPORT_NPM
    2021-03-31T06:34:26.297Z - info: Found 35 extensions
    2021-03-31T06:34:27.025Z - debug: Writing extension locations cache to C:\Users
    2021-03-31T06:34:27.027Z - debug: Discovered 35 extensions
    2021-03-31T06:34:27.119Z - info: Setting http-server strategy for rendering
    2021-03-31T06:34:27.377Z - debug: Extension authentication@2.6.1 is disabled, sk
    2021-03-31T06:34:27.378Z - info: Using extension cli@2.2.5
    2021-03-31T06:34:27.401Z - info: Using extension debug@2.1.3
    2021-03-31T06:34:27.416Z - info: Using extension express@2.8.1
    2021-03-31T06:34:27.990Z - info: Using extension freeze@2.0.0
    2021-03-31T06:34:27.993Z - info: Using extension handlebars@2.1.0
    2021-03-31T06:34:28.002Z - info: Using extension import-export@2.1.1
    2021-03-31T06:34:28.213Z - info: Using extension jsrender@2.1.1
    2021-03-31T06:34:28.214Z - info: Using extension tags@2.5.0
    2021-03-31T06:34:28.218Z - info: Using extension templates@2.4.0
    2021-03-31T06:34:28.224Z - info: Using extension authorization@2.4.0
    2021-03-31T06:34:28.240Z - debug: Extension authorization@2.4.0 was disabled
    2021-03-31T06:34:28.241Z - info: Using extension base@2.0.2
    2021-03-31T06:34:28.243Z - info: Using extension browser-client@2.2.2
    2021-03-31T06:34:28.255Z - info: Using extension child-templates@1.4.0
    2021-03-31T06:34:28.274Z - info: Using extension chrome-pdf@1.10.0
    2021-03-31T06:34:28.548Z - debug: Chrome strategy is dedicated-process
    2021-03-31T06:34:28.549Z - info: Using extension data@2.4.0
    2021-03-31T06:34:28.551Z - info: Using extension docx@2.9.0
    2021-03-31T06:34:28.557Z - info: Using extension fs-store@2.9.1
    2021-03-31T06:34:29.075Z - info: Using extension licensing@2.2.3
    2021-03-31T06:34:29.081Z - info: Using extension pdf-utils@1.10.1
    2021-03-31T06:34:29.389Z - info: Using extension pptx@0.7.0
    2021-03-31T06:34:29.406Z - info: Using extension reports@2.5.1
    2021-03-31T06:34:29.426Z - info: Using extension static-pdf@0.4.0
    2021-03-31T06:34:29.443Z - info: Using extension studio@2.10.1
    2021-03-31T06:34:29.652Z - debug: studio request logs are enabled (flush interva
    l: 2000)
    2021-03-31T06:34:29.655Z - info: Using extension text@2.0.0
    2021-03-31T06:34:29.660Z - info: Using extension version-control@1.6.0
    2021-03-31T06:34:30.003Z - info: Using extension assets@1.7.0
    2021-03-31T06:34:30.026Z - info: Using extension html-to-xlsx@2.8.3
    2021-03-31T06:34:31.338Z - info: html-to-xlsx detected chrome as available html
    2021-03-31T06:34:31.339Z - info: Using extension scheduling@2.5.0
    2021-03-31T06:34:31.483Z - info: Using extension scripts@2.6.0
    2021-03-31T06:34:31.493Z - info: Using extension studio-theme-dark@0.3.0
    2021-03-31T06:34:31.503Z - info: Using extension xlsx@2.5.0
    2021-03-31T06:34:32.023Z - info: Using extension public-templates@2.2.0
    2021-03-31T06:34:32.025Z - debug: Extension public-templates@2.2.0 was disabled
    2021-03-31T06:34:32.025Z - info: Using extension resources@2.1.0
    2021-03-31T06:34:32.027Z - info: Using extension sample-template@2.6.1
    2021-03-31T06:34:32.036Z - info: Using general timeout for rendering (reportTime
    out: 600000)
    2021-03-31T06:34:32.036Z - info: Using fs provider for template store.
    2021-03-31T06:34:32.045Z - info: fs store is persisting using fs
    2021-03-31T06:34:32.047Z - info: fs store is synchronizing using fs
    2021-03-31T06:34:32.069Z - info: fs store is loading data
    2021-03-31T06:34:32.201Z - debug: fs store sync is configured to use polling for
    files watcher
    2021-03-31T06:34:32.249Z - info: fs store is initialized successfully
    2021-03-31T06:34:32.258Z - debug: studio default theme is: light
    2021-03-31T06:34:32.269Z - info: Creating default express app.
    2021-03-31T06:34:32.398Z - info: jsreport server successfully started on http po
    rt: 3333
    2021-03-31T06:34:32.400Z - info: fs store emits sockets to synchronize underlyin
    g changes with studio
    2021-03-31T06:34:32.469Z - info: Verifying license key free
    2021-03-31T06:34:33.578Z - info: Using enterprise trial license
    2021-03-31T06:34:33.583Z - debug: Creating samples is disabled
    2021-03-31T06:34:33.585Z - info: reporter initialized
    2021-03-31T06:34:39.136Z - debug: OData query on templates
    2021-03-31T06:34:39.139Z - debug: OData query on folders
    2021-03-31T06:34:39.148Z - debug: OData query on tags
    2021-03-31T06:34:39.149Z - debug: OData query on data
    2021-03-31T06:34:39.155Z - debug: OData query on assets
    2021-03-31T06:34:39.164Z - debug: OData query on scripts
    2021-03-31T06:34:39.166Z - debug: OData query on xlsxTemplates
    2021-03-31T06:34:39.173Z - debug: OData query on schedules
    2021-03-31T06:34:39.184Z - debug: OData query on settings
    2021-03-31T06:34:39.308Z - debug: OData query on templates
    2021-03-31T06:35:21.972Z - info: Starting rendering request 1 (user: null)
    2021-03-31T06:35:21.976Z - info: Rendering template { name: gridhtml, recipe: ht
    ml-with-browser-client, engine: jsrender, preview: false }
    2021-03-31T06:35:21.978Z - debug: Inline data specified.
    2021-03-31T06:35:21.979Z - debug: Resources not defined for this template.
    2021-03-31T06:35:21.983Z - debug: Base url not specified, skipping its injection
    2021-03-31T06:35:21.992Z - debug: Replaced assets ["gridTemplate.css"]
    2021-03-31T06:35:21.993Z - debug: Rendering engine jsrender using http-server st
    2021-03-31T06:35:23.168Z - debug: Compiled template not found in the cache, comp
    2021-03-31T06:35:23.211Z - debug: Executing recipe html-with-browser-client
    2021-03-31T06:35:23.248Z - debug: Skipping pdf utils processing because template
    is rendered with non-pdf recipe.
    2021-03-31T06:35:23.250Z - info: Rendering request 1 finished in 1278 ms
    2021-03-31T06:35:23.251Z - debug: Skipping storing report.
    2021-03-31T06:36:04.788Z - debug: OData update on templates
    2021-03-31T06:36:04.834Z - debug: OData query on templates
    2021-03-31T06:36:06.111Z - debug: OData query on templates
    2021-03-31T06:36:16.934Z - info: Starting rendering request 2 (user: null)
    2021-03-31T06:36:16.958Z - info: Rendering template { name: gridhtml, recipe: ch
    rome-pdf, engine: jsrender, preview: false }
    2021-03-31T06:36:16.960Z - debug: Inline data specified.
    2021-03-31T06:36:16.960Z - debug: Resources not defined for this template.
    2021-03-31T06:36:16.986Z - debug: Base url not specified, skipping its injection
    2021-03-31T06:36:16.991Z - debug: Replaced assets ["gridTemplate.css"]
    2021-03-31T06:36:16.992Z - debug: Rendering engine jsrender using http-server st
    2021-03-31T06:36:17.730Z - debug: Taking compiled template from engine cache
    2021-03-31T06:36:17.780Z - debug: Executing recipe chrome-pdf
    2021-03-31T06:36:18.411Z - debug: Converting with chrome HeadlessChrome/79.0.394
    5.0 using dedicated-process strategy
    2021-03-31T06:36:19.881Z - debug: Page request: GET (document) file:///C:/Users/
    2021-03-31T06:36:29.972Z - debug: Page request finished: GET (document) file:///
    2021-03-31T06:36:30.747Z - debug: Running chrome with params {"printBackground":
    2021-03-31T06:44:09.977Z - info: pdf-utils is starting pdf processing
    2021-03-31T06:44:31.396Z - debug: pdf-utils detected 1 pdf operation(s) to proce
    2021-03-31T06:44:31.404Z - debug: pdf-utils running pdf operation merge
    2021-03-31T06:44:31.440Z - info: Starting rendering request 3 (user: null)
    2021-03-31T06:44:31.443Z - info: Rendering template { name: header-footer, recip
    e: chrome-pdf, engine: jsrender, preview: false }
    2021-03-31T06:44:31.444Z - debug: Inline data specified.
    2021-03-31T06:44:31.444Z - debug: Resources not defined for this template.
    2021-03-31T06:44:31.463Z - debug: Base url not specified, skipping its injection
    2021-03-31T06:44:31.492Z - debug: Replaced assets ["header-footer.css","logo-log
    2021-03-31T06:44:31.493Z - debug: Rendering engine jsrender using http-server st
    2021-03-31T06:44:50.901Z - debug: Compiled template not found in the cache, comp
    2021-03-31T06:44:51.378Z - debug: Executing recipe chrome-pdf
    2021-03-31T06:44:56.077Z - debug: Converting with chrome HeadlessChrome/79.0.394
    5.0 using dedicated-process strategy
    2021-03-31T06:44:58.366Z - debug: Page request: GET (document) file:///C:/Users/
    2021-03-31T06:44:58.457Z - debug: Page request: GET (image) data:image/png;base6
    2021-03-31T06:44:58.513Z - debug: Page request finished: GET (image) 200 data:im
    2021-03-31T06:44:58.514Z - debug: Page request: GET (image) data:image/png;base6
    2021-03-31T06:44:58.514Z - debug: Page request finished: GET (image) 200 data:im
    2021-03-31T06:45:05.067Z - debug: Page request finished: GET (document) file:///
    2021-03-31T06:45:05.268Z - debug: Running chrome with params {"printBackground":
    2021-03-31T06:45:10.543Z - info: Rendering request 3 finished in 39103 ms
    2021-03-31T06:45:10.544Z - debug: Skipping storing report.
    2021-03-31T06:45:15.720Z - debug: pdf-utils postproces start
    2021-03-31T06:45:15.723Z - debug: pdf-utils postproces end
    2021-03-31T06:45:15.739Z - info: pdf-utils pdf processing was finished
    2021-03-31T06:45:15.745Z - info: Rendering request 2 finished in 538811 ms
    2021-03-31T06:45:15.746Z - debug: Skipping storing report.

    Finally, the report never rendered.

  • Based on the server log, the report finished rendering after ~9 minutes.
    I don't know how are you handling the rendering from the client-side in the browser.
    Maybe it fails to display such a big document.

  • Thanks for ur reply...

    I'm rendered by using the jsreport browser Client.

    let request = {
                  template: {
                    "shortid": objData.groupingReport ? this.orientation ? "qzy1bZ0a7a" : "bRxLQHSj1t" :
                      this.orientation ? "I1pmHx-Z-L" : "HIseNIH5dr",
                    "pdfMeta": {
                      "title": this.maintainData['title']
                  data: {
                    "title": this.maintainData['title'],
                    "columnHeaderslst": !isNullOrUndefined(objData) ? objData.colArrayHeader : '',
                    "gridDataSet": objData.groupingReport ? gArr : arr,
                    "formValue": !isNullOrUndefined(this.filterForm) ? this.filterForm.getRawValue() : {},
                    "dateVal": filterPrompt,
                    "tableWidth": !isNullOrUndefined(widthFlag) ? widthFlag : '',
                    "data": dataAvailable,
                    "drillDownPfdHearder": drillDownPfdHearder,
                    "maker": localStorage.getItem('User_Name'),
                    "clientImg": true
    jsreport.renderAsync(request).then(function (res) {
                    let placeholder = document.getElementById('reportPlaceholder')
                    let iframe = document.createElement('iframe');
                    iframe.src = res.toDataURI();
           = '100%'
           = '100%'
                    while (placeholder.firstChild) {
                  }).catch(function (err) {

  • Please check this in the documentation.
    Browsers have problems handling big URI. Look on the toObjectURL or toBlob.

Log in to reply

Looks like your connection to jsreport forum was lost, please wait while we try to reconnect.