Как преобразовать данные base64 байта в загружаемый файл PDF? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть закодированные данные base64 из ответа API и сохранены в переменной encodedBase64.

let encodedBase64 = 'некоторые длинные закодированные 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., что не так в моем коде?

1 Ответ

0 голосов
/ 25 февраля 2020

трудно сделать это, используя переднюю часть

, но это можно легко сделать, используя Nodejs, используя следующий код.

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