3. lpr によるテキストファイルの印字方法

lpr を使い、テキストファイルを印字ための設定方法を説明します。2 章で説 明したとおり、ここでポイントとなるのは、印字しようとするテキストファイル の種類と、プリンタの種類です。プリンタは BJ10VLite を想定していますが、 ESC/P の制御コードを持つものなら同様です。

3.1. /etc/printcap の設定

使用するフィルタ、スプール等の定義を、/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:

これらは次のような意味になっています。

  1. lp は lpr システム上のプリンタ名(エントリ)です。また、lp は、プリン タ名を指定しなかった場合にデフォルトで使用されます。| 以降はコメント です。

  2. スペシャルファイルを指定します。プリンタポートの I/O アドレスによって、 0x3bc:/dev/lp0, 0x378:/dev/lp1, 0x278:/dev/lp2 となります。

  3. カバーシート(出力したホスト名やユーザ名が印字される)の出力を抑制します。

  4. Input Filter です。文字通り入力データのフィルタです。例えば課金情報 等を処理する場合に使用されます。ここでは JE に含まれる ESC/P 用のフィ ルタを指定していますが、特別何もしていません。

  5. Output Filter です。出力データのフィルタです。ここで 1.2 節で説明し た変換などをおこないます。JE に含まれる ESC/P 用のフィルタを指定して いますが、特別何もしていません。

  6. スプールディレクトリを指定します。これは 1 のプリンタ名毎に作成しま す。

  7. pw が印字桁数、pl が印字行数の指定です。 この指定は、escpf フィルタにおける A4 でぎりぎりのサイズです。

  8. スプールする最大ファイルサイズの指定です。0 を指定すると無制限になります。

  9. ログファイルの指定です。エラー発生時に記録するファイルです。

書式の詳細は、man printcap で表示されます。

使用したフィルタ、escpf は、EUC と JIS コードのファイルを、ESC/P の制 御コードに変換します。

escpf は PCPR201 を処理できないので、同じく JE に含まれる pf コマンドを利用して、次のようなシェルスクリプトをフィルタにすると良いでしょう。

   #!/bin/sh
   /usr/bin/pf -DPCPR -IEUC
   exit 0

* 最近の NEC プリンタは、ESC/P をサポートするものも発売されており、 PCPR201 を使う機会は減ってきているでしょう。

3.2. スプールディレクトリの作成

スプールディレクトリを作成します。単純に mkdir で作成する だけです。

   # mkdir /var/spool/lpr
   # mkdir /var/spool/lpr/lp

注意: 以前は、作成後 chown root.lpchmod 775 等としていたのですが、Slackware-3.0 では特に必要ないようです。
   # chown root.lp /var/spool/lpr/lp
   # chmod 775 /var/spool/lpr/lp

3.3. デーモンの起動

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
   #

このとき、ロックファイルがオープンできないと言うメッセージが出るかも知 れませんが、無視して構いません。

3.4. 印字テスト

それでは、準備が出来たので早速印字してみましょう。印字には、次のコマン ド群を使用します。

lpr 印字要求

印字要求を lpr システムに発行します。

   lpr プリンタ名 印字ファイル

   # lpr EUC_file

前述のとおり、プリンタ名は lp ですから省略できます。よって、上記のよ うになります。

もしも印字されない場合、次のことを確認します。

  • printcap の記述(フィルタやスプールディレクトリはちゃんと 存在するか?)

  • lpd が起動しているか? (ps コマンドで確認)

  • 印字しようとしたファイルは EUC か JIS のどちらかか?

  • ESC/P スーパー機能つきプリンタの場合、ちゃんと解除されているか?

lpq 印字待ちの表示

現在キューイングされている印字ジョブを表示します。

   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 プリンタ名 ジョブ番号

   # lprm -Plp 1
   dfA001Aa00918 dequeued
   cfA001Aa00918 dequeued
   #