fbterm で PDF を眺める
w3m
(w3m-img
) はインライン画像を表示することができます. jfbterm の上で. と思っていたら最近は fbterm の上でも表示できるようです. ありがたい.
ranger
はそんな w3m
の力を借りて画像のプレビューができます. 設定ファイルを少しいじれば pdf や動画ファイルのプレビューもできます.
ということは
ranger
は PDF を表示できるので私たちにもきっとできます. まずは PDF を画像にします.
ranger
はどのようにして PDF をプレビューしているのでしょうか. その答えは $HOME/.config/ranger/scope.sh にあります. そんなファイルがない場合は ranger --copy-config=all
してください. 162 行目辺りに次のようにあります:
## PDF
application/pdf)
pdftoppm -f 1 -l 1 \
...
なるほど PDF を画像に変換するには pdftoppm
を使うようです. 詳しい使い方は man pdftoppm
で得られます. 得てください.
$ pdftoppm -png PDFファイル名 画像ファイルのプレフィクス
画像 (と化した PDF) を表示する
w3m
はインライン画像を表示できるので w3m
のために HTML を書きます. しかし彼は css を読めないことに気をつけてください. HTML 4.01 Transitional 以下で書きましょう.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>ほげほげ.pdf</TITLE>
</HEAD>
<BODY>
<CENTER>
<DIV><IMG SRC="path/to/image/page-01.png" WIDTH="80%"></DIV>
<DIV><IMG SRC="path/to/image/page-02.png" WIDTH="80%"></DIV>
...
</CENTER>
</BODY>
</HTML>
そしてこの HTML を w3m
で読めば画像に変換された PDF を眺めることができます.
面倒なんじゃい
私たちはなんとか PDF を眺めることができました. しかし PDF を眺めたいと思うたびにこの操作を行うことはとても面倒です. 私たちにできる大抵のことはコンピュータにもできます.
次のようなシェルスクリプトを書きます. ファイル名は PDF-wo-Miru (PDF を見る) から pdfm.sh です.
#!/bin/sh
if [ $# -ne 1 ]; then
echo "Usage: `basename $0` pdf-file"
exit 1
fi
TEMPDIR=`mktemp -d`
TEMPBASE="$TEMPDIR/pdfm"
TEMPHTML=`tempfile -s.html`
pdftoppm -png $1 $TEMPBASE
cat << EOF > $TEMPHTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>$1</TITLE>
</HEAD>
<BODY>
<CENTER>
EOF
find $TEMPDIR/*.png | sort | while read line
do
echo "<DIV><IMG SRC=\"$line\" WIDTH=\"80%\"></DIV>" >> $TEMPHTML
done
cat << EOF >> $TEMPHTML
</CENTER>
</BODY>
</HTML>
EOF
w3m $TEMPHTML
rm -rf $TEMPHTML $TEMPDIR
完成したら make pdfm
と実行して,生成された pdfm を $HOME/bin/ あたりにぶち込んで置きましょう.
おわりに
おわりです.