Поиск с использованием JavaScript на Embedded pe: documentViewer - PullRequest
2 голосов
/ 09 ноября 2019

У меня есть веб-приложение, которое использует documentViewer из расширений простых лиц для просмотра PDF-файлов.

Мне нужно передать запрос в фразуSearch , используя javascript, чтобы файл pdf открылся в нужном месте, где мой запрос найден.
Я бы использовал этот javascript(pdfQuery) в атрибуте oncomplete моей кнопки, которую я использую для открытия documentViewer:

<p:commandButton action="#{searchController.openPDF}" 
oncomplete="PF('pdf_dlg').show();pdfQuery('Framework')" 
value="open PDF" update="pdf" />

<p:dialog header="#{searchController.pdfTitle}"
  widgetVar="pdf_dlg" 
responsive="true" dynamic="true" >
    <h:form id="pdf">
        <pe:documentViewer value="#{pdfBean.tempPdfFile}"/>
    </h:form>
</p:dialog>

Я нашел похожие вопросы по SO, связанные с PDF.js, но не расширениями простых лиц:
PDF. js - Использование функции поиска во встроенном PDF
Поиск с использованием кода во встроенном PDFJS

Есть идеи, как этого добиться?
Как получить доступ квстроенные простые символы pdf.js?
Большое спасибо заранее.

РЕДАКТИРОВАТЬ:
Прямо сейчас я застрял здесь. Этот фрагмент javascript не работает:

function triggerSearch(tx_query) {
    $('iframe').on('load',
         function () {
            if (typeof PDFViewerApplication.findController !== 'undefined') {
               PDFViewerApplication.findController.executeCommand('find', {
                  query: tx_query,
                  caseSensitive: false,
                  highlightAll: true,
                  findPrevious: true
              });
         }
    });
}

К сожалению, метод PDFViewerApplication из pdf.viewer.js не распознается. Я не понимаю, как получить к нему доступ.

1 Ответ

0 голосов
/ 13 ноября 2019

Перейдите на страницу Showcase здесь: https://www.primefaces.org/showcase-ext/sections/documentviewer/advanced.jsf

Теперь откройте окно консоли, используя F12 Chrome или ваш любимый браузер. Введите следующий код:

window.frames[0].PDFViewerApplication.findBar.open();

Обратите внимание, что панель FindBar открыта? Так что теперь вы можете написать скрипт, который будет делать именно то, что вы хотите, получив доступ к PDFViewerApplication.

var pdfViewer = window.frames[0].PDFViewerApplication;
pdfViewer.findBar.open();
pdfViewer.findBar.findField.value = "My text";
pdfViewer.findBar.highlightAll.checked= true;
pdfViewer.findBar.findNextButton.click();
...