(57)【要約】【課題】複雑な体裁、出力形態の属性設定等がされているドキュメントの印刷においても、プリンタの印刷エンジン速度（ｐｐｍ）性能を最大限に発揮させること。【解決手段】ホストコンピュータ１００のプリンタドライバ１０２は、ドキュメントの印刷ジョブを送信する前に、該ドキュメントの印刷処理のための情報を、プリンタ１０４の印刷制御プログラム１０６に通知し、プリンタ１０４の印刷制御プログラム１０６は、印刷ジョブを受信する前にホストコンピュータ１００のプリンタドライバ１０４から通知される前記印刷処理のための情報を取得し、該取得した印刷処理のための情報に基づいて、印刷処理のための前処理（ページ展開メモリの確保，各種作業領域の確保，フィニッシング処理準備等）を実行する構成を特徴とする。【選択図】図１
2006350443.tif 000002
【特許請求の範囲】
【請求項１】
所定のアプリケーションプログラムにおけるドキュメントの印刷制御処理に基づいて該ドキュメントの印刷ジョブを生成して印刷装置に送信する情報処理装置と、前記情報処理装置から送信される印刷ジョブに基づいて印刷処理を行う印刷装置とを有する印刷システムにおいて、
前記情報処理装置は、前記ドキュメントの印刷ジョブを送信する前に、該印刷ジョブの属性設定情報，制御情報を前記印刷装置に通知する通知手段を有するものであり、
前記印刷装置は、
印刷ジョブを受信する前に前記情報処理装置から通知される前記印刷ジョブの属性設定情報，制御情報を取得する取得手段と、
前記取得手段により取得した前記印刷ジョブの属性設定情報，制御情報に基づいて、該印刷ジョブの前処理を実行する前処理実行手段とを有することを特徴とする印刷システム。
【請求項２】
前記印刷ジョブの前処理は、ページ展開メモリの確保，画像レイアウト処理のための作業領域の確保，拡大縮小処理のための作業領域の確保，フィニッシング処理準備のいずれかの処理を含む最適化処理であることを特徴とする請求項１記載の印刷システム。
【請求項３】
前記情報処理装置の通知手段は、アプリケーションプログラムにおいてドキュメントの印刷制御処理が開始されると、該ドキュメントの印刷ジョブの制御開始を通知するためのジョブ制御開始通知を前記印刷装置に送信し、該ジョブ制御開始通知に応じて前記印刷装置から送信される要求に応じて、該印刷ジョブの属性設定情報，制御情報を前記印刷装置に通知するものであり、
前記印刷装置の取得手段は、前記情報処理装置からジョブ制御開始通知を受け取ると、処理の状態に応じて、該印刷ジョブの属性設定情報，制御情報の要求を、前記情報処理装置に送信することを特徴とする請求項１又は２記載の印刷システム。
【請求項４】
前記情報処理装置の通知手段は、前記ジョブ制御開始通知および前記印刷ジョブの属性設定情報，制御情報を、対応する印刷ジョブを送信する際に該印刷ジョブに付加して送信する識別子とともに通知するものであり、
前記印刷装置の取得手段および前記前処理実行手段は、前記情報処理装置から通知される前記ジョブ制御開始通知および前記印刷ジョブの属性設定情報，制御情報を、前記対応する印刷ジョブの識別子で識別することを特徴とする請求項１〜３のいずれかに記載の印刷システム。
【請求項５】
前記印刷ジョブの属性設定情報，制御情報は、該印刷ジョブに対応するドキュメントの文書全体の印刷処理のための情報，文書中の章，グループ単位の印刷処理のための情報、或いは、各ページ毎の印刷処理のための情報であることを特徴とする請求項１〜４のいずれかに記載の印刷システム。
【請求項６】
前記ドキュメントの文書全体の印刷処理のための情報，文書中の章，グループ単位の印刷処理のための情報、或いは、各ページ毎の印刷処理のための情報は、前記情報処理装置内でのドキュメントの印刷ジョブの制御処理中に決定される情報であることを特徴とする請求項５記載の印刷システム。
【請求項７】
前記印刷装置は、印刷ジョブを実行する前に、前記取得手段により取得した前記印刷ジョブの属性設定情報，制御情報に基づいて、前記印刷ジョブの印刷出力枚数，課金に関する情報のいずれかを含むコスト情報を前記情報処理装置に通知するコスト情報通知手段を有し、
前記情報処理装置は、前記印刷装置から通知されるコスト情報に基づいて、対応する印刷ジョブの実行又は中止を操作者が指示可能な指示手段を有することを特徴とする請求項１〜６のいずれかに記載の印刷システム。
【請求項８】
所定のアプリケーションプログラムにおけるドキュメントの印刷制御処理に基づいて該ドキュメントの印刷ジョブを生成して印刷装置に送信する情報処理装置と、前記情報処理装置から送信される印刷ジョブに基づいて印刷処理を行う印刷装置とを有する印刷システムにおいて、
前記印刷装置は、
印刷ジョブの開始が指示されると、該印刷ジョブの属性設定情報，制御情報を前記情報処理装置に要求して取得する取得手段と、
前記取得手段により取得した前記印刷ジョブの属性設定情報，制御情報に基づいて、該印刷ジョブを実行する実行手段とを有するものであり、
前記情報処理装置は、前記印刷装置から要求される印刷ジョブの属性設定情報，制御情報を前記印刷装置に通知する通知手段を有することを特徴とする印刷システム。
【請求項９】
前記印刷装置は、印刷ジョブを実行する前に、前記取得手段により取得した前記印刷ジョブの属性設定情報，制御情報に基づいて、前記印刷ジョブの印刷出力枚数，課金に関する情報のいずれかを含むコスト情報を操作者に通知するコスト情報通知手段と、
前記通知手段により通知されるコスト情報に基づいて、対応する印刷ジョブの実行又は中止を操作者が指示可能な指示手段と、
を有することを特徴とする請求項８記載の印刷システム。
【請求項１０】
前記情報処理装置の通知手段および前記印刷装置の取得手段は、前記アプリケーションプログラム又は該情報処理装置上で動作するプリンタドライバプログラム、および、前記印刷装置上で動作する印刷制御プログラムに、共通のプログラミングインターフェースによりデータの送受信を行うことを特徴とする請求項１〜９のいずれかに記載の印刷システム。
【請求項１１】
前記印刷ジョブの属性設定情報，制御情報は、用紙サイズに関する情報，用紙メディア種に関する情報，印刷部数に関する情報，部単位印刷の部数に関する情報，ソートに関する情報，給紙方法に関する情報，排紙方法に関する情報，ステイプル印刷に関する情報，パンチ印刷に関する情報，トリミング印刷に関する情報，用紙折り印刷に関する情報，複数ページ割付印刷に関する情報，両面印刷に関する情報、製本印刷に関する情報，用紙サイズ混在印刷に関する情報，印刷面付け順序に関する情報のいずれかの情報を含むことを特徴とする請求項１〜１０のいずれかに記載の印刷システム。
【請求項１２】
所定のアプリケーションプログラムにおけるドキュメントの印刷制御処理に基づいて該ドキュメントの印刷ジョブを生成して印刷装置に送信する情報処理装置において、
前記ドキュメントの印刷ジョブを送信する前に、該印刷ジョブの属性設定情報，制御情報を前記印刷装置に通知する通知手段を有することを特徴とする情報処理装置。
【請求項１３】
所定のアプリケーションプログラムにおけるドキュメントの印刷制御処理に基づいて該ドキュメントの印刷ジョブを生成して印刷装置に送信する情報処理装置において、
前記情報処理装置は、前記印刷装置から要求される印刷ジョブの属性設定情報，制御情報を前記印刷装置に通知する通知手段を有することを特徴とする情報処理装置。
【請求項１４】
所定のアプリケーションプログラムにおけるドキュメントの印刷制御処理に基づいて該ドキュメントの印刷ジョブを生成して印刷装置に送信する情報処理装置から送信される印刷ジョブに基づいて印刷処理を行う印刷装置において、
印刷ジョブを受信する前に前記情報処理装置から通知される該印刷ジョブの属性設定情報，制御情報を取得する取得手段と、
前記取得手段により取得した前記印刷ジョブの属性設定情報，制御情報に基づいて、該印刷ジョブの前処理を実行する前処理実行手段と、
を有することを特徴とする印刷装置。
【請求項１５】
所定のアプリケーションプログラムにおけるドキュメントの印刷制御処理に基づいて該ドキュメントの印刷ジョブを生成して印刷装置に送信する情報処理装置から送信される印刷ジョブに基づいて印刷処理を行う印刷装置において、
印刷ジョブの開始が指示されると、該印刷ジョブの属性設定情報，制御情報を前記情報処理装置に要求して取得する取得手段と、
前記取得手段により取得した前記印刷ジョブの属性設定情報，制御情報に基づいて、該印刷ジョブを実行する実行手段と、
を有することを特徴とする印刷装置。
【請求項１６】
所定のアプリケーションプログラムにおけるドキュメントの印刷制御処理に基づいて該ドキュメントの印刷ジョブを生成して印刷装置に送信する情報処理装置と、前記情報処理装置から送信される印刷ジョブに基づいて印刷処理を行う印刷装置とを有する印刷システムにおける印刷制御方法において、
前記情報処理装置が、前記ドキュメントの印刷ジョブを送信する前に、該印刷ジョブの属性設定情報，制御情報を前記印刷装置に通知する通知ステップと、
前記印刷装置が、印刷ジョブを受信する前に前記情報処理装置から通知される前記印刷ジョブの属性設定情報，制御情報を取得する取得ステップと、
前記印刷装置が、前記取得ステップで取得した前記印刷ジョブの属性設定情報，制御情報に基づいて、該印刷ジョブの前処理を実行する前処理実行ステップと、
を有することを特徴とする印刷制御方法。
【請求項１７】
所定のアプリケーションプログラムにおけるドキュメントの印刷制御処理に基づいて該ドキュメントの印刷ジョブを生成して印刷装置に送信する情報処理装置と、前記情報処理装置から送信される印刷ジョブに基づいて印刷処理を行う印刷装置とを有する印刷システムにおける印刷制御方法において、
印刷ジョブの開始が指示されると、前記印刷装置が、該印刷ジョブの属性設定情報，制御情報を前記情報処理装置に要求する要求ステップと、
前記情報処理装置が、前記印刷装置から要求される印刷ジョブの属性設定情報，制御情報を前記印刷装置に通知する通知ステップと、
前記印刷装置が、前記情報処理装置から通知される印刷ジョブの属性設定情報，制御情報を取得する取得ステップと、
前記印刷装置が、前記取得ステップにより取得した前記印刷ジョブの属性設定情報，制御情報に基づいて、該印刷ジョブを実行する実行ステップと、
を有することを特徴とする印刷制御方法。
【請求項１８】
請求項１６又は１７に記載された印刷制御方法を、コンピュータに実行させるためのプログラム。
【請求項１９】
請求項１６又は１７に記載された印刷制御方法を、コンピュータに実行させるためのプログラムをコンピュータが読み取り可能に記憶した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定のアプリケーションプログラムにおけるドキュメントの印刷制御処理に基づいて該ドキュメントの印刷ジョブを生成して印刷装置に送信する情報処理装置と、前記情報処理装置から送信される印刷ジョブに基づいて印刷処理を行う印刷装置とを有する印刷システムおよび印刷制御方法およびプログラムに関する。
【背景技術】
【０００２】
従来のオペレーティングシステム上で実行されるアプリケーションプログラム、プリンタドライバプログラム、及び印刷装置から構成される文書印刷に関して、以下（１）（２）に示す方法が一般的であった。
【０００３】
（１）印刷装置では、ホストコンピュータ側から印刷ジョブデータが送信され、印刷装置内の印刷制御部で印刷データを受信された時点で、印刷・出力のための各種制御処理が行なわれ、該当する文書印刷・出力が行なわれる。
【０００４】
（２）ホストコンピュータ及び印刷装置から構成される印刷システムでは、印刷対象となる文書に対して、印刷部数、部単位印刷の部数、ソート、拡大／縮小印刷、N-Up印刷（複数ページ割付印刷）、用紙サイズ混在印刷、製本印刷、及びこれらの印刷面付け順序変更等の種々かつ複雑な出力形態を施し、印刷・出力する場合、実際に印刷装置から印刷・出力後に、ユーザは初めて使用された用紙枚数を把握できる。
【特許文献１】特開２００３−０８４９４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら上記従来の技術では、アプリケーションプログラム、プリンタドライバプログラム、及び印刷装置から構成される印刷システムで印刷を行う場合、以下（１）（２）に示すような問題点があった。
【０００６】
（１）印刷装置において、印刷制御部で印刷データを受信された時点から、印刷・出力のための各種制御処理が行なわれる。そのため、特に複雑な印刷体裁を指示された文書印刷においては、印刷装置から排紙されるまでの時間および速度がかかり、印刷エンジン速度（ｐｐｍ）性能を最大限に発揮できない場合があるといった問題点があった。
【０００７】
（２）複雑な印刷体裁を指示された文書印刷においては、印刷・出力前に瞬時に出力用紙枚数等が計算できず、印刷装置から印刷・出力後に実際の出力用紙枚数等が判明する場合があった。このような場合、例えば、出力用紙枚数に応じて印刷課金を行う場合等、事前に出力用紙枚数などを表示させて、印刷を続行する／しないなどの選択することができないといった問題点があった。
【０００８】
本発明は、上記の問題点を解決するためになされたもので、本発明の目的は、所定のアプリケーションプログラムにおけるドキュメントの印刷制御処理に基づいて該ドキュメントの印刷ジョブを生成して印刷装置に送信する情報処理装置と、前記情報処理装置から送信される印刷ジョブに基づいて印刷処理を行う印刷装置とを有する印刷システムにおいて、前記情報処理装置が、前記ドキュメントの印刷ジョブを送信する前に、該印刷ジョブの属性設定情報，制御情報を前記印刷装置に通知し、前記印刷装置が、印刷ジョブを受信する前に前記情報処理装置から通知される前記印刷ジョブの属性設定情報，制御情報を取得し、前記印刷装置が、前記取得した前記印刷ジョブの属性設定情報，制御情報に基づいて、該印刷ジョブの前処理を実行するので、プリンタ側で事前に印刷制御の最適化処理を行うことが可能となり、複雑な体裁、出力形態の属性設定等がされているドキュメントの印刷においても、印刷エンジン速度（ｐｐｍ）性能を最大限に発揮することが可能となり、印刷エンジン性能に対してファーストプリントが極端に遅くなってしまうといった事態を抑えることができる印刷システムおよび印刷制御方法およびプログラムおよび記憶媒体を提供することである。
【課題を解決するための手段】
【０００９】
本発明は、所定のアプリケーションプログラムにおけるドキュメントの印刷制御処理に基づいて該ドキュメントの印刷ジョブを生成して印刷装置に送信する情報処理装置と、前記情報処理装置から送信される印刷ジョブに基づいて印刷処理を行う印刷装置とを有する印刷システムにおいて、前記情報処理装置は、前記ドキュメントの印刷ジョブを送信する前に、該印刷ジョブの属性設定情報，制御情報を前記印刷装置に通知する通知手段を有するものであり、前記印刷装置は、印刷ジョブを受信する前に前記情報処理装置から通知される前記印刷ジョブの属性設定情報，制御情報を取得する取得手段と、前記取得手段により取得した前記印刷ジョブの属性設定情報，制御情報に基づいて、該印刷ジョブの前処理を実行する前処理実行手段とを有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、所定のアプリケーションプログラムにおけるドキュメントの印刷制御処理に基づいて該ドキュメントの印刷ジョブを生成して印刷装置に送信する情報処理装置と、前記情報処理装置から送信される印刷ジョブに基づいて印刷処理を行う印刷装置とを有する印刷システムにおいて、前記情報処理装置が、前記ドキュメントの印刷ジョブを送信する前に、該印刷ジョブの属性設定情報，制御情報を前記印刷装置に通知し、前記印刷装置が、印刷ジョブを受信する前に前記情報処理装置から通知される前記印刷ジョブの属性設定情報，制御情報を取得し、前記印刷装置が、前記取得した前記印刷ジョブの属性設定情報，制御情報に基づいて、該印刷ジョブの前処理を実行するので、プリンタ側で事前に印刷制御の最適化処理を行うことが可能となり、複雑な体裁、出力形態の属性設定等がされているドキュメントの印刷においても、印刷エンジン速度（ｐｐｍ）性能を最大限に発揮することが可能となる。
【００１１】
従って、複雑な体裁、出力形態の属性設定等がされているドキュメントを印刷出力する場合であっても、印刷エンジン性能に対してファーストプリントが極端に遅くなってしまうといった事態を抑えることができる。
【発明を実施するための最良の形態】
【００１２】
〔第１実施形態〕
＜本実施の形態における動作例の概略＞
以下にホストコンピュータシステム（以下、ホストコンピュータ）上にＷｉｎｄｏｗｓ（登録商標）オペレーティング（ＯＳ）、ドキュメント作成・印刷アプリケーションプログラム、プリンタドライバプログラムおよびこれに接続する印刷装置（プリンタ）から構成される印刷システムを、本発明の印刷システムの一例として説明する。
【００１３】
本発明の印刷システムでは、ホストコンピュータシステム上のオペレーティングシステム、アプリケーションプログラム、プリンタドライバプログラム、および印刷装置内のプログラムメモリ上にある各種印刷制御プログラムに、相互に各種情報および各種データの通知する手段として、任意にプログラミング可能な関数あるいはデータ形式のアプリケーションプログラムインタフェース（ＡＰＩ）を備える。
【００１４】
そして、本発明の印刷システムでは、まず、ホストコンピュータにおいて、アプリケーションプログラムからのドキュメント印刷指示に基づき、ＡＰＩを使用し、プリンタドライバプログラムからプリンタ内の印刷制御部に印刷ジョブ制御開始を通知する。この通知に応じて、プリンタでは、プリンタ内の印刷制御部より、前記プリンタドライバプログラムにジョブ制御情報を要求する。これに応じて、前記プリンタドライバプログラムからプリンタにジョブ制御情報を通知し、その後、実際の印刷ジョブをプリンタに送信する。
【００１５】
上記ジョブ制御情報の通知に応じて、プリンタでは、該情報に基づいてドキュメント印刷前に、該当する印刷ジョブに係る各種最適化処理を行ない、実際の印刷ジョブデータを受信して、ドキュメント印刷を行う。以下、この実施形態について説明する。
【００１６】
＜本発明の印刷システム構成の説明（図１）＞
図１は、本発明の一実施形態を示す印刷システムの一例を示すシステム構成図である。なお、本実施形態では、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム（ＯＳ）、ドキュメント作成・印刷アプリケーションプログラム、プリンタドライバプログラムおよびこれに接続する印刷装置（プリンタ）から構成されるシステムについて、各要素間のＡＰＩの流れ、及び各種データの流れを示す。
【００１７】
図１において、１００はホストコンピュータである。このホストコンピュータ１００のプログラムメモリ上では、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム（ＯＳ）１０１、プリンタドライバプログラム１０２およびドキュメント作成・印刷アプリケーションプログラム１０３が動作・実行される。
【００１８】
１０４はプリンタであり、上記ホストコンピュータ１００に接続される。プリンタ１０４において、１０５は、各種制御プログラムの動作環境となるＶｘＷＯＲＫＳ（登録商標）リアルタイム・オペレーションシステム（ＯＳ）である。１０６は、各種印刷制御を行う印刷制御プログラムである。１０７はプリンタエンジン制御プログラムである。１０８はプリンタ１０４から出力されるドキュメント印刷である。
【００１９】
次に、本発明の印刷システムの動作・作用について詳細に説明する。
【００２０】
ホストコンピュータ１００のプログラムメモリ上で動作するＯＳ１０１上で実行されるアプリケーションプログラム１０３が初期化される時点で、プリンタドライバ１０２が、ＯＳ１０１へロードされる。これにより、アプリケーションプログラム１０３からもプリンタドライバ１０２と各種情報およびデータの送受信が可能となる。
【００２１】
また、この初期化時、アプリケーションプログラム１０３およびプリンタドライバプログラム１０２において、ＡＰＩとなるプログラム関数を含むライブラリをロードする。
【００２２】
一方、プリンタ１０４においては、プリンタ１０４起動時に、プリンタ１０４のプログラムメモリ上で動作するＯＳ１０５上で実行される印刷制御プログラム１０６の初期化時に、印刷制御プログラム１０６において上記同様にＡＰＩとなるプログラム関数を含むライブラリをロードする。
【００２３】
なお、上述のＡＰＩ及びこれらのプログラム関数群から構成されるライブラリは、ホストコンピュータ１００上のＯＳ１０１、プリンタドライバプログラム１０２、アプリケーションプログラム１０３、及びプリンタ１０４上のＯＳ１０５、印刷制御プログラム１０６において、認識可能なプログラム群で、前記各要素間で相互にデータおよび情報の受け渡しが可能である。以下、前記ＡＰＩ・ライブラリをプリンタＳＤＫ（Software Development Kit）ＡＰＩと表記する。
【００２４】
アプリケーションプログラム１０３は、テキスト、グラフィックス、イメージ描画等のドキュメント印刷指示を、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム１０１が有するＧＤＩ（Graphical Device Interface）で提供される Ｗｉｎｄｏｗｓ（登録商標） ＳＤＫ ＡＰＩを使用して行う。
【００２５】
このＧＤＩは、グラフィックス処理において、アプリケーションプログラム１０３とデバイスドライバ１０２の橋渡し的な役割を行うプログラムであり、上述の印刷指示をＤＤＩ（Device Driver Interface）に変換し（プリンタドライバプログラム１０２が処理できる形に変換し）、プリンタドライバプログラム１０２に対して、テキスト、グラフィックス、イメージの描画指示を行う。
【００２６】
このとき、前記ＧＤＩは、同時にプリンタドライバプログラム１０２およびプリンタ１０４が有する各種機能及びその力に合わせて、ドキュメントの印刷体裁を決定する各種属性設定指示も行う。
【００２７】
プリンタドライバプログラム１０２は、これらの各指示を最初に受けた時点で、プリンタＳＤＫ ＡＰＩを使用して、印刷ジョブの制御が開始されたことを、ジョブを識別するＩＤ情報（ジョブ識別ＩＤ情報）と共に、プリンタ１０４内の印刷制御プログラム１０６に通知する。
【００２８】
この通知を受けたプリンタ１０４内の印刷制御プログラム１０６は、印刷ジョブデータを受信してドキュメントを印刷する前に、該当する印刷ジョブの各種属性設定情報を事前に受け取るために、同じくプリンタＳＤＫ ＡＰＩを使用し、前記通知された前記同一のジョブ識別ＩＤ情報を指定した属性設定情報要求をプリンタドライバプログラム１０２に対して行う。
【００２９】
プリンタドライバプログラム１０２は、このプリンタ１０４からの属性設定情報要求に基づいて、印刷ジョブ制御開始時に設定される該当ドキュメント印刷ジョブ全般に関連する各種制御情報及び各種属性設定情報（以下、ジョブ制御情報）を、プリンタＳＤＫ ＡＰＩを使用して、前記同一のジョブ識別ＩＤ情報と共に、プリンタ１０４内の印刷制御プログラム１０６に通知する。
【００３０】
また、アプリケーションプログラム１０３およびプリンタドライバプログラム１０２間で、印刷ジョブ制御処理が進み、各ページ、各章、或いは各グループに関連する各種制御情報及び各種属性設定情報（以下、ページ制御情報）が決定した時点においても、上記ジョブ制御情報の場合と同様に、ページ制御情報をプリンタＳＤＫ ＡＰＩを使用して、前記同一のジョブ識別ＩＤ情報と共に、プリンタ１０４内の印刷制御プログラム１０６に通知する。
【００３１】
このとき、ホストコンピュータ１００およびプリンタ１０４間は、ネットワーク接続あるいは、セントロニクス、又はＵＳＢインターフェース等によるローカル接続等により、双方向通信を行ない、プリンタＳＤＫ ＡＰＩでのデータおよび情報の送受信を行う。
【００３２】
ここで、文書全体、文書中の章、グループ単位、或いは各ページ毎の印刷のための各種制御情報及び各種属性設定情報（ジョブ制御情報，ページ制御情報）とは、用紙サイズ、用紙メディア種、印刷部数、部単位印刷の部数、ソート、給紙方法、排紙方法、ステイプル印刷、パンチ印刷、トリミング印刷、用紙折り印刷、Ｎ−ｕｐ印刷（複数ページ割付印刷）、両面印刷などの各種印刷フィニッシング属性設定および製本印刷、用紙サイズ混在、及びこれらの印刷面付け順序などの各種制御に係る情報を含むものである。
【００３３】
プリンタ１０４内の印刷制御プログラム１０６は、該当印刷文書の印刷ジョブを受信して各印刷制御処理を開始する前に、前記ホストコンピュータ１００上のプリンタドライバプログラム１０２から通知される文書全体、文書中の章、グループ単位、或いは各ページ毎の印刷のための各種制御情報及び各種属性設定情報（ジョブ制御情報，ページ制御情報）に基づいて各種最適化のための制御処理（印刷ジョブの各印刷制御に係る前処理ともいう）を行う。ここで行われる各種最適化のための制御処理とは、予めページ展開メモリの確保、画像レイアウト、拡大／縮小印字・描画のための作業領域の確保、排紙形態によるフィニッシング準備などの各種最適化のための制御処理を示す。
【００３４】
なお、印刷制御プログラム１０６は、この各種最適化のための制御処理結果（通知されたジョブ制御情報，ページ制御情報も含む）を、ホストコンピュータ及び印刷ジョブ識別ＩＤで識別される印刷ジョブ毎に、プリンタ１０４内でユニークな識別情報を付加して、プリンタ１０４内のＲＡＭ，ハードディスク等の記憶装置部に保存する。これにより、印刷制御プログラム１０６は、複数のホストコンピュータから上述の前記各種制御及び属性設定情報が通知されても、識別可能となる。
【００３５】
一方、プリンタドライバプログラム１０２は、プリンタＳＤＫ ＡＰＩを使用し、最終的な印刷を行うための印刷ジョブデータをオペレーティングシステム１０１のスプーラを介してプリンタ１０４に送信する。なおこの際、プリンタドライバプログラム１０２は、ジョブの先頭において、上記印刷ジョブデータと共に、該当するドキュメントの印刷ジョブ識別ＩＤをプリンタ１０４に通知する。
【００３６】
また、プリンタ１０４内の印刷制御プログラム１０６は、印刷ジョブの各印刷制御に係る前処理の後、前記印刷ジョブ識別ＩＤによって識別される該当印刷ジョブデータを受信し、上述の前処理によって既に最適化された状態で、各種印刷制御処理を行ない、最終的な描画イメージをＯＳ１０５を介して、エンジン制御プログラム１０７に送り、該当ドキュメントの印刷出力１０８を行う。
【００３７】
本実施形態の印刷システムは、以上示したような構成からなる。
【００３８】
なお、ここでは、ホストコンピュータ１００およびプリンタ１０４上の各種プログラム環境となるＯＳ１０１，ＯＳ１０５として、Ｗｉｎｄｏｗｓ（登録商標），ＶｘＷＯＲＫＳを例にあげて説明したが、それぞれ他のオペレーティングシステムにおいても本発明を適用できる。
【００３９】
＜ホストコンピュータおよびプリンタにおける各処理の流れを表すブロック図の説明（図２）＞
以下、図２を参照して、ホストコンピュータ１００上のアプリケーションプログラム１０３及びプリンタドライバプログラム１０２、プリンタ１０４内の印刷制御プログラム１０６間におけるプリンタＳＤＫ ＡＰＩを利用した各種情報のやり取り及びデータ送信、ドキュメント印刷までの流れについて、詳細に説明する。
【００４０】
図２は、図１に示したホストコンピュータ１００およびプリンタ１０４において、プリンタＳＤＫ ＡＰＩを使用して、初期化から印刷までの各構成要素の内部および構成要素間の処理の流れを表すブロック図である。なお、図１と同一のものには同一の符号を付してある。また、図２中のＳ２０１〜Ｓ２０７はホストコンピュータ１００側のステップに対応する。さらに、Ｓ２１１〜Ｓ２１６はプリンタ１０４側のステップに対応する。
【００４１】
図２のステップＳ２０１に示すように、まず、ホストコンピュータ１００上のアプリケーションプログラム１０３において、ドキュメント生成、編集、印刷等の各種動作処理に要するメモリ領域の確保、各種属性パラメータの初期化、デバイスコンテキストの作成、フォント／ペン／ブラシ等の描画オブジェクト作成などの初期化処理を行う。
【００４２】
そして、ホストコンピュータ１００上のＯＳ１０１のＧＤＩにおいても、前記アプリケーションプログラム１０３のドキュメント生成、編集、印刷のための各種初期化処理を受けて、ＧＤＩにおける各種動作処理に要するメモリ領域の確保、各種属性パラメータの初期化処理を行う。
【００４３】
同様にホストコンピュータ１００上のプリンタドライバプログラム１０２においても、前記アプリケーションプログラム１０３およびＷｉｎｄｏｗｓ（登録商標） ＧＤＩのドキュメント印刷のための各種初期化処理を受けて、プリンタドライバプログラム１０２における各種動作処理に要するメモリ領域の確保、各種属性パラメータの初期化処理を行う。このとき、前記プリンタドライバプログラム１０２において、プリンタＳＤＫライブラリをロードする。
【００４４】
一方、ステップＳ２１１に示すように、プリンタ１０４においても、同様に、ＯＳ１０５、印刷制御プログラム１０６及びエンジン制御プログラム１０７の各種動作処理に要するメモリ領域の確保、各種属性パラメータの初期化処理を行う。このとき、前記印刷制御プログラム１０６においても、プリンタＳＤＫライブラリをロードする。
【００４５】
次に、ホストコンピュータ１００上のアプリケーションプログラム１０３から、Ｗｉｎｄｏｗｓ（登録商標） ＳＤＫ ＡＰＩを使用して、Ｗｉｎｄｏｗｓ（登録商標） ＧＤＩに対して、デバイスコンテキストハンドルであるプリンタコンテキストハンドルを生成し、該ハンドルにテキスト、図形、イメージの各オブジェクト描画を開始する。これが印刷指示となる。
【００４６】
そして、前記Ｗｉｎｄｏｗｓ（登録商標） ＧＤＩは、前記各オブジェクト描画指示をＤＤＩに変換し、プリンタドライバプログラム１０２に渡す。すると、プリンタドライバプログラム１０２において、印刷ジョブの制御が開始される。このとき、ステップＳ２０２に示すように、プリンタドライバプログラム１０２は、プリンタＳＤＫ ＡＰＩを使用して、印刷ジョブ制御が開始されたことをプリンタ１０４内の印刷制御プログラム１０６に通知する。
【００４７】
また、プリンタ１０４内の印刷制御プログラム１０６は、ステップＳ２１２に示すように、前記印刷ジョブ制御開始通知を受けて、印刷ジョブデータを受信してドキュメント印刷を行う前に、事前に各種ジョブ制御を開始する。
【００４８】
続いて、前記印刷制御プログラム１０６は、ステップＳ２１３に示すように、プリンタＳＤＫ ＡＰＩを使用して、ホストコンピュータ１００上のプリンタドライバプログラム１０２に対して、該当する印刷ジョブのジョブ制御情報の要求を行う。
【００４９】
一方、ホストコンピュータ１００上のプリンタドライバ１０２は、ステップＳ２０２のジョブ制御開始通知後、ステップＳ２０３に示すように、アプリケーションプログラム１０３からの各オブジェクト描画指示に基づいて、ジョブおよびページ制御を開始する。
【００５０】
そして、プリンタドライバ１０２は、前記プリンタ１０４からのジョブ制御情報要求に応じて、ステップＳ２０４に示すように、ジョブ制御情報，ページ制御情報を前記同様にプリンタＳＤＫ ＡＰＩを使用して、プリンタ１０４側に通知する。なお、このジョブ制御情報，ページ制御情報は、ジョブ全体およびグループ、章、ページ毎に関連する用紙サイズ、用紙メディア種、印刷部数、部単位印刷の部数、ソート、給紙方法、排紙方法、ステイプル印刷、パンチ印刷、トリミング印刷、用紙折り印刷、Ｎ−ｕｐ印刷（複数ページ割付印刷）、両面印刷などの各種印刷フィニッシング属性設定および製本印刷、用紙サイズ混在、およびこれらの印刷面付け順序などの各種制御情報および各種属性設定情報を示す。
【００５１】
そして、プリンタ１０４内の印刷制御プログラム１０６は、ステップＳ２１４に示すように、ホストコンピュータ１００からのジョブ制御情報，ページ制御情報（前記各種制御情報および属性設定情報）の通知に基づき、予めページ展開メモリの確保、画像レイアウト、拡大／縮小印字・描画のための作業領域の確保、排紙形態によるフィニッシング準備などの各種最適化のための制御処理（前処理）を行ない、該最適化処理結果を保存する。
【００５２】
なお、ホストコンピュータ１００では、上述したように、ホストコンピュータ１００上のアプリケーションプログラム１０３によるＷｉｎｄｏｗｓ（登録商標） ＳＤＫ ＡＰＩを介してのＷｉｎｄｏｗｓ（登録商標） ＧＤＩに対するドキュメント印刷に係る各種オブジェクト描画指示及びドキュメントの出力体裁に基づく各種印刷属性設定が、前記Ｗｉｎｄｏｗｓ（登録商標） ＧＤＩにおいて、ＤＤＩに変換され、プリンタドライバプログラム１０２に対してコールされている。これにより、プリンタドライバプログラム１０２は、ステップＳ２０５に示すように、文字テキスト、図形、イメージの各描画処理を行う。
【００５３】
次に、プリンタドライバプログラム１０２は、ステップＳ２０６に示すように、前記各オブジェクト描画処理の中で、プリンタ１０４に係る印刷制御命令（ＰＤＬデータ）を生成する。さらに、プリンタドライバプログラム１０２は、ステップＳ２０７に示すように、上記生成した印刷制御命令（ＰＤＬデータ）をＯＳ１０１のスプーラを介してプリンタ１０４内の印刷制御プログラム１０６に送信する。
【００５４】
一方、プリンタ１０４内の印刷制御プログラム１０６は、ステップＳ２１５に示すように、前記ホストコンピュータ１００からの印刷ジョブデータである印刷制御命令（ＰＤＬデータ）を受信すると共に、前記事前に取得したジョブ、グループ、章、あるいはページ毎の各種制御情報および属性設定情報（ジョブ制御情報，ページ制御情報）による最適化処理結果を読み出して、印刷制御処理を行う。
【００５５】
そして、プリンタ１０４内の印刷制御プログラム１０６は、ステップＳ２１６に示すように、前記処理結果に基づき、最終的な画像をプリンタ１０４内のエンジン制御プログラム１０７に送り、画像出力を行って、ドキュメント印刷１０８を行う。
【００５６】
＜ホストコンピュータ及びプリンタ接続構成図の説明（図３）＞
図３は、図１に示したホストコンピュータ１００及びプリンタ１０４のハードウェア接続構成を示すブロック図である。
【００５７】
図３において、３０１は入力装置であり、ホストコンピュータ１００に対して入力を行うキーボード，マウス等に対応する。３０２は表示装置（ディスプレイ（Ｄｉｓｐｌａｙ））３０２であり、表示出力を行う。３０３はディスク（Ｄｉｓｋ）であり、ファイルの入出力を行うハードディスク等の外部記憶装置に対応する。
【００５８】
以下、ホストコンピュータ１００の構成を詳細に説明する。
【００５９】
ホストコンピュータ１００において、３０４はＣＰＵであり、ホストシステムおよび接続される各入出力装置の制御や、入力された指示に従って出力制御などの一連の処理、各種プログラムを実行する。３０５はＲＯＭであり、ＣＰＵ３０４を動作させるためのブートプログラム、各種データ等を格納するメモリである。ディスク３０３には、Ｗｉｎｄｏｗｓ（登録商標）ＳＤＫライブラリを含むＯＳ１０１，プリンタドライバプログラム１０２、アプリケーションプログラム１０３、各種データが格納されている。
【００６０】
３０６はＲＡＭであり、プリンタに係る各種印刷属性設定、ドキュメント印刷を実行／動作させる各種処理のための作業領域として用いられるメモリである。また、このＲＡＭ３０６上には、ＣＰＵ３０４により、ＲＯＭ３０５やディスク３０３から各種プログラムがロードされて実行される。
【００６１】
３０７はキーボード・コントローラであり、入力装置３０１のインターフェースを備える。３０８はディスプレイ・コントローラであり、ディスプレイ３０２への表示出力を行うためのインターフェースを備える。３０９はディスク・コントローラであり、ディスク３０３への入出力インターフェースを備える。
【００６２】
３１０はイーサネット（登録商標）・インターフェースであり、ホストコンピュータ１００とプリンタ１０４を接続して、通信を行うための通信プロトコルを備えたイーサネット（登録商標）等のネットワーク回線を介して、入出力を行うネットワーク・インターフェースである。なお、ここでは、イーサネット（登録商標）・インターフェースとしているが、その他のネットワークインタフェースであってもよい。３１１はＣＰＵバスであり、各構成要素３０４〜３１１を接続するバスである。
【００６３】
以下、プリンタ１０４の構成を詳細に説明する。
【００６４】
プリンタ１０４において、３１４はＣＰＵであり、プリンタ１０４に接続される各種入出力の制御や、入力された指示に従って印刷制御等の一連の処理、通信制御制御処理等のプログラムを実行する。
【００６５】
３１５はＲＯＭであり、各入出力の制御、通信制御処理、入力された指示に従って印字制御など一連の処理、制御コマンド解析処理などプリンタを動作させるプログラム、各種データ等が格納されているメモリである。ＲＯＭ３１５には、ＯＳ１０５，印刷制御プログラム１０６，プリンタＳＤＫライブラリ，エンジン制御プログラム１０７等が格納されている。
【００６６】
３１６はＲＡＭであり、ＣＰＵ３１４が各種プログラムで実行・処理を行うための作業領域として用いられるメモリである。このＲＡＭ３１６には、ＣＰＵ３１４により、ＲＯＭ３１５から各種プログラムがロードされて実行される。
【００６７】
３１７はイーサネット（登録商標）・インターフェースであり、ホストコンピュータ１００とプリンタ１０４を接続して、データのやり取りを行うための通信プロトコルを備えたイーサネット（登録商標）などのネットワーク回線を介して、入出力を行うネットワーク・インターフェースである。なお、ここでは、イーサネット（登録商標）・インターフェースとしているが、その他のネットワークインタフェースであってもよい。
【００６８】
３１８はディスク・コントローラであり、ハードディスク等のディスク３１３への入出力インターフェースを備える。３１９はエンジン制御処理部であり、機構的にパターン出力を行うビデオインターフェースで印刷装置駆動系（エンジン部）３２１とのデータおよび信号のやり取りを行う入出力インターフェースを備える。３２０はＣＰＵバスであり、各構成要素３１４〜３１９を接続するバスである。
【００６９】
なお、エンジン部３２１は、レーザビーム方式であっても、レーザビーム方式以外の電子写真方式（例えばＬＥＤ方式）でも、液晶シャッタ方式、インクジェット方式、熱転写方式、昇華方式でもその他のプリント方式であっても本発明は適用可能である。
【００７０】
以下、ホストコンピュータ１００内のＣＰＵ３０４によりＲＡＭ３０６上にロードされて実行されるＷｉｎｄｏｗｓ（登録商標）ＳＤＫライブラリを含むＯＳ１０１、アプリケーションプログラム１０３、プリンタドライバプログラム１０２、及びプリンタＳＤＫライブラリの各制御処理および動作を詳細に説明する。
【００７１】
まず、アプリケーションプログラム１０３における動作について説明する。
【００７２】
ホストコンピュータ１００内のＲＡＭ３０６上にあるアプリケーションプログラム１０３は、ドキュメント作成、体裁加工および印刷出力のための各種初期化処理を行う過程で、ＯＳ１０１を介してプリンタドライバプログラム１０２のロードおよび起動を行う。
【００７３】
ここで前記アプリケーションプログラム１０３は、Ｗｉｎｄｏｗｓ（登録商標） ＳＤＫ ＡＰＩを使用して、Ｗｉｎｄｏｗｓ（登録商標） ＧＤＩを介して、プリンタドライバ１０２に対して、テキスト／図形／イメージの各オブジェクト描画指示およびドキュメント出力形態を決定する各種属性設定を指定する。
【００７４】
次に、プリンタドライバプログラム１０２における動作について説明する。
【００７５】
ホストコンピュータ１００内のＲＡＭ３０６上にあるプリンタドライバプログラム１０２は、前記アプリケーションプログラム１０３の起動初期化時に、ＯＳ１０１上にロードされ起動される。
【００７６】
前記アプリケーションプログラム１０３におけるドキュメント作成、印刷のための各種初期化処理に基づき、Ｗｉｎｄｏｗｓ（登録商標） ＳＤＫ ＡＰＩがコールされる。これによって、上記各種初期化処理の指示は、ＯＳ１０１のＧＤＩを介してＤＤＩに変換される。そして、各種ＤＤＩ関数がコールされることによって、プリンタドライバプログラム１０２での初期化処理および各種制御処理が開始される。この初期化処理において、ディスク３０３上のプリンタＳＤＫライブラリもプリンタドライバプログラム１０２内にロードされる。
【００７７】
以降、ホストコンピュータ１００およびプリンタ１０４は、双方向通信プロトコルにて、ＡＰＩを使用してのデータおよび情報の送受信を相互に行う。
【００７８】
プリンタドライバプログラム１０２側では、まず前記初期化処理において、プリンタＳＤＫ ＡＰＩを使用して、プリンタ１０４側に印刷ジョブ制御が開始されたことを通知する。
【００７９】
すると、プリンタ１０４側より、ジョブ制御情報要求（プリンタ１０４が印刷ジョブデータを受ける前に事前に行う印刷ジョブ制御情報および各種属性設定情報の要求）がプリンタＳＤＫ ＡＰＩを使用して行なわれる。
【００８０】
プリンタドライバプログラム１０２は、この要求に基づいて、ジョブ全体に関連する制御処理時、及び各グループ単位，章単位，ページ単位に関連する制御処理時に、夫々これら制御処理に係る制御情報および各種属性設定情報をプリンタＳＤＫ ＡＰＩを使用して、プリンタ１０４側に通知する。
【００８１】
続いて、プリンタドライバプログラム１０２は、前記各制御処理の結果に基づいて、ドキュメント出力形態に係る各種属性設定および各オブジェクト描画指示により、印刷制御命令（ＰＤＬデータ）を生成し、これらの印刷ジョブデータをＯＳ１０１のスプーラを介して、プリンタ１０４に送信する。
【００８２】
次に、プリンタ１０４における動作について説明する。
【００８３】
プリンタ１０４内のプログラムメモリＲＯＭ３１５上にある印刷制御プログラム１０６における印刷出力制御処理によるドキュメントの出力動作を詳細に説明する。
【００８４】
まず、プリンタ１０４起動時の初期化処理時に、印刷制御プログラム１０６は、同じくプログラムメモリＲＯＭ３１５にあるプリンタＳＤＫライブラリをロードする。ここで、このプリンタＳＤＫライブラリは、プログラムメモリＲＡＭ３１６或いはディスク３１３に置いてもよい。
【００８５】
また、印刷制御プログラム１０６は、プリンタドライバプログラム１０２から通知されたホストコンピュータ１００側での印刷ジョブ制御開始通知に基づいて、ホストコンピュータ１００側から、印刷ジョブデータを受信する前に、事前にプリンタＳＤＫ ＡＰＩを使用して、印刷ジョブ制御情報および印刷に係る各種属性設定情報を要求する。なお、この要求に基づいて、ホストコンピュータ１００側から同じくプリンタＳＤＫ ＡＰＩを使用して、通知される印刷ジョブ制御情報および印刷に係る各種属性設定情報は、前記各ＡＰＩに情報として付加されるジョブ識別ＩＤによって識別される。
【００８６】
この印刷ジョブの制御情報および各種属性設定情報に基づき、印刷制御プログラム１０６は、印刷前の最適化処理を行ない、該処理結果を前記識別されるジョブ毎に、プログラムメモリＲＡＭ３１６あるいはハードディスク３１３の記憶装置部に保存する。
【００８７】
プリンタ１０４の印刷制御プログラム１０６は、ホストコンピュータ１００内のプリンタドライバプログラム１０２から送信されるプリンタ１０４を初期化する制御命令を受信し、ジョブの初期化処理を行う。
【００８８】
続いて、プリンタ１０４の印刷制御プログラム１０６は、印刷制御命令入力処理、制御設定パラメータ解析処理、ビットマップ展開処理の一連の処理を施す。なお、上記印刷制御命令入力処理とは、ホストコンピュータ１００からプリンタ１０４に印刷を行うために送信されてくるプリンタ印刷制御命令及び各種設定パラメータの入力を行う処理を示す。また、上記制御設定パラメータ解析処理とは、上記印刷制御命令入力処理により入力されたプリンタ印刷制御命令及び各種設定パラメータなどを解析する処理を示す。さらに、ビットマップ展開処理とは、上記制御設定パラメータ解析処理により解析された印刷制御命令，制御設定パラメータに基づいてビットマップを生成してＲＡＭ３１６内のビットマップメモリに展開する処理を示す。
【００８９】
なお、上記一連の処理において、印刷制御プログラム１０６は、前記事前に該当印刷ジョブの各種ジョブ制御情報および属性設定情報により各種最適化された処理（予めページ展開メモリの確保、画像レイアウト、拡大／縮小印字・描画のための作業領域の確保、排紙形態によるフィニッシング準備等の処理）の結果をプログラムメモリＲＡＭ３１６あるいはハードディスク３１３の記憶装置部から読み込んで、該読み込んだ最適化された処理の結果を用いて前記一連の処理を行う。
【００９０】
次に、印刷制御プログラム１０６は、エンジン制御プログラム１０７と入出力を行うビデオインターフェース３１９を通して、印字出力装置駆動系（エンジン部）３２１に前記生成されたビットマップデータを送信して、ドキュメントを出力する。
【００９１】
ここで、ホストコンピュータ１００のイーサネット（登録商標）・インターフェース３１０およびプリンタ１０４のイーサネット（登録商標）・インターフェース３１７で構築されるＴＣＰ／ＩＰなどの通信プロトコルを備えたネットワークに替えて、ＵＳＢ，セントロニクスインタフェース，シリアルインタフェース，ＳＣＳＩ等の通信プロトコルを備えた各種インターフェースにおいても適用可能である。
【００９２】
＜プリンタおよびプリンタ内の各制御部を表わす構成の説明（図４）＞
図４は、図１に示したプリンタ１０４内の各制御構成を表わすブロック図である。
【００９３】
プリンタ１０４において、４０１はＰＤＬコントローラ部である。このＰＤＬコントローラ部４０１において、４０２はインターフェース（Ｉ／Ｆ）部であり、ホストコンピュータ１００との接続手段である。４１０は受信バッファであり、受信データなどを一時的に保持管理する。４１１は送信バッファであり、送信データなどを一時的に保持管理する。
【００９４】
４１２はデータ解析部であり、受信データのデータ種別を一時的に解析する。４１３はＰＤＬ解析部であり、受信データを解析した結果、ＰＤＬデータであった場合に、ＰＤＬの解析を行う。４１４は描画処理実行部である。４１５は印刷制御処理実行部である。４１６はページメモリである。
【００９５】
また、プリンタ１０４において、４２０はオペレーションパネルであり、プリンタ１０４の各種状態表示および各種設定を行うためのものである。４１７は出力制御部であり、ページメモリ４１６の内容をビデオ信号に処理変換するとともに、給紙／排紙に係る各種給紙段制御およびフィニッシング制御処理も含まれる。４１８はプリンタエンジン部であり、出力制御部４１７から受け取ったビデオ信号を用紙に画像形成および排出する印刷機構部である。
【００９６】
インターフェース（Ｉ／Ｆ）部４０２は、ホストコンピュータとの印刷ジョブデータの送受信の他に、本発明のプリンタＳＤＫ ＡＰＩによる各種データおよび情報の送受信を行う双方向通信手段である。なお、通信プロトコルとして、ネットワーク接続を構築するＴＣＰ／ＩＰ、ＳＭＢプロトコル、セントロニクス、ＵＳＢ、Ｉｒ、ｉＬＩＮＫなどのローカル接続を構築するＩＥＥＥ−１２４８／１３９４に準拠した通信を可能とする。
【００９７】
インターフェース（Ｉ／Ｆ）部４０２を通して受信した各種データおよび情報は、これらのデータおよび情報を一時的に保持する記憶手段である受信バッファ４１０に逐次蓄積され、必要に応じて所定のバイト数がデータ解析部４１２によって、読み出され処理される。
【００９８】
データ解析部４１２では、受信データが印刷制御命令となるＰＤＬデータを含む、各種属性設定情報および文字コード、イメージなどの描画データと、プリンタＳＤＫ ＡＰＩとを判別・分離し、データの処理先を振り分けるデータ振り分け手段として機能する。
【００９９】
データ解析部４１２が、受信したデータをＰＤＬデータを含む各種属性設定情報と判別した場合には、該データはＰＤＬ解析部４１３を経て印刷制御処理実行部４１５に振り分けられて処理される。また、データ解析部４１２が、受信したデータをＰＤＬデータを含む描画データと判別した場合には、該データはＰＤＬ解析部４１３を経て描画処理実行部４１４に振り分けられて処理される。また、データ解析部４１２が、受信したデータをプリンタＳＤＫ ＡＰＩによるデータと判別した場合には、該データは印刷制御処理実行部４１５に振り分けられて処理される。なお、データ解析部４１２による、これらの振り分け処理は、ジョブ単位、グループ単位、章単位あるいはページ単位として処理することが可能である。
【０１００】
ＰＤＬ解析部４１３は、データ解析部４１２から転送されるＰＣＬ、ＰｏｓｔＳｃｒｉｐｔ、ＬＩＰＳ等のＰＤＬコマンドデータ、及びＰＪＬ等の印刷ジョブ制御言語に準じたコマンドデータを解析する。そして、ＰＤＬ解析部４１３は、その解析結果に基づいて、文字／図形／イメージ等の描画に係るコマンドデータについては、中間データとして、例えばディスプレイリストとして描画処理実行部４１４に送って処理させる。描画処理実行部４１４では、文字／図形／イメージの各オブジェクトをビットイメージに変換し、ページメモリ４１６に逐次展開処理を行ない、出力制御部４１７に画像転送を行う。
【０１０１】
また、ＰＤＬ解析部４１３は、描画以外のドキュメント出力形態を決定する用紙サイズ、用紙メディア種、印刷部数、部単位印刷の部数、ソート、給紙方法、排紙方法、ステイプル印刷、パンチ印刷、トリミング印刷、用紙折り印刷、Ｎ−ｕｐ印刷（複数ページ割付印刷）、両面印刷などの各種印刷フィニッシング属性設定および製本印刷、用紙サイズ混在、およびこれらの印刷面付け順序などのコマンドデータについては、印刷制御処理実行部４１５に送って処理させる。
【０１０２】
一方、データ解析部４１２からプリンタＳＤＫ ＡＰＩによるデータが送られた印刷制御処理実行部４１５では、コールされるプリンタＳＤＫ ＡＰＩの種類に応じて処理を行う。
【０１０３】
印刷制御処理実行部４１５は、ホストコンピュータからのプリンタＳＤＫ ＡＰＩによる印刷ジョブ制御開始通知を受け、プリンタＳＤＫ ＡＰＩによる印刷ジョブ制御情報要求する関数をコールし、送信バッファ４１１及びインターフェース（Ｉ／Ｆ）部４０２を介して、ホストコンピュータ側に送信する。
【０１０４】
さらに、印刷制御処理実行部４１５は、前記要求に基づき、事前にホストコンピュータ側からプリンタＳＤＫ ＡＰＩによる印刷ジョブ制御情報および各種属性設定情報の通知を受ける。そして、印刷制御処理実行部４１５は、後に受信する該当ドキュメントの印刷ジョブデータに備え、事前に前記出力形態を決定する各属性に係る最適化処理を行ない、該処理の結果を各ジョブ毎に保存する。続いて、印刷制御処理実行部４１５は、印刷ジョブデータを受信するとともに、該当ジョブの最適化処理結果を読み出し、印刷制御処理を実行して、出力制御部４１７に送る。なお、出力制御部４１７には、上述したように描画処理実行部４１４により変換されたビットマップイメージも転送される。
【０１０５】
以上の各処理を実行し、出力制御部４１７よりプリンタエンジン部４１８に画像転送を行うことによって、目的のドキュメント印刷出力を行う。
【０１０６】
なお、本実施形態では、図４に示したＰＤＬコントローラ４０１内のデータ解析部４１２、ＰＤＬ解析部４１３、描画処理実行部４１４および印刷制御処理実行部４１５における各処理実行プログラムを図１に示した印刷制御プログラム１０６、プリンタ１０４内の出力制御部４１７の処理を実行するプログラムを図１に示したエンジン制御プログラム１０７として定義している。
【０１０７】
＜アプリケーションプログラムインターフェース（ＡＰＩ）の関数例の説明（図５〜図６）＞
図５〜図６は、本発明におけるアプリケーションプログラムインタフェース（ＡＰＩ）関数の一例を示した図である。
【０１０８】
図５に示す５０１は、PD_FuncJobStart( )関数である。このPD_FuncJobStart( )関数は、図１のプリンタドライバプログラム１０２において、アプリケーションプログラム１０３のドキュメント印刷指示に基づいて、印刷ジョブ制御処理が開始されるタイミングで、プリンタ１０４に印刷ジョブ制御処理が開始されたことを通知するプリンタＳＤＫ ＡＰＩである。
【０１０９】
例えば、本関数例では、関数パラメータとして、本関数の実行作業領域としてのメモリ領域のアドレスであるhHandle、プリンタＳＤＫ ＡＰＩにおける機能識別を表わすItemID、ジョブを識別するためのジョブ識別ＩＤを指定するlpJobID、バッファアドレス指すpItemを有する。
【０１１０】
プリンタドライバプログラム１０２では、前記ジョブ識別ＩＤを指定するlpJobIDパラメータに、印刷ジョブ制御処理開始通知、印刷ジョブ制御情報要求、印刷ジョブ制御情報通知および印刷ジョブデータ送受信の一連の過程において、複数ジョブ印刷時の別印刷ジョブの情報およびデータの混在を防ぐために、１つのジョブに対して１つのＩＤを指定して、本関数を動作させる。
【０１１１】
そして、本関数をコールされたプリンタ１０４内の印刷制御プログラム１０６は、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返すことで完了する。
【０１１２】
図５に示す５０２はPP_FuncGetJobInfo( )関数である。このPD_FuncJobStart( )関数は、図１のプリンタ１０４内の印刷制御プログラム１０６において、プリンタドライバプログラム５０２からの印刷ジョブ制御情報通知に基づいて、印刷ジョブ制御情報を要求するプリンタＳＤＫ ＡＰＩである。
【０１１３】
プリンタドライバプログラム１０２から前記PD_FuncJobStart( )関数５０１のコールに基づき、プリンタ１０４内の印刷制御プログラム１０６は、該当する印刷ジョブの事前最適化制御処理を行うための記憶装置部の初期化、印刷ジョブ制御情報および各種属性設定情報の受付などの準備を行ない、PP_FuncGetJobInfo( )関数５０２をコールする。
【０１１４】
例えば、本関数例では、関数パラメータとして、本関数の実行作業領域としてのメモリ領域のアドレスであるhHandle、プリンタＳＤＫ ＡＰＩにおける機能識別を表わすItemID、ジョブを識別するためのジョブ識別ＩＤを指定するlpJobID、バッファアドレス指すpItemを有する。
【０１１５】
本関数をコールされたプリンタドライバプログラム１０２は、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返すことで完了する。
【０１１６】
図６に示す６０１はPD_FuncSendJobInfo( )関数である。このPD_FuncJobStart( )関数は、図１のプリンタドライバプログラム１０２において、ドキュメント印刷に係るジョブ全体に関連する出力形態を決定する印刷制御情報および各種属性設定情報を、プリンタ１０４内の印刷制御プログラム１０６に通知するプリンタＳＤＫ ＡＰＩである。
【０１１７】
ここで、ジョブ全体に関連する出力形態を決定する印刷制御情報および各種属性設定情報とは、ジョブ全体で設定される用紙サイズ、用紙メディア種、印刷部数、部単位印刷の部数、ソート、給紙方法、排紙方法、ステイプル印刷、パンチ印刷、トリミング印刷、用紙折り印刷、Ｎ−ｕｐ印刷（複数ページ割付印刷）、両面印刷などの各種印刷フィニッシング属性設定および製本印刷、用紙サイズ混在、およびこれらの印刷面付け順序などの各種制御および属性設定情報である。
【０１１８】
例えば、本関数例では、関数パラメータとして、本関数の実行作業領域としてのメモリ領域のアドレスであるhHandle、プリンタＳＤＫ ＡＰＩにおける機能識別を表わすItemID、ジョブを識別するためのジョブ識別ＩＤを指定するlpJobID、ジョブ全体に関連する各種制御情報および属性設定情報を格納するバッファアドレス指すpJobInfoを有する。
【０１１９】
プリンタドライバプログラム１０２では、本関数のパラメータpJobInfoに、プリンタドライバプログラム１０２で一時確保したメモリバッファのポインタを指すパラメータとしてJOBINFOで型定義されるプログラム構造体にジョブ全体に関連する各種制御情報および属性設定情報を代入して、本関数をコールして、前記情報をプリンタ１０４に送信することで前記印刷制御プログラム１０６に通知する。
【０１２０】
そして、本関数をコールされたプリンタ１０４内の印刷制御プログラム１０６は、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返すことで完了する。
【０１２１】
図６に示す６０２はPD_FuncSendPageInfo( )関数である。このPD_FuncSendPageInfo( )関数は、図１のプリンタドライバプログラム１０２において、ドキュメント印刷に係るジョブ中である属性に基づいて分割されたグループ、章あるいはページ単位に関連する出力形態を決定する印刷制御情報および各種属性設定情報を、プリンタ１０４内の印刷制御プログラム１０６に通知するプリンタＳＤＫ ＡＰＩである。
【０１２２】
ここで、グループ／章／ページ単位に関連する出力形態を決定する印刷制御情報および各種属性設定情報とは、グループ／章／ページ単位で設定される用紙サイズ、用紙メディア種、用紙折り印刷、Ｎ−ｕｐ印刷（複数ページ割付印刷）、両面印刷などの各種印刷フィニッシング属性設定および製本印刷、用紙サイズ混在、およびこれらの印刷面付け順序などの各種制御および属性設定情報である。
【０１２３】
例えば、本関数例では、関数パラメータとして、本関数の実行作業領域としてのメモリ領域のアドレスであるhHandle、プリンタＳＤＫ ＡＰＩにおける機能識別を表わすItemID、ジョブを識別するためのジョブ識別ＩＤを指定するlpJobID、ジョブ全体に関連する各種制御情報および属性設定情報を格納するバッファアドレス指すpPageInfoを有する。
【０１２４】
プリンタドライバプログラム１０２では、本関数のパラメータpPageInfoに、プリンタドライバプログラム１０２で一時確保したメモリバッファのポインタを指すパラメータとしてPAGEINFOで型定義されるプログラム構造体にグループ／章／ページ単位に関連する各種制御情報および属性設定情報を代入して、本関数をコールして、前記情報をプリンタ１０４に送信することで前記印刷制御プログラム１０６に通知する。
【０１２５】
そして、本関数をコールされたプリンタ１０４内の印刷制御プログラム１０６は、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返すことで完了する。
【０１２６】
図５に示す５０３はPD_FuncSendJob( )関数である。このPD_FuncSendJob( )関数は、図１のプリンタドライバプログラム１０２において、印刷ジョブデータとして、印刷制御命令であるＰＤＬデータおよび描画データをプリンタ１０４に送信する直前に、該当ドキュメントの印刷ジョブであることを識別するために、前記印刷ジョブ制御情報通知までの一連の処理のジョブ識別と同一ジョブデータであることを、プリンタ１０４内の印刷制御プログラム１０６に通知するプリンタＳＤＫ ＡＰＩである。
【０１２７】
プリンタドライバプログラム１０２では、本関数のコールとともに、印刷ジョブデータをプリンタ１０４に送信することによって、プリンタ１０４側では、複数のクライアントあるいはプリントサーバから、本発明の印刷システムにおいて、複数の印刷ジョブを受信しても、内部的にジョブの識別が可能となる。
【０１２８】
そして、本関数をコールされたプリンタ１０４内の印刷制御プログラム１０６は、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返すことで完了する。
【０１２９】
なお、プリンタＳＤＫ ＡＰＩライブラリは、通常、本発明の機能関数のみに限らず、これらの他に種々な機能を有する関数も用意され、関数群を構成するものである。
【０１３０】
＜プリンタドライバプログラムおよびプリンタ間のＡＰＩコーリングシーケンス例の説明（図７）＞
図７は、図１に示したホストコンピュータ１００上のＯＳ１０１、プリンタドライバプログラム１０２、及びプリンタ１０４上のリアルタイムオペレーティングシステム１０５、印刷制御プログラム１０６における、各印刷制御処理時のＤＤＩに対応するプリンタＳＤＫ ＡＰＩのコーリングシーケンス図である。
【０１３１】
図７において、７００は、ＯＳ１０１が備えるスプーラ，通信モジュール及びＶｘＷＯＲＫＳオペレーティングシステムが制御する通信モジュール（「ＯＳ／Ｓｐｏｏｌｅｒ／通信モジュール」７００）であり、ホストコンピュータ１００及びプリンタ１０４間での、情報およびデータの送受信は、この「ＯＳ／Ｓｐｏｏｌｅｒ／通信モジュール」７００を介して行なわれる。
【０１３２】
まず、プリンタドライバ１０２側では、アプリケーションプログラム１０３からプリンタ１０４に対するデバイスコンテキストを作成することにより、ＧＤＩからプリンタドライバ１０２を初期化するＤＤＩ関数であるDrvEnablePDEV( )関数７０３がコールされる。
【０１３３】
プリンタドライバ１０２は、本関数の処理で、メモリ確保・初期化、デフォルトデータの読み込み、各種属性パラメータに初期化を行う。このとき同時にプリンタドライバ１０２は、プリンタＳＤＫライブラリをロードする。
【０１３４】
次に、プリンタドライバ１０２側では、アプリケーションプログラムからのドキュメント印刷指示に基づき、ＧＤＩよりプリンタドライバ１０２に印刷ジョブ開始処理を指示するＤＤＩ関数であるDrvStartDoc( )関数７０４がコールされる。プリンタドライバ１０２は、本関数の処理で印刷ジョブ制御を開始する。
【０１３５】
同時にプリンタドライバ１０２は、印刷ジョブ制御処理が開始されたことをプリンタＳＤＫ ＡＰＩであるPD_FuncJobStart( )関数５０１をコールして、プリンタ１０４に通知する（印刷ジョブ制御処理開始通知）。プリンタ１０４は、本関数コールに対して、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）をプリンタドライバ１０２に返す。
【０１３６】
また、プリンタ１０４は、上記印刷ジョブ制御処理開始通知に基づき、印刷ジョブ制御情報をプリンタＳＤＫ ＡＰＩであるPP_FuncGetJobInfo( )関数５０２をコールして、プリンタドライバ１０２に要求を行う（印刷ジョブ制御情報要求）。プリンタドライバ１０２は、本関数コールに対して、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）をプリンタ１０４に返す。
【０１３７】
そして、プリンタドライバ１０２は、前記印刷ジョブ制御情報要求に基づき、印刷ジョブ制御処理開始時に決定するジョブ全体に関連するドキュメント出力形態を実現するため制御情報および各種属性設定情報をプリンタＳＤＫ ＡＰＩであるPD_FuncSendJobInfo( )関数６０１をコールして、プリンタ１０４に通知する。プリンタ１０４は、本関数コールに対して、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）をプリンタドライバ１０２に返す。
【０１３８】
上記ジョブ全体に関連する各種印刷制御情報および属性設定情報を受理したプリンタ１０４は、（プリンタドライバ１０２が、各種制御処理を行って印刷ジョブデータとなるＰＤＬデータを生成して、プリンタ１０４に送信してくるまでに、）ジョブ全体に関連する各種最適化処理を行って、以降の処理に備え、該当ジョブと識別して保存しておく。
【０１３９】
一方、プリンタドライバ１０２は、生成したジョブ全体に関連する印刷ジョブデータとなるＰＤＬデータの送信を開始する前に、前記プリンタ１０４に通知した各種印刷制御情報および属性設定情報と、該当する印刷ジョブデータとの対応をとるためのジョブ識別ＩＤを、プリンタＳＤＫ ＡＰＩであるPD_FuncJobSend( )関数５０３をコールして、プリンタ１０４に通知する。
【０１４０】
続いて、プリンタドライバ１０２は、プリンタドライバ１０２で生成したジョブ全体に関連する印刷ジョブデータとなるＰＤＬデータ７０９をプリンタ１０４へ送信する。
【０１４１】
プリンタ１０４は、前記ジョブ全体に関連する最適化処理を読み出して、プリンタドライバ１０２から受信した印刷ジョブデータの各制御に適応させて処理を行う。
【０１４２】
次に、プリンタドライバ１０２側では、アプリケーションプログラムからページ単位の出力指示に基づき、ＧＤＩよりプリンタドライバ１０２にページ出力開始処理を指示するＤＤＩ関数であるDrvStartPage( )関数７１０がコールされる。
【０１４３】
また、プリンタドライバ１０２は、前記印刷ジョブ制御情報要求に基づき、ページ出力処理開始時に決定するページ単位あるいは該当ページが含まれるグループ、章単位に関連するドキュメント出力形態を実現するための制御情報および各種属性設定情報を、プリンタＳＤＫ ＡＰＩであるPD_FuncSendPageInfo( )関数６０２をコールして、プリンタ１０４に通知する。
【０１４４】
そして、プリンタ１０４は、本関数コールに対して、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）をプリンタドライバ１０２に返す。
【０１４５】
また、前記ページ／グループ／章単位に関連する各種印刷制御情報および属性設定情報を受理したプリンタ１０４は、プリンタドライバ１０２において、各種制御処理を行って、印刷ジョブデータとなるＰＤＬデータを生成して、プリンタ１０４に送信してくるまでに、ページ／グループ／章単位に関連する各種最適化処理を行って、以降の処理に備え、該当ジョブと識別して保存しておく。
【０１４６】
そして、プリンタドライバ１０２は、プリンタドライバ１０２で生成したページ／グループ／章単位に関連する印刷ジョブデータとなるＰＤＬデータ７１２をプリンタ１０４へ送信する。
【０１４７】
そして、プリンタ１０４は、前記ページ／グループ／章単位に関連する最適化処理を読み出して、受信した印刷ジョブデータ７１２の各制御に適応させて処理を行う。
【０１４８】
なお、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムにおけるドキュメント印刷の動作として、ジョブ中のページ／グループ／章単位で出力属性が異なる場合は、異なる度に、ＧＤＩよりDrvStartPage( )関数７１０がコールされるため、上記処理７２０が繰り返されることになる。
【０１４９】
次に、プリンタドライバ１０２側では、アプリケーションプログラム１０３よりページに対する属性設定および各オブジェクト描画処理が終了することをＧＤＩに指示することによって、ＧＤＩよりプリンタドライバ１０２にページ終了処理を指示するＤＤＩ関数であるDrvEndPage( )関数７１３がコールされる。
【０１５０】
さらに、プリンタドライバ１０２側では、アプリケーションプログラム１０３により、全てのドキュメントページの属性設定および各オブジェクト描画処理を終了し、ドキュメント印刷終了をＧＤＩに指示することによって、ＧＤＩよりプリンタドライバ１０２に、ジョブ終了処理を指示するＤＤＩ関数であるDrvEndDoc( )関数７１４がコールされる。
【０１５１】
プリンタドライバ１０２は、本関数の処理において、各種パラメータのリセットおよび各種メモリ領域の開放を行うとともに、プリンタ１０４の印刷ジョブ制御処理を完了させるためのジョブ終了に関するＰＤＬデータ７１５を生成し、プリンタ１０４に送信する。
【０１５２】
最後に、プリンタドライバ１０２側では、アプリケーションプログラムにおけるすべての印刷処理を完了するために、プリンタに対するデバイスコンテキストの削除を指示するＤＤＩ関数であるDrvDisablePDEV( )関数７１６がコールされ、ドキュメント印刷のセッションを終了する。
【０１５３】
＜本実施形態のプリンタドライバプログラムにおける印刷ジョブ制御開始通知処理の説明（図８）＞
以下、図８に示すフローチャートによって、本実施形態におけるホストコンピュータ１００のプログラムメモリ上にあるプリンタドライバプログラム１０４の各制御処理を詳細に説明する。
【０１５４】
図８は、本発明の印刷システムにおける第１の制御処理手順の一例を示すフローチャートである。
【０１５５】
なお、図８中、Ｓ８０１に示すステップは、本実施形態に係るホストコンピュータ１００におけるアプリケーションプログラム１０３（ＣＰＵ３０４がＲＡＭ３０６上で実行する）での処理に対応する。
【０１５６】
また、Ｓ８０２〜Ｓ８０９に示すステップは、本実施形態に係るホストコンピュータ１００におけるプリンタドライバプログラム１０２（ＣＰＵ３０４がＲＡＭ３０６上で実行する）での印刷制御処理開始からプリンタＳＤＫ ＡＰＩを使用して印刷ジョブ制御処理開始をプリンタ１０４の印刷制御プログラム１０６に通知するまでの一連の制御処理に対応する。
【０１５７】
まず、ステップＳ８０１において、ユーザがキーボード等の入力装置からアプリケーションプログラム１０３へ印刷指示を行うと、アプリケーションプログラム１０３から、Ｗｉｎｄｏｗｓ（登録商標） ＧＤＩに対して、プリンタに対するデバイスコンテキスト作成指示およびドキュメント印刷開始指示を行う（DrvEnablePDEV( )関数７０３コール）。このとき、プリンタドライバプログラム１０２がＯＳ１０１上でロードされ起動される。
【０１５８】
ステップＳ８０２において、ステップＳ８０１に示したＧＤＩからのＤＤＩ関数コール（DrvEnablePDEV( )関数７０３コール）により、プリンタドライバプログラム１０２は、各種メモリ領域確保、各種パラメータ初期化等によって、プリンタドライバプログラム１０２の初期化処理を行う。
【０１５９】
また同時に、ステップＳ８０３において、プリンタドライバプログラム１０２は、プリンタＳＤＫ ＡＰＩライブラリをロードする。
【０１６０】
そして、アプリケーションプログラム１０３は、Ｗｉｎｄｏｗｓ（登録商標） ＧＤＩに対してデバイスコンテキストハンドルの作成し、該デバイスコンテキストハンドルに、テキスト、図形、イメージの各オブジェクト描画を開始する（DrvStartDoc( )関数７０４コール）。
【０１６１】
そして、Ｗｉｎｄｏｗｓ（登録商標） ＧＤＩが、上記各オブジェクト描画指示をＤＤＩに変換し、プリンタドライバプログラム１０２に渡すと、ステップＳ８０４において、プリンタドライバプログラム１０２は、ドキュメント印刷に係る各種印刷制御処理を開始する。
【０１６２】
そして、ステップ８０５において、プリンタドライバプログラム１０２は、プリンタ１０４に対して、プリンタＳＤＫ ＡＰＩであるPD_FuncJobStart( )関数５０１をコールして、印刷ジョブ制御処理が開始されたことを通知する。
【０１６３】
次に、ステップＳ８０６において、プリンタドライバプログラム１０２は、プリンタ１０４側からのPD_FuncJobStart( )関数５０１に対するリターンを受信し、ステップＳ８０７において、このリターン値が正常リターンであるか否かを判定する。
【０１６４】
ステップＳ８０７で、プリンタドライバプログラム１０２が、正常リターンであると判定した場合には、ステップＳ８０８において、処理を続行するためにＲＡＭ３０６上のプログラムフラグに続行する意味のフラグをセットし、以降の処理に備える。なお、このフラグは、ＯＳ１０１，アプリケーションプログラム１０３等に判断され、処理の続行の有無が制御される。
【０１６５】
一方、ステップＳ８０７で、プリンタドライバプログラム１０２が、正常リターンでないと判定した場合には、ここで処理を中止する（ステップＳ８０９）。
【０１６６】
＜本実施形態のプリンタにおける印刷ジョブ制御情報要求処理の説明（図９）＞
以下、図９に示すフローチャートによって、本実施形態におけるプリンタのプログラムメモリ上にある印刷制御プログラムの各制御処理を詳細に説明する。
【０１６７】
図９は、本発明の印刷システムにおける第２の制御処理手順の一例を示すフローチャートである。
【０１６８】
なお、図９中、Ｓ９０１〜Ｓ９０９に示すステップは、本実施形態に係るプリンタ１０４における印刷制御プログラム１０６（ＣＰＵ３１４がＲＡＭ３１６上で実行する）での各制御処理開始からプリンタＳＤＫ ＡＰＩを使用して、印刷ジョブ制御情報をホストコンピュータ１００のプリンタドライバプログラム１０２に要求するまでの一連の制御処理に対応する。
【０１６９】
まず、ステップＳ９０１において、プリンタ電源投入時あるいはプリンタリセット時に、印刷制御プログラム１０６は、各種制御処理を実行するためのプログラムメモリ領域確保、各種パラメータの初期化を行う（プリンタ１０４の初期化処理）。
【０１７０】
また同時に、ステップＳ９０２において、印刷制御プログラム１０６は、プリンタＳＤＫ ＡＰＩライブラリをロードする。
【０１７１】
次に、ステップＳ９０３において、印刷制御プログラム１０６は、ホストコンピュータ１００側からのプリンタＳＤＫ ＡＰＩであるPD_FuncJobStart( )関数５０１コールに対して、印刷ジョブ制御処理開始通知受理すると、本関数に対する正常リターンを返す。
【０１７２】
続いて、ステップＳ９０４において、印刷制御プログラム１０６は、ホストコンピュータ１００のプリンタドライバプログラム１０２に対して、プリンタＳＤＫ ＡＰＩであるPP_FuncGetJobInfo( )関数５０２をコールして、印刷ジョブ制御情報の要求を行う。
【０１７３】
次に、ステップＳ９０５において、印刷制御プログラム１０６は、前記PP_FuncGetJobInfo( )関数５０２のホストコンピュータ１００側からのリターンを受信すると、ステップＳ９０６において、このリターン値が正常リターンであるか否かを判定する。
【０１７４】
ステップＳ９０６で、印刷制御プログラム１０６が、正常リターンであると判定した場合には、ステップＳ９０８において、処理を続行するためにＲＡＭ３１６上のプログラムフラグに続行する意味のフラグをセットし、以降の処理に備える。なお、このフラグは、ＯＳ１０５等に判断され、処理の続行の有無が制御される。
【０１７５】
さらに、印刷制御プログラム１０６は、ホストコンピュータ１００側からの印刷ジョブ制御情報要求に基づく、印刷ジョブ制御情報および各種属性設定情報通知に備えて、ステップＳ９０９において、これらの情報を格納する記憶装置（ＲＡＭ３１６）上の領域確保および初期化を行う。
【０１７６】
一方、ステップＳ９０６で、印刷制御プログラム１０６が、正常リターンでないと判定した場合には、ここで処理を中止する（ステップＳ９０７）。
【０１７７】
＜本実施形態のプリンタドライバプログラムにおける印刷ジョブ制御情報通知処理の説明（図１０）＞
以下、図１０に示すフローチャートによって、本実施形態におけるホストコンピュータ１００のプログラムメモリ上にあるプリンタドライバプログラム１０４の図８のステップＳ８０８以降の各制御処理を詳細に説明する。
【０１７８】
図１０は、本発明の印刷システムにおける第３の制御処理手順の一例を示すフローチャートである。
【０１７９】
なお、図１０中の１００１〜Ｓ１００９に示すステップは、本実施形態に係るホストコンピュータ１００におけるプリンタドライバプログラム１０２（ＣＰＵ３０４がＲＡＭ３０６上で実行する）での、プリンタ１０４の印刷制御プログラム１０６からの印刷ジョブ制御情報要求を受けてから、プリンタＳＤＫ ＡＰＩを使用して、印刷ジョブ制御情報をプリンタ１０４の印刷制御プログラム１０６に通知するまでの一連の制御処理に対応する。
【０１８０】
まず、プリンタドライバプログラム１０２は、ステップＳ１００１において、プリンタ１０４側からのプリンタＳＤＫ ＡＰＩであるPP_FuncGetJobInfo( )関数５０２コールに対応して、印刷ジョブ制御情報要求を受理すると、本関数に対する正常リターンをプリンタ１０４に返す。
【０１８１】
次に、ステップＳ１００２において、プリンタドライバプログラム１０２は、ステップＳ１００１で受理したプリンタ１０４側からの印刷ジョブ制御情報要求に基づいて、ジョブ全体に関連するドキュメント出力形態を実現するため制御情報および各種属性設定情報を、プリンタＳＤＫ ＡＰＩであるPD_FuncSendJobInfo( )関数６０１をコールしてプリンタ１０４に通知し、プリンタ１０４からのリターンを受理する。
【０１８２】
次に、ステップＳ１００３において、プリンタドライバプログラム１０２は、ステップＳ１００２で受理したプリンタ１０４側からのPD_ FuncSendJobInfo ( )関数６０１に対するリターン値が正常リターンであるか否かを判定する。
【０１８３】
ステップＳ１００３で、プリンタドライバプログラム１０２が、ステップＳ１００２で受理したリターン値が正常リターンでないと判定した場合には、ここで処理を中止する（ステップＳ１００９）。
【０１８４】
一方、ステップＳ１００３で、プリンタドライバプログラム１０２が、ステップＳ１００２で受理したリターン値が正常リターンであると判定した場合には、ステップＳ１００４において、処理を続行するためにＲＡＭ３０６上のプログラムフラグに続行する意味のフラグをセットし、処理に備える。なお、このフラグは、ＯＳ１０１，アプリケーションプログラム１０３等に判断され、処理の続行の有無が制御される。
【０１８５】
そして、プリンタドライバプログラム１０２は、アプリケーションプログラム１０３からＧＤＩを介してページ単位の出力指示がなされると（DrvStartPage( )関数７１０がコールされると）、ステップＳ１００５において、プリンタドライバプログラム１０２は、ページ単位あるいは該当ページが含まれるグループ、章単位に関連するページ出力制御処理を開始する。
【０１８６】
そして、ステップＳ１００６において、プリンタドライバプログラム１０２は、前記ページ出力処理開始時に決定するページ単位あるいは該当ページが含まれるグループ、章単位に関連するドキュメント出力形態を実現するため制御情報および各種属性設定情報を、プリンタＳＤＫ ＡＰＩであるPD_FuncSendPageInfo( )関数６０２をコールして、プリンタに通知する。
【０１８７】
そして、ステップＳ１００７において、プリンタドライバプログラム１０２は、ステップＳ１００６で受理したプリンタ１０４側からのPD_FuncSendPageInfo( )関数６０２に対するリターン値が正常リターンであるか否かを判定する。
【０１８８】
ステップＳ１００７で、プリンタドライバプログラム１０２が、ステップＳ１００６で受理したリターン値が正常リターンでないと判定した場合には、ここで処理を中止する（ステップＳ１００９）。
【０１８９】
一方、ステップＳ１００７で、プリンタドライバプログラム１０２が、ステップＳ１００６で受理したリターン値が正常リターンであると判定した場合には、ステップＳ１００８において、処理を続行するためにＲＡＭ３０６上のプログラムフラグに続行する意味のフラグをセットし、以降の処理に備える。なお、このフラグは、ＯＳ１０１，アプリケーションプログラム１０３等に判断され、処理の続行の有無が制御される。
【０１９０】
なお、図７でも説明したように、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムにおけるドキュメント印刷の動作として、ジョブ中のページ／グループ／章単位で出力属性が異なる場合は、異なる度に、ＧＤＩよりDrvStartPage( )関数７１０がコールされるため、図１０では図示を省略しているが、ステップＳ１００５〜ステップＳ１００９は、ジョブ中のページ／グループ／章単位で出力属性が異なる回数だけ、繰り返し実行される。
【０１９１】
＜プリンタドライバプログラムにおける印刷制御処理の説明（図１１）＞
以下、図１１に示すフローチャートによって、本実施形態におけるホストコンピュータ１００のプログラムメモリ上にあるプリンタドライバプログラム１０４の印刷制御処理を詳細に説明する。
【０１９２】
図１１は、本発明の印刷システムにおける第４の制御処理手順の一例を示すフローチャートである。
【０１９３】
なお、図１１中の１１０１〜Ｓ１１１１に示すステップは、本実施形態に係るホストコンピュータ１００におけるプリンタドライバプログラム１０２（ＣＰＵ３０４がＲＡＭ３０６上で実行する）での印刷制御処理に対応する。
【０１９４】
まず、ドキュメント作成、編集、印刷アプリケーションプログラム１０３からのプリンタへの印刷指示によって、本フローチャートの処理を開始する。
【０１９５】
まず、アプリケーションプログラム１０３から、各種印刷属性設定パラメータおよび文字／図形/イメージデータの印刷指示が、Ｗｉｎｄｏｗｓ（登録商標） ＳＤＫ ＡＰＩを使用してＷｉｎｄｏｗｓ（登録商標） ＧＤＩで作成されるプリンタに対してなされると、ＧＩＤは、この各種印刷属性設定パラメータおよび文字／図形/イメージデータの印刷指示をＤＤＩに変換し、プリンタドライバプログラム１０２に対するＤＤＩ関数をコールする。これにより、本フローチャートの処理が開始される。
【０１９６】
まず、ステップＳ１１０１において、プリンタドライバプログラム１０２は、アプリケーションプログラム１０３からＷｉｎｄｏｗｓ（登録商標） ＳＤＫ ＡＰＩを介して渡される各種印刷属性設定パラメータおよび文字／図形/イメージデータの印刷指示を入力する。
【０１９７】
そして、ステップＳ１１０２おいて、プリンタドライバプログラム１０２は、ステップＳ１１０１で入力されたパラメータおよびデータを解析する。
【０１９８】
なお、ステップＳ１１０１，Ｓ１１０２は、各種印刷属性設定パラメータおよび文字／図形/イメージデータの印刷指示が入力される毎に実行される。
【０１９９】
次に、ステップＳ１１０３において、プリンタドライバプログラム１０２は、ステップＳ１１０２での前記入力データの解析結果より、用紙サイズ、印刷方向、描画解像度設定、座標系の単位設定など印刷の準備をするため、プリンタ１０４に対する各設定パラメータをプリンタ制御命令に変換・生成し、プリンタ１０４に送信してプリンタ１０４の初期化処理を行う。
【０２００】
なお、ステップＳ１１０３は、ジョブ中のページ／グループ／章単位で出力属性が異なる度に実行される。
【０２０１】
さらに、ステップＳ１１０４およびステップＳ１１０６において、プリンタドライバプログラム１０２は、前記ステップＳ１１０２で解析処理されたパラメータ及びデータを、文字データ，図形データ，イメージデータに分離する。
【０２０２】
ステップＳ１１０４で、プリンタドライバプログラム１０２が、文字データと判定したデータについては、ステップＳ１１０５において、文字印字制御処理モジュールで文字印字制御処理を施す。
【０２０３】
また、ステップＳ１１０４及びＳ１１０６で、プリンタドライバプログラム１０２が図形データと判定したデータについては、ステップＳ１１０７において、図形描画制御処理モジュールで図形描画制御処理を施す。
【０２０４】
また、ステップＳ１１０４及びＳ１１０６で、プリンタドライバプログラム１０２がイメージデータと判定したデータについては、ステップＳ１１０８において、イメージ描画制御処理モジュールでイメージ描画制御処理を施す。
【０２０５】
そして、ステップＳ１１０９において、プリンタドライバプログラム１０２は、上記ステップＳ１１０５の文字印字制御処理，ステップＳ１１０７の図形描画制御処理，ステップＳ１１０８のイメージ描画制御処理に基づき、ドキュメント構成制御処理モジュールで描画出力属性，サイズ計算，描画出力位置等パターンの出力形態を決定し、プリンタの出力ページに配置する処理（ドキュメント構成処理）を行う。
【０２０６】
次に、ステップＳ１１１０において、プリンタドライバプログラム１０２は、ステップＳ１１０９で構成されたドキュメント出力の制御データを、印刷制御命令生成処理モジュールで、プリンタにドキュメントを出力するためにプリンタの印刷制御命令に変換・生成する処理（印刷制御命令生成処理）を行う。
【０２０７】
そして、ステップＳ１１１１において、プリンタドライバプログラム１０２は、プリンタへの出力送信処理モジュールで、ステップＳ１１１０で生成した印刷制御命令をプリンタ１０４に対して送信する処理（出力送信処理）を行い、プリンタ１０４でドキュメントを印刷させる。
【０２０８】
なお、ステップＳ１１０４〜Ｓ１１１１の処理は、各種印刷属性設定パラメータおよび文字／図形/イメージデータの印刷指示毎に実行される。
【０２０９】
＜プリンタにおける印刷制御処理の説明（図１２）＞
以下、図１２に示すフローチャートによって、本実施形態におけるプリンタのプログラムメモリ上にある印刷制御プログラムの印刷制御処理を詳細に説明する。
【０２１０】
図１２は、本発明の印刷システムにおける第５の制御処理手順の一例を示すフローチャートである。
【０２１１】
なお、図１２中、Ｓ１２０１〜Ｓ１２０９に示すステップは、本実施形態に係るプリンタ１０４における印刷制御プログラム１０６（ＣＰＵ３１４がＲＡＭ３１６上で実行する）における印刷制御処理に対応する。
【０２１２】
また、図１２中、Ｓ１２１０に示すステップは、本実施形態に係るプリンタ１０４におけるエンジン制御プログラム１０７（ＣＰＵ３１４がＲＡＭ３１６上で実行する）における転送処理に対応する。
【０２１３】
さらに、図１２中、Ｓ１２１１に示すステップは、本実施形態に係るプリンタ１０４におけるエンジン部３２１における出力処理に対応する。
【０２１４】
まず、ステップＳ１２０１において、印刷制御プログラム１０６は、ホストコンピュータ１００のプログラムメモリ上にあるプリンタドライバプログラム１０２より、プリンタＳＤＫ ＡＰＩ関数およびデータによって、ドキュメント全体の出力形態を決定するジョブに関連する印刷制御情報および各種属性設定情報を受理し、正常リターンを返す処理を行う。
【０２１５】
なお、前記ジョブに関連する印刷制御情報および各種属性設定情報とは、ジョブ全体で設定される用紙サイズ、用紙メディア種、印刷部数、部単位印刷の部数、ソート、給紙方法、排紙方法、ステイプル印刷、パンチ印刷、トリミング印刷、用紙折り印刷、Ｎ−ｕｐ印刷（複数ページ割付印刷）、両面印刷などの各種印刷フィニッシング属性設定および製本印刷、用紙サイズ混在、およびこれらの印刷面付け順序などの各種制御および属性設定情報である。
【０２１６】
次に、ステップＳ１２０２において、印刷制御プログラム１０６は、ステップＳ１２０１で受理した前記ジョブ全体に関連する印刷制御情報および各種属性設定情報から、ジョブ単位の最適化処理を行う。この処理は、事前にジョブ制御に係る作業領域としてのメモリ、ハードディスク等の記憶装置上の領域確保、出力に係る各制御処理の優先順位の設定、給紙トレイからの用紙給紙の準備、フィニッシャなどの各種周辺装置の実行・動作の準備など、ジョブ全体に関連する各制御および各種属性設定を行って以降の処理に備えて行う最適化処理である。
【０２１７】
次に、ステップＳ１２０３において、印刷制御プログラム１０６は、ステップＳ１２０２で行った前記ジョブ全体に関連する事前最適化処理の結果を、識別されたジョブ単位に、ＲＡＭ３１６、ディスク３１３等の記憶装置部に格納して、該当ジョブ印刷が終了するまで保存する。
【０２１８】
続いて、ステップＳ１２０４において、印刷制御プログラム１０６は、前記同様にホストコンピュータ１００のプログラムメモリ上にあるプリンタドライバプログラム１０２より、プリンタＳＤＫ ＡＰＩ関数およびデータによって、ドキュメント全体の出力形態を決定するページ／グループ／章単位で関連する印刷制御情報および各種属性設定情報を受理し、正常リターンを返す処理を行う。
【０２１９】
なお、前記ページ／グループ／章単位で関連する印刷制御情報および各種属性設定情報とは、ジョブ全体で設定される用紙サイズ、用紙メディア種、用紙折り印刷、Ｎ−ｕｐ印刷（複数ページ割付印刷）、両面印刷などの各種印刷フィニッシング属性設定および製本印刷、用紙サイズ混在、およびこれらの印刷面付け順序などの各種制御および属性設定情報である。
【０２２０】
次に、ステップＳ１２０５において、印刷制御プログラム１０６は、ステップＳ１２０４で受理したページ／グループ／章単位で関連する印刷制御情報および各種属性設定情報から、ページ／章単位の最適化処理を行う。この処理は、事前にページ／グループ／章単位の制御に係る作業領域としてのメモリ、ハードディスクなどの記憶装置上の領域確保、出力に係る各制御処理の優先順位の設定、給紙トレイからの用紙給紙の準備、フィニッシャなどの各種周辺装置の実行・動作の準備など、ジョブ全体に関連する各制御および各種属性設定を行って以降の処理に備えて行う最適化処理である。
【０２２１】
次に、ステップＳ１２０６において、印刷制御プログラム１０６は、ステップＳ１２０５で行った、前記ページ／グループ／章単位に関連する事前最適化処理の結果を、識別されたジョブ単位に、ＲＡＭ３１６、ディスク３１３等の記憶装置部に格納して、該当ジョブ印刷が終了するまで保存する。
【０２２２】
次に、ステップＳ１２０７において、印刷制御プログラム１０６は、ホストコンピュータ１００のプログラムメモリ上にあるプリンタドライバプログラム１０２から、ＰＤＬデータおよび文字コード、イメージ等の描画データから成る該当ドキュメントの印刷ジョブデータを受信する。
【０２２３】
そして、ステップＳ１２０８において、印刷制御プログラム１０６は、前記ステップＳ１２０３及びステップＳ１２０６で記憶装置部に保存したジョブ／グループ／章／ページにわたる各最適化処理の結果を読み出す。
【０２２４】
ステップＳ１２０９において、印刷制御プログラム１０６は、ステップＳ１２０７で受信した印刷ジョブデータと、ステップＳ１２０８で読み出した各最適化処理結果をあわせて、各印刷制御処理を行ってビットマップデータを生成し、ページメモリ４１６（図４）上に展開する。
【０２２５】
そして、ステップＳ１２１０において、エンジン制御プログラム１０７は、ステップＳ１２０９で生成されたページメモリ４０６上のビットマップデータを、プリンタエンジン部３２１に転送する。
【０２２６】
ステップＳ１２１１において、プリンタエンジン部３２１は、エンジン制御プログラム１０７から転送されるビットマップデータに基づいて記録シートへのドキュメント出力を行う。
【０２２７】
なお、ステップＳ１２０４〜Ｓ１２１０の処理は、ジョブ中のページ／グループ／章単位で出力属性が異なる回数だけ、繰り返し実行される。
【０２２８】
以上示したように、本実施形態によれば、ホストコンピュータ１００上のプリンタドライバプログラム１０２とプリンタ１０４内の印刷制御プログラム１０６において、各オペレーティングシステム（ＯＳ１０１，ＯＳ１０５）で認識可能で、相互に各種情報およびデータの送受信が可能なプリンタＳＤＫ ＡＰＩとなる関数を用意して、ドキュメント印刷に係る各種印刷制御情報および各種属性設定を事前にプリンタ側に通知し、各種最適化処理を行ない、実際の印刷時の各種印刷制御を可能とすることによって、複雑な出力形態が設定されるドキュメント印刷速度の向上を図る印刷システムの提供することが可能となる。
【０２２９】
〔第２実施形態〕
上記第１実施形態では、ホストコンピュータ１００上のプリンタドライバプログラム１０２およびプリンタ１０４内の印刷制御プログラム１０６間で、プリンタＳＤＫ ＡＰＩライブラリで提供される関数で、各種情報およびデータの送受信を行う構成であった。
【０２３０】
一方、本実施形態では、ホストコンピュータ１００上のアプリケーションプログラム１０３において、前記プリンタＳＤＫ ＡＰＩライブラリをロードし、該プリンタＳＤＫ ＡＰＩライブラリで提供される関数で、アプリケーションプログラム１０３とプリンタ１０４内の印刷制御プログラム１０６間の各種情報およびデータの送受信を行うように構成する。
【０２３１】
この構成の本実施形態によれば、アプリケーションプログラム１０３とプリンタ１０４間で、直接、事前の印刷制御情報および各種属性設定情報を通知することが可能となる。このため、例えば、ＰｏｓｔＳｃｒｉｐｔデータを扱うアプリケーションプログラムと、ＰｏｓｔＳｃｒｉｐｔプリンタの組み合わせにおいて、アプリケーションプログラムから、直接プリンタに出力する場合、ドキュメント印刷に係る印刷速度の向上を図る印刷システムを提供することが可能となる。
【０２３２】
また、別の例としては、前記アプリケーションプログラムおよびプリンタの組み合わせにおいて、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムの印刷方式であるアプリケーションプログラムから、直接プリンタにＰＤＬデータを送信することができるＰＡＳＳＴＨＲＯＵＧＨ機能においても、ドキュメント印刷に係る印刷速度の向上を図る印刷システムを提供することが可能となる。
【０２３３】
〔第３実施形態〕
上記実施形態では、アプリケーションプログラムインタフェース（ＡＰＩ）であるプリンタＳＤＫ ＡＰＩライブラリを、ホストコンピュータ１００上のアプリケーションプログラム１０３、プリンタドライバプログラム１０２、及びプリンタ１０４上の印刷制御プログラムから読み込み可能なプログラムライブラリ形式として提供する構成について説明した。
【０２３４】
このプリンタＳＤＫ ＡＰＩライブラリは、ホストコンピュータ１００上のアプリケーションプログラム１０３、プリンタドライバプログラム１０２において、スタティックリンクライブラリとして、予め各プログラムに内蔵される構成であっても、或いは、外部ファイル形式（ダイナミックリンクライブラリ）として、任意のタイミングで必要に応じて、プログラムメモリ上に外部ライブラリファイルをロードして使用する構成であってもよい。
【０２３５】
さらに、プリンタＳＤＫ ＡＰＩライブラリは、プリンタ１０４内の印刷制御プログラム１０６において、スタティックリンクライブラリとして、予め各プログラムに内蔵される構成であっても、或いは、外部ファイル形式（ダイナミックリンクライブラリ）として、任意のタイミングで必要に応じて、プログラムメモリ上に外部ライブラリファイルをロードして使用する構成であってもよい。
【０２３６】
上記プリンタＳＤＫ ＡＰＩライブラリを外部ファイル形式（ダイナミックリンクライブラリ）として提供する構成によれば、プリンタＳＤＫ ＡＰＩライブラリで提供される関数の変更、追加に際して、容易に提供してアップデートすることが可能となり、プログラム保守性の優れた、効率の良い印刷システムを提供することが可能となる。
【０２３７】
〔第４実施形態〕
本実施形態では、上記第３実施形態において、外部ファイルとして提供するプリンタＳＤＫ ＡＰＩライブラリについて、プリンタ１０４に存在しない場合、或いは更新する必要がある場合がある。
【０２３８】
このような場合は、ホストコンピュータ１００とプリンタ１０４が通信して、ホストコンピュータ１００上のプリンタドライバプログラム１０２からプリンタＳＤＫ ＡＰＩライブラリをプリンタ１０４にダウンロードして、プリンタ１０４に適用するように構成してもよい。
【０２３９】
この構成により、プリンタＳＤＫ ＡＰＩライブラリで提供される関数の変更、追加に際して、容易にプリンタ内のプリンタＳＤＫ ＡＰＩライブラリの新規登録、更新することが可能となり、プログラム保守性の優れた、効率の良い印刷システムを提供することが可能となる。
【０２４０】
また、反対に、プリンタＳＤＫ ＡＰＩライブラリが、ホストコンピュータ１００に存在しない場合、或いは更新する必要があるに、プリンタ１０４からプリンタＳＤＫ ＡＰＩライブラリをホストコンピュータ１００にダウンロードして、ホストコンピュータ１００上のプリンタドライバプログラム１０２に適用するように構成してもよい。
【０２４１】
以上の構成により、ホストコンピュータ１００又はプリンタ１０４のいずれかのプリンタＳＤＫ ＡＰＩライブラリが更新されていない等の場合でも、各装置内のプリンタＳＤＫ ＡＰＩライブラリのバージョン等を合わせて、本発明の印刷システムの目的を達成することが可能となる。
【０２４２】
〔第５実施形態〕
上記各実施形態では、プリンタ１０４において、事前にドキュメント印刷に係る各種印刷制御情報および各種属性設定情報を取得し、実際のドキュメントの出力形態、使用される用紙枚数、用紙メディア種等を事前に認識可能な構成について説明したが、本実施形態では、プリンタ１０４側で、上記認識した出力形態、使用される用紙枚数、用紙メディア種等の情報（印刷コストに関する情報）を、ホストコンピュータ１０４に通知する。さらに、ホストコンピュータ１００側では、上記プリンタ１０４側から通知された出力形態、使用される用紙枚数、用紙メディア種等の情報を、モニタ表示し、ドキュメント印刷出力を続行するか、キャンセルするかの設定指示をさせるユーザインターフェース手段を備え、利用者に設定指示を可能とする機能を付加するように構成してもよい。
【０２４３】
また、上記認識した出力形態、使用される用紙枚数、用紙メディア種等の情報を、プリンタ１０４側のオペレーションパネル４２０に表示し、ドキュメント印刷出力を続行するか、キャンセルするかの設定指示をさせるユーザインターフェース手段を備え、利用者に設定指示を可能とする機能を付加するように構成してもよい。
【０２４４】
さらに、プリンタ１０４側で、上記認識した出力形態、使用される用紙枚数、用紙メディア種等から課金予定の情報を算出し、該算出した課金予定情報を、ホストコンピュータ１０４に通知し、ホストコンピュータ１００側で、上記プリンタ１０４側から通知された課金予定情報を、モニタ表示し、ドキュメント印刷出力を続行するか、キャンセルするかの設定指示をさせるユーザインターフェース手段を備え、利用者に設定指示を可能とする機能を付加するように構成してもよい。
【０２４５】
また、上記課金情報を、プリンタ１０４側のオペレーションパネル４２０に表示し、ドキュメント印刷出力を続行するか、キャンセルするかの設定指示をさせるユーザインターフェース手段を備え、利用者に設定指示を可能とする機能を付加するように構成してもよい。
【０２４６】
以下、図１３，図１４のフローチャートを参照して、プリンタ１０４側で、上記認識した出力形態、使用される用紙枚数、用紙メディア種等から印刷コストに関する情報を算出し、該算出した印刷コストに関する情報を、ホストコンピュータ１０４に通知し、ホストコンピュータ１００側で、上記プリンタ１０４側から通知された印刷コストに関する情報を、モニタ表示し、ドキュメント印刷出力を続行するか、キャンセルするかの設定指示をさせるユーザインターフェース手段を備え、利用者に設定指示を可能とする機能を付加するように構成について説明する。
【０２４７】
＜プリンタにおける印刷制御処理の説明（図１３）＞
本発明の第５実施形態では、図１２に示したフローチャートに示した処理に代えて、図１３に示すフローチャートに示す処理を実行するものとする。
【０２４８】
図１３は、本発明の印刷システムにおける第６の制御処理手順の一例を示すフローチャートである。なお、図１２と同一のステップには同一のステップ番号を付してある。また、図１３中のＳ１３０１に示すステップは、本実施形態に係るプリンタ１０４における印刷制御プログラム１０６（ＣＰＵ３１４がＲＡＭ３１６上で実行する）における印刷制御処理に対応する。
【０２４９】
ステップＳ１３０１において、印刷制御プログラム１０６は、ステップＳ１２０１で受理したジョブ全体に関連するジョブ制御情報、及び、ステップＳ１２０４で受理したページ／章単位に関するジョブ制御情報とに基づいて、印刷コストに関する情報（課金予定の情報，出力形態、使用される用紙枚数、用紙メディア種等の情報を含む）を算出する。
【０２５０】
次に、ステップＳ１３０２において、印刷制御プログラム１０６は、ステップＳ１３０１で算出した印刷コストに関する情報（課金予定の情報，出力形態、使用される用紙枚数、用紙メディア種等の情報を含む）を、ホストコンピュータ１００のプリンタドライバプログラム１０２に対して、プリンタＳＤＫ ＡＰＩを介して通知する。
【０２５１】
＜第５実施形態のプリンタドライバプログラムにおける印刷ジョブ制御情報通知処理の説明（図１４）＞
本発明の第５実施形態では、図１０に示したフローチャートに示した処理に代えて、図１４に示すフローチャートに示す処理を実行するものとする。
【０２５２】
図１４は、本発明の印刷システムにおける第７の制御処理手順の一例を示すフローチャートである。なお、図１０と同一のステップには同一のステップ番号を付してある。また、図１３中のＳ１４０１〜Ｓ１４０３に示すステップは、本実施形態に係るホストコンピュータ１００におけるプリンタドライバプログラム１０２（ＣＰＵ３０４がＲＡＭ３０６上で実行する）での処理に対応する。
【０２５３】
ステップＳ１００７で、プリンタドライバプログラム１０２が、ステップＳ１００６で受理したリターン値が正常リターンであると判定した場合には、ステップＳ１４０１に処理を進める。
【０２５４】
ステップＳ１４０１において、プリンタドライバプログラム１０２は、プリンタ１０４側からプリンタＳＤＫ ＡＰＩを介して、印刷コストに関する情報（課金予定の情報，出力形態、使用される用紙枚数、用紙メディア種等の情報を含む）を受理する。
【０２５５】
次に、ステップＳ１３０２において、プリンタドライバプログラム１０２は、該受信した印刷コストに関する情報（課金予定の情報，出力形態、使用される用紙枚数、用紙メディア種等の情報を含む）を、モニタ（ディスプレイ３０２）に表示させ、ユーザに入力装置３０１を用いて、「ドキュメント印刷出力を続行する」か「ドキュメント印刷出力をキャンセル（中止）する」かの設定指示を入力させる。
【０２５６】
ユーザからの設定指示が入力されると、ステップＳ１３０３において、プリンタドライバプログラム１０２は、該入力された設定指示を判定する。ステップＳ１３０３で、プリンタドライバプログラム１０２が、ユーザからの設定指示が「ドキュメント印刷出力を続行する」であると判定した場合には、ステップＳ１００８に処理を移行させる。
【０２５７】
一方、ステップＳ１３０３で、プリンタドライバプログラム１０２が、ユーザからの設定指示が「ドキュメント印刷出力をキャンセル（中止）する」であると判定した場合には、ここで処理を中止する（ステップＳ１００９）。
【０２５８】
以上の構成により、本実施形態によれば、例えば、ドキュメントの印刷出力を行う前に、最終的な印刷出力形態、使用される用紙枚数、用紙メディア種、印刷コスト等を、事前に利用者が認識可能となるため、ドキュメント印刷コストに係る課金管理、課金状況が把握可能となる。
【０２５９】
また、プリンタ１０４側で、上記認識した出力形態、使用される用紙枚数、用紙メディア種等の情報及び現在プリンタ１０４での待ちジョブ等の情報から印刷終了予測時刻を算出し、該算出した印刷終了予測時刻を、ホストコンピュータ１０４に通知し、ホストコンピュータ１００側で、上記プリンタ１０４側から通知された印刷終了予測時刻を、モニタ表示し、ドキュメント印刷出力を続行するか、キャンセルするかの設定指示をさせるユーザインターフェース手段を備え、利用者に設定指示を可能とする機能を付加するように構成してもよい。
【０２６０】
また、上記印刷終了予測時刻を、プリンタ１０４側のオペレーションパネル４２０に表示し、ドキュメント印刷出力を続行するか、キャンセルするかの設定指示をさせるユーザインターフェース手段を備え、利用者に設定指示を可能とする機能を付加するように構成してもよい。
【０２６１】
以上に示したように、印刷システムにおいて多様な応用ができるシステムを構築することができる。
【０２６２】
なお、上述した各実施形態内で示したホストコンピュータ１００側からプリンタ１０４への印刷処理のための各種属性情報及び制御情報の通知機能の有効／無効を、ホストコンピュータ１００の操作画面上でユーザにより設定可能に構成してもよい。
【０２６３】
即ち、上記通知機能が「有効」に設定されている場合は、ホストコンピュータ１００は、上述したフローチャートに示したような通知処理を実行する。一方、上記通知機能が「無効」に設定されている場合は、ホストコンピュータ１００は、上述したフローチャートに示したような通知処理を実行することなく、印刷ジョブをプリンタ１０４に送信するように構成する。
【０２６４】
〔第６実施形態〕
上記各実施形態では、ホストコンピュータ１００のプリンタドライバプログラム１０２からのジョブ開始通知に応じて、プリンタ１０４のプリンタ制御プログラムが１０６が、ジョブ制御情報要求を、プリンタドライバプログラム１０２に通知することにより、プリンタドライバプログラム１０２が、プリンタ制御プログラム１０６に対して、印刷ジョブの各種属性情報及び各種制御情報を通知する構成について説明した。
【０２６５】
本実施形態では、上記実施形態で示した印刷ジョブの各種属性情報及び各種制御情報の通知を、例えば、セキュアドプリント等のセキュリティで保護されるドキュメントの印刷や通常のプルプリントに適用する場合の構成について説明する。
【０２６６】
本実施形態では、予め、ホストコンピュータ１００のプリンタドライバプログラム１０２が印刷ジョブを生成してプリンタ１０４に送信するように構成する。この際、プリンタドライバプログラム１０２は、該印刷ジョブの各種属性情報，各種制御情報を該印刷ジョブのジョブ識別子に紐付けて外部記憶装置３０３内に記憶させておくように構成する。
【０２６７】
一方、プリンタ１０４では、印刷制御プログラム１０４が、プリンタドライバプログラム１０２から送信された印刷ジョブを外部記憶装置３１３に蓄積しておくように構成する。そして、プリンタ１０４のオペレーションパネル４２０から上記蓄積されている印刷ジョブの印刷指示がなされると、該印刷指示で指定された印刷ジョブの各種属性情報及び制御情報を、該印刷ジョブのジョブ識別子を用いてプリンタドライバプログラム１０２に要求するように構成する。なお、この要求は、アプリケーションプログラム１０３又はプリンタドライバプログラム１０２と、印刷制御プログラム１０４とで各種情報の送受信を行なう共通のプログラミング可能なプログラミングインターフェース（ＡＰＩ）を用いて行うものとする。
【０２６８】
そして、プリンタドライバプログラム１０２は、この印刷制御プログラム１０４からのジョブ識別子を用いた要求に基づいて、該ジョブ識別子に紐付けられた各種属性情報，各種制御情報を印刷制御プログラム１０４に上記ＡＰＩを用いて通知するように構成する。
【０２６９】
一方、印刷制御プログラム１０４は、プリンタドライバプログラム１０２から送信された印刷ジョブの各種属性情報，各種制御情報を用いて、対応する印刷ジョブを実行するように構成する。
【０２７０】
以上示したような構成により、例えば、セキュアドプリント等のセキュリティで保護されるドキュメントの印刷や通常のプルプリント（プリンタ内の記憶装置部にドキュメントデータを蓄積して後で印刷する）に関して、且つプリンタ内に該当ドキュメントの各種印刷制御情報および属性設定情報を保存できない場合であっても、プリンタのオペレーションパネル４２０から煩雑な印刷設定を行わなくても、予めホストコンピュータに記憶しておいて設定を用いて容易に印刷することができる。
【０２７１】
また、本実施形態に、上記第５実施形態を適用する場合、印刷出力を実行する前に、最終的な印刷出力形態，使用される用紙枚数，用紙メディア種，印刷コスト等の認識結果に基づくドキュメント印刷コストに係る情報を、プリンタ１０４側のオペレーションパネル４２０に表示し、印刷出力を続行するか、キャンセルするかの設定指示をさせるユーザインターフェース手段をオペレーションパネル４２０上に備え、利用者に設定指示を可能とする機能を付加するように構成してもよい。
【０２７２】
本実施形態によれば、例えば、印刷装置に蓄積されたドキュメントの印刷出力を行う場合（プルプリント）であっても、該印刷出力の前に、最終的な印刷出力形態、使用される用紙枚数、用紙メディア種、印刷コスト等を、事前に利用者が認識可能となるため、ドキュメント印刷コストに係る課金管理、課金状況が把握可能となる。
【０２７３】
なお、上述したホストコンピュータ１００側からプリンタ１０４側に通知されるジョブ制御情報，ページ制御情報の構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
【０２７４】
また、上記各実施形態では、プリンタドライバプログラム１０２（又はアプリケーションプログラム１０３）とプリンタ制御プログラム１０６とがＡＰＩを用いて通信して、プリンタドライバプログラム１０２（又はアプリケーションプログラム１０３）からプリンタ制御プログラムが１０６に、印刷ジョブの各種属性情報及び各種制御情報を通知する構成について説明した。しかしながら、上記プリンタドライバプログラム１０２（又はアプリケーションプログラム１０３）とプリンタ制御プログラムが１０６とのデータ送受信は、ＡＰＩを用いるものでなくてもよい。即ち、プリンタドライバプログラム１０２（又はアプリケーションプログラム１０３）からプリンタ制御プログラムが１０６に、印刷ジョブの各種属性情報及び各種制御情報を通知可能な構成であれば、どのような構成であってもよい。例えば、プログラムライブラリあるいはモジュールから、直接信号，データ等を送受信するように構成してもよい。
【０２７５】
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０２７６】
以上説明したように、本発明の各実施形態によれば、プリンタ、プリンタドライバプログラムおよびアプリケーションプログラム間において、相互に各種情報およびデータの送受信可能で、ホストコンピュータ側からドキュメント印刷に係る各種印刷制御情報および属性設定情報を、実際の印刷ジョブデータを送信する前に、プリンタ側に通知するアプリケーションプログラムインターフェースを用意することによって、プリンタ側で事前に印刷制御の最適化処理が行うことが可能となり、複雑な体裁、出力形態の属性設定がされているドキュメントの印刷においても、十分な印刷速度を確保でき、印刷エンジン速度（ｐｐｍ）性能を最大限に発揮することが可能となる。
【０２７７】
さらに、複雑な体裁、出力形態の属性設定がされているドキュメントの印刷において、実際に印刷出力を行う前に、最終的な印刷出力形態、使用される用紙枚数、用紙メディア種などが事前にわかるため、これらの情報やこれらの情報から算出される印刷コストに関する情報（印刷課金情報、出力枚数等）をプリンタのオペレーションパネル或いはホストコンピュータのモニタに表示させ、さらに、ドキュメント印刷出力を続行するか、キャンセルするかの設定指示をさせるユーザインターフェース手段を、プリンタのオペレーションパネル或いはホストコンピュータの入力装置に設け、利用者に設定指示を可能とする機能を付加することによって、ドキュメント印刷コストに係る課金管理、課金状況が把握できるなど、印刷システムにおいて、多様な応用ができるシステムを構築することが可能となる。
【０２７８】
以下、図１５に示すメモリマップを参照して本発明に係る印刷システムを構成する情報処理装置（ホストコンピュータ）及び印刷装置（プリンタ）で読み取り可能なデータ処理プログラムの構成について説明する。
【０２７９】
図１５は、本発明に係る印刷システムを構成する情報処理装置（ホストコンピュータ）及び印刷装置（プリンタ）で読み取り可能な各種データ処理プログラムを格納する記憶媒体（記録媒体）のメモリマップを説明する図である。
【０２８０】
なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報，作成者等も記憶され、かつ、プログラム読み出し側のＯＳ等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
【０２８１】
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、各種プログラムをコンピュータにインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
【０２８２】
本実施形態における図２，図４，図５，図６，図７，図８，図９，図１０，図１１，図１２，図１３に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、ＣＤ−ＲＯＭやフラッシュメモリやＦＤ等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
【０２８３】
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【０２８４】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２８５】
従って、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【０２８６】
プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【０２８７】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２８８】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは、圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバやｆｔｐサーバ等も本発明の請求項に含まれるものである。
【０２８９】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０２９０】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体からそのプログラムをパソコン通信など通信ラインを介して要求者にそのプログラムを配信する場合にも適用できることは言うまでもない。
【０２９１】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２９２】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２９３】
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記憶媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【０２９４】
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施形態の有機的な組み合わせを含む）が可能であり、それらを本発明の範囲から排除するものではない。上述した各実施形態およびその変形例を組み合わせた構成も全て、本発明に含まれるものである。
【０２９５】
本発明の様々な例と実施形態を示して説明したが、当業者であれば、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるのではない。
【０２９６】
以上示しようように、アプリケーションプログラムおよびプリンタドライバプログラム、プリンタの印刷制御プログラム間で、相互に各種情報およびデータの送受信が可能なアプリケーションプログラムインターフェース（ＡＰＩ）を用意する。本ＡＰＩ関数を使用して、プリンタは該当印刷ジョブデータを受信する前に（文書印刷前に）、該当印刷ジョブの各種印刷制御情報および属性設定情報（文書全体、文書中の章、グループ単位、あるいは各ページ毎の印刷のための各種制御情報および各種属性設定情報）をホストコンピュータから受け取り、これらの情報に基づいて、事前に印刷装置内の各制御を最適化し、印刷性能を向上させる最適化処理を行う。この最適化処理に基づいて、受信した印刷ジョブの印刷制御処理を行って、該当ドキュメントの印刷を行う構成により、複雑な出力形態に係る各種属性設定がなされているドキュメントの印刷において、印刷速度の向上を図り、プリンタエンジン速度性能を最大限に発揮できる印刷システムを提供することができる。さらに、上記のようなドキュメント印刷において、事前に最終的な出力形態、使用する用紙枚数、用紙メディア等が把握可能な印刷システムを提供することができる。
【０２９７】
さらに、該当文書印刷前に、印刷用紙枚数などが把握可能になるため、該当文書印刷に係る予定課金状況をみて、事前に印刷続行／キャンセルを可能とする。
【０２９８】
また、通常の文書印刷でも運用できるように、これらの機能を使う／使わない設定も可能とする。
【図面の簡単な説明】
【０２９９】
【図１】図１は、本発明の一実施形態を示す印刷システムの一例を示すシステム構成図ある。
【図２】図１に示したホストコンピュータおよびプリンタにおいて、プリンタＳＤＫ ＡＰＩを使用して、初期化から印刷までの各構成要素の内部および構成要素間の処理の流れを表すブロック図である。
【図３】図１に示したホストコンピュータ及びプリンタのハードウェア接続構成を示すブロック図ある。
【図４】図１に示したプリンタ１０４内の各制御構成を表わすブロック図ある。
【図５】本発明におけるアプリケーションプログラムインタフェース（ＡＰＩ）関数の一例を示した図である。
【図６】本発明におけるアプリケーションプログラムインタフェース（ＡＰＩ）関数の一例を示した図である。
【図７】図１に示したホストコンピュータ上のＯＳ、プリンタドライバプログラム、及びプリンタ上のＯＳ、印刷制御プログラムにおける、各印刷制御処理時のＤＤＩに対応するプリンタＳＤＫ ＡＰＩのコーリングシーケンス図ある。
【図８】本発明の印刷システムにおける第１の制御処理手順の一例を示すフローチャートである。
【図９】本発明の印刷システムにおける第２の制御処理手順の一例を示すフローチャートである。
【図１０】本発明の印刷システムにおける第３の制御処理手順の一例を示すフローチャートである。
【図１１】本発明の印刷システムにおける第４の制御処理手順の一例を示すフローチャートである。
【図１２】本発明の印刷システムにおける第５の制御処理手順の一例を示すフローチャートである。
【図１３】本発明の印刷システムにおける第６の制御処理手順の一例を示すフローチャートである。
【図１４】本発明の印刷システムにおける第７の制御処理手順の一例を示すフローチャートである。
【図１５】本発明に係る印刷システムを構成する情報処理装置（ホストコンピュータ）及び印刷装置（プリンタ）で読み取り可能な各種データ処理プログラムを格納する記憶媒体（記録媒体）のメモリマップを説明する図である。
【符号の説明】
【０３００】
１００  ホストコンピュータシステム
１０１  オペレーティングシステム
１０２  プリンタドライバプログラム
１０３  アプリケーションプログラム
１０４  プリンタ
１０５  オペレーティングシステム
１０６  印刷制御プログラム
１０７  プリンタエンジン制御プログラム
【図１】
2006350443.tif 000003
【図２】
2006350443.tif 000004
【図３】
2006350443.tif 000005
【図４】
2006350443.tif 000006
【図５】
2006350443.tif 000007
【図６】
2006350443.tif 000008
【図７】
2006350443.tif 000009
【図８】
2006350443.tif 000010
【図９】
2006350443.tif 000011
【図１０】
2006350443.tif 000012
【図１１】
2006350443.tif 000013
【図１２】
2006350443.tif 000014
【図１３】
2006350443.tif 000015
【図１４】
2006350443.tif 000016
【図１５】
2006350443.tif 000017