Skip to content

Commit 476cae1

Browse files
authored
Bump PuppeteerSharp from 17.0.0 to 18.0.0
Dropped BrowserFetcher.DownloadProgressChanged support
2 parents 1adb0b9 + 3c4e8d4 commit 476cae1

25 files changed

+116
-110
lines changed

.editorconfig

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,3 +199,24 @@ dotnet_naming_style.begins_with_i.required_prefix = I
199199
dotnet_naming_style.begins_with_i.required_suffix =
200200
dotnet_naming_style.begins_with_i.word_separator =
201201
dotnet_naming_style.begins_with_i.capitalization = pascal_case
202+
csharp_style_namespace_declarations = block_scoped:silent
203+
csharp_style_prefer_method_group_conversion = true:silent
204+
csharp_style_prefer_top_level_statements = true:silent
205+
csharp_style_prefer_primary_constructors = true:suggestion
206+
dotnet_diagnostic.S125.severity = suggestion
207+
208+
# CA1303: Do not pass literals as localized parameters
209+
dotnet_diagnostic.CA1303.severity = none
210+
211+
[*.{cs,vb}]
212+
dotnet_style_coalesce_expression = true:suggestion
213+
dotnet_style_null_propagation = true:suggestion
214+
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
215+
dotnet_style_prefer_auto_properties = true:silent
216+
dotnet_style_object_initializer = true:suggestion
217+
dotnet_style_collection_initializer = true:suggestion
218+
dotnet_style_operator_placement_when_wrapping = beginning_of_line
219+
tab_width = 4
220+
indent_size = 4
221+
end_of_line = crlf
222+
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion

.github/workflows/dotnet.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: .NET build and test
22
env:
3-
CURRENT_VERSION: 3.0.${{ github.run_number }}
3+
CURRENT_VERSION: 4.0.${{ github.run_number }}
44
LAST_COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
55

66
on:
@@ -19,9 +19,6 @@ jobs:
1919
uses: actions/setup-dotnet@v4
2020
with:
2121
dotnet-version: 8.0.x
22-
- uses: actions/[email protected]
23-
with:
24-
node-version: 20
2522
- name: Restore dependencies
2623
run: dotnet restore
2724
- name: Build

Codeuctivity.HtmlRenderer/Codeuctivity.HtmlRenderer.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939

4040
<ItemGroup>
4141
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="all" />
42-
<PackageReference Include="PuppeteerSharp" Version="17.0.0" />
43-
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.12.0.78982">
42+
<PackageReference Include="PuppeteerSharp" Version="18.0.1" />
43+
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.26.0.92422">
4444
<PrivateAssets>all</PrivateAssets>
4545
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
4646
</PackageReference>

Codeuctivity.HtmlRenderer/Renderer.cs

Lines changed: 24 additions & 32 deletions
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

49-
private IBrowser Browser { get; set; } = default!;
50-
private int LastProgressValue { get; set; }
48+
/// <summary>
49+
/// Provides methods to interact with a browser.
50+
/// </summary>
51+
public IBrowser? Browser { 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>
@@ -91,21 +92,10 @@ public static Task<Renderer> CreateAsync(BrowserFetcher browserFetcher, LaunchOp
9192

9293
private async Task<Renderer> InitializeAsync(BrowserFetcher browserFetcher)
9394
{
94-
// for macsome reason the download progress is not called on macos
95-
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
96-
{
97-
using var browserFetcher1 = new BrowserFetcher();
98-
await browserFetcher1.DownloadAsync();
99-
Browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
100-
}
101-
else
102-
{
103-
BrowserFetcher = browserFetcher;
104-
BrowserFetcher.DownloadProgressChanged += DownloadProgressChanged;
105-
var revisionInfo = await BrowserFetcher.DownloadAsync(PuppeteerSharp.BrowserData.Chrome.DefaultBuildId).ConfigureAwait(false);
106-
LaunchOptions.ExecutablePath = revisionInfo.GetExecutablePath();
107-
Browser = await Puppeteer.LaunchAsync(LaunchOptions).ConfigureAwait(false);
108-
}
95+
BrowserFetcher = browserFetcher;
96+
var revisionInfo = await BrowserFetcher.DownloadAsync(PuppeteerSharp.BrowserData.Chrome.DefaultBuildId).ConfigureAwait(false);
97+
LaunchOptions.ExecutablePath = revisionInfo.GetExecutablePath();
98+
Browser = await Puppeteer.LaunchAsync(LaunchOptions).ConfigureAwait(false);
10999

110100
return this;
111101
}
@@ -128,7 +118,7 @@ private static bool IsRunningOnAzureLinux()
128118
return false;
129119
}
130120

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

134124
private static bool IsRunningOnWslOrAzure()
@@ -170,13 +160,23 @@ public async Task ConvertHtmlToPdf(string sourceHtmlFilePath, string destination
170160
}
171161

172162
var absolutePath = Path.GetFullPath(sourceHtmlFilePath);
173-
await using var page = await Browser.NewPageAsync().ConfigureAwait(false);
163+
await using var page = await GetPage().ConfigureAwait(false);
174164
await page.GoToAsync($"file://{absolutePath}").ConfigureAwait(false);
175165
// Wait for fonts to be loaded. Omitting this might result in no text rendered in PDF.
176166
await page.EvaluateExpressionHandleAsync("document.fonts.ready").ConfigureAwait(false);
177167
await page.PdfAsync(destinationPdfFilePath, pdfOptions).ConfigureAwait(false);
178168
}
179169

