我正在使用Web服务获取base64字符串,我需要将该文档以PDF格式显示给用户。
var charactersArray = atob(base64String);
var byteNumbers = new ArrayBuffer(charactersArray.length);
for (var i = 0; i < charactersArray.length; i++) {
byteNumbers[i] = charactersArray.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var file = new File([byteArray], "file.pdf", {
type: "application/pdf",
});
然后我要使用此“文件”来创建
的网址var url = URL.createObjectURL(file);
我正在使用ng-click指令在一个按钮中打开此网址,但是我正在加载PDF。
答案 0 :(得分:2)
我最近从事类似这样的项目,并且遇到了同样的问题。我使用base64-arraybuffer NPM library 将base64字符串转换为字节数组。
这是一个JS库,因此在安装后需要这样导入:
import * as buffer from 'base64-arraybuffer';
对象URL的创建如下:
var byteArray = buffer.decode(base64String);
var file = new Blob([byteArray], {type: 'application/pdf'});
var pdfUrl = URL.createObjectURL(file);
我希望这会有所帮助!
答案 1 :(得分:2)
您需要将字符代码写入byteArray
而不是ArrayBuffer
var charactersArray = atob(base64String);
var len = charactersArray.length;
var byteNumbers = new ArrayBuffer(len);
var byteArray = new Uint8Array(byteNumbers);
for (var i = 0; i < len; i++) {
byteArray[i] = charactersArray.charCodeAt(i);
}
var file = new File([byteArray], "file.pdf", {
type: "application/pdf",
});