(57)【要約】【課題】  複雑な出力形態に係る各種属性設定がなされているドキュメントの印刷時、印刷速度の向上を図り、プリンタエンジン速度性能を最大限に発揮でき、更に、事前に最終的な出力形態、使用する用紙枚数、用紙メディア等が把握可能な印刷システムを提供する。【解決手段】  アプリケーションプログラムおよびプリンタドライバプログラム、プリンタの印刷制御プログラム間で、相互に各種情報およびデータの送受信が可能なアプリケーションプログラムインターフェース（ＡＰＩ）を用意し、本ＡＰＩ関数を使用して、プリンタは印刷ジョブデータを受信する前に、印刷ジョブの各種グラフィックス制御情報および属性設定情報を受け取り、これらの情報に基づいて、事前に印刷制御に係る最適化処理を行なう。この最適化処理に基づいて、受信した印刷ジョブの印刷制御処理を行なって、該当ドキュメントの印刷を行なう。【選択図】  図１
2007188308.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータシステム上のオペレーティングシステム、アプリケーションプログラム、プリンタドライバプログラムおよび印刷装置から構成される印刷システムにおいて、
前記ホストコンピュータシステム上のオペレーティングシステム、アプリケーションプログラムおよびプリンタドライバプログラムから、文書印刷に係る印刷ジョブ制御処理開始時に、前記印刷装置にジョブ制御開始を通知する手段と、
前記該当印刷ジョブを識別するためのＩＤを前記ジョブ制御開始通知に付加する手段を備え、
一方、前記印刷装置内の印刷を制御する各種プログラムにおいて、前記該当文書印刷ジョブの各種制御処理を開始する前に、前記ジョブ識別ＩＤと一致する該当ジョブの文書印刷に係る文書全体、文書中の章、グループ単位、あるいは各ページ毎の印刷のための各種グラフィックス制御情報および各種属性設定情報を該当ジョブ識別ＩＤを付加し、要求通知する手段を備え、
前記印刷装置からの要求に基づき、ホストコンピュータ側のアプリケーションプログラムおよびプリンタドライバプログラムにおいて、前記ジョブ識別ＩＤに一致する該当ジョブの印刷ジョブ制御処理中に決定される文書全体、文書中の章、グループ単位、あるいは各ページ毎の印刷のための前記各種グラフィックス制御情報および各種属性設定情報に該当ジョブ識別ＩＤを付加し、通知する手段を備えたことを特徴とする印刷システム。
【請求項２】
前記ホストコンピュータシステム上のオペレーティングシステム、アプリケーションプログラム、プリンタドライバプログラムおよび印刷装置間は、各種情報およびデータの送受信を行なう双方向通信手段を備え、
前記双方向通信により、文書印刷に係る各種グラフィックス制御情報および各種属性設定情報を送受信する手段として、前記アプリケーションプログラム、プリンタドライバプログラムおよび印刷装置内のプログラムメモリ上にある各種印刷制御プログラムに、各種情報およびデータの送受信を行なう共通のプログラミング可能なアプリケーションプログラミングインターフェース（ＡＰＩ）を備えたことを特徴とする請求項１に記載の印刷システム。
【請求項３】
前記アプリケーションプログラミングインターフェース（ＡＰＩ）は、アプリケーションプログラム、プリンタドライバプログラムおよび印刷装置において、相互に各種情報および各種データの通知手段として、任意にプログラミング可能な個々の機能毎に関数あるいはデータ形式のインターフェースを備え、
前記アプリケーションプログラムおよびプリンタドライバプログラムを実行・動作するホストコンピュータのオペレーティングシステム上で認識・実行を可能とし、
さらに前記印刷装置を制御する印刷装置内のプログラムメモリ上にある各種プログラムを実行・動作する印刷装置のコンピュータ制御部のオペレーティングシステム上で認識・実行を可能としたことを特徴とする請求項１に記載の印刷システム。
【請求項４】
前記アプリケーションプログラムインタフェース（ＡＰＩ）は、前記各アプリケーションプログラム、プリンタドライバプログラムおよび印刷装置内の各種プログラムから読み込み可能とするプログラムライブラリ形式として提供し、
前記ホストコンピュータ上のアプリケーションプログラムおよびプリンタドライバプログラムおよび印刷装置内の各種印刷制御プログラム双方において、スタティックリンクライブラリとして、あらかじめ各プログラムに内蔵される、あるいはダイナミックリンクライブラリとして、プログラムメモリ上に外部ライブラリファイルをロードして使用する手段を備えたことを特徴とする請求項１に記載の印刷システム。
【請求項５】
前記文書全体、文書中の章、グループ単位、あるいは各ページ毎の印刷のための各種制御情報および各種属性設定情報は、グラフィックス描画方法、画像レンダリング方法、各種グラフィックス制御に係る情報を含むことを特徴とする請求項１に記載の印刷システム。
【請求項６】
ホストコンピュータシステム上のオペレーティングシステム、アプリケーションプログラム、プリンタドライバプログラムおよび印刷装置から構成される印刷システムにおいて、
印刷装置内の印刷制御プログラムは、該当印刷文書の印刷ジョブを受信し、各印刷制御処理を開始する前に、前記ホストコンピュータ側から通知される文書全体、文書中の章、グループ単位、あるいは各ページ毎の印刷のための各種グラフィックス制御情報および各種属性設定情報に基づいて、あらかじめページ展開メモリの確保、画像レイアウト、圧縮画像の伸長モジュールおよび画像レンダリングモジュールの呼び出し、画像展開および圧縮画像の伸長のための作業領域の確保の制御処理を行ない、印刷制御のための最適化処理を行なう手段を備えたことを特徴とする印刷システム。
【請求項７】
前記印刷装置内の印刷制御プログラムは、前記印刷ジョブ識別ＩＤで識別される印刷ジョブ毎に、前記印刷ジョブの各印刷制御に係る前処理を印刷装置内の記憶装置部に、複数のホストコンピュータから通知される前記各種グラフィックス制御および属性設定情報を識別可能にするため、さらにユニークな識別情報を付加して，保存する手段を備えたことを特徴とする請求項６に記載の印刷システム。
【請求項８】
前記ホストコンピュータ上のアプリケーションプログラムおよびプリンタドライバプログラムは、アプリケーションプログラムインターフェース（ＡＰＩ）により、最終的な印刷を行なうための印刷ジョブデータの先頭において、該当する印刷ジョブ識別ＩＤを前記印刷装置に通知する手段を備えたことを特徴とする請求項６に記載の印刷システム。
【請求項９】
印刷装置内の印刷制御プログラムは、印刷ジョブの各印刷制御に係る前処理後、前記ホストコンピュータ上のアプリケーションプログラムおよびプリンタドライバプログラムから通知される印刷ジョブＩＤによって識別された該当印刷ジョブデータを受信し、最適化された状態で、各種印刷制御処理を行ない、文書を印刷する手段を備えたことを特徴とする請求項６に記載の印刷システム。
【請求項１０】
前記アプリケーションプログラムインターフェース（ＡＰＩ）を使用して、該当文書印刷に係る一連の印刷処理において、各情報およびデータに同一の印刷ジョブ識別ＩＤを与え、ホストコンピュータおよび印刷装置間の情報、データの送受信を行なう過程において、同一印刷ジョブ内の処理として完結する手段を備えたことを特徴とする請求項１〜請求項９のいずれかに記載の印刷システム。
【請求項１１】
前記一連の処理について、前記アプリケーションプログラム、プリンタドライバプログラムあるいは、印刷装置上での属性設定手段によって、本処理を行なう／行なわない設定を可能とする手段を備えたことを特徴とする請求項１〜請求項１０のいずれかに記載の印刷システム。
【請求項１２】
前記アプリケーションプログラムインターフェース（ＡＰＩ）から構成されるプログラムライブラリは、ホストコンピュータシステムおよび印刷装置内の印刷制御部が読むことができるプログラムを格納した記憶媒体で供給する手段を備えることを特徴とする請求項１〜請求項１１のいずれかに記載の印刷システム。
【請求項１３】
本発明のアプリケーションプログラムおよびプリンタドライバプログラムは、ホストコンピュータシステムが読むことができるプログラムを格納した記憶媒体で供給する手段を備えることを特徴とする請求項１〜請求項１２のいずれかに記載の印刷システム。
【請求項１４】
前記記憶媒体は、該当ホストコンピュータシステムおよびプリンタに着脱可能であることを特徴とする請求項１３に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラム、プリンタドライバおよび印刷装置からなる印刷システムにおいて、アプリケーションプログラムインターフェース（ＡＰＩ）による印刷制御方法およびそのシステムに関するものである。
【背景技術】
【０００２】
従来のオペレーティングシステム上で実行されるアプリケーションプログラム、プリンタドライバプログラムおよび印刷装置から構成される文書印刷に関して、印刷装置において、ホストコンピュータ側から印刷ジョブデータが送信され、印刷装置内の印刷制御部で印刷データを受信された時点で、印刷・出力のための各種制御処理が行なわれ該当する文書印刷・出力を行なう方法が一般的であった。
又、別の従来例としては、特許文献１をあげることが出来る。
【特許文献１】特開2004-001519号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら上記従来例では、アプリケーションプログラム、プリンタドライバプログラムおよび印刷装置から構成される印刷システムからの印刷を行なう場合、印刷装置において、印刷制御部で印刷データを受信された時点から、印刷・出力のための各種制御処理が行なわれるため、特に複雑な印刷体裁を指示された文書印刷においては、印刷装置から排紙されるまでの時間および速度がかかり、印刷エンジン速度（ｐｐｍ）性能を最大限に発揮できない問題があった。
【０００４】
本発明は上記従来例に鑑みてなされたもので、複雑な出力体裁を指定する文書印刷において、アプリケーションプログラム、プリンタドライバプログラムおよび印刷装置間で利用可能なアプリケーションプログラムインターフェース（ＡＰＩ）を備え、これを使用して文書印刷前に文書全体、文書中の章、グループ単位、あるいは各ページ毎の印刷のための各種グラフィックス制御情報および各種属性設定情報を相互に要求および通知を行ない、事前に印刷装置内の各制御を最適化し、印刷速度性能を向上させることによって、前記課題を解決することを目的としている。
【０００５】
また、通常の文書印刷でも運用できるように、これらの機能を使う／使わない設定も可能とする。
【課題を解決するための手段】
【０００６】
上記課題・目的を達成するために、本発明は以下に示すような構成及び作用からなる。
【０００７】
これらの課題・目的を解決するために、ホストコンピュータシステム上のオペレーティングシステム、アプリケーションプログラム、プリンタドライバプログラムおよび印刷装置から構成される印刷システムにおいて、アプリケーションプログラム、プリンタドライバプログラムおよび印刷装置内のプログラムメモリ上にある各種印刷制御プログラムに、各種情報およびデータの送受信を行なう共通のプログラミング可能なプログラミングインターフェースを備え、アプリケーションプログラム、プリンタドライバおよび印刷装置間で、このプログラムインターフェースを利用し、プログラミングによる各種情報およびデータの送受信を行なう。
【０００８】
このプログラムインターフェースは、アプリケーションプログラム、プリンタドライバプログラムおよび印刷装置内の印刷制御プログラムにおいて、相互に各種情報および各種データの通知手段として、任意にプログラミング可能な関数あるいはデータ形式のアプリケーションプログラムインタフェース（ＡＰＩ）を備え、アプリケーションプログラムおよびプリンタドライバプログラムを実行・動作するホストコンピュータのオペレーティングシステム上で認識・実行を可能とし、さらに印刷装置を制御する印刷装置内のプログラムメモリ上にある各種プログラムを実行・動作する印刷装置のコンピュータ制御部のオペレーティングシステム上で認識・実行を可能とする。
【０００９】
前記アプリケーションプログラムインタフェース（ＡＰＩ）において、ホストコンピュータ側のアプリケーションプログラムおよびプリンタドライバプログラムでの印刷ジョブ制御処理が開始されるタイミングで、ジョブ制御開始を通知する手段と、印刷ジョブを識別するためのＩＤを前記ジョブ制御開始通知に付加する目的・機能を有するインターフェースを備える。
【００１０】
またアプリケーションプログラムインタフェース（ＡＰＩ）において、文書全体、文書中の章、グループ単位、あるいは各ページ毎の印刷のための各種グラフィックス制御情報および各種属性設定情報を要求する手段と、この要求に応じて、前記情報を通知する手段と、ジョブ識別ＩＤを、この情報要求および通知に付加する目的・機能を有するインターフェースを備える。
【００１１】
さらにアプリケーションプログラムインタフェース（ＡＰＩ）は、ホストコンピュータ側のアプリケーションプログラムおよびプリンタドライバプログラムは、該当文書の実際の印刷時に印刷装置に送信する印刷ジョブデータの先頭に、前記付加した同一印刷ジョブＩＤを通知する目的・機能を有するインターフェースを備える。
【００１２】
アプリケーションプログラムおよびプリンタドライバプログラムは、印刷ジョブ処理開始時に、アプリケーションプログラムインタフェース（ＡＰＩ）により、印刷装置に、ホストコンピュータ側で印刷ジョブ処理が開始されたことおよび前記ジョブＩＤを通知し、印刷装置からアプリケーションプログラムインタフェース（ＡＰＩ）により、印刷装置内の印刷制御プログラムが該当印刷文書の各種印刷制御処理を開始する前に、ホストコンピュータ側の文書全体、文書中の章、グループ単位、あるいは各ページ毎の印刷のための前記ジョブＩＤと一致するジョブの各種グラフィックス制御情報および各種属性設定情報を要求して、アプリケーションプログラムおよびプリンタドライバプログラムが、アプリケーションプログラムインタフェース（ＡＰＩ）により、印刷装置側に要求されたジョブＩＤと一致するジョブの文書全体、文書中の章、グループ単位、あるいは各ページ毎の印刷のための各種グラフィックス制御情報および各種属性設定情報を通知する。
【００１３】
印刷装置内の印刷制御プログラムは、該当印刷文書の印刷ジョブを受信し、各印刷制御処理を開始する前に、前記ホストコンピュータ側から通知される文書全体、文書中の章、グループ単位、あるいは各ページ毎の印刷のための各種グラフィックス制御情報および各種属性設定情報に基づいて、あらかじめページ展開メモリの確保、画像レイアウト、圧縮画像の伸長モジュールおよび画像レンダリングモジュールの呼び出し、画像展開および圧縮画像の伸長のための作業領域の確保などの各種最適化のための制御処理を行なう。
【００１４】
このとき印刷装置内の印刷制御プログラムは、印刷ジョブ識別ＩＤで識別される印刷ジョブ毎に、印刷ジョブの各印刷制御に係る前処理を印刷装置内の記憶装置部に、複数のホストコンピュータから通知される前記各種グラフィックス制御および属性設定情報を識別可能にするため、さらにユニークな識別情報を付加して、保存する。
【００１５】
ホストコンピュータ上のアプリケーションプログラムおよびプリンタドライバプログラムは、アプリケーションプログラムインターフェース（ＡＰＩ）により、最終的な印刷を行なうための印刷ジョブデータの先頭において、該当する印刷ジョブ識別ＩＤを前記印刷装置に通知する。
【００１６】
印刷装置内の印刷制御プログラムは、印刷ジョブの各印刷制御に係る前処理後、前記印刷ジョブＩＤによって識別される該当印刷ジョブデータを受信し、最適化された状態で、各種印刷制御処理を行ない、文書を印刷する構成および作用からなる。
【発明の効果】
【００１７】
以上説明したように、本発明にしたがえば、プリンタ、プリンタドライバプログラムおよびアプリケーションプログラム間において、相互に各種情報およびデータの送受信可能で、ホストコンピュータ側からドキュメント印刷に係る各種グラフィックス制御および属性設定情報を、実際の印刷ジョブデータを送信する前に、プリンタ側に通知するアプリケーションプログラムインターフェースを用意することによって、プリンタ側で事前に印刷制御の最適化処理が行なうことが可能となり、複雑な体裁、出力形態の属性設定がされているドキュメントの印刷においても、十分な印刷速度を確保でき、印刷エンジン速度（ｐｐｍ）性能を最大限に発揮することが可能となる。
【発明を実施するための最良の形態】
【００１８】
次に、本発明の詳細を実施例の記述に従って説明する。
【００１９】
以下、添付図面にしたがって本発明の実施形態を詳細に説明する。
【００２０】
（実施の形態１）
［本実施の形態における動作例の概略］
以下にホストコンピュータシステム上にオペレーティング（ＯＳ）、ドキュメント作成・印刷アプリケーションプログラム、プリンタドライバプログラムおよびこれに接続する印刷装置（プリンタ）から構成されるシステムにおいて、アプリケーションプログラムからのドキュメント印刷指示に基づき、アプリケーションプログラムインターフェース（ＡＰＩ）を使用し、プリンタドライバプログラムからプリンタ内の印刷制御部に印刷ジョブ制御開始を通知、プリンタ内の印刷制御部より、プリンタドライバプログラムにグラフィックス制御情報を要求し、これに応じてプリンタドライバプログラムからプリンタにグラフィックス制御情報を通知する。プリンタはこの情報に基づいて、ドキュメント印刷前に、該当する印刷ジョブに係る各種最適化処理を行なって、実際の印刷ジョブデータを受信して、ドキュメント印刷を行なう例を示す。
【００２１】
［ＯＳ、アプリケーション、プリンタドライバおよびプリンタのシステム構成の説明（図１）］
図１は本発明の実施形態の基本構成図で、本実施形態のオペレーティングシステム（ＯＳ）、ドキュメント作成・印刷アプリケーションプログラム、プリンタドライバプログラムおよびこれに接続する印刷装置（プリンタ）から構成されるシステムにおいて、各要素間のアプリケーションプログラムインターフェース（ＡＰＩ）の流れおよび各種データの流れを表わす図面である。
【００２２】
１００はホストコンピュータシステムで、オペレーティングシステム（ＯＳ）１０１、プリンタドライバプログラム１０２およびドキュメント作成・印刷アプリケーションプログラム１０３がこのプログラムメモリ上で動作・実行される。
【００２３】
１０４は前記ホストコンピュータシステム１００に接続されるプリンタ、１０５は各種制御プログラムの動作環境となるリアルタイム・オペレーティングシステム（ＯＳ）、１０６は、各種印刷制御を行なう印刷制御プログラム、１０７はプリンタエンジン制御プログラムである。１０８はプリンタ１０４から出力されるドキュメント印刷である。
【００２４】
次に本システムの動作・作用について詳細に説明する。
【００２５】
ホストコンピュータ１００のプログラムメモリ上で動作するオペレーティングシステム１０１上で実行されるアプリケーションプログラム１０３が初期化される時点で、プリンタドライバ１０２が、オペレーティングシステム１０１へロードされ、アプリケーションプログラム１０３からもプリンタドライバ１０２と各種情報およびデータの送受信が可能となる。
【００２６】
また、この初期化時アプリケーションプログラム１０３およびプリンタドライバプログラム１０２において、アプリケーションプログラムインターフェース（ＡＰＩ）となるプログラム関数を含むライブラリをロードする。
【００２７】
一方、プリンタ１０４においては、プリンタ１０４起動時に、プリンタ１０４のプログラムメモリ上で動作するリアルタイム・オペレーティングシステム１０５上で実行される印刷制御プログラム１０６初期化時に、前記同様にアプリケーションプログラムインターフェース（ＡＰＩ）となるプログラム関数を含むライブラリをロードする。
【００２８】
なお、前記アプリケーションプログラムインタフェース（ＡＰＩ）およびこれらのプログラム関数群から構成されるライブラリは、ホストコンピュータ１００上のオペレーティングシステム１０１、プリンタドライバプログラム１０２、アプリケーションプログラム１０３およびプリンタ１０４上のオペレーティングシステム１０５、印刷制御プログラム１０６において、認識可能なプログラム群で、前記各要素間で相互にデータおよび情報の受け渡しが可能である。
【００２９】
以降、本例では前記アプリケーションプログラムインタフェース（ＡＰＩ）・ライブラリをプリンタＳＤＫ（Software Development Kit）ＡＰＩと表記する。
アプリケーションプログラム１０３は、テキスト、グラフィックス、イメージ描画などのドキュメント印刷指示をオペレーティングシステム１０１が有するＧＤＩ（Graphical Device Interface）で提供される ＳＤＫ ＡＰＩを使用して行なう。
【００３０】
前記ＧＤＩは、ＤＤＩ（Device Driver Interface）に変換し、プリンタドライバプログラム１０２にテキスト、グラフィックス、イメージの描画指示を行なう。
【００３１】
このとき、前記ＧＤＩは同時にプリンタドライバプログラム１０２およびプリンタ１０４が有する各種機能および能力に合わせて、ドキュメントの印刷体裁を決定する各種属性設定指示も行なう。
【００３２】
プリンタドライバプログラム１０２は、これらの各指示を最初に受けた時点で、プリンタＳＤＫ  ＡＰＩを使用して、印刷ジョブの制御が開始されたことを、ジョブを識別するＩＤ情報と共に、プリンタ１０４内の印刷制御プログラム１０６に通知する。
【００３３】
前記通知を受けたプリンタ１０４内の印刷制御プログラム１０６は、印刷ジョブデータを受信し、ドキュメントを印刷する前に、該当印刷ジョブの各種属性設定情報を事前に受け取るために、同じくプリンタＳＤＫ  ＡＰＩを使用し、前記該当ジョブを識別するための同一ジョブ識別ＩＤ情報と共に、属性設定情報要求を行なう。
【００３４】
プリンタドライバプログラム１０２は、前記プリンタ１０４からの属性設定情報要求に基づいて、印刷ジョブ制御開始時に設定される該当ドキュメント印刷ジョブ全般に関連する各種属性設定情報をプリンタＳＤＫ  ＡＰＩを使用して、前記同一のジョブ識別ＩＤ情報と共に、プリンタ１０４内の印刷制御プログラム１０６に通知する。
【００３５】
また、アプリケーションプログラム１０３およびプリンタドライバプログラム１０２間で、印刷ジョブ制御処理が進み、各ページ、各章あるいは各グループに関連する各種属性設定情報が決定した時点においても、前記同様、各種属性設定情報をプリンタＳＤＫ  ＡＰＩを使用して、前記同一のジョブ識別ＩＤ情報と共に、プリンタ１０４内の印刷制御プログラム１０６に通知する。
【００３６】
このとき、ホストコンピュータ１００およびプリンタ１０４間は、ネットワーク接続あるいは、セントロニクス、ＵＳＢインターフェースによるローカル接続などにより、双方向通信を行ない、プリンタＳＤＫ  ＡＰＩでのデータおよび情報の送受信を行なう。
【００３７】
ここで、前記各種属性設定情報とは、文書全体、文書中の章、グループ単位、あるいは各ページ毎の印刷のための各種グラフィックス制御情報および各種属性設定情報は、フォント、モノクロ／カラー印刷、解像度、イメージ／ベクタグラフィックスなどのグラフィックス描画方法、画像レンダリング方法、画像圧縮方法などの各種グラフィックス制御に係る情報である。
【００３８】
プリンタ１０４内の印刷制御プログラム１０６は、該当印刷文書の印刷ジョブを受信し、各印刷制御処理を開始する前に、前記ホストコンピュータ１００上のプリンタドライバプログラム１０２から通知される文書全体、文書中の章、グループ単位、あるいは各ページ毎の印刷のための各種グラフィックス制御情報および各種属性設定情報に基づいて、あらかじめページ展開メモリの確保、画像レイアウト、圧縮画像の伸長モジュールおよび画像レンダリングモジュールの呼び出し、画像展開および圧縮画像の伸長のための作業領域の確保などの各種最適化のための制御処理を行なう。
【００３９】
このときプリンタ１０４内の印刷制御プログラム１０６は、印刷ジョブ識別ＩＤで識別される印刷ジョブ毎に、印刷ジョブの各印刷制御に係る前処理をプリンタ１０４内のＲＡＭ、ハードディスクなどの記憶装置部に、複数のホストコンピュータから通知された場合においても、前記各種グラフィックス制御および属性設定情報を識別可能にするため、さらにプリンタ１０４内でユニークな識別情報を付加して、保存する。
【００４０】
プリンタドライバプログラム１０２は、プリンタＳＤＫ  ＡＰＩを使用し、最終的な印刷を行なうための印刷ジョブデータと共にジョブの先頭において、該当するドキュメントの印刷ジョブ識別ＩＤをオペレーティングシステム１０１のスプーラを介してプリンタ１０４に通知し、さらに印刷ジョブデータをプリンタ１０４に送信する。
【００４１】
プリンタ１０４内の印刷制御プログラム１０６は、印刷ジョブの各印刷制御に係る前処理後、前記印刷ジョブＩＤによって識別される該当印刷ジョブデータを受信し、最適化された状態で、各種印刷制御処理を行ない、最終的な描画イメージをオペレーティングシステム１０５を介して、エンジン制御プログラムに送り、該当ドキュメントの印刷出力１０８を行なう構成からなる。
【００４２】
［ホストコンピュータおよびプリンタにおける各処理の流れを表すブロック図の説明（図２）］
図２は、本発明に係るオペレーティングシステム、アプリケーションプログラム、プリンタドライバプログラムから成るホストコンピュータおよびオペレーティングシステム、印刷制御プログラム、プリンタエンジン制御プログラムから成るプリンタにいて、プリンタＳＤＫ ＡＰＩを使用して、初期化から印刷までの各構成要素の内部および構成要素間の処理の流れをあらわすブロック図である。
【００４３】
２００は、オペレーティングシステム、アプリケーションプログラムおよびプリンタドライバプログラムから構成されるホストコンピュータ、２０１は、オペレーティングシステム、印刷制御プログラムおよびプリンタエンジン制御プログラムから構成されるプリンタ、２０２はプリンタからのドキュメント出力である。
【００４４】
本発明のホストコンピュータ２００上のアプリケーションプログラムおよびプリンタドライバプログラム、プリンタ２０１内の印刷制御プログラム間におけるプリンタＳＤＫ  ＡＰＩを利用した各種情報のやり取りおよびデータ送信、ドキュメント印刷までの流れについて、詳細に説明する。
【００４５】
まず、ホストコンピュータ２００上のアプリケーションプログラムにおいて、ドキュメント生成、編集、印刷などの各種動作処理に要するメモリ領域の確保、各種属性パラメータの初期化、デバイスコンテキストの作成、フォント／ペン／ブラシなどの描画オブジェクト作成などの初期化処理を行なう。
【００４６】
ホストコンピュータ２００上のオペレーティングシステムのＧＤＩにおいても、前記アプリケーションプログラムのドキュメント生成、編集、印刷のための各種初期化処理を受けて、ＧＤＩにおける各種動作処理に要するメモリ領域の確保、各種属性パラメータの初期化処理を行なう。
【００４７】
同様にホストコンピュータ２００上のプリンタドライバプログラムにおいても、前記アプリケーションプログラムおよびＧＤＩのドキュメント印刷のための各種初期化処理を受けて、プリンタドライバプログラムにおける各種動作処理に要するメモリ領域の確保、各種属性パラメータの初期化処理を行なう。このとき、前記プリンタドライバプログラムにおいて、プリンタＳＤＫライブラリをロードする。
【００４８】
一方、プリンタ２０１においても、同様にオペレーティングシステム、印刷制御プログラムおよびエンジン制御プログラムの各種動作処理に要するメモリ領域の確保、各種属性パラメータの初期化処理を行なう。このとき、前記印刷制御プログラムにおいても、プリンタＳＤＫライブラリをロードする。
【００４９】
次に、ホストコンピュータ２００上のアプリケーションプログラムから、ＳＤＫＡＰＩを使用して、ＧＤＩに対して、デバイスコンテキストハンドルであるプリンタコンテキストハンドルを生成し、該ハンドルにテキスト、図形、イメージの各オブジェクト描画を開始することによって、印刷指示となる。前記ＧＤＩは、前記各オブジェクト描画指示をＤＤＩに変換し、プリンタドライバプログラムにおいて、印刷ジョブの制御が開始される。このとき、プリンタＳＤＫ  ＡＰＩを使用して、印刷ジョブ制御が開始されたことをプリンタ２０１内の印刷制御プログラムに通知する。
【００５０】
プリンタ２０１内の印刷制御プログラムは、前記印刷ジョブ制御開始通知を受けて、印刷ジョブデータを受信してドキュメント印刷を行なう前に、事前に各種ジョブ制御を開始する。
【００５１】
続いて、前記印刷制御プログラムは、プリンタＳＤＫ  ＡＰＩを使用して、ホストコンピュータ２００上のプリンタドライバプログラムに対して、該当する印刷ジョブのジョブ制御情報の要求を行なう。
【００５２】
ホストコンピュータ２００上のプリンタドライバは、アプリケーションプログラムからの各オブジェクト描画指示に基づいて、ジョブおよびページ制御を開始して、前記プリンタ２０１からのジョブ制御情報要求に応じて、ジョブ全体およびグループ、章、ページ毎に関連するフォント、モノクロ／カラー印刷、解像度、イメージ／ベクタグラフィックスなどのグラフィックス描画方法、画像レンダリング方法、画像圧縮方法などの各種グラフィックス制御情報および各種属性設定情報を、前記同様にプリンタＳＤＫ  ＡＰＩを使用して、プリンタ２０１側に通知する。
【００５３】
プリンタ２０１内の印刷制御プログラムは、前記各種グラフィックス制御情報および属性設定情報の通知に基づき、フォント、モノクロ／カラー印刷、解像度、イメージ／ベクタグラフィックスなどのグラフィックス描画方法、画像レンダリング方法、画像圧縮方法などの各種最適化のための制御処理を行なう。
【００５４】
ホストコンピュータ２００上のアプリケーションプログラムによるＳＤＫ  ＡＰＩをしてのＧＤＩに対するドキュメント印刷に係る各種オブジェクト描画指示およびドキュメントの出力形態に基づく各種印刷属性設定は、前記ＧＤＩにおいて、ＤＤＩに変換され、プリンタドライバプログラムに対してコールすることによって、プリンタドライバプログラムは、文字テキスト、図形、イメージの各描画処理を行なう。
【００５５】
さらにプリンタドライバプログラムは、前記各オブジェクト描画処理の中で、プリンタ２０１に係る印刷制御命令（ＰＤＬデータ）を生成し、スプーラに送信する。
【００５６】
プリンタ２０１内の印刷制御プログラムは、前記ホストコンピュータ２００からの印刷ジョブデータである印刷制御命令（ＰＤＬデータ）を受信すると共に、前記事前に取得したジョブ、グループ、章、あるいはページ毎の各種グラフィックス制御情報および属性設定情報による最適化処理を読み出して、印刷制御処理を行なう。
【００５７】
前記処理結果に基づき、最終的な画像をプリンタ２０１内のエンジン制御プログラムに送り、画像出力を行なって、ドキュメント印刷２０２を行なう構成からなる。
【００５８】
［ホストコンピュータおよびプリンタ接続構成図の説明（図３）］
図３は、ホストコンピュータ１００およびプリンタ１０４の接続構成を示す図である。
【００５９】
ホストコンピュータシステム３００とこれに対して、入力を行なうキーボード、マウスなどの入力３０１、表示出力を行なう表示装置（ディスプレイ）３０２、ファイルの入出力を行なうディスク３０３および該当ホストコンピュータシステム３００に接続されるプリンタ３１２からなるシステムにおいて、ホストコンピュータシステム３００内のプログラムメモリ（ＲＡＭ）３０６上にある、本発明のオペレーティングシステム１０１，プリンタドライバプログラム１０２、アプリケーションプログラム１０３およびプリンタ３１２内のプログラムメモリＲＯＭ  ３１５、ＲＡＭ  ３１６上にある印刷制御プログラム、プリンタＳＤＫライブラリで、一連の印刷制御処理を行ない、プリンタ３１２からドキュメント出力を行なう構成からなる。
【００６０】
図３において、さらに詳細にホストシステム３００の構成を説明する。
【００６１】
３０４はホストシステムおよび接続される各入出力装置の制御や、入力された指示に従って出力制御などの一連の処理、各種プログラムを実行するＣＰＵ、３０５は、ＣＰＵ ３０４を動作させるためのオペレーティングシステムなど種々の基本プログラムを格納するメモリ ＲＯＭである。３０６は、ＣＰＵ ３０４が本発明であるプリンタに係る各種印刷属性設定、ドキュメント印刷を実行／動作させる各種処理のための作業領域として用いられるメモリであるＲＡＭである。
【００６２】
３０７は、ホストコンピュータシステム３００に接続され、入力を行なうキーボード、マウスなどの入力装置３０１のインターフェースを備えるキーボード・コントローラ、３０８は、ディスプレイ３０２への表示出力を行なうためのインターフェースを備えるディスプレイ・コントローラ、３０９は、ディスク３０３への入出力インターフェースを備えるディスク・コントローラである。
【００６３】
３１０は、ホストコンピュータシステム３００とプリンタ３１２を接続して、通信を行なうための通信プロトコルを備えたネットワーク回線を介して、入出力を行なうインターフェースである。３１１は各構成要素を接続するＣＰＵバスである。
【００６４】
プリンタ３１２の構成を詳細に説明する。
【００６５】
３１４はプリンタに接続される各種入出力の制御や、入力された指示に従って、印刷制御などの一連の処理、通信制御制御処理などのプログラムを実行するＣＰＵ、３１５は、各入出力の制御、通信制御処理、入力された指示に従って印字制御など一連の処理、制御コマンド解析処理などプリンタを動作させるプログラム、各種データなどが格納されているメモリであるＲＯＭ、３１６は、ＣＰＵ ３１４が各種プログラムで実行・処理を行なうための作業領域として用いられるメモリであるＲＡＭである。３１７は、ホストコンピュータシステム３００とプリンタ３１２を接続して、データのやり取りを行なうための通信プロトコルを備えたネットワーク回線を介して、入出力を行なうインターフェースである。３１８は、ディスク３１３への入出力インターフェースを備えるディスク・コントローラである。３１９は、機構的にパターン出力を行なうビデオインターフェースで印刷装置駆動系（エンジン部）３２１とのデータおよび信号のやり取りを行なう入出力インターフェースを備えるエンジン制御処理部である。３２０は、各構成要素を接続するＣＰＵバスである。
【００６６】
ホストコンピュータシステム３００内のプログラムメモリ ＲＡＭ ３０６上にあるＳＤＫライブラリを含むオペレーティングシステム、アプリケーションプログラム、プリンタドライバプログラムおよびプリンタＳＤＫライブラリの各制御処理および動作を詳細に説明する。
【００６７】
まず、アプリケーションプログラムにおける動作について説明する。
【００６８】
ホストコンピュータシステム３００内のＲＡＭ ３０６上にあるアプリケーションプログラムは、ドキュメント作成、体裁加工および印刷出力のための各種初期化処理を行なう過程で、オペレーティングシステムを介してプリンタドライバプログラムのロードおよび起動を行なう。
【００６９】
ここで前記アプリケーションプログラムは、ＳＤＫ ＡＰＩを使用して、ＧＤＩを介して、プリンタデバイスに対して、テキスト／図形／イメージの各オブジェクト描画指示およびドキュメント出力形態を決定する各種属性設定を指定する。
【００７０】
次に、プリンタドライバプログラムにおける動作について説明する。
【００７１】
ホストコンピュータシステム３００内のＲＡＭ ３０６上にあるプリンタドライバは、前記アプリケーションプログラムの起動初期化時に、オペレーティングシステム上にロードされ、起動する。
【００７２】
前記アプリケーションプログラムにおけるドキュメント作成、印刷のための各種初期化処理に基づき、ＳＤＫ ＡＰＩがコールされることによって、オペレーティングシステムのＧＤＩを介してＤＤＩに変換され、各種ＤＤＩ関数がコールされることによって、プリンタドライバプログラムでの初期化処理および各種制御処理が開始される。
【００７３】
前記初期化処理において、プリンタＳＤＫライブラリもプリンタドライバプログラム内にロードされる。
【００７４】
以降、ホストコンピュータシステム３００およびプリンタ３１２は、双方向通信プロトコルにて、ＡＰＩを使用してのデータおよび情報の送受信を相互に行なう。
【００７５】
プリンタドライバプログラム側では、まず前記初期化処理において、プリンタＳＤＫ ＡＰＩを使用して、プリンタ３１２側に印刷ジョブ制御が開始されたことを通知する。
【００７６】
次にプリンタ３１２側より、印刷ジョブデータを受ける前に、事前に印刷ジョブ制御情報および各種属性設定情報の要求がプリンタＳＤＫ  ＡＰＩによって行なわれる。
【００７７】
プリンタドライバプログラムは、この要求に基づいて、ジョブ全体に関連する制御処理および各グループ単位、章単位、ページ単位に関連する制御処理時に、それぞれこれら制御処理に係る制御情報および各種属性設定情報をプリンタＳＤＫ  ＡＰＩを使用して、プリンタ３１２側に通知する。
【００７８】
続いて、プリンタドライバプログラムは、前記各制御処理の結果に基づいて、ドキュメント出力形態に係る各種属性設定および各オブジェクト描画指示により、印刷制御命令（ＰＤＬデータ）を生成し、これらの印刷ジョブデータをオペレーティングシステムのスプーラを介して、プリンタ３１２に送信する。
【００７９】
プリンタ３１２における動作について説明する。
【００８０】
プリンタ３１２内のプログラムメモリＲＯＭ ３１５上にある印刷制御プログラムにおける印刷出力制御処理によるドキュメントの出力動作を詳細に説明する。
【００８１】
まず、プリンタ３１２起動時の初期化処理時に、同じくプログラムメモリＲＯＭ  ３１５にあるプリンタＳＤＫライブラリをロードする。
【００８２】
ここで、前記プリンタＳＤＫライブラリは、プログラムメモリＲＡＭ  ３１６あるいは、ハードディスク３１３に置いてもよい。
【００８３】
印刷制御プログラムは、プリンタドライバプログラムから通知されたホストコンピュータシステム３００側での印刷ジョブ制御開始通知に基づいて、ホストコンピュータシステム３００側から、印刷ジョブデータを受信する前に、事前にプリンタＳＤＫ  ＡＰＩを使用して、印刷ジョブ制御情報および印刷に係る各種属性設定情報を要求する。
【００８４】
前記要求に基づいて、ホストコンピュータシステム３００側から同じくプリンタＳＤＫ  ＡＰＩを使用して、通知されるグラフィックス制御情報および印刷に係る各種属性設定情報は、前記各ＡＰＩに情報として付加されるジョブ識別ＩＤによって識別される。
【００８５】
該当印刷ジョブのグラフィックス制御情報および各種属性設定情報に基づき、印刷前の最適化処理を行ない、処理結果を前記識別されるジョブ毎に、プログラムメモリＲＡＭ  ３１６あるいはハードディスク３１３の記憶装置部に保存する。
【００８６】
ホストコンピュータシステム３００内のプログラムメモリＲＡＭ ３０６上にあるプリンタドライバプログラムから送信されるプリンタ３１２を初期化する制御命令を受信し、ジョブの初期化処理を行なう。
【００８７】
続いて、ホストコンピュータシステムから、プリンタ３１２に印刷を行なうために送信されてくるプリンタ印刷制御命令の入力を行なう印刷制御命令入力処理、前記入力されたプリンタ印刷制御命令及び各種設定パラメータなどを解析する制御設定パラメータ解析処理、前記印刷制御命令、制御設定パラメータに基づいて、ビットマップを生成し、ビットマップメモリに展開するビットマップ展開処理において一連の処理を施す。
【００８８】
このとき、前記事前に該当印刷ジョブの各種ジョブ制御情報および属性設定情報により、各種最適化された処理をプログラムメモリＲＡＭ  ３１６あるいはハードディスク３１３の記憶装置部から読み込んで、前記一連の処理を行なう。
【００８９】
次にエンジン制御処理部と入出力を行なうビデオインターフェース３１９を通して、印字出力装置駆動系（エンジン部）３２１に前記生成されたビットマップ・データを送信して、ドキュメントを出力する３２２。
【００９０】
ここでホストコンピュータシステム３００の通信インターフェース３１０およびプリンタ３１２の通信インターフェース３１７で構築されるＴＣＰ／ＩＰなどの通信プロトコルを備えたネットワークに替えて、ＵＳＢ、セントロニクスインタフェース、シリアルインタフェース、ＳＣＳＩなどの通信プロトコルを備えた各種インターフェースにおいても適用可能である。
【００９１】
［プリンタおよびプリンタ内の各制御部を表わす構成の説明（図４）］
図４は、本発明のプリンタ内の各制御構成を表わす図である。
【００９２】
プリンタ４００において、４０１はＰＤＬコントローラ部で、ホストコンピュータとの接続手段であるインターフェース（Ｉ／Ｆ）部４０２、受信データなどを一時的に保持管理するための受信バッファ４１０、送信データなどを一時的に保持管理するための送信バッファ４１１、受信データのデータ種別を一時的に解析するデータ解析部４１２、受信データを解析した結果、ＰＤＬデータであった場合に、ＰＤＬの解析を行なうＰＤＬ解析部４１３、描画処理実行部４１４、印刷制御処理実行部４１５およびページメモリ４１６から構成される。
【００９３】
また、プリンタ４００のオペレーションパネル４２０は、プリンタ４００の各種状態表示および各種設定を行なうためのものである。出力制御部４１７は、ページメモリ４１６の内容をビデオ信号に処理変換する。
【００９４】
プリンタエンジン部４１８は、出力制御部４１７から受け取ったビデオ信号を用紙に画像形成および排出する印刷機構部である。
【００９５】
インターフェース（Ｉ／Ｆ）部４０２は、ホストコンピュータとの印刷ジョブデータの送受信の他に、本発明のプリンタＳＤＫ  ＡＰＩによる各種データおよび情報の送受信を行なう双方向通信手段である。通信プロトコルとして、ネットワーク接続を構築するＴＣＰ／ＩＰ、ＳＭＢプロトコル、セントロニクス、ＵＳＢ、Ｉｒ、ｉＬＩＮＫなどのローカル接続を構築するＩＥＥＥ−１２４８／１３９４に準拠した通信を可能とする。
【００９６】
インターフェース（Ｉ／Ｆ）部４０２を通して受信した各種データおよび情報は、これらのデータおよび情報を一時的に保持する記憶手段である受信バッファ４１０に逐次蓄積され、必要に応じて所定のバイト数がデータ解析部４１２によって、読み出され処理される。
【００９７】
データ解析部４１２では、受信データが印刷制御命令となるＰＤＬデータを含む、各種属性設定情報および文字コード、イメージなどの描画データと、プリンタＳＤＫ  ＡＰＩとを判別・分離し、データの処理先を振り分けるデータ振り分け手段として機能する。
【００９８】
データ解析部４１２が受信したデータが、ＰＤＬデータを含む各種属性設定情報と判別した場合には、ＰＤＬ解析部４１３を経て、印刷制御処理実行部４１５に、ＰＤＬデータを含む描画データと判別した場合には、ＰＤＬ解析部４１３を経て、描画処理実行部４１４に振り分けられ、各処理を実行する。
【００９９】
プリンタＳＤＫ  ＡＰＩと判別された場合には、印刷制御処理実行部４１５に振り分けられ、以降の処理を実行する。
【０１００】
なお、これらの振り分け処理は、ジョブ単位、グループ単位、章単位あるいはページ単位として処理することが可能である。
【０１０１】
ＰＤＬ解析部４１３は、データ解析部４１２から転送されるＰＣＬ、ＬＩＰＳなどのＰＤＬコマンドデータおよびＰＪＬなどの印刷ジョブ制御言語に準じたコマンドデータとして解析される。解析された結果に基づいて、文字／図形／イメージなどの描画に係るコマンドデータは、中間データとして、例えば、ディスプレイリストとして描画処理実行部４１４に送って処理する。描画処理実行部４１４では、文字／図形／イメージの各オブジェクトをビットイメージに変換し、ページメモリ４１６に逐次展開処理を行ない、出力制御部４１７に画像転送を行なう。
【０１０２】
また、描画以外の各種グラフィックス制御および属性を決定するフォント、モノクロ／カラー印刷、解像度、イメージ／ベクタグラフィックスなどのグラフィックス描画方法、画像レンダリング方法、画像圧縮方法などのコマンドデータは、印刷制御処理実行部４１５に送り、各処理を行なう。
【０１０３】
一方、データ解析部４１２からプリンタＳＤＫ  ＡＰＩとして送られた印刷制御処理実行部４１５においては、コールされるプリンタＳＤＫ  ＡＰＩの種類に応じて、各処理を行なう。
【０１０４】
印刷制御処理実行部４１５は、ホストコンピュータからのプリンタＳＤＫ  ＡＰＩによる印刷ジョブ制御開始通知を受け、プリンタＳＤＫ  ＡＰＩによるグラフィックス制御情報要求する関数をコールし、送信バッファ４１１およびインターフェース（Ｉ／Ｆ）部４０２を介して、ホストコンピュータ側に送信する。さらに前記要求に基づき、事前にホストコンピュータ側からプリンタＳＤＫ  ＡＰＩによるグラフィックス制御情報および各種属性設定情報の通知を受ける。後に受信する該当ドキュメントの印刷ジョブデータに備え、事前に前記各種グラフィックス制御および属性を決定する各属性に係る最適化処理を行ない、処理結果を各ジョブ毎に保存する。続いて、印刷ジョブデータを受信するとともに、該当ジョブの最適化処理結果を読み出し、印刷制御処理を実行して、出力制御部４１７に送る。
【０１０５】
以上の各処理を実行し、出力制御部４１７よりプリンタエンジン部４１８に画像転送を行なうことによって、目的のドキュメント印刷出力を行なう。
【０１０６】
なお、本発明において、ＰＤＬコントローラ４０１内のデータ解析部４１２、ＰＤＬ解析部４１３、描画処理実行部４１４および印刷制御処理実行部４１５における各処理実行プログラムを印刷制御プログラム１０６、プリンタ４００内の出力制御部４１７の処理を実行するプログラムをエンジン制御プログラム１０７として定義している。
【０１０７】
［アプリケーションプログラムインターフェース（ＡＰＩ）の関数例の説明（図５〜図６）］
図５および図６は、本発明のアプリケーションプログラムインタフェース（ＡＰＩ）関数の一例を示したものである。プリンタＳＤＫ ＡＰＩである印刷ジョブ制御開始を通知するPD_FuncJobStart( ) 関数、グラフィックス制御情報を要求するPP_FuncGetGraphicsInfo( )関数、グラフィックス制御情報を通知するPD_FuncSendGraphicsInfo( )関数および印刷ジョブを識別するためのPD_FuncSendJob( )関数である。
【０１０８】
５０１は、図１のプリンタドライバプログラム１０２において、アプリケーションプログラム１０３のドキュメント印刷指示に基づいて、印刷ジョブ制御処理が開始されるタイミングで、プリンタ１０４に印刷ジョブ制御処理が開始されたことを通知するプリンタＳＤＫ ＡＰＩであるPD_FuncJobStart( )関数である。
例えば、本関数例では、関数パラメータとして、本関数の実行作業領域としてのメモリ領域のアドレスであるhHandle、プリンタＳＤＫ  ＡＰＩにおける機能識別を表わすItemID、ジョブを識別するためのジョブ識別ＩＤを指定するlpJobID、バッファアドレス指すpItemを定義して構成している。
【０１０９】
前記ジョブ識別ＩＤを指定するlpJobIDパラメータは、印刷ジョブ制御処理開始通知、印刷ジョブ制御情報要求、印刷ジョブ制御情報通知および印刷ジョブデータ送受信の一連の過程において、複数ジョブ印刷時の別印刷ジョブの情報およびデータの混在を防ぐために、１つのジョブに対して１つのＩＤを指定することによって、動作させる。
【０１１０】
本関数をコールされたプリンタ１０４内の印刷制御プログラム１０６は、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返すことで完了する。
【０１１１】
５０２は、図１のプリンタ１０４内の印刷制御プログラム１０６において、プリンタドライバプログラム１０２からの印刷ジョブ制御処理開始通知に基づいて、グラフィックス制御情報を要求するプリンタＳＤＫ ＡＰＩであるPP_FuncGetGraphicsInfo( )関数である。
【０１１２】
プリンタドライバプログラム１０２から前記PD_FuncJobStart( )関数５０１のコールに基づき、プリンタ１０４内の印刷制御プログラム１０６は、該当する印刷ジョブの事前最適化制御処理を行なうための記憶装置部の初期化、グラフィックス制御情報および各種属性設定情報の受付などの準備を行ない、PP_FuncGetGraphicsInfo( )関数５０２をコールする。
【０１１３】
例えば、本関数例では、関数パラメータとして、本関数の実行作業領域としてのメモリ領域のアドレスであるhHandle、プリンタＳＤＫ  ＡＰＩにおける機能識別を表わすItemID、ジョブを識別するためのジョブ識別ＩＤを指定するlpJobID、バッファアドレス指すpItemを定義して構成している。
【０１１４】
本関数をコールされたプリンタドライバプログラム１０２は、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返すことで完了する。
【０１１５】
５０３は、図１のプリンタドライバプログラム１０２において、ドキュメント印刷に係る各種グラフィックス制御および属性を決定するグラフィックス制御情報および各種属性設定情報を、プリンタ１０４内の印刷制御プログラム１０６に通知するプリンタＳＤＫ ＡＰＩであるPD_FuncSendGraphicsInfo( )関数である。
【０１１６】
ここで、各種グラフィックス制御および属性を決定するグラフィックス制御情報および各種属性設定情報とは、ジョブ全体／グループ単位／章単位／ページ単位で設定されるフォント、モノクロ／カラー印刷、解像度、イメージ／ベクタグラフィックスなどのグラフィックス描画方法、画像レンダリング方法、画像圧縮方法などの各種グラフィックス制御および属性設定情報である。
【０１１７】
例えば、本関数例では、関数パラメータとして、本関数の実行作業領域としてのメモリ領域のアドレスであるhHandle、プリンタＳＤＫ  ＡＰＩにおける機能識別を表わすItemID、ジョブを識別するためのジョブ識別ＩＤを指定するlpJobID、ジョブ全体に関連する各種グラフィックス制御情報および属性設定情報を格納するバッファアドレス指すpGraphicsInfoを定義して構成する。
【０１１８】
本関数のパラメータpGraphicsInfoは、プリンタドライバプログラム１０２で一時確保したメモリバッファのポインタを指すパラメータとしてGRAPHICSINFOで型定義されるプログラム構造体にジョブ全体／グループ単位／章単位／ページ単位で関連する各種グラフィックス制御情報および属性設定情報を代入して、本関数をコールして、前記情報をプリンタ１０４に送信することで前記印刷制御プログラム１０６に通知する。
【０１１９】
本関数をコールされたプリンタ１０４内の印刷制御プログラム１０６は、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返すことで完了する。
【０１２０】
６０１は、図１のプリンタドライバプログラム１０２において、印刷ジョブデータとして、印刷制御命令であるＰＤＬデータおよび描画データをプリンタ１０４に送信する直前に、該当ドキュメントの印刷ジョブであることを識別するために、前記グラフィックス制御情報通知までの一連の処理のジョブ識別と同一ジョブデータであることを、プリンタ１０４内の印刷制御プログラム１０６に通知するプリンタＳＤＫ ＡＰＩであるPD_FuncSendJob( )関数である。
【０１２１】
本関数のコールとともに、印刷ジョブデータをプリンタ１０４に送信することによって、プリンタ１０４側では、複数のクライアントあるいはプリントサーバから、本発明の印刷システムにおいて、複数の印刷ジョブを受信しても、内部的にジョブの識別が可能となる。
【０１２２】
本関数をコールされたプリンタ１０４内の印刷制御プログラム１０６は、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返すことで完了する。
【０１２３】
なお、プリンタＳＤＫ  ＡＰＩライブラリは、通常、本発明の機能関数のみに限らず、これらの他に種々な機能を有する関数も用意され、関数群を構成するものである。
【０１２４】
［プリンタドライバプログラムおよびプリンタ間のＡＰＩコーリングシーケンス例の説明（図７）］
図７は、本発明に係るホストコンピュータ１００上のオペレーティングシステム１０１、プリンタドライバプログラム１０２およびプリンタ１０４上のリアルタイムオペレーティングシステム１０５、印刷制御プログラム１０６における、各印刷制御処理時のＤＤＩに対応するプリンタＳＤＫ ＡＰＩのコーリングシーケンス図である。
【０１２５】
７００は、オペレーティングシステム１０１が備えるスプーラ、通信モジュールおよびオペレーティングシステムが制御する通信モジュールで、ホストコンピュータ１００およびプリンタ１０４間で、情報およびデータの送受信は、これを介して行なわれる。
【０１２６】
まず、プリンタドライバ７０１は、アプリケーションプログラムからプリンタに対するデバイスコンテキストを作成することにより、ＧＤＩからプリンタドライバ７０１を初期化するＤＤＩ関数であるDrvEnablePDEV( )関数７０３がコールされる。プリンタドライバ７０１は、本関数の処理でメモリ確保・初期化、デフォルトデータの読み込み、各種属性パラメータに初期化を行なう。このとき同時にプリンタドライバ７０１は、プリンタＳＤＫライブラリをロードする。
【０１２７】
次にプリンタドライバ７０１は、アプリケーションプログラムからのドキュメント印刷指示に基づき、ＧＤＩよりプリンタドライバ７０１に印刷ジョブ開始処理を指示するＤＤＩ関数であるDrvStartDoc( )関数７０４がコールされる。プリンタドライバ７０１は、本関数の処理で印刷ジョブ制御を開始する。
【０１２８】
同時にプリンタドライバ７０１は、印刷ジョブ制御処理が開始されたことをプリンタＳＤＫ  ＡＰＩであるPD_FuncJobStart( )関数７０５をコールして、プリンタ７０２に通知する。プリンタ７０２は、本関数コールに対して、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返す。
【０１２９】
プリンタ７０２は、前記印刷ジョブ制御処理開始通知に基づき、グラフィックス制御情報をプリンタＳＤＫ  ＡＰＩであるPP_FuncGetGraphicsInfo( )関数７０６をコールして、プリンタドライバ７０１に要求する。プリンタドライバ７０１は、本関数コールに対して、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返す。
【０１３０】
プリンタドライバ７０１は、前記印刷ジョブ制御情報要求に基づき、印刷ジョブ制御処理開始時に決定するジョブ全体に関連する各種グラフィックス制御および属性を決定するためのグラフィックス制御情報および各種属性設定情報をプリンタＳＤＫ  ＡＰＩであるPD_FuncSendGraphicsInfo( )関数７０７をコールして、プリンタ７０２に通知する。プリンタ７０２は、本関数コールに対して、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返す。
【０１３１】
前記ジョブ全体に関連する各種グラフィックス制御情報および属性設定情報を受理したプリンタ７０２は、プリンタドライバ７０１において、各種グラフィックス制御処理を行なって、印刷ジョブデータとなるＰＤＬデータを生成して、プリンタ７０２に送信してくるまでに、ジョブ全体に関連する各種最適化処理を行なって、以降の処理に備え、該当ジョブと識別して保存しておく。
【０１３２】
続いて、プリンタドライバ７０１は、生成したジョブ全体に関連する印刷ジョブデータとなるＰＤＬデータの送信を開始する前に、前記プリンタ７０２に通知した各種グラフィックス制御情報および属性設定情報と、該当する印刷ジョブデータとの対応をとるためのジョブ識別をプリンタＳＤＫ  ＡＰＩであるPD_FuncJobSend( )関数７０８をコールして、プリンタ７０２に通知する。
【０１３３】
７０９は、プリンタドライバ７０１で生成したジョブ全体に関連する印刷ジョブデータとなるＰＤＬデータのプリンタ７０２への送信である。
【０１３４】
プリンタ７０２は、前記ジョブ全体に関連する最適化処理を読み出して、受信した印刷ジョブデータの各制御に適応させて処理を行なう。
【０１３５】
７１０は、アプリケーションプログラムからページ単位の出力指示に基づき、ＧＤＩよりプリンタドライバ７０１にページ出力開始処理を指示するＤＤＩ関数であるDrvStartPage( )関数７１０がコールされる。
【０１３６】
プリンタドライバ７０１は、前記グラフィックス制御情報要求に基づき、ページ出力処理開始時に決定するページ単位あるいは該当ページが含まれるグループ単位、章単位に関連する各種グラフィックス制御および属性を決定するためのグラフィックス制御情報および各種属性設定情報をプリンタＳＤＫ  ＡＰＩであるPD_FuncSendGraphicsInfo( )関数７１１をコールして、プリンタ７０２に通知する。
【０１３７】
プリンタ７０２は、本関数コールに対して、正しく受け付けられたことを本関数のリターン値として、正常値（TRUE）を返す。
【０１３８】
前記ページ単位／グループ単位／章単位に関連する各種グラフィックス制御情報および属性設定情報を受理したプリンタ７０２は、プリンタドライバ７０１において、各種制御処理を行なって、印刷ジョブデータとなるＰＤＬデータを生成して、プリンタ７０２に送信して来るまでに、ページ単位／グループ単位／章単位に関連する各種最適化処理を行なって、以降の処理に備え、該当ジョブと識別して保存しておく。
【０１３９】
７１２は、プリンタドライバ７０１で生成したページ／グループ／章単位に関連する印刷ジョブデータとなるＰＤＬデータのプリンタ７０２への送信である。
【０１４０】
プリンタ７０２は、前記ページ単位／グループ単位／章単位に関連する最適化処理を読み出して、受信した印刷ジョブデータの各制御に適応させて処理を行なう。
【０１４１】
オペレーティングシステムにおけるドキュメント印刷の動作として、ジョブ中のページ単位／グループ単位／章単位で出力属性が異なる場合は、異なる度にDrvStartPage( )関数７１０がコールされるため、前記処理を繰り返すことになる。
【０１４２】
プリンタドライバ７０１は、アプリケーションプログラムよりページに対する属性設定および各オブジェクト描画処理が終了することをＧＤＩに指示することによって、ＧＤＩよりプリンタドライバ７０１に、ページ終了処理を指示するＤＤＩ関数であるDrvEndPage( )関数７１３がコールされる。
【０１４３】
さらにアプリケーションプログラムにより、すべてのドキュメントページの属性設定および各オブジェクト描画処理を終了し、ドキュメント印刷終了をＧＤＩに指示することによって、ＧＤＩよりプリンタドライバ７０１に、ジョブ終了処理を指示するＤＤＩ関数であるDrvEndDoc( )関数７１３がコールされる。
【０１４４】
プリンタドライバ７０１は、本関数の処理において、各種パラメータのリセットおよび各種メモリ領域の開放を行なうとともに、プリンタ７０２の印刷ジョブ制御処理を完了させるためのジョブ終了に関するＰＤＬデータ７１５を生成し、プリンタ７１５に送信する。
【０１４５】
最後に、プリンタドライバ７０１は、アプリケーションプログラムにおけるすべての印刷処理を完了するために、プリンタに対するデバイスコンテキストの削除を指示するＤＤＩ関数であるDrvDisablePDEV( )関数７１６がコールされ、ドキュメント印刷のセッションを終了する。
【０１４６】
［本実施形態のプリンタドライバプログラムにおける印刷ジョブ制御開始通知処理の説明（図８）］
図８に示すフローチャートによって、本実施形態におけるホストコンピュータのプログラムメモリ上にあるプリンタドライバプログラムの各制御処理を詳細に説明する。
【０１４７】
図８は本実施形態に係るホストコンピュータ１００におけるプリンタドライバプログラム１０２での印刷制御処理開始からプリンタＳＤＫ  ＡＰＩを使用して、印刷ジョブ制御処理開始をプリンタ１０４の印刷制御プログラム１０６に通知するまでの一連の制御処理を示すフローチャートである。
【０１４８】
ステップＳ８０１は、アプリケーションプログラムからのドキュメント印刷指示で、ＧＤＩに対して、プリンタに対するデバイスコンテキスト作成指示およびドキュメント印刷開始指示によって行なわれる。このときにプリンタドライバプログラムもオペレーティングシステム上でロードされ、起動する。
【０１４９】
ステップＳ８０２は、ＧＤＩからのＤＤＩ関数コールにより、各種メモリ領域確保、各種パラメータ初期化などによって、プリンタドライバプログラムの初期化処理を行なう。
【０１５０】
また同時にステップＳ８０３において、プリンタＳＤＫ  ＡＰＩライブラリもロードする。
【０１５１】
続いて、ステップＳ８０４において、ドキュメント印刷に係る各種印刷制御処理を開始する。
【０１５２】
このとき、ステップ８０５で、プリンタに対してプリンタＳＤＫ ＡＰＩであるPD_FuncJobStart( )関数をコールして、印刷ジョブ制御処理が開始されたことを通知する。
【０１５３】
ステップＳ８０６は、プリンタ側からのPD_FuncJobStart( )関数に対するリターンで、ステップＳ８０７でこのリターン値が正常リターンであるか、ないかを判定する。
【０１５４】
正常リターンである場合は、ステップＳ８０８で処理を続行するためにプログラムフラグに続行する意味のフラグをセットし、以降の処理に備える。
【０１５５】
一方、正常リターンではなかった場合には、ここで処理を中止する（ステップＳ８０９）。
【０１５６】
［本実施形態のプリンタにおけるグラフィックス制御情報要求処理の説明（図９）］
図９に示すフローチャートによって、本実施形態におけるプリンタのプログラムメモリ上にある印刷制御プログラムの各制御処理を詳細に説明する。
【０１５７】
図９は本実施形態に係るプリンタ１０４における印刷制御プログラム１０６での各制御処理開始からプリンタＳＤＫ  ＡＰＩを使用して、グラフィックス制御情報をホストコンピュータ１００のプリンタドライバプログラム１０２に要求するまでの一連の制御処理を示すフローチャートである。
【０１５８】
ステップＳ９０１は、プリンタの初期化処理で、プリンタ電源投入時あるいはプリンタリセット時に、印刷制御プログラムにおいて、各種制御処理を実行するためのプログラムメモリ領域確保、各種パラメータの初期化を行なう。
【０１５９】
また同時にステップＳ９０２において、プリンタＳＤＫ  ＡＰＩライブラリもロードする。
【０１６０】
ステップＳ９０３において、ホストコンピュータ側からのプリンタＳＤＫ ＡＰＩであるPD_FuncJobStart( )関数コールに対して、印刷ジョブ制御処理開始通知受理と本関数に対する正常リターンを返す。
【０１６１】
続いて、ステップＳ９０４で、ホストコンピュータのプリンタドライバプログラムに対してプリンタＳＤＫ ＡＰＩであるPD_FuncGetGraphicsInfo( )関数をコールして、グラフィックス制御情報の要求を行なう。
【０１６２】
ステップＳ９０５は、前記PD_FuncGetGraphicsInfo( )関数のホストコンピュータ側からのリターンで、ステップＳ９０６でこのリターン値が正常リターンであるか、ないかを判定する。
【０１６３】
正常リターンである場合は、ステップＳ９０８で処理を続行するためにプログラムフラグに続行する意味のフラグをセットし、以降の処理に備える。
【０１６４】
さらにホストコンピュータ側からのグラフィックス制御情報要求に基づく、グラフィックス制御情報および各種属性設定情報通知に備えて、ステップＳ９０９でこれらの情報を格納する記憶装置上の領域確保および初期化を行なう。
【０１６５】
一方、正常リターンではなかった場合には、ここで処理を中止する（ステップＳ９０７）。
【０１６６】
［本実施形態のプリンタドライバプログラムのグラフィックス制御情報通知処理の説明（図１０）］
図１０に示すフローチャートによって、本実施形態におけるホストコンピュータのプログラムメモリ上にあるプリンタドライバプログラムの以降の各制御処理を詳細に説明する。
【０１６７】
図１０は本実施形態に係るプリンタドライバプログラム１０２における、プリンタ１０４の印刷制御プログラム１０６からのグラフィックス制御情報要求を受けてから、プリンタＳＤＫ  ＡＰＩを使用して、グラフィックス制御情報をプリンタ１０４の印刷制御プログラム１０６に通知するまでの一連の制御処理を示すフローチャートである。
【０１６８】
ステップＳ１００１は、プリンタ側からのプリンタＳＤＫ ＡＰＩであるPD_FuncGetGraphicsInfo( )関数コールに対して、グラフィックス制御情報要求受理と本関数に対する正常リターンを返す。
【０１６９】
次にステップＳ１００２で前記プリンタ側からのグラフィックス制御情報要求に基づいて、ジョブ全体に関連する各種グラフィックス制御および属性を決定するためのグラフィックス制御情報および各種属性設定情報をプリンタＳＤＫ  ＡＰＩであるPD_FuncSendJobInfo( )関数をコールして、プリンタに通知する。
【０１７０】
ステップＳ１００３で、プリンタ側からのPD_ FuncSendGraphicsInfo ( )関数に対するリターン値が正常リターンであるか、ないかを判定する。
【０１７１】
正常リターンではなかった場合には、ここで処理を中止する（ステップＳ１００９）。
【０１７２】
一方、正常リターンである場合は、ステップＳ１００４で処理を続行するためにプログラムフラグに続行する意味のフラグをセットし、以降の処理に備える。
【０１７３】
続いてステップＳ１００５において、ページ単位あるいは該当ページが含まれるグループ、章単位に関連するページ出力制御処理を開始する。
【０１７４】
前記ページ出力処理開始時に決定するページ単位あるいは該当ページが含まれるグループ単位、章単位に関連する各種グラフィックス制御および属性を決定するためのグラフィックス制御情報および各種属性設定情報を前記同様にPD_FuncSendGraphicsInfo( )関数をコールして、プリンタに通知する。
【０１７５】
ステップＳ１００７で、プリンタ側からのPD_ FuncSendGraphicsInfo ( )関数に対するリターン値が正常リターンであるか、ないかを判定する。
【０１７６】
正常リターンである場合は、ステップＳ１００８で処理を続行するためにプログラムフラグに続行する意味のフラグをセットし、以降の処理に備える。
【０１７７】
一方、正常リターンではなかった場合には、ここで処理を中止する（ステップＳ１００９）。
【０１７８】
［プリンタドライバプログラムにおける印刷制御処理の説明（図１１）］
図１１は、本実施形態のホストコンピュータ１００のプログラムメモリ上にあるプリンタドライバプログラムにおける印刷制御処理の詳細を示すフローチャートである。
【０１７９】
プリンタドライバは、ドキュメント作成、編集、印刷アプリケーションプログラムからのプリンタへの印刷指示によって、起動されステップＳ１１０１〜Ｓ１１１２を実行する。
【０１８０】
まず、ステップＳ１１０１は、各種印刷属性設定パラメータおよびアプリケーションから印刷指示されたドキュメントを構成する文字／図形/イメージデータの入力である。
【０１８１】
これらの入力はアプリケーションプログラムにおいて、ＳＤＫ ＡＰＩを使用してＧＤＩで作成されるプリンタに対して行なわれ、ＧＤＩがＤＤＩに変換し、プリンタドライバプログラムにＤＤＩ関数がコールされることによって行なわれる。
【０１８２】
ステップＳ１１０２で、これら入力されたパラメータおよびデータを解析する。
【０１８３】
ステップＳ１１０３では、前記入力データの解析結果より、用紙サイズ、印刷方向、描画解像度設定、座標系の単位設定など印刷の準備をするため、プリンタに対する各設定パラメータをプリンタ制御命令に変換・生成し、送信してプリンタの初期化処理を行なう。
【０１８４】
さらに、ステップＳ１１０４およびステップＳ１１０６で、前記解析処理されたパラメータ及びデータを、文字データ、図形データ及びイメージデータに分離する。
【０１８５】
前記ステップＳ１１０４およびステップＳ１１０６で分離された文字データ、図形データおよびイメージデータは、それぞれステップＳ１１０５、ステップＳ１１０７およびステップＳ１１０８の文字印字制御処理部（モジュール）、図形描画制御処理部（モジュール）およびイメージ描画制御処理部（モジュール）で処理を施す。
【０１８６】
前記ステップＳ１１０５、ステップＳ１１０７およびステップＳ１１０８の文字印字、図形描画およびイメージ描画制御処理に基づき、ステップＳ１１０９のドキュメント構成制御処理（モジュール）において、描画出力属性、サイズ計算、描画出力位置などパターンの出力形態を決定し、プリンタの出力ページに配置する。
【０１８７】
前記ステップＳ１１０９で構成されたドキュメント出力の制御データは、ステップＳ１１１０の印刷制御命令生成処理（モジュール）において、プリンタにドキュメントを出力するためにプリンタの印刷制御命令に変換・生成する。
【０１８８】
ステップＳ１１１１のプリンタへの出力送信処理(モジュール)においては、プリンタ１０１２に対して、ステップＳ１１１０で生成された印刷制御命令を送信し、プリンタからドキュメントを印刷するＳ１１１２。
【０１８９】
［プリンタにおける印刷制御処理の説明（図１２）］
図１２は、本実施形態のプリンタ１０４のプログラムメモリ上にある印刷制御プログラム１０６における各制御処理の詳細を示すフローチャートである。
【０１９０】
ステップＳ１２０１は、ホストコンピュータ１００のプログラムメモリ上にあるプリンタドライバプログラム１０２より、プリンタＳＤＫ  ＡＰＩ関数およびデータによって、ドキュメント全体の出力形態を決定するジョブ全体に関連するグラフィックス制御情報および各種属性設定情報を受理する。
【０１９１】
前記ジョブ全体に関連するグラフィックス制御情報および各種属性設定情報とは、ジョブ全体で設定されるフォント、モノクロ／カラー印刷、解像度、イメージ／ベクタグラフィックスなどのグラフィックス描画方法、画像レンダリング方法、画像圧縮方法などの各種グラフィックス制御情報および属性設定情報である。
【０１９２】
ステップＳ１２０２において、前記グラフィックス制御情報および各種属性設定情報から、事前にグラフィックス制御に係るページ展開メモリの確保、画像レイアウト、圧縮画像の伸長モジュールおよび画像レンダリングモジュールの呼び出し、画像展開および圧縮画像の伸長のための作業領域の確保など、ジョブ全体に関連する各制御および各種属性設定を行なって以降の処理に備えるべく、最適化処理を行なう。
【０１９３】
ステップＳ１２０３において、前記ジョブ全体に関連する事前最適化処理の結果を識別されたジョブ単位に、メモリ、ハードディスクなどの記憶装置部に格納して、該当ジョブ印刷が終了するまで保存する。
【０１９４】
続いて、ステップＳ１２０４において、前記同様にホストコンピュータ１００のプログラムメモリ上にあるプリンタドライバプログラム１０２より、プリンタＳＤＫ  ＡＰＩ関数およびデータによって、各種グラフィックス制御および属性を決定するページ単位／グループ単位／章単位で関連するグラフィックス制御情報および各種属性設定情報を受理する。
【０１９５】
前記ページ単位／グループ単位／章単位で関連するグラフィックス制御情報および各種属性設定情報とは、フォント、モノクロ／カラー印刷、解像度、イメージ／ベクタグラフィックスなどのグラフィックス描画方法、画像レンダリング方法、画像圧縮方法などの各種グラフィックス制御および属性設定情報である。
【０１９６】
ステップＳ１２０５において、前記グラフィックス制御情報および各種属性設定情報から、事前にページ単位／グループ単位／章単位の制御に係る作業領域としてのメモリ、ハードディスクなどの記憶装置上の領域確保、出力に係る各制御処理の優先順位の設定、ページ展開メモリの確保、画像レイアウト、圧縮画像の伸長モジュールおよび画像レンダリングモジュールの呼び出し、画像展開および圧縮画像の伸長のための作業領域の確保などの制御処理を行なって以降の処理に備えるべく、最適化処理を行なう。
【０１９７】
ステップＳ１２０６において、前記ページ単位／グループ単位／章単位に関連する事前最適化処理の結果を識別されたジョブ単位に、メモリ、ハードディスクなどの記憶装置部に格納して、該当ジョブ印刷が終了するまで保存する。
【０１９８】
次にステップＳ１２０７で、ホストコンピュータ１００のプログラムメモリ上にあるプリンタドライバプログラム１０２から、ＰＤＬデータおよび文字コード、イメージなどの描画データから成る該当ドキュメントの印刷ジョブデータを受信する。
【０１９９】
ステップＳ１２０８において、前記ステップＳ１２０３およびステップＳ１２０６で保存されているジョブ／グループ／章／ページにわたる各最適化処理を読み出す。
【０２００】
ステップＳ１２０９において、前記ステップＳ１２０８の印刷ジョブデータと、前記読み出した各最適化処理をあわせて、各印刷制御処理を行なう。
【０２０１】
ステップＳ１２１０で、前記印刷制御処理において変換・生成された画像をプリンタエンジン制御部を介して、プリンタエンジンに転送して、ドキュメント出力（ステップＳ１２１１）する構成となる。
【０２０２】
したがって、本実施形態によれば、ホストコンピュータ上のプリンタドライバプログラムとプリンタ内の印刷制御プログラムにおいて、各オペレーティングシステムで認識可能で、相互に各種情報およびデータの送受信が可能なプリンタＳＤＫ  ＡＰＩとなる関数を用意して、ドキュメント印刷に係る各種グラフィックス制御および各種属性設定を事前にプリンタ側に通知し、各種最適化処理を行ない、実際の印刷時の各種印刷制御を可能とすることによって、複雑な出力形態が設定されるドキュメント印刷速度の向上を図る印刷システムの提供することが可能となる。
【０２０３】
（実施の形態２）
第２の実施形態は、第１の実施形態において、ホストコンピュータ１００上のプリンタドライバプログラム１０２およびプリンタ１０４内の印刷制御プログラム１０６間で、プリンタＳＤＫ  ＡＰＩライブラリで提供される関数で行なっていた各種情報およびデータの送受信を、アプリケーションプログラム１０３において、前記プリンタＳＤＫ  ＡＰＩライブラリをロードし、前記関数でプリンタ１０４内の印刷制御プログラム１０６間の各種情報およびデータの送受信を行なうことによっても適用できる。
【０２０４】
本実施形態によれば、アプリケーションプログラムとプリンタ間で、直接、事前の印刷制御情報および各種属性設定情報を通知することが可能となる。また、前記アプリケーションプログラムおよびプリンタの組み合わせにおいて、オペレーティングシステムの印刷方式であるアプリケーションプログラムから、直接プリンタにＰＤＬデータを送信することができるＰＡＳＳＴＨＲＯＵＧＨ機能においても、ドキュメント印刷に係る印刷速度の向上を図る印刷システムを提供することが可能である。
【０２０５】
（実施の形態３）
第３の実施形態は、第１の実施形態において、ホストコンピュータ１００およびプリンタ１０４のプログラムメモリ上に備えていたプリンタＳＤＫ  ＡＰＩライブラリを外部ファイル形式で提供し、アプリケーションプログラム、プリンタドライバプログラムおよびプリンタに、任意に必要に応じて本発明の印刷システムの運用を行なうことも可能である。
【０２０６】
本実施形態によれば、例えば、セキュアドプリントなどのセキュリティで保護されるドキュメントの印刷に関して、プリンタ内に該当ドキュメントの各種印刷制御情報および属性設定情報を保存できない場合の印刷システム、別の例としては、プリンタ内の記憶装置部にドキュメントデータを蓄積して、後で印刷する場合などの印刷システムにも適用できるように、柔軟なシステム構築、運用を実現することが可能となる。
【０２０７】
（実施の形態４）
第４の実施形態は、第３の実施形態において、外部ファイルとして提供するプリンタＳＤＫ  ＡＰＩライブラリについて、プリンタに存在しない場合あるいは更新する必要がある場合は、自動的にホストコンピュータ上のプリンタドライバプログラムからダウンロードして、プリンタに適用することによっても、本発明の印刷システムの目的を達成することが可能である。
【０２０８】
本実施形態によれば、プリンタＳＤＫ  ＡＰＩライブラリで提供される関数の変更、追加に際して、容易にプリンタ内のプリンタＳＤＫ  ＡＰＩライブラリの新規登録、更新が可能となり、プログラム保守性の優れた、効率の良い印刷システムを提供することが可能となる。
【０２０９】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。
【０２１０】
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２１１】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光磁気ディスク、光ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ不揮発性のメモリカード、ＲＯＭなどを用いることができる。
また、コンピュータが読み出したプログラムコードを実行することによって、前述した実施形態の機能が実現される他、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【０２１２】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【０２１３】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体からそのプログラムをパソコン通信など通信ラインを介して要求者にそのプログラムを配信する場合にも適用できることは言うまでもない。
【図面の簡単な説明】
【０２１４】
【図１】本発明のホストコンピュータシステム上のオペレーティングシステム、アプリケーションプログラム、プリンタドライバプログラムおよびこれに接続されるプリンタから構成される基本システム構成図である。
【図２】本発明のホストコンピュータおよびプリンタにおいて、プリンタＳＤＫ ＡＰＩを使用して、初期化から印刷までの各構成要素の内部および構成要素間の処理の流れを表すブロック図である。
【図３】本発明のアプリケーション、プリンタドライバ及び印刷装置における印刷システムに係る、ホストコンピュータシステムとこれに接続されるプリンタの構成図である。
【図４】本発明のプリンタおよびプリンタ内の各制御部を表わす構成図である。
【図５】本発明のアプリケーションプログラムインターフェース（ＡＰＩ）の関数例である。
【図６】本発明のアプリケーションプログラムインターフェース（ＡＰＩ）の関数例である。
【図７】本発明のプリンタドライバプログラムおよびプリンタ間のプリンタＳＤＫ ＡＰＩのコーリングシーケンス例の内容を示した図である。
【図８】本発明のプリンタドライバプログラムにおける印刷ジョブ制御開始をプリンタに通知する処理の一例を示すフローチャートである。
【図９】本発明のプリンタにおけるグラフィックス制御情報をプリンタドライバプログラムに要求する処理の一例を示すフローチャートである。
【図１０】本発明のプリンタドライバプログラムにおけるグラフィックス制御情報をプリンタに通知する処理の一例を示すフローチャートである。
【図１１】本発明のプリンタドライバプログラムにおける印刷制御処理の一例を示すフローチャートである。
【図１２】本発明のプリンタにおける印刷制御処理の一例を示す処理ブロック図である。
【符号の説明】
【０２１５】
１００  ホストコンピュータシステム
１０１  オペレーティングシステム
１０２  プリンタドライバプログラム
１０３  アプリケーションプログラム
１０４  プリンタ
１０５  オペレーティングシステム
１０６  印刷制御プログラム
１０７  プリンタエンジン制御プログラム
１０８  印刷出力
【図１】
2007188308.tif 000003
【図２】
2007188308.tif 000004
【図３】
2007188308.tif 000005
【図４】
2007188308.tif 000006
【図５】
2007188308.tif 000007
【図６】
2007188308.tif 000008
【図７】
2007188308.tif 000009
【図８】
2007188308.tif 000010
【図９】
2007188308.tif 000011
【図１０】
2007188308.tif 000012
【図１１】
2007188308.tif 000013
【図１２】
2007188308.tif 000014