Reputation: 1925
I have a rather complicated html code in the view and the report needs a longer time than the default 30 seconds to generate the structure. I'm using JSReport version 2.7.1. Initially, I tried modifying the jsreport.config.json file from "chrome": { "timeout": 180000 } to a very big number but that did not work.
And so ,I have been trying to extend jsreport timeout and here is where I am at.
HttpContext.JsReportFeature()
.Recipe(Recipe.ChromePdf)
.Configure((r) => r.Template.Chrome = new Chrome
{
Landscape = true,
Format = "Legal",
HeaderTemplate = header,
FooterTemplate = footer,
DisplayHeaderFooter = true,
MarginTop = "95px",
MarginLeft = "20px",
MarginRight = "20px",
MarginBottom = "40px"
}
)
.Configure((r) => r.Options = new jsreport.Types.RenderOptions
{
Timeout = 600000
});
In the above case the styling works but the timeout is not implemented. However if i reverse the order of the configure and put the timeout first and the styling next, the timeout works but not the styling.
I have also tried the below method and even here it's either a case of report loading without the style or timing out with the error "JsReportBinaryException: Error rendering report: starting rendering process..rendering has finished with errors:A critical error occurred while trying to execute the render command (2). Timeout Error: pdf generation not completed after 30000ms (1). caused by error (2):-> stackError: at onCriticalError (D:\snapshot\jsreport\node_modules\jsreport-cli\lib\commands\render.js:302:19) at D:\snapshot\jsreport\node_modules\jsreport-cli\lib\commands\render.js:298:12caused by error (1):-> meta = {"workerTimeout":true,"logged":true}-> stackError: at Timeout. (D:\snapshot\jsreport\node_modules\jsreport-chrome-pdf\lib\conversion.js:293:19) at listOnTimeout (internal/timers.js:549:17) at processTimers (internal/timers.js:492:7)"
HttpContext.JsReportFeature()
.Recipe(Recipe.ChromePdf)
.Configure(cfg =>
{
cfg.Options = new RenderOptions
{
Timeout = 600000
};
cfg.Template.Chrome = new Chrome
{
Landscape = true,
Format = "Legal",
HeaderTemplate = header,
FooterTemplate = footer,
DisplayHeaderFooter = true,
MarginTop = "95px",
MarginLeft = "20px",
MarginRight = "20px",
MarginBottom = "40px",
PrintBackground = true
};
})
Is there a way I can combine both and have both working?
Upvotes: 0
Views: 591
Reputation: 183
as you said your html is rather complicated you can set templatingEngines.timeout and extensions.scripts.timeout in jsreport.config.json
https://jsreport.net/blog/long-reports#timeouts-for-pdf-rendering
Upvotes: 1