# 章 3. KLJetToolの起動

SLinuxディストリビューションの中には、LJetToolが生成したPJLファイルを無視する印刷サブシステムを備えているものがあります。こうした印刷サブシステムはPJLファイルをPJLファイルとしては認識せず、フィルタを使って変換しようとしますが、これは、KLJetToolの誤動作の原因となります。

本項では、RedHat Linux 5.0システムでLJetToolを動作させるのに必要なステップについて説明します (KLJetToolはRedHat linux 5.0ベースのディストリビューションでそのまま動作するはずです)。他のシステムについても、同様のステップが必要になるものと考えております。実行しなければならないステップは決して面倒ではありません。あなたがしなければならないのは、印刷サブシステムが未修正のPJLファイルをプリンタに送るかどうかの確認だけです。

RedHat LinuxシステムはPJLをそのままの状態では認識せず、修正しない状態でプリンタに送らずに、風変わりなことをしようとします。そこで、このシステムにPJLファイルの扱い方を教える必要があります。 ただし、システムに対して本書に記述されている変更を加える前に、KLJetToolがシステム上でほんとうに機能しないことを確かめてください。というのは、読者が本書をお読みになる頃は、RedHatや他のディストリビューションの印刷サブシステムはアップデートされているものと思われるからです。

RedHatシステムのように同じように「高度な」プリンタサブシステムを備えた他のディストリビューションも、プリンタに送るPJL(プリンタジョブ言語)ファイルの扱い方を教える必要があると考えています。

redhatシステムの場合、`/etc/printcap`からスクリプト `/var/spool/lpd/lp/filter`が呼び出され, そのたびにコマンドlprを使って何かが印刷されます。フィルタは印刷するファイルについての「ファイル」プログラムを実行し、「ファイル」が「フィルタ」スクリプトに対して、どのような種類のドキュメントが扱われているか知らせます。そして、ドキュメントの種類によって、適正なプログラムが実行され、プリンタが理解できるフォーマットで出力が生成されます。「ファイル」プログラムは`/etc/magic`ファイルを使って、印刷するドキュメントの種類 (例： PostScript、dvi、テキストなど)を判断します。

たとえば、postscriptドキュメントを印刷する場合、myfile.psファイルは扱うのがpostscriptファイルだと「フィルタ」スクリプトに知らせ、「フィルタ」がまずghostscriptを実行して、myfile.psを pcl 5（レーザージェットが理解する言語）に変換してから、このファイルをプリンタに送ります

残念なことに、RedHatシステムはPJLファイルを認識せず、未修正のプリンタに送る代わりに、おかしなことをしようとします。

RedHatシステムでLJetToolを機能させるには、2つのことをすればOKです。

- 「ファイル」プログラムがPJLファイルをPJLファイルとして正しく認識するように、 `/etc/magic` ファイルに1行追加します。 /etc/magic ファイルに次の2行を追加します。 `/etc/magic`ファイルのどこにこれらの行を追加しても構いません。

       # HP Printer Job Language, Bernd Wuebben (wuebben@math.cornell.edu)
       0	string		\033%-12345X	 HP PJL printer commands

- /var/spool/lpd/lp/filterスクリプトに、PJLファイルの扱い方を教えます。これは、「フィルタ」スクリプトに次の2行を追加するだけです。

          *pjl* )
                                                     startpnt="INPUT-to-prdata";;

  フィルタスクリプトを見れば、どこに追加すればよいかすぐ分かると思います（筆者が持っているバージョンでは220行の前後）。これらの行は、PJLファイルをそのままにし、何も修正せずにプリンタに送るようにスクリプトに伝えているだけです。

筆者自身のフィルタスクリプトと/etc/magicのコピーを入れておいたので、上記の修正作業がうまくいかない場合には、これを使ってください。KLJetToolのドキュメンテーションが入っているのと同じディレクトリで探し出せるはずです。

複雑な印刷フィルタサブシステムを使っている方は、LJetToolを他のシステムで機能させるには何をすればよいか（もしあれば）、是非お知らせください。