在IE11中使用数据网址打开pdf.js

时间:2015-06-17 14:29:01

标签: javascript internet-explorer-10 pdf.js

我试图使用pdf.js在IE10上的数据网址中显示文档。也就是something like this

适用于Firefox或Chrome,但在Internet Explorer 10和11中,界面显示,但保持为空,文档永远不会加载。

我检查过,compatibility.js包含在渲染器页面(viewer.html)中,因此应该存在IE支持。

编辑:实际上这是一个安全问题,因为IE不允许运行此类请求。

提前致谢,

1 个答案:

答案 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发布的代码)