From dafb2b6e44858438ef8cfc0ad09639e3baa1e389 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 24 Aug 2020 22:18:02 +0000 Subject: [PATCH] --- .../AyaNova/Controllers/ReportController.cs | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/server/AyaNova/Controllers/ReportController.cs b/server/AyaNova/Controllers/ReportController.cs index 75390de0..5c32acff 100644 --- a/server/AyaNova/Controllers/ReportController.cs +++ b/server/AyaNova/Controllers/ReportController.cs @@ -74,9 +74,9 @@ namespace AyaNova.Api.Controllers //--------------------------------------------------------------------- - [HttpGet("render")] + [HttpGet("poc")] [AllowAnonymous] - public async Task GetPdfReport([FromRoute] string url) + public async Task ProofOfConcept([FromRoute] string url) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); @@ -101,10 +101,20 @@ namespace AyaNova.Api.Controllers @page :first { margin: 2cm; - }"; + } + + .ay-red { + color:red; + } + .ay-blue { + color:blue; + } + "; //sample template - var reportTemplate = "'
{{#with person}}{{firstname}} {{aycaps lastname}}{{/with}}
'"; + //var reportTemplate = "'
{{#with person}}{{firstname}} {{aycaps lastname}}{{/with}}
'"; + var reportTemplate = "'test title

Test page top

A blue paragraph

{{#with person}}{{firstname}} {{aycaps lastname}}{{/with}}
'"; + //data object var reportData = "{ person: { firstname: 'Tyler', lastname: 'Mott' } }"; @@ -116,6 +126,9 @@ namespace AyaNova.Api.Controllers //test add helpers await page.AddScriptTagAsync(new AddTagOptions() { Path = Path.Combine(ReportJSFolderPath, "ay-hb-helpers.js") }); + + + //execute to add to handlebars await page.EvaluateExpressionAsync("ayRegisterHelpers();"); @@ -123,10 +136,15 @@ namespace AyaNova.Api.Controllers var compileScript = $"Handlebars.compile({reportTemplate})({reportData});"; var resultHTML = await page.EvaluateExpressionAsync(compileScript); - //render report as HTML - await page.AddStyleTagAsync(new AddTagOptions { Content = reportCSS }); + //render report as HTML await page.SetContentAsync(resultHTML); + //add style (after page or it won't work) + await page.AddStyleTagAsync(new AddTagOptions { Content = reportCSS }); + + //useful for debugging purposes only + //var pagecontent = await page.GetContentAsync(); + //render to pdf and return var pdfBuffer = await page.PdfDataAsync(); return new FileContentResult(pdfBuffer, "application/pdf");