Heim > Artikel > Web-Frontend > Wie lade ich mithilfe von JavaScript eine PDF-Datei aus einer von einem Webdienst zurückgegebenen Binärzeichenfolge herunter?
So erstellen Sie eine PDF-Datei aus einer von einem Webdienst zurückgegebenen Binärzeichenfolge mit JavaScript
Beim Versuch, eine PDF-Datei daraus zu rendern, treten Probleme auf eine binäre Zeichenfolge, die über eine Ajax-Anfrage empfangen wurde. Webbrowser, nämlich Firefox und Internet Explorer 9, stellen bei der Verwendung der data:uri-Lösung Herausforderungen dar.
Problem
Die empfangene Binärzeichenfolge ähnelt der folgenden:
%PDF-1.4.... ..... ....hole data representing the file .... %% EOF
Lösungsversuch
Das Einbetten der Daten über data:uri erweist sich in Opera und Chrome als effektiv, schlägt jedoch in Firefox und Internet Explorer fehl.
Mögliche Lösung
Erwägen Sie, die PDF-Datei im Dateisystem zu erstellen, um den Download durch den Benutzer zu ermöglichen. Diese Methode erfordert eine clientseitige Lösung und Kompatibilität mit den wichtigsten Browsern.
Überarbeitete Lösung
Ändern Sie den Antworttyp XMLHttpRequest in „blob“. Ersetzen Sie dann die Funktion window.open durch ein Download-Attribut an einem -Element. Dieser Prozess initiiert den Download der XMLHttpRequest-Antwort als „.pdf“-Datei.
<code class="javascript">var request = new XMLHttpRequest(); request.open("GET", "/path/to/pdf", true); request.responseType = "blob"; request.onload = function (e) { if (this.status === 200) { // `blob` response console.log(this.response); // create `objectURL` of `this.response` : `.pdf` as `Blob` var file = window.URL.createObjectURL(this.response); var a = document.createElement("a"); a.href = file; a.download = this.response.name || "detailPDF"; document.body.appendChild(a); a.click(); // remove `a` following `Save As` dialog, // `window` regains `focus` window.onfocus = function () { document.body.removeChild(a) } }; }; request.send();</code>
Das obige ist der detaillierte Inhalt vonWie lade ich mithilfe von JavaScript eine PDF-Datei aus einer von einem Webdienst zurückgegebenen Binärzeichenfolge herunter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!