首页  >  文章  >  web前端  >  如何使用 JavaScript 从 Web 服务返回的二进制字符串下载 PDF 文件?

如何使用 JavaScript 从 Web 服务返回的二进制字符串下载 PDF 文件?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-29 05:40:02580浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn