Создание и загрузка PDF на основе JSON, отправленного по запросу AJAX POST - PullRequest
1 голос
/ 20 мая 2019

Я пытаюсь создать PDF-файл с помощью iText на основе JSON от клиента.Данные формы HTML меня не устраивают, потому что они кодируют JSON и не работают должным образом в некоторых браузерах, поэтому я попытался вместо этого использовать AJAX.Но в конце концов я получил пустой файл PDF.

Я пытался использовать следующее:

            that.parsedEstimator = JSON.stringify(json); //target object
            $.ajax({
                type: "POST",
                url: "<SERVLET_PATH>",
                contentType: "application/json",
                cache: false,
                data: that.parsedEstimator,
                success: function (data) {
                    a = document.createElement('a');
                    var binaryData = [];
                    binaryData.push(data);
                    a.href = window.URL.createObjectURL(new Blob(binaryData, {type: "application/pdf"}));
                    a.download = "Estimation.pdf";
                    a.style.display = 'none';
                    document.body.appendChild(a);
                    a.click();
                }
            });

Есть обработка ответа от сервлета

response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=Estimation.pdf");

Что я должен сделать, чтобы решить эту проблему?

Большое спасибо.

1 Ответ

1 голос
/ 20 мая 2019

установка responseType на blob делает трюк, добавьте xhrFields: {responseType: "blob"} к существующему коду,

          $.ajax({
                type: "POST",
                url: "<SERVLET_PATH>",
                contentType: "application/json",
                cache: false,
                data: that.parsedEstimator,
                xhrFields: {responseType: "blob"},
                success: function (data) {
                    a = document.createElement('a');
                    var binaryData = [];
                    binaryData.push(data);
                    a.href = window.URL.createObjectURL(new Blob(binaryData, {type: "application/pdf"}));
                    a.download = "Estimation.pdf";
                    a.style.display = 'none';
                    document.body.appendChild(a);
                    a.click();
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...