繁体   English   中英

如何将 base64 字节数据转换为可下载的 pdf 文件?

[英]How to convert base64 byte data into downloadable pdf file?

我有一个来自 API 响应的编码 base64 数据并存储在一个变量 encodingBase64 中。

let encodingBase64 = '一些 base64 编码的长数据';

function base64ToArrayBuffer(base64) {
    var binaryString = window.atob(base64);
    console.log('binaryString ', binaryString);
    var binaryLen = binaryString.length;
    var bytes = new Uint8Array(binaryLen);
    for (var i = 0; i < binaryLen; i++) {
       var ascii = binaryString.charCodeAt(i);
       bytes[i] = ascii;
    }
    return bytes;
 }

 function saveByteArray(reportName, byte) {
    var blob = new Blob([byte], {type: "application/pdf"});
    var link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);
    var fileName = reportName;
    link.download = fileName;
    link.click();
};

var sampleArr = base64ToArrayBuffer(encodedBase64);
saveByteArray("Sample Report", sampleArr); 

执行此代码后,我可以下载 pdf 文件名SampleReport.pdf但是当我打开它时,它显示Failed to load PDF document. 错误我的代码有什么问题?

使用前端侧很难完成

但是可以使用以下代码使用 Nodejs 轻松完成。

fs.writeFile('pdfFileName.pdf', base64DataString, {encoding: 'base64'}, error => {
    if (error) {
        throw error;
    } else {
        console.log('buffer saved!');
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM