SSブログ

xpdfで複数ファイルを表示するスクリプトの作成 [Linux]

xpdf で複数ファイルを表示するスクリプトを作成してみた。

・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)


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。