labunix's blog

labunixのラボUnix

e2ps/ps2pdfでテキストからPDFを作成する。

■せっかちな人のために。
 ※「nkf --guess」は、混合の文字コードで無いことの確認

$ INPUT=sample.log; \
  nkf --guess $INPUT; \
  nkf -e $INPUT > ${INPUT}.euc; \
  e2ps -p -a4 -nh ${INPUT}.euc | ps2pdf - ${INPUT}.pdf

■e2ps/ps2pdfでテキストからPDFを作成する。
 パッケージの検索

$ apt-file search bin/ps2pdf;apt-file search e2ps
ghostscript: /usr/bin/ps2pdf
ghostscript: /usr/bin/ps2pdf12
ghostscript: /usr/bin/ps2pdf13
ghostscript: /usr/bin/ps2pdf14
ghostscript: /usr/bin/ps2pdfwr
e2ps: /usr/bin/e2ps
e2ps: /usr/share/doc/e2ps/README.Debian
e2ps: /usr/share/doc/e2ps/README.english.gz
e2ps: /usr/share/doc/e2ps/README.euc.gz
e2ps: /usr/share/doc/e2ps/changelog.Debian.gz
e2ps: /usr/share/doc/e2ps/copyright
e2ps: /usr/share/man/man1/e2ps.1.gz

■インストール

$ sudo apt-get install -y e2ps ghostscript

■デフォルトでは、2ページ/枚、A4、JISフォント。

$ e2ps --help 2>&1 | grep "(default)"
    -p2                       : portrate 2 pages/paper (default)
    -a4                       : A4 paper (default)
    -j                        : print with JIS postscript font(default)

■他に1ページ/枚、4ページ/枚の指定が出来る。

$ e2ps --help 2>&1 | grep "portrate"
    -p                        : portrate
    -p2                       : portrate 2 pages/paper (default)
    -p4                       : portrate 4 pages/paper
    -pv4                      : portrate vertical 4 pages/paper

■p4とpv4の違いは順序。
 日本語のドキュメントの方が丁寧。

$ lv -s /usr/share/doc/e2ps/README.euc.gz | grep -A 1 "ポートレイト4"
    -p4			: ポートレイト4面印刷		例: 1 2	
							    3 4
    -pv4		: ポートレイト4面縦順印刷	例: 1 3	

							    2 4
■日本語はUTF-8では文字化けするので、EUCに前もって変換しておく。

$ e2ps --help 2>&1 | grep "EUC\|JIS"
    -e                        : print with EUC postscript font
    -j                        : print with JIS postscript font(default)

■「e2ps」は主に文字コード「EUC」を扱うツールなので、
 テキストの方をEUCに変換する。

$ lv -s /usr/share/doc/e2ps/README.euc.gz | grep -A 1 "テキストファイルを"
  ep2sは,テキストファイルを PostScript に変換するツールです.
  EUCを主に扱うので 'e'2ps と名付けました.

■出力するPDFにヘッダを付けない場合は「-nh」。

$ e2ps --help 2>&1 | grep -A 4 "not print headers"
    -nh                       : not print headers
    -Pprinter                 : printer
    -date string              : date string (May 17 2015 22:01:37)
    -head string              : header string
    -page string              : page string (Page)

■ということで以下のように実行

$ INPUT=sample.log; \
  nkf --guess $INPUT; \
  nkf -e $INPUT > ${INPUT}.euc; \
  e2ps -p -a4 -nh ${INPUT}.euc | ps2pdf - ${INPUT}.pdf

■デフォルトの設定一覧
 「Left   Margin」を変更したかったけど、ソースの変更っぽいので止めておく。

$ e2ps -lib
Command Name             : e2ps
Creator                  : Nobuyuki Shiraki
Version                  : Version 4.34
Created Date             : 08/21/2002
Font Size                : 10.00
Tab Width                : 8
Space Ratio              : 1.10
Max Lines                : 66
Top    Margin            : 40.00
Bottom Margin            : 40.00
Left   Margin            : 40.00
Right  Margin            : 40.00
ASCII Font Print Width   : 0.60
ASCII Font Print Height  : 1.00
ASCII Font               : Courier
ASCII Bold Font          : Courier-Bold
ASCII Bold Italic Font   : Courier-BoldOblique
KANJI Font Print Width   : 1.20
KANJI Font Print Height  : 1.00
KANJI Font               : Ryumin-Light-H
KANJI Bold Font          : GothicBBB-Medium-H
KANJI Bold Italic Font   : GothicBBB-Medium-H-Italic

■フォントの一覧

$ e2ps -fl | tail -1 | tr ' ' '\n';echo
Times-Roman
Times-Italic
Times-Bold
Times-BoldItalic
Helvetica
Helvetica-Oblique
Helvetica-Bold
Helvetica-BoldOblique
Courier
Courier-Oblique
Courier-Bold
Courier-BoldOblique
Symbol
AvantGarde-Book
AvantGarde_BookOblique
AvantGarde_Demi
AvantGarde_DemiOblique
Bookman-Light
Bookman-LightItalic
Bookman-Demi
Bookman-DemiItalic
Helvetica-Narrow
Helvetica-Narrow-Oblique
Helvetica-Narrow-Bold
Helvetica-Narrow-BoldObliqeu
NewCenturySchlbl-Roman
NewCenturySchlbl-Italic
NewCenturySchlbl-Bold
NewCenturySchlbl-BoldItalic
Palatino-Roman
Palatino-Italic
Palatino-Bold
Palatino-BoldItalic
Zapfchancery-MediumItalic
ZapfDingbats
Ryumin-Light.Hiragana
Ryumin-Light.Katakana
Gothic-Meduim.Hiragana
Gothic-Medium.Katakana