ho fatto la domanda di età molto tempo, così mi potrebbe essere sbagliato in alcuni dettagli.
Blob
come risultato necessita di buffer di array. Ecco perché i byte base64 devono essere prima convertiti in buffer di array.
Qui è la funzione per farlo:
function base64ToArrayBuffer(base64) {
var binaryString = window.atob(base64);
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;
}
Qui è la mia funzione per salvare un file pdf:
function saveByteArray(reportName, byte) {
var blob = new Blob([byte]);
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
var fileName = reportName + ".pdf";
link.download = fileName;
link.click();
};
Ecco come utilizzare queste due funzioni insieme:
var sampleArr = base64ToArrayBuffer(data);
saveByteArray("Sample Report", sampleArr);
fonte
2016-05-20 07:38:54
Questo è un po 'di un commento +1. Sto cercando di fare la stessa cosa, e con gli stessi risultati, un PDF corrotto. Il PDF si aprirà, ha lo stesso numero di pagine che mi aspetto, ma non c'è testo. Sospetto che il problema risieda nella codifica del PDF o nella conversione da "[resultByes]" in un blob ... Mi piacerebbe sapere se hai trovato una soluzione. –
@runlevelsix, sì l'ho capito! Si prega di vedere la mia risposta qui sotto e vedere se funziona anche per te –