PDFリーダーで正規表現を検索する

PDFリーダーで正規表現を検索する

私は最小限のアプローチが好きなので、zathuraを使用していますが、問題が解決したらmupdfなどに切り替えます。

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

私はzathuraをフォークしようとしていますが、正直なところ、私が必要とするものを実行するもう1つの最小限のGnu / Linux準拠のドキュメントビューアがある場合は、あまり時間を費やしたくありません。端末ツール(例:pdfgrep zathuraで結果を強調表示)を使用する方法がある場合でも、その操作を実行できます。

答え1

デフォルトのテキストを選択

~によるとZatura ウィキペディアページ:

Zathuraはテキストを検索し、デフォルトのX選択にテキストをコピーできます。

これはマウスを使用する必要があるかもしれませんが、読み込み中にテキストを選択する機能が組み込まれていることを意味します(キーボードコントロールの選択に対する解決策を見つけるのは難しいでしょう)。

どのくらいミニマリストでなければなりませんか?私は使うアトリル、やや軽量のフォーク見せる(GNOMEドキュメントビューア)。アトリルは次のとおりです。MATEデスクトップバージョン(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)。

PDF Viewerが組み込まれているChromeやその他のブラウザは非常によく似ているはずですが、どのHTMLオブジェクトが実際のPDFコンテンツを保持しているかを把握する必要があります(これはid="viewer"Firefoxの要素であり、他のブラウザについてはわかりません。最悪の場合は、 . .document.body代わりにdocument.getElementById("viewer")ディレクトリのエントリを一致させることができます。

答え2

私の記憶が正しい場合は、最初から最後まで各単語を選択するAdobe Acrobat Reader関数があります。read out loud

関連情報