Я создаю на сервере PDF-документ, который я хочу показать тогда на клиенте. Серверная сторона выглядит следующим образом:
ByteArrayOutputStream baos = generatePDF();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=file.pdf");
response.setContentLength(baos.size());
baos.writeTo(response.getOutputStream());
В клиенте у меня есть следующий код для получения PDF файла:
$.ajax({
type: "POST",
url: url,
data: {"data": JSON.stringify(myData)},
success: function(data, textStatus, jqXHR) {
window.open("data:application/pdf," + escape(data));
},
error: function(jqXHR) {
showError("...");
}
});
Хорошо выглядит, новое окно открыто, но PDF не отображается. Он всегда появляется пустой документ.
Тем не менее, если клиент выглядит следующим образом, он отлично работает:
var form = $("<form target='_blank'>").attr({
action : myURL,
method : "POST"
});
var input1 = $("<input type='hidden'>").attr({
"name": "data",
value: JSON.stringify(myData)
});
form.append(input1);
$("body").append(form);
form.submit();
form.remove();
Но я не могу использовать второй способ, потому что мне нужно управлять ошибками, и я не могу сделать это, используя form.submit().
Любая идея о том, что происходит с PDF?