Есть ли в библиотеке MuPdf функции юникода или текстового поиска?

Фон

Я работаю над приложением WPF для Windows и хочу добавить встроенную программу просмотра PDF только с основными функциями, включая просмотр PDF, текстовый поиск и навигацию по страницам.

Я попробовал встроенный метод установки Internet Explorer и Adobe PDF Reader (таким образом ), но этот метод не подходит для наших требований, поскольку Adobe PDF Reader также может иметь внешние ссылки, которые не могут быть разрешены из-за соображений безопасности приложения.

Поэтому я пытаюсь использовать библиотеку moonpdf. Эта библиотека отлично работает с нашими требованиями, но единственная проблема заключается в том, что в ней нет функции поиска по тексту. (Я думаю, что он показывает PDF в виде изображений). Затем я скачал исходный код moonpdf и понял, что moonpdf использует libmupdf .dll перенос на С#. Я могу изменить исходный код moonpdf и исходный код mupdf в соответствии с нашими требованиями, если это необходимо.

Мой вопрос

Есть ли в mupdf функции поиска по тексту? если да, то как я могу его использовать?


person kamal    schedule 20.04.2020    source источник


Ответы (2)


Вы, конечно, можете извлечь текст из документа, библиотека MuPDF сделает это. Я считаю, что после этого вы должны применить свои собственные критерии поиска. Боюсь, я недостаточно опытен, чтобы ответить на вопрос «как это сделать». Я полагаю, что здесь будет полезен один из примеров mutool. Я посмотрю, смогу ли я получить ответ от одного из разработчиков.

person KenS    schedule 20.04.2020

В базовой библиотеке mupdf есть несколько функций для поиска текста. Они работают путем поиска на странице текстовой строки в нескольких различных вариантах и ​​возвращают область для всех попаданий данного текста. Вам нужно перебирать страницы самостоятельно (чтобы выполнить прямой или обратный поиск).

fz_quad hits[1000];
count = fz_search_page(ctx, page, needle, hits, nelem(hits));

Тем не менее, я не знаю, как и даже если "moonpdf" обернул эти функции.

person ccxvii    schedule 20.04.2020