Heim  >  Artikel  >  Web-Frontend  >  Wie erstelle ich eine PDF-Datei aus einer binären Webdienst-Antwort in JavaScript in allen Browsern?

Wie erstelle ich eine PDF-Datei aus einer binären Webdienst-Antwort in JavaScript in allen Browsern?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 21:33:29337Durchsuche

How to Generate a PDF from a Binary Web-Service Response in JavaScript Across Browsers?

PDF aus binärer Web-Service-Antwort in JavaScript erstellen

Hintergrund:

Diese Frage befasst sich mit der Herausforderung, eine PDF-Datei aus einer Binärzeichenfolge zu generieren, die über eine Ajax-Anfrage abgerufen wird. Der bereitgestellte Binärstream besteht aus dem PDF-Header und dem Inhalt. Während die data-uri-Methode in einigen Browsern funktioniert, schlägt sie in Internet Explorer 9 und Firefox fehl.

Das Problem:

Die Sorge besteht darin, einen Cross-Browser zu finden Lösung, die das Erstellen einer PDF-Datei aus der binären Antwort ermöglicht, ohne auf die Bearbeitung der Webdienst-Implementierung angewiesen zu sein.

Lösung:

Um dieses Problem zu beheben, ist der folgende Ansatz vorgeschlagen:

Nutzung von Blobs und Download-Attributen:

Durch Festlegen des Antworttyps des XMLHttpRequest-Objekts auf „blob“ wird die Antwort als Blob-Objekt empfangen. Dieser Blob stellt die PDF-Datei dar. Anschließend können Sie mithilfe der Methode „createObjectURL“ einen Download-Link erstellen, um Benutzern das Herunterladen der PDF-Datei zu ermöglichen.

Um diese Lösung zu demonstrieren, kann das folgende Code-Snippet verwendet werden:

<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>

Vorteile:

Diese Methode bietet die folgenden Vorteile:

  • Kompatibilität mit allen gängigen Browsern, einschließlich IE9, Firefox, Opera, Chrome und Safari
  • Vermeidet die Mängel, die beim Daten-URI-Ansatz in einigen Browsern auftreten
  • Ermöglicht Benutzern das bequeme Herunterladen der PDF-Datei

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine PDF-Datei aus einer binären Webdienst-Antwort in JavaScript in allen Browsern?. 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