Exemplo n.º 1
0
        public static bool IsValid(this IPdfBuildModel buildModel)
        {
            if (buildModel == null)
            {
                return(false);
            }

            if (string.IsNullOrWhiteSpace(buildModel.DocumentTitle))
            {
                return(false);
            }

            if (string.IsNullOrWhiteSpace(buildModel.HtmlContent))
            {
                return(false);
            }

            if (buildModel.UsePageCount &&
                string.IsNullOrWhiteSpace(buildModel.HeaderCenterText) &&
                string.IsNullOrWhiteSpace(buildModel.HeaderLeftText) &&
                string.IsNullOrWhiteSpace(buildModel.HeaderRightText) &&
                string.IsNullOrWhiteSpace(buildModel.FooterCenterText) &&
                string.IsNullOrWhiteSpace(buildModel.FooterLeftText) &&
                string.IsNullOrWhiteSpace(buildModel.FooterRightText))
            {
                return(false);
            }

            return(true);
        }
 private static WebSettings BuildDefaultWebSettings(IPdfBuildModel buildModel, IPdfPageSpecification pdfPageSpecification)
 {
     return(new WebSettings
     {
         DefaultEncoding = pdfPageSpecification.DefaultEncoding,
         UserStyleSheet = pdfPageSpecification.UserStyleSheet,
     });
 }
Exemplo n.º 3
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
 };
Exemplo n.º 4
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
 };
Exemplo n.º 5
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));
        }
Exemplo n.º 6
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);
            }
        }
Exemplo n.º 7
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));
        }