vine-users ML アーカイブ



[vine-users:077379] Re: CUPS lp コマンドの "-o page-left=xx" が効かない

  • From: 長南洋一 <cyoichi@xxxxxxxxxxxxxxx>
  • Subject: [vine-users:077379] Re: CUPS lp コマンドの "-o page-left=xx" が効かない
  • Date: Mon, 30 Jul 2007 22:28:27 +0900 (JST)
長南です。

芳賀さんのメールより [vine-users:077372]
>
> ということは、cjktexttops フィルターからの出力が PostScript に
> なっているから、lp コマンドで "-o page-left=xx" オプションを
> 指定しても無視されるということでしょうか。

大体そういうことだと思います。より詳しく言うと、"-o page-left=xx"
オプションは、プレーンテキストを PS 形式に変換するときに、texttops
フィルターによって利用される。

今日、Vine 4.1 の /etc/cups/mime.convs の cjktexttops を texttops
に書き換えてみました。こんなふうに(Vine 3.2 と同じに)したわけです。

  application/x-cshell    application/postscript  33      texttops
  application/x-perl      application/postscript  33      texttops
  application/x-shell     application/postscript  33      texttops
  text/plain              application/postscript  33      texttops
  text/html               application/postscript  33      texttops

これで、lp -o page-left=30 .bashrc と lp -o page-left=60 .bashrc を
実行したところ、左マージンがきちんと変化しました。

CUPS にもともと付属する texttops は page-left などのオプションを
受け取って利用する。ただし、日本語テキストの処理ができない。
Vine 特製の cjktexttops は日本語テキストも適切に処理してくれるが、 
page-left などのオプションを理解しない、ということだと思います。

> ただ、妙なのは、"lp" コマンドの "-o" オプションの使われ方です。
> メールをいただいてから、以下のコマンドを試してみました。
>     $ lp -o page-left=60 -o page-border=double .bashrc
> これは 「左マージンを 60pt 確保し、用紙の周囲に2本の枠線を印刷
> する」 オプションです。すると以下の結果になりました。
>   (1) 2本の枠線が、用紙の左端から 2.1cm ほど離れた位置から印刷
>        されました。
>   (2) .bashrc 内のテキスト自体は、用紙の左端から 8mm ほど離れた
>        位置から印刷されました。

これがおもしろいですね。手元の適当な PS ファイルで試してみました。

  lp -o page-border=single -o page-left=30 math_example.ps
  lp -o page-border=single -o page-left=60 math_example.ps

本文部分には影響がなく、左枠線の位置がそれらしく変わっています。

options.html の説明によると、page-left などは、「プレーン・テキスト
のファイルを印刷するときにだけ使われる」とのことですが、実際には
もうすこし複雑なようです。すなわち、 page-left など単独では、
プレーンテキストにしか効果がないが、page-border と一緒に使うと
−−PostScript データの本体に影響を与えることはないものの−−
それによって page-boder(枠線)の位置を変更できる。options.html が
ちょっと説明不足なのではないでしょうか。画像ファイルで確かめることは
やっていませんけれど。

-- 
長南洋一