(57)【特許請求の範囲】
【請求項１】
文書データをサーバに転送し、サーバに格納されているキャッシングデータを利用して印刷イメージデータを生成して出力するか、サーバを経由せずにネットワークに繋がっているプリンタに出力するかをユーザの判断に従って決定する決定手段と、
前記決定手段によりサーバ経由で出力すると決定された場合、サーバに文書データを転送する手段と、
前記決定手段によりサーバ経由を経由せずにネットワークに繋がっているプリンタに出力すると決定された場合、文書データに従って印刷データを作成し、サーバを経由せずにネットワークに繋がっているプリンタに印刷データを転送するか、あるいは文書データを文字コードデータに変換し、変換した文字コードデータをプリンタに転送する手段とを有することを特徴とする情報処理装置。
【請求項２】
文書データをサーバに転送し、サーバに格納されているキャッシングデータを利用して印刷イメージデータを生成して出力するか、サーバを経由せずにネットワークに繋がっているプリンタに出力するかをユーザの判断に従って決定する決定手段と、
前記決定手段によりサーバ経由で出力すると決定された場合、サーバに文書データを転送する手段と、
前記決定手段によりサーバ経由を経由せずにネットワークに繋がっているプリンタに出力すると決定された場合、文書データに従って印刷データを作成し、サーバを経由せずにネットワークに繋がっているプリンタに印刷データを転送するか、あるいは文書データを文字コードデータに変換し、変換した文字コードデータをプリンタに転送する手段とを有する情報処理装置と、
前記情報処理装置から転送される文書データに従ってキャッシュデータをアクセスして印刷データを作成する手段と、作成された印刷データをプリンタに転送する手段とを有するサーバとを有することを特徴とする印刷システム。
【請求項３】
文書データをサーバに転送し、サーバに格納されているキャッシングデータを利用して印刷イメージデータを生成して出力するか、サーバを経由せずにネットワークに繋がっているプリンタに出力するかをユーザの判断に従って決定する決定ステップと、
前記決定ステップによりサーバ経由で出力すると決定された場合、サーバに文書データを転送するステップと、
前記決定ステップによりサーバ経由を経由せずにネットワークに繋がっているプリンタに出力すると決定された場合、文書データに従って印刷データを作成し、サーバを経由せずにネットワークに繋がっているプリンタに印刷データを転送するか、あるいは文書データを文字コードデータに変換し、変換した文字コードデータをプリンタに転送するステップとを有することを特徴とする情報処理方法。
【請求項４】
文書データをサーバに転送し、サーバに格納されているキャッシングデータを利用して印刷イメージデータを生成して出力するか、サーバを経由せずにネットワークに繋がっているプリンタに出力するかをユーザの判断に従って決定する決定ステップと、
前記決定ステップによりサーバ経由で出力すると決定された場合、サーバに文書データを転送するステップと、
前記決定ステップによりサーバ経由を経由せずにネットワークに繋がっているプリンタに出力すると決定された場合、文書データに従って印刷データを作成し、サーバを経由せずにネットワークに繋がっているプリンタに印刷データを転送するか、あるいは文書データを文字コードデータに変換し、変換した文字コードデータをプリンタに転送するステップとを有するプログラムを記憶することを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、サーバに接続された少なくとも１台のパーソナルコンピュータなどの情報処理装置から印刷命令が実行された際、効率よく印刷を行うことができる情報処理装置、印刷システム、情報処理方法および記憶媒体に関する。
【０００２】
【従来の技術】
従来、サーバに接続されている複数のパーソナルコンピュータ（パソコン）から印刷しようとする場合、パソコン上で出力したいプリンタを選択し、プリンタに適したデータを作成し、サーバを経由してプリンタに出力するという処理を行っていた。
【０００３】
このような印刷処理を行う場合、特開平９−２３４９１４号公報には、各々のパソコンで効率よく印刷できるように、同一の文字データがあった場合、最初の文字だけイメージで出力し、次の文字からは文字コードだけを出力する技術が示されている。
【０００４】
【発明が解決しようとする課題】
しかしながら、従来の印刷処理では、１つの文書の出力が終了すると、プリンタの状態がわからなくなってしまう等の理由から、次の文書を印刷するときに前回出力したときと同じ文字があったとしても、もう一度文字の展開をやり直す必要があった。
【０００５】
また、従来、パソコンで文字展開を行うか、プリンタで文字展開を行うかの選択は、ユーザに任せられていたので、どちらで文字展開を行った方が、有利なのかの判断は、ユーザの知識に依存していた。
【０００６】
そこで、本発明は、かかる背景の下になされたものであり、１文書単位にしかキャッシングを行えず、非効率的であった印刷システムに対し、複数の文書印刷時でも効率よくキャッシングを行え、高速に文書出力を行うことができる情報処理装置、印刷システム、情報処理方法および記憶媒体を提供することを目的とする。
【０００７】
また、本発明は、印刷したい文書データの種類によって効率よく印刷することが可能である情報処理装置、印刷システム、情報処理方法および記憶媒体を提供することを他の目的とする。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明の請求項１に記載の情報処理装置は、文書データをサーバに転送し、サーバに格納されているキャッシングデータを利用して印刷イメージデータを生成して出力するか、サーバを経由せずにネットワークに繋がっているプリンタに出力するかをユーザの判断に従って決定する決定手段と、前記決定手段によりサーバ経由で出力すると決定された場合、サーバに文書データを転送する手段と、前記決定手段によりサーバ経由を経由せずにネットワークに繋がっているプリンタに出力すると決定された場合、文書データに従って印刷データを作成し、サーバを経由せずにネットワークに繋がっているプリンタに印刷データを転送するか、あるいは文書データを文字コードデータに変換し、変換した文字コードデータをプリンタに転送する手段とを有することを特徴とする。
【０００９】
請求項２に記載の印刷システムは、文書データをサーバに転送し、サーバに格納されているキャッシングデータを利用して印刷イメージデータを生成して出力するか、サーバを経由せずにネットワークに繋がっているプリンタに出力するかをユーザの判断に従って決定する決定手段と、前記決定手段によりサーバ経由で出力すると決定された場合、サーバに文書データを転送する手段と、前記決定手段によりサーバ経由を経由せずにネットワークに繋がっているプリンタに出力すると決定された場合、文書データに従って印刷データを作成し、サーバを経由せずにネットワークに繋がっているプリンタに印刷データを転送するか、あるいは文書データを文字コードデータに変換し、変換した文字コードデータをプリンタに転送する手段とを有する情報処理装置と、前記情報処理装置から転送される文書データに従ってキャッシュデータをアクセスして印刷データを作成する手段と、作成された印刷データをプリンタに転送する手段とを有するサーバとを有することを特徴とする。
【００１０】
請求項３に記載の情報処理方法は、文書データをサーバに転送し、サーバに格納されているキャッシングデータを利用して印刷イメージデータを生成して出力するか、サーバを経由せずにネットワークに繋がっているプリンタに出力するかをユーザの判断に従って決定する決定ステップと、前記決定ステップによりサーバ経由で出力すると決定された場合、サーバに文書データを転送するステップと、前記決定ステップによりサーバ経由を経由せずにネットワークに繋がっているプリンタに出力すると決定された場合、文書データに従って印刷データを作成し、サーバを経由せずにネットワークに繋がっているプリンタに印刷データを転送するか、あるいは文書データを文字コードデータに変換し、変換した文字コードデータをプリンタに転送するステップとを有することを特徴とする。
【００１１】
請求項４に記載のコンピュータ読み取り可能な記憶媒体は、文書データをサーバに転送し、サーバに格納されているキャッシングデータを利用して印刷イメージデータを生成して出力するか、サーバを経由せずにネットワークに繋がっているプリンタに出力するかをユーザの判断に従って決定する決定ステップと、前記決定ステップによりサーバ経由で出力すると決定された場合、サーバに文書データを転送するステップと、前記決定ステップによりサーバ経由を経由せずにネットワークに繋がっているプリンタに出力すると決定された場合、文書データに従って印刷データを作成し、サーバを経由せずにネットワークに繋がっているプリンタに印刷データを転送するか、あるいは文書データを文字コードデータに変換し、変換した文字コードデータをプリンタに転送するステップとを有するプログラムを記憶することを特徴とする。
【００３２】
【発明の実施の形態】
本発明の情報処理装置、印刷システム、情報処理方法および記憶媒体の実施の形態について説明する。本実施形態の印刷システムはプリンタ選択機能を有する文書印刷システムに適用される。
【００３３】
［第１の実施形態］
図１は第１の実施形態における文書印刷システムの構成を示すブロック図である。この文書印刷システムは、複数台のパーソナルコンピュータ（以下、パソコンという）１１、１２、１３、複数台のプリンタ１４、１５、１６、１７、１台のプリンタサーバ１８がネットワーク１９により接続された構成を有する。
【００３４】
尚、パソコン１１、１２、１３の代わりに、ワードプロセッサ、ワークステーション、携帯情報端末等の情報処理装置を接続することも可能である。また、プリンタサーバ１８はその内部に複数種類のフォントについてのフォントデータ群および複数のプリンタドライバを有している。
【００３５】
この文書印刷システムでは、パソコン１１、１２、１３で処理された文書データを印刷する場合、つぎの３通りの方法で印刷することが可能である。第１の方法では、ユーザの設定によりパソコンから所望のプリンタを選択し、選択されたプリンタで文書データを印刷する。第２の方法では、ユーザからのプリンタ指定情報と共に、文書データを一旦プリンタサーバ１８に転送し、プリンタサーバ１８から文字キャッシングデータを使って高速に指定プリンタで印刷する。第３の方法では、文書データを一旦、プリンタサーバ１８に転送し、プリンタサーバ１８により最適なプリンタを選択し、文字キャッシングデータを使って選択されたプリンタで高速に印刷する。
【００３６】
図２はパソコン１１、１２、１３およびプリンタサーバ１８のハードウェア構成を示すブロック図である。図において、１０１はＣＰＵ、すなわち中央処理装置であり、装置全体の制御および演算処理等を行う。１０２は読み出し専用メモリ（ＲＯＭ）であり、システム起動プログラム、基本Ｉ／Ｏプログラム、および文字コードをビットパターンに変換するための文字パターンデータ（フォントデータ）等を記憶している。
【００３７】
１０３はランダムアクセスメモリ（ＲＡＭ）であり、ＣＰＵ１０１の演算に使用するデータや演算結果、表示のために文字コードから変換された文字パターンデータ列等を一時的に記憶する。
【００３８】
１０４はキーボード制御部（ＫＢＣ）である。１０５はキーボード（ＫＢ）よりキー入力データ（文字コードや制御コード）を受け取り、ＣＰＵ１０１に伝達する。１０６はディスプレイ制御部（ＣＲＴＣ）であり、ＲＡＭ１０３に格納された文字パターンデータ列を読み出し、ＣＲＴ１０７に転送する。１０７はディスプレイ装置（ＣＲＴ）であり、ＣＲＴＣ１０６より文字パターンデータ列を受け取り、表示画面に表示する。
【００３９】
１０８はディスク制御部（ＤＫＣ）であり、外部記憶装置１０９に対するアクセス制御を行う。１０９はフロッピーディスク装置（ＦＤ）１０９ａ、ハードディスク装置（ＨＤ）１０９ｂおよびＣＤ−ＲＯＭ装置１０９ｃ等の外部記憶装置である。後述する図５、図６、図９、図１２のフローチャートに示すアプリケーションプログラムおよび関連データは、本実施形態のように前述したＲＯＭ１０２に格納しておいてもよいが、フロッピーディスクやＣＤ−ＲＯＭなどの記憶媒体に格納し、フロッピーディスク装置１０９ａ、ＣＤ−ＲＯＭ装置１０９ｃ等の外部記憶装置１０９から装置内部に供給されるようにしてもよい。
【００４０】
１１０はネットワーク制御部（ＮＴＣ）であり、ネットワーク装置（ＮＴ）１１１の動作を制御する。１１２はシステムバスであり、各部間のデータ転送を行う。
【００４１】
図３は図５、図６、図９、図１２のフローチャートに示すプログラムを実行する際のＲＡＭ１０３のメモリマップを示す図である。基本Ｉ／Ｏプログラムは、ＲＯＭ１０２内のシステム起動プログラムによりＲＡＭ１０３に読み込まれる。また、外部記憶装置１０９としてのフロッピーディスク装置１０９ａ、あるいはＣＤ−ＲＯＭ装置１０９ｃからアプリケーションプログラム、および関連データを一旦、ハードディスク装置１０９ｂにインストールした状態で電源がＯＮされたとき、ハードディスク装置１０９ｂからＲＡＭ１０３にロードすることにより、実行することが可能となる。
【００４２】
尚、ハードディスク装置１０９ｂにインストールせず、直接フロッピーディスク装置１０９ａ、あるいはＣＤ−ＲＯＭ装置１０９ｃからＲＡＭ１０３にロードして実行することも可能である。ここで、プリンタサーバ１８では、関連データの領域に後述するプリンタ情報テーブルが展開されている。
【００４３】
図４はプリンタ１４、１５、１６、１７のハードウェア構成を示すブロック図である。プリンタ１４、１５、１６、１７は、レーザビームプリンタ、バブルジェットプリンタ、熱転写プリンタ等のいずれのタイプのプリンタでもよい。
【００４４】
プリンタ１４、１５、１６、１７は、ＣＰＵ２１１、ＲＯＭ２１２、ＲＡＭ２１３、システムバス２１４、プリンタコントローラ（ＰＲＴＣ）２１５、プリンタエンジン（ＰＲＴ）２１６、ネットワークコントローラ（ＮＴＣ）２１７およびネットワーク装置（ＮＴ）２１８を有する。
【００４５】
ＣＰＵ２１１は、装置全体を制御する中央処理装置であり、ＲＡＭ２１３をワークエリア等として利用しながら、ＲＯＭ２１２に格納されたプログラムに従って、印刷に必要な各種の処理を実行する。システムバス２１４は、各部間でデータ、制御信号を授受するための通路である。ＲＯＭ２１２には、文字パターンデータ（フォントデータ）等が格納されている。
【００４６】
ＣＰＵ２１１は、プリンタサーバ１８を介してパソコン１１、１２、１３から供給された文書データを、ＲＯＭ２１２内の文字パターンデータに基づいて画像（印刷）データ（ビットマップデータ）を生成し、プリンタコントローラ２１５内の印刷バッファ（図示せず）に展開する。プリンタコントローラ２１５は、ビットマップデータに基づいて生成した印刷コントロール信号をプリンタエンジン２１６に出力する。
【００４７】
ネットワークコントローラ２１７は、ネットワーク１９を介してパソコン１１、１２、１３とプリンタサーバ１８との間でデータ送受信を行う際のネットワーク装置（ＮＴ）２１８の動作を制御している。
【００４８】
プリンタサーバ１８は、内部に複数種類のフォントについてのフォントデータ群、複数のプリンタドライバ、各プリンタのネットワーク１９上のアドレスを格納したプリンタアドレス情報ファイルを有する。
【００４９】
図５および図６はパソコン側での文書印刷処理手順を示すフローチャートである。この処理プログラムは、パソコン１１、１２、１３内のＲＯＭ１０２からＲＡＭ１０３にロードされ、ＣＰＵ１０１によって実行される。パソコンからサーバを経由してプリンタに出力する処理のうち、パソコン側での処理について示す。
【００５０】
まず、パソコン側からサーバに出力可能なプリンタの状況の問い合わせを行う（ステップＳ５１）。サーバから応答があるまで待つ（ステップＳ５２）。ここでサーバから応答内容は、レディ状態のプリンタ名、プリンタの出力可能用紙サイズ、解像度などである。
【００５１】
サーバから応答があった場合、ユーザによるプリンタの選択を行う（ステップＳ５３）。図７はプリンタの選択画面を示す図である。ユーザはプリンタの選択画面で出力したいプリンタの選択を行う。図７の例では、現在「Ｃａｎｏｎ  ＬＢＰ−７３０」が選択されている状態を示す。ここで、ユーザが特に出力したいプリンタが定まってなく、サーバに最適な出力プリンタの設定を委任したい場合、サーバに委任を選択する（ステップＳ５４）。図７の選択画面上の「サーバに委任」の項目を選択する。
【００５２】
一方、ユーザかプリンタを指定したい場合、所望のプリンタを選択する（ステップＳ５９）。すなわち、図７の選択画面の「Ｃａｎｏｎ  ＬＢＰ−７３０」、「Ｃａｎｏｎ  ＬＢＰ−３１０」または「Ｃａｎｏｎ  ＢＪ４５０」のいずれかを選択する。
【００５３】
ステップＳ５４でサーバに出力プリンタを委任した場合、ユーザが希望する出力条件を設定する（ステップＳ５５）。設定する項目としては、図７でプリンタを選択した後にプロパティの欄を選択すると、プリンタの設定画面が表示される。図８はプリンタの設定画面を示す図である。プリンタの設定画面では、用紙サイズ、縦／横等の用紙の印刷方向、印刷部数、出力すべきページ指定、印刷密度（解像度）、および文字展開処理をパソコン（サーバ）側で行わせるか、プリンタ側で行わせるか、パソコン（サーバ）にその選択を委任するかの選択等が設定される。図８の例では、用紙サイズＡ４、印刷方向縦、印刷部数１部、ページ指定全ページ、解像度６００ｄｐｉ、プリンタ側での文字展開処理が設定されている。
【００５４】
プリンタの種類、上記設定項目のデータおよび出力すべき文書データをサーバに転送する（ステップＳ５６）。サーバ側から選択されたプリンタ名の情報やその所在地情報を受け取るために、その受信待ちを行う（ステップＳ５７）。サーバ側からデータの受信がある場合、パソコン画面上に選択されたプリンタ名、その所在地情報、あるいはステップＳ５５または後述するステップＳ６１で決定した出力条件等を表示し、印刷要求を行ったユーザに対して、どこにあるどのプリンタからどういう設定で出力されるかを知らせる（ステップＳ５８）。
【００５５】
一方、ステップＳ５９でユーザが所望のプリンタを選択した場合、そのプリンタに対するドライバを読み込む（ステップＳ６０）。そのプリンタに対し、ユーザが希望する出力条件を設定する（ステップＳ６１）。ステップＳ５５の処理と同様、プリンタのプロパティを選択することによって図８に示すような画面が表示される。設定する項目としては、用紙サイズ、縦／横等の用紙の印刷方向、印刷部数、出力すべきページ指定、印刷密度（解像度）等である。
【００５６】
文書データをサーバに転送し、サーバに格納されているキャッシングデータ等を使って印刷イメージデータを作成して高速に出力するか、あるいはパソコン上で印刷イメージデータを作成してサーバを経由せずにネットワークに繋がっているプリンタに出力するかを決定する（ステップＳ６２）。
【００５７】
ここでの選択の例として、サーバを経由しないで直接印刷する場合としては、例えば１、２ページ程度の小さな文書データである場合、わざわざサーバを経由して出力するよりもパソコン上で印刷イメージデータを作成した方がオーバヘッドが小さくて高速に出力できるとユーザが判断した場合が挙げられる。
【００５８】
また、サーバを経由して印刷する場合としては、印刷すべき文書データが数１０ページ以上あり、パソコンで印刷イメージデータを作成するよりもサーバ上で印刷イメージデータを作成した方が効率よく出力できるとユーザが判断した場合が挙げられる。
【００５９】
１、２ページ程度の少ない文書データであったとしても、出力したいフォントデータがパソコン上になく、サーバ上にフォントデータが存在する場合、サーバに文書データを転送してサーバから印刷をする方がよいとユーザが判断した場合等も挙げられる。
【００６０】
ステップＳ６２の処理でユーザがサーバ経由で出力するように指定した場合、ステップＳ５６の処理に進み、文書データおよびステップＳ６１で設定した出力条件の設定項目をサーバに転送する。
【００６１】
一方、サーバ経由で出力しない場合、ユーザがパソコン側で文字展開処理を行わせるのか、プリンタ側で文字展開処理を行わせるのか、あるいはパソコンにその判定を任せるのかの選択を行う（ステップＳ６３）。この選択は、ステップＳ６１で既にユーザが決定しているので、その決定に従って、パソコン側に文字展開処理を行わせる場合、ステップＳ６７の処理に進み、プリンタ側で文字展開処理を行わせる場合、ステップＳ６９の処理に進み、パソコンにその判定を任せる場合、ステップＳ６４の処理に進む。
【００６２】
そして、パソコンにその判定を任せる場合、プリンタの文字展開処理能力やプリンタが持っている書体情報等の問い合わせを行うためのコマンドをネットワークを通して行う（ステップＳ６４）。
【００６３】
ステップＳ６４で問い合わせを行った応答がプリンタ側より受信したか否かを判別する（ステップＳ６５）。プリンタ側から受信した場合、ステップＳ６６の処理に進み、受信していない場合、ここで受信するまで待つ。
【００６４】
そして、プリンタ側から受信した場合、プリンタ側からキャッシング状況や展開処理能力等の応答があり、それらの状況に応じて、パソコン側で文字展開処理を行った方がよいのか、あるいはプリンタ側で文字展開処理を行った方がよいのかの判定を行う（ステップＳ６６）。この判定方法は、まず文書データの解析を行い、文書に使われている書体の分類を行う。
【００６５】
ステップ６４で得られたプリンタ情報のうち、書体データと比較して、文書に使われている書体データがプリンタに存在するか否かを判別する。存在しない場合、プリンタで展開するよりパソコン側で展開すべきであると判断する。また、書体データが一致した場合、パソコンのパフォーマンスとプリンタのパフォーマンスを比較し、パソコンのパフォーマンスがプリンタのパフォーマンスよりもある一定の差以上（例えば３倍）があった場合、パソコン側で展開するように判断する。一方、ある一定の差に満たない場合、プリンタ側で展開するように判断する。
【００６６】
そして、パソコン側で文字展開処理を行うと判別した場合、ステップＳ６７に進み、プリンタ側で文字展開処理を行うと判別した場合、ステップＳ６９に進む。
【００６７】
パソコン側で文字展開処理を行うと判別した場合、つまり、印刷イメージデータをパソコン上で作成した方がよいとユーザが判断した場合、文書データおよびステップＳ６１で設定した項目にしたがって、印刷すべきデータの作成を行う（ステップＳ６７）。この印刷データの詳細は、特開平９−２３４９１４（特願平８−４２８６４）号公報等に示されているので、ここでは省略する。
【００６８】
そして、サーバを経由せず、直接、ネットワークに繋がっている所望のプリンタに印刷データを転送し、所望のプリンタによる印刷を行う（ステップＳ６８）。
【００６９】
一方、プリンタ側で文字展開処理を行うと判別した場合、パソコン側では、指定の文書データをプリンタが解釈して印刷できるように、例えば文字コードデータに変換する（ステップＳ６９）。そして、そのデータをプリンタ側に転送し（ステップＳ７０）、パソコン側の処理を終了する。
【００７０】
このように、図５および図６のフローチャートを用いてパソコンからサーバを経由してプリンタに出力する処理を含む印刷処理のうち、パソコン側での処理の流れを示した。
【００７１】
次に図９のフローチャートを用いてサーバ側での処理の流れを示す。図９はサーバ側での文書印刷処理手順を示すフローチャートである。この処理プログラムは、パソコン側と同様、プリンタサーバ１８内のＲＯＭからＲＡＭにロードされ、ＣＰＵによって実行される。
【００７２】
まず、サーバ側ではパソコン側からネットワークを通してプリンタ状態の問い合わせコマンド、あるいは印刷命令のコマンドの受付を待つ（ステップＳ８１）。コマンドの受付がない間、サーバは処理を行わずに待機する。そして、いずれかのコマンドを受け付けた場合、受け付けたコマンドがプリンタ状態の問い合わせであるのか、あるいは印刷実行命令であるのかを判別する（ステップＳ８２）。
【００７３】
受け付けたコマンドがプリンタ状態の問い合わせであった場合、ステップＳ８３に進み、印刷実行命令コマンドであった場合、ステップＳ８４に進む。そして、受け付けたコマンドがプリンタ状態の問い合わせであった場合、現在のネットワークに接続されているプリンタを検出する。検出されたプリンタのデータには、あらかじめプリンタ名やそのプリンタの所在地情報、それぞれのプリンタの現在の状況などが格納されている。そして、それぞれのプリンタが印刷可能かどうかをチェックする。ここでは、プリンタの電源がＯＮになっているプリンタを検索し、その中で紙切れやトナー切れなどのエラーになっていないプリンタを検索する。さらに、その中でキューに出力すべきデータが存在しないプリンタ、あるいはキューに出力すべきデータが存在してもそのデータ量が少ないプリンタ等をリストアップし、そのリストをネットワークを通してパソコン側に送る（ステップＳ８３）。この後、ステップＳ８１の処理に戻り、パソコンからの新たなコマンドの受付を待つ。
【００７４】
一方、パソコン側から印刷実行命令コマンドを受け付けた場合、パソコン側から送られてきたデータをチェックし、その中で出力すべきプリンタが既にパソコン側で決定されているか否かをチェックする（ステップＳ８４）。
【００７５】
既にパソコン側でプリンタが決定されている場合、ステップＳ８７に進み、サーバに委任されている場合、ステップＳ８５に進む。そして、サーバに委任されている場合、出力すべきプリンタの決定を行う（ステップＳ８５）。ここでの処理は、ステップＳ８３の処理と同様、まず現在のネットワークに接続されているプリンタを検出し、それぞれのプリンタが印刷可能状態か否かをチェックする。そして、それらのプリンタの中でパソコン側から送られてきたプリンタの設定項目を選択条件として優先的に扱う。つまり、用紙サイズ、印刷密度（解像度）等、ユーザの希望する条件に合致するプリンタが、現在出力可能なプリンタの中に存在するか否かをチェックする。
【００７６】
そして、１台のプリンタだけが検出された場合、そのプリンタに決定する。また、複数台のプリンタが検出された場合、それぞれのプリンタに対してキューの状態をチェックし、キューに入っているデータが少ない順にソートする。キューに入っているデータが最も少ないプリンタを出力プリンタとして決定する。また、１台のプリンタも検出されなかった場合、代替えのプリンタを出力プリンタとして決定する。
【００７７】
ステップＳ８５で決定されたプリンタ名、あるいは希望する出力条件にあったプリンタが存在しなかった場合に代替えを行ったか否かの情報とそのパソコンがどこに設置されているのか等の所在地情報等を、要求があったパソコンにネットワークを通して通知する（ステップＳ８６）。
【００７８】
決定されたプリンタのドライバを読み込む（ステップＳ８７）。ユーザがサーバ側で文字展開処理を行わせるのか、プリンタ側に文字展開処理を行わせるのか、あるいはサーバにその判定を任せるのかの選択を行う（ステップＳ８８）。この選択は、前述したステップＳ５５あるいはステップＳ６１で、既にユーザにより決定されているので、その決定に従って、サーバ側に文字展開処理を行わせる場合、ステップ９２に進み、プリンタ側に文字展開処理を行わせる場合、ステップＳ９５に進み、サーバにその判定を任せる場合、ステップＳ８９に進む。
【００７９】
そして、サーバにその判定を任せる場合、プリンタに文字展開処理能力やプリンタの持つ書体情報等の問い合わせを行うためのコマンドをネットワークを通して行う（ステップＳ８９）。ステップＳ８９で問い合わせを行った応答がプリンタ側より受信したか否かを判別する（ステップＳ９０）。
【００８０】
プリンタ側から受信した場合、ステップＳ９１に進み、受信していない場合、ここで受信するまで待つ。プリンタ側からキャッシング状況や展開処理能力等の応答があり、それらの状況に応じて、サーバ側で文字展開処理を行った方がよいのか、あるいはプリンタ側で文字展開処理を行った方がよいのかを判定する（ステップＳ９１）。
【００８１】
この判定方法は、まず文書データの解析を行い、文書に使われている書体の分類を行う。そして、ステップＳ８９で得られたプリンタ情報のうち、書体データと比較して、文書に使われている書体データがプリンタに存在するか否かを判定する。存在しない場合、プリンタで展開するよりサーバ側で展開すべきと判断する。また、書体データが一致した場合、サーバのパフォーマンスとプリンタのパフォーマンスを比較し、サーバのパフォーマンスがプリンタのパフォーマンスよりもある一定の差以上（例えば３倍）があった場合、サーバ側で展開するように判断する。またある一定の差に満たない場合、プリンタ側で展開するように判断する。ここで、サーバ側で文字展開処理を行うと判別した場合、ステップＳ９２に進み、プリンタ側で文字展開処理を行うと判別した場合、ステップ９５に進む。
【００８２】
文字展開処理をサーバ側で行って印刷イメージデータを作成した方がよいと、ユーザあるいはサーバが判断した場合、文書データおよびステップＳ５５あるいはステップＳ６１で設定した項目にしたがって、印刷すべきデータの作成を行う（ステップＳ９２）。
【００８３】
このとき、フォントの展開およびキャッシングデータのアクセスを行う。まず文書データの解析を行い、必要なフォントデータの分類を行う。分類としては、書体、サイズ、文字コードが挙げられる。その分類にしたがって、必要なデータを検索していく。このとき、サーバにキャッシングされているデータは図１０に示すような形式で格納されている。図１０はサーバにキャッシングされているデータの形式を示す図である。
【００８４】
サーバにキャッシングされているデータは、書体情報、文字サイズ情報、格納文字コード情報、文字データから構成される。書体情報としては、格納されている書体の数、その書体番号およびウエイト値が格納されている。したがって、ここに所望の書体の番号およびそのウエイト値が格納されていない場合、キャッシングデータには文字データが格納されていないと判断され、文字データの作成を行う必要がある。
【００８５】
一方、所望の書体が存在した場合、次に文字サイズ情報を検索する。そして所望の文字サイズがあるか否かをチェックし、文字サイズ情報に所望の文字サイズが存在しなかった場合、所望の文字データは存在しないと判断され、文字データの作成を行う必要がある。
【００８６】
また一方、所望の文字サイズのデータが存在した場合、つぎに格納された文字コード情報を検索する。所望の文字コードが存在するか否かをチェックし、所望の文字コードが存在しなかった場合にその文字データは存在しないと判断され、文字データの作成を行う必要がある。一方、所望の文字データが存在した場合、所望の文字コード情報に格納されているポインタのところから文字データを検索し、必要分のデータを読み込むことによってキャッシングデータをアクセスすることが可能となる。
【００８７】
また、キャッシングデータが存在せず、文字データの作成を行った場合、その文字データをその後に使う可能性があるので、その時のためにここでキャッシングバッファに登録する。新たに登録すべきデータがどういうデータかによって、書体情報、文字サイズ情報、格納文字コード情報、文字データを更新していく。例えば、新たに登録すべきデータが、平成明朝体ｗ３の６０×６０ドットの２４２２の文字データであった場合、図１１に示すように文字サイズ情報、格納文字コード情報、文字データの必要なところが更新される。図１１は文字データの形式を示す図である。
【００８８】
そして、印刷データの作成を行う（ステップＳ９３）。このときの印刷データの詳細は、特開平９−２３４９１４号公報（特願平８−４２８６４号）に示されているので、ここでは省略する。サーバからネットワークに繋がっている所望のプリンタに印刷データを転送し、所望のプリンタによる印刷を行う（ステップＳ９４）。
【００８９】
一方、プリンタ側で文字展開処理を行うと、ユーザあるいはサーバが判定した場合、サーバ側では、指定の文書データをプリンタが解釈して印刷できるように、例えば文字コードデータに変換する（ステップＳ９５）。そのデータをプリンタ側に転送する（ステップＳ９６）。そして、ステップＳ９４あるいはステップＳ９６の処理が終了した場合、ステップＳ８１の処理に戻り、パソコンからの新たなコマンドの受付を待つ。
【００９０】
このように、第１の実施形態では、ユーザの指定により、パーソナルコンピュータで処理された文書データを印刷する場合、つぎの３通りの方法で印刷可能である。すなわち、第１の方法では、ユーザの設定によりパーソナルコンピュータから所望のプリンタを選択してサーバを経由せずに直接、文書データをネットワークを通して印刷する。第２の方法では、ユーザからプリンタ指定情報と共に文書データを、一旦プリンタサーバ１８に転送し、プリンタサーバ１８から文字キャッシングデータを使って、高速に指定プリンタに印刷する。第３の方法では、文書データを一旦、プリンタサーバ１８に転送し、プリンタサーバ１８により最適なプリンタを選択し、文字キャッシングデータを使って、選択されたプリンタにより高速に印刷する。
【００９１】
したがって、従来、１文書単位にしかキャッシングを行えず、非効率的であった文書印刷に対し、複数の文書印刷時でも効率よくキャッシングを行え、高速に文書出力を行うことができる。また、印刷したい文書データの種類によって効率よく印刷することができる。
【００９２】
［第２の実施形態］
前記第１の実施形態では、パソコンから印刷命令を実行し、プリンタサーバを経由するかしないかをユーザが任意に設定し、プリンタサーバを経由する場合、文字データにキャッシングデータを使い、キャッシングデータを使う必要がないような小さな文書データに対しては、プリンタサーバを経由しないで効率よく印刷することが可能である場合を示したが、第２の実施形態では、プリンタサーバ側で新たな書体をインストールする際にインストールしたフォントデータに対してキャッシング処理を行う場合を示す。
【００９３】
図１２は第２の実施形態におけるサーバ側の文書印刷処理手順を示すフローチャートである。この処理プログラムは、前記第１の実施形態と同様、プリンタサーバ１８内のＲＯＭからＲＡＭにロードされ、ＣＰＵによって実行される。
【００９４】
まず、パソコン側からプリンタ状況問い合わせコマンドや印刷要求コマンドがあった場合等の受信待ちや、ユーザがサーバに新たなフォントをインストールしたいと要求したときの要求待ちを行う（ステップＳ１１１）。それらの要求がない場合、要求が来るまで待機する。そして、パソコン側からプリンタの状況問い合わせコマンドや印刷要求コマンドが到着した場合、図９のステップＳ８２からステップＳ９６と同様の処理を行うので（ステップＳ１１９）、その説明を省略する。
【００９５】
一方、ユーザがフォントのインストールの要求をしてきた場合、フォントデータをサーバにインストールする（ステップＳ１１２）。サーバ側からユーザに対し、インストールした書体に対してキャッシングを行うか否かの問い合わせを行う（ステップＳ１１３）。このとき、ユーザがインストール時にキャッシングを行わないと判断した場合、インストール作業をここで終了し、ステップＳ１１１の処理に戻り、パソコンからのコマンドやユーザからのインストール作業の要求待ちを行う。
【００９６】
一方、ユーザがインストール時にキャッシングを行うと判断した場合、ユーザがあらかじめキャッシングすべき文字データのサイズとコードの情報を準備しているか否かをチェックする（ステップＳ１１４）。ユーザがキャッシング情報テーブルをあらかじめ準備している場合、ステップＳ１１８に進み、そうでない場合にはステップＳ１１５に進む。
【００９７】
キャッシング情報テーブルが存在しない場合、キャッシング情報テーブルをどのようにして作成するかの判断を行う（ステップＳ１１５）。ここで、既存のキャッシングされた書体のデータが存在する場合、キャッシングデータの存在する書体をチェックし、図１３に示すようにその書体名を参考書体として表示する。
【００９８】
図１３は既存のキャッシングされた書体のデータを示す図である。その書体と同様のキャッシング状況にしたい場合、その書体のところを選択すると、その書体のキャッシングされている文字のサイズと文字が表示される。それと同じキャッシングでよい場合、ＯＫボタンを押下する。また、既存の書体のキャッシング状況に依存せずに独自に設定したい場合、図１３の参考書体のところで、「独自に設定」の項目を選択し、ＯＫボタンを押下する。
【００９９】
そして、既存の書体名のところを選択した場合、ステップＳ１１６に進み、独自に設定の項目を選択した場合、ステップＳ１１７に進む。既存の書体のキャッシング状況と同様のキャッシング状況にするために、ステップＳ１１４で選択した書体の文字サイズ情報および格納文字コード情報をコピーし、書体情報のところに新たに追加する書体名の登録を行う（ステップＳ１１６）。必要な文字データの作成を行う（ステップＳ１１８）。この後、ステップＳ１１１の処理に戻る。
【０１００】
図１５はステップＳ１１６およびステップＳ１１８で作成されたキャッシングデータのテーブルの例を示す図である。このとき、基となるキャッシングデータテーブルは前述した図１０に示すものであり、新たに追加する書体は丸ゴシック体ｗ３であり、その参考とする書体は平成明朝体とする。
【０１０１】
一方、新たに追加する書体のキャッシングデータを既存の書体のキャッシング状況を参考にせずに独自にキャッシングテーブルの作成を行う場合、つまり、ステップＳ１１５で「独自に設定」の項目を選択し、ＯＫボタンを押下した場合、独自にキャッシングデータテーブルを記載したファイルをあらかじめ準備しておき、そのファイルを呼び出すことによって、キャッシングテーブルの作成を行う（ステップＳ１１７）。
【０１０２】
図１４は独自設定画面を示す図である。図１４の例では、図１３でＯＫボタンを押下した後に、独自設定画面が表示され、キャッシングデータテーブルが記載されたファイル名を指定したときにそのキャッシング状況（文字サイズとそれぞれの文字データ）が表示される。そして、サイズ文字の項目で新たに追加したいサイズや文字があった場合、ここで追加することも可能である。
【０１０３】
このようにして独自にキャッシングテーブルを作成し、ステップＳ１１８で必要な文字データの作成を行う。図１６はステップＳ１１７およびステップＳ１１８で作成されたキャッシングデータのテーブルの例を示す図である。
【０１０４】
ステップＳ１１８で必要な文字データの作成が終了し、キャッシングデータテーブルの更新が終了すると、ステップＳ１１１の処理に戻って、パソコンからのコマンドやユーザからのインストール作業の要求待ちを行う。
【０１０５】
このようにして、新しい書体をサーバにインストールする際にキャッシングすることによって、インストールした後、文書データを印刷するときに文字展開処理を行う文字データを最小限に抑えることが可能となり、高速に出力することができる。
【０１０６】
尚、本発明はシステムに外部からプログラムを供給することによって達成される場合にも適用できることはいうまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体をシステムに読み出すことによってそのシステムが本発明の効果を享受することが可能となる。
【０１０７】
図１７は記憶媒体としてのＲＯＭのメモリマップを示す図である。同図（Ａ）に示すパソコン内のＲＯＭには、図５および図６のフローチャートに示したパソコン側での文書印刷処理モジュールが格納されている。また、図１７（Ｂ）に示すサーバ内のＲＯＭには図９のフローチャートに示したサーバ側での文書印刷処理モジュールが格納されている。同図（Ｃ）に示すサーバ内のＲＯＭには、図１２のフローチャートに示すサーバ側での文書印刷処理モジュールが格納されている。
【０１０８】
記憶媒体としては、ＲＯＭに限らず、例えばフロッピーディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ、磁気テープ、不揮発性のメモリカードなどを用いることができる。
【０１０９】
【発明の効果】
本発明によれば、サーバを経由して出力するよりも情報処理装置上で印刷イメージデータを生成した方がオーバヘッドが小さくて高速に出力できるとユーザが判断した場合、サーバを経由しないで直接印刷でき、一方、情報処理装置で印刷イメージデータを生成するよりもサーバ上で印刷イメージデータを生成した方が効率よく出力できるとユーザが判断した場合、あるいはサーバにキャッシングデータが存在しており、サーバに文書データを転送してサーバから印刷をする方がよいとユーザが判断した場合、サーバを経由して印刷することができる。
【図面の簡単な説明】
【図１】第１の実施形態における文書印刷システムの構成を示すブロック図である。
【図２】パソコン１１、１２、１３およびプリンタサーバ１８のハードウェア構成を示すブロック図である。
【図３】図５、図６、図８、図１１のフローチャートに示すプログラムを実行する際のＲＡＭ１０３のメモリマップを示す図である。
【図４】プリンタ１４、１５、１６、１７のハードウェア構成を示すブロック図である。
【図５】パソコン側での文書印刷処理手順を示すフローチャートである。
【図６】図５につづく、パソコン側での文書印刷処理手順を示すフローチャートである。
【図７】プリンタの選択画面を示す図である。
【図８】プリンタの設定画面を示す図である。
【図９】サーバ側での文書印刷処理手順を示すフローチャートである。
【図１０】サーバにキャッシングされているデータの形式を示す図である。
【図１１】文字データの形式を示す図である。
【図１２】第２の実施形態におけるサーバ側の文書印刷処理手順を示すフローチャートである。
【図１３】既存のキャッシングされた書体のデータを示す図である。
【図１４】独自設定画面を示す図である。
【図１５】ステップＳ１１６およびステップＳ１１８で作成されたキャッシングデータのテーブルの例を示す図である。
【図１６】ステップＳ１１７およびステップＳ１１８で作成されたキャッシングデータのテーブルの例を示す図である。
【図１７】記憶媒体としてのＲＯＭのメモリマップを示す図である。
【符号の説明】
１１、１２、１３  パーソナルコンピュータ（パソコン）
１４、１５、１６、１７  プリンタ
１８  プリンタサーバ
１９  ネットワーク
１０１、２１１  ＣＰＵ
１０２、２１２  ＲＯＭ
１０９  外部記憶装置
【図１】
0003625387.tif 000002
【図２】
0003625387.tif 000003
【図３】
0003625387.tif 000004
【図４】
0003625387.tif 000005
【図５】
0003625387.tif 000006
【図６】
0003625387.tif 000007
【図７】
0003625387.tif 000008
【図８】
0003625387.tif 000009
【図９】
0003625387.tif 000010
【図１０】
0003625387.tif 000011
【図１１】
0003625387.tif 000012
【図１２】
0003625387.tif 000013
【図１３】
0003625387.tif 000014
【図１４】
0003625387.tif 000015
【図１５】
0003625387.tif 000016
【図１６】
0003625387.tif 000017
【図１７】
0003625387.tif 000018