Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

PdfGenerator.cs 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using BlackRock.Reporting.API.Core;
  2. using BlackRock.Reporting.API.Core.Models;
  3. using PuppeteerSharp;
  4. namespace BlackRock.Reporting.API.Persistence
  5. {
  6. public class PdfGenerator : IPdfGenerator
  7. {
  8. private readonly IHostEnvironment host;
  9. public PdfGenerator(IHostEnvironment host)
  10. {
  11. this.host = host;
  12. }
  13. public async Task Generate(string url, string path, PdfOptions options)
  14. {
  15. await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
  16. var opts = new LaunchOptions
  17. {
  18. Headless = true
  19. };
  20. using (var browser = await Puppeteer.LaunchAsync(opts))
  21. using (var page = await browser.NewPageAsync())
  22. {
  23. await page.GoToAsync(url, WaitUntilNavigation.DOMContentLoaded);
  24. var allResultsSelector = ".chartjs-render-monitor";
  25. await page.WaitForSelectorAsync(allResultsSelector);
  26. await EvaluateScript(page, "dist/main.js");
  27. await page.PdfAsync(path,options
  28. // new PdfOptions{
  29. // PrintBackground = true,
  30. // Format = PuppeteerSharp.Media.PaperFormat.Letter
  31. // }
  32. );
  33. }
  34. }
  35. private async Task EvaluateScript(Page page, string fileName)
  36. {
  37. string path2 = Path.Combine(host.ContentRootPath, fileName);
  38. var result = await System.IO.File.ReadAllTextAsync(path2);
  39. await page.EvaluateExpressionAsync(result);
  40. }
  41. }
  42. }