†逆襲のOS/2†

LPRによるプリントアウト

作成開始日 2021.06.10
最終更新日 2021.06.11

諸般の事情により、smb/Windowsネットワークによるプリンタ共有が不可能だったので、古代の叡智「LPR」を使って印刷することにした。使い方は単純で;
構文)LPR -p 出力ポート -s プリントサーバのIPアドレス 印刷するファイル名
用例)LPR -p LPT1 -s 192.168.1.100 print.ps
ちなみには、プリンタはPostScript互換で、出力ファイルはPS形式であれば作成方法は問わない。プリンタドライバの出力をPSファイル化するのが一般的だが、別途アプリケーションで作成したPSファイルでもよい−−と思う。ただし、汎用PSファイルでは各プリンタ独自の機能は使用できないが。

【注意】ここでは出力ポートをLPT1としているが、複数のプリンタを接続している場合は、環境に合わせて変更すること。また、プリントサーバのIPアドレスも自分の環境に合わせて変更すること。

●導入例

プリンタはBrotherのHL-1650レーザープリンタ。BR-ScriptというPostscript互換言語を採用。インターフェースはパラレルとUSBのみで、ネットワーク機能はない。以前はsambaサーバにつないでネットワーク・プリンタ化していたが、sambaのバージョンアップに伴い、OS/2では上手く機能しなくなってしまった。

でも、ネットワーク機能がないのは不便なので、IOデータのET-FPS1Lというプリント・サーバを接続した。これは、パラレル接続のプリンタをネットワーク対応に変換するアダプタだが、smb接続は不可能でLPR接続のみ(下記参照)。まあ、500円で入手できたので…。取り敢えずくっつけて、IPアドレスを変更。

【参考】実はWin9x/Me系ならば、ET-FPS1LでもSMB over TCP/IPが使用できる(WinMe@VMWareで確認済み)。ならば、OS/2でも接続できるんじゃね?と思って試してみた。で、確かに接続は可能だったが、印刷は不可能。バージョンアップ後のsambaサーバで発生したトラブルと同じで、原因不明のエラーで印刷ジョブが外に出ていかない。現状、OS/2ではLPR以外の出力方法はない。

さて、これをどうやってOS/2で使用するのかというと、まずはプリンタドライバがなければオハナシにならない。HL-1650用ドライバは[pscriptjp]に含まれているので、これを使用する。[pscriptjp.exe]を実行して、展開された[pscrit2.drv]を開き、HL-1650用ドライバをデスクトップにドラッグすればインストール終了。

あとは設定を変更して、出力先を[Raw Postscriptファイル][c:\spool\print.ps]と設定する(出力先ファイル名は何でも良い)。これで、アプリケーションから印刷したデータは、c:\spool\print.psにPS形式で保存される。このファイルを上記の要領でLPRで出力すれば終了。

●自動印刷バッチ

なお、印刷する度にコマンドラインからLPRを実行するのは面倒なので、次のようなバッチを常駐させておくと便利。スプール・ディレクトリに印刷ファイルがあれば、自動的に出力してくれる。

/* SPOOL2.CMD */
Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
Call SysLoadFuncs

fSpool='c:\spool\print.ps'
fOutput='c:\spool\printNow.ps'

CALL CHAROUT ,' * RUNNING NOW ... '
Do FOREVER
  rc=STREAM(fSpool,'C','Query Exists')
  IF rc<>'' THEN
  DO
    SAY
    '@REN' fSpool FILESPEC('N',fOutput)
    '@LPR -p LPT1 -s 192.168.1.100' fOutput
    '@DEL' fOutput
    CALL CHAROUT ,' * RUNNING NOW ... '
  End
  CALL SysSleep(1)
END


【逆襲のOS/2目次】 【ホーム】