■■■スタイルライタ
NetBSDのFAQにColorStyleWriter2400をポストスクリプトプリンタがわりに使うドライバが公開されている。さっそくこれを使わせてもらうことにした。とりあえずStyleWriter.tar.gzというファイルを展開したが、Sambaや、Natatalkをmakeしたときのように簡単にはコンパイルできない。自動的にMakefileを作ってくれるconfigureファイルが用意されていないので、lpstyl.cというソースから、直接GNUコンパイラで実行ファイルを作るよう書かれている。
とりあえず、不案内な知識をもとに
# gcc lpstyl.c
# gcc -o lpstyl lpstyl.c
# cc -o lpstyl lpstyl.c
とやってみるが、エラーを返してコンパイルできない。ヘッダやなにやらがみあたらん!とかなんとかいっているようだが、わからない。netatalkやsambaが正常にコンパイルできているのだから、コンパイラが悪いとは考えにくいのだが… どうにかならないものかとウエブ検索で情報をあたると、パッケージコレクションというものに行き当たった。NetBSDのユーザグループがそれぞれのプラットフォーム(ポートというのだろうか…)に合うようにあらかじめコンパイルしたものを一つのパッケージ(Macで普通に使うインストーラのようなもの?)として配布しているのだ。ここを探したらStyleWriter-0.9.9nb1.tgzというのが出てきた。(よく見たらSambaもNetatalkもパッケージがあった… とほほ…)このmac68k用のパッケージをさっそくダウンロード。説明にある通り
# pkg_add stylewriter-0.9.9nb1.tgz
とやってみる。
ところがバラバラとエラーを返す。なにかあらかじめインストールしなくてはならないパッケージがあるらしい。わけのわからないままエラーで表示された名前のパッケージを探して、片っ端からインストール。ようやくstylewriterのドライバーがインストールできた。
あとでわかったのは、このstylewriterドライバはUNIXで普通に使われているポストスクリプトプリンタとして疑似的にふるまわせるドライバで、それにはプリンタに出力されるポストスクリプトデータをビットマップ化(ラスタライズというらしい…)する必要があるという。その変換作業をGhostscriptというソフトウエアで行わせるのだ。したがって、Stylewriterドライバをインストールする前にかならずGhostscript(Postscriptをもじったダジャレなのか?)がなくてはならない。しかもこのGhostscriptを使うためには他にもフォントなどのソフトウエアをインストールしておかなくてはならず、結局7、8回ダウンロードとインストールを繰り返さなくてはならなかった。(いやはや面倒なことだ…)
インストールしただけでは済まない。プリンタポートにStyleWriterをシリアル接続するのはもちろんだが、最低限以下の設定が必要だ。
1)設定ファイル(stylascii.a4 stylps.a4 stylps-color.a4)を指定されたディレクトリ(わたしのシステムでは/usr/local/sbin/)に配置して、システムで標準のプリンタとしてふるまわせるために/etc/printcapというファイルに適切なスクリプトを記入しなくてはならない。/usr/pkg/libexec/stylewriterディレクトリにあるサンプルスクリプトの内容をコピー&ペーストする。(といってもNetBSDのコンソールでどうコピペするのかわからないので、Macからtelet経由で行った。トホホ…)もちろん標準のprintcapをmv printcap printcap.oldとバックアップしてから、そのサンプルをmv printcap /etc/printcapとやってもOKだろう。
2)/devディレクトリのtty01(mac68kのプリンタポート)ファイルにstylewriterという名前のシンボリックリンクを張る。
# ln -s tty01 stylewriter
3)最後にprintcapに記述の通りの場所にgs(ghostscript)があることを確認し、
# mkdir /var/spool/stylps
とスプールディレクトリを作って準備は完了。
printcapの記述通りなら。lpでアスキーをそのまま印刷。stylpsで白黒ポストスクリプト、cstylpsでカラーポストスクリプトを印刷できるはずだ。さっそく
# cd /usr/pkg/man/man1/
で移動して、その中のポストスクリプトファイルの一つをプリントしてみることにした。
1)まず、システムのプリント機能を有効にする。
# lpd
2)次にプリントするファイルをパイプでドライバにわたす。
# groff -mandoc /usr/pkg/man/man1/gs.1 | lpr -Pstylps
これでキコキコとプリンタが動き始めるはず。ところが何度やってもプリンタは動かない。設定が間違ってるのだろうか… StyleWriterはプリント指令が出ると自動的に電源がONになるはずだが、万が一のために電源をあらかじめONにしてからコマンドを入力してもダメ。わけもわからないまま日が暮れた。
エラーもなにも出ないので原因がわからない。設定に間違いは無いはずだ。念のためプリント操作を行ってから
# ps aux
でジョブが動作しているか確認。いちおうgsもlpstylドライバも動いているが、ハードディスクがギコギコとしばらくするとピタリと終わってしまう。どの段階でエラーになっているのかわからないが、問題は変換動作以降にあると見た。
ファイルは完璧なはず。NetBSD1.6.2対応のStylewriterドライバ、Ghostscriptも入れた。もちろん関連のパッケージもすべて指示通りに入れた。プリンタ設定もprintcapも書き換えてディレクトリも何度も確認した。出力ポートもプリンタポートである/dev/tty01にシンボリックリンクを張った。ケーブルも完璧にモデムポートではなく、プリンタポートに刺さっている。モデム?!はたと気がついた。わたしの使っている520cのシリアルポートは一つ。あとはモデムポート替わりのExpressModemが内蔵されているだけだ。つまり、出力デバイスのtty00、tty01といった区別はない。NetBSDで優先的に割り振られるとすればtty00のほうだ。シンボリックリンクはそっちに張らなくてはいけないのでは?
ものは試しだ、さっそくポートを切り替える。
# rm /dev/srylewriter
# ln -s /dev/tty00 /dev/stylewriter
さっそくためしにプリントして見る。ファイルを用意するのが面倒なので、その場で
# ps aux | lpr -Plp
とやって、コンソールの画面をパイプを通してasciiのままプリンタに送った。
しばしギコギコやるのは同じだが、それが止まると同時にスタイルライタの電源が入った。「きた!」何事もなかったようにごく普通にプリントが始まるではないか。モノクロのCourierフォントのそっけないものだが、完璧にコンソールの表示がプリントされた。
なんだかドッと疲れが出た。ポートの接続先が違っていただけとは… さすがに素人を自負するだけあって我ながら初歩的なミスにあきれた。さて、課題のポストスクリプトの印刷だが、拡張子が「.ps」のファイルを探して
# lpr -Pstyleps
ファイル名
とやった。わくわくしながらプリンタの前で待つことしばし、ギコギコ音が終わった。ところが今度はプリンタの電源が入らない。どうなってるんだ。
asciiテキストは問題なくプリントできた。プリンタとドライバ、それに接続ポートに間違いはない。つまり、ポストスクリプトを変換する動作でつまづいていると言うことだ。ghostscriptが問題なのだ。
# gs
とだけ入力してみた。すると、コピーを表示したあとにX11が無いとかなんとかいって終わってしまう。「X11??」ひょっとしたら、X-Window上で動作するバージョンか?調べて見れば案の定、FTPサイトの同一ディレクトリにghostscript-nox11~というファイルがあるではないか。コンソール上で使うならこれをpkg_addするべきだったのだ。
まずX11用のghostscriptを
# pkg_delete [ファイル名]
とやってアンインストール。あらためてNonX版のghostscriptをpkg_addでインストールした。これで問題無いはず。
さっそく、前回と同様groff~でプリントして見る。PSファイルをギコギコとラスタライズして、プリンタに送る。ラスタライズに多少時間がかかるが、先ほどのプレーンテキストとは違って、スタイルテキストが美しくレイアウトがされた文書がみごとに出力された。すばらしい。しかもこのドライバはカラースタイルライタに対応している。つまり、カラーで出力することができるのだ。先ほどのコマンドで -Pstylps とやったところを -Pcstylpsとやるだけでいい。これでカラー化されたポストスクリプト、もちろんPDFなんかも印刷できる。またまたすばらしい。
NetBSD機でCSWが使えて、しかもカラー印刷までできるとは思いもよらなかった。これだけでも満足だったが、うれしいことはそれだけではなかった。すでにWindowsネットワークサーバのSambaをいれてあるNetBSDなら、設定をチョイとかえればウインドウズのネットワークプリンタとしても使うことができるのだ。Sambaのプリンタ設定にスタイルライタのlpstylドライバとプリントコマンドのcstylpsを指定するだけで、ウインドウズの標準ドライバでネットワークプリントができるようになった。この場合ウインドウズ側では、「ネットワークコンピュータ」ディレクトリ以下に自動的にプリンタのアイコンが表示されるので、ドライバ設定をApple Color LaserWriter 600 PSにするだけだ。
ウインドウズでできるんだから、Macからできないわけが無い。この場合、Netatalk経由となるが、ちゃんとネットワーク接続のLaserWriterとして動作する。netatalkのpapd.confにプリンタ設定を書き加えるだけでOKだ。Mac側からはセレクタでLaserWriter8ドライバを選択すればカラースタイルライタが見えるようになる。もちろんカラープリントも可能だ。
もともとColorStyleWriterは一台のMacをサーバにすることで、疑似的にネットワークプリンタとして動作していた。しかしネットワークプリントといっても、スプールファイルをネットワーク経由で受け渡すだけなので、送り手と受け手のMacとが同じフォントを持っていないとプリントを拒否された。そりゃそうだ。ところが、ポストスクリプトは代替フォントで印刷されるらしいので送り手と受け手で同じフォントが無くても(MacとWin、UNIXで同じフォントがあるほうが珍しい…)とりあえず印刷できるのがありがたい。(代替フォントが使われるとフォント色が変になるのは困るが…)しかもWinからでもMacからでもだ。疑似的にLaserWriterとして動作させるため、印刷領域が若干狭くはなるが、そんなことは問題にならないくらい便利になった。