プリンタの設定

HOME > それいけ Linux > 印刷
Last modified: Fri Oct 31 10:54:03 +0900 2008

はじめに

ここでは、私がリモートプリンタの設定をした際のことを書いておきます。

必要なもの

私の場合は、gs-ja(日本語版GhostScript)が必要でした。他にも、dvipsk-ja等、 PostScript形式に変換するプログラムが必要になるかも知れません。

入手方法

私は以下のようにしました。

% sudo apt-get install gs-ja

プリンタサーバの登録

今回は、リモートプリンタに印刷したいので、リモートプリンタまでの経路を知 らなければいけません。ということで、/etc/hostsに以下のような記述を追加し ましょう。

192.168.0.10     lp0.local.net  lp0

最初の192.168.0.10はプリンタサーバのIPアドレスです。次のlp1.local.netは プリンタサーバのFQDN(ホスト名とドメイン名からなる、IPアドレスの別名)です。 最後のlp1は、FQDNの別名です。

この作業は必ずしも必要というわけではありません。DNS等でホスト名(プリンタ サーバのIPアドレス)がわかれば問題ありません。

プリンタの登録

次に、プリンタサーバに接続されているプリンタを登録します。設定ファイルは /etc/printcapです。設定は例えば以下のようになります。

lp0|epson:\
	:lp=:rm=lp0:\
	:sd=/var/spool/lpd/lp0:\
	:lf=/var/log/lp-errs:\
	:if=/usr/local/sbin/somefilter:\
	:rp=PS-BEE2C0-P1:mx#0:sh:

注意点は:から:の間にスペースをいれてはいけないということです。タ ブにして下さい。

各パラメータの意味ですが、

lp0|epson
プリンタ名です。先程のプリンタサーバのホスト名(または、ipアドレス) を指定して下さい。|で区切って複数別名をつけることが出来ます。
lp
ローカルプリンタ(直接接続されているプリンタ)の場合はここに (/dev/lp0等の)デバイスファイルをしてします。今回はリモートプリンタ なので指定していません。
rm
リモートプリンタを指定します。プリンタのホスト名(または、ipアドレ ス)になります。ローカルプリンタの場合はこれは必要ありません。
sd
スプールディレクトリを指定します。フルパスで記述して下さい。
lf
ログファイルを指定します。このファイルにエラーメッセージが書き込ま れます。フルパスで記述して下さい。
if
フィルタプログラムを指定します。今回は、これから作るGhostScriptを 使った、シェルスクリプトによるフィルタプログラムです。フルパスで記 述して下さい。
rp
リモートプリンタへの引数を指定します。私が使用した、プリンタサーバ はポートを指定しなければいけないので、ここに記述しています。必ずし も必要というわけではありません。
mx
最大ファイルサイズを指定します。0にすると制限をしません。
sh
バーストページヘッダの印刷を抑制します。

フィルタの作成

もし、PostScriptプリンタであれば作成する必要はありません。私の設定したプ リンタは、gs-jaで変換できる形式でした。gs-jaで変換できる形式はgs-ja -hで 確認できます。以下は実際に使ったスクリプトです。

#!/bin/sh
/usr/bin/gs-ja -q -dNOPAUSE -sDEVICE=ddps4 -r360 \
               -sPAPERSIZE=a4 -sOutputFile=- -

このスクリプトを保存し(今回はsomefilterというファイル名をつけました)、 chmod +x somefilterとして、実行権をつけ、/etc/printcapのifで指定したパス へ移動します。lips4は各プリンタに応じて、適宜変更して下さい。各引数の説 明は以下のようになります。

-q
起動時のメッセージを表示しません。フィルタとして gs-jaを使うときは必ず指定しましょう。
-dNOPAUSE
一ページ毎に変換を中断するのを抑制します。フィルタとして gs-jaを使うときは必ず指定しましょう。
-sDEVICE=lips4
変換する形式を指定します。これはlips4という形式に変換します。gs-ja -hで指定できる形式の一覧が出ます。プリンタに応じて適宜変えて下さい。
-r360
解像度を指定します。普通は760x360という風にX(760)とY(360)の解像度 を指定しますが、xを省略するとXとYにも同じ値が使われます。今回は -r360x360と書いたものと同じになります。
-sPAPERSIZE=a4
紙のサイズを指定します。ここではa4に指定しています。
-sOutputFile=-
出力するファイルを指定します。今回はフィルタとして使うので、-で標 準出力を指定しています。
-
入力ファイルを指定しています。今回はフィルタとして使うので、-で標 準入力を指定しています。

印刷

それでは、印刷してみましょう(ローカルプリンタの場合はlpdを(再)起動させて 下さい)。ためしに/usr/share/doc/gs-ja/examples/tiger.ps.gzという虎の絵の PostScriptファイルを印刷してみましょう。

% zcat /usr/share/doc/gs-ja/examples/tiger.ps.gz | lpr -Plp0

プリンタlp0の状態を確認するには以下のようにします。

% lpq -Plp0

プリンタlp0の3番目のジョブを削除するには以下のようにします。ジョブの番号 はlpqで確認できます。

% lprm -Plp0 3