Установлены пакеты nuget local, binary и aspnetcore.
Добавлен этот код для ConfigureServices в Statup.cs:
var localWebServerReportingService = new LocalReporting()
.UseBinary(JsReportBinary.GetBinary())
.Configure(cfg => cfg
.AllowedLocalFilesAccess()
.FileSystemStore()
.BaseUrlAsWorkingDirectory()
)
.AsWebServer()
.Create();
localWebServerReportingService.StartAsync();
services.AddJsReport(localWebServerReportingService);
Вот код для рендеринга файла:
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;
}
На моей машине для разработки все работает нормально.В IIS я получаю эту ошибку:
"Невозможно отобразить шаблон. Ошибка тайм-аута: генерация PDF не завершена после 30000 мс"
Я также попытался добавить следующее в первый блок, и это неt help:
.RunInDirectory(Path.Combine(Directory.GetCurrentDirectory(), "jsreport"))
Есть идеи?