(57)【特許請求の範囲】
【請求項１】
描画命令を出力する第１アプリケーションと、前記描画命令をページ単位に制御コードに変換するプリンタドライバと、前記制御コードを入力する第２アプリケーションとを有する情報処理装置において、
前記第２アプリケーションより前記第２アプリケーションが入力可能な前記制御コードに変換される描画命令の数を設定する設定手段と、
前記第１アプリケーションから出力された描画命令の数が前記設定手段で設定された描画命令の数を超えているかを判断する判断手段と、
前記判断手段で前記第１アプリケーションから出力された描画命令の数が前記設定手段で設定された描画命令の数を超えていないと判断された場合に、前記プリンタドライバを用いて、当該描画命令をページ単位に制御コードに変換する制御コード変換手段と、
前記判断手段で前記第１アプリケーションから出力された描画命令の数が前記設定手段で設定された描画命令の数を超えていると判断された場合に、前記判断手段での判断結果を報知するための警告画面を表示する表示制御手段とを有し、
前記制御コード変換手段は、前記設定手段によって設定された制御コードの描画命令の数を越える分について、当該描画命令を制御コードに変換する処理を実行しないことを特徴とする情報処理装置。
【請求項２】
前記設定手段は、少なくとも１ページ中の最大描画命令の数を設定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記設定手段は、前記制御コード変換手段で変換される印刷ジョブ全体の最大描画命令の数を設定することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記設定手段は、前記第２アプリケーションにて提供される設定画面を介して入力された値を、前記第２アプリケーションが入力可能な前記制御コードに変換される描画命令の数として設定することを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記制御コードの出力先が前記第２アプリケーションである場合に、前記設定手段で設定されるべき描画命令の数を読み込む手段を更に有することを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置
【請求項６】
描画命令を出力する第１アプリケーションと、前記描画命令をページ単位に制御コードに変換するプリンタドライバと、前記制御コードを入力する第２アプリケーションとを有する情報処理装置の制御方法であって、
前記第２アプリケーションより前記第２アプリケーションが入力可能な前記制御コードに変換される描画命令の数を設定する設定工程と、
前記第１アプリケーションから出力された描画命令の数が前記設定工程で設定された描画命令の数を超えているかを判断する判断工程と、
前記判断工程で前記第１アプリケーションから出力された描画命令の数が前記設定工程で設定された描画命令の数を超えていないと判断された場合に、前記プリンタドライバを用いて、当該描画命令をページ単位に制御コードに変換する制御コード変換工程と、
前記判断工程で前記第１アプリケーションから出力された描画命令の数が前記設定工程で設定された描画命令の数を超えていると判断された場合に、前記判断工程での判断結果を報知するための警告画面を表示する表示制御工程とを有し、
前記制御コード変換工程は、前記設定手段によって設定された制御コードの描画命令の数を越える分について、当該描画命令を制御コードに変換する処理を実行しないことを特徴とする情報処理装置の制御方法。
【請求項７】
前記設定工程では、少なくとも１ページ中の最大描画命令の数が設定されることを特徴とする請求項６に記載の情報処理装置の制御方法。
【請求項８】
前記設定工程では、前記制御コード変換工程で変換される印刷ジョブ全体の最大描画命令の数が設定されることを特徴とする請求項６に記載の情報処理装置の制御方法。
【請求項９】
前記設定工程では、前記第２アプリケーションにて提供される設定画面を介して入力された値が、前記第２アプリケーションが入力可能な前記制御コードに変換される描画命令の数として設定されることを特徴とする請求項６乃至８の何れか１項に記載の情報処理装置の制御方法。
【請求項１０】
前記制御コードの出力先が前記第２アプリケーションである場合に、前記設定工程で設定されるべき描画命令の数を読み込む工程を更に有することを特徴とする請求項６乃至９の何れか１項に記載の情報処理装置の制御方法
【請求項１１】
請求項６乃至１０の何れか１項に記載の情報処理装置の制御方法をコンピュータに実行させるためのプログラム。
【請求項１２】
請求項１１に記載のプログラムが記憶されたコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、描画命令を出力する第１アプリケーションと、前記描画命令をページ単位に制御コードに変換するプリンタドライバと、前記制御コードを入力する第２アプリケーションとを有する情報処理装置及びその制御方法、プログラム並びに記憶媒体に関するものである。
【０００２】
【従来の技術】
一般的に、情報処理装置上で動作するオペレーティングシステム（以下ＯＳ）上の印刷システムにおいて、文書作成ソフトウェアや画像編集ソフトウェア等のアプリケーションプログラムからの印刷情報（一般にＧＤＩ関数と呼ぶ）は、ＯＳの内部モジュールであるグラフィックエンジンを介して、抽象的な論理描画要求（一般にＤＤＩ関数と呼ぶ）として、制御コード生成モジュール（以下プリンタドライバ）へと送信される。このプリンタドライバはその論理描画要求を解釈し、特定のフォーマットに準拠した制御コード群を生成する。
【０００３】
通常、このような機能を提供するプリンタドライバは、ＯＳ上にソフトウエアモジュールとしてインストールされ、このＯＳ上で稼動するすべてのアプリケーションプログラムから利用されることが可能である。また、プリンタドライバは情報処理装置上で動作する、すべてのアプリケーションに対して制御コード出力機能（印刷機能）を提供する。
【０００４】
プリンタドライバが生成した制御コード群は、ＯＳのシステムスプーラを介して、プリンタやＦＡＸ等の出力機器へと送信され、内部のラスタライズモジュールにより人間が視覚的に認識可能なビットマップイメージへと変換されて出力される。また、この制御コードを解釈可能な情報処理装置上で動作する別のプログラムモジュールによりラスタライズされ、ユーザが操作する画面上に表示させることも可能である。このプログラムモジュールは、プリンタドライバが生成した制御コード群を編集したり、異なる印刷ジョブの制御コード群を結合したりするアプリケーションであり、このようなぷリケーションを本明細において、印刷編集アプリケーションと呼ぶ。
【０００５】
この印刷編集アプリケーションにおいては、たとえ解釈する制御コードのコマンド体系（命令群）が同じであっても、その内部アルゴリズムの違いや動作している機器のハードウェアリソースの違いなどにより解釈可能な制御コードが異なる場合がある。
【０００６】
例えば、ある制御コードを編集処理するモジュールＡは、ハードウエアのリソースが少ないため、制御コード中に埋め込まれるイメージデータのメモリ領域を10,000個までしか確保できないものとする。この時、10,000を超えるイメージデータが制御コードに埋め込まれていた場合にはメモリ確保エラーとなり処理が中止されることが考えうる。
【０００７】
また、別の編集処理モジュールＢで上述の制限がないとすれば、10,000を超えるイメージデータも解釈可能となる。即ち、編集処理モジュールに依存して、解釈可能な制御コードに違いが生じるということである。
【０００８】
この問題により、以下のことが起こりうる。
【０００９】
例えば、ある共通の制御コードを解釈可能な編集処理モジュールが複数存在していた場合、この共通制御コードを出力する別のモジュール（プリンタドライバ）から出力された制御コードは一番高い性能をもつ編集処理モジュールで編集処理が可能であったとしても、一番性能が低い編集処理モジュールでは編集処理が可能とは限らない。この時、メモリエラー等が発生して動作自体が強制終了するようなことも考えられる。
【００１０】
【発明が解決しようとする課題】
上述したように、現在の印刷システムではＯＳ上で動作するプリンタドライバは、通常ＯＳ上にソフトウェアモジュールとしてインストールされ、そのＯＳ上で稼動するすべてのアプリケーションから利用されることが可能である。また、プリンタドライバは情報処理装置上で動作する、すべてのアプリケーションに対して印刷機能を提供する。
【００１１】
しかし、現状、プリンタドライバが出力した制御コードを認識する情報処理装置上の編集処理モジュールが複数存在した場合、各編集処理モジュールの特性を理解し、制御コードをカスタマイズすることができない。例えば、あるプリンタドライバはある特定の制御コードを出力するが、これらがこの制御コードを認識するすべての編集処理モジュールで描画が可能とはなりえない。また、編集処理モジュールによっては、編集処理動作を遂行できないとなれば、一連の処理が中止されることも考えられる。
【００１２】
本発明は、上記課題を解決するためになされたもので、プリンタドライバで制御コードに変換される描画命令の数を、変換された制御コードを入力するアプリケーションが設定可能とすることを目的とする。
【００１３】
【課題を解決するための手段】
上記目的を達成するために、本発明は、描画命令を出力する第１アプリケーションと、前記描画命令をページ単位に制御コードに変換するプリンタドライバと、前記制御コードを入力する第２アプリケーションとを有する情報処理装置において、前記第２アプリケーションより前記第２アプリケーションが入力可能な前記制御コードに変換される描画命令の数を設定する設定手段と、前記第１アプリケーションから出力された描画命令の数が前記設定手段で設定された描画命令の数を超えているかを判断する判断手段と、前記判断手段で前記第１アプリケーションから出力された描画命令の数が前記設定手段で設定された描画命令の数を超えていないと判断された場合に、前記プリンタドライバを用いて、当該描画命令をページ単位に制御コードに変換する制御コード変換手段と、前記判断手段で前記第１アプリケーションから出力された描画命令の数が前記設定手段で設定された描画命令の数を超えていると判断された場合に、前記判断手段での判断結果を報知するための警告画面を表示する表示制御手段とを有し、前記制御コード変換手段は、前記設定手段によって設定された制御コードの描画命令の数を越える分について、当該描画命令を制御コードに変換する処理を実行しないことを特徴とする。
【００１４】
また、上記目的を達成するために、本発明は、描画命令を出力する第１アプリケーションと、前記描画命令をページ単位に制御コードに変換するプリンタドライバと、前記制御コードを入力する第２アプリケーションとを有する情報処理装置の制御方法であって、前記第２アプリケーションより前記第２アプリケーションが入力可能な前記制御コードに変換される描画命令の数を設定する設定工程と、前記第１アプリケーションから出力された描画命令の数が前記設定工程で設定された描画命令の数を超えているかを判断する判断工程と、前記判断工程で前記第１アプリケーションから出力された描画命令の数が前記設定工程で設定された描画命令の数を超えていないと判断された場合に、前記プリンタドライバを用いて、当該描画命令をページ単位に制御コードに変換する制御コード変換工程と、前記判断工程で前記第１アプリケーションから出力された描画命令の数が前記設定工程で設定された描画命令の数を超えていると判断された場合に、前記判断工程での判断結果を報知するための警告画面を表示する表示制御工程とを有し、前記制御コード変換工程は、前記設定手段によって設定された制御コードの描画命令の数を越える分について、当該描画命令を制御コードに変換する処理を実行しないことを特徴とする。
【００１５】
【発明の実施の形態】
以下、図面を参照しながら本発明に係る実施の形態を詳細に説明する。
【００１６】
図１は、本実施形態におけるシステムの概要を示すブロック図である。図１に示す（ａ）において、１０１はある特定のプログラムモジュールが認識可能な制御コードを生成する制御コード生成部である。また、制御コード生成部１０１が生成した制御コードは、印刷装置で解釈され印刷出力可能な印刷ジョブとして利用することも可能である。制御コード生成部１０１の具体例としては、PDF Writerなどが挙げられる。１０２は制御コード生成部１０１において生成された制御コードをユーザにラスタライズされたビットマップイメージとして表示する制御コード表示部である。印刷編集アプリケーションは、制御コード表示モジュールを備えている。印刷編集アプリケーションは、ラスタライズ処理以外にも、印刷ジョブに相当する制御コード生成部１０１により一度の指示で生成される一連の制御コード群を結合するなどの編集処理を行う編集処理モジュールをも備えており、文書作成アプリケーションや表作成アプリケーションで生成された異なる制御コードを結合して１つの文書としたり、ページ順序を入れ替えるページハンドリング処理を行うためのソフトウェアである。
【００１７】
また、図１に示す（ｂ）及び（ｃ）は一般的な制御コード生成部と印刷編集アプリケーション（制御コード表示部）の形態を示している。図１に示す（ｂ）の形態において、制御コード生成部１０３は、パーソナルコンピュータ等の情報処理装置上で動作するプログラムモジュールであり、印刷編集アプリケーションの制御コード表示部１０４は生成された制御コードを同じ情報処理装置上、あるいはネットワーク上の他の情報処理装置上でユーザが認識可能なビットマップイメージとしてディスプレイ上に表示するプログラムモジュールである。
【００１８】
更に、図１に示す（ｃ）の形態において、制御コード生成部１０５は、パーソナルコンピュータ等の情報処理装置上で動作するプログラムモジュールであり、制御コード表示部１０６はネットワーク上で稼動するプリンタ機器やＦＡＸ機器等の出力装置であり、制御コードを解釈して、ユーザが認識可能なビットマップイメージとして印刷物を出力することで表示を行う。
【００１９】
図２は、図１に示す（ｂ）及び（ｃ）の主要プログラムモジュールを具体的に表現したものである。ここで、図２に示す（ａ）は図１に示した（ｂ）の形態を示している。本例においては、制御コード生成部２０１は情報処理装置上で動作するプリンタドライバプログラムで、制御コードを生成する。また、制御コード表示部２０２は制御コードを解釈して、ディスプレイ上に表示するビューワプログラムである。
【００２０】
同様に、図２に示す（ｂ）は図１に示した（ｃ）の形態を示している。本例においては、制御コード生成部２０３は情報処理装置上で動作するプリンタドライバプログラムで、制御コードを生成する。また、制御コード表示部２０４は制御コードをラスタライズして、イメージデータとして記録用紙に出力するプリンタコントローラである。
【００２１】
図３は、本実施形態における印刷システムが稼動する情報処理装置の構成を示すブロック図である。図３において、３０００は情報処理装置で、その内部にはＲＯＭ３０３内のプログラム用ＲＯＭや外部メモリ３１１に記憶されたアプリケーションプログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行するＣＰＵ３０１を備え、ＣＰＵ３０１がシステムバス３０４に接続される各デバイスを総括的に制御する。また、ＲＯＭ３０３内のプログラム用ＲＯＭや外部メモリ３１１には、ＣＰＵ３０１の制御プログラムであるオペレーティングシステム（以下ＯＳ）等が記憶され、ＲＯＭ３０３内のデータＲＯＭや外部メモリ３１１には上述の文書処理の際に使用する各種データが記憶される。
【００２２】
３０２はＲＡＭで、ＣＰＵ３０１の主メモリ、ワークエリア等として機能する。３０５はキーボードコントローラ（ＫＢＣ）で、キーボード３０９や不図示のポインティングデバイスからのキー入力を制御する。３０６はビデオコントローラ（ＣＲＴＣ）で、ＣＲＴディスプレイ（ＣＲＴ）や液晶ディスプレイ３１０への表示を制御する。３０７はディスクコントローラ（ＤＫＣ）で、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、印刷編集アプリケーション、及び本実施形態によるプリンタドライバ等を記憶するハードディスク（ＨＤ）、フロッピーディスク（ＦＤ）等の外部メモリ３１１とのアクセスを制御する。３０８はネットワークコントローラ（ＮＥＴＣ）で、所定のインターフェースを介してプリンタ機器等に接続されて通信制御処理を実行する。
【００２３】
尚、ＣＰＵ３０１は、ラスタライズプログラムを介して、例えばＲＡＭ３０２上に設定された表示情報ＲＡＭへの展開（ラスタライズ）処理を実行し、ディスプレイ１０上での表示を可能としている。また、ＣＰＵ３０１は、ディスプレイ３１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。更に、ユーザは印刷を実行する際に、接続されているプリンタドライバの設定に関するウインドウを開き、プリンタドライバに対する印刷処理方法の設定を行うことができる。
【００２４】
図４は、本実施形態における印刷システムが稼動するプリンタ機器の構成を示すブロック図である。図４において、４０００はプリンタ装置で、その内部にはＲＯＭ４０３内のプログラム用ＲＯＭや外部メモリ４０９に記憶されたプリンタコントローラプログラム等を実行するＣＰＵ４０１を備え、ＣＰＵ４０１がシステムバス４０４に接続される各デバイスを総括的に制御する。また、ＲＯＭ４０３内のプログラム用ＲＯＭや外部メモリ４０９には、ＣＰＵ４０１の制御プログラムであるオペレーティングシステム等が記憶され、ＲＯＭ４０３内のデータＲＯＭや外部メモリ４０９には文字表示に使用するフォントデータ等の各種データが記憶される。
【００２５】
４０２はＲＡＭで、ＣＰＵ４０１の主メモリ、ワークエリア等として機能する。４０６は出力コントローラ（ＯＵＴＣ）で、オペレーティングシステムの制御下で動作するコントローラプログラムによりホストコンピュータから転送された制御コードをラスタライズして、記録用紙に画像を形成して排紙トレイ等へ出力する出力ユニット４０８へ画像データとして出力する。４０７はディスクコントローラ（ＤＫＣ）で、ブートプログラム、フォントデータ等を記憶するハードディスク（ＨＤ）等の外部メモリ４０９とのアクセスを制御する。４０５はネットワークコントローラ（ＮＥＴＣ）で、所定のインターフェースを介して情報処理装置に接続されて情報処理装置との通信制御処理を実行する。
【００２６】
尚、所定のインターフェースを介して入力された制御コードは、ＣＰＵ４０１の制御の下、ＲＡＭ４０２上にロードされたプリンタコントローラプログラムによりＲＡＭ４０２や外部メモリ４０９等の記憶領域に画像展開（ラスタライズ）され、出力コントローラ４０６を介して用紙等の媒体に印字を行う出力ユニット４０８に出力される。
【００２７】
図５は、ホストコンピュータの典型的な印刷処理モジュールの構成を示す図である。この印刷処理モジュールは、外部メモリ３１１からＲＡＭ３０２にロードされ、ＣＰＵ３０１によって実行されるものである。図示するように、文書処理プログラム等のアプリケーション５０１、ＯＳの提供するグラフィックエンジン５０２、そのグラフィックエンジン５０２を経由し、アプリケーション５０１から渡された印刷描画命令を処理するプリンタドライバ５０３、及びそのプリンタドライバ５０３から受け取った制御コードをネットワーク上のプリンタや特定のファイル等に出力するシステムスプーラ５０４から構成される。これらのモジュールは外部メモリ３１１に保存されたファイルとして存在し、実行の際にＯＳによってＲＡＭ２にロードされ、実行されるプログラムモジュールである。また、アプリケーション５０１及びプリンタドライバ５０３は外部メモリ３１１のＦＤや不図示のＣＤ−ＲＯＭ或いは不図示のネットワークを経由して外部のＨＤから追加することも可能となっている。
【００２８】
外部メモリ３１１に保存されているアプリケーション５０１はＲＡＭ３０２にロードされて実行されるが、このアプリケーション５０１からプリンタドライバ５０２に対して印刷を行う場合は、同様にＲＡＭ３０２にロードされ実行可能となっているグラフィックエンジン５０２を介して出力を行う。このグラフィックエンジン５０２もプリンタドライバ５０３と同様に外部メモリ３１１からＲＡＭ３０２にロードされ、アプリケーション５０１の描画要求であるＧＤＩ関数をプリンタドライバ５０３が解釈可能な描画関数であるＤＤＩ関数に変換し、変換された描画命令であるＤＤＩ関数をプリンタドライバ５０３に伝達する。一方、プリンタドライバ５０３は伝達された描画命令を印刷装置で印刷出力可能な特定の制御コードに変換する。そして、プリンタドライバ５０３により生成された制御コードはシステムスプーラ５０４を介して、ネットワークを上のプリンタ機器に送信されるか、或いは外部メモリ３１１のようなファイルシステム上にファイルとして出力されることも可能である。
【００２９】
図６は、本実施形態におけるアプリケーションとプリンタドライバプログラムの情報伝達形態を示す図である。図６に示すように、アプリケーションＡ、Ｂ（５０１）がＲＡＭ３０２にロードされ、実行可能となっているものとする。尚、これらのアプリケーションの同時起動数はこれ以上であっても構わない。
【００３０】
図６において、６０１はプリンタドライバ５０３とアプリケーション５０１が情報伝達に用いる外部メモリ３１１に代表されるファイルシステム上の記憶領域である。ここで、ある特定のアプリケーション５０１（印刷編集アプリケーションに相当する）とプリンタドライバ５０３はこの記憶領域６０１に情報を書き込み、これを読み込むことにより通信を確立することが可能となる。
【００３１】
図７は、本実施形態における情報伝達用の記憶領域を示す図である。この例では、７０１にはプリンタドライバ５０３を識別するＩＤが格納され、７０２にはアプリケーション５０１によって設定され、プリンタドライバ５０３で出力可能な１ページ中の総描画数が保存され、７０３にはアプリケーション５０１によって設定され、プリンタドライバ５０３で出力可能な１つの印刷ジョブ（一連の制御データ群）全体の総描画数が保存されるものとする。また、記憶領域７０１、７０２、７０３に記述されるフォーマットは、プリンタドライバ５０３、アプリケーション５０１が認識可能であればどのような形式でも構わない。
【００３２】
印刷処理がされていない通常状態において、この記憶領域６０１は図８に示すような構成になっているものとする。ここで、プリンタドライバを識別するＩＤ領域８０１には、"プリンタドライバＡ"という文字列が設定され、８０２及び８０３のページ中及び全体の出力可能描画総数には"制限なし"がそれぞれ設定されているものとする。通常状態において、プリンタドライバの出力先は印刷装置であり、印刷装置は描画処理においてハード的な制約がないため、出力可能描画総数に制限がない。
【００３３】
まず、情報処理装置上で文書処理等の処理を行うアプリケーション５０１からの印刷開始時、アプリケーション５０１からの印字要求（ＧＤＩ関数）はグラフィックエンジン５０２を介して印字命令（ＤＤＩ関数）に変換され、プリンタドライバ５０３に伝えられる。図９は、本実施形態においてグラフィックエンジン５０２からプリンタドライバ５０３に要求された印字命令の例を示す図である。図９に示すように、グラフィックエンジン５０２から渡された印字要求は印刷開始と印刷終了を判別可能であるものとし、印字要求は印刷開始命令（StartPrint()）９０１で開始され、任意の個数（ｎ）の描画要求（Output(1),Output(2)...Output(n)）９０２を経た後、印刷終了命令（EndPrint()）９０３で終了するものと仮定する。
【００３４】
ここで、アプリケーション５０１から記憶領域６０１の出力可能描画数を指定しないで、通常状態の"制限なし"が設定されている場合に、プリンタドライバ５０３がグラフィックエンジン５０２を介してアプリケーション５０１から受け取った印刷命令を解析し、ページ単位に制御コードに変換してページ描画ファイル（ＰＤＦ：Page Description File）として出力する処理について説明する。
【００３５】
図１０は、本実施形態における出力処理を示すフローチャートである。まず、アプリケーション５０１で印刷開始が指示されると、プリンタドライバ５０３は、ステップＳ１００１において、グラフィックエンジン５０２を介して描画要求を受け付ける。そして、ステップＳ１００２において、この描画要求が印刷開始命令か判断する。ここで、印刷開始時はアプリケーション５０１からグラフィックエンジン５０２を介して印刷開始命令（StartPrint）９０１を受け取るので、ステップＳ１００３へ進み、ＯＳ共通である記憶領域６０１を読み出す。この記憶領域６０１における参照位置はプリンタドライバのＩＤ７０１を判断することにより位置を識別することが可能である。この時、記憶領域６０１は初期状態で図８に示す値が設定されている。次に、プリンタドライバ５０３は、ステップＳ１００４において、１ページ中の出力可能な描画数領域８０２よりデフォルトの出力可能描画数（この場合、制限なし）を読み込み、内部データとしてこの値を保持し、ステップＳ１００１へ戻る。
【００３６】
そして、ステップＳ１００１において、グラフィックエンジン５０２を介して描画要求を受け付ける。この描画要求は（Output(1)）９０２に示す描画命令であり、ステップＳ１００２の印刷開始命令、ステップＳ１００５の印刷終了命令ではないため、ステップＳ１００６へ進み、内部データである出力済み描画数をインクリメントする。そして、ステップＳ１００７において、この値がステップＳ１００４で所得した出力可能描画数を超えているかをチェックする。ここでは、出力可能描画数は"制限なし"であるため、ステップＳ１０１２へ進み、この描画要求を制御コードに変換する。そして、この動作は、ステップＳ１００５において、印刷終了命令（EndPrint）９０３を受け取るまで続けられる。その後、印刷終了命令９０３を受け取ったプリンタドライバ５０３は、ステップＳ１０１３へ進み、アプリケーション５０１に印刷終了を通知する。一般的に、この印刷終了通知はグラフィックエンジン５０２を介して行われることが可能である。
【００３７】
このように、アプリケーション５０１はこの印刷終了通知を所得後、出力先がファイルであれば出力ファイルを所得及び参照することが可能となる。
【００３８】
次に、アプリケーション５０１が印刷開始前に、記憶領域６０１の出力可能な描画数（ここでは、１ページ中の出力可能描画数とする）を図１１に示すように変更した場合の出力処理について説明する。本実施形態では、アプリケーションＢがプリンタドライバ５０３の出力可能な描画数を「４」までに制限するものとする。これは、アプリケーションＡ５０１が印刷開始時にプリンタドライバの出力先を、印刷装置とせずに、アプリケーションＢ５０１とした場合に、アプリケーションＢ５０１から通知される情報に基づいて出力可能描画数が設定される。
【００３９】
まず、ステップＳ１００１において、アプリケーションＡからの印刷開始時、プリンタドライバ５０３は描画要求を受け付ける。そして、ステップＳ１００２において、この描画要求が印刷開始命令か判断する。印刷開始時は印刷開始命令（StartPrint）９０１を受け取り、ステップＳ１００３へ進む。次に、プリンタドライバ５０３は、ステップＳ１００３において、ＯＳ共通である記憶領域６０１を読み出す。尚、記憶領域における参照位置はプリンタドライバのＩＤ７０１を判断することにより、位置を識別することが可能である。この時、プリンタドライバの出力先がアプリケーションＢであるため、アプリケーションＢにより記憶領域６０１は図１１に示すような値に設定されている。次に、プリンタドライバ５０３は、ステップＳ１００４において、１ページ中の出力可能な描画数（この場合、"４"）を読み込み、内部データとしてこの値を保持し、ステップＳ１００１へ戻る。
【００４０】
そして、ステップＳ１００１において、グラフィックエンジン５０２を介して描画要求を受け付ける。この描画要求は（Output(1)）９０２に示す描画命令であり、ステップＳ１００２の印刷開始命令、ステップＳ１００５の印刷終了命令ではないため、ステップＳ１００６へ進み、内部データである出力済み描画数をインクリメントする。そして、ステップＳ１００７において、この値がステップＳ１００４で所得した出力可能描画数を超えているかをチェックする。ここでは、出力可能描画数は"４"であるため、出力可能描画数を超えていないと判断し、ステップＳ１０１２へ進み、この描画要求を制御コードに変換する。そして、この動作は論理描画命令９０２を４回受け取るまで続けられる。
【００４１】
その後、５回目の論理描画命令を受け取った時、ステップＳ１００９において、出力可能描画数の上限を超えたと判断し、ステップＳ１０１０へ進み、この論理描画要求は捨てられ、制御コードには変換されない。本実施形態では、５回目の論理描画要求は最初の上限を超えた論理描画要求であり、ステップＳ１０１０において、図１２に示すようなユーザインターフェースを表示してユーザに論理描画要求が無視された旨を表示する。次に、ステップＳ１０１１において、実際に印刷を行ったアプリケーションＡに対して論理描画要求が無視された旨を表示する。一般的に、このアプリケーションＡへの情報通知はグラフィックエンジン５０２を介して行うことが可能である。尚、以後の論理描画要求は、ステップＳ１００９の判定にて非と判断され、無視されることなる。
【００４２】
その後、ステップＳ１００５において、印刷終了命令９０３を受け取ったプリンタドライバ５０３は、ステップＳ１０１３へ進み、アプリケーションＡに印刷終了を通知する。一般的に、この印刷終了通知は一般的にグラフィックエンジン５０２を介して行われることが可能である。
【００４３】
これにより、アプリケーションＡが印刷終了通知を所得後、アプリケーションＢは、出力ファイルを所得及び参照することが可能となる。
【００４４】
図１３は、アプリケーションＡから印刷された描画データの例を示す図である。図１３が大元のアプリケーションデータである。１３０１から１３０７までがそれぞれ印刷時に論理描画要求Output(1)-Output(7)に相当するものとする。
【００４５】
本実施形態においては、論理描画要求Output(4)までは制御コードとして出力されるので、結局制御コード表示部１０２で描画されるデータは図１４のようになり、論理描画要求５、６，７が削除されたものとなる。
【００４６】
尚、本実施形態では、プリンタドライバの出力先のアプリケーションから１ページ中の出力可能な描画数が設定された場合を例に説明したが、全体の出力可能な描画数が設定された場合にも、図１０に示すステップＳ１００７において、ページ単位に出力可能描画数をチェックすると共に、全体の出力可能描画数を越えていないかチェックすることにより、同様に処理することが可能である。
【００４７】
［他の実施形態］
次に、本発明に係る他の実施形態における処理について説明する。
【００４８】
尚、他の実施形態における構成は、前述した実施形態と同様であり、ここではその差分を中心に説明する。
【００４９】
前述した実施形態では、図１０に示すフローチャートのステップＳ１００４で所得する出力可能描画数を共通記憶領域６０１に設定したアプリケーションと、印刷を開始するアプリケーションが異なる例を説明したが、同じアプリケーションから設定を行うことも可能である。
【００５０】
他の実施形態では、前述したアプリケーションＢが印刷を開始する前に、同じまたは別のアプリケーションＢまたはＣが記憶領域６０１の設定をユーザの指定により予め変更する場合について説明する。以後、プリンタドライバ５０３を使用するすべてのアプリケーションで図１０に示した描画処理が行われる。
【００５１】
図１５は、他の実施形態におけるアプリケーションＢ（Ｃ）の変更処理を示すフローチャートである。まず任意のタイミングでアプリケーションＣが起動されると、ステップＳ１５０１において、アプリケーションＢ（Ｃ）は図１６に示すようなユーザインターフェースを表示する。図１６において、１６０１はユーザが特定のプリンタドライバを設定する領域、１６０２は設定されたプリンタドライバのページ中の最大描画数を決定する領域、１６０３は同様に全体の最大描画数を決定する領域である。
【００５２】
ユーザがプリンタドライバ設定領域１６０１、ページ中及び全体の最大描画数の領域１６０２及び１６０３を設定した後、１６０４のＯＫボタンを押下すればステップＳ１５０２からステップＳ１５０３へ進み、アプリケーションＣは記憶領域６０１に設定値を書き込む。ここで、ユーザが図１６に示すように設定したとすれば、この処理により、記憶領域６０１は図１１のように設定されることになる。以後、プリンタドライバ５０３は前述した実施形態と同様に、この記憶領域６０１を参照し、出力描画数を制限して動作することになる。
【００５３】
また、他の実施形態では、出力先である印刷編集アプリケーションからユーザインターフェースを表示したが、ユーザインターフェースを表示することなく、直接記憶領域６０１に書き込んでも良い。
【００５４】
図１７は、直接記憶領域６０１に書き込む処理を示すフローチャートである。まずアプリケーション起動後、ステップＳ１７０１において、印刷編集アプリケーション内部で保持していた値を記憶領域６０１に書き込む。
【００５５】
尚、出力先である印刷編集アプリケーションは、プリンタドライバのインストールのタイミングで起動されることも、或いはプリンタドライバ内部から呼ばれることも可能であり、任意のタイミングで呼ばれることで印刷設定を変更することが可能である。
【００５６】
以上説明したように、制御コード生成モジュール（プリンタドライバ）が出力した制御コードを解釈するラスタライズモジュールの出力可能描画数に準じて、プリンタドライバが出力する出力描画数を制御するように動作させることが可能となる。
【００５７】
ラスタライズモジュールが解釈できない数の描画出力要求はプリンタドライバで削除することにより、描画自体はアプリケーションが保持する印刷データとは違うものとなるが、ラスタライズモジュール毎の特性により、印刷、表示動作が途中で中止されるようなことを回避することが可能となる。
【００５８】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用してもよい。
【００５９】
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００６０】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００６１】
プログラムコードを供給するための記憶媒体としては、例えばフロッピーディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００６２】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００６３】
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００６４】
【発明の効果】
以上説明したように、本発明によれば、プリンタドライバで制御コードに変換される描画命令の数を、変換された制御コードを入力するアプリケーションが設定可能とすることにより、プリンタドライバで変換すべき描画命令の数が設定された描画命令の数を超えていると判断された場合に、その描画命令を制御コードに変換せずに、警告画面を表示し、ユーザに報知することができる。
【図面の簡単な説明】
【図１】本実施形態におけるシステムの概要を示すブロック図である。
【図２】図１に示す（ｂ）及び（ｃ）の主要プログラムモジュールを具体的に表現したものである。
【図３】本実施形態における印刷システムが稼動する情報処理装置の構成を示すブロック図である。
【図４】本実施形態における印刷システムが稼動するプリンタ機器の構成を示すブロック図である。
【図５】ホストコンピュータの典型的な印刷処理モジュールの構成を示す図である。
【図６】本実施形態におけるアプリケーションとプリンタドライバプログラムの情報伝達形態を示す図である。
【図７】本実施形態における情報伝達用の記憶領域を示す図である。
【図８】図７に示す情報伝達用の記憶領域の構成を示す図である。
【図９】本実施形態においてグラフィックエンジン５０２からプリンタドライバ５０３に要求された印字命令の例を示す図である。
【図１０】本実施形態における出力処理を示すフローチャートである。
【図１１】印刷開始時に読み込まれる記憶領域の内容を示す図である。
【図１２】出力可能な描画数を越えたときのユーザインターフェースを示す図である。
【図１３】アプリケーションＢから印刷された描画データの例を示す図である。
【図１４】論理描画要求５、６、７が削除された結果を示す図である。
【図１５】他の実施形態におけるアプリケーションＣの変更処理を示すフローチャートである。
【図１６】他の実施形態におけるユーザインターフェースを示す図である。
【図１７】直接記憶領域６０１に書き込む処理を示すフローチャートである。
【図１】
0004100912.tif 000002
【図２】
0004100912.tif 000003
【図３】
0004100912.tif 000004
【図４】
0004100912.tif 000005
【図５】
0004100912.tif 000006
【図６】
0004100912.tif 000007
【図７】
0004100912.tif 000008
【図８】
0004100912.tif 000009
【図９】
0004100912.tif 000010
【図１０】
0004100912.tif 000011
【図１１】
0004100912.tif 000012
【図１２】
0004100912.tif 000013
【図１３】
0004100912.tif 000014
【図１４】
0004100912.tif 000015
【図１５】
0004100912.tif 000016
【図１６】
0004100912.tif 000017
【図１７】
0004100912.tif 000018