예제 #1
0
        private Task <GlobalSettings> GetGlobalSettings(IPdfBuildModel buildModel, IPdfPageSpecification pdfPageSpecification)
        {
            if (!buildModel.IsValid())
            {
                throw new ArgumentNullException(nameof(BuildDefaultWebSettings));
            }

            var globalSettings = new GlobalSettings
            {
                ColorMode     = pdfPageSpecification.PageColorMode,
                Orientation   = pdfPageSpecification.PageOrientation,
                PaperSize     = pdfPageSpecification.PaperSize,
                Margins       = pdfPageSpecification.PageMargins,
                DocumentTitle = buildModel.DocumentTitle,
            };

            return(Task.FromResult(globalSettings));
        }
예제 #2
0
        public async Task <byte[]> CreatePdfDocument(IPdfBuildModel buildModel, IPdfPageSpecification pdfPageSpecification)
        {
            try
            {
                if (!buildModel.IsValid())
                {
                    throw new ArgumentNullException(nameof(buildModel));
                }

                GlobalSettings globalSettings = await GetGlobalSettings(buildModel, pdfPageSpecification);

                ObjectSettings objectSettings = await GetDefaultObjectSettings(buildModel, pdfPageSpecification);

                HtmlToPdfDocument pdfDocument = await ConvertToPdf(globalSettings, objectSettings);

                return(_converter.Convert(pdfDocument));
            }
            catch (Exception ex)
            {
                throw new ArgumentException(nameof(CreatePdfDocument), ex);
            }
        }
예제 #3
0
        private Task <ObjectSettings> GetDefaultObjectSettings(IPdfBuildModel buildModel, IPdfPageSpecification pdfPageSpecification)
        {
            if (string.IsNullOrWhiteSpace(buildModel.HtmlContent))
            {
                throw new ArgumentNullException(nameof(GetDefaultObjectSettings));
            }

            var objectSettings = new ObjectSettings
            {
                FooterSettings = BuildDefaultFooterSettings(buildModel, pdfPageSpecification),
                HeaderSettings = BuildDefaultHeaderSettings(buildModel, pdfPageSpecification),
                HtmlContent    = buildModel.HtmlContent,
                PagesCount     = buildModel.UsePageCount,
                WebSettings    = BuildDefaultWebSettings(pdfPageSpecification),
            };

            // Issue with libwkhtmltox if false is used
            if (objectSettings.PagesCount.HasValue && objectSettings.PagesCount.Value.Equals(false))
            {
                objectSettings.PagesCount = null;
            }

            return(Task.FromResult(objectSettings));
        }
예제 #4
0
 private static WebSettings BuildDefaultWebSettings(IPdfPageSpecification pdfPageSpecification)
 => new WebSettings
 {
     DefaultEncoding = pdfPageSpecification.DefaultEncoding,
     UserStyleSheet  = pdfPageSpecification.UserStyleSheet,
 };
예제 #5
0
 private static HeaderSettings BuildDefaultHeaderSettings(IPdfBuildModel buildModel, IPdfPageSpecification pdfPageSpecification)
 => new HeaderSettings
 {
     FontName = pdfPageSpecification.FontName,
     FontSize = pdfPageSpecification.FontSize,
     Line     = buildModel.UseHeaderLine,
     Left     = buildModel.HeaderLeftText ?? string.Empty,
     Center   = buildModel.HeaderCenterText ?? string.Empty,
     Right    = buildModel.HeaderRightText ?? string.Empty,
     Spacing  = pdfPageSpecification.PageSpacing
 };
예제 #6
0
 private static FooterSettings BuildDefaultFooterSettings(IPdfBuildModel buildModel, IPdfPageSpecification pdfPageSpecification)
 => new FooterSettings
 {
     FontName = pdfPageSpecification.FontName,
     FontSize = pdfPageSpecification.FontSize,
     Line     = buildModel.UseFooterLine,
     Left     = buildModel.FooterLeftText ?? string.Empty,
     Center   = buildModel.FooterCenterText ?? string.Empty,
     Right    = buildModel.FooterRightText ?? string.Empty,
     Spacing  = pdfPageSpecification.PageSpacing,
     HtmUrl   = buildModel.HtmlUri ?? string.Empty
 };
 private static WebSettings BuildDefaultWebSettings(IPdfBuildModel buildModel, IPdfPageSpecification pdfPageSpecification)
 {
     return(new WebSettings
     {
         DefaultEncoding = pdfPageSpecification.DefaultEncoding,
         UserStyleSheet = pdfPageSpecification.UserStyleSheet,
     });
 }