首頁 > web前端 > js教程 > 主體

如何使用 JavaScript 從 Web 服務傳回的二進位字串下載 PDF 檔案?

Mary-Kate Olsen
發布: 2024-10-29 05:40:02
原創
588 人瀏覽過

How to Download a PDF File from a Binary String Returned by a Web Service Using JavaScript?

如何使用JavaScript 從Web 服務傳回的二進位字串建立PDF 檔案

嘗試從以下位置渲染PDF 檔案時會遇到問題透過Ajax 請求接收的二進位字串。 Web 瀏覽器(即 Firefox 和 Internet Explorer 9)在使用 data:uri 解決方案時會帶來挑戰。

問題

收到的二進位字串類似於以下內容:

%PDF-1.4....
.....
....hole data representing the file
....
%% EOF
登入後複製

嘗試的解決方案

透過data:uri 嵌入資料在Opera 和Chrome 中有效,但在Firefox 和Internet Explorer 中失敗。

潛在的解決方案

考慮在檔案系統上建立 PDF 檔案以允許使用者下載。此方法需要客戶端解決方案並與主要瀏覽器相容。

修訂的解決方案

將 XMLHttpRequest 回應類型修改為「blob」。然後,用 元素中的 download 屬性取代 window.open 函數。此程序啟動將 XMLHttpRequest 回應下載為「.pdf」檔案。

<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>
登入後複製

以上是如何使用 JavaScript 從 Web 服務傳回的二進位字串下載 PDF 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板