ネットワーク化されたクライアントコンピュータ、ターゲットとなるネットワーク化されたプリンタデバイス、およびプリントサーバコンピュータを含むネットワーク上でドキュメントをリモートに印刷する方法であって、前記プリントサーバコンピュータによって適用される前記ターゲットとなるネットワーク化されたプリンタデバイスの管理設定を前記クライアントコンピュータ上に格納するステップと、前記クライアントコンピュータ上の同期マネジャを使用して、前記格納された管理設定を更新して、現在のプリントサーバコンピュータの管理設定との同期を維持するステップと、前記格納された管理設定を前記クライアントコンピュータ上で前記ドキュメントに適用するステップと、前記クライアントコンピュータ上で、前記ドキュメントを前記ターゲットとなるネットワーク化されたプリンタデバイスのネイティブプリンタ言語でレンダリングするステップと、前記レンダリングしたドキュメントを前記プリントサーバコンピュータに送信するステップとを備えることを特徴とする方法。前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップと前記レンダリングしたドキュメントを送信するステップは、実質的に同時に行われることを特徴とする請求項1に記載の方法。前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップは、前記プリントサーバコンピュータが使用可能でない時には前記ネットワークをポーリングして前記プリントサーバコンピュータが使用可能になるときを判定するステップをさらに備えることを特徴とする請求項2に記載の方法。前記ネットワークをポーリングするステップは、前記プリントサーバコンピュータが使用可能である可能性があることを示すデバイスおよびネットワークアクティビティに応答して前記プリントサーバコンピュータをポーリングするステップをさらに備えることを特徴とする請求項3に記載の方法。前記ネットワークをポーリングするステップは、前記ネットワークを定期的にポーリングするステップをさらに備えることを特徴とする請求項3に記載の方法。前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップは、ローカル印刷機能を利用することを特徴とする請求項1に記載の方法。前記レンダリングしたドキュメントを前記プリントサーバコンピュータに送信するステップは、ローカル印刷機能を利用することを特徴とする請求項6に記載の方法。前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップは、非同期に行われることを特徴とする請求項1に記載の方法。前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップは、前記ドキュメントをキューに加えるステップを含むことを特徴とする請求項1に記載の方法。前記管理設定を更新するステップは、クライアントコンピュータ上で前記ターゲットとなるネットワーク化されたプリンタデバイスを登録することと関連して最初に行われることを特徴とする請求項1に記載の方法。前記格納された管理設定を前記ドキュメントに適用するステップは、前記プリントサーバコンピュータが使用可能でない場合は、前記格納された設定を前記ドキュメントに適用するステップをさらに備えることを特徴とする請求項1に記載の方法。前記格納された管理設定を前記ドキュメントに適用するステップは、前記プリントサーバコンピュータが使用可能である場合は、前記格納された管理設定を前記ドキュメントに適用する前に前記格納された管理設定を更新するステップを行うステップをさらに備えることを特徴とする請求項1に記載の方法。アプリケーションがドキュメントを印刷するコマンドを発行することに応答してクライアントサイドの印刷レンダリングを容易にするネットワークの中のクライアントコンピュータシステムであって、前記印刷コマンドを処理および解釈するオペレーティングシステムと、指定されるターゲットとなるネットワーク化されたプリンタデバイスに応じて前記印刷コマンドをリモート印刷サブシステムにルーティングするプリンティングルータと、プリントサーバコンピュータから受け取った管理設定を格納し、ネイティブプリンタ言語に変換された前記ドキュメントを前記プリントサーバコンピュータに転送する前記リモート印刷サブシステムと、前記格納された管理設定を前記ドキュメントに適用し、前記ターゲットとなるネットワーク化されたプリンタデバイスによって利用される前記ネイティブプリンタ言語に従って前記ドキュメントを変換するレンダリングサブシステムと、前記プリントサーバコンピュータに、前記ターゲットとなるネットワーク化されたプリンタデバイスの現在の管理設定を要求する同期マネジャとを備えたことを特徴とするコンピュータシステム。前記同期マネジャは、前記現在の管理設定を定期的に要求することを特徴とする請求項13に記載のコンピュータシステム。前記同期マネジャは、前記レンダリングサブシステムが前記格納された管理設定を適用する前に前記現在の管理設定を要求することを特徴とする請求項13に記載のコンピュータシステム。前記プリントサーバコンピュータが使用可能でない場合に前記プリントサーバコンピュータをポーリングする到達可能性イベントシステムをさらに備えたことを特徴とする請求項13に記載のコンピュータシステム。前記到達可能性イベントシステムは、前記プリントサーバコンピュータを定期的にポーリングすることを特徴とする請求項16に記載のコンピュータシステム。前記到達可能性イベントシステムは、前記プリントサーバコンピュータが使用可能である可能性があることを示すデバイスおよびネットワークのアクティビティに応答して前記プリントサーバコンピュータをポーリングすることを特徴とする請求項16に記載のコンピュータシステム。ネットワーク化されたクライアントコンピュータ、ターゲットとなるネットワーク化されたプリンタデバイス、およびプリントサーバコンピュータを含むネットワーク上でドキュメントをリモートに印刷する方法を行うコンピュータ実行可能命令を備えるコンピュータ可読媒体であって、前記方法は、前記プリントサーバコンピュータによって適用される前記ターゲットとなるネットワーク化されたプリンタデバイスの管理設定を前記クライアントコンピュータ上に格納するステップと、前記クライアントコンピュータ上の同期マネジャを使用して、前記格納された管理設定を更新して、現在のプリントサーバコンピュータの管理設定との同期を維持するステップと、前記格納された管理設定を前記クライアントコンピュータ上で前記ドキュメントに適用するステップと、前記クライアントコンピュータ上で、前記ドキュメントを前記ターゲットとなるネットワーク化されたプリンタデバイスのネイティブプリンタ言語でレンダリングするステップと、前記レンダリングしたドキュメントを前記プリントサーバコンピュータに送信するステップとを備えたことを特徴とするコンピュータ可読媒体。前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップは、前記プリントサーバコンピュータが使用可能でない時には前記ネットワークをポーリングして前記プリントサーバコンピュータが使用可能になるときを判定するステップをさらに備えたことを特徴とする請求項19に記載のコンピュータ可読媒体。前記ネットワークをポーリングするステップは、前記プリントサーバコンピュータが使用可能である可能性があることを示すデバイスおよびネットワークアクティビティに応答して前記プリントサーバコンピュータをポーリングするステップをさらに備えたことを特徴とする請求項20に記載のコンピュータ可読媒体。前記ネットワークをポーリングするステップは、前記ネットワークを定期的にポーリングするステップをさらに備えたことを特徴とする請求項20に記載のコンピュータ可読媒体。前記格納された管理設定を前記ドキュメントに適用するステップは、前記プリントサーバコンピュータが使用可能でない場合は前記格納された設定を前記ドキュメントに適用するステップをさらに備えたことを特徴とする請求項19に記載のコンピュータ可読媒体。前記格納された管理設定を前記ドキュメントに適用するステップは、前記プリントサーバコンピュータが使用可能である場合は、前記格納された管理設定を前記ドキュメントに適用する前に前記格納された管理設定を更新するステップを行うステップをさらに備えたことを特徴とする請求項19に記載のコンピュータ可読媒体。アプリケーションがドキュメントを印刷するコマンドを発行するのに応答してクライアントサイドの印刷レンダリングを容易にするネットワークシステムであって、クライアントコンピュータであって、前記印刷コマンドを処理および解釈するオペレーティングシステムと、指定されるターゲットとなるネットワーク化されたプリンタデバイスに応じて前記印刷コマンドをリモート印刷サブシステムにルーティングするプリンティングルータと、プリントサーバコンピュータから受け取った管理設定を格納し、ネイティブプリンタ言語に変換された前記ドキュメントを前記プリントサーバコンピュータに転送する前記リモート印刷サブシステムと、前記格納された管理設定を前記ドキュメントに適用し、前記ターゲットとなるネットワーク化されたプリンタデバイスによって利用される前記ネイティブプリンタ言語に従って前記ドキュメントを変換するレンダリングサブシステムと、前記ターゲットとなるネットワーク化されたプリンタデバイスの現在の管理設定を前記プリントサーバコンピュータに要求する同期マネジャとを備えたクライアントコンピュータと、前記ターゲットとなるネットワーク化されたプリンタデバイスの前記現在の管理設定を保持し、要求を受信すると前記現在の管理設定を前記クライアントコンピュータに送信し、前記変換したドキュメントを前記ターゲットとなるネットワーク化されたプリンタデバイスに転送する前記プリントサーバコンピュータと、前記変換されたドキュメントから出力を作成する前記ターゲットとなるネットワーク化されたプリンタデバイスとを備えたことを特徴とするネットワークシステム。この軽いクライアントと重いサーバの技術には、いくつかの関連した問題が伴う。このリソース集約的なサーバサイドのレンダリングに伴う最も顕著な問題は、サーバネットワークのスケーリングが困難な点である。クライアントはほとんど印刷機能を提供せず、それらのタスクが代わりにサーバに課されるので、サーバの過負荷を避けるために、プリントサーバに接続されてアクティブに印刷を行うクライアントの数を厳重に制限しなければならない。別の問題点は、クライアントに通知することなく印刷ジョブがサーバに到達した際に管理設定およびプリンタ設定の適用に伴う。どの管理設定が有効であるかをクライアントが知らない場合、実際のプリント出力が予期しないものになる可能性がある。一般的なプリントネットワークのさらに別の欠点は、クライアントが、特定のプリンタのドライバが指定する中間データフォーマットで印刷ジョブを送信する場合に生じる。何らかの理由で、格納されたプリンタドライバがサーバとクライアントとで異なる場合、サーバによるその中間データフォーマットの翻訳が失敗し、低質な印刷パフォーマンスとなる恐れがある。最後に、印刷ジョブはサーバでのみキューに入れられるので、サーバサイドのレンダリングによりオフライン印刷が妨げられる。典型的なプリントネットワークでは、サーバがオフライン状態になると、クライアントは、そのサーバに接続されたプリンタを使用することができないだけでなく、そのオフラインプリンタに対してドキュメントをキューに入れることもできなくなるであろう。したがって、サーバが再び使用可能になった時に、特定のドキュメントを印刷する責任はそのクライアントのユーザに課せられることになる。いくつかのプリントネットワークの実装により、これらの問題のすべてではないが一部は解決された。そのため、たとえば、一部のプリントネットワークではクライアントサイドのレンダリングがサポートされている。クライアントサイドのレンダリングの実装では、プリントサーバが印刷ジョブを適切なプリンタにルートするが、中間データフォーマットのドキュメントからネイティブのプリンタ言語へのレンダリングをクライアントが行う。クライアントは、このプリンタフォーマットのドキュメントをプリントサーバに渡すことができるが、クライアントが意図するフォーマッティングが、サーバに格納された管理設定に正しく適用されない可能性があるという問題が残る。また、クライアントによるドキュメントのオフラインレンダリングは管理上の委任統治administrativemandatesに違反する可能性があり、そのため使用不可にされることが多い。他のプリントネットワークでは、管理設定をクライアントに通信するが、クライアントはドキュメントをレンダリングすることができず、代わりに中間のデータフォーマットをレンダリングのためにプリントサーバに送信する。こうしたネットワークでは上の段落で述べた問題の多くが残る。こうしたネットワークでは、ドキュメントをレンダリングするタスクがなおサーバの負担となるのでプリントサーバのスケーリングはほぼ不可能であり、サーバとクライアントのプリントドライバを常に一致させなければならない。この結果、自動化された透過的な印刷の解決法としての、オフライン印刷をサポートするプリントネットワークが必要とされている。本発明は、レンダリングした印刷ジョブをプリントサーバに送る前に、クライアントに格納された管理設定を使用してクライアント上で印刷ジョブをキューに入れ、レンダリングすることを対象とする。本発明はさらに、プリントサーバが使用可能でない時にユーザが印刷コマンドし、およびプリントサーバが再び使用可能になるとその印刷ジョブを適切なプリントサーバを通じてルーティングできるようにすることを対象とする。本発明の一実施形態では、クライアントはネットワークを通じて、少なくとも1つのプリンタへのアクセスを有するプリントサーバと通信している。プリントサーバは、リモートプリンタに印刷するのに必要な情報をすべて格納し、この情報にはプリンタ設定、プリンタドライバ、および管理設定が含まれる。クライアントでは、2つのはっきり異なるモジュールである、リモート印刷システムおよびローカル印刷システムが印刷機能を提供する。リモート印刷システムは、プリントサーバと通信して、リモートプリンタに関連するプリンタ設定および管理設定をキャッシュする。これらの格納された設定も、印刷システムによって定期的に更新されて、プリントサーバの最も新しい設定と同期した状態を保つ。また、リモートプリンタのプリンタドライバもクライアントに格納され、リモート印刷システムおよびローカル印刷システムの両方からアクセスすることができる。クライアント上のアプリケーションが、リモートプリンタに印刷するコマンドを送信すると、アプリケーションおよび関連するプログラムはまず印刷ジョブを何らかの中間データフォーマットに翻訳する。次いでリモート印刷システムを通じて印刷ジョブを渡す。従来のプリントネットワークのように直接プリントサーバに渡すのではなく、印刷ジョブは次いでローカル印刷システムにルーティングし、そこでローカルキューに格納し、最終的には格納されたプリンタドライバを使用してローカル印刷エンジンによってレンダリングされる。このレンダリングプロセスは、格納された適切なプリンタ設定および管理設定に従って行う。それらの設定をクライアントに格納するので、サーバのオンラインステータスはアプリケーションに対して透過になる。ローカル印刷エンジンは次いで、完全にレンダリングした印刷ジョブを、リモート印刷システムを通じてプリントサーバに送信する。ローカル印刷エンジンがリモート印刷システムを通じて印刷ジョブの送信し始める時にプリントサーバが使用可能でない場合、ローカル印刷システムは単にプリントサーバがオンライン状態に復帰するまでその印刷ジョブのキューを一時停止する。このプロセスを容易にするために、リモート印刷システムは、予め決められた時間間隔でプリントサーバについてネットワークをポーリングし、また新しいネットワークノードが使用可能になっている可能性がある旨の指示を受け取った時はいつでもポーリングする。プリントサーバが再度論理的にクライアントに接続されると、ローカル印刷システムは、リモート印刷アーキテクチャを通じてプリントサーバに印刷ジョブを送信する。本発明のこの他の特徴および利点は、添付の図面を参照して進める以下の例示的実施形態の詳細な説明から明らかになろう。添付の特許請求の範囲に本発明の特徴を具体的に開示したが、本発明は、その目的および利点と共に、添付図面と併せて以下の詳細な説明から最もよく理解できよう。図面を参照して、コンピューティング環境の関連で以下に本発明を説明する。図面では同様の要素には同様の参照符号を付している。本発明の実施には必須ではないが、本発明は、PCPCによって実行されるプログラムモジュールなどのコンピュータ実行可能命令によって実施されるものとして説明する。一般に、プログラムモジュールには、特定のタスクを行うか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明は、PC以外のコンピュータシステム構成でも実施することができる。たとえば、本発明は、ハンドヘルド機器、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどに実現することができる。本発明は、通信ネットワークを通じてリンクされた遠隔リモートの処理デバイスによってタスクが実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモート両方のメモリ記憶装置に置くことができる。本発明は、上述のような多種のコンピューティング環境に組み込むことが可能であるが、以下の本発明の詳細な説明は、従来型のPC20の形態である例示的な汎用コンピューティングデバイスの関連において開示する。本発明を詳細に説明する前に、本発明が動作するコンピューティング環境を図1との関連で説明する。PC20は、処理装置21、システムメモリ22、およびシステムメモリ23を含み、このシステムバスはシステムメモリから処理装置21までを含む各種のシステム構成要素を結合する。システムバス23は、各種のバスアーキテクチャの任意のものを使用したメモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含む数タイプのバス構造のいずれでもよい。システムメモリは、読み取り専用メモリROM24およびランダムアクセスメモリRAM25を含む。起動時などにPC20内の要素間の情報転送を助ける基本ルーチンを含む基本入出力システムBIOS26は、ROM24に格納される。PC20はさらに、ハードディスク60との間で読み出しおよび書き込みを行うハードディスクドライブ27、および取り外し可能な磁気ディスク29との間で読み出しおよび書き込みを行う磁気ディスクドライブ28を含む。ハードディスクドライブ27および磁気ディスクドライブ28は、それぞれハードディスクドライブインタフェース32および磁気ディスクドライブインタフェース33によってシステムバス23に接続される。これらのドライブとそれらに関連付するコンピュータ可読媒体は、PC20のコンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータの不揮発性の記憶を提供する。ここで説明する例示的環境ではハードディスク60および取り外し可能磁気ディスク29を用いるが、当業者に理解されるように、光ディスクドライブおよびディスク、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ、読み取り専用メモリなど、データを格納することができ、コンピュータからのアクセスが可能な他種のコンピュータ可読媒体もこの例示的動作環境で使用することができる。ハードディスク60、磁気ディスク29、ROM24またはRAM25には複数のプログラムモジュールを格納することができ、これにはオペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、他のプログラムモジュール37、およびプログラムデータ38が含まれる。ユーザは、キーボード40やポインティングデバイス42などの入力装置を通じてPC20にコマンドと情報を入力することができる。この他の入力装置図示せずには、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナなどが挙げられる。これらおよびその他の入力装置は、システムバスに結合されたシリアルポートインタフェース46を通じて処理装置21に接続されることが多いが、パラレルポート34、ゲームポート、ユニバーサルシリアルバスUSBなど、他のインタフェースで接続することもできる。ビデオアダプタ48などのインタフェースを介して、モニタ47またはその他のタイプの表示装置もシステムバス23に接続される。モニタに加えて、PCは通例、パラレルポートインタフェース34を通じてシステムバス23に接続されたスピーカやプリンタ30などの他の周辺出力装置を含む。PC20は、プリントサーバ49などの1つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク化された環境で動作することができる。プリントサーバ49は、別のPC、サーバ、ルータ、ネットワークPC、ピアデバイス、あるいは他の共通ネットワークノードでよく、通例は、PC20との関連で上述した要素の多くを含むが、プリントサーバ49は、PC20からの印刷要求を接続されたプリンタ50にルーティングすることの専用とされることが多い。図1に示した論理接続は、ローカルエリアネットワークLAN51およびワイドエリアネットワークWAN52を含む。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、インターネットに一般的に見られる。LANネットワーキング環境で使用する場合、PC20はネットワークインタフェースまたはアダプタ53を通じてローカルネットワーク51に接続される。WANネットワーキング環境で使用する場合、PC20は通例、WAN52を通じて通信を確立するためのモデム54またはその他の手段を含む。モデム54は内蔵でも外付けでもよく、シリアルポートインタフェース46を介してシステムバス23に接続される。ネットワーク化された環境では、PC20との関連で図示したプログラムモジュール、またはその一部は遠隔のメモリ記憶装置に格納することができる。図示したネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用することができることは理解されよう。以下の説明では、別途示されない限りは、1つまたは複数のコンピュータによって行われる行為および動作の記号表現を参照して本発明を説明する。そのため、場合によってはコンピュータによって実行するものとしてみなされるこうした行為および動作には、構造化された形態でデータを表す電気信号のコンピュータの処理装置による操作が含まれることは理解されよう。この操作ではデータを変形するか、コンピュータのメモリシステム中の場所にデータを保持するが、それにより、当業者によく知られる態様で、コンピュータの動作が再構成されるか、そうでなければ変更される。データが保持されるデータ構造は、そのデータのフォーマットによって規定される特定のプロパティを有するメモリの物理的な場所である。しかし、本発明は前述の関連において説明しているが、以下で述べる行為および動作の多くはハードウェアに実装することもできることが当業者には理解されるように、これは限定的であることを意味するものではない。本発明の重要な一態様によれば、クライアントPC20は、プリントサーバ49の管理設定と同期して、格納された管理設定を使用してローカルにドキュメントをレンダリングし、ドキュメントを適切なネイティブプリンタ言語でプリントサーバ49に転送する前にローカルでキューに入れる。本発明によれば、クライアントPC20は、プリントサーバ49に論理的に接続されていない時には、リモートプリンタ50にレンダリングするためにドキュメントを準備するさらなる能力を有する。そしてクライアントPC20は、プリントサーバ49が使用可能になるまでプリントサーバ49をポーリングし、そうなった時間の後にドキュメントをレンダリングし、印刷のために転送することができる。図面を参照すると、本発明の一実施形態を実施するための例示的ソフトウェアアーキテクチャを図2に示す。クライアントPC20上で、単一のアプリケーション36がユーザレベルで実行されるのが図示されている。ユーザレベルとは、コンピュータで実行されるプログラムがコンピュータユーザとやりとりするレベルのことである。他の実施形態では、クライアントPC20で多くのアプリケーションが同時に実行していてもよく、そのそれぞれが印刷サブシステム202~203にアクセスすることができる。ローカルまたはリモートにPC20に接続されたプリンタに印刷するために、大半のアプリケーション36は、必要とされる機能のすべてをそれ自体で実装することはなく、代わりに外部モジュールに依存する。しかし、代替の実施形態では、印刷サブシステムは、アプリケーション36自体の一部、オペレーティングシステム35の一部、あるいは基礎となるオペレーティングシステム機能を使用する別個のプログラムであってもよい。図2に示す実施形態では、ドキュメントを印刷しようとするアプリケーション36はまずオペレーティングシステムモジュール35と通信する。それらのオペレーティングシステムモジュール35は、アプリケーション36と共に、アプリケーション固有のドキュメントデータをより汎用的な中間データフォーマットに翻訳するのに必要な機能を提供し、新たにフォーマットされたドキュメントを印刷サブシステムに転送する。別の実施形態では、オペレーティングシステム35の支援を受けずに、アプリケーション36自体がアプリケーション固有のドキュメントデータを汎用的な中間データフォーマットに翻訳する。さらに別の実施形態では、アプリケーション36は、どのアプリケーション36がそれを送ったのかを示す何らかの指示とともにアプリケーション固有のドキュメントデータを印刷サブシステムに送信し、印刷サブシステムは、アプリケーション固有のデータをネイティブのプリンタ言語に翻訳することができる。あるいは、アプリケーション36が印刷サブシステム自体を実装し、後に、アプリケーション固有のデータをネイティブのプリンタ言語に直接翻訳する。アプリケーション固有のデータが中間データフォーマットに翻訳されると、オペレーティングシステムモジュール35は、印刷サブシステムの最初のレベルであるプリンティングルータ201にドキュメントを転送する。このプリンティングルータ201は、その宛先プリンタが、プリントサーバ49を通じてクライアントPC20に接続されたリモートプリンタ50であるか、あるいはプリントサーバ49を利用せずにパラレルポートインタフェース34または何らかの他の通信媒体を通じて論理的にクライアントPC20に接続されたローカルプリンタ30であるかなど、その宛先プリンタに応じて印刷ジョブをルーティングする。一実施形態では、プリンティングルータ201は、オペレーティングシステムモジュール35またはアプリケーション36によって印刷ジョブとともに送られてくる別個のリモートまたはローカルのインジケータに基づいてこの決定を行う。あるいは、プリンティングルータ201は、ドキュメント自体からこのインジケータを取り出すこともできる。印刷ジョブがリモートプリンタ50に向けられている場合は、リモート印刷機能202専用のサブモジュール群がそのジョブを受け取り、処理する。一方、印刷ジョブがローカルプリンタ30に向けられている場合は、ローカル印刷機能203専用のサブモジュール群がそのジョブを受け取り、処理する。他の実施形態では、プリンティングルータ201を印刷サブシステムのオプションのコンポーネントとしてもよい。代わりに、クライアントPC20は、リモートまたはローカルのプリンタに印刷するだけでよく、その特定のサブモジュールのセットのみを実装することができる。クライアントPC20はまた、リモートおよびローカル両方のプリンタに印刷することもできるが、両方の印刷機能に同一のサブモジュールの多くを再利用することもできる。図2に示す実施形態では、ローカル印刷サブシステム203は図示する構成要素を備えるが、他の実施形態では、これらの構成要素によって表す機能は、ローカル印刷サブシステム203においてこれよりも少ないか、または多い構成要素で実装することもできる。ローカルプロバイダ220は、サブシステム203のその他の構成要素を調整し、開始から終了までローカルの印刷プロセス全体を連携させる。オペレーティングシステム機能221は、種々雑多の翻訳を行ったり、関数を転送したりして、オペレーティングシステム35によってすでに実装されている機能へのアクセスを提供する。ローカルプリンタ30をアクティブな印刷機能としてオペレーティングシステム35に最初に登録する際に、ローカル印刷サブシステム203は、プリンタ固有のデータをプリンタのリスト223に格納する。このデータは、ローカルプリンタ30の仕様と使用するドライバおよび設定を含むことが多い。代替の実施形態では、印刷ジョブを送信する時にのみプリンタ30を登録し、プリンタリスト223で指定される各種の設定を印刷時に取り出し、適用する。印刷ジョブがローカルプロバイダ220にルーティングされると、ジョブはまずスケジューラコンポーネント224に登録され、スケジューラコンポーネント224はジョブをスプールファイルの適切なキュー225に入れる。これらのスプールファイルは、中間データフォーマットのドキュメントを表す情報と、このドキュメントをレンダリングする際に使用すべき各種の印刷特性を格納する。ジョブがデスプールde‐spoolingの状態になる印刷準備状態と、スケジューラ224は、スプールファイルをキュー225からプリントプロセッサ222に転送し、プロセッサ222はドキュメントを印刷する準備をする。次いでプリントプロセッサコンポーネント222は、ドキュメントをネイティブプリンタ言語にレンダリングするためにプリンタドライバ226に転送する。ローカルプリンタ30固有のフォーマットされたレンダリング後のドキュメントはローカルプロバイダ220に送り返され、プロバイダ220は、レンダリングされたドキュメントを、ポートモニタ204を通じて提供されるオペレーティングシステム機能を利用して適切なプリンタに送信する。ローカルプリンタ30を行先とする場合は、ポートモニタ204はたとえばパラレルポートインタフェース34を使用することができる。オペレーティングシステム機能にアクセスすることにより、ポートモニタ204は、可能性として各種の通信媒体を通じて通信し、それらの通信媒体をモニタすることができる。代替の実施形態では、スプールファイルのキュー225をローカル印刷サブシステム203で維持する必要はなく、代わりにオペレーティングシステム35またはアプリケーション36に実装することができる。たとえば、アプリケーション36は、印刷サブシステム203と緊密な通信をとり、前のドキュメントが完全に印刷された時にのみ新規ドキュメントの印刷を開始するであろう。図2を参照して説明するローカルシステム203は通例今日の多くのPC20に見られるが、他の実施形態では、図2を参照して説明する各種の構成要素を同様の、しかしはっきり異なるモジュールに置き換えることもできるであろう。本発明によれば、図2に示すように、リモート印刷サブシステム202は、図示した構成要素に分解される。他の実施形態では、これらの構成要素によって表す機能はこの例よりも少ないか、または多い構成要素で実装される。第1のコンポーネント、コア210は、ローカルプロバイダコンポーネント220によって提供される機能と同様の機能を提供する。すなわち、各種の他のリモートコンポーネントを連携および調整し、同時に受信から完了まで特定のジョブをトラックする。一実施形態では、アクティブな印刷機能のためにリモートプリンタ50が選択されると、リモート印刷サブシステム202のコア210は、様々なネットワーキングプロトコルSMB219やRPC218などへのアクセスを有する接続マネジャ217を通じて、リモートプリンタ50が接続されたプリントサーバ49と通信する。接続マネジャ217は、リモートプリンタ50に関連する情報を受け取り、この情報には管理設定、プリンタ設定、ドライバ、およびその他の設定が含まれる。この情報は再度コア210に渡され、コア210はローカル印刷サブシステムのプリンタリスト223と記憶空間としてのキャッシュマネジャ215の両方を使用する。この格納された情報は、定期的に同期マネジャ216によって同期されて、プリントサーバ49に格納された最新の情報と一致させる。いくつかの実施形態では、同期マネジャ216は、ある一定の長さの時間の後に更新情報を要求する。他の実施形態では、同期マネジャ216は、情報の変更がプリントサーバ49に登録されたという通知を受け取った後にのみ、格納された情報を更新する。さらに他の実施形態では、プリントサーバ49に格納された情報がクライアント20のコア210によって変更されると、それらの設定を先取りしてにキャッシュに入れる。そして、印刷ジョブがリモート印刷サブシステム202にルーティングされると、コア210は、同期マネジャ216を使用して各種設定およびドライバが最新のものであることを確認し、次にローカル印刷およびリモート印刷の機能を使用してジョブをレンダリングし、印刷する。リモートプリンタ50が接続されたプリントサーバ49が使用不可である場合、コア210は、到達可能性イベントシステム212に信号を送ってプリントサーバ49についてネットワークをポーリングする。サーバ49が使用可能になると、コア210に通知され、レンダリングされた印刷ジョブが送信される。他の実施形態では、プリントサーバ49が使用不可である場合、印刷ジョブがキャンセルされるか、アプリケーション36自体または他のシステム機能が、プリントサーバ49がオンライン状態に復帰するまで予め決められた時間間隔で印刷ジョブを送信し続ける。図2に示す実施形態では、プリントサーバ49と通信するものとして各種コンポーネントを上記に説明したが、接続マネジャ217がプリントサーバ49との論理接続を有し、すべての通信は接続マネジャ217を通じてルーティングされる。代替の実施形態では、それらの他のコンポーネントは、接続マネジャ217が使用するものと同じネットワークプロトコルを通じてネットワークハードウェアにアクセスする。リモート印刷サブシステム202の残りのコンポーネントは、上述のコンポーネントに対するサポートを提供する。イベントマネジャ211は、リモート印刷サブシステム202のコンポーネント間で各種のイベント通知を転送する機能を果たす。ポートモニタ213は、ネットワーク51を通じてプリントサーバ49に送られる通信を調整し、外部のポートモニタ204との間で使用されるものと同様のシステム要求に応答する。最後に、スカベンジャー214は、各種の理由でたとえば要求元のユーザがクライアントPC20からログオフしたなどその有効性を失っているプリンタおよびジョブのインスタンスを削除する。図2に示すリモート印刷サブシステム202のソフトウェアアーキテクチャによって行われる各種機能をさらに詳細に説明する際に、以下の図3~7を参照するとよりこのアーキテクチャについて一層理解されよう。図3に示すように、本発明による印刷サービスでは、クライアントサイドのレンダリングと管理情報の維持管理をサポートするためにいくつかの重要なタスクを行う。ステップ301で、印刷サービスは、プリントサーバ49から受け取った特定のプリンタ50に関連する管理情報およびデバイス情報の格納を調整する。一実施形態では、印刷サービスのコンポーネント構成要素が、プリントサーバ49からの管理情報およびデバイス情報の受信を調整する。この情報はその後クライアントPC20上に配置されたデータ構造に格納され、そこでこの情報はその後ドキュメントを正しく印刷するためにアクセスすることができる。ステップ303で、そのプリンタ50がアクティブである限り、印刷サービスは、クライアント20の管理情報およびデバイス情報をプリントサーバ49に格納された情報と引き続き同期する。一実施形態では、この同期は、クライアント20に格納された情報をプリントサーバ49に格納された情報と定期的に置き換えることによって行われる。別の実施形態では、プリントサーバ49が該当するプリンタ50に関連する何らかの情報を更新した後にのみ情報を同期する。さらに別の実施形態では、これらの同期法を両方とも実装してネットワークトラフィックを増大し、同時にクライアントPC20に格納された情報の精度も高める。ステップ305で、印刷サービスは、格納された管理設定およびデバイス設定をドキュメントに適用する。それらの設定を適用することにより、印刷サービスは、ドキュメントのフォーマッティングが適切であり、ネットワークセキュリティの問題が解決されるようにする。これらの設定はサーバが使用不可であってもプリントサーバ49に格納された設定に比較的現状を反映しているので、オフラインのレンダリングが容易になる。これらの設定の適用の詳細については下記でさらに説明する。最後にステップ307で、印刷サービスは、レンダリングしたドキュメントをプリンタ50に転送するためにプリントサーバ49に送信する。クライアントPC20でドキュメントをレンダリングすることにより、プリントサーバ49から大幅な計算上の負担が取り除かれ、プリントサーバ49をより容易にスケーリングできるようになる。サーバ49およびクライアント20両方の設定がステップ303により頻繁に同期されるので、大半の場合レンダリングプロセスは両方で同じものになり、したがって逸脱したプロセスに伴う問題が回避される。上述のステップは概略的に説明したが、以下の図4~7では本発明の実施形態をさらに詳細に示す。指定されたリモートプリンタ50にドキュメントをプリントする際の最初のステップは、今後の印刷タスクのためにプリンタ50をオペレーティングシステム35に登録することである。プリンタの登録は当技術分野でよく知られているが、本発明の特定の態様は、図4および5に示す登録プロセスをユニークなものにしている。図4は、本発明に従ってオペレーティングシステム35がプリンタ50を登録する全体プロセスを示し、図5は、図2の例示的ソフトウェアアーキテクチャでそのプロセスを行う一方式を示す。当技術分野でよく知られるように、本実施形態は、以降の印刷コマンドがプリンタ50を識別することができるようにステップ401で新しいリモートプリンタ50をオペレーティングシステム35に追加する方法について検討している。一実施例では、オペレーティングシステム35は、ネットワークを通じてブラウズし、使用可能なプリントサーバ49から、それらの接続されたリモートプリンタ50のリストを取り出す。オペレーティングシステム35は、次いでそのリモートプリンタ50を自動的にデータベースに追加するか、またはユーザに印刷ジョブを送信したいプリンタ50を選択させる。他の実施形態では、ユーザが追加したいリモートプリンタ50のネットワークパスを指定し、その新しいプリンタがオペレーティングシステムのデータベースに登録される。さらに他の実施形態では、この最初の登録がオペレーティングシステム35によって行われず、特定の印刷ジョブがアプリケーション36によって送信された時にのみ、以降のステップ403~407を行う。ユーザがリモートプリンタ50を登録すると、印刷を制御するこれらのサービスが、ステップ403でプリントサーバ49から管理およびデバイスの情報を受け取る。別の実装では、これらの印刷サービスは、アプリケーション36、オペレーティングシステム35、または印刷サブシステム202、203に実装される。プリントサーバ49から受け取るデバイス情報は、ドライバのバージョン情報、プリンタドライバ自体、プリンタの仕様、プリンタに行われた変更、プリンタの好ましい出力などを含む。一方、プリントサーバ49の管理設定には、リモートプリンタ50の好ましい設定、リモートプリンタ50に許可された特定の設定、クライアントPC20に許可されたアクセスのレベルなどが含まれる。この情報を取り出すために、クライアントPC20は登録時にこの情報をプリントサーバ49に要求する。一実施形態では、この取り出しは、PC20の動作を低下させない非同期プロセスである。別の実施形態では、この情報は、印刷ジョブを処理しようとする時にのみプリントサーバ49から取り出す。次いで、受け取ったこの情報をステップ405でクライアントPC20に格納する。この情報をローカルに格納することにより、クライアントPC20は、以後プリントサーバ49にアクセスせずにこの管理設定とプリンタ設定を使用してドキュメントをレンダリングすることができる。これにより、より高速のレンダリングプロセスが可能になりクライアントPC20がネットワーク通信の結果を待つ必要がないため、またオフラインのレンダリングも可能になるクライアントPC20が格納された管理設定を使用することができるため。一実施形態では、印刷サブシステム、アプリケーション36、およびオペレーティングシステム35が、この格納された情報にアクセスする。プリントサーバ49から受け取ったデバイス情報を使用して、ステップ407で、クライアントPC20でプリンタインスタンスを作成する。プリンタインスタンスとは、単に、印刷サービスが印刷ジョブを処理する際にそのデバイス情報にアクセスできるように、ひとまとまりのデバイス情報を格納したデータ抽象化を指す。異なるプリンタを表すデバイス情報を別々にすることにより、プリンタインスタンスは、アプリケーション36から特定のプリンタに送信される印刷コマンドの実行を容易にする。当技術分野でよく知られるように、プリンタインスタンスはクライアント20で維持されることが多く、ユーザによって入力された情報、またはパラレルポートインタフェース34、USBなどの一般的な通信インタフェースを通じて検出された情報を用いて、ローカルに接続されたプリンタ30を表す。一実施例では、リモートプリンタ50を表すプリンタインスタンスは、ローカルプリンタ30を表すプリンタインスタンスと同様のフォーマットで格納される。最後に、印刷サービスのいくつかのコンポーネントはまた、ステップ409で、管理およびデバイス情報をプリントサーバに格納された情報と同期する。このステップは、先にステップ303を参照して説明したステップと実質的に同じである。クライアント20に格納された管理およびデバイス情報をプリントサーバ49に格納された情報と同じ状況に保つことにより、本実施形態は、印刷とオフラインレンダリングの精度を促進する。これらのステップを図4の高レベルの概略図に開示したので、図5では図2の例示的なソフトウェアアーキテクチャにおけるプリンタ登録の一実施例を説明する。最初のステップ501はステップ401と同じであり、オペレーティングシステムによって実装される同様のレガシープロトコルに依存する。残りのステップはほぼ次のように分けられる。ステップ503~507はステップ403に対応し、ステップ509~511はステップ405に対応し、ステップ513はステップ407に対応する。ユーザが新しいリモートプリンタ50を追加すると、オペレーティングシステム35は、リモート印刷サブシステム202のコアコンポーネント210に通知を転送する。ステップ503で、コア210はリモートプリンタ50に関する管理設定およびデバイス情報を接続マネジャ217に要求する。代替の実施形態では、この機能を異なるコンポーネントに実装する必要はない。実際、コア210および接続マネジャ217は、オペレーティングシステム35またはアプリケーション36の一部とすることができる。この要求を受け取ると、接続マネジャ217は、ステップ505で適切なネットワークプロトコル218、219を使用してプリントサーバ49から情報を取り出す。一実施形態では、接続マネジャ217は、プリントサーバ49と通信するのにRPCremoteprocedurecallプロトコル218を優先的に使用しつつ、SMBあるいはUNIX登録商標環境におけるSamba219などの他の一般的なプロトコルを使用して通信する能力も保持する。代替の実施形態では、他のプロトコルを使用してクライアントPC20とプリントサーバ49間の通信チャネルを実装する。クライアントPC20とプリントサーバ49のどちらか一方が特定のネットワーキングプロトコルをサポートしない場合は、相互に理解可能なプロトコルが選択されるまでそれら2つのコンピュータは代替のプロトコルを試みる。プリントサーバ49は通例、上述のプリンタインスタンスと同様のデータ抽象化に管理およびデバイス情報を格納する。したがって、一実施形態では、接続マネジャ217は、特定のリモートプリンタ50についての情報を要求し、プリントサーバ49はプリンタ50のネットワーク識別子を、データ抽象化に格納されたそのプリンタの関連した特性と照合し、それらの関連した特性を返す。接続マネジャ217は、この情報を受け取ると、ステップ507で処理のためにその情報をコア210に転送する。一実施形態では、コア210は、プリントサーバ49によって適用された管理設定を、ステップ509でリモートサブシステムのキャッシュマネジャ215のキャッシュエントリに格納する。キャッシュマネジャ215は、情報を格納するキャッシュエントリを備えるデータ構造である。一実施例では、識別子テーブル、好ましくはハッシュテーブルを使用してそのキャッシュエントリをそれぞれのリモートプリンタに関連付けて、キャッシュエントリへのアクセスを高速にする。あるいは、当技術分野で周知の他の記憶手段を使用して、管理設定を格納し、アクセスする。一実施形態では、管理設定はリモート印刷サブシステム202に格納されるが、コア210によって受け取られる他のデバイス情報はステップ511でローカルプロバイダ220に転送される。ステップ513で、ローカルプロバイダ220は、そのプリンタリスト223中のリモートプリンタ50を表すローカルのシャドウプリンタインスタンスを作成する。このリモートプリンタ50に対応するローカルのシャドウプリンタインスタンスは、上述のローカルプリンタ30に対応するローカルプリンタインスタンスと同じフォーマットとされる。しかし、ローカルプリンタ30を表すローカルプリンタインスタンスは外部ポートモニタ204を通じて印刷ジョブを送信するのに対して、リモートプリンタ49を表すローカルシャドウプリンタインスタンスは、リモート印刷サブシステムのポートモニタ213を通じて印刷ジョブを送信する。ローカル印刷サブシステム203は、それらリモートプリンタ50への印刷コマンドを処理する際にはローカル印刷機能を利用して、すべての他のローカルプリンタインスタンスと同様にローカルシャドウプリンタインスタンスを扱うことが好ましい。ステップ515で、リモート印刷サブシステム202内のプロセスが、クライアントPC20に格納された管理およびデバイス情報がプリントサーバ49に格納された情報と同期されていることを確認する。一実施形態では、同期マネジャ216が更新された情報を定期的にプリントサーバ49に要求し、これによりキャッシュマネジャ215およびローカル印刷サブシステム203に格納された情報を置き換える。別の実施形態では、同期マネジャ216は定期的に、ローカルに格納された管理およびデバイスの情報をプリントサーバ49の情報と比較する。それらの情報が異なる場合、同期マネジャ216は、キャッシュマネジャ215およびローカル印刷サブシステム203に格納された相違する情報を置き換える。さらに別の実施形態では、コア210は、接続マネジャ217を通じてプリントサーバ49をポーリングして、プリントサーバ49上の管理およびデバイス設定が変化したかどうかを判定する。プリントサーバ49は、変化が生じたかどうかを示す小さなデータ構造を保持することができ、このデータ構造にはコア210からアクセスすることができる。コア210が受け取った応答は同期マネジャ216に送信され、同期マネジャ216はローカルに格納された設定を適切に更新する。これらの方法は単に例示的なものであり、管理設定およびデバイス設定を新しい内容に保つためには同期マネジャ216またはリモート印刷サブシステム202の別のコンポーネントは他の方法を使用することができる。リモートプリンタ50がオペレーティングシステム35に登録されると、アプリケーション36はそのプリンタに印刷ジョブを送ることができる。本発明が企図するユニークな印刷プロセスを図6および7に記載する。図6は、アプリケーション36がリモートプリンタ50に印刷する全体的なプロセスを記載し、図7は、図2の例示的ソフトウェアアーキテクチャでそのプロセスを行う一方式を示している。リモートプリンタ50にデータを印刷する際の最初のステップは、言うまでもなく、プリント機能を有するアプリケーション36にアクセスし、その機能を利用することである。したがって、ステップ601では、ユーザはアプリケーション36から何らかの印刷コマンドを送信し、リモートプリンタ50にドキュメントを送信すべきことを知らせる。別のアプリケーションでは、別の方法を使用してこの機能を行う。一実施例では、ユーザはメニューから、あるいはキーボード40のキーの組み合わせてまたは連続して押すことで印刷コマンドを選択する。この印刷コマンドは選択方法に関係なく、次いで、ユーザに対象とするプリンタに関する入力を求める。代替の実装では、リモートプリンタ50は、現在のデフォルトプリンタとして事前に選択してもよい。この印刷コマンドを処理すると、アプリケーション36は、オペレーティングシステムモジュール35の支援により、ステップ603で、独自のproprietaryアプリケーションフォーマットで格納されたドキュメントを中間データフォーマットに翻訳する。この中間データフォーマットは、リモートプリンタ50でドキュメントを正確に印刷するのに十分な情報を含んでいる。しかし、この中間データフォーマットは、リモートプリンタ50にもアプリケーション36にも固有ではない。このようにして、その特定のアプリケーションソースやターゲットプリンタを気にすることなくドキュメントをフォーマットし、変更することができ、こうした変形を実行するこれらのサブシステムは、プリンタ50またはアプリケーション36の選択にはほとんど依存しない。しかし、他の実施形態では、中間データフォーマットが必要とされないこともある。アプリケーション36が基礎となるオペレーティングシステム35によって提供される機能にアクセスせずに直接リモートプリンタ50んい印刷する上述の場合は、アプリケーション36は単に、送信のためにファイルをネイティブプリンタ言語に翻訳しなければならなくなるまでは、自身のアプリケーション固有のフォーマットを使用する。さらに他の実施形態では、ドキュメントに行われるフォーマットの変更は、異なるアプリケーション固有のフォーマットそれぞれに関して印刷サブシステムによって実行され、中間データへの翻訳を不要にする。中間ファイルを作成すると、ステップ607でそれをクライアント20のキューに入れる。一実施形態では、このキューはプリンタインスタンスにつき1つのキューをもつデータ構造を表す。キューにドキュメントを追加する際、当分野の技術者に良く知られるように、そのドキュメントは一定の例外を除いて先入れ先出しのフォーマットで配置される。キューに最初に追加されたドキュメントはリモートプリンタ50に最初に印刷される。リモートプリンタ50に接続されたプリントサーバ49はまた、それ自身のキューに関するデータをクライアント20に送信し、2つのコンピュータは各自のキューを併合して、クライアント20が、プリントサーバ49によって受け取られる他の印刷ジョブとの関係で適切な時間に印刷ジョブを送るようにする。クライアント20は、受け取ったデータを使用して、その印刷ジョブがいつ印刷されることになるか、そして他のユーザのドキュメントとの関係でどのような順序で印刷されることになるかをユーザに通知することもできる。他の実施形態では、このキューをアプリケーション36内で実装するか、あるいはキューを実装しなくともよく、元の印刷要求が否定された場合、アプリケーション36は予め決められた時間間隔で印刷要求を送信する。ドキュメントがキューの先頭に到達し、リモートプリンタ50に送信される状態になると、クライアント20は、ステップ609でプリントサーバ49が使用可能であるかどうかを判定する。当技術分野でよく知られるように、クライアント20はこの決定をいくつかの可能な方法の1つで行う。その方法には、単に基礎となるネットワーク機能を使用してプリントサーバ49にpingすること、同意されたネットワークプロトコルの1つを使用して印刷ジョブを受け付けることができるかどうかをプリントサーバ49に尋ねること、あるいは印刷要求が失敗するまではプリントサーバ49が使用可能であると想定することが含まれる。クライアント20が、プリントサーバ49が使用可能であると判断した場合は、中間ファイルをリモートプリンタ50のネイティブプリンタ言語にレンダリングし、結果として得られるドキュメントをステップ611でプリントサーバ49に送信する。ステップ405~407に記載したように、リモートプリンタ50のドライバ、プリンタ設定、および管理設定に関する情報はクライアント20に格納されているので、中間ファイルを効率的にネイティブプリンタ言語にレンダリングすることができる。これらの格納された設定は、同期マネジャ216による最後の更新時に格納された古い設定であっても、特定のドキュメントを印刷する直前にプリントサーバ49から受け取った新しい設定であってもよい。一実施形態では、ネットワークトラフィックは増大するが新しい設定を利用することが好ましい方法である。代替の実施形態では、サーバ49とクライアント20の設定が同期されない可能性がより高くなるが、古い設定が好ましい。デバイスおよびプリンタの設定はリモートプリンタ50の物理的特性を記述するが、管理設定は、レンダリングされる際に中間ファイルに各種のフォーマッティングの編集と印刷の編集紙の両面に内容を印刷するなどを行うことを要求することが好ましい。他の実施形態では、ステップ603の前にアプリケーション36によって管理設定を受け取り、アプリケーション36はこれらの設定を使用して、すでに管理設定が適用された中間ファイルを作成する。さらに他の実施形態では、初めにプリンタおよび管理の設定を中間ファイルに適用し、次いでそのプリンタ設定とドライバを使用して、中間ファイルをリモートプリンタ50により可読のドキュメントに変換する。そのようなドキュメントは、リモートプリンタ50のネイティブのプリンタ言語で書かれる。レンダリングされるとそのドキュメントはプリントサーバ49に送られ、そこで該当するリモートプリンタ50にルーティングされる。プリントサーバ49は、必要に応じてそのドキュメントを該当するプリンタのキューに追加するが、一般的な印刷ネットワークとは異なり、プリントサーバ49は、ファイルをプリンタ50に送る前にファイル変換やフォーマットの変更を行う必要がない。ドキュメントをクライアント20でレンダリングすることにより、プリントサーバ49のリソースが他のタスクのために解放される。クライアント20がポーリングした時にプリントサーバ49が使用可能でない場合は、中間ファイルは単にステップ613でそのプリンタのキューの中に残る。一実施形態では、クライアント20は、予め決められた時間間隔でプリンタサーバ49をポーリングして、サーバが使用可能になったか否かを判定する。クライアント20は、プリントサーバ49が使用可能になった可能性があることを示すネットワークまたはデバイスのアクティビティを待機することもできる。クライアント20は次いで予め決められた時間間隔と特定アクティビティの後の両方でポーリングを行って、できるだけ早く印刷できるようにする。代替の実施形態では、クライアント20は、予め決められた時間間隔でプリントサーバ49をポーリングする。不都合なことに、この時間間隔は、通例は、ドキュメントを印刷する前に起こりうる待機時間を延長して長すぎるか、あるいは短すぎ、その場合は貴重なネットワークとCPUのリソースをポーリングで使用してしまう。別の実施形態では、クライアント20は、デバイスとネットワークのアクティビティに耳を傾けて、告知を受け取るとプリントサーバ49をポーリングする。しかし、クライアント20がデバイスまたはネットワークの告知を見逃した場合は、クライアント20はプリンタサーバ49をポーリングせず、ドキュメントを印刷しないことになる。これらの2つの方法を組み合わせることにより、第1の実施形態は上記の不都合点の多くを回避しつつ、両方式の利点を備える。これらのステップを高レベルで説明したので、図7では、図2の例示的ソフトウェアアーキテクチャにおける本発明の一実施形態による印刷プロセスの一実施例を示す。最初のステップ701~703は、ステップ601および603と同じである。残りのステップは次のように分けられる。ステップ705~707はステップ605に対応し、ステップ709~711はステップ607に対応し、ステップ713はステップ609に対応し、ステップ715~717はステップ611に対応し、ステップ719~721はステップ613に対応する。アプリケーション36を通じて印刷コマンドを送信し、中間データフォーマットのファイルを作成する最初のステップについては上記でかなり詳細に説明したので、以下の説明はステップ705から始める。アプリケーション36およびオペレーティングシステムモジュール35が中間ファイルフォーマットを作成すると、ステップ705でプリンティングルータ201により中間ファイルをリモート印刷サブシステムのコア210にルーティングする。一実施形態では、プリンティングルータ201は、オペレーティングシステム35に登録されたリモートおよびローカルのプリンタのリストを保持しており、印刷ジョブをルータ201に転送すると、ターゲットプリンタがどのリストのメンバであるかに基づいて印刷ジョブが適切な印刷サブシステムに送信される。代替の実施形態では、その印刷ジョブがリモートプリンタを行先とするかまたはローカルプリンタを行先とするかについての別個の指示とともに印刷ジョブを送信し、その指示をルータ201がインターセプトし、処理する。中間ファイルを受け取り、処理すると、ステップ709でコアは中間ファイルをローカルプロバイダ220に転送する。一実施形態では、この転送されたファイルは、ローカル印刷ジョブと同様にローカルプロバイダ220が受け取り、処理する。したがって、本発明のこの実施形態では、リモート印刷の状況においてローカルの印刷機能を使用し、それら機能の多くを二重にする必要性をなくしている。ステップ711で、ローカルプロバイダ220は、その印刷ジョブがどのローカルシャドウプリンタインスタンスを対象とするかを判定し、そのローカルシャドウプリンタインスタンスに関連付けられたキューにジョブを入れる。代替の実施形態では、リモート印刷サブシステム202は、ローカルの印刷機能をそれ自体で実装し、したがって印刷ジョブをリモートキューに入れ、ローカル印刷サブシステム203がローカル印刷ジョブに集中できるようにする。印刷ジョブが該当するキューの先頭に来るようにすると、レンダリング済みのドキュメントをプリントサーバ49に送信する前に、リモートポートモニタ213がまずプリントサーバ49が使用可能であるかどうかをステップ713で判定する。一実施形態では、リモートポートモニタ213は、ローカル印刷サブシステム203によってレンダリングが行われる前に使用可能性を調べる。代替の実施形態では、印刷ドキュメントの一部の処理がパイプライン化される。したがって、リモートポートモニタ213は、ローカル印刷サブシステム203によって何らかのレンダリングが行われた後にのみ使用可能性をチェックする。しかし、サーバが使用不可であると判定されると、第2の実施形態で部分的にレンダリングされたデータが失われるので両実施形態は収斂する。プリントサーバ49が使用可能である場合、例示的な実施形態では、ローカルプロバイダ220は、プリントプロセッサ222に印刷ジョブを転送し、プリントプロセッサ222は、ローカルシャドウプリンタインスタンスに関連付けられ、格納されたデバイスおよび管理の設定を適用する。これらの管理設定には、ステップ611に関して上述した設定が含まれる。キャッシュマネジャ215によって格納されたキャッシュエントリは、管理設定をそれぞれのリモートプリンタ50およびプリントサーバ49と一致させるので、プリンタの識別がキャッシュマネジャ215に送られ、要求された設定が返される。ある場合では、コア210は、現在格納されている設定がプリントサーバ49に格納された設定と同期していることを検証する。一実施形態では、コア210は、同期マネジャ216と通信し、接続マネジャ217を使用して上記のステップ509で記載したように最新の管理設定でキャッシュマネジャ215を更新する。しかし、このプロセスの間にプリントサーバ49が使用可能でない場合は、プリントプロセッサ222は格納されたデバイスおよび管理の設定を更新せずに使用する。格納された設定を更新せずに印刷プロセスを続行できるようにすることにより、本実施形態はオフラインの印刷とレンダリングを容易にする。他の実施形態では、コア210は、印刷プロセスを続ける前に管理設定をプリントサーバ49と更新することを要求し、オフラインの印刷とレンダリングを妨げる。さらに他の実施形態では、コア210は管理設定を更新せず、代わりに、明示的に更新を指示されるまでは同期マネジャ216によって最後に同期された管理設定を使用する。ステップ715で、クライアント20に格納されたプリンタドライバ226とオペレーティングシステム機能221によってドキュメントを適切なネイティブプリンタ言語に翻訳する。このデバイスおよび管理設定の適用と適切なプリンタドライバによる翻訳は、当技術分野でよく知られる方法を使用して行われる。実際、一実施形態では、これらの機能はほとんど変更を行わない従来のローカル印刷サブシステム203によって実行され、それにとってファイルの最終的な宛先は透過となる。本発明の一実施形態では、印刷ドキュメントの一部の処理がパイプライン化される。したがって、ステップ717で、ネイティブプリンタ言語になっているドキュメントの一部をリモート印刷サブシステムのポートモニタ213を通じて送信する。ドキュメントの一部分がレンダリングされると、後続の部分がレンダリングされている間、それらはポートモニタ213を通じて送信される。言うまでもなく、上述のように、リモートポートモニタ213は、これらのタスクを連携させるだけである。リモートポートモニタ213は接続マネジャ217と通信し、接続マネジャ217は、印刷ジョブをプリントサーバ49に送るのに必要なネットワークプロトコルを実装する。代替の実施形態では、リモートポートモニタ213は、ドキュメントをレンダリングと同時に送信する必要はない。代わりに、ローカルプロバイダ220が、ドキュメントをスプールファイルのキュー225に入れる前にレンダリングするか、またはローカルプロバイダ220が、ドキュメントをポートモニタ213に転送する前にキューから完全にレンダリングする。ここに特定した動作を実行する正確な態様は、本発明の実施にとって本質的ではない。図7のステップ713に開示するように、リモートポートモニタ213は、プリントサーバ49が使用可能でないと判断した場合、制御はステップ719に渡り、そこでローカル印刷サブシステム203による設定の適用と翻訳が停止され、プリントサーバ49に対応するクライアントのキューが一時停止される。その後、ステップ721でクライアント20はサーバ49のポーリングを開始する。一実施形態では、ローカルプロバイダ220によって管理されるキューをリモートポートモニタ213によって一時停止する。これは、この方法が、多くの既存のローカル印刷サブシステム203でプリンタの障害に対処する単純でよく知られる方法だからである。代替の実施形態では、ローカル印刷サブシステム203がプリンタ障害に対処する任意の特定の方法を実装し、これには、すべての印刷ジョブをキャンセルし、アプリケーション36がその後の何らかの時点で印刷ジョブデータを再送すべきことを知らせることが含まれる。本発明の一実施形態では、ステップ721で、リモート印刷サブシステム202に組み込まれた到達可能性イベントシステム212が接続マネジャ217を使用してプリントサーバ49をポーリングする。到達可能性イベントシステム212は、ステップ613との関係で上述したポーリング方式の1つを実装することが好ましい。リモートの到達可能性イベントシステム212が、プリントサーバ49が使用可能である旨の通知をコア210に送信すると、キューの一時停止が解除され、プリント動作がステップ715に進んで、中間ファイルが処理され、プリントサーバ49に送られる。リモート印刷サブシステムのコンポーネントの一部またはすべてに障害が発生した場合、あるいはすべての印刷ジョブが実行される前にユーザがログオフした場合には、本発明の一実施形態はスカベンジャーコンポーネント214も提供する。スカベンジャー214は、キャンセルされたか、もはや印刷すべきでないジョブに対応するローカルシャドウプリンタインスタンス、キャッシュされたエントリ、あるいはスプールファイルが確実に削除されるようにする。したがって、複数のサブシステムおよびコンポーネントにわたって印刷ジョブを調整することに伴う潜在的な問題が、このコンポーネントの機能によって緩和される可能性がある。本発明の原理を適用できる多くの可能な実施形態に鑑みて、図面との関係でここに記載する実施形態は、単に説明のために過ぎず、本発明の範囲を限定するものとして解釈すべきでないことを認識されたい。たとえば、当業者には理解されるように、ソフトウェアとして図示した例示的実施形態の要素はハードウェアに実装してもよく、その逆も同様であり、あるいはここに例示した実施形態は本発明の精神から逸脱することなく構成と詳細を変更することができる。さらに、説明のためのステップは、本発明から逸脱することなく変更、補足、および/または順序を変えてもよい。したがって、本明細書に記載する本発明は、添付の特許請求の範囲およびその均等物に該当するそのようなすべての実施形態が企図されている。