2015-02-11 77 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