I'm generating in a server a PDF document that I want to show then in the client. The server side looks like following:
ByteArrayOutputStream baos = generatePDF();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=file.pdf");
response.setContentLength(baos.size());
baos.writeTo(response.getOutputStream());
In the client, I have the following code to get retrieve the 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("...");
}
});
It looks well, the new window is opened, but the PDF is not shown. It always appears an empty document.
Nevertheless, if the client looks like following, it works fine:
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();
But I can't use the second way cause I need to manage the errors, and I can't do it using form.submit().
Any idea about what's happening with the PDF?
Please try the following steps: Go to Edit (Windows), Adobe Reader / Adobe Acrobat DC (Mac) > Preferences > General > Select, Open documents as new tabs in the same window > OK. Restart the application and check.
You can have an iframe inside the modal markup and give the src attribute of it as the link to your pdf. On click of the link you can show this modal markup.
Solution 1RegisterStartupScript(this. GetType(), "open", "window. open('"+path+"','_blank', 'fullscreen=yes');", true);
You can get base64 string of your pdf stream and pass it to response.
And your method change
$.ajax({
type: "POST",
url: url,
data: {"data": JSON.stringify(myData)},
success: function(data, textStatus, jqXHR) {
var pdfWin= window.open("data:application/pdf;base64, " + data, '', 'height=650,width=840');
// some actions with this win, example print...
},
error: function(jqXHR) {
showError("...");
}
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With