2015-02-11 78 views
3

我一直在关注以下链接,试图呈现一个字节流从API浏览器返回到PDF使用PDF.JS渲染PDF:使用PDF.JS和AngularJS从字节数组

这里是的JavaScript用于运行呈现。 注意:是从API返回的字节数组。

var file = new Blob([stream], {type: 'application/pdf'}); 
var fileURL = URL.createObjectURL(file); 
$scope.renderPDF(fileURL, document.getElementById('pdf-holder')); 

这里是$ scope.renderPDF

$scope.renderPDF = function(url, canvasContainer) { 
    var scale= 1.5; //"zoom" factor for the PDF 

    function renderPage(page) { 
     var viewport = page.getViewport(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); 
    } 

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

} 

这里是HTML在我的模板页面:

<script type="text/javascript" src="https://cdn.rawgit.com/mozilla/pdf.js/gh-pages/build/pdf.js"></script> 

<div id="pdf-holder"> 
</div> 

当代码运行

PDFJS.getDocument(url).then(renderPages); 

我在worker.js上收到404 Not Found错误,这很有道理,因为我遵循这些示例并禁用了worker,所以我不需要它。有没有人有任何建议或简单的方法来解决这个问题,我可以从字节流中呈现PDF格式的浏览器?

+1

通过禁用worker,您只需禁用Web Worker使用Web Worker加载PDF解析器代码即可使传统浏览器正常工作。解析器代码仍然需要加载,在你的情况下,它将通过脚本标签加载;你仍然需要设置'workerSrc' – async5 2015-02-12 13:15:39

+0

这是行得通的。我现在得到错误“未处理的承诺拒绝”,所以getDocument(url)失败。我的网址= blob:http%3A // localhost%3A9000/56cfc1c4 -cd80-4284-af8b-a0bdecc163e9有没有什么明显的事情会导致失败? – 2015-02-12 14:57:24

+0

PDF.js文件不在您的localhost上?尝试使其与首先位于一台服务器上的文件协同工作。 – async5 2015-02-12 22:50:13

回答

2

即使您禁用了它,仍然需要pdf.worker.js。禁用它意味着PDFJS将使用它也在使用工作者库的伪造工作者。只需按照以下方式进行设置:

PDFJS.workerSrc = 'pdf.worker.js'; 
+0

这是有效的。 我现在收到错误“未处理的承诺拒绝”,所以getDocument(url)失败。 我的网址是= BLOB:http%3A //本地主机%3A9000/56cfc1c4 -cd80-4284-af8b-a0bdecc163e9 有没有什么明显的东西会使这个失败? – 2015-02-12 14:57:06