less は PDF をどのように表示しますか?

less は PDF をどのように表示しますか?

私はいくつかのプログラムを試しました: pdftotext、pdf2txt.py、... それらはすべて PDF からテキストを抽出できますが、最も優れたのは good ol' ですless: PDF のテキストは適切なレイアウトになっています。less はどのようにしてこれを実現しているのでしょうか? 何らかのライブラリを使用しているのでしょうか、それとも PDF 処理が組み込まれているのでしょうか?

私が質問しているのは、必ずしも外部プログラムとして less を実行する必要はなく、この機能をプログラムで使用したいからです (私は Python を使用しています)。

私のシステムは次のとおりです:

» less --version
less 458 (GNU regular expressions)
Copyright (C) 1984-2012 Mark Nudelman

less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less

» uname -a
Linux polyphemus 3.13.0-53-generic #89-Ubuntu SMP Wed May 20 10:34:39 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

答え1

おそらく、ディストリビューションでは一般的なlesspipe.shスクリプトが使用されています。LESSOPEN環境変数を確認してください。

このスクリプトには多くのバリエーションがあります。私は Gentoo バージョンを調べています。そこには次の行があります。

*.ps|*.pdf) ps2ascii "$1" || pstotext "$1" || pdftotext "$1" ;;

つまり、表示された順序でコマンドが試行されます。$1はファイル名です。

別のバージョン次のコマンドを使用します。

pdftohtml -stdout "$t" | parsehtml -

関連情報