javascript - 显示 pdf 的搜索文本以及页码

标签 javascript jquery pdf pdf.js adobe-reader

我正在寻找一种解决方案,其中我有一个 PDF 文件,并且我想搜索该文件中的特定文本,并且搜索文本的结果应采用列表格式及其页码。我寻找在线解决方案,但无法找到完美且正确的解决方案......

尽管 adobe reader 中提供了相同类型的功能,称为“注释”,用户可以在其中以列表格式查看所有搜索到的项目及其页码。

您的回答对我非常有帮助,如果可能的话,也请提供示例..

提前谢谢您。

最佳答案

以下示例可能会帮助您使用 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>

关于javascript - 显示 pdf 的搜索文本以及页码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43910176/

相关文章:

javascript - Magento 添加到购物车按钮,单页结帐仅在刷新浏览器后才起作用

javascript - 在浏览器的本地存储中存储对磁盘上文件的引用

javascript - 无法在移动设备上单击 h1

javascript - 一种监视元素焦点如何在 jquery 中发生的方法

android - Android 内容查看器

javascript - 带有 for 循环的 Array Splice 有问题

javascript - TinyMCE 4 无法输入提供的插件文本字段

javascript - JQuery - 测试是否存在 css 类元素。 .length 不起作用

java - Selenium webdriver 下载 pdf

java - flying-saucer-pdf 表 'name' 在 ubuntu 上不存在异常