Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
#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());
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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"));
        }
Ejemplo n.º 5
0
        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.");
        }