Heim > Web-Frontend > js-Tutorial > 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
Freigeben: 2024-10-29 05:40:02
Original
638 Leute haben es durchsucht

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
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage