2
2
using System ;
3
3
using System . Diagnostics . CodeAnalysis ;
4
4
using System . IO ;
5
- using System . Net ;
6
5
using System . Runtime . InteropServices ;
7
6
using System . Threading . Tasks ;
8
7
@@ -46,8 +45,10 @@ public Renderer(LaunchOptions? launchOptions = null)
46
45
}
47
46
}
48
47
48
+ /// <summary>
49
+ /// Provides methods to interact with a browser.
50
+ /// </summary>
49
51
public IBrowser ? Browser { get ; set ; }
50
- private int LastProgressValue { get ; set ; }
51
52
52
53
/// <summary>
53
54
/// Browser fetcher - used to get chromium bins
@@ -62,8 +63,8 @@ public Renderer(LaunchOptions? launchOptions = null)
62
63
/// <returns>Initialized renderer</returns>
63
64
public static Task < Renderer > CreateAsync ( )
64
65
{
65
- var html2Pdf = new Renderer ( ) ;
66
- return html2Pdf . InitializeAsync ( new BrowserFetcher ( ) ) ;
66
+ var renderer = new Renderer ( ) ;
67
+ return renderer . InitializeAsync ( new BrowserFetcher ( ) ) ;
67
68
}
68
69
69
70
/// <summary>
@@ -118,7 +119,7 @@ private static bool IsRunningOnAzureLinux()
118
119
return false ;
119
120
}
120
121
121
- return RuntimeInformation . IsOSPlatform ( OSPlatform . Linux ) && websiteSku . IndexOf ( "Linux" , StringComparison . OrdinalIgnoreCase ) >= 0 ;
122
+ return RuntimeInformation . IsOSPlatform ( OSPlatform . Linux ) && websiteSku . Contains ( "Linux" , StringComparison . OrdinalIgnoreCase ) ;
122
123
}
123
124
124
125
private static bool IsRunningOnWslOrAzure ( )
@@ -160,13 +161,23 @@ public async Task ConvertHtmlToPdf(string sourceHtmlFilePath, string destination
160
161
}
161
162
162
163
var absolutePath = Path . GetFullPath ( sourceHtmlFilePath ) ;
163
- await using var page = await Browser . NewPageAsync ( ) . ConfigureAwait ( false ) ;
164
+ await using var page = await GetPage ( ) . ConfigureAwait ( false ) ;
164
165
await page . GoToAsync ( $ "file://{ absolutePath } ") . ConfigureAwait ( false ) ;
165
166
// Wait for fonts to be loaded. Omitting this might result in no text rendered in PDF.
166
167
await page . EvaluateExpressionHandleAsync ( "document.fonts.ready" ) . ConfigureAwait ( false ) ;
167
168
await page . PdfAsync ( destinationPdfFilePath , pdfOptions ) . ConfigureAwait ( false ) ;
168
169
}
169
170
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
+
170
181
/// <summary>
171
182
/// Converts a HTML file to a PNG
172
183
/// </summary>
@@ -191,7 +202,7 @@ public async Task ConvertHtmlToPng(string sourceHtmlFilePath, string destination
191
202
}
192
203
193
204
var absolutePath = Path . GetFullPath ( sourceHtmlFilePath ) ;
194
- await using var page = await Browser . NewPageAsync ( ) . ConfigureAwait ( false ) ;
205
+ await using var page = await GetPage ( ) . ConfigureAwait ( false ) ;
195
206
await page . GoToAsync ( $ "file://{ absolutePath } ") . ConfigureAwait ( false ) ;
196
207
// Wait for fonts to be loaded. Omitting this might result in no text the screenshot.
197
208
await page . EvaluateExpressionHandleAsync ( "document.fonts.ready" ) . ConfigureAwait ( false ) ;
@@ -214,21 +225,13 @@ public Task<byte[]> ConvertHtmlStringToPngData(string sourceHtmlData)
214
225
/// <param name="screenshotOptions"></param>
215
226
public async Task < byte [ ] > ConvertHtmlStringToPngData ( string sourceHtmlData , ScreenshotOptions screenshotOptions )
216
227
{
217
- await using var page = await Browser . NewPageAsync ( ) . ConfigureAwait ( false ) ;
228
+ await using var page = await GetPage ( ) . ConfigureAwait ( false ) ;
218
229
await page . SetContentAsync ( sourceHtmlData ) . ConfigureAwait ( false ) ;
219
230
// Wait for fonts to be loaded. Omitting this might result in no text the screenshot.
220
231
await page . EvaluateExpressionHandleAsync ( "document.fonts.ready" ) . ConfigureAwait ( false ) ;
221
232
return await page . ScreenshotDataAsync ( screenshotOptions ) . ConfigureAwait ( false ) ;
222
233
}
223
234
224
- private void DownloadProgressChanged ( object sender , DownloadProgressChangedEventArgs e )
225
- {
226
- if ( LastProgressValue != e . ProgressPercentage )
227
- {
228
- LastProgressValue = e . ProgressPercentage ;
229
- }
230
- }
231
-
232
235
/// <summary>
233
236
/// Dispose
234
237
/// </summary>
0 commit comments