2015-01-28 12 views
8

Ich benutze 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 Cross-Browser funktionieren oder die reines Javascript sind. Gibt es eine Möglichkeit, dies zu tun?Javascript: Öffnen PDF in neue Registerkarte von Byte-Array

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); 

}); 
+0

http://mozilla.github.io/pdf.js einige gute haben Referenz hier –

+0

Ich habe mir das angesehen, aber ich sehe keine guten Beispiele mit einem Byte-Array. Ich habe auch auf http://stackoverflow.com/questions/21628378/angularjs-display-blob-pdf-in-an-angular-app gesucht, aber ich bekomme gerade eine Fehlermeldung "Fehler beim Laden PDF Dokument " –

+0

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

Antwort

11

Wenn jemand dafür sieht immer noch, hier ist, was ich tue (und arbeiten):

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

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

+2

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

+0

jetzt chrome v60 nicht erlauben, Datei von byteArray mit window.open zu öffnen, hat es in Chrom v60 abgeschrieben –

2

Sie müssten die response in Ihrem Service-Aufruf passieren

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

dann in den Erfolg Ihres Datenanruf sollte dies pdf in einem neuen Fenster öffnen -

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

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

Verwandte Themen