Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Print PDF from BLOB

Im getting a PDF file from and external API, using this code I can download the file correctly:

var req = new XMLHttpRequest();
    req.open("POST", url, true);
    req.responseType = "blob";
    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    req.send(data);

    req.onload = function (event) {
       var blob = req.response;
       var link=document.createElement('a');
       link.href=window.URL.createObjectURL(blob);
       link.download="receipt_" + new Date() + ".pdf";
       link.click();
    };

But what I really need is to print the file without open it, I tried something like

window.open(window.URL.createObjectURL(blob));
window.print();

But when do this way the file does not show correctly, It shows something like this:

PDF-1.7
%����
6 0 obj
<< /Type /Page /Parent 1 0 R /LastModified (D:20201027223421-03'00') ... bla bla

Thanks in advance!

like image 395
Tomás Díaz Toro Avatar asked Oct 23 '25 16:10

Tomás Díaz Toro


1 Answers

I have already solve this using:

req.onload = function (event) {
    var blob = new Blob([req.response], {type: 'application/pdf'}); //this make the magic
    var blobURL = URL.createObjectURL(blob);

    iframe =  document.createElement('iframe'); //load content in an iframe to print later
    document.body.appendChild(iframe);

    iframe.style.display = 'none';
    iframe.src = blobURL;
    iframe.onload = function() {
      setTimeout(function() {
        iframe.focus();
        iframe.contentWindow.print();
      }, 1);
    };
};
like image 86
Tomás Díaz Toro Avatar answered Oct 25 '25 05:10

Tomás Díaz Toro