javascript - 无法加载 PDF 但可以看到数据
问题描述
我收到 Chrome 无法加载 PDF 文档的错误消息。我可以看到数据的内容是控制台窗口,所以我返回了数据我只是不确定为什么它不会显示?如果我 File.WriteAllBytes
要磁盘,它会很好地打开,所以它可能与创建new Blob
无法加载 PDF 文档。
ts代码
printItems(versionKeys: string[]): JQueryPromise<any> {
console.log('printItems');
$.ajax({
type: "post",
contentType: "application/json",
data: JSON.stringify(versionKeys),
url: this.apiUrls.PrintTemplates,
success: function (data, status, xhr) {
console.log('printItems');
console.log(data);
let blob = new Blob([data.Content], { type: data.ContentType });
var url = URL.createObjectURL(blob);
console.log(url);
window.open(url);
console.log('success');
}
});
return;
}
错误
解决方案
我将base64字符串转换为字节
var binary_string = window.atob(data.Content)
var len = data.Content.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: data.ContentType })
var url = URL.createObjectURL(blob);
window.open(url);