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

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

さて、CUPSが印刷ジョブを管理し、それをプリンタに送信する印刷スプーラとして機能することがわかりました。さらに、PPDファイルはプリンタの機能セットを記述し、CUPSはこれらのファイルとフィルタを使用してプリンタとインターフェースし、プリンタが文書を印刷するために使用できる出力を生成することを意味します(PostScript、PCL、またはプリンタに必要なすべての独自フォーマット)を理解します。 。しかし、私はこの問題のさまざまな面で混乱しています。主に:

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

混乱を解決してくれてありがとう。

答え1

CUPSに印刷ジョブを送信する方法はいくつかあります。

  • ローカルプロセスが従来のUnixプログラムの場合、プロセスは単にASCIIテキストまたはPostScriptをlpCUPS実装または印刷コマンドにパイプすることができます。lpr
  • localhostまたは、CUPSでLPD互換性が有効になっている場合は、ポート515 / TCPでLPD印刷プロトコルを使用できます。
  • localhostあるいは、ポート631を介したIPPでもあります。
  • あるいは、CUPSクライアントライブラリ(libcups.so)を使用して完全な基本的なCUPSサポートを入手することもできます。

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

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

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

通常、CUPSサーバーには、さまざまなファイル形式を標準の「スタンバイジョブフォーマット」に変換し、そこからプリンタが許可するフォーマット(PCL、PostScriptなど)に変換するために使用できる一連のジョブフォーマットコンバータがあります。独自の形式の1つ)。 「待機中の作業形式」はPostScriptでしたが、現在の最新バージョンのCUPSではPDFです。

関連情報