連載 IJN Ⅸの玉手箱ーの 述し、複数のプリンタを登録する場合はプリンタごとに行 を分けて書きます。 1 つのプリンタに関する設定は、以下 のようなフォーマットに従います 11 プリンタ名 : 属性 : 属性 : ... : 属性 : 最初の、、プリンタ名 " には、そのプリンタの名前を指定 します。プリンタ名には別名を付けることが可能で、その 場合はプリンタ名の後ろに、、「で区切って指定します。 1pl 10Ca1 line printer: 、 lp " というのが正式なプリンタ名で、 上記の例では、 、 local line printer" が別名になります。別名はなんでも かまいませんが、そのプリンタに関するもうすこし詳しい 情報 ( 機種名など ) をコメントふうに書く場合が多いよう です。なお、複数の別名を付けたい場合は、さらに一で 区切って列挙します。 、、属性 " には、そのプリンタにジョブを送るうえで必要な 情報を、、変数と値 " の組で指定します。属性を指定するた めの変数には 3 つの型があります。 ・プール型 ( 6 。司 ) true あるいは false の 2 つの値をとる変数です。変数 名を記述した場合は true 、そうでない場合は false と なります。 ・数値型 (num) 値として数値をとる変数で、 定します。 (f 列 ) : mx#0 : ・文字列型 (str) 、、変数名 # 値 " のように指 値として文字列をとる変数で、、、変数名 = 値 " のように 指定します。フィールドの区切りを示す までカイ直とみなされます。 (f 列 ) : rm=nul lp c : ( コロン ) 136 クスラッシュ ) を付けると設定を次の行に続けることかできます。 11 、、 # " て始まる行はコメントとみなされます。また、行末に、 \ " ( バッ お、変数名の後ろの括弧内に変数の型を示します。 まな変数がありますが、おもなものだけを説明します。な オンライン・マニュアル pr ⅲ tcap ( 5 ) をみるとさまざ ・ lp (str) ローカルプリンタの場合、プリンタか接続されているホ ートのデバイスファイルを指定します。個人か購入でき る PC 向けのプリンタであれは、その多くがパラレルポ ートに接続するタイフ。です。この場合、デバイスファイ ルは /dev/lpt0 (FreeBSD) や /dev/lp0 (BSD/OS) などのようになります。シリアルポートに接続するタイ プであれは、 /dev/ttydO (FreeBSD) や /dev/tty00 (BSD/OS) になります。 一方、リモートプリンタの場合は、、 : lp = : " のように空 の文字列を指定します。 ・ rm (str) および rp (str) リモートプリンタの場合、 rm 変数にプリンタサー のホスト名、 rp 変数にプリンタサーバーで使われてい るプリンタ名を指定します。 最近のレーザープリンタのなかには、、ネットワーク対 応 " と銘打ったものがあり、 PostScript に対応してい ないものであ川ま、実売価格で 10 万円程度て購入でき るようです。これらのプリンタはシリアルあるいはパラ レルポートに加え、 Ethernet ( 多くの場合は 10Base T) のインターフェイスを備えています。このようなフ リンタを Ethernet に直孑妾続すると、そのプリンタ自 身カワ。リンタサーバーとして動作します 12 ネットワーク対応プリンタは、他のマシンからみるとフ ーとして働き、 rm 変数の値はプリンタに リンタサー ケえられたホスト名になります。一方、 rp 変数の値は プリンタによって異なりますが、、、 lp ' や、、 raw " を指定 するものが多いようです。 ・ If (str) 工ラー情報などを言泉するためのログファイルを絶対ハ スで指定します。デフォルトは /dev/console で、コン ソールに出力されます。通常は、、 /var/log/lpd-errs" を指定しておけはいいでしよう。 FreeBSD や BSD/ OS のインストール時に付属する /etc/printcap ファ イルでもそのようになっています。 なお、複数のプリンタがある場合は、プリンタごとに別 のファイルにしたほうがよいでしよう。 12 したがって、プリンタに IP アドレスやホスト名をなえる必要がありま す。 UNIX MAGAZINE 1999.6
プリンタ買うなら QMS インターネットが正解です。 QMS Sto 「 e は、ダイレクト販売システム。 QMS Sto 「 e は、会社や自宅にいながらにしてプリンタをお求めいただける ダイレクト販売システム。しかも、メーカーダイレクトのため、高性能を バリュープライスで提供。納期は、ご注文から 1 週間以内。メモリなどの オプションを組み込んた、ビルトトウォーダーもご利用いたたけます。 QMS プリンタの消耗品もお届けします。 QMS Sto 「 e では、トナーカートリッジなどをはじめ、 QMS プリンタ全モデルの消耗品も取り扱っています。 お近くにショップのないお客様や、急な入用時にもぜひご利用くたさい。 サポート体制も、ダイレクトだから安心。 QMS Sto 「 e でご購入いたたいた製品は、 QMS カスタマサポートが責任をもって対応します。 学校、企業、官公庁のお客様へ。 QMS Sto 「 e では、法人向け窓口を設けています。お気軽にご相談くたさい。 お求めは、いますぐ。 わ ttp : ″ⅣⅣⅣ . qm 可・ ( 0 ・ jp / 受付時間 : 24 時間 Te l: 0 3 - 3 7 7 9 - 9 6 0 6 お問い合わせ・ご相談からご注文まで、 QMS Sto 「 e のスタッフが承ります 受付時間 : 9 : 00 ~ 18 : 00 ( 土・日・祝日をのぞく ) お客様 ご注文 電話 お届け ダイレクト販売ならではのバリュープライスでご提供 ! QMS Store モ W A4 ・ 600dpi ネットワーク対応 Windows カラーレーザー QMS magic 可 0 「 2 0 咄レ QMS Store 価格¥ 198 , 000 ( 消耗品ー式含む、消費税別 ) A4 ・ 600dpi ・ 600dpiX2400dpi ポストスクリプト互換 QMS magico 「 2 QMS Store 価格¥ 298 , 000 ( 消耗品ー式含む、消費税別 ) EX モデル¥ 428 , 000 COLOR 64bi レ 150M Hz RISC CPU と A3 ワイドサイス対応、 カラー毎分 4 枚 mBASE - TX 対応 C 「 ownNet 搭載 A3 ワイド・ 600dpi ・ 1200dPi ポストスクリプト互換日本語力ラーレ - ザープ丿ンタ QMS magicolor 330 QMS Store 価格¥ 628 , 000 ( 消耗品ー式含む、消費税別 ) EX モデル¥ 770P00 64bit/100MHzRlSCCPU と 「 QMSCrown multitaskingtechnology 」により、 超高速スルーブットを実現 A3 ワイドトンボ・ 600dpi ・ 1200dPi ・ 20ppm 善 1 ポストスクリプト言語互換日本語ネットワ - クプリンタ QMS 2060P 血 t system QM S Store 価格 F2 モデル¥ 258 , 000 ( トナ - カートリッジ含む、 消費税別 ) F5 モデル¥ 318 , 000 / F7 モデル¥ 368 , 000 64bi レ 150MHz RISC CPU と IOOBASE-TX 対応 CrownNet を搭載し、 最大 3 , 500 枚 * 2 の大量給紙が可能 A3 ・ 600dpi ・ 1200dPi ・ 32ppm 善 1 ポストスクリプト言語互換日本語ネットワークプ丿ンタ QMS 3260P 血 t system QMS Store 価格¥ 498 , 000 ( トナーカートリッジ含む、消費税別 ) EX モデル¥ 598 , 000 * 1 : A4 横 * 2 オプション装着時 - 9605 キュー・エム・エス・ジャパン株式会社 〒 1 41 -00 3 1 東京都品川区西五反田 7 丁目 25 番地 9 号西五反田 E S ビル営業部 T E L : 0 3 - 3 7 7 9 資料請求 No. 028
図 2 リモートプリンタに対するジョブ ~ 里 当当只 連載 / UN Ⅸの玉手箱ーの ジョブ 3 ジョブ 2 ト ゆ「 mypc ト ゆ「 herpc リンタの場合と同様にプリントキューに溜まっている ジョブが頂番に処理される。 リモートプリンタの場合はすこし複雑になりますが、ロ ーカルかリモートかにかかわらす、 lpr コマンドによって 発行されたジョブはまずローカルホストのプリントキュ に入り、プリントキューを管理している lpd デーモンが ジョブを処理します。日に一異なるのは、ローカルプリンタ の場合はジョブの印刷データを直接プリンタに送るのに対 し、リモートプリンタの場合はプリンタサーバーの lpd に 処理を依頼する点だけです。 なお、ユーザーは lpr コマンドを使ってジョブを発行す るだけでなく、 lpq コマンドを使ってプリントキューの 状態を石忍したり、 lprm コマンドを使って発行したジョ ロ nullpc ( プリンタサーバー ) ことはできます。この状態で lpd を起動してやれは、 lpd はプリントキューに溜まっているジョブを処理します。 一方、ネットワークを介してプリンタサーバーにジョブ を送る場合の処理は図 2 のようになります。プリンタサー ノヾー nullpc と同じネットワークに mypc と herpc カ材妾 続されており、それぞれのマシンを使っているユーザーが リモートプリンタに対してジョブを発行しています。この 場合、クライアントである mypc や herpc はそれぞれリ モートプリンタに対するプリントキューをもち、それぞれ のクライアントで lpd デーモンか動いています。ここで mypc を使っているユーザーが lpr を実行した場合、ジョ プか処理される手順は次のようになります。 1. lpr コマンドは引数で指定されたファイル ( のコピー ) をジョブとして mypc のプリントキューに置く。 2. プリントキューに置かれたジョブは lpd デーモンによっ て管理される。処理の順番か回ってくると、 mypc の lpd はプリンタサーバー (nullpc) の lpd に対してジョ プを送信する。ジョブを送信し終ると、 mypc の lpd は プリントキューからジョブを削除し、 ( プリントキュ にジョブがあ川ま ) 次のジョブを処理する。 3. ジョブを受け取った nullpc の lpd デーモンは、 nullpc のプリントキューにジョブを置く。その後はローカルプ UNIX MAGAZINE 1999.6 プを取り消すことができます 10 こではプリンタの設定 に焦点を絞り、 lpr コマンドを含むューザーコマンドの詳 細は割愛します。これらのコマンドについては、オンライ ン・マニュアル lpr(l) や lpq(l) 、 lprm(l) などを参照 してください。 プリンタの設定 前述したように、プリンタがどのマシンに接続されてい るかに関係なく、ジョブはローカルホストのプリントキュ ーに置かそのホストの lpd デーモンカワ。リントキュ を管理して処理をおこないます。したがって、プリンタを 利用するすべてのマシンに対して設定を施さなければなり ません。プリンタに関する設定をおおまかに分けると以下 のようになります。 プリンタの登録 ・スプール・ディレクトリの作成 ・ lpd デーモンの起動 これらについて、順を追って説明します。 プリンタの登録 あるマシンでプリンタを利用するには、プリンタに関す る↑青報を /etc/printcap という成疋ファイルに登録しま す。基勺に、あるプリンタに関する 1 辭長を 1 つの行に記 10 スーパーユーサーを除き、 lprm コマンドを使って取り消すことカき るのは自うを行したジョフたけです。 135
null プリンタの設定 「 PC の基本的な構成は ? 」と訊かれたとき、皆さんはど のようなハードウェアを思い浮かべるでしようか ? PC 本体に始まって、キーポードやマウス、ディスプレイな ど、多種多様なものがあります。これらのハードウェアの うち、人間と PC とのインターフェイスになっている部分 に注目すると、人間が PC に対してコマンド入力など窈旨 示を、、入力 " するための装置と、 PC が人間に対して処理 結果などを、、出力 " するための装置に大きく分かれます。 ーロに入出力装置といってもさまざまですが、デスク トップ PC に限定すれば、入力装置はキーポードとマウ ス、出力装置はディスプレイとプリンタか代表的てす。と くに個人レベルでみると、 GUI を備えた OS か及して からは、キーポードとマウス、ディスプレイの 3 つは必要 不可欠であるといえます。 2 台目や 3 台目ならともかく、 初めての PC であれは、これらの装置を購入しない人はい ないでしよう。ディスプレイか登場する前は、コンピュー タからの出力をおもに扱っていたのはプリンタだったので すが、プリンタは現在では完全に、、脇役 " となり、ほとん ど年賀状を印刷するための機械になってしまっているよう 1 しかし、 PC の構成部品としては脇役となったプリンタ も、人間が「紙」という媒体を使うかぎり、なくなること はないでしよう。去も丘は個人でも 19 ~ 21 インチクラス のディスプレイに手か届くようになっていますが、たとえ A4 のドキュメントを実寸表示できるディスプレイを使っ ていても、ドキュメントを配布したり添削するにはプリン タが欠かせません。紙に印刷することによるお手軽さ ( い つでもどこでも読める ) と安じ、感には替えがたいものがあ 1 それはそれで、立取な、彳難リ " を果たしているといえるのかもしれません が・・ UNIX MAGAZINE 1999.6 ります。 そこで今回は、 PC にプリンタを接続して利用するため の設定を、ローカルプリンタとリモートプリンタの両方に ついて紹介します。 またここでは、プリンタを、、 PostScript 対応 " のもの とそうでないものの 2 不頁に分けて考え、前者を、、 PS フ リンタ " 、後者を、、非 PS プリンタ " と呼ぶことにします。 PostScript は Adobe Systems カ甘是案したページ記述 衄で多くのメーカーのプリンタて採用されています。 「ヨロロ、 PostScript を使用しているプリンタであれは、メーカー を間わす、はば同し出力を得ることができます。このた め、などに代表される組版用のアプリケーションで は、印刷用に PostScript フォーマット ( 以下、 PS フォー マット ) を出力するものが多くあります 2 。 しかし、 PostScript 工ンジンをもったプリンタは高価 であるため、個人レベルで購入できるインクジェット・プ リンタやレーサープリンタのほとんどは PostScript に対 応していません。 PS フォーマットのデータを非 PS プリ ンタに送ると、多くの場合は PostScript データの中身が そのまま印刷されてしまいます 3 。 Windows 98 などの場 合、プリンタのメーカーカ甘是供するドライバをインストー ルすれば、ユーサーカワ。リンタ独自のフォーマットを意 識する必要はありませんが、 FreeBSD や BSD/OS とい った UNIX 向けにこのようなドライバカ甘是供されるケー スはほとんどありません。そこで後半では、 PostScript データを非 PS プリンタで印刷するためのガ去を紹介しま 2 たとえは ' I 昜合、 dvi2ps や dvips などのコマンドを使って DVI フォーマットのデータを PostScript に変換することかて、きます。 3 PS フォーマットのデータ自体は、 C 言語のソースファイルなどと同し く ASCII 形式てす。 133
連載 / IJN Ⅸの玉手箱ーの す。具イ勺には、 PS フォーマットのデータをプリンタの 独自フォーマットに変換するツールを用いることにより、 非 PS プリンタを PS プリンタとして扱えるような設定を 施します。ツールさえ用意すれは定自体はさほど難しく ないので、、、年賀状専用プリンタ " を UNIX マシンにつ ないで活用したい方は試してみてください。 具体的な設定の前に、 UNIX ( とくに、 FreeBSD や BSD/OS などの BSD 系 UNIX) における印刷処理の 仕組みを簡単に説明します。 UNIX では、プリンタにはマシン内で一意に定まる名 前 ( プリンタ名 ) を付けます。 1 つのマシンに複数のフ リンタが接続されている場合は、それぞれのプリンタに 異なるプリンタ名を付けることにより、出力先のプリン タを識別します。プリンタ名はユーザーが実行する印刷 コマンドのオプションて指定することができ 4 、環竟変数 PRINTER の値を特定のプリンタ名にセットしておけば、 オプション省田学にはこの値カイ吏われます 5 。 UNIX の印刷処理はジョブ (job) という単位て扱われ、 各ジョブはジョフ番号によって識別されます。プリンタ が 1 台の場合、あるジョブの印刷データを処理している あいだははかのジョブを同時に処理することができないた め、ジョブはいったんプリントキュー (queue) と呼はれ る場所に置かれます。この際、ジョブには 0 から始まる ジョブ番号か到着順に 0 、 1 、 2 ・・・・と割り当てられ 6 、プ リントキューに置かれた順番に従って逐次処理されていき ます 7 。 実際のプログラムでいうと、ユーザーがジョブを発行 するためのコマンドが (/usr/bin/)lpr で 8 、プリントキ 4 彳あする lpr コマンドなどクメ易合は、 -p オプションの後ろにプリンタ名 を書きます。 5 工竟変数 PRINTER も言立されていない場合のテフォルトのプリンタ 名はコ p " になります。 6 ジョフ番号が 999 になると、次の番号は、 0 " に戻ります。 7 通常はジョブ番号の小さなジョブから処理されますが、厳密には、ジョ プ番号 = 処理される順番 " ではありません。たとえは複数のジョブカ嗹続 して発行された場伶、印刷データの大きさなどにより、さきに発行・された ( つまり、小さいジョブ番号をもった ) ジョブカ彳刻可しになってしまうこ とかあります。 8 ジョブは 1 回の lpr コマンドで実行・される印処理に相当します。した がって、 lpr の引数に複数のファイルを孑彳定した場合、まとめて 1 つの ジョブとして扱われます。 印刷里の仕組み 134 図 1 ローカルプリンタに対するジョフ・ ~ 里 nullpc UNIX MAGAZINE 1999.6 データか読み込まれます。 9 引数に印刷するファイル名を指定しなかった場合は、標準入力から印刷 も、 lpr コマンドを使ってプリントキューにジョブを置く い。たとえは、なんらかの理由で lpd か川乍していなくて モンにジョブを渡しているのではない点に注意してくださ ジョブを置くのは lpr のイ士事であり、 lpr か直接 lpd デー ローカルプリンタを利用する場合、プリントキューに ジョブか溜まってい川ま ) 次のジョブを処理する。 ら処理カ鮗ったジョブを取り除き、 ( プリントキューに 3. プリンタの印刷か完了すると、 lpd はプリントキューか データカワ。リンタに送られる。 て管理され、プリントキューのう頁にあるジョブの印刷 2. プリントキューに置かれたジョブは lpd デーモンによっ プにジョブ番号か割り当てられる。 をジョブとしてプリントキューに置く。この際、ジョ 1. lpr コマンドは引数で指定されたファイル ( のコピー ) 流れは以下のようになります。 コマンドを実行し、ジョブかプリンタに出力されるまでの 続されていますが、 nullpc を使っているユーサーが lpr nu Ⅱ pc " というマシンに、、 lp という名前のプリンタか接 プリンタ ) 場合、ジョブの処理は図 1 のようになります。 あるマシンにプリンタか直孑妾続されている ( ローカル クトリに作成されます。 ジョブごとに独立したファイルとしてスフ。ール・ディレ タや属性情報 ( ジョブを発行したユーサー名など ) などが ディレクトリとして実現されており、ジョブの印刷デー す。プリントキューはスプール・ディレクトリと呼ばれる ューの管理をおこなうのが (/usr/sbin/)lpd デーモンで ( スプール領域 ) プリントキュー ジョブ 1 ジョブ 2 ジョブ 3 ジョブ 4
連載 / IJN Ⅸの玉手箱ー⑩ ・ sd (str) をもたないユーサーはリモートプリンタを利用すること この変数を指定すると、プリンタサーバーにアカウント ・ rs ( 600 り プによって制限されません。 ルーフ。名は 1 つだけです。デフォルトは空で、グルー ューサーからのジョブは受け付けません。指定できるグ 値にグループ名を指定すると、そのグループに属さない ・ rg (str) イン・マニュアル stty ( 1 ) などをみてください。 定についてはプリンタに付属するドキュメントやオンラ これらの値はプリンタによって異なるので、具イ勺な設 メータのリストを , ( カンマ ) で区切って言当します。 ms には端末を制御する stty コマンドで指定するパラ 定するパラメータで、 br には転幻度 ( ポーレート ) 、 ローカルプリンタをシリアルポートに接続する場合に指 ・ br (num) および ms (str) うがいいでしよう。 も数 MB—IOMB 程度の空き容量を確保しておいたほ のドキュメントなどを印刷するなら、すくなくと ますが、たとえばピットマッフ。の絵を数多く貼り付けた りません。どのようなファイルを「卩刷したいかにもより ィレクトリのパーティション容量が少なければ御未があ ただし、サイズを無制限にしておいても、スプール・デ で、この変数の値を 0 にしておくといいでしよう。 PostScript のファイルはサイズが大きくなりがちなの 省略すると IMB を超えるファイルは印刷できません。 します。デフォルト値は、、 1000 " なので、この変数を 単位で ) 指定します。 0 は無制限であることを意味 印刷データのサイズの上限を ( 多くの場合はキロバイト ・ IIIX れれ 7 〃 るスプール・ディレクトリを指定します。 複数のプリンタをイ求する場合は、プリンタごとに異な を作ると分かりやすいでしよう。 ているため、その下にプリンタ名と同じディレクトリ じめ /var/spool/lpd というディレクトリが用意され で与えます。 FreeBSD や BSD/OS であれば、あらか プリンタカリ用するスフ。ール・ディレクトリを糸寸パス UNIX MAGAZINE 1999.6 ができなくなります。 デフォルトは false で、プリンタサーバーにアカウント をもたないユーサーでも、クライアントにアカウントが あれはそのマシンを使ってリモートプリンタを利用する ことかできます。 ・ sc ( 600 / ) lpr コマンドを実行する際に、、一 # れ " オフションを付け ると、 1 回のジョブでれ部のコピーを印刷することがで きます。同し lpr コマンドを複数回実行する必要がない ためーリなのですが、オフィスなどであれば、印刷物の 複製にはコピー機を使ってほしい場合もあります。この 変数を指定すると、 ー # " オプションによる複製を禁 止します ( デフォルトは false ) 。 ・ sh ( わ 0 ) この変数を指定しておくとヘッダページカ咄力されませ ん。印刷用紙を節約したい場合などに指定します。デ フォルトは false で、印刷データの前に、 lpr を実行し たユーサー名やホスト名、引数で指定したファイル名な どの情報がヘッダページとして出力されます。 ただし PS プリンタの場合は、この変数の有無にかかわ らすヘッダページは出力されません。 ・ if (str) および of (str) これらの変数には、フィルタと呼はれるプログラムの 絶対パスを指定します。この変数を指定しなけ川ま、ジ ョブの印刷データはそのままプリンタに送られます。 方、フィルタ・プログラムを登録しておくと、ジョブ に対してフィルタ、プログラムか実行され、その結果が プリンタに送られます 13 if と of の違いは 2 点あります。 1 つは、前者がジョブ の印刷に対して課金処理をおこなうのに対し、後者はお こないません。課金処理とは、ジョブのユーサーや印刷 されたページ数などの情報をあらかじめ指定されたファ イルに言求することです。 もう 1 つは、ジョブに複数の印刷データが含まれる場 合 14 、 if でオ旨定したフィルタ・プログラムは個々の印 刷データに対して適用されるのに対し、 of ではジョブ 本、つまり複数の印刷データがまとめて ( 1 つの連続 したデータとして ) フィルタ・プログラムに渡されます。 13 フィルタ・プログラムは、標準入力からテタを読み込み、結果を標準 出力に出力するイ土様になっていなけれはなりません。 14 1 回の lpr コマンドで複数のファイルを指定した場合に相当します。 137
連載 / IJN Ⅸの玉手箱ーの さらに、フィルタ・プログラムはプリンタサーバーのみ で実行すればいいため、クライアントには特別な言殳定を施 す必要がありません。プリンタサーバーに接続されたリモ ートプリンタが PS プリンタだと思って設定すれば、フォ ーマットの変換はプリンタサーバー側でおこなわれます。 PS フォーマットのデータをそれぞれのプリンタのフォ ーマットに変換するには、 Ghostscript と呼ばれるツー ルを用います。 Ghostscript は AIIadin Enterprise か 発した PostScript 互換のインタープリタで、、、 AIIadin Free Public License" にもとづいて無償で酒己布されてい ます。 Ghostscript のフログラム本体は gs で、 PS ファ イルを入力として受け取り、指定したフォーマットに変換 して出力します。たんにフォーマット変換をおこなうだけ でなく、 PS ファイルの内容を X ウインドウ・システム で表示する機能ももっているため、、、 PostScript のイン タープリタ " というよりは、、 PS ファイルのプレピューア・ のイメージのはうか強いかもしれません。 オリジナルの Ghostscript は PS ファイルを JPEG や TIFF などの画像フォーマットに変換できるだけでな く、 HewIett-Packard やキヤノン、セイコーエプソンな どのメーカーが販売する海外向けモデルの非 PS プリンタ のフォーマットにも対応しています。さらに、さまざまな プリンタ用の糸ムみドライバが日本人の手によって提供さ れており、必要なドライバを Ghostscript に組み込んで コンパイルすれば、国内で販売されている多くのプリンタ のフォーマットに変換することが可能となります。 Ghostscript を用いて非 PS プリンタを PS プリンタと して扱うための手順は、おおよそ以下のようになります。 ・ Ghostscript のインストーノレ ・フィルタ・プログラムの作成 /etc/printcap とスフール・ディレクトリの成疋 以降では、この順番に従って説明を進めます。なお、今 回はエプソンのインクジェット・プリンタである MJ- 810C を例にとりあげ、エプソンの MJ シリーズに対応 した糸ル囚みドライバのみを扱います。その他のプリンタの ドライバに関しても竹喋の流れは似たようなものになりま す。ここではアーカイプの入手先のみを記しますから、具 イ勺な組込み去については、ドライバのアーカイプに含 まれるドキュメントなどを参照してください。 140 Ghostscript のインストール Ghostscript の最新バージョンは 5.50 です。オリジ ナルの Ghostscript は英語バージョンで、日本語を含む PS ファイルを正しく扱うことができません。したがって、 ソースファイルから Ghostscript をインストールするに は、日本言寸応パッチを入手してオリジナルのソースファ イルに適用する必要があります。 FreeBSD の場合は、日本言ヒされた Ghostscript が ヾイナリ・パッケージとして提供されています。 Free- BSD の最斤リリースである 3. I-RELEASE 向けのパッ ケージは Ghostscript の 5.50 がべースですが、 2.2.8 ー RELEASE 向けは 1 つ旧いバージョンの 5.10 がもとに なっています。これらのバイナリ・パッケージには主要 なプリンタ用のドライバが組み込まれているため、ソース ファイルをコンパイルしてインストールする必要はありま せん。 一方、 BSD/OS のインストール CD に含まれているの は英語版の Ghostscript です。したがって、 Ghostscript のソースファイルだけでなく、日本語化パッチと必要な 糸Ⅲムみドライバも入手してコンパイルしなければなりませ ん。 こでは FreeBSD のバイナリ・パッケージのインス トールについて触れたあと、 Ghostscript のソースファイ ルをコンパイルしてインストールする・作業の褪各を説明し ます。 パイナリ・パッケージのインストール FreeBSD 2.2.8-RELEASE の場合は、日本語対応の Ghostscript のノヾイナリ・ノヾッケージは / ヾージョン 5.10 ですが、機能的にはバージョン 5.50 とさほど変わらない ので、とくにこだわる必要がなければこれを利用すれはい いでしよう。 日本語対応 Ghostscript は、日本語フォントの処理に VFIib と呼はれるべクトルフォント・ライプラリと True- Type フォントを扱うための freetype というライプラリ を利用します 18 。したがフて、必要なバイナリ・パッケー ジのファイルは以下のようになります。 ・ ja-vfghostscript-5.10. tgz 18 日寉には、 VFIib が freetype を利用します。 UNIX MAGAZINE 1999.6
連載 / UN Ⅸの玉手箱ーの 図 4 /etc/rc の lpd 部分 (BSD/OS) if [ —f /etc/printcap ] ; then echO —n ) lpd 必要であれば、 lpd 起重加のオプションを指定します。 オプションの詳細については、オンライン・マニュア ル lpd(8) などを参照してください。 BSD/OS の場合、 lpd デーモンはマシンのプート時に /etc/rc ファイルから起動されます。 /etc/rc の該当部分 は図 4 のとおりで、 /etc/printcap ファイルか存在すれ は lpd を実行する設定になっています。サンプルの / etc / printcap が OS のインストール時に用意されるため、と くに変更しなければ lpd デーモンか起動されているはす です。 いすれの OS の場合も、 /etc/printcap を変更すると 即座に lpd デーモンに反映されるため、すでに起動してい る lpd を再起動する必喫はありません。なんらかの理由で lpd デーモンか存在しない場合、スーパーユーサーになっ て手動て起動することもできます。 bash# lpd bash# ロ FreeBSD の場合、複数のプリンタに同じスフ。ール・ディ レクトリカ瞎リり当てられていると、手動、 lpd デーモンを 起動してもすぐに終了してしまいます 16 。それ以タ ) 設定 ミスに関しては、たとえばスフ。ール・ディレクトリが存 していなくても lpd は動き続けます。ログファイルにも 工ラーが出力されないので厄介ですが、 lpd か動いている のに lpr コマンドがエラーとなってしまう場合は、 /etc/printcap の sd 変数で指定したディレクトリと実 際のスプール・ディレクトリカ・致しているか ・スフ。ール・ディレクトリか存在するか されます。 duplicate SP001 directories" のようなエラーメッセージカ当求 この場合、 /etc/printcap の If 変数で指定したログファイルに ・印刷データの量が上限値 ()x 変を超えていないか ・リモートプリンタの場合、 rm および rp 変数が正しいか ファイルが正しいか 17 ・ローカルプリンタの場合、 lp 変数て指定するデバイス 16 UNIX MAGAZINE 1999.6 17 もちろん、ハードウェアも正しく孑をされていなけまなりません。 ・スプール・ディレクトリのあるパーティションに十分 な空き容量があるか などをチェックしてみてください。 アクセス制御ファイル 139 引数に指定して lpr を実行すればよいことになります。 となく、 PostScript ファイル ( 以下、 PS ファイル ) を ます。このため、ユーザーはプリンタの不鶤頁を気にするこ 使われているフォーマットに変換してからプリンタに送り 印刷データを、フィルタ・プログラムか非 PS プリンタで 用います。具一勺には、 PS フォーマットで送られてきた うまく使って、、 PS プリンタにみせかける " というガ去を 非 PS プリンタを UNIX で利用するには、フィルタを 非 PS プリンタの利用法 いほうか無難です。 hosts. lpd を使い、 /etc/hosts. equiv はなるべく使わな ートプリンタを利用できるクライアントの登録には / etc / リティ・ホールとなる可能性があります。このため、リモ ンド群の重川乍にも景化、書き方によっては重大なセキュ ただし、 /etc/hosts. equiv は rcp や rsh などの r コマ せん。 ちらかのファイルにかならず登録しておかなくてはなりま クライアントからリモートプリンタを利用したけれは、ど は、すべてのクライアントからのジョブカ甘巨否されます ) 。 ョブは拒否されます ( どちらのファイルも存在しない場合 hosts. lpd のいすれにも含まれないクライアントからのジ る場合、プリンタサーバーの /etc/hosts ・ equiv と /etc/ FreeBSD や BSD/OS マシンかフ。リンタサーノヾーとな アドレス ) を 1 行に 1 っすっ指定します。 lpd にはジョブを受け付けるホストのホスト名 ( または IP れているかどうかをチェックします。一方、 /etc/hosts. するホストの部分を参照し、リストにクライアントが含ま します。この際、プリンタサーバーの lpd デーモンは信頼 /etc/hosts. equiv には信頼するホストとユーサーを定義 本連載の第 7 回 ( 1999 年 1 月号 ) で触れたように があります。 以外に /etc/hosts. equiv と /etc/hosts. lpd ファイル プリンタ関連の成疋ファイルとしては、 /etc/printcap
連載 IJN Ⅸの玉手箱ーの 2. 標準入力からジョブの印刷データを読み込み、入力ファ イルへ出力する ( 印刷データは PS フォーマット ) 。 3. gs を起動し、 mjc360 というドライバを用いて PS フ ォーマットの入力ファイルを MJ プリンタ用のフォー マットに変換する。結果は一印判勺な出力ファイルに出力 される。 4. cat コマンドを用いて出力ファイルの内容を標準出力に 送り、最後に一時ファイルを削除してプログラムを終了 する。 図 10 の例では、 gs を起動庁る際にさまざまなオプショ ンを付加しています。詳細については Ghostscript に付 属するドキュメントなどをみてください。この例で使われ ているオプションの未は以下のとおりです。 gs の起重加にメッセージを出力しない。 ・ -dSAFER 入力ファイルを読出し専用でオープンする。 ・ -dNOPAUSE ページの区切りでプロンプトを表示せす、一気に処理を おこなっ。 ・ -sDEVICE=dev de て指定したドライバを使って入力ファイルを変換す る。 ・ -sOutputFile=file 変換結果を file に出力する。 -sDEVICE オフションでオ旨定されている mjc360 は、 PS ファイルを MJ シリーズのプリンタに対応したフォ ーマットに変換するためのドライバで、解像度が 360dpi のデータを生成します。 720dpi の解像度で印刷したい場 合は、 mjc360 の代わりに mjc720 を指定します。なお、 これらのドライバでは色調整や縮小モードなどのパラメー タを指定することができます。詳しい使い方については、 gdevmjc-0.7. tar. gz に含まれるドキュメントをみてくだ フィルタ・プログラムを作成したら、適当な名前を付 けてインストールします。ここではフィルタ・プログラム の名前を ps2mj" とし、 /usr/libexec の下に置きます。 注意してはしいのは、フィルタ・プログラムは実行可能で 146 なければならない点です。さもなけれは、 lpd デーモンが フィルタ・プログラムを起重丿庁ることはできません。 bash# cp /tmp/ps2mj /usr/libexec bash# chmod + x /usr/1ibexec/ps2mJ bash# ■ /etc/printcap の設定 フィルタ・プログラムか準備できたら、あとは /etc/ printcap でフィルタを使うように設定するだけです。さ きほど紹介した PS プリンタ用の /etc/printcap の例を 流用すると、プリンタサーバーの /etc/printcap は以下 のように書くことかできます。 lp ー dummy PostScript printer : \ : 1p=/dev/1ptO : sd=/var/spool/lpd/lp : \ : lf=/var/log/lpd—errs : mx#O : sh : \ : if=/usr/1ibexec/ps2mj : さきはどの例と異なるのは、 if 変数を使ってフィルタ を指定する部分だけです。フィルタを実行するのはプリン タサーバーの lpd デーモンだけですから、クライアント側 ではリモートプリンタとして PS プリンタを使う場合と同 しように設定してください。 /etc/printcap やスプール・ ディレクトリか準備できたら、日本語を含む PS ファイ ル (article9. ps など ) を印刷してみましよう。 gs を使っ た変換に多少時間がかかるものの、機育顎勺には PS プリン タとなんら変わりません。 今回は 1 不頁のフィルタ・プログラムだけを使ってい ますが、たとえは 360dpi 用と 720dpi 用の 2 つのフィ ルタ・プログラムを用意し、それぞれ異なるプリンタ名で /etc/printcap に当求しておけば、 lpr コマンドて指定す るプリンタ名を変えて簡単に印刷時の解像度を変更するこ とができます。プリンタの不頁にもよりますが、工夫次第 でより便利に使えるようになるので、いろいろ試してみて ください。 ☆ 次回は、 UNIX マシンのファイルやプリンタを Win- dows マシンから利用するためのツールを紹介する予定 UNIX MAGAZINE 1999.6
連載 / UN Ⅸの玉手箱ーの 表 1 gs に追加されているプリンタ用ドライバ ドライ / 啗 bj 10V 、 bj l()vh lips2p 、 lips3 、 lips4c 、 lips4 mjc180 、 mjc360 、 mjc720 、 mj500c npdl rpdlA3 、 rpdlA4 、 rpdlB4 、 rpdlB5 プリンタの頁 キヤノン BJ 10V 用ドライバ キヤノン LIPS-II 十 /III/IVc/IV 用ドライバ (BJC や LBP シリーズのプリン タなどに対 エプソンの MJ シリーズのプリンタ用ドライバ 日本電気 NPDL 用ドライバ (PC-PR シリーズのプリンタに対応 ) リコー RPDL IV 用ドライバ 表 2 Ghostscript 鏈のソースアーカイフと入手先 オリジナルの Ghostscript ソースファイル ftp://ftp.lab.kdd.co.jp/CTAN/support/ghostscript/aladdin/gs550/ghostscript-5.50.tar.gz ftp://ftp.riken ・ go ・ jp/pub/tex-archive/support/ghostscript/aladdin/gs550/ ghostscript-5.50jpeg. tar ・ gz ghostscript-5.501ibpng. tar. gz ghostscript-5.50zlib. tar. gz ghostscript-fonts-std-5.50. tar. gz ghostscript-fonts-other-5.50. tar. gz Ghostscript の日ーレくッチ 仕 p : / / 仕 p [ 1 ー 6].jp.freebsd.org/pub/FreeBSD/distfiles/gs5.50-V日ib-1.0.tar.gz VFlib のソース ftp://TypeHack.aial.hiroshirna-u.ac.jp/pub/TypeHack/VFlib2-2.24.2.tar.gz ftp://ftp.media.kyoto-u ・ ac ・ jp/pub/TeX/VFlib/TypeHack/VFIib2-2.24.2. tar. gz ラフォント ( フリーの日吾べクトルフォント ) ftp://ftp.eos.hokudai.ac.jp/pub/TeX/fonts/watanabe-vector-font/mincho.vf[12].gz ftp://ftp.tut.ac.jp/.h1/TeX/fonts/watanabe-vector-font/mincho.vf[12].gz 各種プリンタ用ドライバ ftp://ftp[1-6].jp.freebsd.org/pub/FreeBSD/distfiles/ キヤノン BJ10v gdev10v. tar. gz ALPS マイクロドライ・プリンタ gdevalps-0.1. tar. gz NPDL LIPS-II 十 /III/IVc/IV エプソン MJ シリーズ リコー RPDL IV gdevnpdl-l. 5. tar. gz gdevlips-2.0.0. tar. gz gdevmjc-(). 7. tar. gz gdevrpdl. tar. gz 縮小といった操作を簡単におこなうことができます。 なお、バイナリ・パッケージを利用してインストール された Ghostscript には、国内で販売されているプリン タ用のドライバがいくつか組み込まれています。表 1 に gs のオプションで指定できるドライノ銘と、対応するプ リンタの種類を挙げます。同しシリーズのすべてのプリ ンタで利用できるかどうかは分かりませんが、これらに 該当するプリンタならは試してみる価値はあるでしよう。 また、オリジナルの Ghostscript に含まれるドライバを はじめ、系囚みドライバに関するドキュメント群が /usr/ local/share/ghostscript/5.10vflib/doc の下に置かれ ています。ドライバの使い方などか詳しく書かれたドキュ メントもあるので、利用する前に目をとおしておいてくだ 142 ソースファイルからのインストール UNIX MAGAZINE 1999.6 先を示します。燧変のムみドライバに関しては、すべて 表 2 に、必要なソースアーカイプのファイル名と入手 は、 freetype のインストールについては省略します ) 。 freetype もインストールしなければなりません ( ここで れている日本語 TrueType フォントを利用したけれは、 みドライバのソースアーカイプが必要になります。市販さ フォント、さらに、それぞれのプリンタに対応する組込 レヾッチや VFIib 、フリーて利用可能な日本言ヾクトル 合、オリジナルのソースアーカイフ群に加え、日本言け寸 Ghostscript をソースファイルからコンノヾイルする場