1

我已经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()来重置所有以前过滤和突出显示的关键字。但没有运气。

提前致谢。

4

2 回答 2

3

对于那些使用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
        });
    }

}
于 2018-11-26T13:45:47.823 回答
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我可以搜索尽可能多的时间。:)

将来可能对某人有帮助。

于 2016-01-11T13:27:52.520 回答