我试图使用pdf.js在IE10上的数据网址中显示文档。也就是something like this。
适用于Firefox或Chrome,但在Internet Explorer 10和11中,界面显示,但保持为空,文档永远不会加载。
我检查过,compatibility.js包含在渲染器页面(viewer.html)中,因此应该存在IE支持。
编辑:实际上这是一个安全问题,因为IE不允许运行此类请求。提前致谢,
答案 0 :(得分:1)
好的,如果有人遇到同样的问题,我通过绕过lib的正常加载路径解决了这个问题,而async5建议将数据直接转换为字节数组。
也就是说,在viewer.js中,在第6856行下添加这些行:
if (file && file.lastIndexOf('data:', 0) === 0) {
// data: url-scheme. we will load those with direct conversion to byte array
function convertDataURIToBinary(dataURI) {
var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
var base64 = dataURI.substring(base64Index);
var raw = window.atob(base64);
var rawLength = raw.length;
var array = new Uint8Array(new ArrayBuffer(rawLength));
for(var i = 0; i < rawLength; i++) {
array[i] = raw.charCodeAt(i);
}
return array;
}
// PDFViewerApplication.setTitleUsingUrl(file);
PDFViewerApplication.open(convertDataURIToBinary(file), 0);
return;
}
(base64到字节数组代码是Codetoffel here发布的代码)