【发布时间】:2022-11-22 10:37:13
【问题描述】:
我想输入任何 Base64 字符串来运行并从那里获取 PDF。所以尝试了这种方式,它下载了PDF但是有一个错误
“无法加载 PDF 文档。”
这是我尝试过的方式
let data = "SGVsbG8gd29ybGQ=" //hello world
var bufferArray = this.base64ToArrayBuffer(data);
var binary_string = window.atob(data)
var len = bufferArray.length;
var bytes = new Uint8Array(len);
for (var i = 0; i < len; i++) {
bytes[i] = binary_string.charCodeAt(i);
}
let blob = new Blob([bytes.buffer], { type: 'application/pdf' })
var url = URL.createObjectURL(blob);
window.open(url);
//convert base64 string to arraybuffer
base64ToArrayBuffer(data) {
var bString = window.atob(data);
var bLength = bString.length;
var bytes = new Uint8Array(bLength);
for (var i = 0; i < bLength; i++) {
var ascii = bString.charCodeAt(i);
bytes[i] = ascii;
}
return bytes;
};
【问题讨论】:
-
什么是
this.base64ToArrayBuffer? -
抱歉 - 我已经编辑了问题@CryptoAlgorithm
-
我倾向于认为你在最终创建
Blob之前所做的两个转换阶段有问题 -
@ericmp - 我试过它不起作用 (jsfiddle.net/Janaka_Ravindra/5fc8poy9/1)
-
@CryptoAlgorithm 你知道在创建 blob 之前发生了什么错误吗
标签: javascript