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(); }
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(); } }
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); }); }