pdf.js从Uint8Array打开或生成pdf

时间:2015-12-09 08:43:11

标签: javascript jquery angularjs internet-explorer pdf

我有以下base64编码的字符串,其中包含pdf文件。 我想将base64字符串转换为Uint8Array,因为IE9正向支持Uint8Array,而不是我想用pdf.js打开pdf

我正在使用以下代码,

.intro{
  background: url('../img/bbl.png') no-repeat center center fixed; 
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
  min-height: 100%;
  min-width: 1024px;
  background-attachment: fixed;
  background-size: 100% 100%;
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
}

但是pdf没有在浏览器中生成或打开,任何建议或帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

我在我的项目中使用它并且工作正常。

HTML

<div id="myCanvasContainer"></div>

JS

function renderPDF( pdfBase64 ) {

var pdfUint8Array = base64ToUint8Array( pdfBase64 );

var canvasContainer = document.getElementById('myCanvasContainer');
var options = options || { scale: 1.5 };

function renderPage(page) {
    var viewport = page.getViewport(options.scale);
    var canvas = document.createElement('canvas');
    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);
}

function base64ToUint8Array(base64) {
    var raw = atob(base64);
    var uint8Array = new Uint8Array(raw.length);
    for (var i = 0; i < raw.length; i++) {
      uint8Array[i] = raw.charCodeAt(i);
    }
    return uint8Array;
}


PDFJS.disableWorker = true;
PDFJS.getDocument(pdfUint8Array).then(renderPages);

}

希望它有所帮助。