我目前使用基本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