フィルタ・システム
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/04 05:27 UTC 版)
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,"") string(0,"<!DOCTYPE")) となっている。これは、ファイルのサフィックス(拡張子)がhtmlもしくはhtmであるか、ファイルのテキストの始めの1KiBが印刷可能な文字からなっていて、かつか<!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」の解説の一部です。
「フィルタ・システム」を含む「CUPS」の記事については、「CUPS」の概要を参照ください。
- フィルタ・システムのページへのリンク