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

PDFGeneratorController.cs 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System.Web;
  2. using AutoMapper;
  3. using BlackRock.Reporting.API.Core;
  4. using BlackRock.Reporting.API.Core.Models;
  5. using Microsoft.AspNetCore.Mvc;
  6. using PuppeteerSharp;
  7. namespace BlackRock.Reporting.API.Controllers
  8. {
  9. [Route("api/[controller]")]
  10. public class PDFGeneratorController : Controller
  11. {
  12. private readonly IHostEnvironment host;
  13. private readonly IGenerator generator;
  14. private readonly IMapper mapper;
  15. public PDFGeneratorController(IHostEnvironment host, IGenerator generator, IMapper mapper)
  16. {
  17. this.mapper = mapper;
  18. this.generator = generator;
  19. this.host = host;
  20. }
  21. [HttpGet("{url}")]
  22. public async Task<IActionResult> Get([FromQuery] OptionsForPdf pdfOptions,string url = "http://localhost:3000/#/dashboard")
  23. {
  24. if (string.IsNullOrEmpty(url))
  25. return BadRequest();
  26. var result = HttpUtility.UrlDecode(url);
  27. // Temporary name of file which will be downloaded
  28. var fileName = Guid.NewGuid().ToString() + ".pdf";
  29. // Path to wwwroot folder combined with name of pdf file
  30. string path = Path.Combine(host.ContentRootPath, $"wwwroot/pdfs/{fileName}");
  31. var options = mapper.Map<OptionsForPdf,PdfOptions>(pdfOptions);
  32. await generator.Generate(result, path, options);
  33. FileStream stream = new FileStream(path, FileMode.Open);
  34. return File(stream, "application/pdf", fileName);
  35. }
  36. }
  37. }