Membina Dokumen PDF daripada Respons Perkhidmatan Web dalam JavaScript
Membina dokumen PDF daripada rentetan binari yang dikembalikan oleh perkhidmatan web memberikan cabaran merentas pelayar. Kaedah data-uri, walaupun berkesan dalam penyemak imbas tertentu seperti Chrome dan Opera, gagal dalam IE9 dan Firefox.
Pendekatan Alternatif: Muat Turun Fail Sebelah Pelanggan
Kepada mengatasi batasan ini, pendekatan alternatif melibatkan mencipta fail PDF pada sistem fail untuk muat turun pengguna. Untuk mencapai ini, pertimbangkan perkara berikut:
Menetapkan Jenis Respons kepada Gumpalan
Konfigurasikan sifat responseType objek XMLHttpRequest kepada "gumpalan" dan bukannya "teks". Ini membolehkan pelanggan menerima data PDF sebagai objek Blob.
Menggunakan Objek Blob
Buat objek Blob baharu menggunakan respons yang diperoleh daripada permintaan perkhidmatan web .
Menjana URL Objek
Jana URL objek untuk objek Blob, yang mewakili fail PDF.
Membuat Muat Turun Pautan
Buat elemen HTML dan tetapkan atribut href dan muat turunnya. Atribut href hendaklah menghala ke URL objek, manakala atribut muat turun menentukan nama fail.
Mencetuskan Muat Turun
Tambahkan elemen pada badan dokumen dan klik padanya untuk memulakan muat turun fail.
Kod Contoh
Kod JavaScript berikut menunjukkan pendekatan ini:
<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>
Kaedah ini memastikan muat turun fail yang boleh dipercayai merentas berbilang penyemak imbas, termasuk IE9, Firefox, Chrome, Opera dan Safari.
Atas ialah kandungan terperinci Bagaimanakah saya boleh memuat turun fail PDF dengan pasti daripada respons perkhidmatan web merentas penyemak imbas yang berbeza menggunakan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!