【问题标题】:Search using code on Embedded PDFJS使用嵌入式 PDFJS 上的代码进行搜索
【发布时间】:2016-04-15 12:57:20
【问题描述】:

我已将PDFJS 与我的网页集成。我想使用 javascript 进行搜索。

第一次搜索效果很好。但是后来我尝试用不同的关键字再次搜索,然后它没有突出显示正确的关键字。

这是我尝试过的:

    // search with PDF.js
    function searchPDF(td_text)
    {
        PDFViewerApplication.findBar.open();
        PDFViewerApplication.findBar.findField.value = td_text;
        PDFViewerApplication.findBar.highlightAll.checked= true;
        PDFViewerApplication.findBar.findNextButton.click();
    }


    function resetPDFSearch()
    {
        if(PDFViewerApplication.findBar.findField.value != '') {
            PDFViewerApplication.findBar.findField.value = '';
            PDFViewerApplication.findBar.highlightAll.checked= false;
            PDFViewerApplication.findController.reset();
            PDFViewerApplication.findBar.close();
            PDFViewerApplication.findController.matchCount = 0;
            PDFViewerApplication.findController.updateMatch();
        }
    }

在上述函数中,当我第一次调用searchPDF() 时,关键字正确突出显示。但是如果我用不同的关键字调用相同的函数,那么它只会显示以前突出显示的关键字。

我尝试创建新函数resetPDFSearch() 来重置所有以前过滤和突出显示的关键字。但没有运气。

提前致谢。

【问题讨论】:

    标签: javascript php pdf pdfjs


    【解决方案1】:

    经过这么多头痛和头脑风暴。我来回答如下。

    function searchPDF(td_text)
    {
        PDFView.findBar.open();
        $(PDFView.findBar.findField).val(td_text);
    
        var event = document.createEvent('CustomEvent');
        event.initCustomEvent('findagain', true, true, {
            query: td_text,
            caseSensitive: $("#findMatchCase").prop('checked'),
            highlightAll: $("#findHighlightAll").prop('checked', true),
            findPrevious: undefined
        });
    
        PDFViewerApplication.findBar.dispatchEvent('');
    
        return event;
    }
    

    不需要resetPDFSearch() 函数。

    此案例适用于我的场景。希望你可能有不同的情况。但是是的,使用event 我可以搜索任意多次。 :)

    将来可能对某人有所帮助。

    【讨论】:

      【解决方案2】:

      对于那些使用 pdf.viewer.js 的人来说,这是另一种解决方案:

      // this method uses the viewers search funtionality to highligt given text
      function searchText(txt) {
      
          if (typeof PDFViewerApplication.findController !== 'undefined') {
              PDFViewerApplication.findController.executeCommand('find', {
                  query: txt,
                  caseSensitive: false,
                  highlightAll: true,
                  findPrevious: true
              });
          }
      
      }
      

      【讨论】:

      • 我需要类似的东西。我的框架也实现了 pdf.viewer.js。请问PDFViewerApplication是什么?
      • @codyLine PDFViewerApplication 是一个对象,其中包含 pdf 查看器的参数
      • 如何访问它?您的代码警告我全局变量 PDFViewerApplication 未声明!
      • @codyLine 请检查 pdfviewer 的存储库。这是示例:github.com/mozilla/pdf.js/blob/…
      • fundController 采用“find”或“findagain”,但我的问题是“find”似乎跳转到我的字符串的 third 出现。在您的示例中,为什么将“findPrevious”设置为 true ?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2012-01-23
      • 2010-09-12
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多