2008年12月10日水曜日

OSXでWindows上のプリンタに印刷

■ 前説

我輩のIT環境は,マシンが Windows2000,WindowsXP,MacOSX Tiger の3台に対し,プリンタは Canon LBP3300(レーザープリンタ)の1台のみ.普段はプリンタを 2000に USB 接続しておき,プリンタの共有をオンにして XP からも印刷できる様にしてある.

以前,OSX のプリンタ設定に「Windowsプリント」という項目があるのに気づいて「こりゃすげー」と感動し,早速試してみたがだめだった.「プリンタの機種」の一覧に Canon プリンタのリストは表示されるが,肝心の LBP3300 が存在しないのだ.この一覧に表示される機種だったら Windows に接続されていても難なく印刷できるのかと思うと(真偽の程は定かでない)大いに残念だが,無いものは仕方ない.

※確か,gimp-print ドライバをインストールしたら一覧に表示されるプリンタが増えたと記憶している.

そもそもこのプリンタは CAPT という Canon 独自のプロトコルを使うので,いささか特殊である.Canon の提供するドライバが「Windowsプリント」に対応していないようなので Windows 上のプリンタで印刷することはまず無理であろう.そう思いつつも,幾つか考え付く方法を試してみたが,やはりOSXが「Windowsプリント」を可能にするのか仕組みが分からないままあがいても仕方が無いので,結局あきらめた.

そういう訳で,OSXでプリンタを使うときは,わざわざUSBケーブルを Windows から Mac に繋ぎ直して印刷するという面倒なことをせざるをえなかった.それが面倒なので普通は,Macのファイルを PDF や PS にして Windows に持っていき,Windowsから印刷する,という方法に甘んじることにした.

それから1年ほどたったが,こういう使い方はやはり面倒である.OSX から Windows 上のプリンタで印刷したいという思いは消えない.

そこで,あらためて調査したところ,Mac から Windows 上のプリンタに出力できる方法があることを発見.実際に試したところ,紆余曲折はあったものの最終的に筆者の環境でも実現することができた.以下,その要約.

■ 設定手順

Windows 上で Ghostscript と RedMon を組合せてやると,Macからも印刷できる.原理は次の通り.

Windows上に仮想PSプリンタを作り,Macからはネットワーク経由でこのプリンタにアクセスする.仮想PSプリンタに来たデータは Ghostscript が橋渡しとなって現実のプリンタに送られる.
詳細な解説や設定手順は以下のページに詳しい.

【参考ページ】
1. WindowsマシンにつながったWindows専用プリンタでWindows用ドライバを使ってLinuxマシン(やMacから)から印刷を行う方法
2. Windows機を仮想PSプリンタ・サーバにする by 小川弘和
3. MacOSXからWindows経由でのプリンタ印刷 by くいくい
  [2009/10/2 追記]本家消失.Googleキャッシュのコピー
4. Windows 機を仮想 PS プリンタにする by たちゃな@巫研
5. Ghostscript + GSview + RedMon によるPostScript互換プリンタで印刷 by <不明>
6. Windows用ドライバしかない非ポストスクリプトプリンタをLinuxのCUPS経由で使う by <不明>
7. [fol] Re: gs driver for ESC/PageS?
8. MacOS X 10.3 (Panther) + MacOSXからWindows共有プリンタに印刷

筆者の2000には Ghostscript が既に入っているので,新たにインストールしたのは RedMon のみ.

上記1~3のサイトを参考に仮想プリンタを設定し,Windows 上でこの仮想プリンタに出力してみたがうまくいかない.相当試行錯誤した結果,筆者の環境では以下の設定により動作するようになった.

1.rspファイルの作成

Ghostscript に渡すパラメータを書いたファイル(拡張子 'rsp')を準備し,好きな所に置いておく.以下は筆者の設定例.
ファイル "LBP3300.rsp'' の中身
-q
-dBATCH
-sDEVICE=mswinpr2
-dNOPAUSE
-dSAFER
-sPAPERSIZE=a4
-r600
-sOutputFile="\\spool\Canon_LBP3300"

Ghostscript の lib フォルダや fonts フォルダを指定するオプションは記述する必要がなかった.環境設定で既にパスを通してあるからだろう.

2.仮想PSプリンタのポートを構成

仮想PSプリンタの出力ポート RPT1 の「ポートの構成」の設定
〔注〕太字の部分が実際に入力する事項
〔注〕path_name は当該ファイルのパス

Redirect this port to the program:
C:\path_name\gswin32c.exe

Arguments for this program are:
@C:\path_name\LBP3300.rsp -

Output:
Program handles output

Run:
Hidden, Run as User チェック

また,仮想PSプリンタのドライバには "Apple LaserWriter Pro 600" を用いた.
最初は "Apple Laser Write II NT" を選択していたが,これは解像度600dpi に対応していないようだったので,採用を取りやめた.

3.レジストリの追加

参考ページ7に書かれた通りに,レジストリを変更する.
具体的には,レジストリエディタ regedit を使って,
[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Devices]
"EPSON LP-800S"="winspool,LPT1:"
といったエントリを追加する.なお regedit の使用は危険なので十分注意.

4.Mac側でプリンタを設定

参考ページ3の通りに設定すればヨシ.

■ 実行結果

本当に OS X から Windows 上のプリンタに印刷できるようになった!!!

参考ページ3には「範囲指定で印刷すると最初のページしか印刷されない」とあったが,筆者の場合そのような問題は生じなかった.
また,プリンタが動き出す時間も,Mac にプリンタを直接つないだ場合より短くなった.
すばらしい!!
RedMon様々である.

両面印刷やページレイアウトなど,LBP3300 の機能が活用できないという問題があるが,それはまたいつか考えよう.無理かもしれないし.

参考ページ4にある通り,LPD (line printer daemon) を動かすと,仮想PSプリンタをIPプリンタとして使用することもできる.これも動作検証済み.
 

0 件のコメント: