Javascript: PDF in neuem Tab aus Byte-Array öffnen
Lesezeit: 2 Minuten
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);
});
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
Aniltilanthe
Sie müssten den responseType in Ihrem Serviceaufruf übergeben
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
14427700cookie-checkJavascript: PDF in neuem Tab aus Byte-Array öffnenyes
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