提问人:Domovyak 提问时间:11/17/2023 更新时间:11/17/2023 访问量:31
无法将PDF文件转换为uint8Array
Unable to convert PDF file to uint8Array
问:
我无法将 PDF 文件转换为 uint8,这是我作为对 API 请求的响应而获得的。在控制台中打印出响应时,其形式如下:
%PDF-1.4
%����
1 0 obj
<</CreationDate(D:20231025135518+02'00')/Creator( ... >>
endobj
2 0 obj
...
我正在尝试在新的浏览器选项卡中显示我作为响应获得的 PDF。我用于转换和显示此响应的代码片段如下所示:
let response = await this.getDocument(id);
if(response.status === 200){
let responseText = await response.text();
let uint8Array = new Uint8Array(responseText.length);
for (let i = 0; i < responseText.length; i++) {
uint8Array[i] = responseText.charCodeAt(i);
}
var file = new Blob([uint8Array], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
}
当我运行此代码时,会打开一个新的浏览器选项卡,但它显示的 pdf 是空的。当使用 Postman 运行相同的请求时,我得到相同的响应,只是 Postman 能够显示正确的 PDF 而不是空白的 PDF。运行会打印出前面所述的响应,这与我在 Postman 中得到的响应相同。console.log(responseText);
在这一点上,我应该补充一点,这段代码是Lightning Web组件的一部分,我正在尝试在Salesforce上开发,以防有效的答案不起作用。
一段时间以来,我一直在尝试弄清楚如何解决这个问题,因此欢迎任何帮助或指示。
答:
0赞
BadPiggie
11/17/2023
#1
尝试将响应作为 ArrayBuffer 而不是 .然后,将 传递给 Uint8Array 构造函数。text
arrayBuffer
const arrBuff = await response.arrayBuffer();
const uint8Array = new Uint8Array(arrBuff);
const file = new Blob([uint8Array], { type: 'application/pdf' });
评论