public HttpResponseMessage Post() { var doc = _htmlToPdfDocumentGenerator.Generate(); MemoryStream?stream = null; _ = _pdfConverter.ConvertAsync( doc, length => { #pragma warning disable IDISP003 // Dispose previous before re-assigning. stream = _recyclableMemoryStreamManager.GetStream( Guid.NewGuid(), "wkhtmltox", length); #pragma warning restore IDISP003 // Dispose previous before re-assigning. return(stream); }, CancellationToken.None).GetAwaiter().GetResult(); stream !.Position = 0; var httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK); httpResponseMessage.Content = new ByteArrayContent(stream.ToArray()); httpResponseMessage.Content.Headers.ContentLength = stream.Length; httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "sample.pdf", }; httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf"); return(httpResponseMessage); }
#pragma warning disable SEC0019 // Missing AntiForgeryToken Attribute #pragma warning disable SEC0120 // Missing Authorization Attribute #pragma warning disable SCS0012 // Controller method is potentially vulnerable to authorization bypass. public async Task <IActionResult> Convert() #pragma warning restore SCS0012 // Controller method is potentially vulnerable to authorization bypass. #pragma warning restore SEC0120 // Missing Authorization Attribute #pragma warning restore SEC0019 // Missing AntiForgeryToken Attribute { var doc = _htmlToPdfDocumentGenerator.Generate(); Stream?stream = null; var converted = await _pdfConverter.ConvertAsync( doc, length => { #pragma warning disable IDISP003 // Dispose previous before re-assigning. stream = _recyclableMemoryStreamManager.GetStream( Guid.NewGuid(), "wkhtmltox", length); #pragma warning restore IDISP003 // Dispose previous before re-assigning. return(stream); }, _httpContextAccessor.HttpContext?.RequestAborted ?? CancellationToken.None); stream !.Position = 0; if (converted) { var result = new FileStreamResult(stream, "application/pdf") { FileDownloadName = "sample.pdf", }; return(result); } return(BadRequest()); }
public async Task <IHttpActionResult> Post() { var doc = _htmlToPdfDocumentGenerator.Generate(); MemoryStream?stream = null; _ = await _pdfConverter.ConvertAsync( doc, length => { #pragma warning disable IDISP003 // Dispose previous before re-assigning. stream = _recyclableMemoryStreamManager.GetStream( Guid.NewGuid(), "wkhtmltox", length); #pragma warning restore IDISP003 // Dispose previous before re-assigning. return(stream); }, HttpContext.Current.Request.GetOwinContext().Request.CallCancelled).ConfigureAwait(false); stream !.Position = 0; #pragma warning disable CA2000 // Dispose objects before losing scope #pragma warning disable IDISP001 // Dispose created. var httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK); #pragma warning restore IDISP001 // Dispose created. #pragma warning restore CA2000 // Dispose objects before losing scope httpResponseMessage.Content = new ByteArrayContent(stream.ToArray()); httpResponseMessage.Content.Headers.ContentLength = stream.Length; httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "sample.pdf", }; httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf"); return(ResponseMessage(httpResponseMessage)); }
public async Task <IActionResult> ExportAsPdf() { var products = await _dispatcher.DispatchAsync(new GetProductsQuery()); var model = products.ToModels(); var template = Path.Combine(Environment.CurrentDirectory, $"Templates/ProductList.cshtml"); var html = await _htmlGenerator.GenerateAsync(template, model); var pdf = await _pdfConverter.ConvertAsync(html); return(File(pdf, MediaTypeNames.Application.Octet, "Products.pdf")); }
public async Task <Stream> WithAdaskoTheBeAsT(byte[] html, CancellationToken cancellationToken = default) { var doc = new HtmlToPdfDocument { GlobalSettings = { ColorMode = ColorMode.Color, Orientation = Orientation.Portrait, PaperSize = AdaskoTheBeAsT.WkHtmlToX.Utils.PaperKind.A4, }, ObjectSettings = { new PdfObjectSettings { HtmlContentByteArray = html, PagesCount = true, WebSettings = { DefaultEncoding = "utf-8" }, FooterSettings = { FontSize = 9, Center = "[page]/[toPage]" } }, }, }; Stream stream = null; var converted = await pdfConverter.ConvertAsync( doc, length => { stream = new RecyclableMemoryStreamManager().GetStream( Guid.NewGuid(), "wkhtmltox", length); return(stream); }, cancellationToken); stream !.Position = 0; if (converted) { return(stream); } throw new Exception("Failed to convert."); }