Heim  >  Artikel  >  Web-Frontend  >  Wie lade ich mithilfe von JavaScript eine PDF-Datei aus einer von einem Webdienst zurückgegebenen Binärzeichenfolge herunter?

Wie lade ich mithilfe von JavaScript eine PDF-Datei aus einer von einem Webdienst zurückgegebenen Binärzeichenfolge herunter?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 05:40:02589Durchsuche

How to Download a PDF File from a Binary String Returned by a Web Service Using JavaScript?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn