Как скачать pdf-файл с помощью JavaScript (React) для ответа c # API с помощью приложения Content Type / pdf - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть генерация pdf на стороне сервера, и для этого я использую c # для чтения данных и генерации pdf с использованием iTectSharp.После того, как pdf сгенерирован, я возвращаю ответ на UI, а на UI JavaScript должен загрузить pdf файл.Но код java-скрипта не работает для загрузки pdf.

Заголовки ответа на запрос API следующие:

Cache-Control: no-cache
Content-Disposition: attachment; filename=ReportSummary.pdf
Content-Length: 84595
Content-Type: application/pdf
Date: Wed, 13 Feb 2019 05:11:03 GMT
Expires: -1
Pragma: no-cache
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET

После кода на сервере для API

using (var workStream = new MemoryStream())
            {
                using (var pdfWriter = new PdfWriter(workStream))
                {
                    ConverterProperties props = new ConverterProperties();
                    HtmlConverter.ConvertToPdf(contents, pdfWriter,props);
                    byte[] byteInfo = workStream.ToArray();

                    var res = new HttpResponseMessage(HttpStatusCode.OK);
                    res.Content = new ByteArrayContent(byteInfo);
                    res.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
                    res.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        FileName = "BenchmarkSummary.pdf"
                    };

                    return res;
                }
            }

Код для интерфейса API

Service.getReport(values).then(response => {            
    var blob=new Blob([response.data]);
    const link = this.linkRef.current;
    link.href= window.URL.createObjectURL(blob);
    link.download="Report.pdf";
    link.click();
})
...