(57)【特許請求の範囲】
【請求項１】
ユーザー・インターフェースを生成するコンピュータ実装される方法であって：
一つまたは複数の印刷フィルタを含む印刷パスを自動的に生成する段階と；
前記印刷パスにおける前記一つまたは複数の印刷フィルタから、前記一つまたは複数の印刷フィルタによって明かされる印刷オプションのセットを自動的に判別する段階と；
印刷オプションの前記セットに少なくとも部分的に基づいて、印刷ダイアログ・ユーザー・インターフェースを自動的に生成する段階と；
前記印刷ダイアログ・ユーザー・インターフェースをユーザーに呈示する段階とを有する、
方法。
【請求項２】
前記印刷パスを生成する段階が、少なくとも一つの印刷フィルタの出力が別の印刷フィルタの入力となるような印刷フィルタのシーケンスを含む印刷パスを生成することを含む、
請求項１記載の方法。
【請求項３】
請求項１記載の方法であって、前記印刷パスを生成する段階が：
ユーザーから、文書を印刷するコマンドを受領する段階と；
ユーザーに複数のプリンタのうちから特定のプリンタを選択するよう求める段階と；
前記文書がフォーマットされている元フォーマットを判別する段階と；
前記特定のプリンタが理解できる目標フォーマットを判別する段階と；
前記コマンドに応答して、印刷フィルタのセットのうちから、全体として前記文書を前記元フォーマットから前記目標フォーマットに変換する印刷フィルタのシーケンスを選択する段階とを有する、
方法。
【請求項４】
前記印刷ダイアログ・ユーザー・インターフェースを生成する段階が、（ａ）プリンタ・ドライバによって提供される印刷オプションのセットを、（ｂ）前記プリンタ・ドライバの外部の二つ以上の印刷フィルタによって提供される印刷オプションのセットとマージすることを含む、請求項１記載の方法。
【請求項５】
前記印刷ダイアログ・ユーザー・インターフェースを生成する段階が、（ａ）印刷されるべき文書を生成したアプリケーション・プログラムによって提供される印刷オプションのセットを、（ｂ）前記アプリケーション・プログラムによって提供されているのではない印刷オプションのセットとマージすることを含む、請求項１記載の方法。
【請求項６】
前記印刷パスを生成する段階が、アプリケーション・プログラムの「印刷」機能をユーザーが前記アプリケーション・プログラムのユーザー・インターフェースから選択することに応答して実行される、請求項１記載の方法。
【請求項７】
前記印刷パスの合成（composition）が、（ａ）アプリケーション・プログラムによって生成されるデータのフォーマットおよび（ｂ）ユーザー選択されたプリンタが理解できるデータのフォーマットの両方に依存する、請求項１記載の方法。
【請求項８】
前記一つまたは複数の印刷フィルタが：（ａ）テキスト‐ポストスクリプト・フィルタ、（ｂ）画像‐ポストスクリプト・フィルタ、（ｃ）PDF‐ポストスクリプト・フィルタおよび（ｄ）ラスタ‐RPCSフィルタのうちの少なくとも一つを含む、請求項１記載の方法。
【請求項９】
請求項１記載の方法であって：
データのセットを生成したアプリケーション・プログラムが、前記一つまたは複数の印刷フィルタから印刷オプションの前記セットを判別する段階と；
前記アプリケーション・プログラムが、前記データのセットを、前記一つまたは複数の印刷フィルタを通じて、ユーザー選択されたプリンタに送る段階とを有する、
方法。
【請求項１０】
一つまたは複数の命令シーケンスを担持するコンピュータ可読媒体であって、前記一つまたは複数の命令シーケンスは、一つまたは複数のプロセッサで実行されると、該一つまたは複数のプロセッサに：
一つまたは複数の印刷フィルタを含む印刷パスを自動的に生成する段階と；
前記印刷パスにおける前記一つまたは複数の印刷フィルタから、前記一つまたは複数の印刷フィルタによって明かされる印刷オプションのセットを自動的に判別する段階と；
印刷オプションの前記セットに少なくとも部分的に基づいて、印刷ダイアログ・ユーザー・インターフェースを自動的に生成する段階と；
前記印刷ダイアログ・ユーザー・インターフェースをユーザーに呈示する段階とを実行させる、
コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプリンタ・ドライバに、より詳細には、適切な印刷オプションを表示するユーザー・インターフェースを動的に生成する技術に関する。
【背景技術】
【０００２】
印刷装置は、紙または透明シートのような物理的媒体に可視コンテンツを印刷できる装置である。印刷装置には、プリンタや、リコーのAficio  5560システムのようなスキャナ機能、複写機能、ファクシミリ機能、プリンタ機能等を備える多機能周辺機器（MFP:  multi-function  peripheral）が含まれる。典型的には、印刷装置はネットワークまたはケーブルを介してコンピュータからデータを受信し、そのデータによって表されているテキストおよび／または画像を印刷する。
【０００３】
このデータは通例、印刷装置が受信したそのデータを発したコンピュータ上で実行されるアプリケーション・プログラムによって生成される。典型的には、データは、アプリケーション・プログラムが生成する「文書」を表す。アプリケーション・プログラムのユーザーが、そのアプリケーション・プログラムがユーザーに呈示する機構を使って文書を編集する。たとえばユーザーは、ワードプロセシング・アプリケーションを使って文書を生成および修正してもよい。もう一つの例として、ユーザーは画像編集アプリケーションを使って文書を生成および修正してもよい。本稿で論じるように、文書はテキスト、画像、テキストと画像の組み合わせおよび／またはその他の内容を含んでいてもよい。
【０００４】
しばしば、アプリケーション・プログラムは、ユーザーが生成または修正した文書を保存するために、ユーザーに複数のオプションを提供する。いくつかのアプリケーション・プログラムはユーザーが、その文書が保存されるべきフォーマットのタイプを指定することを許容する。たとえば、ユーザーがアプリケーションに文書を保存するよう指示するとき、アプリケーションはユーザーに、文書をポストスクリプト（Postscript）、TIFF（Tagged  Image  File  Format）、ASCII（American  Standard  Code  for  Information  Interchange）テキスト、JPEG（Joint  Photographic  Experts  Group）、GIF（Graphics  Interchange  Format）、PDF（Portable  Document  Format）、ビットマップまたは他の何らかのタイプのフォーマットのうちのいずれで保存したいかを尋ねてもよい。特定の文書によって表される内容は文書が保存されるフォーマットのタイプによらず同じだが、文書を表す持続的に保存されたデータの構造は、前記タイプによって変わりうる。通例、アプリケーションが文書を選択されたタイプとして保存するとき、アプリケーションは、文書の内容を表すデータと一緒に文書のタイプを示すメタデータを保存する。そのようなメタデータは、後刻、記憶装置からその文書がアプリケーションに読み込まれたときに、持続的に保存されたデータがどのように解釈されるべきかをアプリケーションが判別することを許容する。アプリケーションが文書を保存するとき、アプリケーションはその文書を表すデータをハードディスク・ドライブのような記憶装置上のファイルに保存する。
【０００５】
アプリケーションは通例、ファイルから、そうしたアプリケーションが以前に保存した文書を読み込むことができる。さらに、いくつかのOS（オペレーティング・システム）は、ファイルに保存された文書を印刷するためのアプリケーションに独立な印刷機構をも提供する。たとえば、リナックスOSは、ユーザーが、指定されたファイルに以前に記憶された文書を印刷するよう、指定された印刷装置に指示できる印刷機構を提供する。ユーザーがこの印刷機構を呼び出すとき、この印刷機構は文書データを指定されたファイルから読み出し、そのデータを指定された印刷装置に印刷のために送る。この印刷機構は、印刷工程において、指定されたファイルを生成または保存したアプリケーションを利用する必要はない。実際、そのような印刷機構が文書を印刷するために用いられるとき、ユーザーのコンピュータは、指定されたファイルを生成または保存したアプリケーションへのアクセスを行う必要すらないのである。
【０００６】
しかしながら、印刷機構がデータを指定された印刷装置に送る前に、印刷機構はユーザー・インターフェースをユーザーに呈示することがある。ユーザー・インターフェースは、ユーザー選択可能で、選択されると印刷装置が文書を印刷する仕方に影響するようなさまざまなオプションを含んでいてもよい。たとえば、オプションは、フォント・サイズに影響するインチ毎文字数（CPI:  characters-per-inch）オプション、スケーリング・オプション、両面オプション、透かしオプション、ステープル・オプションおよび／またはその他のオプションを含んでいてもよい。ユーザー・インターフェースを使って、ユーザーはそうしたオプションの一つまたは複数を選択し、次いでやはりユーザー・インターフェースに呈示されている「印刷」ボタンを選択できる。ユーザーが「印刷」ボタンを選択すると、印刷機構が印刷装置に文書データを、印刷装置に文書を選択されたオプションに従って印刷させる命令と一緒に、送る。
【０００７】
残念ながら現状では、アプリケーションに独立な印刷機構がユーザーに呈するユーザー・インターフェースはしばしば、印刷されるべき文書のタイプに適切ですらないユーザー選択可能なオプションを含む。たとえば、文書がJPEGまたはGIFタイプの文書として保存されているとき、ユーザーによる「CPI」オプションの選択および使用は、典型的には文書が印刷される仕方に何の影響ももたない。実際、文書がテキストを全く含まないときは常に、ユーザーによる「CPI」オプションの選択は典型的には何の効果ももたない。「印刷」ボタンを選択する前にユーザーがそのようなタイプ不適合なオプションを選択するとき、ユーザーは、そのオプションを選択することで、印刷装置がその文書を印刷する仕方に影響が出ると期待していることがありうる。印刷装置が、ユーザーによるオプション選択を通じて表現されたユーザーの意向を無視したように見えるとき、ユーザーは失望し、当惑することがありうる。さらには、ユーザーは、印刷装置が故障しているという誤った結論を下すことさえありうる。
【０００８】
既存のアプリケーションに独立な印刷機構は典型的には、印刷すべき文書の特徴や特性に関わりなく、同じ、一様な、静的なユーザー・インターフェースをユーザーに呈示する。静的なユーザー・インターフェースは、オプションの選択が印刷装置が文書を印刷する仕方に実際に何らかの効果または影響をもつかどうかに関わりなく、同じユーザー選択可能なオプションを呈示する。結果として、印刷されたときの文書の見え方についての印刷前のユーザーの期待と、印刷装置がその文書を印刷した後の文書の実際の見え方との間には、ギャップができることが多い。さらに、ユーザー・インターフェースが、特定の文書に適用可能でない、いくつかのユーザー選択可能なオプションを含んでいることは、どのオプションを選択するかを決めるときにユーザーが混乱する原因となることがある。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
以上のことから、印刷装置が文書を印刷する仕方が、ユーザー・インターフェースを通じてユーザーが選択したオプションに従っていない場合にユーザーが経験する混乱および失望をなくす必要がある。
【課題を解決するための手段】
【００１０】
本発明のある実施形態によれば、印刷パス構築論理が印刷データを元フォーマットから目標フォーマットに変換する印刷パスを確立したのち、印刷パス構築論理は、印刷パスに含まれる各印刷フィルタについて、そのような印刷フィルタが提供する印刷オプションのセットを決定する。印刷パス構築論理で、この決定ができるのは、印刷フィルタが、該印刷フィルタが、どの印刷オプションを提供しているかを明かすからである。印刷パス構築論理は、そのような各印刷フィルタが提供する印刷オプションを一緒にマージし、それらの印刷オプションをプリンタ・ドライバが提供する印刷オプションと一緒に含め、それにより、印刷パスに基づく印刷オプションのマスター・セットを生成する（その印刷パスはといえば、元フォーマットおよび目標フォーマットに基づいており、元フォーマットおよび目標フォーマットは印刷データおよび選択された印刷装置に依存して変わりうる）。こうして、印刷オプションのマスター・セットは静的ではなく、むしろ動的に決定される。印刷オプションのこのマスター・セットは、印刷データに関して関連がないまたは効果がないオプションは含まない。
【００１１】
実施形態が限定ではなく例として、付属の図面において示される。図面において、同様の参照符号は類似の要素を指す。
【発明を実施するための最良の形態】
【００１２】
以下の記述では、本発明の十全な理解を与えるため、説明のために個別的な詳細が述べられるが、本発明がそうした個別的な詳細なしでも実施できることは明らかであろう。場合によっては、本発明を無用に埋没させるのを避けるために、よく知られた構造および装置はブロック図の形で描かれる。
【００１３】
〈印刷フィルタ（print  filter）〉
印刷フィルタは、文書を、ある文書フォーマットから別の文書フォーマットに変換するモジュールである。印刷フィルタの例は、テキスト‐ポストスクリプト・フィルタ、画像‐ポストスクリプト・フィルタ、PDF‐ポストスクリプト・フィルタ、ラスタ‐RPCS（refined  printing  command  stream）・フィルタなどを含む。たとえば、テキスト‐ポストスクリプト・フィルタは、テキスト文書をポストスクリプト文書に変換する。
【００１４】
アプリケーション・プログラムは特定のフォーマットの印刷データを生成する。異なるアプリケーション・プログラムは異なるフォーマットの印刷データを生成することがある。たとえば、あるアプリケーション・プログラムはポストスクリプト・フォーマットの印刷データを生成し、別のアプリケーション・プログラムはPDFフォーマットの印刷データを生成するなどである。OSがコマンドライン・インターフェースをサポートしていれば、いかなるフォーマットの印刷データもOSのコマンドライン・インターフェースを使って印刷できる。
【００１５】
〈印刷パス（print  path）〉
文書がアプリケーション・プログラムまたはコマンドライン・インターフェースを通じてOSの印刷サブシステムに提出されるとき、OSの印刷サブシステムは「印刷パス」を確立する。印刷パスとは、印刷データを元フォーマットから所望の目標フォーマットに変換するために逐次に作用する一つまたは複数の印刷フィルタの系列である。つまり、アプリケーションから画像やテキスト等のデータを印刷出力するために必要なコンポーネントを総称して、印刷パスと言う。たとえば、アプリケーションが出力を生成するために利用するAPIセット、この出力を保持しておくスプーリング、スプーリングされたデータを印刷装置が使用する特定のグラフィック・コマンドに変換するドライバ等の一連の印刷用コンポーネントを印刷パス（プリントパス）という。
【００１６】
たとえば、アプリケーションはPDFフォーマットの文書を生成してOSの印刷サブシステムに送ってもよい。印刷サブシステムはたとえば、その文書を印刷することになっている選択された印刷装置が、RPCSフォーマットに従ってフォーマットされた文書を印刷するよう構成されていると検知する。こうして、印刷サブシステムは、多数の利用可能な印刷フィルタのうちから、正しい順序につないだときに全体としてPDFフォーマットの文書を選択された印刷装置が印刷できるRPCSフォーマットの文書に変換する、特定のフィルタのセットを自動的に選択できる。
【００１７】
たとえば、印刷サブシステムは、適切な印刷パスを生成するために以下のように印刷フィルタを選択し、つないでもよい。印刷サブシステムは、アプリケーション・プログラムのPDFフォーマットの出力をPDF‐ポストスクリプト印刷フィルタに向かわせてもよい。印刷サブシステムは、PDF‐ポストスクリプト印刷フィルタの出力を、ポストスクリプト‐ラスタ印刷フィルタに向かわせてもよい。印刷サブシステムは、ポストスクリプト‐ラスタ印刷フィルタの出力を、ラスタ‐RPCS印刷フィルタに向かわせてもよい。最後に、印刷サブシステムはラスタ‐RPCS印刷フィルタの出力を、選択された印刷装置に向かわせてもよい。
【００１８】
印刷サブシステムは、印刷パスがどのように見えるかを、印刷データに付随するプリンタ記述ファイル、印刷装置および元フォーマットに基づいて決定できる。プリンタ記述ファイルは、選択された印刷装置がどのフォーマットを期待しているか（すなわち目標フォーマット）を印刷サブシステムに伝える。印刷サブシステム内部の印刷パス構築論理（print-path-constructing  logic）は、元フォーマット、目標フォーマットおよび利用可能な印刷フィルタに基づいて印刷パスを構築する。本発明の少なくともいくつかの実施形態では、プリンタ記述ファイルはPPD（postscript  printer  definition）またはGPD（generic  printer  description）ファイルである。
【００１９】
図１は、本発明のある実施形態に基づく、OSの印刷サブシステムの例を示すブロック図である。本発明の代替的な諸実施形態では、印刷サブシステムは図１に示されているよりも多いモジュールを含んでいたり、より少ないモジュールを含んでいたり、図１に示されているのとは異なるモジュールを含んでいたりしてもよい。図示した例では、OSの印刷サブシステム１００は、印刷パス構築論理（print  path  construction  logic）１０２、プリンタ記述ファイル１０４、PDF‐ポストスクリプト印刷フィルタ１０６、ポストスクリプト‐ラスタ印刷フィルタ１０８、ラスタ‐RPCS印刷フィルタ１１０およびテキスト‐ポストスクリプト印刷フィルタ１１２を含む。
【００２０】
〈システム・フィルタ（system  filter）およびプリンタ・ドライバ（printer  driver）〉
図２は、本発明のある実施形態に基づく、OSの印刷サブシステムの代替例を示すブロック図である。図２に示した実施形態では、OSの印刷サブシステムの構成要素の少なくともいくつかは、二つの相異なる実体に分けられている：（ａ）システム・フィルタと（ｂ）プリンタ・ドライバである。図示した例では、OSの印刷サブシステム２００は、高いレベルでは、印刷パス構築論理２０２、システム・フィルタ２１４およびプリンタ・ドライバ２１６を含む。本発明のある実施形態では、印刷サブシステムの組み込み印刷フィルタのすべてはシステム・フィルタ２１４内に含まれ、装置依存の印刷フィルタのすべてとプリンタ記述ファイル２０４はプリンタ・ドライバ２１６内に含まれる。こうして、本発明のある実施形態では、システム・フィルタ２１４は、印刷装置に独立な以下のフィルタ：PDF‐ポストスクリプト印刷フィルタ２０６、ポストスクリプト‐ラスタ印刷フィルタ２０８およびテキスト‐ポストスクリプト印刷フィルタ２１２を含む。本発明の実施形態では、ラスタ‐RPCS印刷フィルタ２１０およびプリンタ記述ファイル２０４はプリンタ・ドライバ２１６に含まれる。
【００２１】
いくつかのアプローチのもとでは、プリンタ・ドライバ２１６は、印刷サブシステム２００に、選択された印刷装置がサポートしているデータ・フォーマットおよび印刷オプションのセットを明かす。プリンタ・ドライバ２１６の出力は、選択された印刷装置に送られる。印刷サブシステム２００は出力フォーマットを認識する必要はない。プリンタ・ドライバ２１６がすでに印刷オプションをプリンタ記述ファイル２０４によって明かしている。いくつかのアプローチのもとでは、システム・フィルタ２１４内のフィルタはオプションを明かさず、そのようなフィルタはその入力および出力フォーマットを明かすのみである。そのようなアプローチのもとでは、アプリケーション・プログラムは、プリンタ・ドライバ２１６からは利用可能な印刷オプションを取得できるが、アプリケーション・プログラムは、システム・フィルタ２１４からは利用可能な印刷オプションを取得することはできない。そのようなアプローチのもとでは、アプリケーション・プログラムは、システム・フィルタ２１４内で、どのフィルタが利用可能であるかを知らない。
【００２２】
〈印刷オプションを明かすシステム・フィルタ〉
いくつかのアプローチとは対照的に、本発明のある実施形態によれば、システム・フィルタ内の各フィルタは、その各フィルタの入力および出力フォーマットだけでなく、その選択可能な印刷オプションをも明かす。システム・フィルタ内のフィルタは、その選択可能な印刷オプションを、たとえばプリンタ記述ファイル内で印刷オプションが表現されるのと同じフォーマットで表現してもよい。特定の印刷フィルタによって明かされる入力および出力フォーマットは、その特定の印刷フィルタの名前から含意されてもよい。
【００２３】
図３は、本発明のある実施形態に基づく、システム・フィルタ３１４が、その印刷オプションをアプリケーション・プログラムに明かす、OSの印刷サブシステムの例を示すブロック図である。OSの印刷サブシステム３００は、システム・フィルタ３１４およびプリンタ・ドライバ３１６を含む。プリンタ・ドライバ３１６は、該プリンタ・ドライバ３１６が次の印刷オプションを提供できるという事実を明かす：（ａ）両面、（ｂ）ステープル、（ｃ）ページ・サイズ、（ｄ）解像度および（ｅ）カラー・モード。システム・フィルタ３１４は、PDF‐ポストスクリプト印刷フィルタ３０６、ポストスクリプト‐ラスタ印刷フィルタ３０８、テキスト‐ポストスクリプト印刷フィルタ３１２および画像‐ポストスクリプト印刷フィルタ３１８を含む。PDF‐ポストスクリプト印刷フィルタ３０６が、次の印刷オプションを提供できるという事実を明かす：（ａ）両面、（ｂ）ステープル。ポストスクリプト‐ラスタ印刷フィルタ３０８は、該ポストスクリプト‐ラスタ印刷フィルタ３０８が次の印刷オプションを提供できるという事実を明かす：（ａ）解像度、（ｂ）カラー・モードおよび（ｃ）ページ・サイズ。テキスト‐ポストスクリプト印刷フィルタ３１２は、テキスト‐ポストスクリプト印刷フィルタ３１２が次の印刷オプションを提供できるという事実を明かす：（ａ）ページ・サイズ、（ｂ）CPI（インチ毎キャラクタ数）および（ｃ）透かし。画像‐ポストスクリプト印刷フィルタ３１８は、画像‐ポストスクリプト印刷フィルタ３１８が次の印刷オプションを提供できるという事実を明かす：（ａ）スケーリング、（ｂ）透かしおよび（ｃ）ページ・サイズ。
【００２４】
本発明のある実施形態によれば、印刷データを元フォーマットから目標フォーマットに変換する印刷パスを印刷パス構築論理が確立したのち、印刷パス構築論理は、印刷パスに含まれる各印刷フィルタについて、そのような印刷フィルタが提供する印刷オプションのセットを決定する。印刷パス構築論理がこの決定ができるのは、印刷フィルタが、該印刷フィルタが、どの印刷オプションを提供しているかを明かすからである。印刷パス構築論理は、各システム印刷フィルタが提供する印刷オプションを一緒にマージし、それらの印刷オプションを、プリンタ・ドライバが提供する印刷オプションと一緒にマージし、それにより、印刷パスに基づく印刷オプションのマスター・セットを生成する（その印刷パスはといえば、起点フォーマットおよび目標フォーマットに基づいており、元フォーマットおよび目標フォーマットは印刷データおよび選択された印刷装置に依存して変わりうる）。こうして、印刷オプションのマスター・セットは静的ではなく、むしろ動的に決定される。印刷オプションのこのマスター・セットは、印刷データに関して関連がないまたは効果がないオプションは含まない。
【００２５】
たとえば、印刷パスがPDF‐ポストスクリプト印刷フィルタ（システム・フィルタ内）、ポストスクリプト‐ラスタ印刷フィルタ（システム・フィルタ内）およびラスタ‐RPCS印刷フィルタ（プリンタ・ドライバ内）を含む場合、印刷オプションのマスター・セットは、動的に、（ａ）解像度、（ｂ）カラー・モード、（ｃ）ページ・サイズ、（ｄ）両面および（ｅ）ステープルであると決定できる。つまり、先に示したように、この３つの印刷フィルタを用いると、先に示した（ａ）から（ｅ）のオプションが、印刷データに関連し、印刷に影響を与えることができると言うことを、ユーザが認識できることになる。このように、印刷フィルタから、印刷フィルタが利用できるオプションを明示することができるので、ユーザが影響を与えるオプションを確実に選択し、所望の印刷結果を得ることに貢献しうる。なお、このように、印刷フィルタは複数枚の利用であっても良いし、１つであっても良いが、印刷フィルタがオプションを明示することが本発明による実施形態の着眼である。したがって、複数枚の印刷フィルタが利用されれば、選択できるオプションが増加する可能性がある。
【００２６】
〈例示的な技法〉
図４は、本発明のある実施形態に基づく、印刷パス内の印刷フィルタによって明かされる印刷オプションに基づいてユーザー印刷インターフェースを動的に生成する技法の例を示す流れ図である。本発明の代替的な実施形態では、そのような技法は図４に示されるよりも多い動作を含んでいたり、より少ない動作を含んでいたり、図４に示されているのとは異なる動作を含んでいたりしてもよい。
【００２７】
ブロック４０２では、ユーザーがアプリケーション・プログラムのメニューから「印刷」を選択する。ブロック４０４では、アプリケーション・プログラムは、印刷サブシステムから利用可能な印刷装置（たとえば、そのアプリケーション・プログラムが実行されているコンピュータと同じネットワークに接続されているプリンタまたはMFP）のリストを取得する。ブロック４０６では、アプリケーション・プログラムはユーザーに、リストから、該ユーザーがアプリケーション・プログラムの印刷データを印刷のために送りたい印刷装置を選択するよう求める。ブロック４０８では、ユーザーはリストから印刷装置を選択する。ブロック４１０では、アプリケーション・プログラムは印刷サブシステムに、少なくとも部分的に（ａ）アプリケーション・プログラムの印刷ストリームのMIME型および（ｂ）ユーザーが選択した印刷装置に基づいている印刷オプション・リストを生成するよう指示する。ブロック４１２では、印刷サブシステムは応答して、上記のような印刷パスを確立し、上記のような確立された印刷パスが与えられた場合に利用可能な印刷オプションのリストを取得する。ブロック４１４では、アプリケーション・プログラムが、アプリケーション固有の印刷オプションを、印刷パスに基づく印刷オプションとマージする。ブロック４１６では、アプリケーション・プログラムは、ブロック４１４のマージ結果に基づく印刷ダイアログを生成する。アプリケーション・プログラムは印刷ダイアログをユーザーに呈示する。ブロック４１８では、ユーザーが、印刷ダイアログから一つまたは複数の印刷オプションを選択する。ブロック４２０では、選択された印刷オプションに少なくとも部分的に基づいて、アプリケーション・プログラムは印刷ストリーム（該印刷ストリームは、選択された印刷オプションを指定する）を生成し、その印刷ストリームを印刷サブシステムに提出する。ブロック４２２では、印刷サブシステムは印刷ストリームを印刷パスを通じて上記のように伝え、それにより印刷ストリームを、元フォーマットから目標フォーマットに変換する。ブロック４２４では、印刷サブシステムは変換された印刷ストリームを選択された印刷装置に印刷のために送る。
【００２８】
〈アプリケーションにより生成された印刷ダイアログ〉
本発明のある実施形態によると、アプリケーション・プログラムはその独自の印刷オプションを（上記のような印刷フィルタに起因して加えられる印刷オプションに加えて）印刷ダイアログに追加してもよい。印刷オプションは、そのアプリケーション種別に特定的に係る種類であるようなアプリケーション固有のものであってもよく、他の種別のアプリケーションには適用可能でなくてもよい。たとえば、インターネット・ブラウザ・アプリケーション（たとえば、モジラ・ファイアフォックスまたはマイクロソフト・インターネット・エクスプローラのような）は、印刷ダイアログに、「背景を印刷する」といったアプリケーション固有印刷オプションを追加してもよい。そのようなオプションを選択すると、印刷データにはブラウザが表示したページの背景にあったグラフィックが含まれるようになる。本発明のそのような実施形態では、最終的にユーザーに呈示される印刷ダイアログは、印刷パスからおよびアプリケーション・プログラム自身からくる印刷オプションの組み合わせを含むことがある。アプリケーション固有印刷オプションがない状況のもとでは、アプリケーション・プログラムは、アプリケーション・プログラムによって特定的に生成されるダイアログではなく、単に、OSによって提供される印刷ダイアログを使用し、呈示できる。
【００２９】
図５は、本発明のある実施形態に基づく、さまざまな時点において例示的なシステムのさまざまな構成要素によって実行されうる動作を示す図である。ステップ５０２では、ユーザーは、アプリケーション・プログラム上の「印刷」ボタンを選択する。ステップ５０４では、アプリケーション・プログラムは、現在の文書（すなわち、そのアプリケーション・プログラムにおいて「開かれている」文書、たとえばそのアプリケーション・プログラムがインターネット・ブラウザであればウェブ・ページ）についての印刷ストリームを生成する。ステップ５０６では、印刷サブシステムは、アプリケーション印刷ストリームのMIME型を検出する。ステップ５０８では、印刷サブシステムはユーザーに、プリンタを選択することを求める。ステップ５１０では、ユーザーはプリンタを選択する。ステップ５１２では、印刷サブシステムは印刷パスを確立し、確立された印刷パスについての利用可能な印刷オプション・リストを取得する。ステップ５１４では、印刷サブシステムは印刷ダイアログ・ユーザー・インターフェースを生成する。ステップ５１６では、印刷サブシステムは、生成された印刷ダイアログ・ユーザー・インターフェースをユーザーに対して表示する。ステップ５１８では、ユーザーが印刷ダイアログ・ユーザー・インターフェースから一つまたは複数の印刷オプションを選択する。ステップ５２０では、印刷サブシステムはアプリケーション印刷ストリームを印刷パスを通じて送り、それにより印刷ストリームを、選択されたプリンタが理解できる目標のプリンタ記述言語（PDL:  printer  description  language）に変換する。ステップ５２２では、印刷サブシステムは変換されたPDLを選択されたプリンタに送る。
【００３０】
〈実装機構〉
図６は、本発明のある実施形態を実装できるコンピュータ・システム６００を示すブロック図である。コンピュータ・システム６００は、情報を伝達するためのバス６０２または他の伝達機構と、情報を処理するためのバス６０２に結合されたプロセッサ６０４とを含む。コンピュータ・システム６００は、情報およびプロセッサ６０４によって実行されるべき命令を記憶するための、バス６０２に結合された、ランダム・アクセス・メモリ（RAM）または他の動的記憶装置のようなメイン・メモリ６０６をも含む。メイン・メモリ６０６は、プロセッサ６０４によって実行されるべき命令の実行中に一時変数または他の中間情報を保存するために使われてもよい。コンピュータ・システム６００はさらに、静的な情報およびプロセッサ６０４のための命令を記憶するための、バス６０２に結合された、読み出し専用メモリ（ROM）６０８または他の静的記憶装置を含む。情報および命令を記憶するため、磁気ディスクまたは光ディスクといった記憶デバイス６１０が提供され、バス６０２に結合される。
【００３１】
コンピュータ・システム６００は、ユーザーに対して情報を表示するために、液晶ディスプレイ（LCD）のようなディスプレイ６１２に、バス６０２を介して結合されうる。情報およびコマンド選択をプロセッサ６０４に伝えるために、英数字その他のキーを含む入力装置６１４はバス６０２に結合される。別の種類のユーザー入力装置は、方向情報およびコマンド選択をプロセッサ６０４に伝えるためかつディスプレイ６１２上でのカーソルの動きを制御するための、マウス、トラックボール、スタイラスまたはカーソル方向キーのようなカーソル・コントロール６１６である。この入力装置は典型的には、装置が平面内で位置を特定することを許容する、第一軸（たとえばx）および第二軸（たとえばy）といった二つの軸方向の2自由度をもつ。
【００３２】
本発明は、無線通信アーキテクチャにおけるコンピュータ・システム６００の使用に関係する。本発明のある実施形態によれば、プロセッサ６０４がメイン・メモリ６０６に含まれている一つまたは複数の命令の一つまたは複数のシーケンスを実行するのに応答して、無線通信がコンピュータ・システム６００によって提供される。そのような命令は、記憶デバイス６１０のような別のコンピュータ可読媒体からメイン・メモリ６０６に読み込まれてもよい。メイン・メモリ６０６に含まれる命令のシーケンスの実行は、プロセッサ６０４に、本稿で記載されるプロセス・ステップを実行させる。メイン・メモリ６０６に含まれる命令のシーケンスを実行するために、マルチプロセシング構成において一つまたは複数のプロセッサが用いられてもよい。代替的な実施形態では、本発明を実装するソフトウェア命令の代わりに、またはそれと組み合わせて、結線回路が使用されもよい。こうして、本発明の実施形態は、ハードウェア回路およびソフトウェアのいかなる特定の組み合わせにも限定されない。
【００３３】
本稿で使われるところでは、用語「コンピュータ可読媒体」は、実行のためにプロセッサ６０４に命令を提供することに参与するいかなる媒体をも指す。そのような媒体は数多くの形をとることができ、これに限られないが、不揮発性媒体、揮発性媒体および伝送媒体が含まれる。不揮発性媒体はたとえば、記憶デバイス６１０のような光ディスクまたは磁気ディスクを含む。揮発性媒体は、メイン・メモリ６０６のような動的メモリを含む。伝送媒体は、バス６０２をなす線を含み、同軸ケーブル、銅線および光ファイバーを含む。
【００３４】
コンピュータ可読媒体の一般的な形は、たとえば、フロッピー(登録商標)・ディスク、フレキシブル・ディスク、ハードディスク、磁気テープまたは他の任意の磁気媒体、CD-ROM、他の任意の光学式媒体、パンチカード、紙テープ、穿孔パターンをもつ他の任意の物理媒体、RAM、PROMおよびEPROM、フラッシュ‐EPROM、他の任意のメモリ・チップまたはカートリッジ、またはコンピュータが読み取りできる他の任意の媒体を含む。
【００３５】
さまざまな形のコンピュータ可読媒体が、一つまたは複数の命令の一つまたは複数のシーケンスをプロセッサ６０４に搬送するのに関わりうる。たとえば、命令は最初はリモート・コンピュータの磁気ディスク上に担持されていてもよい。リモート・コンピュータはその命令を自分の動的メモリに読み込み、その命令をモデムを使って電話線を通じて送ることができる。コンピュータ・システム６００にローカルなモデムが電話線上のそのデータを受信し、そのデータをバス６０２上に載せることができる。バス６０２はそのデータをメイン・メモリ６０６に伝え、そこからプロセッサ６０４は命令を取り出し、実行する。メイン・メモリ６０６が受け取った命令は、プロセッサ６０４による実行の前または後に、任意的に、記憶デバイス６１０上に記憶されてもよい。
【００３６】
コンピュータ・システム６００は、バス６０２に結合される通信インターフェース６１８をも含む。通信インターフェース６１８は、ローカル・ネットワーク６２２に接続されているネットワーク・リンク６２０に双方向データ通信結合を提供する。たとえば、通信インターフェース６１８は、対応する型の電話線へのデータ通信接続を提供する統合サービス・デジタル網（ISDN）カードまたはモデムであってもよい。もう一つの例として、通信インターフェース６１８は、互換LANへのデータ通信接続を提供するLANカードであってもよい。無線リンクが実装されてもよい。そのようないずれの実装においても、通信インターフェース６１８は、さまざまな型の情報を表すデジタル・データ・ストリームを搬送する電気信号、電磁信号または光信号を送受信する。
【００３７】
ネットワーク・リンク６２０は典型的には、一つまたは複数のネットワークを通じて他のデータ装置（data  device）へのデータ通信を提供する。たとえば、ネットワーク・リンク６２０は、ホスト・コンピュータ６２４への、あるいはインターネット・サービス・プロバイダー（ISP）６２６によって運営されているデータ設備（data  equipment）への、ローカル・ネットワーク６２２を通じた接続を提供してもよい。ISP６２６はといえば、現在一般にインターネット６２８と称される世界規模のパケット・データ通信ネットワークを通じてデータ通信サービスを提供するものである。ローカル・ネットワーク６２２およびインターネット６２８の両方は、デジタル・データ・ストリームを搬送する電気信号、電磁信号または光信号を使う。
【００３８】
コンピュータ・システム６００は、ネットワーク（単数または複数）、ネットワーク・リンク６２０および通信インターフェース６１８を通じてメッセージを送信し、プログラム・コードを含むデータを受信できる。インターネットの例では、サーバー６３０が、インターネット６２８、ISP６２６、ローカル・ネットワーク６２２および通信インターフェース６１８を通じてアプリケーション・プログラムのための要求されたコードを送信してもよい。本発明によれば、一つのそのようなダウンロードされたアプリケーションが、本稿で記載される選択されたネットワーク要素を監視するために監視システムを構成することを提供する。プロセッサ６０４は、受信されたコードを受信されるにつれて実行してもよいし、および／またはのちの時刻のために記憶デバイス６１０または他の不揮発性記憶装置に記憶してもよい。
【００３９】
以上では、本発明の個別的な実施形態が記載されてきたが、本発明の広義の精神および範囲から外れることなく、本発明のそのような実施形態に対してさまざまな修正および変更をなすことができる。したがって、明細書および図面は、制限する意味ではなく、例示的な意味に見なされるべきものである。
【図面の簡単な説明】
【００４０】
【図１】本発明のある実施形態に基づく、OSの印刷サブシステムの例を示すブロック図である。
【図２】本発明のある実施形態に基づく、OSの印刷サブシステムの代替例を示すブロック図である。
【図３】本発明のある実施形態に基づく、システム・フィルタがその印刷オプションをアプリケーション・プログラムに明かす、OSの印刷サブシステムの例を示すブロック図である。
【図４】本発明のある実施形態に基づく、印刷パス内の印刷フィルタによって明かされる印刷オプションに基づいてユーザー印刷インターフェースを動的に生成する技法の例を示す流れ図である。
【図５】本発明のある実施形態に基づく、さまざまな時点において例示的なシステムのさまざまなコンポーネントによって実行されうる動作を示す図である。
【図６】本発明のある実施形態を実装できる装置を示すブロック図である。
【符号の説明】
【００４１】
１００  OSの印刷サブシステム
１０２  印刷パス構築論理
１０４  プリンタ記述ファイル
１０６  PDF‐ポストスクリプト印刷フィルタ
１０８  ポストスクリプト‐ラスタ印刷フィルタ
１１０  ラスタ‐RPCS印刷フィルタ
１１２  テキスト‐ポストスクリプト印刷フィルタ
２００  OSの印刷サブシステム
２０２  印刷パス構築論理
２０４  プリンタ記述ファイル
２０６  PDF‐ポストスクリプト印刷フィルタ
２０８  ポストスクリプト‐ラスタ印刷フィルタ
２１０  ラスタ‐RPCS印刷フィルタ
２１２  テキスト‐ポストスクリプト印刷フィルタ
２１４  システム・フィルタ
２１６  プリンタ・ドライバ
３００  OSの印刷サブシステム
３０６  PDF‐ポストスクリプト印刷フィルタ
３０８  ポストスクリプト‐ラスタ印刷フィルタ
３１２  テキスト‐ポストスクリプト印刷フィルタ
３１４  システム・フィルタ
３１６  プリンタ・ドライバ
３１８  画像‐ポストスクリプト印刷フィルタ
４０２  ユーザーがアプリケーション・プログラムのメニューから「印刷」を選択
４０４  アプリケーション・プログラムが、利用可能な印刷装置のリストを取得
４０６  アプリケーション・プログラムがユーザーに、リストから印刷装置を選択するよう求める
４０８  ユーザーがリストから印刷装置を選択
４１０  アプリケーションが印刷サブシステムに、印刷パスを生成するよう指示
４１２  印刷サブシステムが印刷パスを生成し、その印刷パスにおける印刷フィルタによって明かされる印刷オプションのリストを取得
４１４  アプリケーション・プログラムが印刷オプションをマージ
４１６  アプリケーションが、ブ結果に基づく印刷ダイアログを生成
４１８  ユーザーが、印刷ダイアログから一つまたは複数の印刷オプションを選択
４２０  アプリケーション・プログラムが、選択された印刷オプションに基づいて印刷ストリームを生成し、その印刷ストリームを印刷サブシステムに提出
４２２  印刷サブシステムは印刷ストリームを印刷パスを通じて伝える
４２４  印刷サブシステムは変換された印刷ストリームを選択された印刷装置に送る。
５０２  印刷
５０４  印刷データ・ストリーム提出
５０６  印刷ストリームMIME型検出
５０８  プリンタ選択
５１０  プリンタ選択
５１２  利用可能な全印刷パス印刷オプションを取得
５１４  ユーザー・インターフェースを生成
５１６  ユーザー・インターフェースを表示
５１８  印刷オプションを選択
５２０  アプリケーションが印刷パスを通じて印刷ストリームをPDLに変換
５２２  プリンタに送出
６００  コンピュータ・システム
６０２  バス
６０４  プロセッサ
６０６  メイン・メモリ
６０８  ROM
６１０  記憶デバイス
６１２  ディスプレイ
６１４  入力装置
６１６  カーソル・コントロール
６１８  通信インターフェース
６２０  ネットワーク・リンク
６２２  ローカル・ネットワーク
６２４  ホスト
６２８  インターネット
６３０  サーバー
６２６  ISP
【図１】
0005103339.tif 000002
【図２】
0005103339.tif 000003
【図３】
0005103339.tif 000004
【図４】
0005103339.tif 000005
【図５】
0005103339.tif 000006
【図６】
0005103339.tif 000007