示例#1
0
        internal void AddContentString(
            IntPtr converter,
            IntPtr objectSettings,
            PdfObjectSettings pdfObjectSettings)
        {
            if (pdfObjectSettings is null)
            {
                throw new ArgumentNullException(nameof(pdfObjectSettings));
            }

            if (string.IsNullOrEmpty(pdfObjectSettings.HtmlContent))
            {
                throw new ArgumentException("Html content should not be empty");
            }

            var encoding = pdfObjectSettings.Encoding ?? Encoding.UTF8;
            var length   = encoding.GetByteCount(pdfObjectSettings.HtmlContent ?? string.Empty);
            var buffer   = ArrayPool <byte> .Shared.Rent(length + 1);

            buffer[length] = 0;

            try
            {
                encoding.GetBytes(
                    pdfObjectSettings.HtmlContent ?? string.Empty, 0, pdfObjectSettings.HtmlContent !.Length, buffer, 0);
                WkHtmlToPdfModule.AddObject(converter, objectSettings, buffer);
            }
            finally
            {
                ArrayPool <byte> .Shared.Return(buffer);
            }
        }
示例#2
0
        internal void AddContent(
            IntPtr converter,
            IntPtr objectSettings,
            PdfObjectSettings pdfObjectSettings)
        {
            if (pdfObjectSettings is null)
            {
                throw new ArgumentNullException(nameof(pdfObjectSettings));
            }

            if (!string.IsNullOrEmpty(pdfObjectSettings.HtmlContent))
            {
                AddContentString(converter, objectSettings, pdfObjectSettings);
            }
            else if (pdfObjectSettings.HtmlContentByteArray != null)
            {
                AddContentByteArray(converter, objectSettings, pdfObjectSettings.HtmlContentByteArray);
            }
            else if (pdfObjectSettings.HtmlContentStream != null)
            {
                AddContentStream(converter, objectSettings, pdfObjectSettings.HtmlContentStream);
            }
            else
            {
                throw new HtmlContentEmptyException(
                          $"pdfObjectSettings should have non-empty {nameof(PdfObjectSettings.HtmlContent)}"
                          + $" or {nameof(PdfObjectSettings.HtmlContentByteArray)} or {nameof(PdfObjectSettings.HtmlContentStream)}");
            }
        }
示例#3
0
        public void ShouldBeProperlyInitialized()
        {
            // Act
            var sut = new PdfObjectSettings();

            // Assert
            using (new AssertionScope())
            {
                sut.LoadSettings.Should().NotBeNull();
                sut.FooterSettings.Should().NotBeNull();
                sut.HeaderSettings.Should().NotBeNull();
                sut.WebSettings.Should().NotBeNull();
                sut.BackLinks.Should().BeNull();
                sut.CaptionText.Should().BeNull();
                sut.Encoding.Should().BeNull();
                sut.FontScale.Should().BeNull();
                sut.ForwardLinks.Should().BeNull();
                sut.HtmlContent.Should().BeNull();
                sut.IncludeInOutline.Should().BeNull();
                sut.Indentation.Should().BeNull();
                sut.Page.Should().BeNull();
                sut.PagesCount.Should().BeNull();
                sut.ProduceForms.Should().BeNull();
                sut.UseDottedLines.Should().BeNull();
                sut.UseExternalLinks.Should().BeNull();
                sut.UseLocalLinks.Should().BeNull();
                sut.Xsl.Should().BeNull();
            }
        }
示例#4
0
        public void ShouldAllowToSetValues()
        {
            // Arrange
            var backLinks        = _fixture.Create <bool>();
            var captionText      = _fixture.Create <string>();
            var encoding         = _fixture.Create <Encoding>();
            var fontScale        = _fixture.Create <string>();
            var footerSettings   = _fixture.Create <SectionSettings>();
            var forwardLinks     = _fixture.Create <bool>();
            var headerSettings   = _fixture.Create <SectionSettings>();
            var htmlContent      = _fixture.Create <string>();
            var includeInOutline = _fixture.Create <bool>();
            var indentation      = _fixture.Create <string>();
            var loadSettings     = _fixture.Create <LoadSettings>();
            var page             = _fixture.Create <string>();
            var pagesCount       = _fixture.Create <bool>();
            var produceForms     = _fixture.Create <bool>();
            var useDottedLines   = _fixture.Create <bool>();
            var useExternalLinks = _fixture.Create <bool>();
            var useLocalLinks    = _fixture.Create <bool>();
            var webSettings      = _fixture.Create <WebSettings>();
            var xsl = _fixture.Create <string>();

            // Act
            var sut = new PdfObjectSettings
            {
                BackLinks        = backLinks,
                CaptionText      = captionText,
                Encoding         = encoding,
                FontScale        = fontScale,
                FooterSettings   = footerSettings,
                ForwardLinks     = forwardLinks,
                HeaderSettings   = headerSettings,
                HtmlContent      = htmlContent,
                IncludeInOutline = includeInOutline,
                Indentation      = indentation,
                LoadSettings     = loadSettings,
                Page             = page,
                PagesCount       = pagesCount,
                ProduceForms     = produceForms,
                UseDottedLines   = useDottedLines,
                UseExternalLinks = useExternalLinks,
                UseLocalLinks    = useLocalLinks,
                WebSettings      = webSettings,
                Xsl = xsl,
            };

            // Assert
            using (new AssertionScope())
            {
                sut.BackLinks.Should().Be(backLinks);
                sut.CaptionText.Should().Be(captionText);
                sut.Encoding.Should().Be(encoding);
                sut.FontScale.Should().Be(fontScale);
                sut.FooterSettings.Should().Be(footerSettings);
                sut.ForwardLinks.Should().Be(forwardLinks);
                sut.HeaderSettings.Should().Be(headerSettings);
                sut.HtmlContent.Should().Be(htmlContent);
                sut.IncludeInOutline.Should().Be(includeInOutline);
                sut.Indentation.Should().Be(indentation);
                sut.LoadSettings.Should().Be(loadSettings);
                sut.Page.Should().Be(page);
                sut.PagesCount.Should().Be(pagesCount);
                sut.ProduceForms.Should().Be(produceForms);
                sut.UseDottedLines.Should().Be(useDottedLines);
                sut.UseExternalLinks.Should().Be(useExternalLinks);
                sut.UseLocalLinks.Should().Be(useLocalLinks);
                sut.WebSettings.Should().Be(webSettings);
                sut.Xsl.Should().Be(xsl);
            }
        }