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:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

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