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