2013-12-15 52 views
0

我想從一個pdf文檔中使用pdf.js在JS中的文本。然而,pdf.js沒有像樣的文檔,我已經看過了可用的例子,我想出了這個:正在獲取textcontent pdf.js

var pdfUrl = "http://localhost/test.pdf" 
var pdf = PDFJS.getDocument(pdfUrl); 
pdf.then(function(pdf) { 
    var maxPages = pdf.pdfInfo.numPages; 
    for (var j = 1; j < maxPages; j++) { 
     var page = pdf.getPage(j); 

     page.then(function() { 
      var textContent = page.getTextContent(); 

     }) 
    } 
}); 

頁位的工作,因爲我可以看到它是一個promiss。然而,運行這個位給出:

Warning: Unhandled rejection: TypeError: Object #<Object> has no method 'getTextContent' 
TypeError: Object #<Object> has no method 'getTextContent' 

它在我見過的例子中以這種方式工作。它正在獲取頁面,並且我可以打印出多少頁面。

任何有經驗的人都可以發光?

*獎勵問題: 我只對解析pdf感興趣,而不是在瀏覽器中呈現它。但它必須在客戶端完成。 PDF.js是否適合這份工作?

+1

可能不是問題,但'page.then(函數(){'應該'page.then(函數(頁){' –

+0

它實際上是問題!做一個答案,你就完成了。 – Difusio

回答

2

page.then(function() {應該page.then(function(page) {

1

PDF.js使您的PDF文件,並生成詞,然後把它們作爲html元素。 然後將每個元素放置在您的pdf上方,並使用css屬性{position:absolute; left:X,top:Y}並隱藏在您的pdf上。

這些div被賦予css屬性{color:transparent}。這是選擇突出顯示的技巧,它似乎是你直接從PDF文件中選擇,但實際上你是選擇創建的HTML元素。

這就是它的工作原理,如果你想渲染PDF文件,那麼你可以保留它,如果你想改變輸出技術(html透明div),你必須自帶替換品。 ..

0

您還需要將其更改爲

for (var j = 1; j <= maxPages; j++) { 

否則你將永遠不會得到的第一頁。