web-dev-qa-db-ja.com

コマンドラインとCUPSの両方から印刷するにはどうすればよいですか?

次の2つの目的で使用されているプリンターがあります。

  • 通常のドキュメント(Word、インターネットページなど)の印刷
  • コマンドラインからの直接印刷(echo "text" > /dev/usb/lp0によって行われます)

これは、以前のバージョンのUbuntuではすべて正常に機能していました。しかし、最近11.10にアップグレードして問題が発生しました。まず、プリンタは/ dev/usbに追加されなくなりました。したがって、このパスにエコーすることはできず、コマンドラインから印刷を実行できません。

いくつかの手間をかけた後、回避策を見つけることができました。この回避策は/etc/modprobe.d/blacklist-cup-usblp.confを編集していました。このファイルの読み取り:

# cups talks to the raw USB devices, so we need to blacklist usblp to avoid
# grabbing them
blacklist usblp

このブラックリストにコメントした後、デバイスは/ dev/usbにlp0として適切に表示されます。 lp0の権限に問題がありましたが、これはLuis Felipe Barrera Moraからの回答によって解決されました。

ただし、解決すべき大きな問題が1つあります。ブラックリストにコメントした後、Word文書から印刷するときにプリンターが動作しなくなりました。 CUPSが必要とするものを無効にするため、これは論理的です。そのため、基本的には、通常のCUPS印刷を有効にしてコマンドライン印刷を無効にするか、コマンドライン印刷を有効にしてCUPS印刷を無効にするかのオプションしかありません。

更新

完全を期すために、私は実際に同時に2台のプリンターを接続しています。 1つは、CUPSとコマンドラインの両方を使用して印刷するために使用されます。もう1つ-Epsonレシートプリンター-は、コマンドライン印刷にのみ使用されます。 CUPSを使用して実行しようとして何日も費やしましたが、これは不可能でした。ただし、これはCUPSの下でこの2番目のプリンターを機能させることができないため、lprコマンドでは問題が解決しないことを意味します。 /etc/dev/lp0(または同様のパス)にアクセスすると同時に、CUPSを使用して同時に印刷できる必要があります。

6
user6019

ファイルlp0に常にアクセス許可を追加する場合は、同じ問題があります。プリンタールールを編集する必要があります。

$ gksudo gedit /lib/udev/rules.d/70-printers.rules

[, MODE="0666"]を追加

ファイルには以下が含まれます。

ACTION=="add", ... KERNELL="lp*" ... , MODE="0666"

コマンドラインから印刷するためにlprを使用しないのはなぜですか?好む:

echo "text" > /tmp/someFileName
lpr -P YourPrinter /tmp/someFileName

これは回避策ですが、いくつかの権限を変更せずに必要なことを行う簡単な方法でなければなりません...

2
user5950

Webブラウザでhttp://localhost:631/を開き、CUPSを設定します。 echo "text" | lprを介してコマンドラインから印刷できるはずです。 lpstat -tを使用してCUPSのすべてのステータス情報を表示し、lpstat -dを使用してシステムのデフォルトの印刷先を表示し、man lpstatを使用して詳細を、man lprを使用してプリンターを指定します。

すべての印刷はCUPSを介して行う必要があります-キュー、プリンターなどを管理します...

2
waltinator

CUPSで「Raw」プリンターとして追加してみてください。動作するかどうかはわかりませんが、試してみる価値はあります。

このためにusblpを再ブラックリストに登録する必要があります。 EpsonをCUPSに追加し、製造元として「Generic」を選択し、デバイスとして「Raw Queue」を選択します。さらに、何かを印刷するにはlpr -o raw filenameを使用する必要があります。

0
bseibold

私は似たようなものに直面しています。私が選択したのは、レシートプリンターのみがUSB経由で接続されるようにすることです(汎用プリンターはネットワークインターフェイス経由で接続します)。これにより、ブラックリストを削除し、デバイスに直接印刷し、ネットワークプリンターにCUPSを使用できます。

これは本当に最適ではありません。 USBを介してすべてのデバイスを接続し、usblpに取得させたくないデバイスを選択できるようになったのは本当に素晴らしいことです。ただし、当面はこれが最良の選択肢のようです。それはあなたが聞きたいことではないかもしれませんが、私が見つけた唯一の方法です。

現在、一般の読者にとって、レシートプリンターが通常CUPSを介して接続されない理由は、小売環境では速度が重要であり、同時性が要因ではないためです。プリンタ管理、キュー管理などは必要ありません。本当に必要なのは、印刷するときにすぐに印刷することです。数秒ではなく、すぐに。ワークフローを削る数秒ごとに、列に並んでいる各人が待っていない秒になります。行の長さを掛けると、問題が発生します。したがって、方法のすべてのステップでのパフォーマンスは非常に重要です。通常、レシートプリンターは1台であり、通常はPOSアプリケーションでのみ印刷されるため、CUPSのコストはそれをはるかに上回ります。

これは、CUPSを使用して設定する環境がないと言っているわけではありません。レストランのキッチンには似たようなプリンターが設置されている傾向があり、並行性の問題は重大であるため、CUPSを使用します。しかし、それは常に仕事に最適なツールではなく、小売レシートプリンターはCUPSが従うのと同じ仮定に従わない。

0
Chris Travers