lpr を使い、テキストファイルを印字ための設定方法を説明します。2 章で説 明したとおり、ここでポイントとなるのは、印字しようとするテキストファイル の種類と、プリンタの種類です。プリンタは BJ10VLite を想定していますが、 ESC/P の制御コードを持つものなら同様です。
使用するフィルタ、スプール等の定義を、/etc/printcap ファイルで行ないま す。printcap の記述例を示します。記述するとき、既に lp があった場合には、 削除するか、# でコメントアウトしておいて下さい。
1 lp| ESC/P filter :\ 2 :lp=/dev/lp1:\ 3 :sh:\ 4 :if=/usr/lib/escpf:\ 5 :of=/usr/lib/escpf:\ 6 :sd=/var/spool/lpr/lp:\ 7 :pw#90:pl#66:\ 8 :mx#0:\ 9 :lf=/var/spool/lpr/lp/lpr-error: |
これらは次のような意味になっています。
lp は lpr システム上のプリンタ名(エントリ)です。また、lp は、プリン タ名を指定しなかった場合にデフォルトで使用されます。| 以降はコメント です。
スペシャルファイルを指定します。プリンタポートの I/O アドレスによって、 0x3bc:/dev/lp0, 0x378:/dev/lp1, 0x278:/dev/lp2 となります。
カバーシート(出力したホスト名やユーザ名が印字される)の出力を抑制します。
Input Filter です。文字通り入力データのフィルタです。例えば課金情報 等を処理する場合に使用されます。ここでは JE に含まれる ESC/P 用のフィ ルタを指定していますが、特別何もしていません。
Output Filter です。出力データのフィルタです。ここで 1.2 節で説明し た変換などをおこないます。JE に含まれる ESC/P 用のフィルタを指定して いますが、特別何もしていません。
スプールディレクトリを指定します。これは 1 のプリンタ名毎に作成しま す。
pw が印字桁数、pl が印字行数の指定です。 この指定は、escpf フィルタにおける A4 でぎりぎりのサイズです。
スプールする最大ファイルサイズの指定です。0 を指定すると無制限になります。
ログファイルの指定です。エラー発生時に記録するファイルです。
書式の詳細は、man printcap で表示されます。
使用したフィルタ、escpf は、EUC と JIS コードのファイルを、ESC/P の制 御コードに変換します。
escpf は PCPR201 を処理できないので、同じく JE に含まれる pf コマンドを利用して、次のようなシェルスクリプトをフィルタにすると良いでしょう。
#!/bin/sh /usr/bin/pf -DPCPR -IEUC exit 0 |
* 最近の NEC プリンタは、ESC/P をサポートするものも発売されており、 PCPR201 を使う機会は減ってきているでしょう。
スプールディレクトリを作成します。単純に mkdir で作成する だけです。
# mkdir /var/spool/lpr # mkdir /var/spool/lpr/lp |
注意: 以前は、作成後 chown root.lp と chmod 775 等としていたのですが、Slackware-3.0 では特に必要ないようです。
# chown root.lp /var/spool/lpr/lp # chmod 775 /var/spool/lpr/lp
Slackware では、デフォルトで lpd が起動するようになっているので、特に 作業する必要はありません。ps コマンドで確認し、もし lpd が起動していない ようであれば、/etc/rc.d/rc.inet2 の $IN_SERV を確認 して下さい。 IN_SERV="lpd" となっていれば大丈夫の筈です。
lpd が起動していることを確認したら、lpc コマンドで次のようにします。
# lpc lpc> restart all lp: no daemon to abort lp: daemon started lpc> quit # |
このとき、ロックファイルがオープンできないと言うメッセージが出るかも知 れませんが、無視して構いません。
それでは、準備が出来たので早速印字してみましょう。印字には、次のコマン ド群を使用します。
印字要求を lpr システムに発行します。
lpr プリンタ名 印字ファイル |
例
# lpr EUC_file |
前述のとおり、プリンタ名は lp ですから省略できます。よって、上記のよ うになります。
もしも印字されない場合、次のことを確認します。
printcap の記述(フィルタやスプールディレクトリはちゃんと 存在するか?)
lpd が起動しているか? (ps コマンドで確認)
印字しようとしたファイルは EUC か JIS のどちらかか?
ESC/P スーパー機能つきプリンタの場合、ちゃんと解除されているか?
現在キューイングされている印字ジョブを表示します。
lpq プリンタ名 |
例
# lpq -Plp lp is ready and printing Rank Owner Job Files Total Size active wing 1 JPrinting-mini-HOWTO.jis 7470 bytes 1st wing 2 JPrinting-mini-HOWTO.jis 7470 bytes 2nd wing 3 JPrinting-mini-HOWTO.jis 7470 bytes # |
印字要求を取り消します。もちろん取り消せるのは、自分のジョブだけです。
lprm プリンタ名 ジョブ番号 |
例
# lprm -Plp 1 dfA001Aa00918 dequeued cfA001Aa00918 dequeued # |