From c462d1e97737867b703e992aadf2e576b8c80726 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 24 Aug 2020 16:23:20 +0000 Subject: [PATCH] --- .../AyaNova/Controllers/ReportController.cs | 53 ++++++++++++++----- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/server/AyaNova/Controllers/ReportController.cs b/server/AyaNova/Controllers/ReportController.cs index 38d11352..ec6882ed 100644 --- a/server/AyaNova/Controllers/ReportController.cs +++ b/server/AyaNova/Controllers/ReportController.cs @@ -38,7 +38,7 @@ namespace AyaNova.Api.Controllers - [HttpGet("render/{test}")] + [HttpGet("render-test")] [AllowAnonymous] public async Task GetTestReport([FromRoute] string test) { @@ -70,29 +70,58 @@ namespace AyaNova.Api.Controllers } - [HttpGet("render/pdf/{url}")] + + //--------------------------------------------------------------------- + [HttpGet("render")] [AllowAnonymous] - public async Task GetUrlPdfReport([FromRoute] string url) + public async Task GetPdfReport([FromRoute] string url) { if (!serverState.IsOpen) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); - string outputFile = FileUtil.NewRandomTempFilesFolderFileName; + + // byte[] buffer = readfromdatabase(); + // return new FileContentResult(buffer, "text/html"); + + + //first test, just render a web page to pdf and return it //return PhysicalFile(filePath, mimetype, dbObject.DisplayFileName); - outputFile += ".pdf"; + //http://www.puppeteersharp.com/api/index.html //https://github.com/hardkoded/puppeteer-sharp await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision); - var browser = await Puppeteer.LaunchAsync(new LaunchOptions + + //sample CSS + var templateCSS = @" + @page { + margin: 1cm; + } + + @page :first { + margin: 2cm; + }"; + + //sample HTML + var templateHtml = "

Hello world!

"; + using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true })) + using (var page = await browser.NewPageAsync()) { - Headless = true - }); - var page = await browser.NewPageAsync(); - await page.GoToAsync(url); - await page.PdfAsync(outputFile); - return PhysicalFile(outputFile, "application/pdf"); + + await page.AddStyleTagAsync(new AddTagOptions { Content = templateCSS }); + await page.SetContentAsync(templateHtml); + + var pdfBuffer = await page.PdfDataAsync(); + return new FileContentResult(pdfBuffer, "application/pdf"); + + } + } + + //----------------------------------------- + + + //------------ /* NOTES/TODO during testing