やるきなし

2015/01/26 19:21 / a2ps で日本語

たまに a2ps で日本語を使いたくなるのだが,大抵どうしようもならない.

EUC-JP ならなんとかなるという話もあるが,Debian GNU/Linux sid の a2ps (4.14-1.3) では,以下のような感じだった.

% LANG=ja_JP.eucjp date | nkf
2015年  1月 26日 月曜日 19:35:03 JST
% LANG=ja_JP.eucjp date | LANG=ja_JP.eucjp a2ps --encoding=euc-jp -o - -1 | grep JST
(2015\257  1\356 26\374 \356\313\374 19:35:03 JST) p n

どうも2バイト文字の1バイト目が無くなってしまうらしい.ということで,2バイト文字の各バイトに無駄なバイトを付けてみる (やるきなしワンライナー).

% LANG=ja_JP.eucjp date | ruby -e 'print STDIN.read.unpack("C*").map{|i| i>128 ? [-1,i] : i}.flatten.pack("C*")' | LANG=ja_JP.eucjp a2ps --encoding=euc-jp -o - -1 | grep JST
(2015\307\257  1\267\356 26\306\374 \267\356\315\313\306\374 19:36:36 JST) p n

これで生成される postscript (.ps) は gs (evince とか)で表示可能.この手の postscript は,あとは ps2pdf にさえ通ってしまえばなんとかなるのだが,今回はここで挫折.以前は (2015\307\257) p n(2015) p (\307\257) p n とかみたいに分解すれば ps2pdf に通ったような気がするのだが,手元の gs (9.06~dfsg-2) ではダメっぽい.

ということで e2ps を導入.入力は EUC (UTF-8 未サポート) で,landscape/portrate や 2-in 等にも対応.ただし a2ps (や enscript; こちらも日本語NG) にあるような style sheet サポートは無し.

というか,style sheet を諦めるのであれば,ブラウザ (google-chrome) でテキストファイルを開いて CUPS で PDF に印刷するか,Save to Google Drive で Google Drive に PDF を送る,というのでいいような気がしてきた.