web-dev-qa-db-fra.com

Javascript: Ouvrir PDF dans le nouvel onglet du tableau d'octets

J'utilise AngularJS avec une ressource HTTP pour appeler une API externe et ma réponse est un tableau d'octets. J'ai besoin de transformer ce tableau d'octets en un PDF dans une nouvelle fenêtre. Je n'ai pas vu de très bonnes solutions ici qui fonctionnent avec plusieurs navigateurs ou qui sont du pur javascript. Existe-t-il un moyen de faire ça?

Voici mon code:

Javascript

Document.preview({id: $scope.order.id}, function(data){

    // Open PDF Here
    var file = new Blob([data], {type: 'application/pdf'});
    var fileURL = URL.createObjectURL(file);
    window.open(fileURL);

});
12
Jeremy Wagner

Si quelqu'un cherche toujours cela, voici ce que je fais (et travaille):

var pdfAsDataUri = "data:application/pdf;base64,"+byteArray;
window.open(pdfAsDataUri);

Où byteArray correspond aux données que vous recevez. Ce n'est peut-être pas une bonne solution (le tableau d'octets est visible dans l'URL), mais cela fonctionne ...

11
Gonnarule

Vous devez transmettre le type de réponse dans votre appel de service

$http.post('/Service-URL', dataTO, {responseType: 'arraybuffer'});

puis dans le succès de votre appel de données, cela devrait ouvrir le pdf dans une nouvelle fenêtre: -

    InfoFactory.getDocument()
        .success(function(data) {
            var file = new Blob([data], { type: 'application/pdf' });
            var fileURL = URL.createObjectURL(file);
            window.open(fileURL, "EPrescription");
    })

De cette réponse: - https://stackoverflow.com/a/21730535/3645957 par https://stackoverflow.com/users/2688545/michael

9
aniltilanthe