11

我正在使用 PDF.js 框架来呈现 PDF。我正在使用 base64 数据来呈现 PDF。但是在 IE 11 pdf 中看起来很模糊。

请参见 IE 11 的以下屏幕

在此处输入图像描述

见下面的代码:

var renderPDF = function(url, canvasContainer,data) {
        var scale= 0.9;  //"zoom" factor for the PDF

        function renderPage(page) {
            var canvas = document.createElement('canvas');
            var viewport = page.getViewport(scale);

            var ctx = canvas.getContext('2d');
            var renderContext = {
                canvasContext: ctx,
                viewport: viewport
            };

            canvas.height = viewport.height;
            canvas.width = viewport.width;

            canvasContainer.appendChild(canvas);

            page.render(renderContext);
        }

        function renderPages(pdfDoc) {
            for(var num = 1; num <= pdfDoc.numPages; num++)
                pdfDoc.getPage(num).then(renderPage);
        }

        PDFJS.disableWorker = false;

        var pdfAsDataUri = "data:application/pdf;base64,"+data; // shortened
        var pdfAsArray = convertDataURIToBinary(pdfAsDataUri);
        PDFJS.getDocument(pdfAsArray).then(renderPages);

    };

    var BASE64_MARKER = ';base64,';

    var convertDataURIToBinary = function(dataURI) {
      var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
      var base64 = dataURI.substring(base64Index);
      var raw = 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;
    };

请帮我。

4

2 回答 2

2

如果您的 PDF.js 不能在您的 IE11 中运行,则需要compatibility.js. 您可以在代码之后(在任何其他<script>s 之前)插入以下行:

<script type="text/javascript" src="../../web/compatibility.js"></script>

您还可以在下面添加文件:

希望它有所帮助。

于 2015-07-29T13:07:38.433 回答
1

这就是 PDF.js 框架的代码......我要做的是检查 IE10 是否工作正常......如果不是!那么您的代码有一些无法以正确方式创建的东西......您可以验证的 PDF.js。(在 IE11 上验证)则不是框架问题。

其他问题可能是某些字符不正常!!你能发布你的var“数据”吗???问候!!!

于 2015-07-28T15:58:11.360 回答