先日のシェル芸勉強会で、pdfの内容をコンソール上で確認する問題があったので、その備忘。
コンソール上でpdfを標準出力させる場合、通常のプリインストールされているコマンドからだと少々難しいようだ。
というのも、良く使用されているpdfの場合だと中のテキストなどがzlibで圧縮された状態で保持されているため、ここをうまいことzilbで解凍する必要があるらしい。
通りで…単純なテキストしか入ってないpdfなのに、中見たらわけわからんと思ったら…
このへんを参考になんとか作れるかも(stringsで読込み、awkなどでFlateDecodeされた箇所だけを抽出して復号化、それをテキストとして抽出?)しれないが、復号化のトコで躓いた。ワンライナーでは厳しそうだ…。
openssl -zlib -d
などでは出来ない様子。
という訳で、これについてはちゃんとpdfからテキストに戻すコマンドが世の中には存在しているため、それを使うことにする。
pdftotextというコマンドで、結構昔からあるコマンドのようだ。
以下のコマンドでインストール出来る。
yum install poppler-utils # RHEL系の場合
apt-get install poppler-utils # Debian/Ubuntu系の場合
brew install poppler # MacOS Xの場合
細かい箇所についてはmanに任せる事にし、簡単な使い方だけを説明する。
まず普通にオプション無しで実行した場合は、読み込んだpdfファイルと同じディレクトリに同名のtxtファイルを出力するようになっている。
[root@test-node vol.21]# ls Q1/
bba.pdf
[root@test-node vol.21]# pdftotext Q1/bba.pdf
Syntax Warning: Invalid Font Weight
[root@test-node vol.21]# ls Q1/
bba.pdf bba.txt
[root@test-node vol.21]# cat Q1/bba.txt
群馬のシャブばばあ
hoge.txt[2016/02/09 22:30:32]
ファイル出力ではなく標準出力にする場合は、「-」を付与する。
(ただし、警告やエラーは出力される)
[root@test-node vol.21]# pdftotext Q1/bba.pdf -
Syntax Warning: Invalid Font Weight
群馬のシャブばばあ
hoge.txt[2016/02/09 22:30:32]
警告やエラーを非表示にする場合は、「-q」オプションを付与する。
[root@test-node vol.21]# pdftotext -q Q1/bba.pdf -
群馬のシャブばばあ
hoge.txt[2016/02/09 22:30:32]
その他、pdfの特定ページだけを出力させたり、pdfのフォーマットを維持したままで出力させたりすることも可能なようだ。