如何将字节数组转换为pdf并下载

时间:2017-08-24 16:54:55

标签: javascript blob filesaver.js

我正在尝试将http响应下载到pdf。我正在生成一个pdf文件,但我收到“无法打开PDF”的错误。

这是响应的样子。 screenshot

这就是我在做的事。

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

2 个答案:

答案 0 :(得分:4)

响应中的字符串似乎是Base-64编码(参考小提琴)。您可以使用fetch()(或旧版浏览器XMLHttpRequest())对其进行解码:

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

答案 1 :(得分:0)

如果有人在寻找相同问题的解决方案,here 是一篇支持跨浏览器的好文章。

文章摘录:

<块引用>
const binaryString = window.atob(fileResponseData);
const bytes = new Uint8Array(binaryString.length);
const mappedData = bytes.map((byte, i) => binaryString.charCodeAt(i));
const blob = new Blob([mappedData], { type: 'application/pdf' });
FileSaver.saveAs(blob, 'foo.pdf')