Ich habe diese Web API
post-Methode, um eine PDF zu generieren:
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?
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:
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.
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%Tags und Links asp.net-web-api angularjs