我正在尝试将http响应下载到pdf。我正在生成一个pdf文件,但我收到“无法打开PDF”的错误。
这就是我在做的事。
let blob = new Blob([response.data], { type: 'application/pdf' })
FileSaver.saveAs(blob, 'foo.pdf')
答案 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')