2017-05-11 43 views
1

我正在尋找一個解決方案,我有一個PDF文件,並且我想搜索該文件中的特定文本,並且搜索到的文本的結果應該沿着列表格式與其頁碼。我尋找在線解決方案,但無法找到完美和適當的解決方案...顯示pdf的搜索文本以及頁碼

儘管在Adobe Reader中有相同類型的可用功能,稱爲「註釋」,用戶可以在其中查看所有搜索到的項目以列表格式及其頁碼。

你的回答將是對我非常有幫助,如果可能,請提供例如太..

預先感謝您。

+0

您在標籤中提到PDF.js,但沒有說明原因。有一個例子可以打印每個頁面的文本(https://github.com/mozilla/pdf.js/blob/master/examples/node/getinfo.js),它可以被修改來完成你剛剛提出的問題。 – async5

+0

謝謝@ async5,以及我默認使用PDF.js庫,並有客戶端的要求,他希望顯示所有搜索的文本。所以我正在尋找相同的,以及我對這個PDF.js新手,所以你可以幫助我一個你剛纔提到的例子的工作示例可能是一個小提琴或任何其他例子會很好,這將是真正的對我有幫助。先謝謝你。 –

回答

0

以下示例可幫助您使用PDF.js顯示按頁面分組的發現文本。

var searchText = "JavaScript"; 
 
function searchPage(doc, pageNumber) { 
 
    return doc.getPage(pageNumber).then(function (page) { 
 
    return page.getTextContent(); 
 
    }).then(function (content) { 
 
    // Search combined text content using regular expression 
 
    var text = content.items.map(function (i) { return i.str; }).join(''); 
 
    var re = new RegExp("(.{0,20})" + searchText + "(.{0,20})", "gi"), m; 
 
    var lines = []; 
 
    while (m = re.exec(text)) { 
 
     var line = (m[1] ? "..." : "") + m[0] + (m[2] ? "..." : ""); 
 
     lines.push(line); 
 
    } 
 
    return {page: pageNumber, items: lines}; 
 
    }); 
 
} 
 

 
var loading = PDFJS.getDocument("//cdn.mozilla.net/pdfjs/tracemonkey.pdf"); 
 
loading.promise.then(function (doc) { 
 
    var results = []; 
 
    for (var i = 1; i <= doc.numPages; i++) 
 
    results.push(searchPage(doc, i)); 
 
    return Promise.all(results); 
 
}).then(function (searchResults) { 
 
    // Display results using divs 
 
    searchResults.forEach(function (result) { 
 
    var div = document.createElement('div'); div.className="pr"; document.body.appendChild(div); 
 
    div.textContent = 'Page ' + result.page + ':'; 
 
    result.items.forEach(function (s) { 
 
     var div2 = document.createElement('div'); div2.className="prl"; div.appendChild(div2); 
 
     div2.textContent = s; 
 
    }); 
 
    }); 
 
}).catch(console.error);
.pr { font-family: sans-serif; font-weight: bold; } 
 
.prl { font-style: italic; font-weight: normal; }
<script src="//npmcdn.com/pdfjs-dist/build/pdf.js"></script>

+0

非常感謝你的回答。它的工作,但我正在尋找其他輸出是不同的,這不是我所期待的。讓我給你舉個例子,我首先理論上需要用戶搜索一個詞讓我們說「你好」,在搜索完單詞後,他會得到PDF文件中包含的所有單詞「hello」的列表以及索引號以及它所在的頁碼。可以說,在一個特定的文件中總共有4個「你好」,然後我想顯示所有4個「你好」的列表,如果我點擊第3個,那麼它應該重定向到第3個「你好」的頁面,它是目前。 –