(57)【要約】【課題】印刷機能を容易にするネットワークにおいて、リモートプリンタを対象とする印刷ジョブを格納された管理設定を使用してクライアントコンピュータ上でレンダリングする手段を提供すること。【解決手段】クライアントのアプリケーションに対して透過に、クライアントコンピュータは、格納されたリモートプリンタの管理設定を、プリントサーバに格納された情報と同期した状態に保つ。格納された管理設定を使用して、クライアントは、印刷ジョブを、直接プリンタによって認識することが可能なネイティブプリンタ言語にレンダリングし、その後レンダリングしたファイルをプリンタへの転送のためにプリントサーバに送信する。これらのリモートの印刷ジョブをキューに入れることにより、それぞれのプリントサーバのオンラインステータスもクライアントのアプリケーションに対して透過となり、オフラインの印刷が容易になる。【選択図】図２
2011081843.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク化されたクライアントコンピュータ、ターゲットとなるネットワーク化されたプリンタデバイス、およびプリントサーバコンピュータを含むネットワーク上でドキュメントをリモートに印刷する方法であって、
前記プリントサーバコンピュータによって適用される前記ターゲットとなるネットワーク化されたプリンタデバイスの管理設定を前記クライアントコンピュータ上に格納するステップと、
前記クライアントコンピュータ上の同期マネジャを使用して、前記格納された管理設定を更新して、現在のプリントサーバコンピュータの管理設定との同期を維持するステップと、
前記格納された管理設定を前記クライアントコンピュータ上で前記ドキュメントに適用するステップと、
前記クライアントコンピュータ上で、前記ドキュメントを前記ターゲットとなるネットワーク化されたプリンタデバイスのネイティブプリンタ言語でレンダリングするステップと、
前記レンダリングしたドキュメントを前記プリントサーバコンピュータに送信するステップと
を備えることを特徴とする方法。
【請求項２】
前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップと前記レンダリングしたドキュメントを送信するステップは、実質的に同時に行われることを特徴とする請求項１に記載の方法。
【請求項３】
前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップは、
前記プリントサーバコンピュータが使用可能でない時には前記ネットワークをポーリングして前記プリントサーバコンピュータが使用可能になるときを判定するステップ
をさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記ネットワークをポーリングするステップは、前記プリントサーバコンピュータが使用可能である可能性があることを示すデバイスおよびネットワークアクティビティに応答して前記プリントサーバコンピュータをポーリングするステップをさらに備えることを特徴とする請求項３に記載の方法。
【請求項５】
前記ネットワークをポーリングするステップは、前記ネットワークを定期的にポーリングするステップをさらに備えることを特徴とする請求項３に記載の方法。
【請求項６】
前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップは、ローカル印刷機能を利用することを特徴とする請求項１に記載の方法。
【請求項７】
前記レンダリングしたドキュメントを前記プリントサーバコンピュータに送信するステップは、ローカル印刷機能を利用することを特徴とする請求項６に記載の方法。
【請求項８】
前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップは、非同期に行われることを特徴とする請求項１に記載の方法。
【請求項９】
前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップは、前記ドキュメントをキューに加えるステップを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記管理設定を更新するステップは、クライアントコンピュータ上で前記ターゲットとなるネットワーク化されたプリンタデバイスを登録することと関連して最初に行われることを特徴とする請求項１に記載の方法。
【請求項１１】
前記格納された管理設定を前記ドキュメントに適用するステップは、
前記プリントサーバコンピュータが使用可能でない場合は、前記格納された設定を前記ドキュメントに適用するステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１２】
前記格納された管理設定を前記ドキュメントに適用するステップは、
前記プリントサーバコンピュータが使用可能である場合は、前記格納された管理設定を前記ドキュメントに適用する前に前記格納された管理設定を更新するステップを行うステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１３】
アプリケーションがドキュメントを印刷するコマンドを発行することに応答してクライアントサイドの印刷レンダリングを容易にするネットワークの中のクライアントコンピュータシステムであって、
前記印刷コマンドを処理および解釈するオペレーティングシステムと、
指定されるターゲットとなるネットワーク化されたプリンタデバイスに応じて前記印刷コマンドをリモート印刷サブシステムにルーティングするプリンティングルータと、
プリントサーバコンピュータから受け取った管理設定を格納し、ネイティブプリンタ言語に変換された前記ドキュメントを前記プリントサーバコンピュータに転送する前記リモート印刷サブシステムと、
前記格納された管理設定を前記ドキュメントに適用し、前記ターゲットとなるネットワーク化されたプリンタデバイスによって利用される前記ネイティブプリンタ言語に従って前記ドキュメントを変換するレンダリングサブシステムと、
前記プリントサーバコンピュータに、前記ターゲットとなるネットワーク化されたプリンタデバイスの現在の管理設定を要求する同期マネジャと
を備えたことを特徴とするコンピュータシステム。
【請求項１４】
前記同期マネジャは、前記現在の管理設定を定期的に要求することを特徴とする請求項１３に記載のコンピュータシステム。
【請求項１５】
前記同期マネジャは、前記レンダリングサブシステムが前記格納された管理設定を適用する前に前記現在の管理設定を要求することを特徴とする請求項１３に記載のコンピュータシステム。
【請求項１６】
前記プリントサーバコンピュータが使用可能でない場合に前記プリントサーバコンピュータをポーリングする到達可能性イベントシステム
をさらに備えたことを特徴とする請求項１３に記載のコンピュータシステム。
【請求項１７】
前記到達可能性イベントシステムは、前記プリントサーバコンピュータを定期的にポーリングすることを特徴とする請求項１６に記載のコンピュータシステム。
【請求項１８】
前記到達可能性イベントシステムは、前記プリントサーバコンピュータが使用可能である可能性があることを示すデバイスおよびネットワークのアクティビティに応答して前記プリントサーバコンピュータをポーリングすることを特徴とする請求項１６に記載のコンピュータシステム。
【請求項１９】
ネットワーク化されたクライアントコンピュータ、ターゲットとなるネットワーク化されたプリンタデバイス、およびプリントサーバコンピュータを含むネットワーク上でドキュメントをリモートに印刷する方法を行うコンピュータ実行可能命令を備えるコンピュータ可読媒体であって、前記方法は、
前記プリントサーバコンピュータによって適用される前記ターゲットとなるネットワーク化されたプリンタデバイスの管理設定を前記クライアントコンピュータ上に格納するステップと、
前記クライアントコンピュータ上の同期マネジャを使用して、前記格納された管理設定を更新して、現在のプリントサーバコンピュータの管理設定との同期を維持するステップと、
前記格納された管理設定を前記クライアントコンピュータ上で前記ドキュメントに適用するステップと、
前記クライアントコンピュータ上で、前記ドキュメントを前記ターゲットとなるネットワーク化されたプリンタデバイスのネイティブプリンタ言語でレンダリングするステップと、
前記レンダリングしたドキュメントを前記プリントサーバコンピュータに送信するステップと
を備えたことを特徴とするコンピュータ可読媒体。
【請求項２０】
前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップは、
前記プリントサーバコンピュータが使用可能でない時には前記ネットワークをポーリングして前記プリントサーバコンピュータが使用可能になるときを判定するステップ
をさらに備えたことを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項２１】
前記ネットワークをポーリングするステップは、前記プリントサーバコンピュータが使用可能である可能性があることを示すデバイスおよびネットワークアクティビティに応答して前記プリントサーバコンピュータをポーリングするステップをさらに備えたことを特徴とする請求項２０に記載のコンピュータ可読媒体。
【請求項２２】
前記ネットワークをポーリングするステップは、前記ネットワークを定期的にポーリングするステップをさらに備えたことを特徴とする請求項２０に記載のコンピュータ可読媒体。
【請求項２３】
前記格納された管理設定を前記ドキュメントに適用するステップは、
前記プリントサーバコンピュータが使用可能でない場合は前記格納された設定を前記ドキュメントに適用するステップ
をさらに備えたことを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項２４】
前記格納された管理設定を前記ドキュメントに適用するステップは、
前記プリントサーバコンピュータが使用可能である場合は、前記格納された管理設定を前記ドキュメントに適用する前に前記格納された管理設定を更新するステップを行うステップ
をさらに備えたことを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項２５】
アプリケーションがドキュメントを印刷するコマンドを発行するのに応答してクライアントサイドの印刷レンダリングを容易にするネットワークシステムであって、
クライアントコンピュータであって、
前記印刷コマンドを処理および解釈するオペレーティングシステムと、
指定されるターゲットとなるネットワーク化されたプリンタデバイスに応じて前記印刷コマンドをリモート印刷サブシステムにルーティングするプリンティングルータと、
プリントサーバコンピュータから受け取った管理設定を格納し、ネイティブプリンタ言語に変換された前記ドキュメントを前記プリントサーバコンピュータに転送する前記リモート印刷サブシステムと、
前記格納された管理設定を前記ドキュメントに適用し、前記ターゲットとなるネットワーク化されたプリンタデバイスによって利用される前記ネイティブプリンタ言語に従って前記ドキュメントを変換するレンダリングサブシステムと、
前記ターゲットとなるネットワーク化されたプリンタデバイスの現在の管理設定を前記プリントサーバコンピュータに要求する同期マネジャと
を備えたクライアントコンピュータと、
前記ターゲットとなるネットワーク化されたプリンタデバイスの前記現在の管理設定を保持し、要求を受信すると前記現在の管理設定を前記クライアントコンピュータに送信し、前記変換したドキュメントを前記ターゲットとなるネットワーク化されたプリンタデバイスに転送する前記プリントサーバコンピュータと、
前記変換されたドキュメントから出力を作成する前記ターゲットとなるネットワーク化されたプリンタデバイスと
を備えたことを特徴とするネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはコンピュータネットワークシステムに関し、より詳細には、ネットワーク環境で文書（ドキュメント）を印刷することに関する。
【背景技術】
【０００２】
プリンタを含む従来のネットワークでは、１つまたは複数の物理的なプリンタおよび１つまたは複数のプリントクライアントにプリントサーバを接続する。通例では、それらのクライアントコンピュータが、印刷すべき情報を、何らかの中間データフォーマットに符号化された印刷ジョブと呼ばれるドキュメントの形で、どのプリンタを使用すべきかに関する情報とともにプリントサーバに送信する。プリントサーバは、印刷ジョブとプリンタ情報を受け取ると、選択されたプリンタに関連付けられた適切なプリントキューにそのジョブをルートする。ジョブをキューから接続されたプリンタに印刷する際、サーバは、管理設定、プリンタ設定、およびプリンタドライバを含むそのプリンタに関して格納された情報を使用して印刷ジョブを解釈し、翻訳する。プリントサーバは次いで、印刷ジョブを転送された中間データフォーマットから、ネイティブのプリンタ言語にレンダリングし、プリンタに送信する。このレンダリングのプロセスとは、単に、何らかの中間データフォーマットから、直接プリンタに送信することができる最終的なプリンタ固有のフォーマットへのこうした翻訳である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
この軽いクライアントと重いサーバの技術には、いくつかの関連した問題が伴う。このリソース集約的なサーバサイドのレンダリングに伴う最も顕著な問題は、サーバネットワークのスケーリングが困難な点である。クライアントはほとんど印刷機能を提供せず、それらのタスクが代わりにサーバに課されるので、サーバの過負荷を避けるために、プリントサーバに接続されてアクティブに印刷を行うクライアントの数を厳重に制限しなければならない。別の問題点は、クライアントに通知することなく印刷ジョブがサーバに到達した際に管理設定およびプリンタ設定の適用に伴う。どの管理設定が有効であるかをクライアントが知らない場合、実際のプリント出力が予期しないものになる可能性がある。一般的なプリントネットワークのさらに別の欠点は、クライアントが、特定のプリンタのドライバが指定する中間データフォーマットで印刷ジョブを送信する場合に生じる。何らかの理由で、格納されたプリンタドライバがサーバとクライアントとで異なる場合、サーバによるその中間データフォーマットの翻訳が失敗し、低質な印刷パフォーマンスとなる恐れがある。最後に、印刷ジョブはサーバでのみキューに入れられるので、サーバサイドのレンダリングによりオフライン印刷が妨げられる。典型的なプリントネットワークでは、サーバがオフライン状態になると、クライアントは、そのサーバに接続されたプリンタを使用することができないだけでなく、そのオフラインプリンタに対してドキュメントをキューに入れることもできなくなるであろう。したがって、サーバが再び使用可能になった時に、特定のドキュメントを印刷する責任はそのクライアントのユーザに課せられることになる。
【０００４】
いくつかのプリントネットワークの実装により、これらの問題のすべてではないが一部は解決された。そのため、たとえば、一部のプリントネットワークではクライアントサイドのレンダリングがサポートされている。クライアントサイドのレンダリングの実装では、プリントサーバが印刷ジョブを適切なプリンタにルートするが、中間データフォーマットのドキュメントからネイティブのプリンタ言語へのレンダリングをクライアントが行う。クライアントは、このプリンタフォーマットのドキュメントをプリントサーバに渡すことができるが、クライアントが意図するフォーマッティングが、サーバに格納された管理設定に正しく適用されない可能性があるという問題が残る。また、クライアントによるドキュメントのオフラインレンダリングは管理上の委任統治（ａｄｍｉｎｉｓｔｒａｔｉｖｅｍａｎｄａｔｅｓ）に違反する可能性があり、そのため使用不可にされることが多い。
【０００５】
他のプリントネットワークでは、管理設定をクライアントに通信するが、クライアントはドキュメントをレンダリングすることができず、代わりに中間のデータフォーマットをレンダリングのためにプリントサーバに送信する。こうしたネットワークでは上の段落で述べた問題の多くが残る。こうしたネットワークでは、ドキュメントをレンダリングするタスクがなおサーバの負担となるのでプリントサーバのスケーリングはほぼ不可能であり、サーバとクライアントのプリントドライバを常に一致させなければならない。
【０００６】
この結果、自動化された透過的な印刷の解決法としての、オフライン印刷をサポートするプリントネットワークが必要とされている。
【課題を解決するための手段】
【０００７】
本発明は、レンダリングした印刷ジョブをプリントサーバに送る前に、クライアントに格納された管理設定を使用してクライアント上で印刷ジョブをキューに入れ、レンダリングすることを対象とする。本発明はさらに、プリントサーバが使用可能でない時にユーザが印刷コマンドし、およびプリントサーバが再び使用可能になるとその印刷ジョブを適切なプリントサーバを通じてルーティングできるようにすることを対象とする。
【０００８】
本発明の一実施形態では、クライアントはネットワークを通じて、少なくとも１つのプリンタへのアクセスを有するプリントサーバと通信している。プリントサーバは、リモートプリンタに印刷するのに必要な情報をすべて格納し、この情報にはプリンタ設定、プリンタドライバ、および管理設定が含まれる。クライアントでは、２つのはっきり異なるモジュールである、リモート印刷システムおよびローカル印刷システムが印刷機能を提供する。リモート印刷システムは、プリントサーバと通信して、リモートプリンタに関連するプリンタ設定および管理設定をキャッシュする。これらの格納された設定も、印刷システムによって定期的に更新されて、プリントサーバの最も新しい設定と同期した状態を保つ。また、リモートプリンタのプリンタドライバもクライアントに格納され、リモート印刷システムおよびローカル印刷システムの両方からアクセスすることができる。
【０００９】
クライアント上のアプリケーションが、リモートプリンタに印刷するコマンドを送信すると、アプリケーションおよび関連するプログラムはまず印刷ジョブを何らかの中間データフォーマットに翻訳する。次いでリモート印刷システムを通じて印刷ジョブを渡す。従来のプリントネットワークのように直接プリントサーバに渡すのではなく、印刷ジョブは次いでローカル印刷システムにルーティングし、そこでローカルキューに格納し、最終的には格納されたプリンタドライバを使用してローカル印刷エンジンによってレンダリングされる。このレンダリングプロセスは、格納された適切なプリンタ設定および管理設定に従って行う。それらの設定をクライアントに格納するので、サーバのオンラインステータスはアプリケーションに対して透過になる。ローカル印刷エンジンは次いで、完全にレンダリングした印刷ジョブを、リモート印刷システムを通じてプリントサーバに送信する。
【００１０】
ローカル印刷エンジンがリモート印刷システムを通じて印刷ジョブの送信し始める時にプリントサーバが使用可能でない場合、ローカル印刷システムは単にプリントサーバがオンライン状態に復帰するまでその印刷ジョブのキューを一時停止する。このプロセスを容易にするために、リモート印刷システムは、予め決められた時間間隔でプリントサーバについてネットワークをポーリングし、また新しいネットワークノードが使用可能になっている可能性がある旨の指示を受け取った時はいつでもポーリングする。プリントサーバが再度論理的にクライアントに接続されると、ローカル印刷システムは、リモート印刷アーキテクチャを通じてプリントサーバに印刷ジョブを送信する。
【００１１】
本発明のこの他の特徴および利点は、添付の図面を参照して進める以下の例示的実施形態の詳細な説明から明らかになろう。 
添付の特許請求の範囲に本発明の特徴を具体的に開示したが、本発明は、その目的および利点と共に、添付図面と併せて以下の詳細な説明から最もよく理解できよう。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態で使用することが可能な例示的コンピュータシステムを一般的に示す概要図である。
【図２】本発明の一実施形態を実施する例示的プログラム構造を示す概要図である。
【図３】本発明の一実施形態によるコンピュータシステムで実行される印刷ステップを説明する流れ図である。
【図４】本発明の一実施形態によるリモートプリンタのインスタンス化を説明する流れ図である。
【図５】本発明の一実施形態による図２の例示的プログラム構造を使用したリモートプリンタのインスタンス化を説明する詳細な流れ図である。
【図６】本発明の一実施形態によるアプリケーションがリモートプリンタに印刷することを説明する流れ図である。
【図７】本発明の一実施形態による図２の例示的プログラム構造を使用してアプリケーションがリモートプリンタに印刷することを説明する詳細な流れ図である。
【発明を実施するための形態】
【００１３】
図面を参照して、コンピューティング環境の関連で以下に本発明を説明する。図面では同様の要素には同様の参照符号を付している。本発明の実施には必須ではないが、本発明は、ＰＣ（ＰＣ）によって実行されるプログラムモジュールなどのコンピュータ実行可能命令によって実施されるものとして説明する。一般に、プログラムモジュールには、特定のタスクを行うか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。
【００１４】
本発明は、ＰＣ以外のコンピュータシステム構成でも実施することができる。たとえば、本発明は、ハンドヘルド機器、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどに実現することができる。本発明は、通信ネットワークを通じてリンクされた遠隔（リモート）の処理デバイスによってタスクが実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモート両方のメモリ記憶装置に置くことができる。
【００１５】
本発明は、上述のような多種のコンピューティング環境に組み込むことが可能であるが、以下の本発明の詳細な説明は、従来型のＰＣ２０の形態である例示的な汎用コンピューティングデバイスの関連において開示する。
【００１６】
本発明を詳細に説明する前に、本発明が動作するコンピューティング環境を図１との関連で説明する。 
ＰＣ２０は、処理装置２１、システムメモリ２２、およびシステムメモリ２３を含み、このシステムバスはシステムメモリから処理装置２１までを含む各種のシステム構成要素を結合する。システムバス２３は、各種のバスアーキテクチャの任意のものを使用したメモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含む数タイプのバス構造のいずれでもよい。システムメモリは、読み取り専用メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含む。起動時などにＰＣ２０内の要素間の情報転送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）２６は、ＲＯＭ２４に格納される。ＰＣ２０はさらに、ハードディスク６０との間で読み出しおよび書き込みを行うハードディスクドライブ２７、および取り外し可能な磁気ディスク２９との間で読み出しおよび書き込みを行う磁気ディスクドライブ２８を含む。
【００１７】
ハードディスクドライブ２７および磁気ディスクドライブ２８は、それぞれハードディスクドライブインタフェース３２および磁気ディスクドライブインタフェース３３によってシステムバス２３に接続される。これらのドライブとそれらに関連付するコンピュータ可読媒体は、ＰＣ２０のコンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータの不揮発性の記憶を提供する。ここで説明する例示的環境ではハードディスク６０および取り外し可能磁気ディスク２９を用いるが、当業者に理解されるように、光ディスクドライブおよびディスク、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ、読み取り専用メモリなど、データを格納することができ、コンピュータからのアクセスが可能な他種のコンピュータ可読媒体もこの例示的動作環境で使用することができる。
【００１８】
ハードディスク６０、磁気ディスク２９、ＲＯＭ２４またはＲＡＭ２５には複数のプログラムモジュールを格納することができ、これにはオペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、他のプログラムモジュール３７、およびプログラムデータ３８が含まれる。ユーザは、キーボード４０やポインティングデバイス４２などの入力装置を通じてＰＣ２０にコマンドと情報を入力することができる。この他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナなどが挙げられる。これらおよびその他の入力装置は、システムバスに結合されたシリアルポートインタフェース４６を通じて処理装置２１に接続されることが多いが、パラレルポート３４、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など、他のインタフェースで接続することもできる。ビデオアダプタ４８などのインタフェースを介して、モニタ４７またはその他のタイプの表示装置もシステムバス２３に接続される。モニタに加えて、ＰＣは通例、パラレルポートインタフェース３４を通じてシステムバス２３に接続されたスピーカやプリンタ３０などの他の周辺出力装置を含む。
【００１９】
ＰＣ２０は、プリントサーバ４９などの１つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク化された環境で動作することができる。プリントサーバ４９は、別のＰＣ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、あるいは他の共通ネットワークノードでよく、通例は、ＰＣ２０との関連で上述した要素の多くを含むが、プリントサーバ４９は、ＰＣ２０からの印刷要求を接続されたプリンタ５０にルーティングすることの専用とされることが多い。図１に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）５１およびワイドエリアネットワーク（ＷＡＮ）５２を含む。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、インターネットに一般的に見られる。
【００２０】
ＬＡＮネットワーキング環境で使用する場合、ＰＣ２０はネットワークインタフェースまたはアダプタ５３を通じてローカルネットワーク５１に接続される。ＷＡＮネットワーキング環境で使用する場合、ＰＣ２０は通例、ＷＡＮ５２を通じて通信を確立するためのモデム５４またはその他の手段を含む。モデム５４は内蔵でも外付けでもよく、シリアルポートインタフェース４６を介してシステムバス２３に接続される。ネットワーク化された環境では、ＰＣ２０との関連で図示したプログラムモジュール、またはその一部は遠隔のメモリ記憶装置に格納することができる。図示したネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を使用することができることは理解されよう。
【００２１】
以下の説明では、別途示されない限りは、１つまたは複数のコンピュータによって行われる行為および動作の記号表現を参照して本発明を説明する。そのため、場合によってはコンピュータによって実行するものとしてみなされるこうした行為および動作には、構造化された形態でデータを表す電気信号のコンピュータの処理装置による操作が含まれることは理解されよう。この操作ではデータを変形するか、コンピュータのメモリシステム中の場所にデータを保持するが、それにより、当業者によく知られる態様で、コンピュータの動作が再構成されるか、そうでなければ変更される。データが保持されるデータ構造は、そのデータのフォーマットによって規定される特定のプロパティを有するメモリの物理的な場所である。しかし、本発明は前述の関連において説明しているが、以下で述べる行為および動作の多くはハードウェアに実装することもできることが当業者には理解されるように、これは限定的であることを意味するものではない。
【００２２】
本発明の重要な一態様によれば、クライアントＰＣ２０は、プリントサーバ４９の管理設定と同期して、格納された管理設定を使用してローカルにドキュメントをレンダリングし、ドキュメントを適切なネイティブプリンタ言語でプリントサーバ４９に転送する前にローカルでキューに入れる。
【００２３】
本発明によれば、クライアントＰＣ２０は、プリントサーバ４９に論理的に接続されていない時には、リモートプリンタ５０にレンダリングするためにドキュメントを準備するさらなる能力を有する。そしてクライアントＰＣ２０は、プリントサーバ４９が使用可能になるまでプリントサーバ４９をポーリングし、そうなった時間の後にドキュメントをレンダリングし、印刷のために転送することができる。
【００２４】
図面を参照すると、本発明の一実施形態を実施するための例示的ソフトウェアアーキテクチャを図２に示す。クライアントＰＣ２０上で、単一のアプリケーション３６がユーザレベルで実行されるのが図示されている。ユーザレベルとは、コンピュータで実行されるプログラムがコンピュータユーザとやりとりするレベルのことである。他の実施形態では、クライアントＰＣ２０で多くのアプリケーションが同時に実行していてもよく、そのそれぞれが印刷サブシステム２０２〜２０３にアクセスすることができる。ローカルまたはリモートにＰＣ２０に接続されたプリンタに印刷するために、大半のアプリケーション３６は、必要とされる機能のすべてをそれ自体で実装することはなく、代わりに外部モジュールに依存する。しかし、代替の実施形態では、印刷サブシステムは、アプリケーション３６自体の一部、オペレーティングシステム３５の一部、あるいは基礎となるオペレーティングシステム機能を使用する別個のプログラムであってもよい。
【００２５】
図２に示す実施形態では、ドキュメントを印刷しようとするアプリケーション３６はまずオペレーティングシステムモジュール３５と通信する。それらのオペレーティングシステムモジュール３５は、アプリケーション３６と共に、アプリケーション固有のドキュメントデータをより汎用的な中間データフォーマットに翻訳するのに必要な機能を提供し、新たにフォーマットされたドキュメントを印刷サブシステムに転送する。別の実施形態では、オペレーティングシステム３５の支援を受けずに、アプリケーション３６自体がアプリケーション固有のドキュメントデータを汎用的な中間データフォーマットに翻訳する。さらに別の実施形態では、アプリケーション３６は、どのアプリケーション３６がそれを送ったのかを示す何らかの指示とともにアプリケーション固有のドキュメントデータを印刷サブシステムに送信し、印刷サブシステムは、アプリケーション固有のデータをネイティブのプリンタ言語に翻訳することができる。あるいは、アプリケーション３６が印刷サブシステム自体を実装し、後に、アプリケーション固有のデータをネイティブのプリンタ言語に直接翻訳する。
【００２６】
アプリケーション固有のデータが中間データフォーマットに翻訳されると、オペレーティングシステムモジュール３５は、印刷サブシステムの最初のレベルであるプリンティングルータ２０１にドキュメントを転送する。このプリンティングルータ２０１は、その宛先プリンタが、プリントサーバ４９を通じてクライアントＰＣ２０に接続されたリモートプリンタ５０であるか、あるいはプリントサーバ４９を利用せずにパラレルポートインタフェース３４または何らかの他の通信媒体を通じて論理的にクライアントＰＣ２０に接続されたローカルプリンタ３０であるかなど、その宛先プリンタに応じて印刷ジョブをルーティングする。一実施形態では、プリンティングルータ２０１は、オペレーティングシステムモジュール３５またはアプリケーション３６によって印刷ジョブとともに送られてくる別個のリモートまたはローカルのインジケータに基づいてこの決定を行う。あるいは、プリンティングルータ２０１は、ドキュメント自体からこのインジケータを取り出すこともできる。印刷ジョブがリモートプリンタ５０に向けられている場合は、リモート印刷機能２０２専用のサブモジュール群がそのジョブを受け取り、処理する。一方、印刷ジョブがローカルプリンタ３０に向けられている場合は、ローカル印刷機能２０３専用のサブモジュール群がそのジョブを受け取り、処理する。他の実施形態では、プリンティングルータ２０１を印刷サブシステムのオプションのコンポーネントとしてもよい。代わりに、クライアントＰＣ２０は、リモートまたはローカルのプリンタに印刷するだけでよく、その特定のサブモジュールのセットのみを実装することができる。クライアントＰＣ２０はまた、リモートおよびローカル両方のプリンタに印刷することもできるが、両方の印刷機能に同一のサブモジュールの多くを再利用することもできる。
【００２７】
図２に示す実施形態では、ローカル印刷サブシステム２０３は図示する構成要素を備えるが、他の実施形態では、これらの構成要素によって表す機能は、ローカル印刷サブシステム２０３においてこれよりも少ないか、または多い構成要素で実装することもできる。ローカルプロバイダ２２０は、サブシステム２０３のその他の構成要素を調整し、開始から終了までローカルの印刷プロセス全体を連携させる。オペレーティングシステム機能２２１は、種々雑多の翻訳を行ったり、関数を転送したりして、オペレーティングシステム３５によってすでに実装されている機能へのアクセスを提供する。ローカルプリンタ３０をアクティブな印刷機能としてオペレーティングシステム３５に最初に登録する際に、ローカル印刷サブシステム２０３は、プリンタ固有のデータをプリンタのリスト２２３に格納する。このデータは、ローカルプリンタ３０の仕様と使用するドライバおよび設定を含むことが多い。代替の実施形態では、印刷ジョブを送信する時にのみプリンタ３０を登録し、プリンタリスト２２３で指定される各種の設定を印刷時に取り出し、適用する。
【００２８】
印刷ジョブがローカルプロバイダ２２０にルーティングされると、ジョブはまずスケジューラコンポーネント２２４に登録され、スケジューラコンポーネント２２４はジョブをスプールファイルの適切なキュー２２５に入れる。これらのスプールファイルは、中間データフォーマットのドキュメントを表す情報と、このドキュメントをレンダリングする際に使用すべき各種の印刷特性を格納する。ジョブがデスプール（ｄｅ‐ｓｐｏｏｌｉｎｇ）の状態になる（印刷準備状態）と、スケジューラ２２４は、スプールファイルをキュー２２５からプリントプロセッサ２２２に転送し、プロセッサ２２２はドキュメントを印刷する準備をする。次いでプリントプロセッサコンポーネント２２２は、ドキュメントをネイティブプリンタ言語にレンダリングするためにプリンタドライバ２２６に転送する。ローカルプリンタ３０固有のフォーマットされたレンダリング後のドキュメントはローカルプロバイダ２２０に送り返され、プロバイダ２２０は、レンダリングされたドキュメントを、ポートモニタ２０４を通じて提供されるオペレーティングシステム機能を利用して適切なプリンタに送信する。ローカルプリンタ３０を行先とする場合は、ポートモニタ２０４はたとえばパラレルポートインタフェース３４を使用することができる。オペレーティングシステム機能にアクセスすることにより、ポートモニタ２０４は、可能性として各種の通信媒体を通じて通信し、それらの通信媒体をモニタすることができる。
【００２９】
代替の実施形態では、スプールファイルのキュー２２５をローカル印刷サブシステム２０３で維持する必要はなく、代わりにオペレーティングシステム３５またはアプリケーション３６に実装することができる。たとえば、アプリケーション３６は、印刷サブシステム２０３と緊密な通信をとり、前のドキュメントが完全に印刷された時にのみ新規ドキュメントの印刷を開始するであろう。図２を参照して説明するローカルシステム２０３は通例今日の多くのＰＣ２０に見られるが、他の実施形態では、図２を参照して説明する各種の構成要素を同様の、しかしはっきり異なるモジュールに置き換えることもできるであろう。
【００３０】
本発明によれば、図２に示すように、リモート印刷サブシステム２０２は、図示した構成要素に分解される。他の実施形態では、これらの構成要素によって表す機能はこの例よりも少ないか、または多い構成要素で実装される。第１のコンポーネント、コア２１０は、ローカルプロバイダコンポーネント２２０によって提供される機能と同様の機能を提供する。すなわち、各種の他のリモートコンポーネントを連携および調整し、同時に受信から完了まで特定のジョブをトラックする。
【００３１】
一実施形態では、アクティブな印刷機能のためにリモートプリンタ５０が選択されると、リモート印刷サブシステム２０２のコア２１０は、様々なネットワーキングプロトコル（ＳＭＢ２１９やＲＰＣ２１８など）へのアクセスを有する接続マネジャ２１７を通じて、リモートプリンタ５０が接続されたプリントサーバ４９と通信する。接続マネジャ２１７は、リモートプリンタ５０に関連する情報を受け取り、この情報には管理設定、プリンタ設定、ドライバ、およびその他の設定が含まれる。この情報は再度コア２１０に渡され、コア２１０はローカル印刷サブシステムのプリンタリスト２２３と記憶空間としてのキャッシュマネジャ２１５の両方を使用する。この格納された情報は、定期的に同期マネジャ２１６によって同期されて、プリントサーバ４９に格納された最新の情報と一致させる。いくつかの実施形態では、同期マネジャ２１６は、ある一定の長さの時間の後に更新情報を要求する。他の実施形態では、同期マネジャ２１６は、情報の変更がプリントサーバ４９に登録されたという通知を受け取った後にのみ、格納された情報を更新する。さらに他の実施形態では、プリントサーバ４９に格納された情報がクライアント２０のコア２１０によって変更されると、それらの設定を先取りしてにキャッシュに入れる。
【００３２】
そして、印刷ジョブがリモート印刷サブシステム２０２にルーティングされると、コア２１０は、同期マネジャ２１６を使用して各種設定およびドライバが最新のものであることを確認し、次にローカル印刷およびリモート印刷の機能を使用してジョブをレンダリングし、印刷する。リモートプリンタ５０が接続されたプリントサーバ４９が使用不可である場合、コア２１０は、到達可能性イベントシステム２１２に信号を送ってプリントサーバ４９についてネットワークをポーリングする。サーバ４９が使用可能になると、コア２１０に通知され、レンダリングされた印刷ジョブが送信される。他の実施形態では、プリントサーバ４９が使用不可である場合、印刷ジョブがキャンセルされるか、アプリケーション３６自体または他のシステム機能が、プリントサーバ４９がオンライン状態に復帰するまで予め決められた時間間隔で印刷ジョブを送信し続ける。図２に示す実施形態では、プリントサーバ４９と通信するものとして各種コンポーネントを上記に説明したが、接続マネジャ２１７がプリントサーバ４９との論理接続を有し、すべての通信は接続マネジャ２１７を通じてルーティングされる。代替の実施形態では、それらの他のコンポーネントは、接続マネジャ２１７が使用するものと同じネットワークプロトコルを通じてネットワークハードウェアにアクセスする。
【００３３】
リモート印刷サブシステム２０２の残りのコンポーネントは、上述のコンポーネントに対するサポートを提供する。イベントマネジャ２１１は、リモート印刷サブシステム２０２のコンポーネント間で各種のイベント通知を転送する機能を果たす。ポートモニタ２１３は、ネットワーク５１を通じてプリントサーバ４９に送られる通信を調整し、外部のポートモニタ２０４との間で使用されるものと同様のシステム要求に応答する。最後に、スカベンジャー２１４は、各種の理由で（たとえば要求元のユーザがクライアントＰＣ２０からログオフしたなど）その有効性を失っているプリンタおよびジョブのインスタンスを削除する。
【００３４】
図２に示すリモート印刷サブシステム２０２のソフトウェアアーキテクチャによって行われる各種機能をさらに詳細に説明する際に、以下の図３〜７を参照するとよりこのアーキテクチャについて一層理解されよう。
【００３５】
図３に示すように、本発明による印刷サービスでは、クライアントサイドのレンダリングと管理情報の維持管理をサポートするためにいくつかの重要なタスクを行う。ステップ３０１で、印刷サービスは、プリントサーバ４９から受け取った特定のプリンタ５０に関連する管理情報およびデバイス情報の格納を調整する。一実施形態では、印刷サービスのコンポーネント（構成要素）が、プリントサーバ４９からの管理情報およびデバイス情報の受信を調整する。この情報はその後クライアントＰＣ２０上に配置されたデータ構造に格納され、そこでこの情報はその後ドキュメントを正しく印刷するためにアクセスすることができる。
【００３６】
ステップ３０３で、そのプリンタ５０がアクティブである限り、印刷サービスは、クライアント２０の管理情報およびデバイス情報をプリントサーバ４９に格納された情報と引き続き同期する。一実施形態では、この同期は、クライアント２０に格納された情報をプリントサーバ４９に格納された情報と定期的に置き換えることによって行われる。別の実施形態では、プリントサーバ４９が該当するプリンタ５０に関連する何らかの情報を更新した後にのみ情報を同期する。さらに別の実施形態では、これらの同期法を両方とも実装してネットワークトラフィックを増大し、同時にクライアントＰＣ２０に格納された情報の精度も高める。
【００３７】
ステップ３０５で、印刷サービスは、格納された管理設定およびデバイス設定をドキュメントに適用する。それらの設定を適用することにより、印刷サービスは、ドキュメントのフォーマッティングが適切であり、ネットワークセキュリティの問題が解決されるようにする。これらの設定はサーバが使用不可であってもプリントサーバ４９に格納された設定に比較的現状を反映しているので、オフラインのレンダリングが容易になる。これらの設定の適用の詳細については下記でさらに説明する。
【００３８】
最後にステップ３０７で、印刷サービスは、レンダリングしたドキュメントをプリンタ５０に転送するためにプリントサーバ４９に送信する。クライアントＰＣ２０でドキュメントをレンダリングすることにより、プリントサーバ４９から大幅な計算上の負担が取り除かれ、プリントサーバ４９をより容易にスケーリングできるようになる。サーバ４９およびクライアント２０両方の設定がステップ３０３により頻繁に同期されるので、大半の場合レンダリングプロセスは両方で同じものになり、したがって逸脱したプロセスに伴う問題が回避される。
【００３９】
上述のステップは概略的に説明したが、以下の図４〜７では本発明の実施形態をさらに詳細に示す。指定されたリモートプリンタ５０にドキュメントをプリントする際の最初のステップは、今後の印刷タスクのためにプリンタ５０をオペレーティングシステム３５に登録することである。プリンタの登録は当技術分野でよく知られているが、本発明の特定の態様は、図４および５に示す登録プロセスをユニークなものにしている。図４は、本発明に従ってオペレーティングシステム３５がプリンタ５０を登録する全体プロセスを示し、図５は、図２の例示的ソフトウェアアーキテクチャでそのプロセスを行う一方式を示す。
【００４０】
当技術分野でよく知られるように、本実施形態は、以降の印刷コマンドがプリンタ５０を識別することができるようにステップ４０１で新しいリモートプリンタ５０をオペレーティングシステム３５に追加する方法について検討している。一実施例では、オペレーティングシステム３５は、ネットワークを通じてブラウズし、使用可能なプリントサーバ４９から、それらの接続されたリモートプリンタ５０のリストを取り出す。オペレーティングシステム３５は、次いでそのリモートプリンタ５０を自動的にデータベースに追加するか、またはユーザに印刷ジョブを送信したいプリンタ５０を選択させる。他の実施形態では、ユーザが追加したいリモートプリンタ５０のネットワークパスを指定し、その新しいプリンタがオペレーティングシステムのデータベースに登録される。さらに他の実施形態では、この最初の登録がオペレーティングシステム３５によって行われず、特定の印刷ジョブがアプリケーション３６によって送信された時にのみ、以降のステップ４０３〜４０７を行う。
【００４１】
ユーザがリモートプリンタ５０を登録すると、印刷を制御するこれらのサービスが、ステップ４０３でプリントサーバ４９から管理およびデバイスの情報を受け取る。別の実装では、これらの印刷サービスは、アプリケーション３６、オペレーティングシステム３５、または印刷サブシステム２０２、２０３に実装される。プリントサーバ４９から受け取るデバイス情報は、ドライバのバージョン情報、プリンタドライバ自体、プリンタの仕様、プリンタに行われた変更、プリンタの好ましい出力などを含む。一方、プリントサーバ４９の管理設定には、リモートプリンタ５０の好ましい設定、リモートプリンタ５０に許可された特定の設定、クライアントＰＣ２０に許可されたアクセスのレベルなどが含まれる。この情報を取り出すために、クライアントＰＣ２０は登録時にこの情報をプリントサーバ４９に要求する。一実施形態では、この取り出しは、ＰＣ２０の動作を低下させない非同期プロセスである。別の実施形態では、この情報は、印刷ジョブを処理しようとする時にのみプリントサーバ４９から取り出す。
【００４２】
次いで、受け取ったこの情報をステップ４０５でクライアントＰＣ２０に格納する。この情報をローカルに格納することにより、クライアントＰＣ２０は、以後プリントサーバ４９にアクセスせずにこの管理設定とプリンタ設定を使用してドキュメントをレンダリングすることができる。これにより、より高速のレンダリングプロセスが可能になり（クライアントＰＣ２０がネットワーク通信の結果を待つ必要がないため）、またオフラインのレンダリングも可能になる（クライアントＰＣ２０が格納された管理設定を使用することができるため）。一実施形態では、印刷サブシステム、アプリケーション３６、およびオペレーティングシステム３５が、この格納された情報にアクセスする。
【００４３】
プリントサーバ４９から受け取ったデバイス情報を使用して、ステップ４０７で、クライアントＰＣ２０でプリンタインスタンスを作成する。プリンタインスタンスとは、単に、印刷サービスが印刷ジョブを処理する際にそのデバイス情報にアクセスできるように、ひとまとまりのデバイス情報を格納したデータ抽象化を指す。異なるプリンタを表すデバイス情報を別々にすることにより、プリンタインスタンスは、アプリケーション３６から特定のプリンタに送信される印刷コマンドの実行を容易にする。当技術分野でよく知られるように、プリンタインスタンスはクライアント２０で維持されることが多く、ユーザによって入力された情報、またはパラレルポートインタフェース３４、ＵＳＢなどの一般的な通信インタフェースを通じて検出された情報を用いて、ローカルに接続されたプリンタ３０を表す。一実施例では、リモートプリンタ５０を表すプリンタインスタンスは、ローカルプリンタ３０を表すプリンタインスタンスと同様のフォーマットで格納される。
【００４４】
最後に、印刷サービスのいくつかのコンポーネントはまた、ステップ４０９で、管理およびデバイス情報をプリントサーバに格納された情報と同期する。このステップは、先にステップ３０３を参照して説明したステップと実質的に同じである。クライアント２０に格納された管理およびデバイス情報をプリントサーバ４９に格納された情報と同じ状況に保つことにより、本実施形態は、印刷とオフラインレンダリングの精度を促進する。
【００４５】
これらのステップを図４の高レベルの概略図に開示したので、図５では図２の例示的なソフトウェアアーキテクチャにおけるプリンタ登録の一実施例を説明する。最初のステップ５０１はステップ４０１と同じであり、オペレーティングシステムによって実装される同様のレガシープロトコルに依存する。残りのステップはほぼ次のように分けられる。ステップ５０３〜５０７はステップ４０３に対応し、ステップ５０９〜５１１はステップ４０５に対応し、ステップ５１３はステップ４０７に対応する。
【００４６】
ユーザが新しいリモートプリンタ５０を追加すると、オペレーティングシステム３５は、リモート印刷サブシステム２０２のコアコンポーネント２１０に通知を転送する。ステップ５０３で、コア２１０はリモートプリンタ５０に関する管理設定およびデバイス情報を接続マネジャ２１７に要求する。代替の実施形態では、この機能を異なるコンポーネントに実装する必要はない。実際、コア２１０および接続マネジャ２１７は、オペレーティングシステム３５またはアプリケーション３６の一部とすることができる。
【００４７】
この要求を受け取ると、接続マネジャ２１７は、ステップ５０５で適切なネットワークプロトコル２１８、２１９を使用してプリントサーバ４９から情報を取り出す。一実施形態では、接続マネジャ２１７は、プリントサーバ４９と通信するのにＲＰＣ（ｒｅｍｏｔｅｐｒｏｃｅｄｕｒｅ ｃａｌｌ）プロトコル２１８を優先的に使用しつつ、ＳＭＢ（あるいはＵＮＩＸ（登録商標）環境におけるＳａｍｂａ）２１９などの他の一般的なプロトコルを使用して通信する能力も保持する。代替の実施形態では、他のプロトコルを使用してクライアントＰＣ２０とプリントサーバ４９間の通信チャネルを実装する。クライアントＰＣ２０とプリントサーバ４９のどちらか一方が特定のネットワーキングプロトコルをサポートしない場合は、相互に理解可能なプロトコルが選択されるまでそれら２つのコンピュータは代替のプロトコルを試みる。プリントサーバ４９は通例、上述のプリンタインスタンスと同様のデータ抽象化に管理およびデバイス情報を格納する。したがって、一実施形態では、接続マネジャ２１７は、特定のリモートプリンタ５０についての情報を要求し、プリントサーバ４９はプリンタ５０のネットワーク識別子を、データ抽象化に格納されたそのプリンタの関連した特性と照合し、それらの関連した特性を返す。
【００４８】
接続マネジャ２１７は、この情報を受け取ると、ステップ５０７で処理のためにその情報をコア２１０に転送する。一実施形態では、コア２１０は、プリントサーバ４９によって適用された管理設定を、ステップ５０９でリモートサブシステムのキャッシュマネジャ２１５のキャッシュエントリに格納する。キャッシュマネジャ２１５は、情報を格納するキャッシュエントリを備えるデータ構造である。一実施例では、識別子テーブル、好ましくはハッシュテーブルを使用してそのキャッシュエントリをそれぞれのリモートプリンタに関連付けて、キャッシュエントリへのアクセスを高速にする。あるいは、当技術分野で周知の他の記憶手段を使用して、管理設定を格納し、アクセスする。
【００４９】
一実施形態では、管理設定はリモート印刷サブシステム２０２に格納されるが、コア２１０によって受け取られる他のデバイス情報はステップ５１１でローカルプロバイダ２２０に転送される。ステップ５１３で、ローカルプロバイダ２２０は、そのプリンタリスト２２３中のリモートプリンタ５０を表すローカルのシャドウプリンタインスタンスを作成する。このリモートプリンタ５０に対応するローカルのシャドウプリンタインスタンスは、上述のローカルプリンタ３０に対応するローカルプリンタインスタンスと同じフォーマットとされる。しかし、ローカルプリンタ３０を表すローカルプリンタインスタンスは外部ポートモニタ２０４を通じて印刷ジョブを送信するのに対して、リモートプリンタ４９を表すローカルシャドウプリンタインスタンスは、リモート印刷サブシステムのポートモニタ２１３を通じて印刷ジョブを送信する。ローカル印刷サブシステム２０３は、それらリモートプリンタ５０への印刷コマンドを処理する際にはローカル印刷機能を利用して、すべての他のローカルプリンタインスタンスと同様にローカルシャドウプリンタインスタンスを扱うことが好ましい。
【００５０】
ステップ５１５で、リモート印刷サブシステム２０２内のプロセスが、クライアントＰＣ２０に格納された管理およびデバイス情報がプリントサーバ４９に格納された情報と同期されていることを確認する。一実施形態では、同期マネジャ２１６が更新された情報を定期的にプリントサーバ４９に要求し、これによりキャッシュマネジャ２１５およびローカル印刷サブシステム２０３に格納された情報を置き換える。別の実施形態では、同期マネジャ２１６は定期的に、ローカルに格納された管理およびデバイスの情報をプリントサーバ４９の情報と比較する。それらの情報が異なる場合、同期マネジャ２１６は、キャッシュマネジャ２１５およびローカル印刷サブシステム２０３に格納された相違する情報を置き換える。さらに別の実施形態では、コア２１０は、接続マネジャ２１７を通じてプリントサーバ４９をポーリングして、プリントサーバ４９上の管理およびデバイス設定が変化したかどうかを判定する。プリントサーバ４９は、変化が生じたかどうかを示す小さなデータ構造を保持することができ、このデータ構造にはコア２１０からアクセスすることができる。コア２１０が受け取った応答は同期マネジャ２１６に送信され、同期マネジャ２１６はローカルに格納された設定を適切に更新する。これらの方法は単に例示的なものであり、管理設定およびデバイス設定を新しい内容に保つためには同期マネジャ２１６またはリモート印刷サブシステム２０２の別のコンポーネントは他の方法を使用することができる。
【００５１】
リモートプリンタ５０がオペレーティングシステム３５に登録されると、アプリケーション３６はそのプリンタに印刷ジョブを送ることができる。本発明が企図するユニークな印刷プロセスを図６および７に記載する。図６は、アプリケーション３６がリモートプリンタ５０に印刷する全体的なプロセスを記載し、図７は、図２の例示的ソフトウェアアーキテクチャでそのプロセスを行う一方式を示している。
【００５２】
リモートプリンタ５０にデータを印刷する際の最初のステップは、言うまでもなく、プリント機能を有するアプリケーション３６にアクセスし、その機能を利用することである。したがって、ステップ６０１では、ユーザはアプリケーション３６から何らかの印刷コマンドを送信し、リモートプリンタ５０にドキュメントを送信すべきことを知らせる。別のアプリケーションでは、別の方法を使用してこの機能を行う。一実施例では、ユーザはメニューから、あるいはキーボード４０のキーの組み合わせてまたは連続して押すことで「印刷」コマンドを選択する。この印刷コマンドは選択方法に関係なく、次いで、ユーザに対象とするプリンタに関する入力を求める。代替の実装では、リモートプリンタ５０は、現在の「デフォルト」プリンタとして事前に選択してもよい。
【００５３】
この印刷コマンドを処理すると、アプリケーション３６は、オペレーティングシステムモジュール３５の支援により、ステップ６０３で、独自の（ｐｒｏｐｒｉｅｔａｒｙ）アプリケーションフォーマットで格納されたドキュメントを中間データフォーマットに翻訳する。この中間データフォーマットは、リモートプリンタ５０でドキュメントを正確に印刷するのに十分な情報を含んでいる。しかし、この中間データフォーマットは、リモートプリンタ５０にもアプリケーション３６にも固有ではない。このようにして、その特定のアプリケーションソースやターゲットプリンタを気にすることなくドキュメントをフォーマットし、変更することができ、こうした変形を実行するこれらのサブシステムは、プリンタ５０またはアプリケーション３６の選択にはほとんど依存しない。しかし、他の実施形態では、中間データフォーマットが必要とされないこともある。アプリケーション３６が基礎となるオペレーティングシステム３５によって提供される機能にアクセスせずに直接リモートプリンタ５０んい印刷する上述の場合は、アプリケーション３６は単に、送信のためにファイルをネイティブプリンタ言語に翻訳しなければならなくなるまでは、自身のアプリケーション固有のフォーマットを使用する。さらに他の実施形態では、ドキュメントに行われるフォーマットの変更は、異なるアプリケーション固有のフォーマットそれぞれに関して印刷サブシステムによって実行され、中間データへの翻訳を不要にする。
【００５４】
中間ファイルを作成すると、ステップ６０７でそれをクライアント２０のキューに入れる。一実施形態では、このキューはプリンタインスタンスにつき１つのキューをもつデータ構造を表す。キューにドキュメントを追加する際、当分野の技術者に良く知られるように、そのドキュメントは一定の例外を除いて先入れ先出しのフォーマットで配置される。キューに最初に追加されたドキュメントはリモートプリンタ５０に最初に印刷される。リモートプリンタ５０に接続されたプリントサーバ４９はまた、それ自身のキューに関するデータをクライアント２０に送信し、２つのコンピュータは各自のキューを併合して、クライアント２０が、プリントサーバ４９によって受け取られる他の印刷ジョブとの関係で適切な時間に印刷ジョブを送るようにする。クライアント２０は、受け取ったデータを使用して、その印刷ジョブがいつ印刷されることになるか、そして他のユーザのドキュメントとの関係でどのような順序で印刷されることになるかをユーザに通知することもできる。他の実施形態では、このキューをアプリケーション３６内で実装するか、あるいはキューを実装しなくともよく、元の印刷要求が否定された場合、アプリケーション３６は予め決められた時間間隔で印刷要求を送信する。
【００５５】
ドキュメントがキューの先頭に到達し、リモートプリンタ５０に送信される状態になると、クライアント２０は、ステップ６０９でプリントサーバ４９が使用可能であるかどうかを判定する。当技術分野でよく知られるように、クライアント２０はこの決定をいくつかの可能な方法の１つで行う。その方法には、単に基礎となるネットワーク機能を使用してプリントサーバ４９にｐｉｎｇすること、同意されたネットワークプロトコルの１つを使用して印刷ジョブを受け付けることができるかどうかをプリントサーバ４９に尋ねること、あるいは印刷要求が失敗するまではプリントサーバ４９が使用可能であると想定することが含まれる。クライアント２０が、プリントサーバ４９が使用可能であると判断した場合は、中間ファイルをリモートプリンタ５０のネイティブプリンタ言語にレンダリングし、結果として得られるドキュメントをステップ６１１でプリントサーバ４９に送信する。
【００５６】
ステップ４０５〜４０７に記載したように、リモートプリンタ５０のドライバ、プリンタ設定、および管理設定に関する情報はクライアント２０に格納されているので、中間ファイルを効率的にネイティブプリンタ言語にレンダリングすることができる。これらの格納された設定は、同期マネジャ２１６による最後の更新時に格納された古い設定であっても、特定のドキュメントを印刷する直前にプリントサーバ４９から受け取った新しい設定であってもよい。一実施形態では、ネットワークトラフィックは増大するが新しい設定を利用することが好ましい方法である。代替の実施形態では、サーバ４９とクライアント２０の設定が同期されない可能性がより高くなるが、古い設定が好ましい。デバイスおよびプリンタの設定はリモートプリンタ５０の物理的特性を記述するが、管理設定は、レンダリングされる際に中間ファイルに各種のフォーマッティングの編集と印刷の編集（紙の両面に内容を印刷するなど）を行うことを要求することが好ましい。他の実施形態では、ステップ６０３の前にアプリケーション３６によって管理設定を受け取り、アプリケーション３６はこれらの設定を使用して、すでに管理設定が適用された中間ファイルを作成する。さらに他の実施形態では、初めにプリンタおよび管理の設定を中間ファイルに適用し、次いでそのプリンタ設定とドライバを使用して、中間ファイルをリモートプリンタ５０により可読のドキュメントに変換する。そのようなドキュメントは、リモートプリンタ５０のネイティブのプリンタ言語で書かれる。レンダリングされるとそのドキュメントはプリントサーバ４９に送られ、そこで該当するリモートプリンタ５０にルーティングされる。プリントサーバ４９は、必要に応じてそのドキュメントを該当するプリンタのキューに追加するが、一般的な印刷ネットワークとは異なり、プリントサーバ４９は、ファイルをプリンタ５０に送る前にファイル変換やフォーマットの変更を行う必要がない。ドキュメントをクライアント２０でレンダリングすることにより、プリントサーバ４９のリソースが他のタスクのために解放される。
【００５７】
クライアント２０がポーリングした時にプリントサーバ４９が使用可能でない場合は、中間ファイルは単にステップ６１３でそのプリンタのキューの中に残る。一実施形態では、クライアント２０は、予め決められた時間間隔でプリンタサーバ４９をポーリングして、サーバが使用可能になったか否かを判定する。クライアント２０は、プリントサーバ４９が使用可能になった可能性があることを示すネットワークまたはデバイスのアクティビティを待機することもできる。クライアント２０は次いで予め決められた時間間隔と特定アクティビティの後の両方でポーリングを行って、できるだけ早く印刷できるようにする。代替の実施形態では、クライアント２０は、予め決められた時間間隔でプリントサーバ４９をポーリングする。不都合なことに、この時間間隔は、通例は、ドキュメントを印刷する前に起こりうる待機時間を延長して長すぎるか、あるいは短すぎ、その場合は貴重なネットワークとＣＰＵのリソースをポーリングで使用してしまう。別の実施形態では、クライアント２０は、デバイスとネットワークのアクティビティに耳を傾けて、告知を受け取るとプリントサーバ４９をポーリングする。しかし、クライアント２０がデバイスまたはネットワークの告知を見逃した場合は、クライアント２０はプリンタサーバ４９をポーリングせず、ドキュメントを印刷しないことになる。これらの２つの方法を組み合わせることにより、第１の実施形態は上記の不都合点の多くを回避しつつ、両方式の利点を備える。
【００５８】
これらのステップを高レベルで説明したので、図７では、図２の例示的ソフトウェアアーキテクチャにおける本発明の一実施形態による印刷プロセスの一実施例を示す。最初のステップ７０１〜７０３は、ステップ６０１および６０３と同じである。残りのステップは次のように分けられる。ステップ７０５〜７０７はステップ６０５に対応し、ステップ７０９〜７１１はステップ６０７に対応し、ステップ７１３はステップ６０９に対応し、ステップ７１５〜７１７はステップ６１１に対応し、ステップ７１９〜７２１はステップ６１３に対応する。アプリケーション３６を通じて印刷コマンドを送信し、中間データフォーマットのファイルを作成する最初のステップについては上記でかなり詳細に説明したので、以下の説明はステップ７０５から始める。
【００５９】
アプリケーション３６およびオペレーティングシステムモジュール３５が中間ファイルフォーマットを作成すると、ステップ７０５でプリンティングルータ２０１により中間ファイルをリモート印刷サブシステムのコア２１０にルーティングする。一実施形態では、プリンティングルータ２０１は、オペレーティングシステム３５に登録されたリモートおよびローカルのプリンタのリストを保持しており、印刷ジョブをルータ２０１に転送すると、ターゲットプリンタがどのリストのメンバであるかに基づいて印刷ジョブが適切な印刷サブシステムに送信される。代替の実施形態では、その印刷ジョブがリモートプリンタを行先とするかまたはローカルプリンタを行先とするかについての別個の指示とともに印刷ジョブを送信し、その指示をルータ２０１がインターセプトし、処理する。
【００６０】
中間ファイルを受け取り、処理すると、ステップ７０９でコアは中間ファイルをローカルプロバイダ２２０に転送する。一実施形態では、この転送されたファイルは、ローカル印刷ジョブと同様にローカルプロバイダ２２０が受け取り、処理する。したがって、本発明のこの実施形態では、リモート印刷の状況においてローカルの印刷機能を使用し、それら機能の多くを二重にする必要性をなくしている。ステップ７１１で、ローカルプロバイダ２２０は、その印刷ジョブがどのローカルシャドウプリンタインスタンスを対象とするかを判定し、そのローカルシャドウプリンタインスタンスに関連付けられたキューにジョブを入れる。代替の実施形態では、リモート印刷サブシステム２０２は、ローカルの印刷機能をそれ自体で実装し、したがって印刷ジョブをリモートキューに入れ、ローカル印刷サブシステム２０３がローカル印刷ジョブに集中できるようにする。
【００６１】
印刷ジョブが該当するキューの先頭に来るようにすると、レンダリング済みのドキュメントをプリントサーバ４９に送信する前に、リモートポートモニタ２１３がまずプリントサーバ４９が使用可能であるかどうかをステップ７１３で判定する。一実施形態では、リモートポートモニタ２１３は、ローカル印刷サブシステム２０３によってレンダリングが行われる前に使用可能性を調べる。代替の実施形態では、印刷ドキュメントの一部の処理がパイプライン化される。したがって、リモートポートモニタ２１３は、ローカル印刷サブシステム２０３によって何らかのレンダリングが行われた後にのみ使用可能性をチェックする。しかし、サーバが使用不可であると判定されると、第２の実施形態で部分的にレンダリングされたデータが失われるので両実施形態は収斂する。
【００６２】
プリントサーバ４９が使用可能である場合、例示的な実施形態では、ローカルプロバイダ２２０は、プリントプロセッサ２２２に印刷ジョブを転送し、プリントプロセッサ２２２は、ローカルシャドウプリンタインスタンスに関連付けられ、格納されたデバイスおよび管理の設定を適用する。これらの管理設定には、ステップ６１１に関して上述した設定が含まれる。キャッシュマネジャ２１５によって格納されたキャッシュエントリは、管理設定をそれぞれのリモートプリンタ５０およびプリントサーバ４９と一致させるので、プリンタの識別がキャッシュマネジャ２１５に送られ、要求された設定が返される。ある場合では、コア２１０は、現在格納されている設定がプリントサーバ４９に格納された設定と同期していることを検証する。一実施形態では、コア２１０は、同期マネジャ２１６と通信し、接続マネジャ２１７を使用して上記のステップ５０９で記載したように最新の管理設定でキャッシュマネジャ２１５を更新する。しかし、このプロセスの間にプリントサーバ４９が使用可能でない場合は、プリントプロセッサ２２２は格納されたデバイスおよび管理の設定を更新せずに使用する。格納された設定を更新せずに印刷プロセスを続行できるようにすることにより、本実施形態はオフラインの印刷とレンダリングを容易にする。他の実施形態では、コア２１０は、印刷プロセスを続ける前に管理設定をプリントサーバ４９と更新することを要求し、オフラインの印刷とレンダリングを妨げる。さらに他の実施形態では、コア２１０は管理設定を更新せず、代わりに、明示的に更新を指示されるまでは同期マネジャ２１６によって最後に同期された管理設定を使用する。
【００６３】
ステップ７１５で、クライアント２０に格納されたプリンタドライバ２２６とオペレーティングシステム機能２２１によってドキュメントを適切なネイティブプリンタ言語に翻訳する。このデバイスおよび管理設定の適用と適切なプリンタドライバによる翻訳は、当技術分野でよく知られる方法を使用して行われる。実際、一実施形態では、これらの機能はほとんど変更を行わない従来のローカル印刷サブシステム２０３によって実行され、それにとってファイルの最終的な宛先は透過となる。
【００６４】
本発明の一実施形態では、印刷ドキュメントの一部の処理がパイプライン化される。したがって、ステップ７１７で、ネイティブプリンタ言語になっているドキュメントの一部をリモート印刷サブシステムのポートモニタ２１３を通じて送信する。ドキュメントの一部分がレンダリングされると、後続の部分がレンダリングされている間、それらはポートモニタ２１３を通じて送信される。言うまでもなく、上述のように、リモートポートモニタ２１３は、これらのタスクを連携させるだけである。リモートポートモニタ２１３は接続マネジャ２１７と通信し、接続マネジャ２１７は、印刷ジョブをプリントサーバ４９に送るのに必要なネットワークプロトコルを実装する。代替の実施形態では、リモートポートモニタ２１３は、ドキュメントをレンダリングと同時に送信する必要はない。代わりに、ローカルプロバイダ２２０が、ドキュメントをスプールファイルのキュー２２５に入れる前にレンダリングするか、またはローカルプロバイダ２２０が、ドキュメントをポートモニタ２１３に転送する前にキューから完全にレンダリングする。ここに特定した動作を実行する正確な態様は、本発明の実施にとって本質的ではない。
【００６５】
図７のステップ７１３に開示するように、リモートポートモニタ２１３は、プリントサーバ４９が使用可能でないと判断した場合、制御はステップ７１９に渡り、そこでローカル印刷サブシステム２０３による設定の適用と翻訳が停止され、プリントサーバ４９に対応するクライアントのキューが一時停止される。その後、ステップ７２１でクライアント２０はサーバ４９のポーリングを開始する。一実施形態では、ローカルプロバイダ２２０によって管理されるキューをリモートポートモニタ２１３によって一時停止する。これは、この方法が、多くの既存のローカル印刷サブシステム２０３でプリンタの障害に対処する単純でよく知られる方法だからである。代替の実施形態では、ローカル印刷サブシステム２０３がプリンタ障害に対処する任意の特定の方法を実装し、これには、すべての印刷ジョブをキャンセルし、アプリケーション３６がその後の何らかの時点で印刷ジョブデータを再送すべきことを知らせることが含まれる。
【００６６】
本発明の一実施形態では、ステップ７２１で、リモート印刷サブシステム２０２に組み込まれた到達可能性イベントシステム２１２が接続マネジャ２１７を使用してプリントサーバ４９をポーリングする。到達可能性イベントシステム２１２は、ステップ６１３との関係で上述したポーリング方式の１つを実装することが好ましい。リモートの到達可能性イベントシステム２１２が、プリントサーバ４９が使用可能である旨の通知をコア２１０に送信すると、キューの一時停止が解除され、プリント動作がステップ７１５に進んで、中間ファイルが処理され、プリントサーバ４９に送られる。
【００６７】
リモート印刷サブシステムのコンポーネントの一部またはすべてに障害が発生した場合、あるいはすべての印刷ジョブが実行される前にユーザがログオフした場合には、本発明の一実施形態はスカベンジャーコンポーネント２１４も提供する。スカベンジャー２１４は、キャンセルされたか、もはや印刷すべきでないジョブに対応するローカルシャドウプリンタインスタンス、キャッシュされたエントリ、あるいはスプールファイルが確実に削除されるようにする。したがって、複数のサブシステムおよびコンポーネントにわたって印刷ジョブを調整することに伴う潜在的な問題が、このコンポーネントの機能によって緩和される可能性がある。
【００６８】
本発明の原理を適用できる多くの可能な実施形態に鑑みて、図面との関係でここに記載する実施形態は、単に説明のために過ぎず、本発明の範囲を限定するものとして解釈すべきでないことを認識されたい。たとえば、当業者には理解されるように、ソフトウェアとして図示した例示的実施形態の要素はハードウェアに実装してもよく、その逆も同様であり、あるいはここに例示した実施形態は本発明の精神から逸脱することなく構成と詳細を変更することができる。さらに、説明のためのステップは、本発明から逸脱することなく変更、補足、および／または順序を変えてもよい。したがって、本明細書に記載する本発明は、添付の特許請求の範囲およびその均等物に該当するそのようなすべての実施形態が企図されている。
【符号の説明】
【００６９】
２０  ＰＣ
２１  処理装置
２２  システムメモリ
２３  システムバス
２４  ＲＯＭ
２５  ＲＡＭ
２６  ＢＩＯＳ
２７  ハードディスクドライブ
２８  磁気ディスクドライブ
２９  磁気ディスク
３０  プリンタ
３２  ハードディスクドライブインタフェース
３３  磁気ディスクドライブインタフェース
３４  パラレルポート
３５  オペレーティングシステム
３６  アプリケーションプログラム
３７  プログラムモジュール
３８  プログラムデータ
４０  キーボード
４２  ポインティングデバイス
４６  シリアルポートインタフェース
４８  ビデオアダプタ
４９  プリントサーバ
５０  リモートプリンタ
５１  ＬＡＮ
５２  ＷＡＮ
５４  モデム
６０  ハードディスク
２０１  プリンティングルータ
２０２、２０３  印刷サブシステム（サブモジュール群）
２０４、２１３  ポートモニタ
２１０  コア
２１１  イベントマネジャ
２１２  到達可能性イベントシステム
２１４  スカベンジャー
２１５  キャッシュマネジャ
２１６  同期マネジャ
２１７  接続マネジャ
２１８  ＲＰＣ
２１９  ＳＭＢ
２２０  ローカルプロバイダ
２２１  オペレーティングシステム機能
２２２  プリントプロセッサ
２２３  プリンタリスト
２２４  スケジューラコンポーネント
２２５  キュー
２２６  プリンタドライバ
【図１】
2011081843.tif 000003
【図２】
2011081843.tif 000004
【図３】
2011081843.tif 000005
【図４】
2011081843.tif 000006
【図５】
2011081843.tif 000007
【図６】
2011081843.tif 000008
【図７】
2011081843.tif 000009
【手続補正書】
【提出日】平成23年2月14日(2011.2.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワーク化されたクライアントコンピュータ、ターゲットとなるネットワーク化されたプリンタデバイス、およびプリントサーバコンピュータを含むネットワーク上で、ドキュメントをリモート印刷サブシステムを通じて前記プリントサーバコンピュータに送信し、前記ターゲットとなるネットワーク化されたプリンタデバイスにより印刷する方法であって、
前記プリントサーバコンピュータによって適用される前記ターゲットとなるネットワーク化されたプリンタデバイスの管理設定を前記リモート印刷サブシステムを使用して前記クライアントコンピュータ上に格納するステップであって、前記管理設定は前記クライアントコンピュータにドキュメントを前記ターゲットとなるネットワーク化されたプリンタデバイスのネイティブプリンタ言語でレンダリングすることを可能にするのに少なくとも十分な情報を含む、ステップと、
前記クライアントコンピュータ上の同期マネジャを使用して、前記格納された管理設定を更新するステップであって、現在のプリントサーバコンピュータの管理設定との同期を維持するステップと、
前記格納された管理設定を前記クライアントコンピュータ上で前記ドキュメントに適用するステップと、
前記管理設定に基づいて、前記クライアントコンピュータ上で、前記ドキュメントを前記ターゲットとなるネットワーク化されたプリンタデバイスの前記ネイティブプリンタ言語でレンダリングするステップであって、ローカル印刷サブシステムを使用して前記ドキュメントをレンダリングするステップと、
前記レンダリングしたドキュメントを前記ローカル印刷サブシステムにより前記リモート印刷サブシステムを通じて前記プリントサーバコンピュータに送信するステップと、
前記レンダリングしたドキュメントを前記プリントサーバコンピュータによる追加的な変換なしに前記ターゲットとなるネットワーク化されたプリンタデバイスを使用して印刷するステップと
を備えることを特徴とする方法。
【請求項２】
前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップと前記レンダリングしたドキュメントを送信するステップは、実質的に同時に行われることを特徴とする請求項１に記載の方法。
【請求項３】
前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップは、
前記プリントサーバコンピュータが使用可能でない時には前記ネットワークをポーリングして前記プリントサーバコンピュータが使用可能になるときを判定するステップ
をさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記ネットワークをポーリングするステップは、前記プリントサーバコンピュータが使用可能である可能性があることを示すデバイスおよびネットワークアクティビティに応答して前記プリントサーバコンピュータをポーリングするステップをさらに備えることを特徴とする請求項３に記載の方法。
【請求項５】
前記ネットワークをポーリングするステップは、前記ネットワークを定期的にポーリングするステップをさらに備えることを特徴とする請求項３に記載の方法。
【請求項６】
前記クライアントコンピュータ上で前記ドキュメントをレンダリングするステップは、前記ドキュメントをレンダリングするために前記クライアントコンピュータ上でキューに加えるステップを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記管理設定を更新するステップは、クライアントコンピュータ上で前記ターゲットとなるネットワーク化されたプリンタデバイスを登録することと関連して行われることを特徴とする請求項１に記載の方法。
【請求項８】
前記格納された管理設定を前記ドキュメントに適用するステップは、
前記プリントサーバコンピュータが使用可能でない場合は、前記格納された設定を前記ドキュメントに適用するステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項９】
前記格納された管理設定を前記ドキュメントに適用するステップは、
前記プリントサーバコンピュータが使用可能である場合は、前記格納された管理設定を前記ドキュメントに適用する前に前記格納された管理設定を更新するステップを行うステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１０】
アプリケーションがドキュメントを印刷するコマンドを発行することに応答してクライアントサイドの印刷レンダリングを容易にするネットワークの中のクライアントコンピュータシステムであって、
前記印刷コマンドを処理および解釈するオペレーティングシステムと、
指定されるターゲットとなるネットワーク化されたプリンタデバイスに応じて前記印刷コマンドをリモート印刷サブシステムにルーティングするプリンティングルータと、
プリントサーバコンピュータから受け取った管理設定を格納し、ネイティブプリンタ言語に変換された前記ドキュメントを前記プリントサーバコンピュータに転送して、前記プリントサーバコンピュータによる追加的な変換なしに前記変換されたドキュメントの印刷をさせる前記リモート印刷サブシステムであって、前記管理設定は前記クライアントコンピュータに前記ドキュメントを前記ターゲットとなるネットワーク化されたプリンタデバイスの前記ネイティブプリンタ言語に変換することを可能にするのに少なくとも十分な情報を含む、前記リモート印刷サブシステムと、
前記格納された管理設定を前記ドキュメントに適用し、前記ターゲットとなるネットワーク化されたプリンタデバイスによって利用される前記ネイティブプリンタ言語に従って前記ドキュメントを変換するレンダリングサブシステムと、
前記プリントサーバコンピュータに、前記ターゲットとなるネットワーク化されたプリンタデバイスの現在の管理設定を要求する同期マネジャと、
前記レンダリングシステムにより変換されたドキュメントをリモート印刷サブシステムを通じて前記プリントサーバコンピュータに送信するローカル印刷サブシステムと、
を備えたことを特徴とするコンピュータシステム。
【請求項１１】
前記同期マネジャは、前記現在の管理設定を定期的に要求することを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１２】
前記同期マネジャは、前記レンダリングサブシステムが前記格納された管理設定を適用する前に前記現在の管理設定を要求することを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１３】
前記プリントサーバコンピュータが使用可能でない場合に前記プリントサーバコンピュータをポーリングする到達可能性イベントシステム
をさらに備えたことを特徴とする請求項１０に記載のコンピュータシステム。
【請求項１４】
前記到達可能性イベントシステムは、前記プリントサーバコンピュータを定期的にポーリングすることを特徴とする請求項１３に記載のコンピュータシステム。
【請求項１５】
前記到達可能性イベントシステムは、前記プリントサーバコンピュータが使用可能である可能性があることを示すデバイスおよびネットワークのアクティビティに応答して前記プリントサーバコンピュータをポーリングすることを特徴とする請求項１３に記載のコンピュータシステム。
【請求項１６】
請求項１〜９の何れか一項に記載されたステップを実行するコンピュータ実行可能命令を備えるコンピュータ可読媒体。
【請求項１７】
コンピュータに、請求項１〜９の何れか一項に記載されたステップを実行させるためのプログラム。
【請求項１８】
アプリケーションがドキュメントを印刷するコマンドを発行するのに応答してクライアントサイドの印刷レンダリングを容易にするネットワークシステムであって、
クライアントコンピュータであって、
前記印刷コマンドを処理および解釈するオペレーティングシステムと、
指定されるターゲットとなるネットワーク化されたプリンタデバイスに応じて前記印刷コマンドをリモート印刷サブシステムにルーティングするプリンティングルータと、
プリントサーバコンピュータから受け取った管理設定を格納し、ネイティブプリンタ言語に変換された前記ドキュメントを前記プリントサーバコンピュータに転送する前記リモート印刷サブシステムであって、前記管理設定は前記クライアントコンピュータに前記ドキュメントを前記ターゲットとなるネットワーク化されたプリンタデバイスの前記ネイティブプリンタ言語に変換することを可能にするのに少なくとも十分な情報を含む、前記リモート印刷サブシステムと、
前記格納された管理設定を前記ドキュメントに適用し、前記ターゲットとなるネットワーク化されたプリンタデバイスによって利用される前記ネイティブプリンタ言語に従って前記ドキュメントを変換するレンダリングサブシステムと、
前記ターゲットとなるネットワーク化されたプリンタデバイスの現在の管理設定を前記プリントサーバコンピュータに要求する同期マネジャと
前記レンダリングシステムにより変換されたドキュメントをリモート印刷サブシステムを通じて前記プリントサーバコンピュータに送信するローカル印刷サブシステムと、
を備えたクライアントコンピュータと、
前記ターゲットとなるネットワーク化されたプリンタデバイスの前記現在の管理設定を保持し、要求を受信すると前記現在の管理設定を前記クライアントコンピュータに送信し、前記プリンタサーバによる前記変換されたドキュメントの追加的な変換なしに前記変換されたドキュメントを前記ターゲットとなるネットワーク化されたプリンタデバイスに転送する前記プリントサーバコンピュータと、
前記変換されたドキュメントから出力を作成する前記ターゲットとなるネットワーク化されたプリンタデバイスと
を備えたことを特徴とするネットワークシステム。