web-dev-qa-db-ja.com

Linuxでの印刷:CUPS、PPD、印刷ダイアログ、印刷オプション

OK。したがって、CUPSは印刷スプーラーとして機能し、印刷ジョブを管理してプリンターに送信することを理解しています。また、PPDファイルがプリンターの機能セットを記述し、CUPSがこれらとフィルターを使用してプリンターとインターフェイスし、プリンターがドキュメントの印刷に使用できる出力を生成することも理解しています(PostScript、PCL、または独自の形式でプリンターが必要です)。しかし、私はこれのいくつかの側面について混乱しています。主に:

  • アプリケーションはどのように印刷ジョブをCUPSに送信しますか?
  • 選択したプリンタの印刷オプションをアプリケーションはどのように取得しますか?これらは、CUPSがプリンターに使用するPPDファイルまたはフィルターからのものですか?
  • プリンターがCUPSover IPPで共有されている場合、これはどのように機能しますか?印刷ジョブをCUPSに送信しているデバイスは、ローカルで処理を実行しますか、それともCUPSサーバーが処理を実行しますか? CUPSがそれを行う場合、それはローカルデバイスが印刷オプションを取得するためにPPDファイルを必要とすることを意味しますか、それともCUPSはこれをローカルデバイスに送信しますか?
  • 私の知る限り、どのLinuxコンピューターでもおそらくローカルでCUPSを使用して印刷するので、印刷オプションや印刷ジョブのPostScript/PCLへの処理などに関してこれはどのように機能しますか。

私の混乱を解消するのを手伝ってくれてありがとう。

2
Aaron

CUPSに印刷ジョブを取得する方法はたくさんあります。

  • プロセスが従来のUnixプログラムである場合、ローカルプロセスはASCII textまたはPostScriptをCUPSの印刷用のlpまたはlprコマンドの実装にパイプするだけかもしれません。 。
  • または、CUPSでLPD互換性が有効になっている場合は、localhostのポート515/TCPでLPD印刷プロトコルを使用する可能性があります
  • または、localhostポート631を介してIPPと通信する場合があります
  • または、CUPSのクライアントライブラリを使用する場合があります(libcups.so)完全なネイティブCUPSサポート用。

lpまたはlprコマンドを使用する場合は、コマンドラインオプションを使用してジョブオプションを指定する必要があり、サポートされているオプションを自動的に検出する従来の方法はありません。このレガシーUnixインターフェイスを使用するプログラムでは、通常、ユーザーが印刷コマンドラインを編集して必要なオプションを設定できます。 CUPSには、ファイル形式の自動検出(fileコマンドと同様)も含まれているため、理論的には次のようになります。言うだけ lp something.pngそして、CUPSにPNG形式のコンバーターが利用できる場合は、合理的な方法で画像を印刷します。

IPPのCUPS実装には、クライアントがプリンターとジョブのオプションを照会および設定し、PPDコンテンツを要求することを可能にするいくつかの プロトコル拡張 が含まれています。

IPPプロトコル自体には、HTTPと同様に、コンテンツネゴシエーションが含まれています。サーバーは、MIMEタイプとして受け入れることができる印刷ジョブ形式を指定し、クライアントは、送信しようとしているデータの形式を宣言します。サーバーが特定のジョブ形式をサポートしていない場合、ジョブは拒否される可能性があります。また、ジョブ形式として「application/vnd.cups-raw」を指定して、変換なしでジョブをそのままプリンターに渡す必要があることを示すこともできます。CUPS管理者は、これを許可するかどうかを選択できます。

一般に、CUPSサーバーには、さまざまなファイルタイプを標準の「キューに入れられたジョブ形式」に変換し、そこからプリンターが受け入れるもの(PCL、PostScript、またはより独自の形式の1つなど)に変換するために使用できる一連のジョブ形式コンバーターがあります。 「キューに入れられたジョブ形式」は以前はPostScriptでしたが、現在はCUPSの最新バージョンではPDF)になっています。

1
telcoM