(57)【特許請求の範囲】
【請求項１】
印刷ジョブに含まれる複数の領域のデータを、互いに独立した複数の処理手段の何れかに割り当てる割り当て手段と、
前記割り当て手段により複数の領域のデータが割り当てられた複数の処理手段で並行して処理して複数の印刷コマンドを生成する印刷コマンド生成手段と、
前記印刷コマンド生成手段により生成された複数の印刷コマンドを、印刷装置に出力する出力手段とを有し、
前記出力手段は、前記印刷コマンド生成手段により生成された複数の印刷コマンドを、印刷順とは無関係に生成された順で、印刷装置に出力することを特徴とする情報処理装置。
【請求項２】
前記割り当て手段は、前記データを処理の重さに応じて、割り当てることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記割り当て手段は、前記データを機械的に、割り当てることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記出力手段は、印刷順序を特定する情報を含む印刷コマンドを印刷装置に出力することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記複数の処理手段は、別スレッドで動作することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記複数のスレッドは、前記印刷装置における出力順に、前記割り当て手段により割り当てられた領域のデータを処理することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
印刷ジョブに含まれる複数の領域のデータを、互いに独立した複数の処理手段の何れかに割り当てる割り当て手段と、
前記割り当て手段により複数の領域のデータが割り当てられた複数の処理手段で並行して処理して複数の印刷コマンドを生成する印刷コマンド生成手段と、
前記印刷コマンド生成手段により生成された複数の印刷コマンドを、印刷装置に出力する出力手段と、
前記印刷コマンド生成手段により生成された複数の印刷コマンドに、前記印刷装置における出力順を識別するための識別情報を付加する識別情報付加手段とを有し、
前記出力手段は、前記識別情報付加手段により識別情報が付加された複数の印刷コマンドを、前記印刷装置における出力順とは無関係に、生成順に前記印刷装置に出力することを特徴とする情報処理装置。
【請求項８】
前記出力手段は、前記印刷コマンド生成手段により生成された複数の印刷コマンドを、前記印刷装置における出力順に並べ替えて前記印刷装置に出力することを特徴とする請求項１〜７の何れか１項に記載の情報処理装置。
【請求項９】
前記割り当て手段は、前記印刷装置で最も速く印刷が実行されるようにするための処理を行うスレッドを、前記複数の領域のデータのそれぞれについて予測し、予測したスレッドに、前記複数の領域のデータを割り当てることを特徴とする請求項４に記載の情報処理装置。
【請求項１０】
前記領域は、ページ又はバンドであることを特徴とする請求項１〜９の何れか１項に記載の情報処理装置。
【請求項１１】
印刷装置の動的に変化する情報を取得する取得手段と、
前記取得手段により取得された情報に基づいて、各スレッドの担当する処理を決定し、決定した処理を各スレッドに割り当てる割り当て手段と、
前記割り当て手段により処理が割り当てられた複数のスレッドを並行して処理して複数の印刷コマンドを生成する印刷コマンド生成手段と、
前記印刷コマンド生成手段により生成された複数の印刷コマンドを、複数のスレッドで並行して印刷制御装置に出力する出力手段とを有し、
前記出力手段は、前記印刷コマンド生成手段により生成された複数の印刷コマンドを、印刷順とは無関係に生成された順で、印刷装置に出力することを特徴とする情報処理装置。
【請求項１２】
請求項１１に記載の情報処理装置と通信可能に接続され、前記情報処理装置から出力された印刷コマンドを用いて、印刷装置を制御する印刷制御装置であって、
前記情報処理装置から出力された印刷コマンドを画像処理して画像メモリに書き込む制御手段と、
前記情報処理装置から出力された印刷コマンドが、前記制御手段により画像処理される必要があるものか否かを判定する判定手段と、
前記判定手段により画像処理される必要がないと判定された印刷コマンドを前記画像メモリに書き込む書きこみ手段とを有し、
前記制御手段は、前記判定手段により画像処理される必要があると判定された印刷コマンドを画像処理して前記画像メモリに出力することを特徴とする印刷制御装置。
【請求項１３】
印刷ジョブに含まれる複数の領域のデータを、互いに独立した複数の処理手段の何れかに割り当てる割り当てステップと、
前記割り当てステップにより複数の領域のデータが割り当てられた複数の処理手段で並行して処理して複数の印刷コマンドを生成する印刷コマンド生成ステップと、
前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、印刷装置に出力する出力ステップとを有し、
前記出力ステップは、前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、印刷順とは無関係に生成された順で、印刷装置に出力することを特徴とする画像処理方法。
【請求項１４】
印刷装置の動的に変化する情報を取得する取得ステップと、
前記取得ステップにより取得された情報に基づいて、各スレッドの担当する処理を決定し、決定した処理を各スレッドに割り当てる割り当てステップと、
前記割り当てステップにより処理が割り当てられた複数のスレッドを並行して処理して複数の印刷コマンドを生成する印刷コマンド生成ステップと、
前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、複数のスレッドで並行して印刷制御装置に出力する出力ステップとを有し、
前記出力ステップは、前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、印刷順とは無関係に生成された順で、印刷装置に出力することを特徴とする画像処理方法。
【請求項１５】
前記出力ステップにより出力された印刷コマンドを画像処理して画像メモリに書き込む制御ステップと、
前記出力ステップにより出力された印刷コマンドが、前記制御ステップにより画像処理される必要があるものか否かを判定する判定ステップと、
前記判定ステップにより画像処理される必要がないと判定された印刷コマンドを前記画像メモリに書き込む書きこみステップとを有し、
前記制御ステップは、前記判定ステップにより画像処理される必要があると判定された印刷コマンドを画像処理して前記画像メモリに出力することを特徴とする請求項１４に記載の画像処理方法。
【請求項１６】
印刷ジョブに含まれる複数の領域のデータを、互いに独立した複数の処理手段の何れかに割り当てる割り当てステップと、
前記割り当てステップにより複数の領域のデータが割り当てられた複数の処理手段で並行して処理して複数の印刷コマンドを生成する印刷コマンド生成ステップと、
前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、印刷装置に出力する出力ステップとをコンピュータに実行させ、
前記出力ステップは、前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、印刷順とは無関係に生成された順で、印刷装置に出力することを特徴とするコンピュータプログラム。
【請求項１７】
印刷装置の動的に変化する情報を取得する取得ステップと、
前記取得ステップにより取得された情報に基づいて、各スレッドの担当する処理を決定し、決定した処理を各スレッドに割り当てる割り当てステップと、
前記割り当てステップにより処理が割り当てられた複数のスレッドを並行して処理して複数の印刷コマンドを生成する印刷コマンド生成ステップと、
前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、複数のスレッドで並行して印刷制御装置に出力する出力ステップとをコンピュータに実行させ、
前記出力ステップは、前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、印刷順とは無関係に生成された順で、印刷装置に出力することを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、画像処理方法、及びコンピュータプログラムに関し、特に、情報処理装置で生成された印刷コマンドに基づいて印刷装置が印刷を行うために用いて好適なものである。
【背景技術】
【０００２】
従来から、プリンタドライバが自動的に処理モードを切り替えるようにする第１の技術が提案されている（特許文献１を参照）。
この第１の技術は、ＯＳから受け取った印刷命令をプリンタドライバで一旦中間データに変換して１ページ分保存する。その際に、パフォーマンスを予測し、予測した結果に応じて、ページ単位、バンド単位、又はジョブ単位で印刷命令の処理モードを切り替えるものである。
【０００３】
この第１の技術は、パーソナルコンピュータのＣＰＵの高い性能を利用した技術であり、文字や簡単な表等で構成されたページについては、抽象度の高いＰＤＬデータをプリンタドライバで生成し、プリンタでＰＤＬデータをイメージデータに展開する。一方、ＣＰＵの能力を多く必要とする描画命令が含まれたページについては、パーソナルコンピュータのＣＰＵで抽象度の低いイメージデータにまで展開した印刷命令を生成してプリンタに送信し、残りの軽い処理をプリンタで行うようにする。
【０００４】
また、従来から、印刷制御装置が、情報処理装置から入力する印刷データを解析して、プリンタエンジンである画像形成装置の出力データとしてのビットマップデータに展開する第２の技術がある。ここで、画像形成装置は、例えばレーザビームプリンタであり、展開されたビットマップデータに基づいて変調したレーザービームを感光ドラムに走査露光して画像記録を行う。
【０００５】
また、印刷制御装置は、ホストコンピュータがページ編集データに基づいてＷＹＳＩＷＹＧ処理したデータを出力することが可能である。この場合、印刷制御装置は、情報処理装置が、ＷＹＳＩＷＹＧ処理されたビットマップデータをビットマップメモリに展開して出力したものを受信する第１のタイプと、情報処理装置からラスタライズするためのデータを受信する第２のタイプとがある。第２のタイプでは、印刷制御装置は、受信したデータに対してラスタライズ処理を行ってビットマップデータを生成してビットマップメモリに展開して出力する。
【０００６】
しかしながら、前述した第２の技術における第１のタイプの印刷制御装置では、情報処理装置がビットマップデータの展開を開始してから、プリンタエンジンによる印字処理が開始するまでの時間が、ホストコンピュータのラスタライズ処理時間に依存して決定されてしまう。
また、第２のタイプの印刷制御装置では、情報処理装置が印刷制御装置にデータを転送するまでの時間は短時間になる。しかしながら、印刷制御装置でのラスタライズ処理の時間が長時間となる。このため、プリンタエンジンとの画像書込み同期がずれてしまい、受信したデータを正確に記録できなくなってしまう。
【０００７】
そこで、第２の技術に対する改善策として、プリンタから取得したプリンタの能力情報に基づいて、プリンタ側で変換すべきデータと、あらかじめ変換したデータとを選択的に振り分けてプリンタに転送する第３の技術が提案されている（特許文献２を参照）。
【０００８】
【特許文献１】特許第３２０９１０２号明細書
【特許文献２】特開平１１−３１６６６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ところで、抽象度の低い印刷データの生成時間は、抽象度の高い印刷データの生成時間よりも長くなる。
しかしながら、前述した従来の技術では、複数ページからなる印刷ジョブ中に、抽象度の低い印刷データを生成するページ（領域）があると、その印刷データを生成している間、プリンタへの印刷データの転送が停滞することになる。このように、印刷データがプリンタに送られない間は、通信経路とプリンタリソースとが十分に有効に使われておらず、処理全体が最適化されない。
【００１０】
このような課題は、程度の差はあるが処理モードの切り替えに関係なく存在するものである。すなわち、複数ページからなる印刷ジョブ中に、処理負荷が極端に異なるページが混ざっていると、プリンタへの印刷命令を出すコンピュータとプリンタのリソースを十分に使えない状態に陥りやすい。
【００１１】
以上のように従来の技術では、印刷ジョブの中に、処理負荷の重い領域が含まれていると、印刷ジョブのスループットが低下してしまう虞があるという問題点があった。
本発明は、このような問題点に鑑みてなされたものであり、処理負荷の重い領域が含まれている印刷ジョブのスループットを向上させることを目的とする。
【課題を解決するための手段】
【００１２】
本発明の情報処理装置は、印刷ジョブに含まれる複数の領域のデータを、互いに独立した複数の処理手段の何れかに割り当てる割り当て手段と、前記割り当て手段により複数の領域のデータが割り当てられた複数の処理手段で並行して処理して複数の印刷コマンドを生成する印刷コマンド生成手段と、前記印刷コマンド生成手段により生成された複数の印刷コマンドを、印刷装置に出力する出力手段とを有し、前記出力手段は、前記印刷コマンド生成手段により生成された複数の印刷コマンドを、印刷順とは無関係に生成された順で、印刷装置に出力することを特徴とする。
また、本発明の他の特徴とするところは、印刷ジョブに含まれる複数の領域のデータを、互いに独立した複数の処理手段の何れかに割り当てる割り当て手段と、前記割り当て手段により複数の領域のデータが割り当てられた複数の処理手段で並行して処理して複数の印刷コマンドを生成する印刷コマンド生成手段と、前記印刷コマンド生成手段により生成された複数の印刷コマンドを、印刷装置に出力する出力手段と、前記印刷コマンド生成手段により生成された複数の印刷コマンドに、前記印刷装置における出力順を識別するための識別情報を付加する識別情報付加手段とを有し、前記出力手段は、前記識別情報付加手段により識別情報が付加された複数の印刷コマンドを、前記印刷装置における出力順とは無関係に、生成順に前記印刷装置に出力することを特徴とする。
また、本発明のその他の特徴とするところは、印刷装置の動的に変化する情報を取得する取得手段と、前記取得手段により取得された情報に基づいて、各スレッドの担当する処理を決定し、決定した処理を各スレッドに割り当てる割り当て手段と、前記割り当て手段により処理が割り当てられた複数のスレッドを並行して処理して複数の印刷コマンドを生成する印刷コマンド生成手段と、前記印刷コマンド生成手段により生成された複数の印刷コマンドを、複数のスレッドで並行して印刷制御装置に出力する出力手段とを有し、前記出力手段は、前記印刷コマンド生成手段により生成された複数の印刷コマンドを、印刷順とは無関係に生成された順で、印刷装置に出力することを特徴とする。
本発明の印刷制御装置は、前記情報処理装置と通信可能に接続され、前記情報処理装置から出力された印刷コマンドを用いて、印刷装置を制御する印刷制御装置であって、前記情報処理装置から出力された印刷コマンドを画像処理して画像メモリに書き込む制御手段と、前記情報処理装置から出力された印刷コマンドが、前記制御手段により画像処理される必要があるものか否かを判定する判定手段と、前記判定手段により画像処理される必要がないと判定された印刷コマンドを前記画像メモリに書き込む書きこみ手段とを有し、前記制御手段は、前記判定手段により画像処理される必要があると判定された印刷コマンドを画像処理して前記画像メモリに出力することを特徴とする。
【００１３】
本発明の画像処理方法は、印刷ジョブに含まれる複数の領域のデータを、互いに独立した複数の処理手段の何れかに割り当てる割り当てステップと、前記割り当てステップにより複数の領域のデータが割り当てられた複数の処理手段で並行して処理して複数の印刷コマンドを生成する印刷コマンド生成ステップと、前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、印刷装置に出力する出力ステップとを有し、前記出力ステップは、前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、印刷順とは無関係に生成された順で、印刷装置に出力することを特徴とする。
また、本発明の他の特徴とするところは、印刷装置の動的に変化する情報を取得する取得ステップと、前記取得ステップにより取得された情報に基づいて、各スレッドの担当する処理を決定し、決定した処理を各スレッドに割り当てる割り当てステップと、前記割り当てステップにより処理が割り当てられた複数のスレッドを並行して処理して複数の印刷コマンドを生成する印刷コマンド生成ステップと、前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、複数のスレッドで並行して印刷制御装置に出力する出力ステップとを有し、前記出力ステップは、前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、印刷順とは無関係に生成された順で、印刷装置に出力することを特徴とする。
【００１４】
本発明のコンピュータプログラムは、印刷ジョブに含まれる複数の領域のデータを、互いに独立した複数の処理手段の何れかに割り当てる割り当てステップと、前記割り当てステップにより複数の領域のデータが割り当てられた複数の処理手段で並行して処理して複数の印刷コマンドを生成する印刷コマンド生成ステップと、前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、印刷装置に出力する出力ステップとをコンピュータに実行させ、前記出力ステップは、前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、印刷順とは無関係に生成された順で、印刷装置に出力することを特徴とする。
また、本発明の他の特徴とするところは、印刷装置の動的に変化する情報を取得する取得ステップと、前記取得ステップにより取得された情報に基づいて、各スレッドの担当する処理を決定し、決定した処理を各スレッドに割り当てる割り当てステップと、前記割り当てステップにより処理が割り当てられた複数のスレッドを並行して処理して複数の印刷コマンドを生成する印刷コマンド生成ステップと、前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、複数のスレッドで並行して印刷制御装置に出力する出力ステップとをコンピュータに実行させ、前記出力ステップは、前記印刷コマンド生成ステップにより生成された複数の印刷コマンドを、印刷順とは無関係に生成された順で、印刷装置に出力することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、印刷ジョブ中に、処理負荷の重い領域が含まれていても、印刷ジョブのスループットを向上させることができる。また、動的に変化する印刷装置の状態に応じて処理分担を変更するので、印刷ジョブのスループットを向上させることができる。
【発明を実施するための最良の形態】
【００１６】
（第１の実施形態）
次に、図面を参照しながら、本発明の第１の実施形態について説明する。
図１は、本実施形態における画像形成システムの構成の一例を示す図である。
図１において、本実施形態の画像形成システムは、情報処理装置１とプリンタ２とが、セントロＩ／Ｆ（インタフェース）に接続された通信ケーブル３を介して相互に接続されて構成される。
なお、本実施形態では、簡単のため情報処理装置１とプリンタ２とが１対１で接続されている場合を示している。しかしながら、以下に示す本実施形態の機能が実行されるのであれば、情報処理装置１及びプリンタ２の少なくとも何れか一方を複数有するシステムであってもよい。また、ＬＡＮや、ＷＡＮ等のネットワークを介して、情報処理装置１及びプリンタ２が相互に接続されるシステムであってもよい。
【００１７】
図２は、情報処理装置１及びプリンタ２の内部構成の一例を示すブロック図である。
まず、情報処理装置１の内部構成の一例について説明する。
ＣＰＵ２０１は、制御プログラムを実行する等して情報処理装置１を統括制御する。ＲＡＭ２０２は、ＣＰＵ２０１の主メモリや、ＯＳ（Operating System）及びアプリケーションプログラム等を実行する際のワークエリア等として機能する。
ＨＤドライブ２０３は、プリンタ制御プログラム等を格納する。ディスプレイ２０４は、データや処理結果等を表示するためのものであり、例えば、ＣＲＴディスプレイや液晶ディスプレイ等である。ＲＯＭ２０５は、文書処理を行うためのプログラムを含む各種プログラムや、フォントや、例えばテンプレート用データ等の各種データを記憶する。
【００１８】
ＦＤ（Flexible Disk）２０６は、プリンタドライバや、処理モード自動制御プログラム等を格納している。ＦＤドライブ２０７は、ＦＤ２０６に格納されているプログラムやデータを、ＲＡＭ２０２やＨＤドライブ２０３に出力する。操作部２０８は、ユーザインタフェースであり、例えばキーボードやポインティングデバイスを備えている。セントロＩ／Ｆ（インタフェース）２０９は、プリンタ２等の外部装置と通信を行うための通信インタフェースである。
【００１９】
なお、図２では、ＣＰＵ２０１が１つの場合を例に挙げて示した。しかしながら、物理的に複数のＣＰＵを備えたり、１つのＣＰＵ内部に複数のコアを持つことで実質的に複数のＣＰＵを備えたりするようにし、ＯＳが、これら複数のＣＰＵにスレッドを振り分けるようにしてもよい。
【００２０】
ＣＰＵ２０１は、例えば、ＲＡＭ２０２に設定された表示情報ＲＡＭへアウトラインフォントを展開する処理（ラスタライズ処理）を実行し、ディスプレイ２０４でＷＹＳＩＷＹＧを可能とするものである。また、ＣＰＵ２０１は、ディスプレイ２０４に表示されたマウスカーソル等で指示されたコマンドに基づいて、予め登録された種々のウィンドウを開き、種々のデータ処理を実行する。ユーザは、プリンタ２で印刷を実行する際に、印刷の設定に関するウィンドウを開き、プリンタ２の設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行う。
【００２１】
次に、プリンタ２の内部構成の一例について説明する。
セントロＩ／Ｆ（インタフェース）２１０は、情報処理装置１等の外部装置と通信を行うための通信インタフェースである。例えば、セントロＩ／Ｆ２１０は、プリンタ２が情報処理装置１から通信ケーブル３を経由して印刷データを受信する。ＲＯＭ２１１は、モード切換制御プログラム等の各種制御プログラムを記憶する。
【００２２】
ＣＰＵ２１２は、ＲＯＭ２１１に記憶された制御プログラムを実行する等して、各デバイスとのアクセスを総括的に制御し、エンジンＩ／Ｆ２１５を介してプリンタエンジン２１６に、出力情報としての画像信号を出力する。ＲＡＭ２１３は、ＣＰＵ２１２の主メモリや、ワークエリアとして機能する。
コプロセッサ２１４は、簡単な演算を行うものである。プリンタエンジン２１６は、実際に紙の搬送や、印刷を行うものである。エンジンＩ／Ｆ２１５は、プリンタエンジン２１６と、プリンタ２内の各部とのインタフェースである。
【００２３】
本実施形態のプリンタ２は、処理モードとして、フルカラーモードと白黒モードとを備えている。さらに、本実施形態のプリンタ２は、後述するようにホストコンピュータである情報処理装置１から入力された制御情報に基づいて、処理モードを印刷データのページ単位で切り替えることが可能である。
なお、通信ケーブル３は、ネットワークと置き換えることが可能であり、このようにした場合には、セントロＩ／Ｆ２０９、２１０は、ネットワークＩ／Ｆ又はネットワークボードと置き換えられる。
【００２４】
ＣＰＵ２１２は、ホストコンピュータである情報処理装置１と、セントロＩ／Ｆ２１０を介して通信することが可能となっており、プリンタ２内の情報等を情報処理装置１に通知することができる。ＲＡＭ２１３は、増設ポートに接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。なお、ＲＡＭ２１３は、例えば、出力情報展開領域、環境データ格納領域、及びＮＶＲＡＭ等に用いられる。
【００２５】
図３は、プリンタ２に設けられたプリンタエンジン２１６の構成の一例を示した図である。
エンジンＩ／Ｆ２１５を介して入力した画像信号に基づいて得られる各色毎の画像データで偏重されたレーザ光が、ポリゴンミラー２１０１により感光ドラム２１０２を走査されることにより、静電潜像が形成される。そして、この静電潜像がトナー現像されることにより可視画像が得られ、この可視画像の全色が中間転写体２１０３へ多重転写されると、カラー可視画像が形成される。さらに、このカラー可視画像が転写材２１０４へ転写され、転写材２１０４上にカラー可視画像が定着する。
【００２６】
以上のような制御を行う画像形成部は、感光ドラム２１０２を有するドラムユニット、接触帯電ローラを有する一次帯電部、クリーニング部、現像部、中間転写体２１０３、用紙カセットや各種ローラを含む給紙部、転写ローラを含む転写部、及び定着部を備える。これらの構成部は、公知の技術と同じであるので詳細な説明を省略する。
【００２７】
図４は、前記プリンタ制御プログラムを含む印刷関連モジュールが、情報処理装置１のＲＡＭ２０２にロードされ実行可能となった状態のメモリマップの一例を示す図である。
【００２８】
図４のメモリマップ３１には、アプリケーションプログラム３２と、空きメモリ３３と、関連データ３４と、前記プリンタ制御プログラムを含む印刷関連モジュール３５と、ＯＳ３６と、ＢＩＯＳ（Basic Input/Output System）３７とが含まれている。
【００２９】
なお、後述する図７、８、１１、１２、１４の各ステップによって表される命令を実行する前記処理モード自動制御プログラムは、実行時に、ＨＤドライブ２０３に記憶されている前記プリンタ制御プログラムを含む印刷関連モジュールの一部として記憶される。そして、ＣＰＵ２０１がＯＳ３６の管理の下でこの処理モード自動制御プログラムを実行する。
【００３０】
本実施形態の情報処理装置１は、ＢＩＯＳ３７、ＯＳ３６、前記プリンタ制御プログラムを含む印刷関連モジュール３５、及びアプリケーション３２をＣＰＵ２０１が実行することにより動作する。ＢＩＯＳ３７はＲＯＭ２０５に書き込まれており、ＯＳ３６はＨＤドライブ２０３に書き込まれている。そして、情報処理装置１の電源がオンされると、ＢＩＯＳプログラム中のＩＰＬ（Initial Program Loading）機能によりＨＤドライブ２０３からＯＳ３６がＲＡＭ２０２に読み出され、ＯＳ３６の動作が開始する。
【００３１】
そして、前記プリンタ制御プログラムを含む印刷関連モジュール３５が実際に動作可能となるのは、ユーザからの指示に基づいて、ＯＳ３６の管理の下で動作するアプリケーション３１より印刷処理が実行された時である。すなわち、印刷関連モジュール３５が記憶されているＦＤ２０６をＦＤドライブ２０７にセットされている状態で、ＯＳ３６及びＢＩＯＳ３７の制御の下に印刷関連モジュール３５がＦＤ２０６又はＨＤドライブ２０３から読み出され、ＲＡＭ２０２にロードされた時である。又は印刷関連モジュール３５がＨＤドライブ２０３に保存されている状態で、ＯＳ３６及びＢＩＯＳ３７の制御の下に印刷関連モジュール３５がＦＤ２０６又はＨＤドライブ２０３から読み出され、ＲＡＭ２０２にロードされた時である。前述した通り、図４は、前記プリンタ制御プログラムを含む印刷関連モジュール３５が情報処理装置１のＲＡＭ２０２にロードされ実行可能となった状態のメモリマップ３１を示している。
【００３２】
なお、前記プリンタ制御プログラムは、情報処理装置１のＲＯＭ２０５に格納されていてもよい。また、前記プリンタ制御プログラムのプログラムコードが、ＦＤ２０６からＦＤドライブ２０７を介して情報処理装置１にインストールされるようにしてもよい。
さらに、前述したプログラムを記憶しておく記憶媒体は、ＦＤ２０６に限らず、例えば、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、光磁気ディスク、光ディスク、磁気テープ、不揮発性のメモリカード、又はＤＶＤ等であっても構わない。
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することにより、そのプログラムコードを記憶した記憶媒体も本発明を構成することになる。
【００３３】
図５は、プリンタ２等と相互に接続されている情報処理装置１における典型的な印刷処理の構成の一例を示した図である。
図５において、アプリケーションプログラム３２、グラフィックエンジン１９０２、プリンタドライバ１９０３、及びシステムスプーラ１９０４は、ＨＤドライブ２０３に保存されたファイルとして存在する。これらは、印刷が実行される際に、ＯＳ３６等によってＲＡＭ２０２にロードされ実行されるプログラムモジュールである。なお、アプリケーションプログラム３２及びプリンタドライバ１９０３は、ＦＤ２０６やＣＤ−ＲＯＭ等の他の記憶媒体に保存されていてもよい。また、アプリケーションプログラム３２及びプリンタドライバ１９０３は、ネットワークを経由してＨＤドライブ２０３に追加されるようにすることも可能である。
【００３４】
アプリケーションプログラム３２は、ＲＡＭ２０２にロードされて実行される。しかしながら、このアプリケーションプログラム３２からプリンタ２に対して印刷の実行を指示する際には、ＲＡＭ２０２にロードされて実行可能となっているグラフィックエンジン１９０２を利用して出力（描画）を行う。
【００３５】
グラフィックエンジン１９０２は、プリンタ２毎に用意されたプリンタドライバ１９０３に印刷命令を送って、アプリケーションプログラム３２で生成された印刷データを、プリンタドライバ１９０３を用いてプリンタ２の制御コマンドに変換する。このプリンタ制御コマンドは、ＯＳ３６によってＲＡＭ２０２にロードされたシステムスプーラ１９０４を経てセントロＩ／Ｆ２０９を介してプリンタ２へ出力される。
【００３６】
本実施形態の画像形成システムは、図５に示した構成に加えて、図６に示すように、アプリケーションプログラム３２で生成された印刷データを中間コードデータとして一旦スプールするようにしている。
【００３７】
図６は、プリンタ２等と相互に接続されている情報処理装置１における印刷処理の構成の一例を特徴的な部分を含めて示した図である。
図６に示すように、本実施形態の情報処理装置１では、グラフィックエンジン１９０２からプリンタドライバ１９０３へ印刷命令を送る際に、中間コードからなるスプールファイル２００９が一旦生成される。このように、スプールファイル２００９を一旦生成すると、スプーラ２００３で印刷命令がスプールされているときに、その印刷命令の内容を確認することにより、印刷コマンドを生成する最適な処理モードを選択することが可能となる。例えば、アプリケーションプログラム３２のプロセスと、印刷データを作成する印刷プロセッサのプロセスとを分けることも可能になる。
【００３８】
図６に示すように、本実施形態では、グラフィックエンジン１９０２からの印刷命令をプリンタドライバ１９０３ではなく、スプーラ２００３が受け取る。ＣＰＵ２０１は、ＨＤドライブ２０３に格納されているスプーラ２００３をＲＡＭ２０２にロードする。このＲＡＭ２０２にロードされたスプーラ２００３に印刷命令が送られる。
【００３９】
スプーラ２００３は、受け取った印刷命令を中間コードに変換してスプールファイル２００９に出力する。本実施形態では、スプールファイル２００９は、ページ単位で作成される。スプールファイル２００９に印刷命令がスプールされる際に、データの種類やサイズ等の情報がカウントアップされる。また、スプールファイル２００９は、ページヒント情報を保持している。
【００４０】
なお、本実施形態では、スプールファイル２００９を、ＨＤドライブ２０３にファイルとして生成するようにしたが、ＲＡＭ２０２に生成するようにしても構わない。また、スプールファイル２００９を、バンド単位で作成するようにしてもよい。
スプーラ２００３は、ＨＤドライブ２０３に格納されているスプールファイルマネージャ２００４をＲＡＭ２０２にロードし、そのスプールファイルマネージャ２００４に対してスプールファイル２００９の生成状況を通知する。スプールファイル２００９が１ページ分生成されると、スプールファイルマネージャ２００４は、スプールファイル２００９で保持されたページヒント情報を元に、処理モードを決定する。処理モードを決定する方法の具体例は、図１１のフローチャートのステップＳ７００３で詳述する。
【００４１】
スプールファイルマネージャ２００４は、決定した処理モードに応じたＰＤＬプロセッサ２００５、２００６を、ＨＤドライブ２０３から読み出してＲＡＭ２０２にロードする。そして、スプールファイルマネージャ２００４は、ＰＤＬプロセッサ２００５、２００６に対して、スプールファイル２００９に記述された中間コードの印刷処理を行うように指示する。前述した例では、処理の軽いページ（抽象度の高いページ）に分類されたスプールファイル２００９に記述された中間コードの印刷処理を、ＰＤＬプロセッサ２００５に対して指示する。一方、処理の重いページ（抽象度の低いページ）に分類されたスプールファイル２００９に記述された中間コードの印刷処理を、ＰＤＬプロセッサ２００６に対して指示する。
【００４２】
ＰＤＬプロセッサ２００５、２００６は、互いに別のプロセス又は別のスレッドで動作している。本実施形態では、ＰＤＬプロセッサ２００５を、抽象度の高いＰＤＬ（Page Description Language）系の印刷データファイル２０１０（抽象度の高いＰＤＬコマンド）を生成するモジュールとしている。また、ＰＤＬプロセッサ２００６を、抽象度の低い中間データ系（イメージモードも含む）の印刷データファイル２０１０（プリミティブ（primitive）な描画命令に変換されたＰＤＬコマンド）を生成するモジュールとしている。
【００４３】
ＰＤＬプロセッサ２００５、２００６は、スプールファイルマネージャ２００４から指示されたスプールファイル２００９を処理して１ページ分の印刷データファイル２０１０を生成する。図６に示した例では、スプールファイル２００９ａは抽象度の高いものであるので、ＰＤＬプロセッサ２００５は、このスプールファイル２００９ａを処理して１ページ分の印刷データファイル２０１０ａを生成する。一方、スプールファイル２００９ｂは抽象度の低いものであるので、ＰＤＬプロセッサ２００６は、このスプールファイル２００９ｂを処理して１ページ分の印刷データファイル２０１０ｂを生成する。
【００４４】
なお、本実施形態では、印刷データファイル２０１０が、ＨＤドライブ２０３にファイルとして生成されるようにしている。しかしながら、印刷データファイル２０１０が、ＲＡＭ２０２に生成されるようにしても構わない。
【００４５】
ＰＤＬプロセッサ２００５、２００６は、１ページ分の印刷データファイル２０１０を生成すると、その印刷データファイル２０１０を別のプロセスで動作する出力マネージャ２００７に即座に出力する。
出力マネージャ２００７は、受け取った印刷データファイル２０１０を、システムスプーラ１９０４を経由してプリンタ２に出力する。
【００４６】
図７は、前記プリンタ制御プログラムの概略処理の一例を説明するフローチャートである。
まず、ステップＳ４０１において、ＣＰＵ２０１は、印刷の実行時にアプリケーションプログラム３２から受け取った印刷データ（例えばコードデータ）を中間コードに変換し、ＨＤドライブ２０３に一時的に保存する。この中間コードの生成と保存と共に、ＣＰＵ２０１は、アプリケーションプログラム３２から印刷要求がなされた個々の印刷データの情報をＲＡＭ２０２に記憶し、ページ単位でその情報を保存する。
【００４７】
次に、ステップＳ４０２において、ＣＰＵ２０１は、ステップＳ４０１で一時的に保存された中間コードと、ステップＳ４０１でＲＡＭ２０２に記憶されたページ単位の情報とに基づいて、印刷データを生成するための処理モードを決定する。そして、ＣＰＵ２０１は、決定した処理モードでプリンタ２に出力する印刷データファイル２０１０を生成する。
【００４８】
なお、前述したようにして中間コードを生成しなくても、本実施形態の画像形成システムを実行することが可能である。例えば、ＣＰＵ２０１は、印刷データであるコードデータを生成する際に、そのコードデータを一度解析することにより、印刷データのページあたりのデータ種別の統計を取る。そして、１ページ分の印刷データファイルを生成した後に、コードデータから再度コードデータを生成し直すことも考えられる。
【００４９】
図８は、図７に示したステップＳ４０１の詳細な処理を説明するフローチャートである。なお、この図５に示す処理は、スプーラ２００３がスプールファイル２００９を生成するときにＣＰＵ２０１が行う。
【００５０】
ステップＳ５００１では、以下のジョブ初期化処理を行う。
このジョブ初期化処理では、まず、中間コードを一時的に保存するためのスプールファイル２００９と、ジョブを識別するためのジョブ識別子とを情報処理装置１のＨＤドライブ２０３に作成し、作成したスプールファイル２００９をオープンする。そして、中間コードの情報をページ毎に保存するためにジョブ識別子を初期化し、ジョブ識別子をスプールファイルマネージャ２００４へ通知する。
【００５１】
図９は、ジョブ識別子の一例を示した図である。
図９において、ジョブ識別子は、ファイルＩＤ（FileID）１００１と、ページナンバ（PageNo）１００２と、ステイタス１００３と、判定結果１００４と、中間コマンド情報１０５とをページ毎に有している。
【００５２】
ファイルＩＤ（FileID）１００１は、中間コードが格納されているスプールファイル２００９を特定するための情報である。ページナンバ（PageNo）１００２は、ＯＳ３６から受け取ったページ順を示す情報である。ステイタス１００３は、プリンタ２のステイタス（status）の管理を行うための情報である。判定結果１００４は、決定した処理モードを示す情報である。中間コマンド情報１００５は、格納した中間コマンドに関する情報である。
【００５３】
前記ジョブ初期化処理は、前記ジョブ識別子を全てクリアする。具体的に説明すると、例えば、メンバーのファイルＩＤ（FileID）１００１に格納するページカウンタＮを「１」にする。また、ステイタス１００３を、スプール中を示す「１」に変更する。これにより、１ページ目が実行されていることを表すようにする。
【００５４】
次に、ステップＳ５００２において、アプリケーションプログラム３２からの印刷要求を受け付ける。
次に、ステップ５００３において、ステップＳ５００２で受け付けた印刷要求が、ジョブの終了か否かを判定する。この判定の結果、受け付けた印刷要求が、ジョブの終了である場合には、後述するステップＳ５０１１に進む。一方、受け付けた印刷要求が、ジョブの終了でない場合には、ステップＳ５００４に進み、ステップＳ５００２で受け付けた印刷要求が、改ページであるか否かを判定する。この判定の結果、受け付けた印刷要求が、改ページでなく、受け付けた印刷要求が印刷データの場合には、ステップＳ５００５〜Ｓ５００７を省略してステップＳ５００８に進む。一方、受け付けた印刷要求が、改ページである場合には、ステップＳ５００５に進む。
【００５５】
ステップＳ５００８では、受け付けた印刷要求（印刷データ）を中間コマンドに変換する。次に、ステップ５００９において、ステップＳ５００８で生成した中間コマンドに関する中間コマンド情報１００５を、ジョブ識別子に反映させる。
次に、ステップＳ５０１０において、中間コマンドをＨＤドライブ２０３にあるスプールファイル２００９へ書き込む。
そして、ステップＳ５００２に戻り、アプリケーションプログラム３２からの印刷要求を再度受け付ける。このステップＳ５００２〜Ｓ５０１０までの処理を、ジョブを終了する印刷要求をアプリケーションプログラム３２から受け取るまで繰り返し行う。
【００５６】
ステップＳ５００４において、ステップＳ５００２で受け付けた印刷要求が、改ページであると判断した場合には、ステップＳ５００５に進み、オープンしているスプールファイル２００９をクローズする。そして、ジョブ識別子のステイタス１００３の値を、データのスプールの終了を示す「２」に変更する。その後、スプールファイルマネージャ２００４に、処理が終了したページ情報を通知することにより、そのページの処理をスプールファイルマネージャ２００４に移す。スプールファイルマネージャ２００４に通知するページ情報は、例えば、生成した中間コマンドを一時的に格納しているスプールファイル２００９のファイル名と、ジョブ識別子に記録した中間コマンド情報１００５である。
次に、ステップＳ５００６において、次のページに対応する中間コマンドを一時的に格納するためのスプールファイル２００９を開く。
次に、ステップＳ５００７において、ジョブ識別子で使うページカウンタＮをインクリメントして、ステップＳ５００８に進む。
【００５７】
ステップＳ５００３において、ステップＳ５００２で受け付けた印刷要求が、ジョブの終了であると判断した場合には、アプリケーションプログラム３２からの印刷要求は全て終了であるので、ステップＳ５０１１に進む。そして、スプールファイルマネージャ２００４へ印刷処理の進捗状況を通知し、図７のステップＳ４０１の処理を終了する。
【００５８】
図１０は、図７のステップＳ４０１の処理によってＨＤドライブ２０３に生成されるスプールファイル２００９の内容の一例を示した図である。なお、図１０において、［ページ開始命令］、［文字登録命令］、及び［文字印字命令］等が記述されているが、これらはファイル中の印字データを便宜的に分かり易くするための標記であり、実際は、これらの記述がバイナリ形式であっても構わない。
【００５９】
次に、図１１のフローチャートを参照しながら、スプール済みのスプールファイル２００９のファイル名と、ジョブ識別子に記録された中間コマンド情報１００５とを受け取ったスプールファイルマネージャ（プロセス又はスレッド）２００４の処理の一例を説明する。
まず、ステップＳ７００１において、スプールが終了したページ番号の通知を受け取ると、ステップＳ７００２において、そのページ番号に対応するページの中間コマンド情報１００５を読み出す。
【００６０】
次に、ステップＳ７００３において、ステップＳ７００２で読み出した中間コマンド１００５の値から、そのページを処理するのに最も適した処理モードを決定し、決定した処理モードを、ジョブ識別子の判定結果１００４に記録する。
本実施形態では、切り替え対象となる処理モードは、例えば、抽象度の高いＰＤＬコマンドを送るＰＤＬモードと、抽象度の低いコマンドを送るイメージモードである。このように処理モードを切り替えるのは、全体の処理速度を向上させるためである。
そこで、例えば、ジョブ識別子に記録されている中間コマンドの描画要素の個数（グラフィックオブジェクト数）と、グラフィックスデータサイズとから、ＰＤＬモードで処理したときの処理時間と、イメージモードで処理したときの処理時間の両方を予測する。そして、予測した処理時間が短い方を選択ことで処理モードを決定する。
【００６１】
描画命令が少ないページでプリンタ２の処理能力を超えないページであれば、印刷データを抽象度の高いままＰＤＬコマンドを生成するＰＤＬモードの方が、転送する印刷データのサイズを小さくでき、印刷データの生成時間も最短にすることができる。
一方、巨大なイメージデータや、複雑なグラフィックス描画命令を含むページの印刷データをそのままＰＤＬ化してプリンタ２に送ると、印刷データのサイズがプリンタ２の処理能力を超えてしまう。近年の情報処理装置１では、プリンタ２よりも高速なＣＰＵを使っているものが一般的である。したがって、情報処理装置１で抽象度を下げたコマンド（最も極端なものはページ全体のイメージデータ）にまで展開してしまう方が全体の処理時間を短くすることができる。
【００６２】
ステップＳ７００４において、ステップＳ７００３で決定した処理モードに適したＰＤＬプロセッサ２００５、２００６がすでに起動されているか否かを判定する。この判定の結果、決定した処理モードに適したＰＤＬプロセッサ２００５、２００６が起動していない場合は、ステップＳ７００６に進み、決定した処理モードに適したＰＤＬプロセッサ２００５、２００６を起動する。一方、決定した処理モードに適したＰＤＬプロセッサ２００５、２００６が起動している場合は、ステップＳ７００６を省略してステップＳ７００５に進む。
そして、ステップ７００５において、起動しているＰＤＬプロセッサ２００５、２００６にスプールファイル２００９を処理するように通知する。
【００６３】
次に、図１２のフローチャートを参照しながら、スプールファイル２００９に一時的に記憶されている中間コマンドから、印刷データファイル２０１０を生成する際のＰＤＬプロセッサ２００５、２００６（ＣＰＵ２０１）の処理の一例を説明する。
【００６４】
まず、ステップＳ８００１において、ＨＤドライブ２０３に記憶されているジョブ識別子をスキャンし、自分が処理すべきページを検索する。例えば、起動しているＰＤＬプロセッサが、ＰＤＬモード用のＰＤＬプロセッサ２００５であれば、ステイタス１００３が「２」であって、且つ判定結果１００４がＰＤＬにセットされているファイルＩＤ１００１を検索する。そして、検索したファイルＩＤ１００１に対応するスプールファイル２００９をオープンする。
【００６５】
次に、ステップＳ８００２で、これから生成する印刷データを一旦保存する印刷データファイル２０１０をオープンする。印刷データの保存先は、ＨＤドライブ２０３でも、ＲＡＭ２０２の関連データ３１が記憶される領域でもよい。そして、ジョブ中のポジション（ページ位置）が判読可能な領域情報を、オープンした印刷データファイル２０１０に付加する。
【００６６】
次に、実際に中間コマンドの検索を開始する。まず、ステップＳ８００３では、中間コマンドの読み出しを図１０に示した印刷命令単位で行う。図１０に示したスプールファイル２００９に一時的に保存されている中間コマンドから最初に読み出される中間コマンドは［ページ開始命令〕となる。続けて、中間コマンドがスプールファイル２００９の終端（末尾）まで読み出される。
【００６７】
この中間コマンドを読み出す過程において、ステップＳ８００４では、ＣＰＵ２０１は、現在の読み出し位置がスプールファイル２００９の終端か否かを判定する。この判定の結果、現在の読み出し位置がスプールファイル２００９の終端でない場合は、ステップＳ８００５に進みＣＰＵ２０１は、指定された処理モードに従って中間コマンドから印刷データを生成する。そして、ステップＳ８００２で開いた印刷データファイル２０１０に保存する。
【００６８】
ステップＳ８００４で、現在の読み出し位置がスプールファイル２００９の終端か否かを判定し、１ページ分の中間コマンドから印刷データを生成し終えると、ステップＳ８００６に進む。ステップＳ８００６では、ページ終了命令を生成して、ステップＳ８００５で印刷データを保存したファイルに追記する。そして、ジョブ識別子のステイタス１００３には処理終了を示す「３」をセットし、印刷データを生成したページ番号と、保存した印刷データとを出力マネージャ２００７に通知する。
そして、ステップＳ８００７において、印刷データの生成が終了した中間コマンドが一時的に保存されているスプールファイル２００９をクローズして、削除する。
【００６９】
図１３に、ＰＤＬプロセッサ２００５、２００６がステップＳ８００２〜Ｓ８００５で生成する印刷データの具体例を示す。図１３に示す印刷データ１３００では、ページ開始命令の属性と、ページ終了命令の属性として、アプリケーションプログラム３２から受け取った本来のページ番号をつけることで、ジョブ中のページ位置を示している。
【００７０】
次に、図１４のフローチャートを参照しながら、プリンタドライバとしては最後の処理である出力マネージャ２００７（ＣＰＵ２０１）の処理の一例を説明する。
まず、ステップＳ９００１において、ＰＤＬプロセッサ２００５、２００６が印刷データを１ページ分生成し終わった通知を受けると、ＨＤドライブ２０３にあるジョブ識別子をスキャンし、プリンタ２に出力可能なページを検索する。図９に示した例では、ステイタス１００３が「３」であれば、中間コマンドから印刷データへの変換は終わっているので、ステイタス１００３が「３」のページの中から最もページナンバ１００２が小さいページを選択する。そして、そのページの印刷データファイル２０１０を取得する。
次に、ステップＳ９００２において、ステップＳ９００１で取得した印刷データファイル２０１０に含まれる印刷データを、システムスプーラ１９０４を介してプリンタ２に出力する。そして、全ての処理が終了したことを示す「４」をジョブ識別子のステイタス１００３に記録する。
次に、ステップ９００３において、プリンタ２に出力された印刷データを記録していた印刷データファイル２０１０を削除する。
【００７１】
以上のように、出力マネージャ２００７は、ＰＤＬプロセッサ２００５、２００６が生成した印刷データをページ単位で受け取り次第、プリンタ２に出力する。複数のＰＤＬプロセッサ２００５、２００６が別々のスレッドで並列に印刷データを生成した場合、処理時間を要するページが、処理の軽いページに追い越されてプリンタ２に出力されることが考えられる。
【００７２】
その場合、プリンタ２が受け取る印刷データは、図１５に示すように、ページ順が入れ替わったものになる。しかしながら、描画命令が、ページ開始命令と、ページ終了命令とで囲まれているので、プリンタ２で出力するページ順を整形しなおすことは可能である。
なお、バンド毎に描画命令を送るようなＰＤＬコマンド形式の場合には、「ページ番号」と「バンド番号」とを描画命令につけることによって、バンド単位で送る順番を変えることも可能である。
【００７３】
図１６は、図１５に示したように、ページ順が入れ替わった印刷データを処理可能なプリンタ２の内部構成の一例を示したブロック図である。
図１６において、受信バッファ１５０１に格納されたＰＤＬコマンドは、ＣＰＵ２１２で動作するプログラムであるトランスレータ１５０２で中間データ１５０６に変換された後、ＲＡＭ２１３においてページ単位で管理される。具体的に中間データ１５０６の各ページは、ＲＡＭ２１３に形成されたページ管理テーブル１５０５に記録される。このページ管理テーブル１５０５は、レンダラー１５０３に渡される。
【００７４】
レンダラー１５０３は、ＣＰＵ２１２で動作するプログラムが、ハードウェア等を使って中間データからイメージデータを生成するためのモジュールである。レンダラー１５０３は、トランスレータ１５０２から渡されるページ管理テーブル１５０５を参照して出力可能なページがあるか否かを判定し、出力可能なページがあれば中間データ１５０６を読み出してイメージデータに展開する処理を実行する。ＲＡＭ２１３に展開されたイメージデータは、ビデオ信号に変換された後、プリンタエンジン２１６に送られ、印字処理が完了する。印字処理が完了したページは、前記ページ管理テーブルに記録される。
【００７５】
次に、図１７のフローチャートを参照しながら、トランスレータ１５０２における処理の一例を説明する。
まず、ステップＳ１６０１において、初期化処理としてページ管理テーブル１５０５を作成する。
次に、ステップＳ１６０２において、受信バッファ１５０１に格納されたＰＤＬコマンドを読み出す。次に、ステップＳ１６０３において、ジョブが終了したか否かを判定する。この判定の結果、ジョブが終了した場合には処理を終了する。一方、ジョブが終了していない場合には、ステップＳ１６０４に進み、ジョブが改ページか否かを判定する。
【００７６】
この判定の結果、ジョブが改ページの場合には、ステップＳ１６０５に進み、次のページのＰＤＬデータを処理することができるように、ページ管理テーブル１５０５を更新する。具体的に、ステップＳ１６０２〜Ｓ１６０５を繰り返して、１ページ分の中間データ１５０６を生成すると、ページ管理テーブル１５０５の対応するページ部に受信済みであることを示すフラグをＯＮ（オン）する。
一方、ジョブが改ページでない場合には、ステップＳ１６０５を省略してステップＳ１６０６に進む。
そして、ステップＳ１６０６において、ＰＤＬコマンドから中間データを生成し、ＲＡＭ２１３に保存する。
【００７７】
次に、図１８のフローチャートを参照しながら、レンダラー１５０３における処理の一例を説明する。なお、ここでは、レンダラー１５０３は、トランスレータ１５０２とは独立した別々のプロセスで動作するものとし、トランスレータ１５０２が中間データ１５０６を１ページ分だけＲＡＭ２１３に保存すると起動するものとする。
まず、ステップＳ１７０１において、ページ管理テーブル１５０５を確認する。次に、ステップＳ１７０２において、ページ管理テーブル１５０５を確認した結果に基づいて、処理（出力）すべきページがあるか否かを判定する。この判定の結果、処理すべきページがない場合には、処理を終了する。一方、処理すべきページがある場合には、ステップＳ１７０３に進み、ページ管理テーブル１５０５を確認した結果に基づいて、出力可能なページがあるか否かを判定する。
【００７８】
この判定の結果、出力可能なページがある場合には、ステップＳ１７０４に進み、出力可能なページの中間データをイメージデータ（例えばビットマップ）に展開する処理を行う。そして、イメージデータをビデオ信号に変換し、そのビデオ信号をプリンタエンジン２１６に送信する。プリンタエンジン２１６は、前記ビデオ信号に基づいて、印字と、排紙とを行う。
次に、ステップＳ１７０５において、ページ管理テーブル１５０５に、対応するページが出力（印刷）済みであることを記録する。具体的にページ管理テーブル１５０５の対応するページ部に印刷済みであることを示すフラグをＯＮ（オン）する。
ステップＳ１７０３において出力可能なページがないと判定した場合は、ステップＳ１７０４、Ｓ１７０５を省略してステップＳ１７０１に戻る。そして、トランスレータ１５０２が出力可能なページの中間データを生成して、ページ管理テーブル１５０５を更新するまで待機する。以上のように、処理（出力）すべきページがなくなるまでステップＳ１７０１〜Ｓ１７０５を繰り返し実行する。
【００７９】
図１９は、ページ管理テーブルの構成の一例を模式的に示した図である。
図１９において、ページ管理テーブル１５０５ａ、１５０５ｂは、印刷順、受信済フラグ、及び印刷済フラグを１セットとして構成されるテーブルである。そして、このセットが出力するページ分だけ作成される。
印刷順は、ＰＤＬプロセッサ２００５、２００６で生成された印刷データ１３００内のページ開始命令に格納されているページ番号をどの順番に出力するのかを示すためのものである。通常の印刷では、この印刷順の欄には、「１，２，３，・・・」の値が入り、アプリケーションプログラム３２から渡された順番に印刷を行うが、製本印刷、両面印刷、又は逆順印刷を行う場合には、初期化時にこの印刷順の値が変化する。
【００８０】
受信済フラグは、トランスレータ１５０２が１ページ分の中間データ１５０６を作成し終わったときにステップＳ１６０５でオンされるフラグである。
印刷済フラグは、レンダラー１５０３が出力し終わったときにステップＳ１７０５でオンされるフラグである。
【００８１】
図１９（ａ）に示すページ管理テーブル１５０５ａでは、１ページと、３ページは受信済みであり、１ページだけが出力（印刷）済みであることを示している。
この状態は、３ページ目については、中間データは生成されているが、次に出力（印刷）すべきページである２ページ目の受信が終わっていないため、出力（印刷）することができないことを示している。
【００８２】
図１９（ｂ）に示すページ管理テーブル１５０５ｂは、図１９（ａ）に示すページ管理テーブル１５０５ａよりも処理が進んだ状態を示している。すなわち、ページ管理テーブル１５０５ｂは、１ページ目と３ページ目に加えて２ページ目と４ページ目の中間データも生成され、２ページ目の印刷も終了し、３ページ目の印刷処理が実行中であることを示している。
【００８３】
次に、図２０及び図２１を参照しながら、本実施形態の効果を説明する。図２０は、従来のシングルスレッドで処理した場合の処理時間と、本実施形態のマルチスレッド（奇数ページ対するスレッドと偶数ページ対するスレッドとの２つのスレッド）で処理した場合の処理時間とを説明する図である。
図２０（ａ）は、従来のシングルスレッドで印刷命令を生成し、印刷ジョブの入力順に印刷命令を送信するプリンタドライバが、印刷命令（印刷データ）を生成する時間、印刷命令を送信する時間、及びプリンタが排紙を行う時間を模式的に示したものである。
【００８４】
図２０（ａ）において、５ページの連続した印刷ジョブのうち、２ページ目と５ページ目が印刷データの生成に時間がかかる印刷ジョブとなっている。このため、これら２ページ目と５ページ目における印刷命令の送信時間が長くなり、その間プリンタは待ち状態が続くことになる。
【００８５】
図２０（ｂ）は、図２０（ａ）に示したのと同じ印刷ジョブを、本実施形態の手法で処理した場合の処理時間を模式的に示したものである。
図２０（ｂ）に示す例では、ＰＤＬプロセッサ２００５、２００６の種類は同じとする。そして、スプールファイルマネージャ２００４は、ページの処理の重さで処理モードを切り替えるのではなく、機械的に順番に印刷処理をＰＤＬプロセッサ２００５、２００６に振り分けた場合を示している。図２０（ｂ）の例は、ＰＤＬプロセッサが２つある場合である。ＰＤＬプロセッサが３つある場合は、１の倍数のページの印刷命令をＰＤＬプロセッサ１で生成し、２の倍数のページの印刷命令をＰＤＬプロセッサ２で生成し、３の倍数のページの印刷命令をＰＤＬプロセッサ３で生成する。
【００８６】
図２０（ｂ）において、偶数ページである２ページ目の印刷命令の生成に時間がかかっている間に、奇数ページである１ページ目と３ページ目の印刷命令の生成が終了したために、２ページ目の印刷命令の前に３ページ目の印刷命令がプリンタ２に送信される。
印刷命令は生成し終わるまでプリンタ２に送信できないが、このようにすれば、情報処理装置１とプリンタ２との間の転送経路が効率的に使われ、且つプリンタ２が待ち状態になる時間を減らすことができる。
【００８７】
図２１は、従来のシングルスレッドで処理した場合の処理時間と、本実施形態のマルチスレッド（軽いページに対するスレッドと重いページに対するスレッドとの２つのスレッド）で処理した場合の処理時間とを説明する図である。
図２１（ａ）に示すように、従来は、印刷命令の生成を１つのスレッドで行っている。このため、処理に時間がかかる重いページが印刷ジョブの途中に存在し、その重いページをプリンタドライバでイメージデータに展開すると、その間は、プリンタに印刷命令（印刷データ）が送信されない。したがって、全体の処理効率が下がってしまう。
それに対して、図２１（ｂ）に示すように、軽いページ用のＰＤＬ生成スレッドと、重いページ用のイメージモード専用スレッドとで、処理を分担して印刷命令を生成すると、重いページを処理している間に、軽いページの印刷命令を生成してプリンタ２に送信することができる。これにより、情報処理装置１とプリンタ２との両方のリソースを効率的に使うことができ、トータルの印刷時間を短縮することができる。
【００８８】
以上のように、本実施形態では、印刷データの処理モード毎に複数の処理スレッドを立ち上げ、これら複数の処理スレッドを並行してＰＤＬプロセッサ２００５、２００６で処理して印刷データファイル２０１０を生成する。そして、印刷データファイル２０１０ができ次第、その印刷データファイル２０１０に含まれている印刷データをプリンタ２に出力することにより、情報処理装置１とプリンタ２との間の通信経路を効率的に使用することができると共に、プリンタ２で処理が行われない時間を減らすことができ、印刷に要する全体の処理時間を短縮することが可能になる。
【００８９】
なお、本実施形態では、ページ管理テーブル１５０５を確認した結果に基づいて、出力可能なページがあるか否かを判定することによって、情報処理装置１から生成順に送信された印刷データを並べ替えてページ順に印刷を行うようにしている。しかしながら、情報処理装置１が、生成した印刷データを印刷順に並べ替えてプリンタ２に送信し、プリンタ２が受信順に印刷データの印刷処理を行うようにしてもよい。
【００９０】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。前述した第１の実施形態では、Windows（登録商標）2k/XPのように、ＯＳが印刷命令毎に印刷命令を渡すようにしたが、本実施形態では、アプリケーションプログラム又はＯＳが印刷命令をファイルのようにまとまった形式で渡すようにしている。このように本実施形態と前述した第１の実施形態とは、印刷命令の処理の一部が異なるだけである。したがって、本実施形態の説明において、前述した第１の実施形態と同一の部分については、図１〜図２１に付した符号と同一の符号を付す等して詳細な説明を省略する。
【００９１】
図２２は、本実施形態の情報処理装置２２００における印刷処理の構成の一例を示した図である。
図２２において、プロセッサマネージャ２２０３は、アプリケーションプログラム２２０１又はＯＳ２２０２が作成した印刷要求ファイル２２０９を受け取ることで、処理を開始する。なお、本実施形態のアプリケーションプログラム２２０１及びＯＳ２２０２と、第１の実施形態のアプリケーションプログラム３２及びＯＳ３６とは、このような印刷要求ファイル２２０９によって、印刷命令をファイルの形式で渡すこと以外は同じである。
【００９２】
プロセッサマネージャ２２０３は、受け取った印刷要求ファイル２２０９を解析して処理モードを決定する。
プロセッサマネージャ２２０３は、決定した処理モードに応じたＰＤＬプロセッサ２００５、２００６を、ＨＤドライブ２０３から読み出してＲＡＭ２０２にロードする。そして、プロセッサマネージャ２２０３は、ＰＤＬプロセッサ２００５、２００６に対して、印刷要求ファイル２２０９に記述された中間コードの印刷処理を行うように指示する。
【００９３】
ＰＤＬプロセッサ２００５、２００６は、互いに別のプロセス又は別のスレッドで動作している。本実施形態においても、ＰＤＬプロセッサ２００５は、抽象度の高いＰＤＬ系の印刷データファイル２０１０を生成するモジュールであり、ＰＤＬプロセッサ２００６は、抽象度の低い中間データ系の印刷データファイル２０１０を生成するモジュールであるとする。
【００９４】
ＰＤＬプロセッサ２００５、２００６は、プロセッサマネージャ２２０３から指示された印刷要求ファイル２２０９を処理して１ページ分の印刷データファイル２２１０を生成する。
そして、ＰＤＬプロセッサ２００５、２００６は、１ページ分の印刷データファイル２０１０を生成する（スプールする）と、その印刷データファイル２０１０を別のプロセスで動作する出力マネージャ２００７に通知する。
出力マネージャ２００７は、受け取った印刷データファイル２０１０を、システムスプーラ１９０４を経由してプリンタ２に出力する。
【００９５】
このように、本実施形態では、動作するＯＳの環境によって、ＯＳが渡す印刷命令の方式が第１の実施形態とは異なる。しかしながら、印刷命令を領域毎に分割し、複数のスレッドで印刷データ（印刷データファイル２０１０）を生成する構成をとるようにしていれば、本実施形態においても、第１の実施形態と同様の効果を得ることができる。
【００９６】
なお、前述した各実施形態においては、前述した処理を実行する制御プログラムを含む印刷関連モジュールを記憶する媒体をＦＤ２０６又はＨＤドライブ２０３としたが、それ以外にＣＤ−ＲＯＭやＩＣメモリカード等としてもよい。さらに、制御プログラム単体、又は制御プログラムを含む印刷関連モジュールをＲＯＭ２０５に記憶しておき、これをメモリマップの一部となすように構成し、制御プログラムをＣＰＵ２０１で直接実行することも可能である。
【００９７】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。
図２３は、本実施形態における情報処理装置の構成の一例を示すブロック図である。
図２３において、情報処理装置２３０１はコンピュータである。情報処理装置２３０１は、ＣＰＵ、メモリ、ハードディスク、フレキシブルディスクドライブ、キーボード、マウス、ディスプレイ、及びネットワークインタフェース等、一般的な情報処理装置におけるハードウェアを備える。すなわち、情報処理装置２３０１のハードウェアの構成は、例えば、図１に示したようになる。
【００９８】
次に、情報処理装置２３０１のソフトウェアの構成の一例について説明する。
オペレーティングシステム（ＯＳ）２３０２は、クライアント２３０１が備えるハードウェアと、アプリケーション２３０３、プリンタドライバ２３０４、ランゲージモニタ２３０５、及びネットワークポートドライバ２３０６等のソフトウェアとを管理する。代表的なオペレーティングシステムとしては、例えばマイクロソフト社のＷｉｎｄｏｗｓ（登録商標）などが挙げられる。
【００９９】
アプリケーションプログラム２３０３は、例えばワードプロセッサのように、文書や図形を作成したり編集したりする機能と、写真画像を編集する機能とを備える。また、アプリケーションプログラム２３０３は、作成及び編集したアプリケーションデータに基づく印刷指示を行うこともできる。
プリンタドライバ２３０４は、アプリケーションプログラム２３０３が発行した印刷指令を、オペレーティングシステム２３０２を経由して受け取る。そして、受け取った印刷指令をランゲージモニタ２３０５及びプリンタ２３０７の少なくとも何れか一方が解釈可能なプリンタコマンドに変換する。
【０１００】
ランゲージモニタ２３０５は、プリンタドライバ２３０４が出力したプリンタコマンドを受け取り、ネットワークポートドライバ２３０６を経由してプリンタ２３０７に送信する。クライアントコンピュータベースの印刷システムでは、プリンタ２３０７の詳細なステイタスを受信しながらプリンタ２３０７での印刷状況に合わせてプリンタコマンドの送信を行う必要がある。このようにしてプリンタ２３０７の印刷状況に合わせてプリンタコマンドの送信を行う処理は、ランゲージモニタ２３０５によって行われる。一方、ＰＤＬタイプの印刷システムにおいては、この処理が多少軽減される。
【０１０１】
ネットワークポートドライバ２３０６は、ランゲージモニタ２３０５が出力したプリンタコマンドを、前記ネットワークインタフェースを介してプリンタ２３０７に送信する。また、ネットワークポートドライバ２３０６は、プリンタ２３０７からプリンタ２３０７のステイタスを受信した場合には、そのステイタスをランゲージモニタ２３０５に出力する。プリンタ２３０７は、ネットワークポートドライバ２３０６から受信したプリンタコマンドに従って印刷に関連する各種処理を行う。
【０１０２】
図２４は、本実施形態における印刷制御装置の構成の一例を示すブロック図である。
図２４において、複数のホストコンピュータ２４０１ａ〜２４０１ｎがネットワーク２４１５に接続されている。印刷制御装置２４２０は、複数のホストコンピュータ２４０１ａ〜２４０１ｎからインタフェース（ネットワークインタフェース２４２１）を介して送信された画像データに対して所定の画像処理を施すコントローラである。画像形成装置２４４０は、印刷制御装置２４２０に接続され、例えば、カラー／グレースケールのデジタル画像をプリントアウトするためのものである。このように、印刷制御装置２４２０と、画像形性装置２４４０とを用いて、プリンタ２３０７が構成される。
【０１０３】
印刷制御装置２４２０は、ホストコンピュータ２４０１ａ〜２４０１ｎに接続されるネットワークインタフェース２４２１を有し、このネットワークインタフェース２４２１がＣＰＵバス２４２３に接続されている。ＣＰＵバス２４２３には、ＣＰＵ２４２４と、ＲＡＭ２４２６と、ＨＤＤコントローラ２４２７と、ＦＩＦＯ（First-In First-Out）部２４２９とが接続されている。
【０１０４】
ＣＰＵ２４２４は、印刷制御装置２４２０の全体の動作を制御する。ＲＯＭ２２５は、印刷制御装置２４２０の全体の動作をＣＰＵ２４２４が制御する際に実行される制御プログラム等を格納する。ＲＡＭ２２６は、ＣＰＵ２４２４が制御プログラムを実行する際の作業用のワークエリア等として使用される。
【０１０５】
内蔵ハードディスク（ＨＤ）２４２８は、フォントデータや後述するパスワード等を記憶する。ＨＤＤコントローラ２２７は、内蔵ハードディスク（ＨＤ）２４２８の動作を制御する。
ここで、ＲＡＭ２４２６は、ラスタ画像データを記憶するフレームメモリ２４２６ａと、ＰＤＬ画像データを保持するＰＤＬバッファ２４２６ｂとを備えている。なお、ラスタ画像データをフレームメモリ２４２６ａに記憶する代りに、内蔵ＨＤ２４２８に記憶することも可能である。
また、ネットワークインタフェース２４２１自身にも内部的にＣＰＵが備わっており、ネットワーク２４１５の制御などを独立して行うことが可能なインテリジェント性が備わっている。
【０１０６】
以上のような構成の印刷制御装置２４２０によれば、ホストコンピュータ２４０１からネットワークインタフェース２４２１を介して送られてきたＰＤＬ画像データは、ＣＰＵバス２４２３を介してＰＤＬバッファ２４２６ｂに一旦保持される。ＣＰＵ２４２４は、ＲＯＭ２４２５や内蔵ＨＤ２４２８に記憶されているフォントデータ等を用いて、ＰＤＬバッファ２４２６ｂに保持されているＰＤＬ画像データをラスタ画像データに展開し、フレームメモリ２４２６ａに書き込む。
【０１０７】
この印刷制御装置２４２０からは、ＣＰＵバス２４２３及びＦＩＦＯ部２４２９を介して、ラスタ画像データが、画像形成用信号２４５１として画像形成装置２４４０へ送られる。画像形成装置２４４０では、その画像形成用信号２４５１に基づいて画像形成が行われる。また、印刷制御装置２４２０と画像形成装置２４４０は、インタフェース２４３０、２４４４を介して、種々の通信を行える。
【０１０８】
また、ネットワークインタフェース２４２１は、描画用のフレームメモリ２４２６ａへ直接アクセスすることができる。具体的には、ＤＭＡ（Direct Memory Access）等を用いて、ネットワークインタフェース２４２１から簡単なハードウェアで描画用のフレームメモリ２４２６ａへデータを直接転送することができる。
【０１０９】
画像形成装置２４４００は、画像形成部２４４１と、操作部２４４２と、制御部２４４３と、インタフェース２４４４とを備えて構成されている。画像形成部２４４１は、ホストコンピュータ２４０１ａ〜２４０１ｎから送られてきた画像データを、例えば４００ｄｐｉの解像度で記録媒体にカラー又はグレースケールで出力する機能を有している。
制御部２４４３は、画像形成装置２４４０の全体の制御を行うものであり、ボタンやスイッチ等を備える操作部２４４２に対するユーザの操作内容、及び印刷制御装置２４２０との通信内容に応じて画像をプリントする機能を有する。
【０１１０】
図２５は、本実施形態における情報処理装置２３０１と印刷制御装置２４２０の機能的な構成の一例を示すブロック図である。情報処理装置２３０１と、画像処理装置２５２０は、ネットワークを介して相互に接続されている。以下に、印刷処理を実行する際の画像処理システムにおける動作の一例を説明する。
【０１１１】
アプリケーションプログラム２５１１は、印刷動作が起動すると、ＸＡＭＬ形式の印刷データ２５１２を作成する。ここで生成されるＸＡＭＬ形式の印刷データ２５１２は、従来のＧＤＩ（Graphic Device Interface）形式の印刷データと同様のものである。ＸＡＭＬ形式の印刷データ２５１２が作成されると、ページ割り振りスレッド２５１３は、印刷データ２５１２を解析する。そして、処理の内容や並行処理性等を考慮して、印刷データ２５１２の領域を分割し、分割した印刷データ２５１２を、ＰＤＬ生成スレッド２５１４、２５１５に割り振る処理等を行う。
【０１１２】
このようにして印刷データ２５１２が割り振られると、ＰＤＬ生成スレッド２５１４、２５１５は、割り触れられた印刷データからＰＤＬデータを生成する。これらＰＤＬ生成スレッド２５１４、２５１５は、並行してＰＤＬデータを生成する処理を行う。なお、ＰＤＬ生成スレッド２５１４、２５１５は、ＰＤＬデータだけでなく、ホストコンピュータ２４０１側でイメージデータに展開されたデータを画像処理装置２４２０に送信することもできる。
【０１１３】
ＰＤＬ生成スレッド２５１４、２５１５によって生成されたＰＤＬデータは、送信スレッド２５１６、２５１７によって画像処理装置２４２０に送信される。このＰＤＬデータを送信する処理は、ページ割り振りスレッド２５１３によってスケジューリングされたネットワーク通信チャネルを用いて行われる。
【０１１４】
画像処理装置２４２０のネットワークインタフェース２４２１は、受信した印刷データを、その印刷データの種別に応じて、印刷制御メイン部２５２２へ転送するか、画像メモリ２５２３へ直接書き込むかを判断する。ネットワークインタフェース２４２１は、例えば、印刷データがＰＤＬデータの場合には、その印刷データを印刷制御メイン部２５２２へ転送すると判断する。一方、印刷データがホストコンピュータ２４０１でイメージデータに展開されたデータ、又はネットワークインタフェース２４２１で簡単な画像処理を行わせるデータである場合には、その印刷データを画像メモリ２５２３へ直接書き込むと判断する。
【０１１５】
印刷制御メイン部２５２２へ転送されたＰＤＬデータは、印刷制御メイン部２５２２で画像処理が行われた後に、画像メモリ２５２３へ書き込まれ、印刷制御メイン部２５２２によるプリンタエンジン（画像形成装置２４４０）の制御によって印刷が実行される。
ネットワークインタフェース２４２１から画像メモリ２５２３へ直接書き込まれる印刷データは、ホストコンピュータ２４０１側でイメージデータに展開されたデータであるか、ネットワークインタフェース２４２１で簡単な画像処理を行わせるデータである。このような印刷データの場合には、ネットワークインタフェース２４２１で簡単な画像処理を行った結果を（印刷制御メイン部２５２２を介さずに）画像メモリ２５２３に書き込む。そして印刷制御メイン部２５２２によるプリンタエンジン（画像形成装置２４４０）の制御によって印刷が実行される。
【０１１６】
次に、図２６のフローチャートを参照しながら、情報処理装置２３０１におけるプリンタドライバ２３０４の処理の一例を説明する。
まず、ステップＳ４０１において、印刷動作が起動すると、印刷を行うプリンタ２３０７から基本情報を獲得する。この基本情報の一例としては、プリンタ２３０７における画像形成用のメモリの容量や、印刷メイン制御部２５２２を構成するＣＰＵ２４２４の情報や、ネットワークインタフェース２４２１が使用可能なバッファメモリの容量のように、静的な情報である。これらの基本情報に基づいて、プリンタドライバ２３０４は、自身の行うべき処理を切り替えることになる。
【０１１７】
次に、ステップＳ４０２において、アプリケーションプログラム２３０３が出力した印刷データ（アプリケーションデータ）を解析する。そして、解析して得られた結果と、ステップＳ４０１で獲得した静的な基本情報とに基づいて、印刷時間を短縮する上で効果がでるように印刷データの分類を行う。この分類により、情報処理装置２３０１と、印刷制御装置２４２０との間における負荷の分散を図った上で、情報処理装置２３０１側ではマルチスレッドによって、分類された印刷データを並行して処理することができる。
【０１１８】
次に、ステップＳ４０３において、プリンタ２３０７から、動的に変化する動的情報を獲得する。この動的情報の一例としては、画像形成用のメモリにおける実際の空き容量や、ＣＰＵ２４２４の負荷情報や、印刷中のステイタス進行情報等である。
次に、ステップＳ４０４において、各スレッドが分担する処理を決定し、ステップＳ４０５において、処理を分担して行うマルチスレッドを起動する。なお、分担する処理と共に、後述する送信処理において使用するチャネルについてもこのステップＳ４０４で決定しておく。
【０１１９】
そして、ステップＳ４０６〜Ｓ４０９において、いくつかの画像処理を同時に並行して行い、その結果としてＰＤＬデータやホストスケーリングデータが生成される。さらに、ステップＳ４１０〜Ｓ４１３において、マルチスレッドにより、ネットワーク２４１５を介して印刷制御装置２４２０へ並行して、ＰＤＬデータやホストスケーリングデータが送信される。
【０１２０】
次に、ステップＳ４１４において、１ページ中の全ての領域で処理が終了したか否かを判定する。この判定の結果、１ページ中の全ての領域で処理が終了していなければステップＳ４０３に戻り、１ページ中の全ての領域で処理が終了するまでステップＳ４０３〜Ｓ４１４を繰り返し行う。
１ページ中の全ての領域で処理が終了すると、ステップＳ４１５に進み、全てのページで処理が終了したか否かを判定する。この判定の結果、全てのページで処理が終了していなければ、ステップＳ４０２に戻り、次のページへの処理に進み、全てのページで処理が終了するまでステップＳ４０２〜Ｓ４１５を繰り返し行う。一方、全てのページで処理が終了したなら、印刷処理は終了となる。
【０１２１】
なお、以上の説明では、１ページをある領域に分割し、分割した領域を分担してマルチスレッドで処理するようにしたが、領域単位で分割するのではなく、オブジェクト単位で分割することも可能である。その場合には、例えば、オブジェクトの重なり合いの情報を用いて、重ね合わせる順番を考慮したり、ページ情報を用いて各ページの構成を考慮したりする必要がある。
【０１２２】
次に、図２７のフローチャートを参照しながら、印刷制御装置２４２０におけるネットワークインタフェース２４２１の処理の一例について説明する。
まず、ステップＳ５０１において、ネットワーク２４１５からデータを受信するまで待機する。データの受信があると、ステップＳ５０２に進み、受信したデータのプロトコルを解析し、そのデータの中身を解析する。受信したデータは、通常、何らかのコマンド形式で記述がされている。
【０１２３】
次に、ステップＳ５０３において、受信したデータが、印刷で使用するＮＩＣ（Network Information Card）に専用のチャネルを設定するコマンドか否かを判定する。この判定の結果、受信したデータが、印刷で使用するＮＩＣに専用のチャネルを設定するコマンドである場合には、それ以降で使用するチャネルについての情報が指定されているので、ステップＳ５０４に進む。そして、ステップＳ５０４において、そのチャネルが使用できるように専用のチャネルを設定した後、ステップＳ５０１に戻り次のパケット処理に移る。このステップＳ５０４では、具体的に、ある番号のＴＣＰ（Transmission Control Protocol）ポート番号に対して、LISTENするようにする。さらに、印刷で使用するＮＩＣに専用のチャネルを設定するコマンドにはＮＩＣで行う機能についての指定がある。したがって、ＮＩＣで受信されたデータに対してその指定された機能に基づく処理が適用される。
【０１２４】
一方、受信したデータが、印刷で使用するＮＩＣに専用のチャネルを設定するコマンドでない場合には、ステップＳ５０５に進み、受信したデータが、ステップＳ５０４で設定された専用のチャネルへの印刷データか否かを判定する。この判定の結果、受信したデータが、ステップＳ５０４で設定された専用のチャネルへの印刷データである場合には、その専用のチャネルに割り付けられた機能で処理を行う（ステップＳ５０６〜Ｓ５１０）。ここではメモリ転送処理と簡易画像処理について説明する。
【０１２５】
ステップＳ５０６において、受信したデータが、メモリ転送処理用のデータか否かを判定する。この判定の結果、受信したデータが、メモリ転送処理用のデータの場合には、ステップＳ５０７に進み、メモリ転送処理を行う。このメモリ転送処理では、受信したデータに含まれている画像用メモリアドレス情報に基づくメモリ領域（画像メモリ２５２３）に、受信したデータに含まれているイメージデータを直接書き込む。このように、印刷メイン制御部２５２２を構成するＣＰＵ２４２４を介することなくイメージデータの書き込みを可能とすることによって、ＣＰＵ２４２４への負担を増やさないことが可能である。
【０１２６】
ステップＳ５０６において、受信したデータが、メモリ転送処理用のデータでない場合には、ステップＳ５０８に進み、受信したデータが、簡易画像処理用のデータであるか否かを判定する。この判定の結果、受信したデータが、簡易画像処理用のデータである場合には、ステップＳ５０９に進み、簡易画像処理を行う。この簡易画像処理では、受信したデータのコマンドを解析し、解析した結果に応じた画像処理を行う。例えば、圧縮されたデータを伸長する。そして、ステップＳ５１０において、ステップＳ５０９で画像処理したデータを画像メモリ２５２３へ書き込む。ＮＩＣのＣＰＵで可能であるような画像処理をネットワークインタフェース２４２１で行うことで、転送するイメージデータの量を圧縮して通信速度を向上させることが可能となると共に、ＣＰＵの負荷を増やさないようにすることが可能となる。
【０１２７】
ステップＳ５０５において、受信したデータが、ステップＳ５０４で設定された専用のチャネルへの印刷データでないと判定された場合には、ステップＳ５１１に進む。ステップＳ５１１では、受信したデータが、ＮＩＣ内で処理することが可能なデータであるか否かを判定する。例えば、受信したデータが、ＭＩＢ（Management Information Base）か否かを判定する。この判定の結果、受信したデータが、ＮＩＣ内で処理することが可能なデータである場合には、ステップＳ５１２に進み、受信したデータをＮＩＣに転送すると共に、ＮＩＣからの要求に応じて必要なデータをＮＩＣに出力する。
【０１２８】
一方、受信したデータが、ＮＩＣ内で処理することが可能なデータでない場合には、ステップＳ５１３に進み、受信したデータが、ＰＤＬデータか否かを判定する。この判定の結果、受信したデータが、ＰＤＬデータである場合には、ステップＳ５１４に進み、受信したデータを印刷制御メイン部２５２２に転送する。
一方、受信したデータが、ＰＤＬデータでない場合には、ステップＳ５１５に進み、受信したデータが、プリンタ２３０７のステイタス情報の取得コマンドか否かを判定する。この判定の結果、受信したデータが、プリンタ２３０７のステイタス情報の取得コマンドである場合には、ステップＳ５１６に進む。ステップＳ６１５では、印刷制御メイン部２５２２と通信を行って、動的に変化する動的情報を取得し、取得した動的情報を情報処理装置２３０１へ返信する。
【０１２９】
次に、図２８のフローチャートを参照しながら、印刷制御装置２４２０の処理の一例を説明する。
まず、ステップＳ６０１において、ネットワークインタフェース２４２１は、ネットワーク２４１５からデータを受信するまで待機する。データを受信した場合には、ステップＳ６０２に進み、ネットワークインタフェース２４２１は、その受信したデータを解析する。そして、受信したデータが、画像処理コマンドか、それともプリンタ制御コマンドかを判定する。
【０１３０】
この判定の結果、受信したデータが画像処理コマンドであれば、ステップＳ６０３に進む。ステップＳ６０３において、印刷制御メイン部２５２２又はネットワークインタフェース２４２１は、受信したデータが、メモリ転送処理用のデータであるか、それとも簡易画像処理用のデータであるかに応じて、処理を行う。そして、最終的に、受信したデータを画像メモリ２５２３でイメージデータに展開する。そして、展開されたイメージデータの印刷が行われる。
【０１３１】
次に、ステップＳ６０４において、ネットワークインタフェース２４２１は、ＮＩＣに専用のチャネルによる処理が完了しているか否かを判定する。この判定の結果、ＮＩＣに専用のチャネルによる処理が完了していなければ、ステップＳ６０５に進み、ネットワークインタフェース２４２１は、ウェイトする等して、最終的な印刷処理を完了できるようにするための制御を行う。
次に、ステップＳ６０５において、印刷制御メイン部２５２２は、プリンタエンジン（画像形成装置２４４０）の制御によって印刷を実行する。
【０１３２】
ステップＳ６０２において、受信したデータが、プリンタ制御コマンドであると判定した場合には、プリンタ２３０７の設定やプリンタ２３０７のステイタス情報の返信等、受信したプリンタ制御コマンドに応じた処理を行い、ステップＳ６０１に戻る。
【０１３３】
以上のように本実施形態では、情報処理装置２３０１は、アプリケーションプログラム２３０３が出力した印刷データの解析内容と、プリンタ２３０７から取得した基本情報とに基づいて印刷データの領域を分割し、分割した印刷データを分類する。そして、プリンタ２３０７から取得した動的情報に基づいて、マルチスレッドの各スレッドが分担する処理を決定する。各スレッドは、決定された処理を並行して行い、ＰＤＬデータやホストスケーリングデータ（例えば、前記メモリ転送処理用のデータや前記簡易画像処理用のデータ）を生成する。そして、生成したＰＤＬデータやホストスケーリングデータを、複数チャネルを利用して並行してプリンタ２３０７に送信する。以上のようにすることにより、情報処理装置２３０１で印刷データを効率よく生成することができ、印刷に要する時間を短縮することが可能になる。
【０１３４】
また、プリンタ２３０７側の印刷制御装置２４２０のネットワークインタフェース２４２１は、情報処理装置２３０１から送信された印刷データが、ＰＤＬデータの場合には、その印刷データを印刷制御メイン部２５２２へ転送する。そして、印刷制御メイン部２５２２で画像処理を行わせる。一方、情報処理装置２３０１から送信された印刷データが、ホストコンピュータ２４０１でイメージデータに展開されたデータ等のホストスケーリングデータの場合には、ネットワークインタフェース２４２１でそのデータの画像処理を行う。以上のようにすることにより、情報処理装置２３０１が生成した印刷データを効率よく通信処理することができ、印刷に要する時間を短縮することが可能になる。
【０１３５】
（本発明の他の実施形態）
上述した実施形態の機能を実現するべく各種のデバイスを動作させるように、該各種デバイスと接続された装置あるいはシステム内のコンピュータに対し、前記実施形態の機能を実現するためのソフトウェアのプログラムコードを供給する。そして、そのシステムあるいは装置のコンピュータ（ＣＰＵあるいはＭＰＵ）に格納されたプログラムに従って前記各種デバイスを動作させることによって実施したものも、本発明の範疇に含まれる。
【０１３６】
また、この場合、前記ソフトウェアのプログラムコード自体が上述した実施形態の機能を実現することになる。また、そのプログラムコード自体、及びそのプログラムコードをコンピュータに供給するための手段、例えば、かかるプログラムコードを格納した記録媒体は本発明を構成する。かかるプログラムコードを記憶する記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【０１３７】
また、コンピュータが供給されたプログラムコードを実行することにより、上述の実施形態の機能が実現される。さらに、そのプログラムコードがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）あるいは他のアプリケーションソフト等と共同して上述の実施形態の機能が実現される場合にもかかるプログラムコードは本発明の実施形態に含まれることは言うまでもない。
【０１３８】
さらに、供給されたプログラムコードがコンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行う。その処理によって上述した実施形態の機能が実現される場合にも本発明に含まれることは言うまでもない。
【０１３９】
なお、前述した各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【０１４０】
【図１】本発明の第１の実施形態を示し、画像形成システムの構成の一例を示す図である。
【図２】本発明の第１の実施形態を示し、情報処理装置及びプリンタの内部構成の一例を示すブロック図である。
【図３】本発明の第１の実施形態を示し、プリンタに設けられたプリンタエンジンの構成の一例を示した図である。
【図４】本発明の第１の実施形態を示し、プリンタ制御プログラムを含む印刷関連モジュールが、情報処理装置のＲＡＭにロードされ実行可能となった状態のメモリマップの一例を示す図である。
【図５】本発明の第１の実施形態を示し、情報処理装置における典型的な印刷処理の構成の一例を示した図である。
【図６】本発明の第１の実施形態を示し、情報処理装置における印刷処理の構成の一例を特徴的な部分を含めて示した図である。
【図７】本発明の第１の実施形態を示し、プリンタ制御プログラムの概略処理の一例を説明するフローチャートである。
【図８】本発明の第１の実施形態を示し、図７のステップＳ４０１の詳細な処理を説明するフローチャートである。
【図９】本発明の第１の実施形態を示し、ジョブ識別子の一例を示した図である。
【図１０】本発明の第１の実施形態を示し、図７のステップＳ４０１の処理によってＨＤドライブに生成されるスプールファイルの内容の一例を示した図である。
【図１１】本発明の第１の実施形態を示し、スプール済みのスプールファイルのファイル名と、ジョブ識別子に記録された中間コマンド情報とを受け取ったスプールファイルマネージャの処理の一例を説明するフローチャートである。
【図１２】本発明の第１の実施形態を示し、スプールファイルに一時的に記憶されている中間コマンドから、印刷データファイルを生成する際のＰＤＬプロセッサの処理の一例を説明するフローチャートである。
【図１３】本発明の第１の実施形態を示し、ＰＤＬプロセッサが生成する印刷データの具体例を示す図である。
【図１４】本発明の第１の実施形態を示し、出力マネージャの処理の一例を説明するフローチャートである。
【図１５】本発明の第１の実施形態を示し、ページ順が入れ替わった印刷データの具体例を示す図である。
【図１６】本発明の第１の実施形態を示し、ページ順が入れ替わった印刷データを処理可能なプリンタの内部構成の一例を示したブロック図である。
【図１７】本発明の第１の実施形態を示し、トランスレータにおける処理の一例を説明するフローチャートである。
【図１８】本発明の第１の実施形態を示し、レンダラーにおける処理の一例を説明するフローチャートである。
【図１９】本発明の第１の実施形態を示し、ページ管理テーブルの構成の一例を模式的に示した図である。
【図２０】本発明の第１の実施形態を示し、従来のシングルスレッドで処理した場合の処理時間と、本実施形態のマルチスレッド（奇数ページ対するスレッドと偶数ページ対するスレッドとの２つのスレッド）で処理した場合の処理時間とを説明する図である。
【図２１】本発明の第１の実施形態を示し、従来のシングルスレッドで処理した場合の処理時間と、本実施形態のマルチスレッド（容量が軽いページに対するスレッドと容量が重いページに対するスレッドとの２つのスレッド）で処理した場合の処理時間とを説明する図である。
【図２２】本発明の第２の実施形態を示し、情報処理装置における印刷処理の構成の一例を示した図である。
【図２３】本発明の第３の実施形態を示し、情報処理装置の構成の一例を示すブロック図である。
【図２４】本発明の第３の実施形態を示し、印刷制御装置の構成の一例を示すブロック図である。
【図２５】本発明の第３の実施形態を示し、情報処理装置と印刷制御装置の機能的な構成の一例を示すブロック図である。
【図２６】本発明の第３の実施形態を示し、情報処理装置におけるプリンタドライバ２３０４の処理の一例を説明するフローチャートである。
【図２７】本発明の第３の実施形態を示し、印刷制御装置におけるネットワークインタフェースの処理の一例について説明するフローチャートである。
【図２８】本発明の第３の実施形態を示し、印刷制御装置の処理の一例を説明するフローチャートである。
【符号の説明】
【０１４１】
１、２３０１  情報処理装置
２、２３０７  プリンタ
３２、２２０１  アプリケーションプログラム
１９０２  グラフィックエンジン
１９０４  システムスプーラ
２００３  スプーラ
２００４  スプールファイルマネージャ
２００５、２００６  ＰＤＬプロセッサ
２００７  出力マネージャ
２００９  スプールファイル
２０１０  印刷データファイル
２２０３  プロセッサマネージャ
２２０９  印刷要求ファイル
２４２１  ネットワークインタフェース
２５１３  ページ割り振りスレッド
２５１４、２５１５  ＰＤＬ生成スレッド
２５１６、２５１７  送信スレッド
２５２２  印刷制御メイン部
２５２３  画像メモリ
【図１】
0004738948.tif 000002
【図２】
0004738948.tif 000003
【図３】
0004738948.tif 000004
【図４】
0004738948.tif 000005
【図５】
0004738948.tif 000006
【図６】
0004738948.tif 000007
【図７】
0004738948.tif 000008
【図８】
0004738948.tif 000009
【図９】
0004738948.tif 000010
【図１０】
0004738948.tif 000011
【図１１】
0004738948.tif 000012
【図１２】
0004738948.tif 000013
【図１３】
0004738948.tif 000014
【図１４】
0004738948.tif 000015
【図１５】
0004738948.tif 000016
【図１６】
0004738948.tif 000017
【図１７】
0004738948.tif 000018
【図１８】
0004738948.tif 000019
【図１９】
0004738948.tif 000020
【図２０】
0004738948.tif 000021
【図２１】
0004738948.tif 000022
【図２２】
0004738948.tif 000023
【図２３】
0004738948.tif 000024
【図２４】
0004738948.tif 000025
【図２５】
0004738948.tif 000026
【図２６】
0004738948.tif 000027
【図２７】
0004738948.tif 000028
【図２８】
0004738948.tif 000029