2017-08-24 3 views
0

J'essaie de faire une tâche simple de télécharger une réponse http à un pdf. Je génère un fichier pdf mais je reçois une erreur de "Impossible d'ouvrir le fichier PDF".comment convertir un tableau d'octets en pdf et le télécharger

Voici à quoi ressemble la réponse. screenshot

Et voici ce que je fais.

let blob = new Blob([response.data], { type: 'application/pdf' }) 
FileSaver.saveAs(blob, 'foo.pdf') 
+1

La réponse, il ne ressemble pas à un fichier PDF (PDF est un fichier texte et devrait commencer par '% PDF.'). Avez-vous vérifié que XMLHttpRequest utilise l'URI correct? – K3N

+0

Je ne suis pas sûr de ce que c'est. J'essaie différentes manières de l'afficher. voici un violon que j'ai fourchu et ajouté la réponse. Peut-être que cela aidera à comprendre? – texas697

+0

http://jsfiddle.net/8vzz8sk9/ – texas697

Répondre

1

La chaîne de la réponse semble être codée en Base 64 (référence violon). Vous pouvez le décoder en utilisant fetch() (ou XMLHttpRequest() pour les anciens navigateurs):

fetch("data:application/pdf;base64," + response.data) 
    .then(function(resp) {return resp.blob()}) 
    .then(function(blob) { 
    FileSaver.saveAs(blob, 'foo.pdf') 
    });