CUPSに偽のダミーのヌルプリンターを追加するにはどうすればよいですか?


12

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

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


この正しい「lpadmin -p lp0 -E -v / dev / null -m raw」ではありません
足利Umanga Umagiliya

回答:


11

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

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

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

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

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

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

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


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

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

9

カップフォーラムには、この質問に対するより完全で正確な回答があります。

答えは、デバイスURIをfile:/ dev / nullに設定する必要があるということです

だから私のUbuntuのセットアップでは:

  • デバイスURI:file:/ dev / null
  • メーカーとモデル:ローカルRAWプリンター

それは私にとって完璧に機能します。

再びCupsフォーラムを検索したところ、次のことがわかりました。

Cupsフォーラムのコマンドラインヌルプリンターのセットアップ

cupsd.confで:

FileDevice yes

プリンターのセットアップ

lpadmin -p nowhere -E -v file:/dev/null

プリンターのテスト

who |lp -d nowhere

私は今、自分の印刷物を見ているだけです。細かいディテール、鮮やかな色、それは私からページから飛び出します。...ちょっとwaitaminute ....
アンドリュー・ラッセル

ありがとうございました。いくつかの指示をスクリーンショットするために、仮想マシンにダミープリンターが必要でした。:)
njallam

7

あなたはにその出力プリンタを作成することができます/dev/nulllpadmin

$ 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

削除する方法は?
リチャード

@Richard Use lpadmin -x myprinterまたはWebインターフェイス。
トーケルビョルソンランゲン

2

最善の解決策の1つはを使用することippserverです。それCUPSv2.2.2以上が付属しています。別の方法として、プロジェクトをIPPサンプル実装から入手することもできます

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

ippserverは、IPP EverywhereおよびIPP Shared Infrastructure Extensions(INFRA)仕様に準拠したシンプルなインターネット印刷プロトコル(IPP)サーバーです。標準のIPPクライアントとINFRA仕様に準拠した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 manページ

1

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

CUPSの仮想プリンター

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

最初にxinetdをセットアップします

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

    サービス破棄
        タイプ=内部
        id = discard-stream
        socket_type =ストリーム
        プロトコル= tcp
        ユーザー=ルート
        待機=いいえ
        無効=いいえ
        フラグ= IPv6 IPv4 
実行rcxinetd reloadして構成ファイルを再読み取りし、新しいdiscardサービスをアクティブにします。またはrcxinetd start、xinetdがまだアクティブになっていない場合に使用します。

CUPSプリンター

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.