●CUPS & gs7.05 for MacOSX 10.1.xによる印刷方法●



2002年10月2日作成


はじめに

 MacOSXでの正式対応プリンタが少ないという問題は、10.2においてCUPS(Common UNIX Printing System)が装備されたことにより、比較的容易に解決の糸口が得られるに到った。しかしそれまでの環境が大きく変わることやマシン・パワーに関する懸念から、いまだOSX 10.2への移行に踏み切れないユーザーも少なくはないだろう。そしてその場合、UNIX系OSにおいて蓄積されてきた、ghostscriptを介して非PostScriptプリンタをPSプリンタにみせかけるという伝統的な方法に拠ることが、Canon・EPSON等のレーザー・プリンタを利用可能にする、ほぼ唯一の道であった。しかしこの方法は極めてUNIX的なものであるためかなり敷き居が高く、故にClassic MacOSから移行してきたユーザーの多くが、そもそもこの方法を知らないか、あるいは知ったとしても挑戦を諦めていたのではないかと察せられる。そこでここでは、OSX 10.1.xにも本サイトで配布するCUPSパッケージを導入し、これをghostscriptと連携させることで、10.1.x系OSでも可能な限り容易にCanon・EPSON等のレーザー・プリンタでの印刷を可能にする方法を提示してみたい。なお、CUPSとghostscriptとの連携動作の仕組みについては、10.2系OSのための解説のほうを参照していただくことにし、ここではその詳細は略すこととする。

1 CUPS for OSX 10.1における制約について

 CUPSはプリンタを認識して印刷すべきPSファイルをプリンタに送り込む働きをするが、PSプリンタ以外の場合には渡すべき情報を相手であるプリンタにも理解できる情報形式に変換せねばならず、そのためにghostscriptをはじめとする外部プログラムを呼ぶ。そしてOSX 10.2ではこのCUPSをプリントセンターから制御できるようになっているため、設定および印刷の方法も、通常のプリンタの場合と殆ど変わらない手間と手順で実現できるようになっている。また、はじめからOSXでの動作のために調整されているものであるため、AppleTalkやUSBによる接続方式も難なくサポートされているのが特徴である。
 しかし、10.1の場合には、そもそもOSXのAquaGUI上での使用が想定されていないUNIX系のコンポーネントとして導入しなければならないものである以上、ここまで都合よくことは運ばない。まず、設定に関してはPrint Centerからではなく、CUPS独自の方法で行うことが必要となる。ただしCUPSではwebブラウザを利用した設定インターフェイスが用意されているので、その操作はさほど困難なものではない。より大きな問題は、サポートされる接続方式が限られることである。いまのところ確実に利用可能なのはTCP/IP接続のみであり、AppleTalkやSAMBAは未検証、USBに到っては接続モジュールをきちんと組み込み得ていないため、おそらく不可能であろう。よって本パッケージを自宅等のローカル環境プリンタで利用するには、パラレル・ポートに接続することで非ネットワーク対応プリンタをネットワーク・プリンタに仕立てる安手のプリント・サーバーを利用し、あらかじめIPアドレスを割り振っておく必要があるだろう。
【2002年10月2日21:20追記】
USB認識モジュールのmakeにかろうじて成功したので、これを含む版にパッケージを更新したが、私自身は認識・印刷に成功しておらず、正しくコンパイルされているかは心許ない。10.2の場合でも、USBでの認識率は決してよくはないので、いずれにせよIP接続で用いるほうが確実だろう。

2 CUPSの設定

 インストール自体は、本サイトからダウンロードしたGNU ghostscript 7.05 for OSX 10.1とCUPS for OSX 10.1 のパッケージを、それぞれのReadmeの手順にしたがい行うだけのことだが、CUPSを利用可能にするには再起動が必要であるため、CUPSインストーラは再起動を要求する仕様になっている。そこでまずghostscript、次にCUPSという手順でインストール作業を行い、再起動後に設定を開始することになる。なお、CUPSがきちんと動作しているかどうかは、/Applications/Utilitiesフォルダ内にあるProcess Viewerを立ち上げれば確認できる。そこでrootが権限を有する"cupsd"というプロセスが表示されていれば、インストールは成功である。
 さて、まずプリンタ登録を行うために、CUPSのwebインターフェイスを呼び出してみよう。ブラウザのURL入力欄にhttp://localhost:631/あるいはhttp://127.0.0.1:631/と入力すれば、次に掲げる画面が現れるはずである。そしてこのなかのManage Printersボタンをクリックして移動した先が、その隣に掲げる画面であるので、さらにそこでAdd Printerをクリックし、プリンタ登録インターフェイスに進む。
