web-dev-qa-db-ja.com

CUPSで偽のダミーのnullプリンターを追加する方法

複数のプリンターをサポートするソフトウェアを書いています。テストするには、CUPSサーバーに複数のプリンターを追加する必要があります。どうやってやるの?

ジョブを/ dev/nullに直接送信する偽のプリンターをいくつか追加したいと思います。そうすれば、CUPSインターフェースで「完了したジョブ」のリストを見て、ソフトウェアが各ジョブに適切なプリンターを使用しているかどうかを確認できます。

12

1つの解決策は、cups-pdfをインストールすることです。これは、PDFファイルを書き込む仮想プリンターを追加します。それをインストールして構成する方法については、Web上にいくつかのチュートリアルがあります。私はGentooを使用しているので、読みました Gentoo-wikiSabayon wiki にも言及しています。

cups-pdf仮想プリンターの構成ファイルは/etc/cups/cups-pdf.confにあり、デフォルトですべてのPDFファイルは/var/spool/cups-pdf/${USER}に書き込まれました。

(注:Ubuntuでは〜/ PDF /に書き込みます)

ただし、いくつかの制限があります。

  • 設定ファイルは1つしかないため、複数のPDFプリンターは同じディレクトリに保存されます。

  • (たとえば、lpr -o rawを使用して)「生の」データを印刷することはできません。 PDFファイルをrawジョブとして送信しても機能しません。raw印刷ジョブは空白のPDFファイルだけを空のページで生成します。

これらの制限があっても、私のニーズには完全に対応しています。


脚注:ユーザーがGnomeを使用している場合、またはGTK +アプリケーションを介して印刷している場合、印刷ダイアログにはすでに「ファイルに印刷」という疑似プリンターがあります。したがって、なぜユーザーはまだ仮想PDF=プリンターを追加する必要があるのでしょうか?いくつかの理由があります。

  • この「ファイルへ出力」はGTK +に固有のものであり、非GTK +アプリケーションでは使用できません。 (KDEにも同様の機能があるかもしれませんが、よくわかりません)
  • 印刷用に設計されたPDF Flash "アプリケーション"から、たとえば PocketMod を生成できます。
  • 仮想プリンターをCUPSに追加すると、シェルスクリプトまたはCUPSと直接通信する他のソフトウェアを使用して印刷をテストできます。これは、アプリケーションのテスト中に開発者に特に役立ちます。
  • この仮想プリンターをローカルネットワークと「共有」することができます。必ずしも有用ではありませんが、可能です。
  • PDFファイルが保存された直後に実行される後処理コマンドを添付することが可能です。
11

lpadminを使用して/dev/nullに出力するプリンターを作成できます。

$ Sudo lpadmin -p myprinter -E -v file:///dev/null

これは/etc/cups/printers.confに書き込まれますが、lpstatを使用してプリンターを表示することもできます。

$ Sudo lpstat -s
myprinter accepting requests since Thu 22 Jan 2015 11:04:46 AM GMT
system default destination: myprinter
device for myprinter: ///dev/null

古いLinuxディストリビューションの/etc/cups/cupsd.confでFileDeviceを有効にする必要がある場合があります であることに注意してください。

新しいプリンターをデフォルトにするには、lpoptionsを使用します。

$ Sudo lpoptions -d myprinter
7
Wilfred Hughes

最良の解決策の1つは、ippserverを使用することです。 CUPSv2.2.2以上が付属しています。あるいは、ここからプロジェクトを取得することもできます: IPPサンプル実装

マニュアルページ の説明によると:

ippserverは、IPP EverywhereおよびIPP Shared Infrastructure Extensions(INFRA)仕様に準拠したシンプルなインターネット印刷プロトコル(IPP)サーバーです。スタンドアロンプ​​リントサーバーとして、またはINFRA仕様に準拠したIPPクライアントとIPPプロキシ間の標準的なインフラストラクチャサーバーとして使用できます。

これを使用するには、ippserver "My cool printer"を実行するだけで、My cool printerという名前の仮想プリンターが作成されます。 Webサーバーのように実行され、特定のポートでリッスンします。

複数のプリンターが必要な場合は、ippserver "My other cool printer" -p 8888を使用して複数のポートでサーバーを実行できます。

属性ファイルを使用して、プリンター属性を指定することもできます。たとえば、プリンタがデフォルトで高品質の印刷をサポートしている場合は、属性ファイルに次の属性を追加できます。

ATTR enum print-quality-default high

次を使用してサーバーを実行します:

ippserver "My high quality cool printer" -a attributes-file.txt

参照:

  1. PWG IPPサンプル
  2. CUPS ipptoolfileのマニュアルページ
2
Sahil Arora

http://inai.de/linux/adm_virtualprinter から取得:

CUPSの仮想プリンター

CUPSでデータを送信しないプリンター(/dev/nullなど)を作成するには、多くの方法があります。このページではsocket://メソッドを使用しています。

最初にxinetdをセットアップする

必要なのはTCPポート9の破棄サービスです。Xinetdにはそれが組み込まれているため、そのまま使用できます。次の定義がxinetdの構成ファイルで使用可能であることを確認してください。 、通常は/etc/xinetd.d/discard。次のようなサービスが含まれている必要があります。

 service discard 
 type = INTERNAL 
 id = discard-stream 
 socket_type = stream 
 protocol = tcp 
 user = root 
待機=いいえ
無効=いいえ
フラグ= IPv6 IPv4 
rcxinetd reloadを実行して構成ファイルを再度読み取り、新しいdiscardサービスをアクティブにします。または、xinetdがまだアクティブでない場合はrcxinetd startを使用します。

CUPSプリンター

次に、CUPS Webフロントエンドに移動して、新しいプリンターを追加します。宛先としてsocket://localhost:9/を使用します。プリンターは、「HP 2500C Foomatic/pcl3」など、機能的に見えるものを選択します。これですべてです。

1
Golar Ramblar