Skip to content

Commit d3501c7

Browse files
committed
fix: handle different Browser Revisions
1 parent 3e2775f commit d3501c7

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

Markdown2Pdf.Tests/Tests/Utils.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Text.RegularExpressions;
22
using PuppeteerSharp;
3+
using PuppeteerSharp.BrowserData;
34
using UglyToad.PdfPig;
45
using UglyToad.PdfPig.DocumentLayoutAnalysis.TextExtractor;
56

@@ -27,15 +28,22 @@ internal static async Task<string> RenderHtmlAsync(string htmlFilePath) {
2728
private static async Task<IBrowser> _CreateBrowserAsync() {
2829
var launchOptions = new LaunchOptions {
2930
Headless = true,
30-
Args = ["--no-sandbox"],
31+
Args = ["--no-sandbox"], // needed for running inside docker
3132
};
3233

3334
var browserFetcher = new BrowserFetcher();
3435
var installed = browserFetcher.GetInstalledBrowsers();
36+
var hasDefaultRevisionInstalled = installed.Any(installedBrowser => installedBrowser.BuildId == Chrome.DefaultBuildId);
3537

36-
if (!installed.Any()) {
37-
Console.WriteLine("Downloading chromium...");
38-
_ = await browserFetcher.DownloadAsync();
38+
if (!hasDefaultRevisionInstalled) {
39+
// Uninstall old revisions
40+
foreach (var oldBrowser in installed) {
41+
Console.WriteLine($"Uninstalling old Chrome version {oldBrowser.BuildId} from {browserFetcher.CacheDir}...");
42+
browserFetcher.Uninstall(oldBrowser.BuildId);
43+
}
44+
45+
Console.WriteLine($"Path to Chrome was not specified & default build is not installed. Downloading Chrome version {Chrome.DefaultBuildId} to {browserFetcher.CacheDir}...");
46+
_ = await browserFetcher.DownloadAsync(Chrome.DefaultBuildId);
3947
}
4048

4149
return await Puppeteer.LaunchAsync(launchOptions);

Markdown2Pdf/Markdown2Pdf.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
<ItemGroup>
6363
<PackageReference Include="Markdig" Version="0.36.2" />
6464
<PackageReference Include="PdfPig" Version="0.1.8" />
65-
<PackageReference Include="PuppeteerSharp" Version="18.0.0" />
65+
<PackageReference Include="PuppeteerSharp" Version="20.1.3" />
6666
<PackageReference Include="YamlDotNet" Version="15.1.2" />
6767
</ItemGroup>
6868

Markdown2Pdf/Markdown2PdfConverter.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using Markdown2Pdf.Options;
1111
using Markdown2Pdf.Services;
1212
using PuppeteerSharp;
13+
using PuppeteerSharp.BrowserData;
1314
using PuppeteerSharp.Media;
1415

1516
namespace Markdown2Pdf;
@@ -419,10 +420,17 @@ private async Task<IBrowser> _CreateBrowserAsync() {
419420

420421
var browserFetcher = new BrowserFetcher();
421422
var installed = browserFetcher.GetInstalledBrowsers();
423+
var hasDefaultRevisionInstalled = installed.Any(installedBrowser => installedBrowser.BuildId == Chrome.DefaultBuildId);
422424

423-
if (!installed.Any()) {
424-
Console.WriteLine("Path to chrome was not specified. Downloading chrome...");
425-
_ = await browserFetcher.DownloadAsync();
425+
if (!hasDefaultRevisionInstalled) {
426+
// Uninstall old revisions
427+
foreach (var oldBrowser in installed) {
428+
Console.WriteLine($"Uninstalling old Chrome version {oldBrowser.BuildId} from {browserFetcher.CacheDir}...");
429+
browserFetcher.Uninstall(oldBrowser.BuildId);
430+
}
431+
432+
Console.WriteLine($"Path to Chrome was not specified & default build is not installed. Downloading Chrome version {Chrome.DefaultBuildId} to {browserFetcher.CacheDir}...");
433+
_ = await browserFetcher.DownloadAsync(Chrome.DefaultBuildId);
426434
}
427435

428436
return await Puppeteer.LaunchAsync(launchOptions);

0 commit comments

Comments
 (0)