CUPSは、標準 ひょうじゅん 的 てき な方法 ほうほう で印刷 いんさつ ジョブをプリンターに送 おく ることを可能 かのう とする機構 きこう を与 あた えるものである。印刷 いんさつ データはまずスケジューラ へと送 おく られ、スケジューラはジョブをプリンターが理解 りかい できる形式 けいしき へと変換 へんかん するためフィルタシステム に送 おく る。さらにフィルタシステムはデータを、デバイスやネットワークへと送 おく るための特殊 とくしゅ なフィルタであるバックエンド へと受 う け渡 わたし す。CUPSのシステムはデータをプリンターが理解 りかい できる言葉 ことば へと変換 へんかん するのにPostScript とラスタ・グラフィックス をフルに活用 かつよう している。
CUPSの最大 さいだい の利点 りてん は、それが、印刷 いんさつ サーバ上 じょう で様々 さまざま なデータ様式 ようしき を処理 しょり できる標準 ひょうじゅん 的 てき でモジュール化 か された印刷 いんさつ システムであることである。CUPS以前 いぜん には、それぞれ独自 どくじ の言語 げんご と形式 けいしき を用 もち いていた様々 さまざま な市場 いちば のプリンターに対応 たいおう している標準 ひょうじゅん 的 てき なプリンターの処理 しょり システムは見当 みあ たらなかった。例 たと えば、System Vとバークレイの印刷 いんさつ システムは互 たが いの互換 ごかん 性 せい がほとんどなく、しかもプログラム のデータ形式 けいしき からプリンターが理解 りかい できる形式 けいしき へと変換 へんかん するための複雑 ふくざつ なスクリプトと急場 きゅうば しのぎの手段 しゅだん とを用意 ようい する必要 ひつよう があった。さらにこれらはしばしばプリンターへと送 おく られているファイル形式 けいしき を検出 けんしゅつ する手段 しゅだん を持 も たないために、データ列 れつ を正 まさ しく自動的 じどうてき に変換 へんかん することができなかった。また中心 ちゅうしん となるサーバ上 じょう ではなく各 かく ワークステーション上 じょう でデータの変換 へんかん を行 おこな っていた。
CUPSでは、プリンターのメーカーやドライバの開発 かいはつ 者 しゃ が印刷 いんさつ 用 よう サーバで専用 せんよう に動 うご くドライバを製作 せいさく することが以前 いぜん よりもはるかに容易 ようい なものとなっている。また、サーバ上 じょう で処理 しょり が成 な されることによって、他 た のUnixの印刷 いんさつ システムで行 おこな われていたことと較 くら べネットワークを介 かい する印刷 いんさつ も非常 ひじょう に容易 ようい なものとなる。ひとつの利点 りてん はSamba を用 もち いるときで、プリンターはリモートのWindows コンピュータで用 もち いられ、しかも一般 いっぱん 的 てき なPostScriptドライバをネットワークを介 かい する印刷 いんさつ に用 もち いることができる。
CUPSスケジューラ はIPP (Internet Printing Protocol) もしくはlpd (line printer daemon) プロトコルのどちらかを用 もち いることができる。スケジューラはHTTP /1.1のリクエストを解釈 かいしゃく し印刷 いんさつ ジョブの管理 かんり 、サーバの設定 せってい 、およびCUPS自体 じたい の説明 せつめい 資料 しりょう のためにウェブを用 もち いたインタフェースを提供 ていきょう している。
スケジューラは、IPPとHTTPのどのメッセージがシステムに受 う け渡 わた せるかを制御 せいぎょ するための承認 しょうにん モジュール を有 ゆう している。IPP/HTTPパケットは一旦 いったん 承認 しょうにん されると、やって来 く る接続 せつぞく を監視 かんし しそれを処理 しょり しているクライアント・モジュール に送 おく られる。クライアントモジュールはまた、必要 ひつよう に応 おう じてウェブ基盤 きばん のプリンター、「クラス」、ジョブの実行 じっこう 状 じょう 況 きょう のモニタと管理 かんり をサポートするための外部 がいぶ CGIプログラムの実行 じっこう を受 う け持 も っている。クライアントモジュールがリクエストを処理 しょり すると、次 つぎ にデータはさらなる処理 しょり のためにIPPモジュール へと送 おく られる。このモジュールは、クライアントがHTTPサーバ上 じょう のアクセス制限 せいげん または認証 にんしょう を回避 かいひ することを防 ふせ ぐためにURI (Uniform Resource Identifier) の検証 けんしょう を行 おこな う。
スケジューラではプリンターがクラス を持 も つことを認 みと めている。これは複数 ふくすう のプリンターをグループ化 か するひとつの方法 ほうほう であり、ジョブをあるクラスへと送 おく るような用 もち い方 かた を可能 かのう としている。すなわち、スケジューラはクラス内 ない で最初 さいしょ に利用 りよう できるプリンターを選 えら び出 だ してジョブをそのプリンターへと送 おく る。ジョブモジュール は、最終 さいしゅう 的 てき な変換 へんかん と印刷 いんさつ のために印刷 いんさつ ジョブをフィルタやバックエンドの処理 しょり へと送 おく ることで印刷 いんさつ ジョブを管理 かんり する。またそれらフィルタやバックエンドからのステータスメッセージも監視 かんし している。
スケジューラのコンフィギュレーションモジュール はCUPSのデータ構造 こうぞう を初期 しょき 化 か するとともに設定 せってい ファイルを解析 かいせき し、CUPSプログラムをスタートさせる。コンフィギュレーションモジュールは設定 せってい ファイルを処理 しょり している間 あいだ はCUPSサービスを停止 ていし させ、処理 しょり が完了 かんりょう するとサービスを再開 さいかい させる。
ログ・モジュール はアクセス、エラー、ログ・ファイル操作 そうさ のスケジューラの事象 じしょう のログを取 と り扱 あつか い、一方 いっぽう メインモジュール はタイムアウトとクライアントからの接続 せつぞく に対 たい するI/Oリクエストの送出 そうしゅつ を受 う け持 も ち、またシグナルを監視 かんし し、必要 ひつよう に応 おう じサーバの設定 せってい ファイルの再 さい 読 よ み込 こ み、さらに子 こ プロセスのエラーと終了 しゅうりょう を取 と り扱 あつか う。
スケジューラで用 もち いられているその他 た のモジュールには、印刷 いんさつ デバイスが理解 りかい できる形式 けいしき に印刷 いんさつ データを変換 へんかん するときのフィルター処理 しょり に用 もち いられるMIME型 がた と変換 へんかん データベースを取 と り扱 あつか うMIMEモジュール 、PPD (Postscript Printer Description) ファイルのリストを扱 あつか うPPDモジュール 、システムで利用 りよう 可能 かのう なデバイスのリストを扱 あつか うデバイスモジュール 、CUPS内 ない のプリンターとPPDを扱 あつか うプリンターモジュール がある。
CUPSの大 おお きな利点 りてん のひとつは、様々 さまざま なデータ形式 けいしき を印刷 いんさつ サーバ上 じょう で処理 しょり できるということである。印刷 いんさつ ジョブは一連 いちれん のフィルター を介 かい してプリンターの最終 さいしゅう 的 てき な言語 げんご ・形式 けいしき へと変換 へんかん される。このデータ形式 けいしき と変換 へんかん 方法 ほうほう はMIME型 がた を利用 りよう して抽象 ちゅうしょう 化 か されている。CUPSはmime.types
とmime.convs
の2つのMIMEデータのファイルを使用 しよう する。mime.types
はCUPSがファイルのMIME型 がた を決定 けってい するために用 もち いられ、mime.convs
はあるMIME型 がた を別 べつ のMIME型 がた に処理 しょり するためのプログラムを定義 ていぎ している。
例 たと えば、HTML ファイルを検出 けんしゅつ するためのmime.types
の行 くだり は、
text/html html htm \
printable(0,1024) + (string(0,"<HTML>") string(0,"<!DOCTYPE"))
となっている。これは、ファイルのサフィックス(拡張子 かくちょうし )がhtml
もしくはhtm
であるか、ファイルのテキストの始 はじ めの1KiBが印刷 いんさつ 可能 かのう な文字 もじ からなっていて、かつ<HTML>
か<!DOCTYPE
から始 はじ まっているなら、ファイルはMIME型 がた text/htmlであるものと見 み なされることを意味 いみ している。一方 いっぽう 、mime.convs
ファイルは以下 いか のような行 くだり からなっている。
text/plain application/postscript 50 texttops
1番目 ばんめ のカラムと2番目 ばんめ のカラムはともにMIME型 がた であり、それぞれ変換 へんかん 前 まえ のMIME型 がた と変換 へんかん 後 ご のMIME型 がた とを表 あらわ している。3番目 ばんめ のカラムはファイルを変換 へんかん するために支払 しはら うべき「コスト」を表 あらわ し、フィルタ・システムがファイルを変換 へんかん するときに別々 べつべつ のフィルタの組合 くみあわ せの中 なか からどれを選 えら ぶかを決定 けってい するための評価 ひょうか 基準 きじゅん とされる。最後 さいご のカラムはデータを変換 へんかん するためのフィルタプログラムを表 あらわ す。よって、text/plain
型 かた のファイルはフィルタtexttops
によってコスト50でapplication/postscript
型 かた に変換 へんかん できることになる。
フィルタシステムは、プリンターキューまたは印刷 いんさつ フィルタの名前 なまえ 、印刷 いんさつ ジョブのジョブ番号 ばんごう 、ユーザ名 めい 、ジョブ名 めい 、印刷 いんさつ 部数 ぶすう 、その他 た 印刷 いんさつ のオプション、ファイル名 めい (標準 ひょうじゅん 入力 にゅうりょく からリダイレクト された場合 ばあい は不要 ふよう )の引数 ひきすう とともに入力 にゅうりょく データを受 う け取 と る。その後 ご 、上述 じょうじゅつ のようにMIMEデータベースを用 もち いて入力 にゅうりょく データの型 かた と使用 しよう されるフィルタを決定 けってい する。例 たと えば、画像 がぞう データが検出 けんしゅつ されればそれ用 よう の特定 とくてい のフィルタで処理 しょり され、HTMLのデータならまた別 べつ の特定 とくてい のフィルタで処理 しょり される。これらのデータはその後 ご PostScript データに変換 へんかん されるか、直接 ちょくせつ ラスタデータに変換 へんかん しうる。PostScriptデータへ変換 へんかん された場合 ばあい には、プレフィルタ と呼 よ ばれるさらなるフィルタが適用 てきよう され、これは印刷 いんさつ するページ範囲 はんい の指定 してい や、複数 ふくすう のページを1ページに埋 う め込 こ むN-Upモードの設定 せってい などプリンターに特定 とくてい のオプションを加 くわ えることができるようにPostScriptデータにたいして別 べつ のPostScript変換 へんかん プログラムを適用 てきよう する。
プレフィルタによる処理 しょり が終 お わると、PostScriptプリンタを用 もち いている場合 ばあい にはそのままデータはCUPSのバックエンドに送 おく られ、そうでない場合 ばあい には(linuxprinting.org のFoomaticのような)別 べつ のフィルタかGhostscript で処理 しょり される。これはPostScriptをプリンターに依存 いぞん しない中 なか 間 あいだ 形式 けいしき のCUPS-raster フォーマット(MIME 型 がた application/vnd.cups-raster
)へと変換 へんかん する。最後 さいご にこの中間 ちゅうかん ラスタ形式 けいしき はプリンター個別 こべつ の形式 けいしき へと最終 さいしゅう フィルタで処理 しょり される。
このラスタ形式 けいしき からのフィルタとしてCUPSにデフォルトで含 ふく まれているものは、PCL (Printer Command Language)、ESC/P またはESC/P2 、およびDymo へのフィルタである。ただし、CUPSで用 もち いることができるいくつかの代替 だいたい フィルタもある。CUPSの開発元 かいはつもと であるEasy Software Productsは独自 どくじ のCUPSフィルタをリリースしている。Gimp-Printは幅広 はばひろ い範囲 はんい の(主 しゅ として)インクジェット・プリンターに対 たい する高 こう 精度 せいど なドライバであり、LinuxのTurbo-Printはやはり様々 さまざま な種類 しゅるい のプリンターに対 たい しての種々 しゅじゅ のドライバを有 ゆう している。
バックエンドはデータをプリンターに送 おく る手段 しゅだん である。CUPSで有効 ゆうこう なバックエンドには、パラレルポート 、シリアルポート 、およびUSB ポートのプリンターとともに、IPP (Internet Printing Protocol)、JetDirect (AppSocket)、lpd (line printer daemon)、SMB (Server Message Block) プロトコルを介 かい して処理 しょり されるネットワーク・バックエンドがある。