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

how to convert byte array to pdf and download

我正在尝试执行一项简单的任务,将 http 响应下载到 pdf。我正在生成一个 pdf 文件,但出现 "Failed to open PDF".

错误

这是响应的样子。

这就是我正在做的事情。

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

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

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

如果有人正在寻找解决相同问题的方法,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')