web-dev-qa-db-ja.com

PDFリーダーでの正規表現検索

最小限のアプローチを楽しんでいるので、私はzathuraを使用していますが、これが私の問題を解決する場合は、mupdfまたは他のものに切り替えます。

すべての単語(PDFおよびepub文書))を最初から最後まで1つずつ強調表示する必要があります。これは、何らかの動きがある場合、テキストに集中できるためです。すべての単語に一致する正規表現検索を実行することはありましたが、zathuraもmupdfも検索の正規表現をサポートしていません。これを行う方法はありますか?

私はzathuraをフォークしようとしますが、正直に言うと、必要なことを実行する別の最小限のGnu/Linux互換ドキュメントビューアーがある場合、その時間を費やしたくないのです。そして、pdfgrepのようなターミナルツールを使用して、ザスーラで結果を強調表示する方法があれば、それも機能します。

2
luca

基本的なテキスト選択

Zathura Wikipedia page によると:

Zathuraはテキストを検索し、プライマリX選択にテキストをコピーできます

これは、あなたが読んだときにテキストを選択する機能が組み込まれていることを意味しますが、おそらくマウスが必要です(キーボード制御の選択の解決策を見つけるのは難しいでしょう).

どのくらいミニマリストが必要ですか?私は Atril を使用しています Evince (GNOMEドキュメントビューアー)のやや軽いフォークです。 Atrilは MATE Desktop (GNOME 2の続き)の一部として作成されました。 GTK +への依存関係はまだ残っていますが、かなり軽量です。

別のオプションは Xpdf アプリケーションです。 WikipediaのPDFソフトウェア§LinuxおよびUnix)のリスト も参照してください。

正規表現

pdfgrep のようなコマンドラインツールを除いて、私が知っている唯一の(使用可能な)正規表現検索実装は、実際にはWebブラウザーです。これはそれほど有用な解決策ではありませんが、Firefoxでの解決策は次のとおりです:FirefoxでPDFを開き、開発者ツールのJavaScriptコンソール(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コマンドには、オプションの2番目の引数である、両側に提供するコンテキストの文字数(デフォルト= 100)があります。

組み込みのChromeなどのブラウザPDFビューアはかなり似ているはずですが、実際のPDFコンテンツを保持するHTMLオブジェクトを把握する必要があります。これは、Firefoxの_id="viewer"_要素です。他の要素については不明です。最悪の場合は、document.getElementById("viewer")ではなく_document.body_を使用してください。目次の項目と一致する場合があります。)

2
Adam Katz

私が間違っていない場合、Adobe Acrobat Readerには、各単語を最初から最後まで選択するread out loudという関数があります。

1
andromeda-1865