コード例 #1
0
        private static async Task Main()
        {
            var htmlToPdfGenerator = new HtmlToPdfDocumentGenerator(new SmallHtmlGenerator());
            var configuration      = new WkHtmlToXConfiguration((int)Environment.OSVersion.Platform, null);

            using (var engine = new WkHtmlToXEngine(configuration))
            {
                engine.Initialize();
                var doc = htmlToPdfGenerator.Generate();

                if (!Directory.Exists("files"))
                {
                    Directory.CreateDirectory("files");
                }

                var converter = new PdfConverter(engine);
#pragma warning disable SEC0112 // Path Tampering Unvalidated File Path
#pragma warning disable SCS0018 // Potential Path Traversal vulnerability was found where '{0}' in '{1}' may be tainted by user-controlled data from '{2}' in method '{3}'.
#pragma warning disable CC0022  // Should dispose object
                using var stream = new FileStream(
                          Path.Combine("Files", $"{DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture)}.pdf"),
                          FileMode.Create);
#pragma warning restore CC0022  // Should dispose object
#pragma warning restore SCS0018 // Potential Path Traversal vulnerability was found where '{0}' in '{1}' may be tainted by user-controlled data from '{2}' in method '{3}'.
#pragma warning restore SEC0112 // Path Tampering Unvalidated File Path
                var converted = await converter.ConvertAsync(doc, _ => stream, CancellationToken.None).ConfigureAwait(false);

                Console.WriteLine(converted);
            }

            Console.ReadKey();
        }
コード例 #2
0
        public async Task ConvertAsyncShouldReturnNullStreamWhenNotConverted()
        {
            // Arrange
            _engineMock.Setup(e => e.AddConvertWorkItem(It.IsAny <ConvertWorkItemBase>(), It.IsAny <CancellationToken>()))
            .Callback <ConvertWorkItemBase, CancellationToken>(
                (
                    i,
                    _) =>
            {
                i.TaskCompletionSource.SetResult(false);
            });

            var document      = new HtmlToPdfDocument();
            var documentTitle = _fixture.Create <string>();
            var captionText   = _fixture.Create <string>();

            document.GlobalSettings.DocumentTitle = documentTitle;
            document.ObjectSettings.Add(
                new PdfObjectSettings
            {
                CaptionText = captionText,
                HtmlContent = "<html><head><title>title</title></head><body></body></html>",
            });

            // Act
            var result = await _sut.ConvertAsync(document, _ => Stream.Null, CancellationToken.None);

            // Assert
            using (new AssertionScope())
            {
                _engineMock.Verify(
                    e =>
                    e.AddConvertWorkItem(It.IsAny <ConvertWorkItemBase>(), It.IsAny <CancellationToken>()),
                    Times.Once);
                result.Should().BeFalse();
            }
        }
コード例 #3
0
        public async Task ShouldNotLeaveAnyObjectsSurvived()
        {
            var htmlToPdfGenerator = new HtmlToPdfDocumentGenerator(new SmallHtmlGenerator());
            var memoryCheckPoint   = dotMemory.Check();
            var doc = htmlToPdfGenerator.Generate();

            if (!Directory.Exists("files"))
            {
                Directory.CreateDirectory("files");
            }

            var converter = new PdfConverter(_engine);

#pragma warning disable SEC0112 // Path Tampering Unvalidated File Path
#pragma warning disable SCS0018 // Potential Path Traversal vulnerability was found where '{0}' in '{1}' may be tainted by user-controlled data from '{2}' in method '{3}'.
            using var stream = new FileStream(
                      Path.Combine(
                          "Files",
                          $"{DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture)}.pdf"),
                      FileMode.Create);
#pragma warning restore SCS0018 // Potential Path Traversal vulnerability was found where '{0}' in '{1}' may be tainted by user-controlled data from '{2}' in method '{3}'.
#pragma warning restore SEC0112 // Path Tampering Unvalidated File Path
            var converted = await converter.ConvertAsync(
                doc,
                _ => stream,
                CancellationToken.None);

            _output.WriteLine(converted.ToString(CultureInfo.InvariantCulture));

            dotMemory.Check(
                memory =>
            {
                var objects = memory.GetDifference(memoryCheckPoint)
                              .GetSurvivedObjects()
                              .GetObjects(where => where.Namespace.Like(nameof(AdaskoTheBeAsT)));
                var objectCount = objects.ObjectsCount;
                objectCount.Should().BeLessOrEqualTo(5);
            });
        }