Пример #1
0
        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));
        }
Пример #2
0
        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;
            }
        }