Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Menjana PDF daripada Respons Perkhidmatan Web Binari dalam JavaScript Merentasi Pelayar?

Bagaimana untuk Menjana PDF daripada Respons Perkhidmatan Web Binari dalam JavaScript Merentasi Pelayar?

Barbara Streisand
Barbara Streisandasal
2024-10-26 21:33:29431semak imbas

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

Membina PDF daripada Binari Web-Service Response dalam JavaScript

Latar Belakang:

Soalan ini menangani cabaran menjana fail PDF daripada rentetan binari yang diambil melalui permintaan Ajax. Strim binari yang disediakan terdiri daripada pengepala dan kandungan PDF. Walaupun kaedah data-uri berfungsi dalam sesetengah penyemak imbas, ia gagal dalam Internet Explorer 9 dan Firefox.

Isu:

Kebimbangan terletak pada mencari penyemak imbas silang penyelesaian yang membenarkan membina fail PDF daripada respons binari tanpa bergantung pada pengeditan pelaksanaan perkhidmatan web.

Penyelesaian:

Untuk menyelesaikan isu ini, pendekatan berikut ialah dicadangkan:

Memanfaatkan Gumpalan dan Muat Turun Atribut:

Dengan menetapkan responsType objek XMLHttpRequest kepada "gumpalan," respons akan diterima sebagai objek Gumpalan. Blob ini mewakili fail PDF. Selepas itu, anda boleh membuat pautan muat turun menggunakan kaedah createObjectURL untuk membenarkan pengguna memuat turun PDF.

Untuk menunjukkan penyelesaian ini, coretan kod berikut boleh digunakan:

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

Faedah:

Kaedah ini menawarkan kelebihan berikut:

  • Keserasian dengan semua penyemak imbas utama, termasuk IE9, Firefox, Opera, Chrome dan Safari
  • Mengelakkan kekurangan yang dihadapi dengan pendekatan data-uri dalam sesetengah pelayar
  • Membolehkan pengguna memuat turun fail PDF dengan mudah

Atas ialah kandungan terperinci Bagaimana untuk Menjana PDF daripada Respons Perkhidmatan Web Binari dalam JavaScript Merentasi Pelayar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn