private static async Task <string> CreateImageHtmlAsync(PdfInputData inputData) { var template = await TemplatingHelper.GetTemplateAsync("image.html"); var parameters = new Dictionary <string, string>() { { "mimeType", inputData.File.ContentType }, { "imageData", await ConvertToBase64StringAsync(inputData.File) } }; return(TemplatingHelper.FormatHtml(template, parameters)); }
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; } }