PostScript 対応ネットワークプリンタ(1)…プリントサーバ構築編

Written by TOGARI Hidenori, 2000/2/29.

ここでは、Linux(Debian 2.1) マシンのパラレルポートに接続されたプリンタ( Cannon LASERSHOT B406E )を、プリントスプーラデーモン(lpd)と GhostScript を用いることによって PostScript 対応ネットワークプリンタに変身させる。

また、同時に、txt2lips というコマンドを印刷時のフィルタに使用する設定も行う。txt2lips は、入力された内容を Cannon のレーザープリンタで用いられる言語(LIPS)に変換してくれるフィルタである。GhostScript を通して PostScript 形式に変換するよりもこちらの方が高速なので、文字だけ出力する場合はこちらを用いた方が快適である。


Index

  1. 必要なパッケージのインストール
  2. 設定ファイルの作成
  3. スプールディレクトリの作成
  4. Windows のプリントサーバにする( Samba )
  5. Mac OS のプリントサーバにする( Netatalk )

1.必要なパッケージのインストール

それぞれ dselect コマンドを用いてインストールする。

1−1.プリントスプーラ

lpr というパッケージを使用する。
(意図的に外していなければ、すでにインストールされているはず)


1−2.Ghost Script 関連

以下のパッケージをインストール。
Package            Version
─────────────────
libc6              2.0.7.19981211
libjpegg6a         6a-12
libpaperg          1.0.3-11
libpng2            1.0.2b-0.1
svgalibg1          1.3.0.19980916
vflib              2.22pl10-5
xlib6g             3.3.2.3a-11
zlib1g             1.1.3-2
gsfonts            5.10a-1
gs-aladdin-vflib   5.10-7
ghostview          1.5-19
zeitfonts          1-4
─────────────────


1−3.txt2lips 関連

以下のパッケージをインストール。
Package            Version
─────────────────
txt2lips           1.10-3.1
kcc                2.3-6
─────────────────


2.設定ファイルの作成

以下の設定ファイルを作成する。

