2017-05-11 39 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个“你好”的页面,它是目前。 –