使用 Internet Explorer 10 及更低版本保存 Base64 编码的 PDF
Posted
技术标签:
【中文标题】使用 Internet Explorer 10 及更低版本保存 Base64 编码的 PDF【英文标题】:Saving Base64 encoded PDF with Internet Explorer 10 and below 【发布时间】:2015-01-25 02:28:18 【问题描述】:我最近开始使用Bootstrap Table 和export plugin。我遇到的一个问题是导出插件不适用于 IE,因为文件是使用 IE 不支持的 Data URI 输出的(我想我读到 IE 11 支持它,但我的组织中没有人使用当然是 IE 11。)。
我唯一有兴趣导出的文件类型是 Microsoft Office 类型(Word、Excel)和 PDF。 我已经为 MS 文件创建了一个有效的解决方法。
if (supportsDataUriNavigation())
window.open('data:application/vnd.ms-' + defaults.type + ';filename=exportData.doc;' + base64data);
else
var iframe = document.getElementById("dataFrame");
iframe = iframe.contentWindow || iframe.contentDocument;
iframe.document.open("text/html", "replace");
iframe.document.write(excelFile);
iframe.document.close();
iframe.focus();
iframe.document.execCommand("SaveAs", true, defaults.fileName + fileExtension);
在这个检查中,如果浏览器是IE,那么我使用我找到的代码here。这对 MS 文件类型非常有用,但是当我尝试对 PDF 文件执行相同操作时,它会尝试另存为 .htm 文件。这个文件是空白的。如果我在代码中将 fileExtension 变量替换为 .pdf,则单击导出时不会显示 SaveAs 窗口。没有 javascript 错误。
我将 embed 标记的 src 属性设置为插件 javascript 返回的字符串,它看起来像这样:'application/pdf;base64,' + Base64.encode(buffer)
有人知道任何解决方案/解决方法吗?
【问题讨论】:
我知道这很古老,但我遇到了同样的问题,试图在 IE9 中保存由 jsPdf 创建的 PDF。显然只有 .txt 和 .htm 文件有效:***.com/a/2516054/865967 【参考方案1】:我知道这是一个非常老的问题,但我找到了解决方案,我想分享任何有同样问题的人。你可以在这里看到演示: https://jsfiddle.net/quangminh_ln/hy36tnt6/
'use strict';
var data = "...Your PDF base64 string...";
var fileName = "your_file_name";
if (window.navigator && window.navigator.msSaveOrOpenBlob) // IE workaround
var byteCharacters = atob(data);
var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++)
byteNumbers[i] = byteCharacters.charCodeAt(i);
var byteArray = new Uint8Array(byteNumbers);
var blob = new Blob([byteArray], type: 'application/pdf');
window.navigator.msSaveOrOpenBlob(blob, fileName);
else // much easier if not IE
window.open("data:application/pdf;base64, " + data, '', "height=600,width=800");
我看到的解决方案链接:https://viethoblog.wordpress.com/2016/08/30/loaddisplay-pdf-from-base64-string-bonus-ie-workaround/
【讨论】:
对于IE什么版本?对于 ,这是“假”以上是关于使用 Internet Explorer 10 及更低版本保存 Base64 编码的 PDF的主要内容,如果未能解决你的问题,请参考以下文章
对于某些情况,如 Internet Explorer 特定的 CSS 或 Internet Explorer 特定的 JavaScript 代码,如何仅针对 Internet Explorer 10?
Internet Explorer 10 忽略 XMLHttpRequest 'xhr.withCredentials = true'
使用 Internet Explorer 10 及更低版本保存 Base64 编码的 PDF