Wie behandelt man die PDF-Datei von der Web-API in AngularJS?

8

Ich habe diese Web API post-Methode, um eine PDF zu generieren:

%Vor%

In AngularJS möchte ich diese PDF-Datei so erhalten:

%Vor%

Aber wie soll ich mit den PDF-Daten in AngularJS umgehen? Auf dem iPad möchte ich, dass das PDF geöffnet wird, aber wenn die Datei heruntergeladen oder nur auf dem Desktop geöffnet wird, ist das egal.

EDIT1:

Mit der SaveAS JS-Bibliothek kann ich eine funktionierende Lösung auf dem Desktop erstellen:

%Vor%

Die Datei wird direkt auf meinen Desktop heruntergeladen, aber diese Lösung funktioniert aus irgendeinem Grund nicht in iOS. Nichts passiert. Sehen Sie sich dies JSFiddle an.

Gibt es eine andere Möglichkeit, das PDF auf meinem iPad anzuzeigen, ohne die Datei auf meiner Website einzubetten?

    
dhrm 23.03.2015, 13:48
quelle

3 Antworten

3

Wie Ihnen wahrscheinlich bekannt ist, können Sie mit ios-Geräten nicht wie beim Desktop / Laptop eine Datei auf den Speicher / Datenträger herunterladen und speichern.

Heruntergeladene Elemente müssen von einer App geöffnet werden

Da Sie bereits an einer Website arbeiten, scheint der Browser ein natürlicher Kandidat zu sein.

Wie ich vermute möchten Sie nicht die PDF-Datei in Ihre Website einbetten , eine Alternative wäre das PDF in einem neuen Browser-Tab öffnen .

>

Wenn eine solche Lösung für Sie akzeptabel ist, überprüfen Sie bitte diesen SO-Post:

window.open () in einem iPad

Die gelieferte Lösung funktioniert, aber nur wenn Safari so konfiguriert ist, dass Popups nicht blockiert werden.

Ich befürchte, dass dies die only Option für Sie sein könnte. Wenn das iPad die PDF-Datei in Apps wie iBooks speichert, funktioniert das nicht , nach diesem Post. Es kann nicht mit javaScript automatisiert werden.

Nach meinem Wissen gibt es in diesem Fall keine perfekte Lösung, nur eine akzeptable Lösung: Öffnen Sie das PDF in einem neuen Tab im Browser, wenn ios erkannt wurde.

Wenn Sie an diesem Kompromiss interessiert sind und Probleme mit der Implementierung von window.open() haben, stehe ich Ihnen gerne zur Verfügung.

    
Manube 31.03.2015, 20:48
quelle
1

PDFs können groß sein, und wenn Sie mit einem so großen Brocken von Bytes umgehen, sollten Sie lieber stream diese Bytes als irgendwo in eine Variable sammeln.

Ihr serverseitiger Code erledigt diesen Job bereits. Aber der Content-Typ könnte fehlen.

Auf der Client-Seite empfehle ich Ihnen, in einem separaten Fenster / Tab wie folgt zu öffnen: -

%Vor%     
bhantol 01.04.2015 15:13
quelle
0

Es scheint, dass der Server den MIME-Typ der Antwort nicht auf application / pdf setzt. Versuchen Sie, der http-Antwort einen "Content-Type" -Header hinzuzufügen und das ipad sollte die PDF-Datei in der zugehörigen App öffnen.

    
a2800276 01.04.2015 10:53
quelle

Tags und Links