170+
private async Task<IPage> GetPage()
171+
{
172+
if (Browser == null)
173+
{
174+
throw new RendererException("Call CreateAsync first");
175+
}
176+
177+
return await Browser.NewPageAsync().ConfigureAwait(false);
178+
}
179+
180180
/// <summary>
181181
/// Converts a HTML file to a PNG
182182
/// </summary>
@@ -201,7 +201,7 @@ public async Task ConvertHtmlToPng(string sourceHtmlFilePath, string destination
201201
}
202202

203203
var absolutePath = Path.GetFullPath(sourceHtmlFilePath);
204-
await using var page = await Browser.NewPageAsync().ConfigureAwait(false);
204+
await using var page = await GetPage().ConfigureAwait(false);
205205
await page.GoToAsync($"file://{absolutePath}").ConfigureAwait(false);
206206
// Wait for fonts to be loaded. Omitting this might result in no text the screenshot.
207207
await page.EvaluateExpressionHandleAsync("document.fonts.ready").ConfigureAwait(false);
@@ -224,21 +224,13 @@ public Task<byte[]> ConvertHtmlStringToPngData(string sourceHtmlData)
224224
/// <param name="screenshotOptions"></param>
225225
public async Task<byte[]> ConvertHtmlStringToPngData(string sourceHtmlData, ScreenshotOptions screenshotOptions)
226226
{
227-
await using var page = await Browser.NewPageAsync().ConfigureAwait(false);
227+
await using var page = await GetPage().ConfigureAwait(false);
228228
await page.SetContentAsync(sourceHtmlData).ConfigureAwait(false);
229229
// Wait for fonts to be loaded. Omitting this might result in no text the screenshot.
230230
await page.EvaluateExpressionHandleAsync("document.fonts.ready").ConfigureAwait(false);
231231
return await page.ScreenshotDataAsync(screenshotOptions).ConfigureAwait(false);
232232
}
233233

234-
private void DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
235-
{
236-
if (LastProgressValue != e.ProgressPercentage)
237-
{
238-
LastProgressValue = e.ProgressPercentage;
239-
}
240-
}
241-
242234
/// <summary>
243235
/// Dispose
244236
/// </summary>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System;
2+
3+
namespace Codeuctivity.HtmlRenderer
4+
{
5+
/// <summary>
6+
/// Throwing on missing CreateAsync
7+
/// </summary>
8+
[Serializable]
9+
public class RendererException : Exception
10+
{
11+
/// <summary>
12+
/// Throwing on missing CreateAsync
13+
/// </summary>
14+
public RendererException()
15+
{
16+
}
17+
18+
/// <summary>
19+
/// Throwing on missing CreateAsync
20+
/// </summary>
21+
public RendererException(string? message) : base(message)
22+
{
23+
}
24+
25+
/// <summary>
26+
/// Throwing on missing CreateAsync
27+
/// </summary>
28+
public RendererException(string? message, Exception? innerException) : base(message, innerException)
29+
{
30+
}
31+
}
32+
}

Codeuctivity.HtmlRendererCli/Program.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,8 @@ public static async Task<int> Main(string[] args)
3737
}
3838

3939
Console.WriteLine($"Converting {inputPathDocX} to {outputPathHtml} using PuppeteerSharp.Renderer {Version}");
40-
using var browserFetcher = new BrowserFetcher();
40+
var browserFetcher = new BrowserFetcher();
4141
Console.WriteLine($"Fetching chromium from web, to {browserFetcher.CacheDir} .... ");
42-
browserFetcher.DownloadProgressChanged += BrowserFetcher_DownloadProgressChanged;
4342
using var renderer = await Renderer.CreateAsync(browserFetcher).ConfigureAwait(false);
4443
await renderer.ConvertHtmlToPdf(inputPathDocX, outputPathHtml).ConfigureAwait(false);
4544
return 0;

Codeuctivity.HtmlRendererCliTests/Codeuctivity.HtmlRendererCliTests.csproj

Lines changed: 4 additions & 4 deletions
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.10.0" />
11+
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.26.0.92422">
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.1" />
16+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1">
1717
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1818
<PrivateAssets>all</PrivateAssets>
1919
</PackageReference>

Codeuctivity.HtmlRendererTests/Codeuctivity.HtmlRendererTests.csproj

Lines changed: 6 additions & 6 deletions
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="PDFtoImage" Version="4.0.1" />
20+
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.26.0.92422">
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.10.0" />
25+
<PackageReference Include="xunit" Version="2.8.1" />
26+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1">
2727
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2828
<PrivateAssets>all</PrivateAssets>
2929
</PackageReference>
-9.9 KB
Loading
33.6 KB
Loading

0 commit comments

Comments
 (0)