javascriptblobfilesaver.js

how to convert byte array to pdf and download


I am trying to do a simple task of downloading a http response to a pdf. I am generating a pdf file but I am getting an error of "Failed to open PDF".

Here is what the response looks like. screenshot

And here is what I am doing.

 let blob = new Blob([response.data], { type: 'application/pdf' })
 FileSaver.saveAs(blob, 'foo.pdf')

Solution

  • The string from the response seem to be Base-64 encoded (ref. fiddle). You can decode it using fetch() (or XMLHttpRequest() for older browsers):

    fetch("data:application/pdf;base64," + response.data)
      .then(function(resp) {return resp.blob()})
      .then(function(blob) {
        FileSaver.saveAs(blob, 'foo.pdf')
      });