2−1.リモートホストからの lpd へのアクセス制限の設定

  • /etc/hosts … ホスト名と IP アドレスを関連づけるデータベースの設定
  • /etc/hosts.lpd … lpd への接続を許可するリモートホスト名のリストの設定
  • 説明
    基本的には、lpd を利用して印刷を行えるリモートホストの一覧を /etc/hosts.lpd に記述すればよい。

    ただし、同ファイル中に作成するリモートホスト一覧には、 じかに IP アドレスを書いてはいけないないようだ( lpd がリモートホストからの接続を許可してくれない)。対策として、各リモートホストについて便宜的なホスト名を設定( /etc/hosts )し、/etc/hosts.lpd ではそれらホスト名を記述するようにした( DHCP サーバーによって動的に割り振られるアドレスすべてを記述)。


    2−2.プリンタの設定

  • /etc/printcap … lpr コマンドが参照するプリンタ名とその処理内容の設定
    説明
    ここでは、lp・lp1・lp2・ps という4つのプリンタを定義している(ハードウェアとしてのプリンタはひとつ)。/etc/printcap の内容の説明は以下の通り。

    先頭行…プリンタの名前の定義。複数の名前を持たせる場合は、名前同士を "|" で区切る
    lp …プリンタのデバイス名
    sd …プリントキューのスプール先ディレクトリ名
    if …lpr への入力フィルタファイル名
    lf …エラーログファイル名
    mx …上限の設定( "#0" は無制限をあらわす)
    sh …ヘッダページを印刷しないようにするための命令

  • 2−3.入力内容をプリンタの言語に変換するためのフィルタの定義

  • /etc/filter.ps … PostScript をエミュレートするためのフィルタの定義
  • /etc/filter.text1 … テキストファイルを用紙縦向きで印刷するためのフィルタの定義
  • /etc/filter.text2 … テキストファイルを用紙横向きかつ2段組みで印刷するためのフィルタの定義
  • 印刷時に呼び出すフィルタの指定は、前述の /etc/printcap 中で行う。

    これらのファイルを実行形式にする。

    # chmod 755 /etc/filter.ps
    # chmod 755 /etc/filter.text1
    # chmod 755 /etc/filter.text2
    

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

    前述の
    /etc/printcap で設定( :sd="スプールディレクトリのパス": )した通りに、スプールディレクトリを作成する。

    # mkdir /var/spool/lpd/lp
    # mkdir /var/spool/lpd/lp1
    # mkdir /var/spool/lpd/lp2
    # mkdir /var/spool/lpd/ps
    

    各スプールディレクトリのファイル属性を設定する。

    # chown root /var/spool/lpd/lp*
    # chown root /var/spool/lpd/ps
    
    # chmod 775 /var/spool/lpd/lp*
    # chmod 775 /var/spool/lpd/ps
    

    下のような感じになっていれば良い。

    # ls -la /var/spool/lpd/
    total 6
    drwxrwxr-x   6 lp       lp           1024 Feb 27 06:35 .
    drwxr-xr-x   6 root     root         1024 Nov 26 23:41 ..
    drwxrwxr-x   2 root     lp           1024 Feb 27 06:35 lp
    drwxrwxr-x   2 root     lp           1024 Feb 27 06:51 lp1
    drwxrwxr-x   2 root     lp           1024 Feb 27 06:36 lp2
    drwxrwxr-x   2 root     lp           1024 Feb 28 10:02 ps
    

    4.Windows のプリントサーバにする

    Windows のプリントサーバにするためには、Samba の
    設定ファイル( /etc/samba/smb.conf、/usr/local/samba/lib/smb.conf など)にプリンタの設定を加える。

    設定ファイル中の printers セクションを、例えば次のように記述すればよい。

    [printers]
    	comment = Cannon LASERSHOT B406E
    	path = /tmp
    	create mask = 0700
    	guest ok = Yes
    	print ok = Yes
    	printer name = lp
    	browseable = Yes
    

    以上で、一通りの設定は終わりである。Samba を再起動して、実際に Windows から印刷できるか、テストしてみよう。

    # /etc/init.d/samba restart
    

    4.Mac OS のプリントサーバにする


    4−1.PPD(プリンタ記述)ファイルの作成

    ここでは、Mac OS の PPD ファイルを流用する(adobe の FTP サイトに、いろいろな PPD ファイルが公開されているらしいので、そこからダウンロードしてたものを使っても良い)。

    Mac OS の [システムフォルダ]/[機能拡張]/[プリンタ記述ファイル] の下に、"LaserWriterII NTX-Jv50.5" というファイルがあるか確認する。もし無ければ、Mac OS のインストール CD-ROM からプリンタドライバ関連のものを追加インストールするか、adobe の FTP サイトからダウンロードする。

    このファイルのファイル名を空白のないもの(例えば、"lw2ntx" )に変更し、netatalk が稼働しているサーバに転送する。 転送したファイルの改行コードを perl を使って変換する。 転送先のファイルが /home/hoge/lw2ntx であれば、

    $ perl -pe 's/\r/\n/g' /home/hoge/lw2ntx > /home/hoge/lw2ntx.ppd
    
    これを、分かりやすい場所(どこでもかまわない)に移動する。
    $ sudo -s
    # mv /home/hoge/lw2ntx.ppd /etc/netatalk/
    

    4−2.設定ファイルの編集

    次に、netatalk の設定ファイル( /etc/netatalk/papd.conf )を編集する。

    shukin-ps:\
    	:pr=| lpr -Pps:\
    	:op=operator:\
    	:pd=/etc/netatalk/lw2ntx.ppd:
    

    説明

    pr=| lpr -Pps
    使用プリンタ名の記述、あるいはサーバ内で実行されるプリントコマンドそのものを記述するエントリである。 Debian のバグリポートによると、 ここで示した例のように、パイプ記号 "|" +印刷コマンド( lpr -P[プリンタ名] )という形式で記述しないと印刷してくれないらしい(これでちょっとハマった)。 この例の中の "-Pps" というのは GhostScript を利用して PostScript - LIPS 変換うように設定したプリンタ "ps" の使用を指定している部分である(プリンタの設定については前述)。

    op=operator

    サーバ内部で lpr を実行して、印刷を行う際のユーザ名である。サーバ内で印刷コマンドを実行できるユーザであればどれでもかまわない。ここでは、ログインユーザでないユーザ "operator" を指定している。

    pd=/etc/netatalk/lw2ntx.ppd

    プリンタ記述ファイル名(さきほど作成した PPD ファイルのパス名)。

    4−3.Netatalk の再起動

    以上で、一通りの設定は終わりである。netatalk を再起動して、実際に Mac OS から印刷できるか、テストしてみよう。

    # /etc/init.d/netatalk stop
    # /etc/init.d/netatalk start
    

    プリンタの利用方法
    サーバ構築マニュアル目次