CUPSUI add
そこでまず、Name欄に任意の名称を入力した上、Continue をクリックすると、接続方式選択に移るので、ここで使用したい接続方式(ここではTCP/IP接続なのでLPD/LPR Host or Printer)をメニューから選択し、さらに Continueする。
config1 config2
次に、使用するプリンタのネットワーク上の所在地を設定するが、TCP/IP接続の場合、例にあるように"lpd://IPアドレス/プリンタのキュー"という様式で入力を済ませ、Continue で次のプリンタの機種(PPDファイル)選択に進むので、メーカー名を選び、さらに Continue をクリックする。
config3 config4
ここで具体的な機種あるいは制御言語を選択してもう一度 Continue すると、いよいよ設定終了である。そこでブラウザ画面右側上方の Printers をクリックして、プリンタが登録されていることを確認する。なお、ブラウザのキャッシュ機能のせいで、最初の「登録プリンタなし」状況の画面が表示されてしまうことがあるかもしれないが、その場合には慌てず、何度か画面をリロードすればよい。
config5
最後は、いよいよ正しく接続されていることの確認だ。適切に設定・認識されていれば、Print Test Page をクリックすると、テスト・ページの印刷がはじまるだろう。ただ、ネットワーク接続では印刷開始に若干の間があることもあるので、ここでも慌てないように心がける。なお、テスト・ページの出力結果が、わけのわからない英文の文字列になっておりギョッとするかもしれないが、これはテスト・ファイルのPSの変換処理にghostscriptが失敗したために吐き出すエラー・ログが、そのまま印刷されてしまうためであり、接続自体は成功しているということなので、安心してよい。
config6

3 ダミー・プリンタの設定

 テストプリントを終了させ登録の成功を確認し、印刷に進む前に、10.1の場合にはもうひとつの手順が必要になる。CUPSでは、lprコマンドによって印刷が指示されたファイルを、プリンタのPPDファイル内の記述にしたがってghostscript等の外部プログラムに渡して変換し、そのうえでデータをプリンタに渡すという手順で仕事をしていく。ここでCUPSが直接受け取れるファイルは、基本的にはPSに限られているが、受け取りファイルを解釈するフィルタを有していれば、その対象は広がることになる。そしてOSX 10.2の場合には、CUPSがPDFのフィルタを有し、なおかつプリントセンターからCUPSを制御できるために、プリントセンターのジョブウィンドウにPSファイルやPDFファイルをドロップするだけで印刷を実現できるようになっている。
 これに対し10.1では、CUPSで登録されたプリンタがPrintCenterからは見えないので、印刷にはlprコマンドを実行する必要があり、また、PDFを理解するフィルタをもっていないため、印刷に使えるファイルもPSに限られることになる。そこで10.2での場合と同様、アプリケーションから印刷する際の「出力オプション」を利用して、印刷したいファイルをPSに変換しておくことになるが、PDFと異なりPSの場合には、PSプリンタでないと変換出力機能が有効にならないため、あらかじめダミーのPSプリンタを設定し、「用紙設定」「出力オプション」実行時にはこのプリンタを指定するようにしてやらねばならない。そこでPrint Center を起動させ、「プリンタの追加」を行っておく。これは「IPを使用するLPRプリンタ」を選び、「LPRプリンタのアドレス」欄に localhostと入力し、最後に、「プリンタの機種」を選び、「追加」ボタンをクリックすればよい。「プリンタの機種」は何を選んでもよいのだが、PSファイルとして出力する際の用紙サイズ、つまり最終的な印刷の用紙サイズの種類は、ここで選んだプリンタが使用できるサイズの種類に依存するので、使える用紙サイズの種類が多いものを選ぶのが得策だろう。
printcenter

4 印刷の実行

 さて、いよいよ印刷の実行である。まずは印刷したいファイルを、先程のダミー・プリンタを利用してPSファイルに変換しておこう。
ps
後はこのPSファイルをlprコマンドにかければよいはずなのだが、実はOSX 10.1の場合、ここで最後のハードルが立ちはだかる。このようにして得たPSをlprで印刷すると、前述のテストプリントの場合と同様、gsが適切に処理できず、エラー・メッセージが印刷されてしまうのである。しかし問題のPSを10.2にもっていって印刷したり、逆に10.2の「出力オプション」で得たPSを10.1で印刷したりすることは成功するので、これは10.1の「出力オプション」が吐き出すPSの質が決定的に悪いということではなく、CUPSがgsにファイルを渡すまでの前処理段階に、何か問題があるものと思われる。それというのも、この問題のあるPSを直接gsに処理させてPDF等に変換するのには、何の問題もないからである。そこでここではこの点に着目して、「出力オプション」で得たPSをいったんgsのpswrite("ps2ps inputfilename.ps outputfilename.ps"コマンドで実行できる)にかけ、再抽出した別のPSファイルを印刷するという方法を、回避策に採用せざるを得ない。この場合、印刷品位がやや低下するものの、そもそも印刷できないよりはましであろうから、やむを得ないところであろう。
 これでCUPSを利用したOSX 10.1での印刷が何とか可能になったが、pswriteによる再抽出からlprの実行までを、手動でこなすのは何かと面倒である。そこで本パッケージには、PSファイルをドロップすれば以上の手順を自動実行してくれるAppleScriptアプリケーション、"simpleDropLPR"を同梱してある。これを使用することにより、通常のプリンタと同様とまではいえぬものの、10.1でのCanon・EPSON等のレーザー・プリンタ利用がかなり容易になるだろう。




Back to 10.1.x page