BJC-440(Canon)をPrint Serverとして使う

D:20010813 免責事項

現在4台のPCでLANを組んでいるが、プリンタを特定のマシンにつな いでしまうとプリントだけのためにそのPCを起動しなければいけない。そ れも億劫なのでネットワークプリントサーバにしようという試み。

BJC-440(Canon)とPServer(corega)でネットワー クプリントサーバを構成し、これをLinuxBoxから利用するための準備と手 順について記述する(WindozBoxの操作含む)。

準 備

PServer(corega)をBJC-440(Canon)に接続したうえで、WindozBox にPServer(corega)付属FDより、「PS Admin」をインストールする (PServer取説、P27〜)。

WindozBoxにインストールした「PS Admin」を起動して プリントサーバのIPアドレス、サーバ名、ポート名を設定する (PServer取説、P41〜)。

IPアドレス192.168.0.100
サブネットマスク255.255.255.0
デフォルトゲートウェイ[1]192.168.0.254

「PS Admin」メニューの「環境設定→サーバデバイス」より、以下の設定をする。

サーバ名corega19CB4B
ポート名corega19CB4B-P1

「PS Admin」の環境設定を保存したうえでLinuxBoxよりプリント サーバへpingを打って接続を確認する。
~$ ping 192.168.0.100

LinuxBoxの/etc/hostsを編集してつぎの行を追加しておく。
192.168.0.100  corega19CB4B.[LOCAL_DOMAIN_NAME] corega19CB4B

関連ソフトのインストール

プリンタを使うために必要となるいくつかのパッケージをインス トールする。
# apt-get install easypr-lprng
# apt-get install gs
# apt-get install gsfonts
# apt-get install gsfonts-x11
# apt-get install gv
# apt-get install lprng
念のため再起動して起動メッセージからlpd の起動を確認するか、または、daemonとして lprngをスタートさせる。
# /etc/init.d/lprng start

printcapを編集

/etc/printcapへつぎのようにプリンタを 追加して、gsからサンプルファイルの出力を確認 する。
(/etc/printcapへ追加)
lp|ps|gs|Remote printer entry
        :lp=
        :rm=corega19CB4B
        :rp=corega19CB4B-P1
        :sd=/var/spool/lpd/lp/remote
        :mx#0
        :sh
        :lf=/var/spool/lpd/lp/remote/log
(gsからsample.psを出力する)
~$ gs -dKANJI -dNOPAUSE -sDEVICE=bjc600 -sOutputFile=\|lpr sample.ps -c quit
if(フィルタコマンド)を使おうとしたが、リモートプリンタにはifが使えない ようだ。

この問題を解決して、フィルタコマンドを実行してリモートプリ ンタへデータを渡す方法もあるようだが [2]、 今回この方法は使わなかった。

easyprを使う

ここまでで、gsからリモートプリンタへの 印刷は検証できたが各アプリケーションからリモートプリンタへの印刷 は失敗している。原因は、リモートプリンタではif(フィルタコマンド) が使えないため。解決策としてeasyprを使うこと にする。前節「関連ソフトのインストール」でインストール済みなので、 環境設定をする。easyprの環境設定は、"setup"オ プション付きで起動すればよい。
~$ easypr --setup
左枠メーカリストの「キヤノン」をダブルクリックすると右側にプリンタ名 リストが表示されるので「BJC-440J」をクリックして「用紙サイズ」等の オプション設定を選んだうえで、左下「設定」ボタンをクリックして環 境設定は完了する。easyprから印刷するには、印 刷ファイル名を引数として与えればよい。詳しい使い方は、manページ を参照。
~$ easypr sample.ps
PostScriptファイルでも、プレーンテキストファイルでも印刷できる。 アプリケーションから印刷する場合は、印刷コマンドに 「lpr2」を指定することで easyprから印刷できる。 easyprを使うときは /etc/printcapでは決してif(フィルタコマンド) を使ってはいけない。

関連コマンド

lpqprint queueを表示する
lprmqueueからjobを削除する
e2pstextからPostScriptへ変換をする

Notes

[1]

Comstarz Router version 4.0.19 : NEC

[2]

/usr/share/doc/HOWTO/ja-html/Printing-HOWTO.htmlの 「11.6 リモートプリンタにifを実行する」に記述されている。