Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie kann ich mithilfe von JavaScript zuverlässig eine PDF-Datei aus einer Webdienstantwort über verschiedene Browser hinweg herunterladen?

Patricia Arquette
Freigeben: 2024-10-28 03:14:30
Original
580 Leute haben es durchsucht

How can I reliably download a PDF file from a web service response across different browsers using JavaScript?

Erstellen von PDF-Dokumenten aus Webdienst-Antworten in JavaScript

Das Erstellen von PDF-Dokumenten aus von Webdiensten zurückgegebenen Binärzeichenfolgen stellt eine browserübergreifende Herausforderung dar. Die data-uri-Methode ist zwar in bestimmten Browsern wie Chrome und Opera effektiv, greift jedoch in IE9 und Firefox zu kurz.

Alternativer Ansatz: Clientseitiger Dateidownload

Zu Um diese Einschränkungen zu überwinden, besteht ein alternativer Ansatz darin, PDF-Dateien im Dateisystem zum Herunterladen durch den Benutzer zu erstellen. Um dies zu erreichen, berücksichtigen Sie Folgendes:

Antworttyp auf Blob festlegen

Konfigurieren Sie die Eigenschaft „responseType“ des XMLHttpRequest-Objekts auf „blob“ anstelle von „text“. Dadurch kann der Client die PDF-Daten als Blob-Objekt empfangen.

Verwendung des Blob-Objekts

Erstellen Sie ein neues Blob-Objekt mit der von der Webdienstanforderung erhaltenen Antwort .

Generieren einer Objekt-URL

Generieren Sie eine Objekt-URL für das Blob-Objekt, das die PDF-Datei darstellt.

Erstellen eines Downloads Link

Erstellen Sie ein HTML--Element und legen Sie dessen href- und Download-Attribute fest. Das href-Attribut sollte auf die Objekt-URL verweisen, während das Download-Attribut den Dateinamen angibt.

Auslösen des Downloads

Fügen Sie das -Element an den Dokumenttext an und klicken Sie darauf, um den Dateidownload zu starten.

Beispielcode

Der folgende JavaScript-Code demonstriert diesen Ansatz:

<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) {
        // Generate .pdf name as `Blob` from `this.response`
        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` after `Save As` dialog
        window.onfocus = function () {
            document.body.removeChild(a);
        };
    };
};
request.send();</code>
Nach dem Login kopieren

Diese Methode stellt sicher ein zuverlässiger Datei-Download über mehrere Browser hinweg, einschließlich IE9, Firefox, Chrome, Opera und Safari.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von JavaScript zuverlässig eine PDF-Datei aus einer Webdienstantwort über verschiedene Browser hinweg herunterladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!