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

Adobe PDF Embed API获取的Int8Array格式PDF如何转Base64

可行解决方案

1. 小文件同步方案

直接复用Int8Array底层的二进制缓冲区生成Uint8Array,再转Base64即可:

// content为你拿到的Int8Array类型的PDF数据
const uint8Content = new Uint8Array(content.buffer);
const base64 = btoa(String.fromCharCode.apply(null, uint8Content));
// 拿到base64后即可直接上传AWS

2. 大文件异步方案(推荐,避免栈溢出)

如果PDF体积较大,使用Blob+FileReader的异步方案更稳定:

function int8PDFToBase64(int8Arr) {
  return new Promise((resolve, reject) => {
    const uint8 = new Uint8Array(int8Arr.buffer);
    const reader = new FileReader();
    reader.onload = () => resolve(reader.result.split(',')[1]);
    reader.onerror = reject;
    reader.readAsDataURL(new Blob([uint8], { type: 'application/pdf' }));
  });
}

// 调用示例
int8PDFToBase64(content).then(base64 => {
  // 此处直接使用转换完成的纯Base64内容
  console.log(base64);
});

错误原因说明

  • 之前使用TextDecoder('utf8')解码是错误的:PDF是二进制文件,不是UTF-8编码的文本,强制解码会生成大量超出Latin1范围的特殊字符,直接触发btoa的编码限制报错。
  • 不需要手动给Int8的每个值加128转Uint8:Int8Array和Uint8Array只是对同一段底层ArrayBuffer数据的不同读取视图,直接传入buffer构造新的Uint8Array即可实现无损转换,不需要手动修改任何字节值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 05:45:03