(57)【要約】【課題】印刷ジョブデータのための索引データを提供する方法およびシステムを提供すること。【解決手段】レンダリングされた印刷ジョブデータと共に、印刷ジョブデータのいくつかの特性を記述するメタデータを作成（および消費）する。このメタデータは、レンダリングされたデータと共に、クライアント装置から印刷サーバに提供され、印刷サーバに、印刷ジョブデータの性質またはコンテキストを確認させることができる。いくつかの実施形態において、メタデータは、ページ境界や状態遷移データなどを記述することができる。印刷ジョブデータの性質またはコンテキストを確認することによって、印刷サーバは、この情報に基づいてインテリジェントに動作し、少なくともいくつかの実施形態では、レンダリングされたデータだけが印刷サーバに送られた場合には不可能なはずの追加の印刷サーバ機能を実施することができる。【選択図】図４
2006260536.tif 000002
【特許請求の範囲】
【請求項１】
印刷ジョブに関連付けられたデータを受け取ること、および
前記受け取ったデータを処理して、
少なくともその一部が印刷のために印刷装置に送られるように構成される印刷ジョブ部分と、
前記印刷ジョブ部分の構造を記述するメタデータ部分と
を提供すること
を備えることを特徴とする方法。
【請求項２】
前記印刷ジョブ部分および前記メタデータ部分を印刷サーバに送信することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記受け取る動作は、ページ記述言語データを受け取ることを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記受け取る動作は、中間ページ記述言語データを受け取ることを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記受け取る動作および処理する動作は、少なくとも１つの印刷ドライバによって行われることを特徴とする請求項１に記載の方法。
【請求項６】
前記処理する動作は、
１つまたは複数の状態変更ブロックと、
１つまたは複数の割り込み可能データブロックと、
１つまたは複数の割り込み不能データブロックと
を備える印刷ジョブ部分を提供すること、および
前記印刷ジョブ部分を参照する以下のブロック、すなわち、
ページが前記印刷装置によって解釈され得るように正しい状態を入力するのに必要とされるブロックすべてを参照するページ番号ブロックと、
前記印刷ジョブ部分中の状態ブロックのシーケンスを参照する従属状態ブロック参照ブロックと、
割り込まれ得るデータブロックを参照する割り込み可能データブロック参照ブロックと、
割り込み不能データブロックを参照する割り込み不能データブロック参照ブロックと、
前記印刷装置を特定の状態に復帰させるために、前記印刷ジョブ部分中のどの１つまたは複数のブロックが前記印刷装置に送られる必要があるか識別する状態復帰ブロック参照ブロックと、
前記印刷ジョブ部分に関連付けられた文書の印刷の完了時に、前記印刷装置の状態を打ち切るのに利用されるデータを含む状態シーケンスクローズブロック
の１つまたは複数を備えるメタデータ部分を提供すること
を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記メタデータ部分は索引ストリームを備え、前記状態シーケンスクローズブロックは、前記索引ストリームの前端部に配置されることを特徴とする請求項６に記載の方法。
【請求項８】
少なくともその一部が印刷のために印刷装置に送られるように構成される印刷ジョブ部分と、
前記印刷ジョブ部分の構造を記述するメタデータ部分と
を備える、印刷される文書に関連付けられたデータを受け取ること、
前記印刷ジョブ部分および前記メタデータ部分を処理すること、および
前記印刷ジョブ部分および前記メタデータ部分を処理したことに応答して、１つまたは複数の印刷関連のアクティビティを実施すること
を備えることを特徴とする方法。
【請求項９】
前記印刷ジョブ部分は、
１つまたは複数の状態変更ブロックと、
１つまたは複数の割り込み可能データブロックと、
１つまたは複数の割り込み不能データブロックと
を備え、
前記メタデータ部分は、前記印刷ジョブ部分を参照する以下のブロック、すなわち、
ページが前記印刷装置によって解釈され得るように正しい状態を入力するのに必要とされるブロックすべてを参照するページ番号ブロックと、
前記印刷ジョブ部分中の状態ブロックのシーケンスを参照する従属状態ブロック参照ブロックと、
割り込まれ得るデータブロックを参照する割り込み可能データブロック参照ブロックと、
割り込み不能データブロックを参照する割り込み不能データブロック参照ブロックと、
前記印刷装置を特定の状態に復帰させるために、前記印刷ジョブ部分中のどの１つまたは複数のブロックが前記印刷装置に送られる必要があるか識別する状態復帰ブロック参照ブロックと、
前記印刷ジョブ部分に関連付けられた文書の印刷の完了時に、前記印刷装置の状態を打ち切るのに利用されるデータを含む状態シーケンスクローズブロック
の１つまたは複数を備える
ことを特徴とする請求項８に記載の方法。
【請求項１０】
前記印刷関連のアクティビティの少なくとも１つは、前記印刷ジョブ部分の少なくとも一部を印刷のために印刷装置に送ることを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記印刷関連のアクティビティの少なくとも１つは、前記印刷ジョブ部分の少なくとも一部を印刷のために印刷装置に送ることを含まないことを特徴とする請求項９に記載の方法。
【請求項１２】
前記少なくとも１つの印刷関連のアクティビティは、印刷ジョブをその最初から再開することを必要とせずに、印刷失敗から回復することを含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記少なくとも１つの印刷関連のアクティビティは、前記ページが印刷装置に送信される前にページ全体が確実に識別されるようにすることを含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記少なくとも１つの印刷関連のアクティビティは、印刷ジョブを終了する前に印刷装置が適切な状態に確実に復帰されるようにすることを含むことを特徴とする請求項１１に記載の方法。
【請求項１５】
文書を印刷するのに使用されるように構成された、
レンダリングされたデータを備える印刷ジョブ部分と、
前記印刷ジョブ部分の構造を記述するメタデータ部分と
を備えるデータ構造を具体化したことを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項１６】
前記メタデータ部分は別個のデータストリームを備えることを特徴とする請求項１５に記載のコンピュータ可読媒体。
【請求項１７】
前記印刷ジョブ部分は、１つまたは複数の状態変更ブロック、１つまたは複数の割り込み可能データブロック、および１つまたは複数の割り込み不能データブロックを備えることを特徴とする請求項１５に記載のコンピュータ可読媒体。
【請求項１８】
前記メタデータ部分は、ブロック位置およびブロック範囲を使って前記印刷ジョブ部分のブロックを参照することを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
前記メタデータ部分は、前記印刷ジョブ部分を参照する以下のブロック、すなわち、
ページが前記印刷装置によって解釈され得るように正しい状態を入力するのに必要とされるブロックすべてを参照するページ番号ブロックと、
前記印刷ジョブ部分中の状態ブロックのシーケンスを参照する従属状態ブロック参照ブロックと、
割り込まれ得るデータブロックを参照する割り込み可能データブロック参照ブロックと、
割り込み不能データブロックを参照する割り込み不能データブロック参照ブロックと、
前記印刷装置を特定の状態に復帰させるために、前記印刷ジョブ部分中のどの１つまたは複数のブロックが前記印刷装置に送られる必要があるか識別する状態復帰ブロック参照ブロックと、
前記印刷ジョブ部分に関連付けられた文書の印刷の完了時に、前記印刷装置の状態を打ち切るのに利用されるデータを含む状態シーケンスクローズブロック
の１つまたは複数を備え得ることを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項２０】
前記メタデータ部分は索引ストリームを備え、前記状態シーケンスクローズブロックは、前記索引ストリームの前端部に配置されることを特徴とする請求項１９に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷方法およびシステムに関する。
【背景技術】
【０００２】
印刷サーバは、通常、印刷ジョブを受け取り、それらのジョブを印刷のために印刷装置に送る。印刷装置は、その装置の出力がどのようにして生成され得るか記述するページ記述言語（ＰＤＬ）を理解する。ＰｏｓｔＳｃｒｉｐｔ、ＰＤＦおよび多くのＰＣＬの変形を含めて、多種多様なＰＤＬがある。
【０００３】
また、ＥＭＦ（拡張メタファイル）や、Ａｖａｌｏｎグラフィックプリミティブの持続される形態であるＭｅｔｒｏなど、他のページ記述言語もある。ＥＭＦおよびＭｅｔｒｏは、中間ページ記述言語と呼ばれる。この中間フォーマットは、ドライバによって構文解析され、特定の装置のためのＰＤＬに変換することができる。このプロセスはレンダリングと呼ばれ、生成される出力はレンダリングされた印刷ストリームと呼ばれる。
【０００４】
印刷サーバ上でのレンダリングにはいくつかの欠点がある。例えば、レンダリングはプロセッサ集約的であり、メモリ集約的である。ゆえに、印刷サーバ上でのレンダリングはサーバの性能を低下させ得る。また、大部分の印刷装置は、それらが、当然ながら、その装置がページを出力することのできる速度によって減速されるという点で、入出力の制約がある。
【０００５】
ゆえに、時間が経つにつれて明らかになってきたのは、プロセッサおよびメモリ集約的操作をクライアント側に移動させれば、これらのアクティビティを印刷サーバ上で行うことに関連する性能上の懸念および問題のいくつかを軽減することができるという妥当な認識である。したがって、クライアントは、印刷ジョブを事前にレンダリングし、事前にラスタライズして、サーバがそれを行わなくて済むようにすることができる。
【０００６】
しかしながら、事前にラスタライズされたデータを印刷サーバに送ると高くつくことがある。例えば、エラーの場合、通常は、そのジョブ全体が最初から再開されなければならない。これは、サーバが、通常、エラー状態をデータストリーム中のおおよそのバイトオフセットに相関させることしかできず、エラー状態を特定のページに相関させることも、再開時にその印刷ジョブ中の特定のページにスキップすることもできないからである。さらに、データストリーム中のバイト位置に随意にスキップすることも実際上不可能である。というのは、スキップされるバイトは、印刷装置を後続のバイトの印刷に必要とされる特定の状態にするプリンタコマンドを含み得るからである。ゆえに、ジョブが１００ページの文書の９９ページ目で失敗した場合、１００ページ全部が再度送られる必要がある。
【０００７】
類似の問題がジョブの打ち切りによって任意のバイト位置で生じる。具体的には、いくつかの制御コードが印刷装置の状態を変更していることがある。変更された状態のために、後続の適格なジョブが正しく解釈されないことがある。例えば、ある制御コードは、印刷装置を、それが後続のデータを予測できないバイト数のビットマップであると解釈するモードにすることができる。この制御コードに関連付けられた印刷ジョブが任意に打ち切られた場合、後続の印刷ジョブは、不定数のバイトを、ビットマップであると誤解させることがある。この状況では、サーバは、どのようにして印刷装置を適切な状態に復帰させるか知ることができない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、本発明は、印刷サーバのリソースを効率よく、しかも、印刷サーバに所望の柔軟度を提供するようなやり方で利用する方法およびシステムを提供することに関連する問題から生じたものである。
【課題を解決するための手段】
【０００９】
様々な実施形態は、事前にラスタライズされた印刷ジョブデータと共に、印刷ジョブデータのいくつかの特性を記述するメタデータを作成（および消費）する。このメタデータは、事前にラスタライズされたデータと共に、クライアント装置から印刷サーバに提供され、印刷サーバに、印刷ジョブデータの性質またはコンテキストを確認させることができる。いくつかの実施形態において、メタデータは、ページ境界や状態遷移データなどを記述することができる。印刷ジョブデータの性質またはコンテキストを確認することによって、印刷サーバは、この情報に基づいてインテリジェントに動作し、少なくともいくつかの実施形態では、事前にラスタライズされたデータだけが印刷サーバに送られた場合には不可能なはずの追加の印刷サーバ機能を実施することができる。
【発明を実施するための最良の形態】
【００１０】
概要
以下で説明する様々な実施形態は、レンダリングされた印刷ジョブデータと共に、印刷ジョブデータのいくつかの特性を記述するメタデータを作成する。本明細書のコンテキストにおいて、「レンダリングされた」データは、無制限に、ベクトル部分またはラスタ部分の１つまたは複数を含むデータを含み得る。このメタデータは、レンダリングされたデータと共に、クライアント装置から印刷サーバに提供され、印刷サーバに、印刷ジョブデータの性質またはコンテキストを確認させることができる。いくつかの実施形態において、メタデータは、ページ境界や状態遷移データなどを記述することができる。印刷ジョブデータの性質またはコンテキストを確認することによって、印刷サーバは、この情報に基づいてインテリジェントに動作し、少なくともいくつかの実施形態では、レンダリングされたデータだけが印刷サーバに送られた場合には不可能なはずの追加の印刷サーバ機能を実施することができる。
【００１１】
例えば、メタデータを使って印刷ジョブデータのコンテキストを理解するようにすれば、印刷サーバは、全ページが印刷装置に確実に送られるようにすることができる。例えば、マシン休止状態の間、システムは、休止状態に入る前にあるページ全体が印刷装置に出力されるようにすることができる。また、印刷サーバは、印刷装置が、ジョブを終了する前に、適切な状態に復帰されるようにすることもできる。例えば、ユーザがジョブを再開する場合、システムは、印刷装置を、それが、例えば、ビットマップを含む印刷ストリームを予期している可能性のある状態から復帰させるために正しい制御コードが送られるようにすることができる。また、印刷サーバは、サーバがシャットダウンされる必要があり、または装置がエラー状態であった場合に、所与のページから印刷ジョブを再開することもできる。さらに、印刷サーバは、印刷チェックなどの信頼性の高いシナリオを可能にするために、ページごとに出力を作成することもできる。
【００１２】
ＰＤＬに付随するいくつかの仮定
以下で説明する様々な実施形態は、それらの実施形態が、それと共に用いられる、または用いられ得るＰＤＬに付随するいくつかの仮定に基づくものである。
【００１３】
まず、ＰＤＬは、印刷装置の状態を変更し、または遷移させるがどんな出力も作成しない、明確に定義されたデータブロックを実施するという仮定が行われる。例としてあげるにすぎず限定するものではないが、いくつかの例示的遷移には、フォントダウンロード、モード変更（テキスト符号化からラスタ符号化への変換、グラフィックス属性状態変更（ブラシ、ペンなど）、コードページおよび文字セットモード変更など）、プロシージャ宣言（ＰｏｓｔＳｃｒｉｐｔによって利用されるものなど）、コンテキストスタック操作（ＰｏｓｔＳｃｒｉｐｔによって使用されるものなど）、アフィン変換、イメージストリーム定義、マクロ定義などが含まれる。
【００１４】
別の仮定は、これらのモード変更の少なくともいくつかは一定のバイト数について有効なままであり、次いで、前のモードに復帰し、他のモード変更は、ストリーム中の所与のポイントにおいて適切なデータを送ることによって反転されるというものである。
【００１５】
さらなる仮定が、ＰＤＬは、印刷装置に出力を作成させるデータシーケンスを有するというものである。そのため、データが復号化されるやり方は、前の状態遷移に依存する。例えば、文字シーケンスの出力は、ダウンロードされるフォントに依存するであろう。別の例として、ＰｏｓｔＳｃｒｉｐｔコマンドのシーケンスの解釈は、定義されているプロシージャ宣言に依存する。
【００１６】
さらに別の仮定は、印刷装置に出力を生成させるデータブロックのいくつかは、割り込みされないブロックとして送られなければならないというものである。例えば、ビットマップが印刷装置にダウンロードされている場合、所与のブロックのデータのすべてはビットマップデータとして解釈され、そのシーケンスはエスケープされ得ない。
【００１７】
さらに、ＰＤＬの作成時のプリンタドライバに関する仮定は以下の通りである。ドライバは、出力を作成するために印刷装置の状態を正確に追跡しなければならない。ゆえに、ドライバは、前の状態遷移シーケンスのどれが現在の出力に関連しているか（少なくとも大体は）知っていなければならない。
【００１８】
例示的実施形態
図１は、一般的には１００で、印刷ジョブ部分１０２およびメタデータ部分１０４を備える文書に例示的表現を示す。
【００１９】
この例において、印刷ジョブ部分１０２は、順次のバイトシーケンスの形でレンダリングされたデータを備え、メタデータ部分１０４は、印刷ジョブ部分への索引を提供する索引ストリームを備える。この特定の例において、印刷ジョブ部分１０２は、不変状態のままとされる。すなわち、印刷ジョブ部分は、未処理の事前にラスタライズされたデータを備える。このようにする１つの理由は、当業者により理解されるように、それが、事前にラスタライズされたデータを非常に好都合な仕方で処理させることを可能にすることである。具体的には、少なくともいくつかのオペレーティングシステムにおいて、印刷ジョブストリームの各シーケンスは、データをプロセス空間にコピーすることを必要とせずに、メモリにメモリマップされ、次いで、カーネルに書き出されるようにできる。
【００２０】
索引ストリームは、この例において、状態遷移、割り込み不能および割り込み可能データブロック部分およびページ番号を記述する。
【００２１】
メタデータ部分１０４は別個のストリームとして示されているが、そうである必要はないことを諒解し、理解すべきである。例えば、メタデータ部分は、印刷ジョブ部分の一部とインターリーブされ、または別のやり方でそれを含むことができる。
【００２２】
印刷ジョブ部分の構成部分
図示し、説明する実施形態において、印刷ジョブ部分１０２は未分化の（ｕｎｄｉｆｆｅｒｅｎｔｉａｔｅｄ）バイトシーケンスを備え、図１のキーに指示するように、以下の論理ブロックを含む。状態変更ブロックは、結果として印刷装置が前述のように状態を変更することになるバイトシーケンスである。データブロックは割り込み可能なブロックであり、このブロックを終了させる１組の制御文字を受け取ることができる。割り込み不能データブロックは、データストリーム内でエスケープされ得ないデータブロックである（例えば、ＰＣＬのビットマップは割り込み不能データブロックを構成する）。
【００２３】
印刷ジョブ部分が印刷サーバに送られると、結果として文書が印刷装置に出力される。
【００２４】
メタデータ部分の構成部分
図示し、説明する実施形態において、メタデータ部分１０４は、印刷ジョブ部分の構造を記録し、印刷ジョブ部分への索引を提供する。この例において、メタデータ部分１０４は、索引ストリームを備え、図１のキーに指示するように、ブロックシーケンスを備える。一実施形態において、索引ストリームは、ページに迅速に索引付けするために、ルックアップテーブルで終わらせることができる。索引ストリームは、少なくともいくつかの実施形態では、それが参照するＰＤＬと無関係な、明確に定義されたフォーマットを構成する。図示し、説明する実施形態において、索引ストリームは、印刷ジョブ部分の様々なブロックを指定するのに、位置および範囲の概念を使って印刷ジョブ部分のブロックを参照する。ゆえに、ブロックの位置を使用すれば、ブロックの正しい場所または開始点を確認することができる。関連付けられた範囲（特定の位置に関連するバイト数など）を使用すれば、特定の部分の範囲を確認することができる。
【００２５】
図示し、説明する実施形態において、索引ストリームを備えるブロックは以下の通りである。
【００２６】
ページ番号ブロックは、ページが印刷装置によって解釈されることができるように正しい状態を入力するのに必要とされるブロックすべてを参照するブロックである。このブロックは、そのページデータのどの部分が割り込み不能なブロックを参照するか識別する。また、このブロックは、印刷装置をその通常の状態に復帰させるために送られなければならないブロックも参照する。少なくともいくつかの実施形態において、システムは、ページを出力し、印刷装置を通常の状態に復帰させるのに必要なブロックすべてが受け取られるまで、ページの出力を開始しない。
【００２７】
従属状態ブロック参照ブロックは、印刷ジョブ部分１０２中のおそらく隣接しない状態ブロックのシーケンスを参照するブロックである。様々な状態の例は前述されている。少なくともいくつかの実施形態においては、印刷ジョブ部分に、必ずしも、ブロックを、状態遷移ブロック（またはそのための他の任意の種類のブロック）として識別するものがないことを諒解し、理解すべきである。印刷ジョブ部分のブロックの種類がわかるのは、従属状態ブロック参照ブロックによって提供される参照によってである。
【００２８】
割り込み可能データブロック参照ブロックは、印刷ジョブ部分のデータブロックを参照し、割り込み可能データブロックの直後に続くブロックが印刷装置に送られる場合には、そのブロックが正しく解釈されると指示するブロックである。すなわち、割り込み可能データブロック参照ブロックによって参照されるブロックは、直後に続くブロックを損なわずにエスケープすることができる。割り込み可能データブロック参照ブロックの後の次のブロックは、状態遷移ブロックである可能性が高い。
【００２９】
割り込み不能データブロック参照ブロックは、印刷ジョブ部分中の割り込み不能データブロックを識別するブロックである。すなわち、割り込み不能データブロックは、可能な限り、その全体が印刷装置に送られなければならない。その出力は、データが中間ブロックをスキップして後続ブロックに進む場合、意味を持たない。これらの種類の参照ブロックは、通常、その中にエスケープを含むことのできない（ビットマップなどの）カプセル化データブロックを識別するのに使用することができる。また、これらの種類のブロックは、エスケープを識別するのにも使用することができる。
【００３０】
状態復帰ブロック参照ブロックは、印刷ジョブ部分中のどの１つまたは複数のブロックが、印刷装置を特定の状態に復帰させるために印刷装置に送られる必要があるか識別する。
【００３１】
状態シーケンスクローズブロックは、印刷ジョブ部分１０２に関連付けられた文書の印刷の完了時に印刷装置の状態を打ち切るのに利用されるデータを含む。索引ストリームに状態シーケンスクローズブロックを組み込めば、印刷ジョブ部分１０２に関連付けられる順序付け問題を解決するのに役立つ。具体的に、以下を考える。印刷ジョブ部分１０２の未処理ストリームが、その先頭に、その文書の終わりまで留まる状態変更を含むと仮定する。印刷ジョブ部分１０２の最後に、この状態を打ち切るために状態シーケンスクローズブロックが設けられる。印刷ジョブ部分１０２でこの状態シーケンスクローズブロックが設けられる唯一の場所は、印刷ジョブ部分の最後である。性能および簡潔さのために、多くのシステムにおいて、印刷サーバは、ページのブロックすべて、およびその状態復帰ブロックが受け取られるまで、ページ送信を開始しない。印刷ジョブ部分の最後を除いて、状態復帰シーケンスを挿入する場所がないため、１つの解決法は、必要に応じて索引ストリームに状態シーケンスクローズを挿入し、次いで、索引ストリームの状態復帰ブロック参照ブロックに、（図１の索引ストリームの最後のブロックが参照するように）印刷ジョブ部分中のブロック、またはより典型的には、（ページ０および１の状態復帰ブロックが参照するように）索引ストリーム中のブロックを参照させることである。
【００３２】
印刷ジョブ部分１０２およびメタデータ部分１０４を使って、印刷システムのコンポーネントは、印刷ジョブ部分の任意のページを処理し、文書中の任意の割り込みポイントから回復することができ、現在の割り込み不能ブロックが常に完了まで処理されるようにすることができる。したがって、印刷システムは、一般に、印刷装置が、それが任意の時点において新しいジョブを受け取ることのできる状態に復帰されることを保証することができる。
【００３３】
印刷ジョブおよびメタデータ部分を生成する例示的システム
図２に、前述の印刷ジョブ部分およびメタデータ部分を生成するのに利用され得るクライアント装置２００の一実施形態の例示的コンポーネントを示す。
【００３４】
この例において、クライアント装置２００は、特に、印刷ジョブに関連付けられた中間フォーマットデータを受け取ることのできる何らかの種類のコンピュータ可読媒体２０２を備える。パイプラインマネージャ２０４は、中間フォーマットデータを処理するコンポーネントのパイプラインを管理する。この例において、コンポーネントパイプラインは、いくつかのフィルタを備えるフィルタ部品２０６、ならびにドライバ２０８を備える。この例において、ドライバ２０８は、中間フォーマットデータを処理してレンダリングされた印刷ジョブ部分およびメタデータ部分にするように構成される。当業者により理解されるように、ドライバは、中間フォーマットをレンダリングされた状態に変換することができる限りにおいて中間フォーマットの構造および処理要件に関して熟知しているため、ドライバがメタデータ部分の構成部分についても熟知している場合、ドライバは、中間フォーマットを処理してそのレンダリングされた形にする際に、メタデータ部分を適切に構築することができる。
【００３５】
次いで、出力ジョブフィルタ２１０は、印刷ジョブとメタデータ部分の両方を受け取り、データを印刷サーバへの送信のために適切にパッケージすることができる。
【００３６】
そうではなく、ドライバがメタデータ部分を生成するように構成されていない場合には、ドライバと出力ジョブフィルタの間にインタープリタコンポーネントが挿入され得る。この場合、ドライバは、中間フォーマットを処理してレンダリングされたデータにし、そのデータをインタープリタコンポーネントに提供することができる。インタープリタコンポーネントは、さらに、レンダリングされたデータを処理して、レンダリングされたデータに加えてメタデータ部分を提供することができ、次いで、その両方を出力ジョブフィルタに送ることができる。この特定の実施形態は、メタデータ部分を生成するように構成されていない既存のドライバの状況で用いることができる。また、この実施形態は、メタデータ部分の生成をサポートするドライバを製造することを望まないことのある独立ハードウェア販売会社（ＩＨＶ）にも柔軟性を提供する。
【００３７】
印刷ジョブおよびメタデータ部分を消費する例示的システム
図３に、前述の印刷ジョブ部分およびメタデータ部分を消費するのに利用され得る印刷サーバ３００の一実施形態の例示的コンポーネントを示す。
【００３８】
この例において、印刷サーバ３００は、特に、受信器コンポーネント３０２、入力装置アダプタ３０４、プロトコルアダプタ、パイプラインマネージャ３０８、スケジューラ３１０および１つまたは複数の論理ジョブオブジェクト３１２を備える。
【００３９】
この特定の実施形態において、入力装置アダプタ３０４は、それが受け取るメタデータ部分または索引ストリームを理解するように構成される。このようにして、システムのその他のコンポーネントは、メタデータ部分に関与することを必要とされない。
【００４０】
動作に際して、受信器コンポーネント３０２は、クライアント装置から、レンダリングされたデータおよび索引ストリームを含む印刷ジョブを受け取り、そのジョブの様々な部分をディスクに書き出す。ここでは、受信器コンポーネントは、印刷ジョブ部分（すなわちレンダリングされたデータ）およびメタデータ部分（すなわち索引ストリーム）をディスクに書き出す。クライアントから印刷ジョブを受け取ることに関連して、受信器コンポーネントは、印刷ジョブの状況をその印刷サーバによる処理全体を通して編成し、維持するのに利用される論理ジョブオブジェクト３１２をインスタンス化する。
【００４１】
入力装置アダプタ３０４は、印刷ジョブ部分とメタデータ部分の両方を受け取り、前述のように、メタデータ部分を理解するように構成される。印刷ジョブを印刷する用意ができると、スケジューラ３１０は、パイプライン／パイプラインマネージャ３０８をインスタンス化し、次いでそれが関連付けられた文書の印刷を管理する。
【００４２】
次いで、入力装置アダプタ３０４は、印刷装置に印刷データを伝達する役割を果たすプロトコルアダプタ３０６に印刷ジョブ部分を伝達する。入力装置アダプタ３０４は、索引ストリームを解釈し、そのページのデータすべてが利用可能になったときにはじめて、ページを送る。ゆえに、入力装置アダプタ３０４は、関連付けられたページデータをプロトコルアダプタ３０６に送る前に、特定のページについてそのデータのすべてが利用可能であるように索引ストリームを監視する。プロトコルアダプタ３０６は、入力装置アダプタ３０４からページデータを受け取り、そのデータを印刷装置にしかるべく伝達する役割を果たす。
【００４３】
失敗した場合、プロトコルアダプタ３０６は、パイプラインマネージャ３０８にその失敗を通知し、次いで、パイプラインマネージャ３０８は、これを入力アダプタ３０４に伝達する。次いで、入力装置アダプタ３０４は、この情報を論理ジョブオブジェクト３１２に書き戻し、次いで、失敗からの回復に取りかかる。このために、入力装置アダプタ３０４は、索引ストリームを使ってレンダリングされたデータの失敗のところの、または失敗の前の適切なポイントまで戻り、その失敗を訂正する。これが行われた後、入力装置アダプタは、論理ジョブオブジェクト３１２を更新し、印刷が続行し得るように適切なデータをプロトコルアダプタ３０６に伝達することができる。
【００４４】
例示的方法
図４は、一実施形態による方法におけるステップを記述する流れ図である。この方法は、任意の適切なハードウェア、ソフトウェア、ファームウェアまたはそれらの組み合わせと関連させて実施され得る。図示の例において、この方法は、適切に構成されたクライアント装置によって行われる動作と、適切に構成された印刷サーバによって行われる動作とに分けられる。クライアント装置および印刷サーバの例は、それぞれ、前述の図２および３に示されている。これらの例は例を構成するにすぎず、特許請求される内容の適用を限定するためのものではないことを諒解し、理解すべきである。むしろ、特許請求される内容の精神および範囲を逸脱することなく、他の様々な種類のクライアント装置および印刷サーバも利用することができる。
【００４５】
ステップ４００は、印刷ジョブに関連付けられたデータを受け取る。データは、いくつか例をあげると、ＰｏｓｔＳｃｒｉｐｔ、ＰＤＦ、および／または多くのＰＣＬの変形といった任意の適切なページ記述言語などの任意の適切な形を取り得る。また、当業者により理解されるように、そのようなデータは、拡張メタファイル（ＥＭＦ）や（Ａｖａｌｏｎグラフィックプリミティブの持続される形である）Ｍｅｔｒｏなどの中間ページ記述言語の形も取り得る。
【００４６】
ステップ４０２は、このデータを処理して印刷ジョブ部分およびメタデータ部分を提供する。図示し、説明する実施形態において、印刷ジョブ部分はレンダリングされたデータを備え、メタデータ部分は印刷ジョブ部分の構造を記述し、印刷ジョブ部分への索引を提供する。このステップは、任意の適切なやり方で実施され得る。例えば、このステップは、印刷ドライバ２０８（図２）など、適切に構成された印刷ドライバによって実施され得る。代替として、またはそれに加えて、このステップは、前述のように、印刷ドライバとインタープリタコンポーネントによっても実施することができる。
【００４７】
また、メタデータ部分は、任意の適切な形または構造を呈し得る。しかし、そのようなメタデータ部分の一例は、前述の図１に関連して示され、論じられている。図１の例は、一例を構成するにすぎず、特許請求される内容の適用を限定するためのものではないことを諒解し、理解すべきである。
【００４８】
ステップ４０４は、印刷ジョブ部分およびメタデータ部分を印刷サーバに送信する。
【００４９】
印刷サーバによって行われるステップ４０６は、印刷ジョブ部分およびメタデータ部分を受け取る。ステップ４０８は、印刷ジョブ部分およびメタデータ部分を処理し、それに応答して、印刷関連のアクティビティを実施する。印刷関連のアクティビティの例は前述されており、それらには、いくつか例をあげると、無制限に、印刷ジョブを最初から再開する必要のある失敗から回復すること、印刷装置への送信のために全ページが識別されるようにすること、ジョブを終了し、ページを間違った順序で印刷する前に、印刷装置が適切な状態に復帰されるようにすることが含まれ得る。
【００５０】
ステップ４１０は、印刷ジョブ部分の少なくとも一部を印刷のために印刷装置に送る。このステップがステップ４０８との関連で、またはその一部として実行され得ることを理解すべきである。このステップを別個に記述するのは、例えば、失敗から回復することや、印刷装置を適切な状態に置くことなど、ステップ４０８によって実行される印刷関連のアクティビティの少なくともいくつかは、必ずしも、印刷ジョブ部分の一部を印刷装置に送ることを必要としないことを明確にするためである。
【００５１】
例示的クライアント装置／印刷サーバコンポーネント
図５に、図２のクライアント装置と図３の印刷サーバの両方で前述の実施形態を実施するのに用いられ得るコンポーネントを備える例示的コンピュータ装置を示す。
【００５２】
コンピュータ装置５４２は、１つまたは複数のプロセッサまたは処理装置５４４、システムメモリ５４６、およびシステムメモリ５４６を含む様々なコンポーネントをプロセッサ５４４に結合するバス５４８を備える。バス５４８は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート、およびプロセッサまたはローカルバスを含む、数種類のバス構造のいずれかの１つまたは複数を表す。システムメモリ５４６は、読出し専用メモリ（ＲＯＭ）５５０およびランダムアクセスメモリ（ＲＡＭ）５５２を備える。基本入出力システム（ＢＩＯＳ）５５４は、始動時などに、コンピュータ装置５４２内の要素間での情報転送を支援する基本ルーチンを含み、ＲＯＭ５５０に格納される。
【００５３】
コンピュータ装置５４２は、さらに、ハードディスク（図示せず）との間で読取りおよび書込みを行うハードディスクドライブ５５６、取り外し可能磁気ディスク５６０との間で読取りおよび書込みを行う磁気ディスクドライブ５５８、ならびにＣＤ‐ＲＯＭや他の光メディアなどの取り外し可能光ディスク５６４との間で読取りまたは書込みを行う光ディスクドライブ５６２を備え得る。ハードディスクドライブ５５６、磁気ディスクドライブ５５８、および光ディスクドライブ５６２は、ＳＣＳＩインターフェース５６６または他の何らかの適切なインターフェースによってバス５４８に接続される。各ドライブおよびそれらに関連付けられたコンピュータ可読媒体は、コンピュータ５４２のためのコンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータの不揮発性記憶を提供する。本明細書で説明する例示的環境はハードディスクドライブ、取り外し可能磁気ディスク５６０および取り外し可能光ディスク５６４を用いるが、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）など、コンピュータによりアクセス可能なデータを格納し得る他の種類のコンピュータ可読媒体も例示的動作環境で使用され得ることが当業者には理解されるはずである。
【００５４】
ハードディスク５５６、磁気ディスク５６０、光ディスク５６４、ＲＯＭ５５０、またはＲＡＭ５５２には、オペレーティングシステム５７０、（ユーザエージェントやブラウザなど）１つまたは複数のアプリケーションプログラム５７２、その他のプログラムモジュール５７４、およびプログラム  データ５７６を含めて、いくつかのプログラムモジュールが格納され得る。ユーザは、キーボード５７８やポインティングデバイス５８０などの入力装置を介してコンピュータ５４２にコマンドおよび情報を入力することができる。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。上記その他の入力装置は、バス５４８に結合されたインターフェース５８２を介して処理装置５４４に接続される。また、モニタ５８４または他の種類の表示装置も、ビデオアダプタ５８６などのインターフェースを介してバス５４８に接続される。モニタに加えて、パーソナルコンピュータは、通常、スピーカや印刷装置など、他の周辺出力装置（図示せず）も備える。
【００５５】
コンピュータ５４２は、一般に、さらに１つまたは複数の印刷装置に接続される印刷サーバ５８８など、１つまたは複数のリモートコンピュータへの論理接続を使用するネットワークで接続された環境で動作する。印刷サーバ５８８は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の一般のネットワークノードとすることができ、通常は、コンピュータ５４２に関連して説明した要素の多くまたはすべてを備える。図５に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）５９０および広域ネットワーク（ＷＡＮ）５９２を含む。そのようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、インターネットではよく見られるものである。
【００５６】
ＬＡＮネットワーク環境で使用されるとき、コンピュータ５４２は、ネットワークインターフェースまたはアダプタ５９４を介してネットワークに接続される。ＷＡＮネットワーク環境で使用されるとき、コンピュータ５４２は、通常、モデム５９６、または、インターネットなどの広域ネットワーク５９２を介して通信を確立する他の手段を備える。モデム５９６は、内蔵でも外付けでもよく、シリアルポートインターフェース５６８を介してバス５４８に接続される。ネットワークで接続された環境では、パーソナルコンピュータ５４２に関連して示すプログラムモジュール、またはその一部は、リモートメモリ記憶装置にも格納され得る。図示のネットワーク接続は例示であり、コンピュータ間で通信リンクを確立する他の方法も使用され得ることが理解されるであろう。
【００５７】
一般に、コンピュータ５４２のデータプロセッサは、様々な時に、コンピュータの様々なコンピュータ可読記憶媒体に格納される命令によってプログラムされる。プログラムおよびオペレーティングシステムは、通常、例えば、フロッピー（登録商標）ディスクやＣＤ‐ＲＯＭなどで配布される。そこから、それらはコンピュータの２次メモリにインストールされ、またはロードされる。実行時、それらは、少なくとも一部、コンピュータの１次電子メモリにロードされる。本明細書で説明するシステムは、マイクロプロセッサまたは他のデータプロセッサと併せて、上記その他の様々な種類のコンピュータ可読記憶媒体が前述のブロックを実施する命令またはプログラムを含むときに、そのような媒体を備える。また、前述のシステムは、本明細書で説明する方法および技法に従ってプログラムされるとき、そのコンピュータ自体も含むことができる。
【００５８】
図示のために、オペレーティングシステムなどプログラムおよび他の実行可能プログラムを、本明細書では、別個のブロックとして示しているが、そのようなプログラムおよびコンポーネントは、様々な時に、コンピュータの様々な記憶コンポーネントにあり、コンピュータの（１つまたは複数の）データプロセッサによって実行されることが理解される。
【００５９】
拡張または変形
前述の例において、メタデータ部分１０４（図１）は索引ストリームの状況で説明された。前述のように、この索引ストリームは、別個のストリームを含むこともでき、あるいは、代替として、レンダリングされた印刷ジョブ部分とインターリーブされることも可能である。また、メタデータ部分は、特許請求される内容の精神および範囲を逸脱することなく、他の形を取ることもできる。例えば、印刷ジョブ言語（ＰＪＬ）と呼ばれる言語では、メタデータ部分は、適切に構成された印刷装置によって無視される、ＰＪＬコマンドとして実施され得る。
【００６０】
結論
様々な実施形態は、レンダリングされた印刷ジョブデータと共に、印刷ジョブデータのいくつかの特性を記述するメタデータを作成（および消費）する。このメタデータは、レンダリングされたデータと共に、クライアント装置から印刷サーバに提供され、印刷サーバに、印刷ジョブデータの性質またはコンテキストを確認させることができる。いくつかの実施形態において、メタデータは、ページ境界や状態遷移データなどを記述することができる。印刷ジョブデータの性質またはコンテキストを確認することによって、印刷サーバは、この情報に基づいてインテリジェントに動作し、少なくともいくつかの実施形態では、レンダリングされたデータだけが印刷サーバに送られた場合には不可能なはずの追加の印刷サーバ機能を実施することができる。
【００６１】
以上、本発明を構造的特徴および／または方法ステップに特有の言語で説明したが、添付の特許請求の範囲で定義される本発明は、必ずしも、前述の具体的特徴またはステップに限定されるものではないことを理解すべきである。そうではなく、これらの具体的特徴およびステップは、特許請求される本発明を実施する好ましい形態として開示されるものである。
【図面の簡単な説明】
【００６２】
【図１】一実施形態による、印刷ジョブ部分およびメタデータ部分を備える文書の例示的表現を示す図である。
【図２】一実施形態によるクライアント装置の例示的コンポーネントを示す図である。
【図３】一実施形態による印刷サーバの例示的コンポーネントを示す図である。
【図４】一実施形態による方法におけるステップを記述する流れ図である。
【図５】図２のクライアント装置と図３の印刷サーバの両方で様々な実施形態を実施するのに用いられ得るコンポーネントを備える例示的コンピュータ装置を示す図である。
【符号の説明】
【００６３】
２００  クライアント装置
２０２  コンピュータ可読媒体
２０４  パイプラインマネージャ
２０６  フィルタ部品
２０８  ドライバ
２１０  出力ジョブフィルタ
５４２  コンピュータ装置
５４４  処理装置
５４６  システムメモリ
５４８  バス
５５６  ハードディスクドライブ
５５８  磁気ディスクドライブ
５６０  取り外し可能磁気ディスク
５６２  光ディスクドライブ
５６４  取り外し可能光ディスク
５６６  ＳＣＳＩインターフェース
５６８  シリアルポート
５７０  オペレーティングシステム
５７２  アプリケーションプログラム
５７４  その他のモジュール
５７６  プログラム  データ
５７８  キーボード
５８０  ポインティングデバイス
５８２  キーボード／マウスインターフェース
５８４  モニタ
５８６  ビデオアダプタ
５８８  印刷サーバ
５９０  ローカルエリアネットワーク
５９２  広域ネットワーク
５９４  ネットワークインターフェース
５９６  モデム
【図１】
2006260536.tif 000003
【図２】
2006260536.tif 000004
【図３】
2006260536.tif 000005
【図４】
2006260536.tif 000006
【図５】
2006260536.tif 000007