Поиск регулярных выражений в PDF-ридере

Поиск регулярных выражений в PDF-ридере

Я использую Zathura, так как мне нравится его минималистичный подход, но я бы также перешел на MuPDF или что-нибудь еще, если бы это решило мою проблему.

Мне нужно выделить каждое слово (в документах PDF и epub) одно за другим от начала до конца, потому что я могу лучше сосредоточиться на тексте, если в нем есть какое-то движение. Мой подход заключался бы в выполнении поиска по регулярным выражениям, который соответствует каждому слову, но ни zathura, ни mupdf не поддерживают регулярные выражения в поиске. Есть ли способ сделать это?

Я бы попробовал форкнуть zathura, но, честно говоря, я не хочу тратить столько времени, если есть другой минимальный просмотрщик документов, совместимый с Gnu/Linux, который делает то, что мне нужно. И если есть какой-либо способ использовать терминальные инструменты, например,  pdfgrep для выделения результатов в zathura, это также справится с этой задачей.

решение1

Базовый выбор текста

СогласноЗатура страница Википедии:

Затура может искать текст и копировать текст в основное выделение X.

Это значит, что возможность выделять текст во время чтения встроена, хотя для этого, скорее всего, потребуется мышь (вам будет сложно найти решение для выделения с помощью клавиатуры).

Насколько минималистичный вам нужен? Я используюАтрил, немного облегченная вилкаЭвинс(Просмотрщик документов GNOME). Atril был создан как частьMATE Настольный компьютер(продолжение GNOME 2). Он довольно легкий, хотя все еще имеет зависимость от GTK+.

Другой вариант -Xpdfприложение. Смотрите такжеСписок программного обеспечения для работы с PDF в Википедии § Linux и Unix.

Регулярное выражение

Единственная (пригодная для использования) реализация поиска по регулярным выражениям, о которой я знаю, помимо инструментов командной строки, таких какpdfgrep, на самом деле ваш веб-браузер. Это не так удобно, но вот решение в Firefox: откройте PDF в Firefox и откройте Developer Tools Javascript Console (F12 или Ctrl+Shift+K). Выполните эти команды:

» pdf = document.getElementById("viewer").innerText.replace(/[ \t]+/g, " ");
» function grep(what, context=100) { return pdf.match(RegExp(`[\\s\\S]{0,${context}}${what}[\\s\\S]{0,${context}}`), "img"); }
» grep("put your regex here")
» grep("get more context", 300)

Обратите внимание, что вам придется экранировать обратные косые черты. grepКоманда имеет необязательный второй аргумент, количество символов контекста, которые необходимо предоставить с каждой стороны (по умолчанию=100).

Chrome и другие браузеры со встроенными средствами просмотра PDF-файлов должны быть довольно похожи, но вам придется выяснить, какой HTML-объект содержит фактическое содержимое PDF-файла (это элемент id="viewer"для Firefox, не уверен насчет других — в худшем случае просто используйте document.bodyвместо document.getElementById("viewer"). Вы можете сопоставить элементы в оглавлении.)

решение2

Если я не ошибаюсь, Adobe Acrobat Readerесть функция read out loud, которая выбирает каждое слово от начала до конца.

Связанный контент