xpdfで複数ファイルを表示するスクリプトの作成 [Linux]
xpdf で複数ファイルを表示するスクリプトを作成してみた。
・xpdf の起動後に追加選択できるが、ファイル選択が面倒なのでスクリプトで対応。
・xpdf の特定の機能で文字化けが発生するが、動作が軽快なため時々使用している。
しおりの表示(左側のペイン)で日本語が文字化けする。
検索時のキーワード入力で日本語が文字化けするため、日本語の検索ができない。
詳細は、以下の通りである。
1. スクリプト (Xpdf)
2. 使用方法
3. 備考
・xpdf の起動後に追加選択できるが、ファイル選択が面倒なのでスクリプトで対応。
・xpdf の特定の機能で文字化けが発生するが、動作が軽快なため時々使用している。
しおりの表示(左側のペイン)で日本語が文字化けする。
検索時のキーワード入力で日本語が文字化けするため、日本語の検索ができない。
詳細は、以下の通りである。
1. スクリプト (Xpdf)
#!/bin/bash # # View PDF files with xpdf. # usage: Xpdf [file ...] # # check existence of PDF files check_pdf_file() { local status=0 local i for i in $*; do case $i in *.pdf) if [ ! -f $i ] || [ ! -r $i ]; then echo ">> $i: no such file" status=1 break fi ;; *) echo ">> $i: not PDF file" status=1 break ;; esac done return $status } # execute xpdf exec_xpdf() { local x_gap=20 pos local a_pid=() local status=0 local i j if [ $# != 0 ]; then j=`ps acx | grep -c "xpdf$"` for i in $*; do pos="+$(($x_gap * $j))+0" xpdf -g $pos $i 2> /dev/null & a_pid+=($!) j=$(($j +1)) sleep 0.2 done # get status of background jobs for i in ${a_pid[*]}; do wait $i j=$? if [ $status = 0 ]; then status=$j fi done else xpdf -g +0+0 2> /dev/null status=$? fi return $status } if ! which xpdf >/dev/null 2>&1; then echo "xpdf: command not found" exit 1 elif [ $# = 0 ] || check_pdf_file $*; then exec_xpdf $* fi exit $?
2. 使用方法
% Xpdf [file ...]
3. 備考
(1) ~/.xpdfrc の設定
・/etc/xpdfrc を参考にして、必要最小限の設定で作成。
・'fontFileCC Adobe-Japan1 ...' が未設定の場合:
全部または一部を表示できないファイルが結構あるため、要注意。
### -*- tab-width: 4 -*- ### ~/.xpdfrc for xpdf-3.04 (on CentOS 7) #-- text output control textEncoding UTF-8 textEOL unix enableFreeType yes antialias yes #-- misc settings urlCommand "xdg-open '%s'" #initialZoom 100 #-- Japanese font include /etc/xpdf/add-to-xpdfrc.japanese fontFileCC Adobe-Japan1 /usr/share/fonts/sazanami/sazanami-gothic.ttf #fontFileCC Adobe-Japan1 /usr/share/fonts/kochi/kochi-gothic-subst.ttf ### .xpdfrc ends here
(2) xpdf で日本語の検索ができないことへの対応
取り敢えずは、下記の手順で対応できる。
・PDF ファイルをテキストファイルに変換 (pdftotext コマンドを使用)
・作成されたテキストファイルを検索
また、pdftotext コマンドの使用方法は、下記の通りである。
% pdftotext [-enc enc-name] pdf-file text-file enc-name: 出力する文字コードの指定 UTF-8/EUC-JP/Shift-JIS/ISO-2022-JP, default: UTF-8 (cf. /etc/xpdf/add-to-xpdfrc.japanese)
コメント 0