Export Pdf
Install PuppeteerSharp
dotnet add package PuppeteerSharp
Init Browser
Create PuppeteerHostedService
public class PuppeteerHostedService : IHostedService{
public IBrowser? Browser{get; private set;}
public async Task StartAsync(CancellationToken cancellationToken){
await new BrowserFetcher().DownloadAsync();
Browser = await Puppeteer.LaunchAsync(new LaunchOptions{
Headless = true
});
}
public async Task StopAsync(CancellationToken cancellationToken){
if(Browser != null){
await Browser.CloseAsync();
}
}
}
Register PuppeteerHostedService
builder.Services.AddSingleton<PuppeteerHostedService>();
builder.Services.AddHostedService(sp => sp.GetRequiredService<PuppeteerHostedService>());
Export Pdf
public async Task
ExportPdf(string url){
PuppeteerHostedService service = HttpContext.RequestServices.GetRequiredService<PuppeteerHostedService>();
if(service.Browser != null){
IBrowser browser = service.Browser;
IPage page = await browser.NewPageAsync();
await page.GoToAsync(url, new NavigationOptions{
WaitUntil = new[] { WaitUntilNavigation.DOMContentLoaded },
Timeout = 60000
});
byte[] bytes = await page.PdfDataAsync(new PdfOptions{
Format = PaperFormat.A4,
PrintBackground = true,
MarginOptions = new MarginOptions{
Left = "1cm",
Right = "1cm",
Top = "1cm",
Bottom = "1cm",
}
});
await page.CloseAsync();
return File(bytes, "application/pdf", "report.pdf");
}
return NotFound();
}