JavaScript — поиск с использованием кода на встроенный PDFJS

Я интегрировал 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() сбросить все ранее отфильтрованные и выделенные ключевые слова. Но не повезло.

Заранее спасибо.

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 Я могу искать столько раз, сколько захочу. 🙂

Может быть полезным для кого-то в будущем.

1

Другие решения

Вот еще одно решение для тех, кто использует 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
});
}

}
1

По вопросам рекламы [email protected]