PDF ist leer, wenn das herunterladen mit javascript
Ich habe ein web-service, gibt Inhalt einer PDF-Datei in Ihrer Antwort. Ich will zum download als pdf-Datei, wenn der Benutzer auf den link klickt. Der javascript-code, den ich geschrieben habe in der Benutzeroberfläche wie folgt:
$http.get('http://MyPdfFileAPIstreamURl').then(function(response){
var blob=new File([response],'myBill.pdf',{type: "text/pdf"});
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download="myBill.pdf";
link.click();
});
'Antwort' enthält die PDF-byte-array-servlet-Ausgabestrom "MyPdfFileAPIstreamURl'. Und auch der Strom ist nicht verschlüsselt.
So, wenn ich auf den link klicken, PDF-Datei heruntergeladen, erfolgreich Größe von rund 200KB. Aber wenn ich diese Datei öffnen, es öffnet sich mit leeren Seiten. Der Start Inhalt des heruntergeladenen pdf-Datei ist im image.
Kann ich nicht verstehen, was ist hier falsch. Hilfe!!!
Dies ist die heruntergeladene pdf-Datei ab Inhalt:
Geändert, application /pdf, aber Problem ist immer noch die gleiche.
Dennoch ist es falsch zu verwenden text - /pdf-Datei hier. Darüber hinaus kann Ihr screenshot sieht aus wie irgendwo entlang der Linie etwas code behandelt die Datei als text, Lesen Sie es mit einem single-byte-Kodierung (Latin1) und schreiben Sie es mit UTF-8.
Das könnte Ihnen helfen: stackoverflow.com/a/31763030/5042982. Hinzufügen
responseType :blob
war für mich in AngularJS.InformationsquelleAutor programmer129 | 2015-12-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
gelöst via XMLHttpRequest und
xhr.responseType = 'arraybuffer';
code:
Danke. Das hat mir wirklich geholfen und gearbeitet
Danke @Alexey hat es bei mir auch.
InformationsquelleAutor Alexey G
holte ich mir die Daten vom server als string(die base64-codierte Zeichenfolge) und dann auf der client-Seite, die ich decodiert es zu base64 und dann zu array buffer.
Beispielcode
wow, vielen Dank für Ihre Kommentare
Ok funktioniert in der desktop-und der android-Browser. Getestet auf dem iPhone (safari und chrome) und hat nicht funktioniert.
Danke!!! Mit createObjectURL geholfen mit der fehlerhaften Netzwerk-Fehler, die ich hatte, aber meine PDF nicht geöffnet werden konnte, aber deine Lösung habe es funktioniert.
Ab 2018 durch die Nutzung von chrome / windows 10 dies funktioniert wie erhofft.
InformationsquelleAutor Sajjad Ali Khan