You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pdf-lib生成Uint8Array格式PDF,通过Blob打开显示为空的问题

问题原因及解决办法

你的代码问题出在Blob的创建方式上:
Blob构造函数的第一个参数必须是一个包含二进制数据的数组,而你直接传入了Uint8Array对象。当你直接传pdfBytes时,JS会把它当成类数组对象,将每个字节单独作为数组元素处理,最终生成的Blob内容完全不符合PDF格式,所以查看器显示为空。

修正后的代码

const pdfBytes = await pdfDoc.save();  // create the pdf as uint8array
//download(pdfBytes, fn, "application/pdf");
let blb = new Blob([pdfBytes], {type: 'application/pdf'});  // 把Uint8Array放到数组里
let link = window.URL.createObjectURL(blb);
window.open(link);

补充说明

  • 这样创建的Blob才会正确把Uint8Array中的二进制数据打包成PDF格式的文件
  • 生成的ObjectURL可以正常被浏览器PDF查看器解析,无需保存到本地磁盘

内容的提问来源于stack exchange,提问作者fanThomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:36:40