計算機メモ目次 (目的のページと内容が一致しない場合, 目次から探してください)

CUPS でのテキストファイル印刷環境の変更


問題
  環境変数 LANG=ja_JP.EUC-JP の環境で lp コマンドでテキストを
  印刷しようとすると, 存在しない /usr/share/cups/charsets/euc-jp を
  探してしまい, 結果, 何も出力されずに中断されてしまう.
  CUPS についてくる texttops はそもそも日本語に対応していない.

対症療法
  LANG=C lp としてプリンタに投げる
  日本語テキストについてはユーザが a2ps などで変換する

根本的対策
  t2ps の導入(a2ps よりもシンプル)
    http://www.uopmu.ees.osakafu-u.ac.jp/~yabu/soft/original/#t2ps
    展開して make するだけ. できた t2ps を /usr/local/bin にインストール.
    (nkf -e の代わりに /usr/bin/lv -Oej を使用すると万能かも)

  cp /usr/share/cups/charsets/utf-8 /usr/share/cups/charsets/euc-jp
  mv /usr/lib/cups/filter/texttops /usr/lib/cups/filter/texttops.orig
  vi /usr/lib/cups/filter/texttops (下記内容で作成)
  chmod +x /usr/lib/cups/filter/texttops

  新たな texttops の中身

#!/bin/bash
# CUPS filter to convert text files to postscripts
PATH=/usr/local/bin:/usr/bin
n=0
while [ $# -gt 1 ]
do
    n=$(($n + 1))
    if [ $n = 1 ]; then
        jobid="$1"
    elif [ $n = 2 ]; then
        user="$1"
    elif [ $n = 3 ]; then
        title="$1"
    elif [ $n = 4 ]; then
        copies="$1"
    elif [ "x$option" = "x" ]; then
        option="$1"
    else
        option="$option $1"
    fi
    shift
done
fn="$1"
# Call t2ps with output to stdout
# Here it does not use arguments other than filename
t2ps -c 80 -n 0 -l t1 "$fn"



計算機メモ目次 (目的のページと内容が一致しない場合, 目次から探してください)
海洋大循環分野
daigo@ocg.aori.u-tokyo.ac.jp