Note that I also tried adding:
.RunInDirectory(Path.Combine(Directory.GetCurrentDirectory(), "jsreport"))
to the first code block and that didn't help.
Note that I also tried adding:
.RunInDirectory(Path.Combine(Directory.GetCurrentDirectory(), "jsreport"))
to the first code block and that didn't help.
Installed nuget packages local, binary, and aspnetcore.
Added this code to ConfigureServices in Statup.cs:
var localWebServerReportingService = new LocalReporting()
.UseBinary(JsReportBinary.GetBinary())
.Configure(cfg => cfg
.AllowedLocalFilesAccess()
.FileSystemStore()
.BaseUrlAsWorkingDirectory()
)
.AsWebServer()
.Create();
localWebServerReportingService.StartAsync();
services.AddJsReport(localWebServerReportingService);
Here is the code to render the file:
try
{
var viewHtml = await JsReportMvcService.RenderViewToStringAsync(HttpContext, RouteData, "InvoicePdf/InvoicePdf", invoiceGenerationModel);
var report = await JsReportMvcService.RenderAsync(new RenderRequest
{
Template = new Template
{
Recipe = Recipe.ChromePdf,
Engine = Engine.None,
Content = viewHtml,
Chrome = new Chrome
{
Format = "Letter",
MarginTop = "0.5in",
MarginBottom = "0.5in",
MarginLeft = "0.5in",
MarginRight = "0.5in"
}
}
});
var memoryStream = new MemoryStream();
await report.Content.CopyToAsync(memoryStream);
memoryStream.Seek(0, SeekOrigin.Begin);
return memoryStream;
}
catch (Exception e)
{
_logger.LogError("Error generating pdf file!");
_logger.LogError(e.Message);
return null;
}
On my development machine it works fine. On IIS I am getting this error:
"Unable to render template. Timeout Error: pdf generation not completed after 30000ms"
Any ideas?
This worked for me in the Statup.cs file of a .Net Core web application:
var localWebServerReportingService = new LocalReporting()
.UseBinary(JsReportBinary.GetBinary())
.RunInDirectory(Path.Combine(Directory.GetCurrentDirectory(), "jsreport"))
.Configure(cfg => cfg
.AllowedLocalFilesAccess()
.FileSystemStore()
.BaseUrlAsWorkingDirectory()
)
.AsWebServer()
.Create();
localWebServerReportingService.StartAsync();
services.AddJsReport(localWebServerReportingService);