Skip to content

Commit e673bbc

Browse files
committed
House keeping
1 parent e7cfd5f commit e673bbc

File tree

5 files changed

+63
-27
lines changed

5 files changed

+63
-27
lines changed

Codeuctivity.HtmlRenderer/Codeuctivity.HtmlRenderer.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
<ItemGroup>
4141
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="all" />
4242
<PackageReference Include="PuppeteerSharp" Version="18.0.0" />
43-
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.12.0.78982">
43+
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.25.0.90414">
4444
<PrivateAssets>all</PrivateAssets>
4545
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
4646
</PackageReference>

Codeuctivity.HtmlRenderer/Renderer.cs

+19-16
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using System;
33
using System.Diagnostics.CodeAnalysis;
44
using System.IO;
5-
using System.Net;
65
using System.Runtime.InteropServices;
76
using System.Threading.Tasks;
87

@@ -46,8 +45,10 @@ public Renderer(LaunchOptions? launchOptions = null)
4645
}
4746
}
4847

48+
/// <summary>
49+
/// Provides methods to interact with a browser.
50+
/// </summary>
4951
public IBrowser? Browser { get; set; }
50-
private int LastProgressValue { get; set; }
5152

5253
/// <summary>
5354
/// Browser fetcher - used to get chromium bins
@@ -62,8 +63,8 @@ public Renderer(LaunchOptions? launchOptions = null)
6263
/// <returns>Initialized renderer</returns>
6364
public static Task<Renderer> CreateAsync()
6465
{
65-
var html2Pdf = new Renderer();
66-
return html2Pdf.InitializeAsync(new BrowserFetcher());
66+
var renderer = new Renderer();
67+
return renderer.InitializeAsync(new BrowserFetcher());
6768
}
6869

6970
/// <summary>
@@ -118,7 +119,7 @@ private static bool IsRunningOnAzureLinux()
118119
return false;
119120
}
120121

121-
return RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && websiteSku.IndexOf("Linux", StringComparison.OrdinalIgnoreCase) >= 0;
122+
return RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && websiteSku.Contains("Linux", StringComparison.OrdinalIgnoreCase);
122123
}
123124

124125
private static bool IsRunningOnWslOrAzure()
@@ -160,13 +161,23 @@ public async Task ConvertHtmlToPdf(string sourceHtmlFilePath, string destination
160161
}
161162

162163
var absolutePath = Path.GetFullPath(sourceHtmlFilePath);
163-
await using var page = await Browser.NewPageAsync().ConfigureAwait(false);
164+
await using var page = await GetPage().ConfigureAwait(false);
164165
await page.GoToAsync($"file://{absolutePath}").ConfigureAwait(false);
165166
// Wait for fonts to be loaded. Omitting this might result in no text rendered in PDF.
166167
await page.EvaluateExpressionHandleAsync("document.fonts.ready").ConfigureAwait(false);
167168
await page.PdfAsync(destinationPdfFilePath, pdfOptions).ConfigureAwait(false);
168169
}
169170

171+
private async Task<IPage> GetPage()
172+
{
173+
if (Browser == null)
174+
{
175+
throw new RendererException("Call CreateAsync first");
176+
}
177+
178+
return await Browser.NewPageAsync().ConfigureAwait(false);
179+
}
180+
170181
/// <summary>
171182
/// Converts a HTML file to a PNG
172183
/// </summary>
@@ -191,7 +202,7 @@ public async Task ConvertHtmlToPng(string sourceHtmlFilePath, string destination
191202
}
192203

193204
var absolutePath = Path.GetFullPath(sourceHtmlFilePath);
194-
await using var page = await Browser.NewPageAsync().ConfigureAwait(false);
205+
await using var page = await GetPage().ConfigureAwait(false);
195206
await page.GoToAsync($"file://{absolutePath}").ConfigureAwait(false);
196207
// Wait for fonts to be loaded. Omitting this might result in no text the screenshot.
197208
await page.EvaluateExpressionHandleAsync("document.fonts.ready").ConfigureAwait(false);
@@ -214,21 +225,13 @@ public Task<byte[]> ConvertHtmlStringToPngData(string sourceHtmlData)
214225
/// <param name="screenshotOptions"></param>
215226
public async Task<byte[]> ConvertHtmlStringToPngData(string sourceHtmlData, ScreenshotOptions screenshotOptions)
216227
{
217-
await using var page = await Browser.NewPageAsync().ConfigureAwait(false);
228+
await using var page = await GetPage().ConfigureAwait(false);
218229
await page.SetContentAsync(sourceHtmlData).ConfigureAwait(false);
219230
// Wait for fonts to be loaded. Omitting this might result in no text the screenshot.
220231
await page.EvaluateExpressionHandleAsync("document.fonts.ready").ConfigureAwait(false);
221232
return await page.ScreenshotDataAsync(screenshotOptions).ConfigureAwait(false);
222233
}
223234

224-
private void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
225-
{
226-
if (LastProgressValue != e.ProgressPercentage)
227-
{
228-
LastProgressValue = e.ProgressPercentage;
229-
}
230-
}
231-
232235
/// <summary>
233236
/// Dispose
234237
/// </summary>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using System;
2+
3+
namespace Codeuctivity.HtmlRenderer
4+
{
5+
/// <summary>
6+
/// Throwing on missing CreateAsync
7+
/// </summary>
8+
[Serializable]
9+
10+
public class RendererException : Exception
11+
{
12+
/// <summary>
13+
/// Throwing on missing CreateAsync
14+
/// </summary>
15+
public RendererException()
16+
{
17+
}
18+
19+
/// <summary>
20+
/// Throwing on missing CreateAsync
21+
/// </summary>
22+
public RendererException(string? message) : base(message)
23+
{
24+
}
25+
26+
/// <summary>
27+
/// Throwing on missing CreateAsync
28+
/// </summary>
29+
public RendererException(string? message, Exception? innerException) : base(message, innerException)
30+
{
31+
}
32+
}
33+
}

Codeuctivity.HtmlRendererCliTests/Codeuctivity.HtmlRendererCliTests.csproj

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
11-
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.12.0.78982">
10+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
11+
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.25.0.90414">
1212
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1313
<PrivateAssets>all</PrivateAssets>
1414
</PackageReference>
15-
<PackageReference Include="xunit" Version="2.6.1" />
16-
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3">
15+
<PackageReference Include="xunit" Version="2.8.0" />
16+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.0">
1717
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1818
<PrivateAssets>all</PrivateAssets>
1919
</PackageReference>

Codeuctivity.HtmlRendererTests/Codeuctivity.HtmlRendererTests.csproj

+6-6
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@
1515
</ItemGroup>
1616

1717
<ItemGroup>
18-
<PackageReference Include="Codeuctivity.ImageSharpCompare" Version="2.0.182" />
19-
<PackageReference Include="Codeuctivity.PdfjsSharp" Version="1.3.140" />
20-
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.12.0.78982">
18+
<PackageReference Include="Codeuctivity.ImageSharpCompare" Version="4.0.258" />
19+
<PackageReference Include="Codeuctivity.PdfjsSharp" Version="2.0.164" />
20+
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.25.0.90414">
2121
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2222
<PrivateAssets>all</PrivateAssets>
2323
</PackageReference>
24-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
25-
<PackageReference Include="xunit" Version="2.6.1" />
26-
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3">
24+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
25+
<PackageReference Include="xunit" Version="2.8.0" />
26+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.0">
2727
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2828
<PrivateAssets>all</PrivateAssets>
2929
</PackageReference>

0 commit comments

Comments
 (0)