Javascript: PDF in neuem Tab aus Byte-Array öffnen

Lesezeit: 2 Minuten

Benutzeravatar von Jeremy Wagner
Jeremy Wagner

Ich verwende AngularJS mit einer HTTP-Ressource, um eine externe API aufzurufen, und meine Antwort ist ein Byte-Array. Ich muss dieses Byte-Array in einem neuen Fenster in ein PDF umwandeln. Ich habe hier keine sehr guten Lösungen gesehen, die browserübergreifend funktionieren oder reines Javascript sind. Gibt es eine Möglichkeit, dies zu tun?

Hier ist mein 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);

});

  • mozilla.github.io/pdf.js habe hier eine gute Referenz

    – AAH-Schieß

    28. Januar 2015 um 16:24 Uhr


  • Ich habe mir das angesehen, aber ich sehe keine guten Beispiele für die Verwendung eines Byte-Arrays. Ich habe mir auch stackoverflow.com/questions/21628378/… angesehen, aber ich erhalte nur die Fehlermeldung „Fehler beim Laden des PDF-Dokuments“.

    – Jeremy Wagner

    28. Januar 2015 um 16:32 Uhr

  • Gibt es irgendwelche proprietären Plugins oder irgendetwas, um dies zu tun? Mehrere Seiten öffnen pdf’s, wie kann ich das?

    – Jeremy Wagner

    29. Januar 2015 um 15:29 Uhr

Benutzeravatar von aniltilanthe
Aniltilanthe

Sie müssten den responseType in Ihrem Serviceaufruf übergeben

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

dann sollte nach erfolgreichem Datenaufruf das PDF in einem neuen Fenster geöffnet werden: –

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

Aus dieser Antwort: – https://stackoverflow.com/a/21730535/3645957 von https://stackoverflow.com/users/2688545/michael

  • @ihodonald Es ist ein optionales Attribut ‘name’. Es war ein Tippfehler in der Antwort. Aber es ist optional, also nicht notwendig. wie von hier w3schools.com/jsref/met_win_open.asp -> Ich habe es aus der Antwort entfernt.

    – aniltilanthe

    6. Januar 2020 um 15:31 Uhr


  • Alter, dieses Ding: {responseType: ‘arraybuffer’} rettet mein Leben. Vielen Dank! 😊

    – Sergio Danilo

    23. Januar 2021 um 18:08 Uhr


Wenn noch jemand danach sucht, hier ist, was ich tue (und arbeite):

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

Wobei byteArray die Daten sind, die Sie erhalten. Es ist vielleicht keine schöne Lösung (Byte-Array ist in der URL sichtbar), aber es funktioniert …

  • Daten-URIs funktionieren nicht in allen Browsern. Vor allem auch neuere Versionen von IE.

    – Deusprogrammierer

    17. Februar 2017 um 22:04 Uhr

  • Jetzt erlaubt Chrome v60 nicht, Dateien von byteArray mit window.open zu öffnen, es hat in Chrome v60 abgeschrieben

    – Sajjad Ali Khan

    10. August 2017 um 13:26 Uhr


  • Versucht mit v94 und es funktionierte

    – Mahmud Hboubati

    5. Oktober 2021 um 10:57 Uhr

  • Hübsch. funktioniert mit Chrome 108-Version. Ich muss ein Bytearray schnell überprüfen und diese Methode ist nützlich

    – Erstpostkommentator

    12. Januar um 12:51 Uhr


1442770cookie-checkJavascript: PDF in neuem Tab aus Byte-Array öffnen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy