
私は、Websocket から lpr コマンドを受信し、そのコマンドをローカルのビニール カッターに送信する Linux プログラムを Windows 7 に移植しようとしています。Windows の lpr 実装は異なり、参考にできるアドバイスはあまりありません。
Windows で LPR サービスを有効にし、ビニール カッターを LPR プリンターとしてインストールしました。Illustrator などから問題なく印刷できます。ただし、プリンターを lpq または lpr しようとすると、
C:\Users\M> lpq -S 127.0.0.1 -P vinyl
Windows LPD ServerError: specified printer does not exist
C:\Users\M> lpq -S <full computer hostname> -P vinyl
Windows LPD ServerError: specified printer does not exist
C:\Users\M> lpq -S google.com -P vinyl
*times out*
このエラーは、Google で検索しても解決方法がなかなか見つかりません。プリンターがローカルなので、権限の問題でしょうか? Windows についてはあまり詳しくありません。Cygwin で実行しようとしましたが、Cygwin は Windows の lpr バージョンも使用しようとしているようです。
答え1
Windows の LPD サーバーはループバック アドレスを好まないため、代わりにネットワーク アダプターの実際の IP アドレスを使用してみてください。
答え2
この種のデバイスのほとんどには Windows ドライバーがあり、Linux で動作させるにはこうした面倒な作業が必要です。まずは、デバイスを Windows マシンに接続して Windows ドライバーとソフトウェアを使用してみます。通常、Linux マシンで Windows デバイスを共有する方が、その逆よりも簡単です。回避策としては、両方のマシンでローカル プリンターとして設定し、ケーブルをマシン間で移動させるという方法もあります。
デバイスをルーターに直接接続されたネットワーク デバイスとして設定できますか (設定が簡単になります)?
デバイスを Linux コンピューターに接続する必要がある理由がある場合は、権限の問題が発生している可能性があります。デバイスがパブリック共有 (すべてのユーザー) に設定されていることを確認します。
もう一つの考え: ネットワーク プリンタのアドレスを指定する方法はいくつかあります。他の指定方法 (ipp、http、AppSocket など) を試してください。別の Linux コンピュータがある場合は、プリンタを見つけて URI をコピーするのが簡単な方法です。