private PuppeteerPdfOptions GetPdfOptionsAsync(PdfOptions options) { var pdfOptions = new PuppeteerPdfOptions { MarginOptions = new MarginOptions { Top = options?.MarginTop ?? _config.MarginTop, Right = options?.MarginRight ?? _config.MarginRight, Bottom = options?.MarginBottom ?? _config.MarginBottom, Left = options?.MarginLeft ?? _config.MarginLeft }, PrintBackground = options?.PrintBackground ?? _config.PrintBackground }; if (options?.Format != null) { pdfOptions.Format = PdfHelper.ParsePaperFormat(options.Format); } else { pdfOptions.Width = options?.PaperWidth ?? _config.PaperWidth; pdfOptions.Height = options?.PaperHeight ?? _config.PaperHeight; } return(pdfOptions); }
public async Task <PdfResult> GeneratePdfFromImageAsync(PdfInputData inputData, PdfOptions options) { try { var startTime = DateTime.Now; var content = await CreateImageHtmlAsync(inputData); var browser = await _browserProvider.GetBrowserAsync(); using var page = await browser.NewPageAsync(); await page.SetContentAsync(content); var pdfOptions = GetPdfOptionsAsync(options); pdfOptions.Landscape = await ImageHelper.IsLandscapeAsync(page); await ImageHelper.SetImageSizeAsync(page, pdfOptions); if (inputData.Title != null) { await SetImageHeaderAsync(inputData.Title, pdfOptions); } var pdfStream = await page.PdfStreamAsync(pdfOptions); var fileName = $"{Path.GetFileNameWithoutExtension(inputData.File.FileName)}.pdf"; _logger.LogInformation($@"Genererte PDF ""{fileName}"" ({Math.Round(pdfStream.Length / 1024f / 1024f, 2)} MB) av filen ""{inputData.File.FileName}"" på {Math.Round(DateTime.Now.Subtract(startTime).TotalSeconds, 2)} sek."); return(new PdfResult { FileName = fileName, Data = pdfStream, }); } catch (Exception exception) { _logger.LogError(exception, $@"Kunne ikke generere PDF av filen ""{inputData.File.FileName}"""); throw; } }
public async Task <PdfResult> GeneratePdfFromHtmlStringAsync(string htmlString, PdfOptions options) { try { var start = DateTime.Now; var browser = await _browserProvider.GetBrowserAsync(); using var page = await browser.NewPageAsync(); await page.SetContentAsync(htmlString); var pdfOptions = GetPdfOptionsAsync(options); var pdfStream = await page.PdfStreamAsync(pdfOptions); var fileName = await PdfHelper.CreateFileNameAsync(page); _logger.LogInformation(@$ "Genererte PDF " "{fileName}" " ({Math.Round(pdfStream.Length / 1024f / 1024f, 2)} MB) på {Math.Round(DateTime.Now.Subtract(start).TotalSeconds, 2)} sek."); return(new PdfResult { FileName = fileName, Data = pdfStream }); } catch (Exception exception) { _logger.LogError(exception, "Kunne ikke generere PDF fra HTML."); throw; } }