在IE11和Microsoft Edge中嵌入PDF(可能)

时间:2016-09-05 22:42:32

标签: angularjs pdf embed internet-explorer-11

我目前使用基本64位编码的字符串表示PDF文件,并使用以下代码将其转换为AngularJS中的blob(简化):

var base64PdfToBlob = function(b64Data: string, contentType: string) {
                    var sliceSize = 512;
                    var byteCharacters = atob(b64Data);
                    var byteArrays = [];

                    for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
                        var slice = byteCharacters.slice(offset, offset + sliceSize);

                        var byteNumbers = new Array(slice.length);
                        for (var i = 0; i < slice.length; i++) {
                            byteNumbers[i] = slice.charCodeAt(i);
                        }

                        var byteArray = new Uint8Array(byteNumbers);

                        byteArrays.push(byteArray);
                    }

                    var blob = new Blob(byteArrays, { type: contentType });
                    return blob;
                }

var pdfBlob = base64PdfToBlob(base64Pdf, "application/pdf");
var blobUrl = URL.createObjectURL(pdfBlob);
$scope.pdfDoc = $sce.trustAsResourceUrl(blobUrl);

然后我使用以下代码将pdf嵌入到html中:

<object data="{{pdfDoc}}" type="application/pdf" width="100%" height="100%"></object>

这适用于chrome,firefox和safari。这在Edge或IE11中不起作用。我觉得我已经尝试过一切都没有工作。

我尝试过的事情: 1.使用嵌入和对象标签。 2.卸载并重新安装adobe reader。弄乱adobe reader和IE之间的设置和配置。 3.更改IE中的安全设置。

执行iFrame,新标签,新窗口,下载pdf不是一个选项。 PDF必须嵌入当前页面。我正在阅读的一些文档似乎表明这在Edge中是不可能的,但应该在IE中工作。

我的机器是Windows 10,64位,IE11,Adobe Acrobat Reader DC 2015.017.20050

0 个答案:

没有答案