(57)【要約】【課題】ＸＰＳ印刷パスにおいて印刷の保留を可能とし、また、ＧＤＩ印刷パスにおいてスプールデータがＲＡＷ形式である場合でも、例えばページの境目等で印刷の保留を行うことを目的とする。【解決手段】画像処理装置との双方向通信によりネットワークを介して通信可能な画像処理装置のステータス情報を取得しつつ画像処理装置へ印刷データを転送するデータ転送手段を有し、データ転送手段は、プリントキューに登録されたジョブの情報を取得し、取得したプリントキューのジョブの情報に基づき、ジョブの状態を認識し、認識した結果に応じて印刷データを転送する処理を保留又は再開することによって課題を解決する。【選択図】図８
2010134772.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して通信可能な画像処理装置へ印刷データを転送するデータ転送手段を有し、
前記データ転送手段は、プリントキューのジョブの情報に基づき、ジョブの状態を認識し、認識した結果に応じて前記印刷データを転送する処理を保留又は再開することを特徴とする情報処理装置。
【請求項２】
前記データ転送手段は、転送するデータを解析し、前記印刷データを転送する処理を保留する際は、ページの区切りの位置で保留することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記データ転送手段は、前記印刷データを転送する処理を保留する際は、ページの区切りの位置をページの先頭の位置とすることを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記データ転送手段は、前記印刷データを前記画像処理装置へ転送する転送処理の最後に、プリントキューのジョブの情報に基づき、ジョブの状態を認識し、認識した結果に応じて前記印刷データを転送する処理を保留又は再開することを特徴とする請求項１乃至３の何れか１項記載の情報処理装置。
【請求項５】
印刷データを生成する印刷データ生成手段を有し、
前記印刷データ生成手段は、前記データ転送手段の機能が有効でない設定の場合、保留の指示に応じて印刷データの生成処理を保留し、保留解除の指示に応じて印刷データの生成処理を再開することを特徴とする請求項１乃至４の何れか１項記載の情報処理装置。
【請求項６】
情報処理装置における情報処理方法であって、
ネットワークを介して通信可能な画像処理装置へ印刷データを転送するデータ転送ステップを有し、
前記データ転送ステップでは、プリントキューのジョブの情報に基づき、ジョブの状態を認識し、認識した結果に応じて前記印刷データを転送する処理を保留又は再開することを特徴とする情報処理方法。
【請求項７】
前記データ転送ステップでは、転送するデータを解析し、前記印刷データを転送する処理を保留する際は、ページの区切りの位置で保留することを特徴とする請求項６記載の情報処理方法。
【請求項８】
前記データ転送ステップでは、前記印刷データを転送する処理を保留する際は、ページの区切りの位置をページの先頭の位置とすることを特徴とする請求項７記載の情報処理方法。
【請求項９】
前記データ転送ステップでは、前記印刷データを前記画像処理装置へ転送する転送処理の最後に、プリントキューのジョブの情報に基づき、ジョブの状態を認識し、認識した結果に応じて前記印刷データを転送する処理を保留又は再開することを特徴とする請求項６乃至８の何れか１項記載の情報処理方法。
【請求項１０】
印刷データを生成する印刷データ生成ステップを更に有し、
前記印刷データ生成ステップでは、前記データ転送ステップに係る機能が有効でない設定の場合、保留の指示に応じて印刷データの生成処理を保留し、保留解除の指示に応じて印刷データの生成処理を再開することを特徴とする請求項６乃至９の何れか１項記載の情報処理方法。
【請求項１１】
コンピュータに、
ネットワークを介して通信可能な画像処理装置へ印刷データを転送するデータ転送ステップを実行させるプログラムであって、
前記データ転送ステップでは、プリントキューのジョブの情報に基づき、ジョブの状態を認識し、認識した結果に応じて前記印刷データを転送する処理を保留又は再開することを特徴とするプログラム。
【請求項１２】
請求項１１記載のプログラムを記憶したコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
従来、プリンティングシステムは、カラー出力を可能とするカラープリンタと、そのプリンタを制御し印刷データを生成するホストコンピュータと、その双方を接続する通信インタフェースと、から構成されるのが一般的である。ホストコンピュータではオペレーティングシステムが動作しており、各種のソフトウェアがこのオペレーティングシステム上で動作するようになっている。アプリケーションソフトウェアで作成した各種ドキュメントを印刷する際には、アプリケーションソフトウェア、プリンタドライバ、オペレーティングシステムが規定の手順で関数呼び出し等を行うことによってデータをやり取りしてプリンタコマンドを生成する。そして、生成されたプリンタコマンドをプリンタへ転送することで印刷が行われるようになっている。プリンタドライバの中には、オペレーティングシステムが提供する通信機能を用いてプリンタと双方向通信を行い、プリンタのステータス情報を画面上に表示する等して、ユーザの利便性を高めるようになっているものもある。
【０００３】
一般に、オペレーティングシステムはプリントキューを備え、アプリケーションソフトウェアからの印刷ジョブを一旦スプールし、その後順次処理するようになっている。プリントキューの働きによって、プリンタでの印刷完了を待たずにアプリケーションソフトウェアを印刷処理から開放できるようになっている。
【０００４】
プリントキューにスプールされた印刷ジョブの処理を保留（ｐａｕｓｅ）したい場合、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）の印刷システムの一つであるＧＤＩ印刷パスでは、ユーザがプリントキューの操作部で所定の操作を行う。そしてこの所定の操作を受けてオペレーティングシステムがプリントプロセッサと呼ばれるプリンタドライバのモジュールに保留の指示を行う。このことにより、プリントプロセッサが印刷ジョブのデータの生成を保留して、印刷を保留することができるようになっている（非特許文献１）。
【０００５】
一方、近年Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓでは新たな印刷システムとしてＸＰＳ印刷パスが開発され、Ｗｉｎｄｏｗｓ  Ｖｉｓｔａでは標準の印刷システムの一つとして採用されている。ＸＰＳ印刷パスによる印刷では、プリントキューにスプールされるデータとしてプリンタ機種に依存しない汎用的なデータ形式であるＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）形式のデータが用いられる。また、ＸＰＳ印刷パスでは、プリンタドライバのコンポーネントの一部にフィルタパイプラインと呼ばれる機構が設けられている。この機構により、一つ又は複数のフィルタモジュールがページのレイアウト、レンダリング、プリンタへ送信する印刷データの生成等の処理を行うようになっている。上述のＧＤＩ印刷パスにおけるプリントプロセッサの役割もこのフィルタパイプラインが担っているが、ＸＰＳ印刷パスでは、プリントプロセッサに相当するフィルタモジュールに対してオペレーティングシステムが保留の指示を行う仕組みがない。そのため、従来の手法では印刷の保留ができなくなっている。
【０００６】
また、上述のＧＤＩ印刷パスの場合、プリントキューにスプールされる印刷ジョブのデータには、プリンタの機種に依存しない汎用的なグラフィックス言語であるＥＭＦ形式のものと、プリンタの機種固有のデータ形式であるＲＡＷ形式のものと、がある。なお、ここで、ＥＭＦとは、Ｅｎｈａｎｃｅｄ  Ｍｅｔａｆｉｌｅの略である。ＥＭＦ形式のデータはプリントプロセッサにおいてページ単位で処理される。このため、印刷ジョブのデータの生成を保留する処理もページの区切りで行うことができ、結果としてプリンタはあるページの用紙を排出した後、次のページを給紙する前に処理を保留することができる。一方、ＲＡＷ形式のデータでは、プリントプロセッサはページの区切りを判断できないため、印刷ジョブのデータの生成を保留する処理の結果、ページの途中即ち給紙した用紙を排出する前に印刷が保留される場合がある。
【０００７】
【非特許文献１】Ｍｉｃｒｏｓｏｆｔ  Ｄｅｖｅｌｏｐｅｒ  Ｎｅｔｗｏｒｋ、Ｗｉｎｄｏｗｓ  Ｄｒｉｖｅｒ  Ｋｉｔ  ／  Ｐｒｉｎｔ  Ｄｅｖｉｃｅｓ  ／  Ｃｏｎｔｒｏｌ  Ｐｒｉｎｔ  Ｐｒｏｃｅｓｓｏｒ  、［ｏｎｌｉｎｅ］、（ｈｔｔｐ：／／ｍｓｄｎ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ／ｅｎ−ｕｓ／ｌｉｂｒａｒｙ／ａａ５０６５３２．ａｓｐｘ）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述のとおり、ＸＰＳ印刷パスでは従来の手法では印刷の保留を行うことができず、従来のＧＤＩ印刷パスと比較して利便性に劣るという問題がある。
また、ＧＤＩ印刷パスであっても、プリントキューにスプールされるデータがＲＡＷ形式の場合、以下のような問題がある。つまり、ページの印刷の途中で印刷が保留されることがあり、例えばインクジェット方式のプリンタでは、用紙上で保留の前後の境目となる部分にスジ等の印字不良が発生する問題がある。
【０００９】
本発明はこのような問題点に鑑みなされたもので、ＸＰＳ印刷パスにおいて印刷の保留を可能とし、また、ＧＤＩ印刷パスにおいてスプールデータがＲＡＷ形式である場合でも、例えばページの境目等で印刷の保留を行うことを目的とする。
【課題を解決するための手段】
【００１０】
そこで、本発明の情報処理装置は、ネットワークを介して通信可能な画像処理装置へ印刷データを転送するデータ転送手段を有し、前記データ転送手段は、プリントキューのジョブの情報に基づき、ジョブの状態を認識し、認識した結果に応じて前記印刷データを転送する処理を保留又は再開することを特徴とする。
【００１１】
係る構成とすることにより、ＸＰＳ印刷パスにおいて印刷の保留を可能とし、また、ＧＤＩ印刷パスにおいてスプールデータがＲＡＷ形式である場合でも、例えばページの境目等で印刷の保留を行うことができる。
【００１２】
また、本発明は、情報処理方法、プログラム及び記憶媒体としてもよい。
【発明の効果】
【００１３】
本発明によれば、ＸＰＳ印刷パスにおいて印刷の保留を可能とし、また、ＧＤＩ印刷パスにおいてスプールデータがＲＡＷ形式である場合でも、例えばページの境目等で印刷の保留を行うことができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施形態について図面に基づいて説明する。
【００１５】
（実施形態１）
＜コンピュータ（情報処理装置）のハードウェア構成例＞
図１は、情報処理装置の構成の一例を示す図である。なお、情報処理装置は、ネットワークインタフェースや、双方向インタフェースを介して、画像処理装置の一例であるプリンタ（印刷装置）と通信可能に構成されている。
図１において、ＣＰＵ１００は、情報処理装置全体の制御を行い、システムバス１０８を介して各デバイスを制御する。ＣＰＵ１００は、ハードディスク（ＨＤ）１０５に格納されているアプリケーションプログラム、プリンタドライバプログラム、オペレーティングシステム（ＯＳ）や、本実施形態のネットワークプリンタ制御プログラム等を実行する。また、ＣＰＵ１００は、ＲＡＭ１０２にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
【００１６】
ＲＯＭ１０１は、基本Ｉ／Ｏプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。ＲＡＭ１０２は、ＣＰＵ１００の主メモリ、ワークエリア等として機能する。なお、ＲＡＭ１０２には、プリンタドライバが生成する印刷データから印刷領域を算出する場合に、その変数を記憶する領域も確保される。
フレキシブルドライブ１０３は、記憶媒体としてのフレキシブルディスク（ＦＤ）１０４に記憶されたプログラム等を情報処理装置にロードすることができる。フレキシブルディスク１０４は、コンピュータが読み取り可能にプログラムが格納された記憶媒体である。
なお、記憶媒体はフレキシブルディスクに限らず、ＣＤ−ＲＯＭ、ＣＤＲ、ＣＤＲＷ、ＰＣカード、ＤＶＤ、ＩＣメモリカード、ＭＯ、メモリスティック等、任意である。
ＨＤ１０５は、大容量メモリとして機能し、アプリケーションプログラム、プリンタドライバプログラム、ＯＳ、ネットワークプリンタ制御プログラム、関連プログラム等を格納している。
【００１７】
キーボード１０６は、ユーザが情報処理装置に対して、デバイスの制御コマンドの命令等を入力指示するものである。
ディスプレイ１０７は、キーボード１０６から入力したコマンドや、プリンタの状態等を表示するものである。
システムバス１０８は、情報処理装置内のデータの流れを司るものである。インタフェース１０９は、情報処理装置の入出力手段である。情報処理装置は、インタフェース１０９を介して外部装置とのデータのやり取りを行う。
【００１８】
＜ＧＤＩ印刷パスの構成例＞
図２は、情報処理装置に適用可能な印刷システムのうち、ＧＤＩ印刷パスと呼ばれる印刷システムの概略構成の一例を示す図である。なお、情報処理装置には、Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓのオペレーティングシステムを使用するものとする。また、情報処理装置には、印刷処理機能を有する任意のアプリケーション２０１がインストールされているものとする。また、図２には、情報処理装置にケーブル等のインターネットを介してプリンタ２０８が接続された形態を一例として示している。
アプリケーション２０１は、ＧＤＩ２０２を介して、プリンタ２０８に対する印刷設定情報を設定することができる。ここで、印刷設定情報とは、プリンタ２０８においてアプリケーション２０１が生成したページを印刷する用紙の種類、用紙サイズ、給紙先の給紙口等の印刷するために必要な情報である。
【００１９】
ここで、ユーザインタフェースドライバ２０３は、各印刷設定情報において設定可能な選択肢の一覧を、ＧＤＩ２０２を介してアプリケーション２０１に通知する他、各種印刷設定を設定可能なインタフェースを持つ。
アプリケーション２０１が印刷要求した描画データは、ＯＳの描画モジュールであるグラフィックデバイス・インタフェース（ＧＤＩ）２０２経由でプリンタグラフィックドライバ（ＰＧＤ）２０６に渡される。アプリケーション２０１が印刷要求した描画データとは、文書データ、画像データ等の印刷データである。
これによりＰＧＤ２０６により印刷ジョブが生成され、この生成された印刷ジョブはプリンタ２０８へ印刷要求として出力される。
【００２０】
ＧＤＩ２０２は、設定に応じて一旦このデータをＥＭＦデータとしてスプールファイル２０４にスプール（ＯＳのスプール処理）する場合と、プリンタが解釈可能なコマンドの集合であるＲＡＷデータとしてスプールファイル２０４にスプールする場合と、がある。そして、ＧＤＩ２０２は、このスプール処理が終了すると、プリントプロセッサ（ＰＰ）２０５に印刷要求を発行する。
これによりＰＰ２０５は、スプールファイル２０４から印刷出力情報と描画データとをページ単位で読み込む。ＰＰ２０５は、ＥＭＦデータの場合には１ページずつＧＤＩ２０２を介してプリンタグラフィックドライバ（ＰＧＤ）２０６に出力して印刷するように要求する。また、ＰＰ２０５は、ＲＡＷデータの場合にはページを認識せずＧＤＩ２０２を介してランゲージモニタ（ＬＭ）２０７に出力して印刷するように要求する。
【００２１】
なお、このＰＰ２０５は、ＯＳのモジュールとして用意されている。しかし、プリンタ２０８のメーカ等がカスタマイズしたＰＰ２０５をプリンタグラフィックドライバ（ＰＧＤ）２０６と共に供給し、それらをハードディスクにインストールすることも許容されている。本実施形態においては、カスタマイズしたＰＰ２０５がインストールされるものとする。
こうしてＰＰ２０５から印刷が要求されたＰＧＤ２０６は、以下のようなレンダリング処理を行う。つまり、ＧＤＩ２０２が持つ描画機能であるＧＤＩレンダリングエンジンを用いて、その描画データをプリンタ２０８の印刷解像度に合わせてラスタイメージデータにレンダリングする。
このラスタイメージデータは色を多段階の値として保持する多値データであり、これを基にＰＧＤ２０６は、色処理を行い、プリンタ２０８の保持するインク毎の色成分に分解したハーフトーンデータが生成される。
【００２２】
これらのラスタイメージデータ、及びハーフトーンデータを、ページ全体分一度に処理をしようとすると、一般的に非常に大きなメモリが必要になる。
よって、ＰＧＤ２０６は、ＧＤＩ２０２に対して、バンド単位での処理を要求することができる。この場合、ＰＧＤ２０６は、バンドのサイズを指定することができる。また、あるバンドに対して処理が終わった後に、ＰＧＤ２０６がバンドサイズの変更をＧＤＩ２０２に対して要求することもできる。
【００２３】
また、ＰＧＤ２０６は、バンド処理を行うバンドモードではなく、ページ単位で処理を行うアンバンディングモードをＧＤＩ２０２に対して要求し、全ての描画データを独自で保存することもできる。そして、その後、ＰＧＤ２０６は、バンド単位で出力を行うような形態も許容されている。
ＧＤＩ２０２は、印刷設定情報をプリンタコマンドに変換し、変換したプリンタコマンドを印刷すべき印刷データに付加する処理等を行った後、プリンタ２０８に送信する。
実際には、ＰＧＤ２０６から出力されたデータは、ＬＭ２０７に送信依頼という形で出力される。ＬＭ２０７は印刷ジョブを特定サイズのパケットに区切り、プリンタ２０８へ逐一出力する。その際、ＬＭ２０７は、プリンタ２０８へ出力する印刷ジョブのデータを解析し、ページとページの境目とを認識しつつ出力する。つまり、ＬＭ２０７は、印刷ジョブ（又は印刷データ）をプリンタ２０８へ転送（出力）する転送処理の最後に、印刷ジョブのデータを解析し、ページとページの境目とを認識しつつ出力する。ページ間で印刷をぴったりポーズするためには、ページとページの境目とを認識しつつ出力する処理の後に情報処理装置内に印刷ジョブに係るデータが滞留することが無いことが前提となるからである。以下、図３を参照して、より具体的なページとページの境目との認識方法を説明する。
【００２４】
図３は、プリンタ２０８が解釈可能な印刷ジョブのデータの一例を示す図である。印刷ジョブのデータはエスケープシーケンスにより構成されている。印刷ジョブは、まずジョブ開始コマンド（Ｅｓｃ  Ａ）によって開始を宣言される。次に１ページ目の設定として、用紙種別、用紙サイズ、印刷品位をそれぞれ設定するＥｓｃ  ａ、Ｅｓｃ  ｂ、Ｅｓｃ  ｃのコマンドが現れる。続いて、用紙の頭出しを指示する  Ｅｓｃ  ｄコマンドがあり、更に、印字データのビットパターンを格納した  Ｅｓｃ  ｐコマンドが１ページ分続き、ページの最後には排紙命令であるＦＦコマンドが現れる。２ページ目も同様にコマンドが続き、ジョブの終端にはジョブ終了を宣言するＥｓｃ  Ｚコマンドが現れる。Ｅｓｃ  Ａ、ＦＦ、Ｅｓｃ  Ｚの各コマンドは、パラメータを持たない固定長のコマンドである。
【００２５】
一方、Ｅｓｃ  ａ、Ｅｓｃ  ｂ、Ｅｓｃ  ｃ、Ｅｓｃ  ｄ、Ｅｓｃ  ｐの各コマンドは、パラメータを持ち、そのためにコマンドの長さが可変となる可能性があることから、コマンド長を表すパラメータを持っている。各コマンドの３バイト目と４バイト目とがコマンドの長さを２バイトで表したパラメータで、３バイト目が下位バイト、４バイト目が上位バイトを表すようになっている。このパラメータが表すコマンド長は、３バイト目以降のコマンド長であり、例えば図３の１ページ目のＥｓｃ  ａの例では、コマンド長のパラメータ以降の長さが４バイトであることを表している。パラメータを持つコマンドで、コマンド長のパラメータより前の部分の長さは２バイトに固定されているので（Ｅｓｃと１バイトのコマンド識別子とで）、コマンド長のパラメータに２を加えたバイト数がコマンド全体のバイト数と認識できるようになっている。ＬＭ２０７が印刷ジョブを解析するとき、コマンド先頭の１バイト目がＦＦであればこのコマンドは１バイトであり、コマンド先頭の２バイトがＥｓｃ  Ａ、又はＥｓｃ  Ｚであればこのコマンドは２バイトであり、それ以外であれば続く２バイトを解析する。このことでＬＭ２０７は、コマンド全体の長さを認識できる。ＬＭ２０７は、パラメータの内容を認識する必要の無いコマンドの場合は、コマンドごとのレングス分を飛ばして解析することで、解析処理の負荷を軽減することができる。
【００２６】
このＧＤＩ印刷パスにおいて、印刷ジョブをプリンタ２０８へ転送する処理を保留しようとする場合、ユーザはＯＳの提供するプリントキュー画面を操作して、印刷ジョブの保留を指示する。ユーザによって印刷ジョブの保留が指示されると、ＧＤＩ２０２によって印刷ジョブのジョブ情報に一時停止中を表すフラグがセットされる。また、同時に印刷ジョブを処理しているプリンタドライバのＰＰ２０５に対して、ＧＤＩ２０２からジョブを一時保留する旨、通知が行われる。この通知はＰＰ２０５がエクスポートしている関数を、ＧＤＩ２０２が呼び出すことにより行われる。また、一時停止中の印刷ジョブを再開する操作（保留解除する操作）が行われた場合には、ＧＤＩ２０２によって印刷ジョブのジョブ情報の一時停止中を表すフラグが解除される。また、同時に印刷ジョブを処理しているプリンタドライバのＰＰ２０５に対して、ＧＤＩ２０２からジョブの一時保留を解除する旨、通知が行われる。
【００２７】
従来、前記通知を受けたＰＰ２０５が印刷ジョブの処理を保留し、また再開することで、印刷データの生成（印刷データ生成）が保留・再開され、印刷ジョブが保留・再開されるように構成されていた。しかしながら、本実施形態においてはユーザによって印刷ジョブ保留の操作が行われた際のＰＰ２０５及びＬＭ２０７の処理を工夫することで、印刷ジョブ保留に関する利便性を高めている。なお、この方法（又は処理）の詳細については後述する。
【００２８】
＜ＸＰＳ印刷パスの構成例＞
図４は、情報処理装置に適用可能な印刷システムのうち、ＸＰＳ印刷パスと呼ばれる印刷システムの概略構成の一例を示す図である。なお、情報処理装置には、印刷処理機能を有する任意のアプリケーション３０１をインストールされているものとする。また、図４には、情報処理装置にケーブル等のインターネットを介してプリンタ（印刷装置）３０７が接続された形態を一例として示している。
アプリケーション３０１は、ＯＳの印刷コンポーネント３０２を介して、プリンタ３０７に対する印刷設定情報を設定することができる。ここで、印刷設定情報とは、プリンタ３０７においてアプリケーション３０１が生成したページを印刷する用紙の種類、用紙サイズ、給紙先の給紙口等の印刷するために必要な情報である。
【００２９】
ここで、ユーザインタフェースドライバ３０３は、各印刷設定情報において設定可能な選択肢の一覧を、印刷コンポーネント３０２を介してアプリケーション３０１に通知する他、各種印刷設定を設定可能なインタフェースを持つ。
アプリケーション３０１が印刷要求した描画データは、一旦ＸＰＳファイル形式のスプールファイルに格納されたあと、フィルタパイプライン３０５に渡される。アプリケーション３０１が印刷要求した描画データとは、文書データ、画像データ等の印刷データである。
これによって、フィルタパイプライン３０５により印刷ジョブが生成され、この生成された印刷ジョブはプリンタ３０７へ印刷要求として出力される。
【００３０】
印刷コンポーネント３０２は、通常、一旦、そのデータをＸＰＳデータとしてスプールファイル３０４にスプール（ＯＳのスプール処理）する。そして、ＯＳの印刷コンポーネント３０２は、そのスプール処理が終了すると、フィルタパイプライン３０５に印刷要求を発行する。
これによりフィルタパイプライン３０５は、スプールファイル３０４から印刷出力情報と描画データとをページ単位で読み込み、１ページずつ印刷データを生成し、印刷コンポーネント３０２を介してプリンタ３０７へ出力して印刷するように要求する。
なお、このフィルタパイプライン３０５は、プリンタ３０７のメーカ等がカスタマイズしたフィルタパイプライン３０５をプリンタドライバの一部として供給し、それらをハードディスクにインストールするようになっている。
【００３１】
こうしてフィルタパイプライン３０５は、レンダリング処理を行い、得られたラスタイメージデータを基に色処理を行い、プリンタ３０７の保持するインク毎の色成分に分解したハーフトーンデータが生成される。
その後、フィルタパイプライン３０５は、印刷設定情報をプリンタコマンドに変換し、変換したプリンタコマンドを印刷すべき印刷データに付加等を行った後、プリンタ３０７に送信する。
実際には、フィルタパイプライン３０５から出力されたデータは、ＬＭ３０６に送信依頼という形で出力される。ＬＭ３０６は、印刷ジョブを特定サイズのパケットに区切り、プリンタ３０７へ逐一出力する。ＬＭ３０６は、ページの境目の認識しつつプリンタ３０７へ印刷ジョブを出力するようになっているが、その仕組みは前記ＧＤＩ印刷パスにおけるＬＭ２０７と同様である。つまり、ＬＭ３０６は、印刷ジョブ（又は印刷データ）をプリンタ３０７へ転送（出力）する転送処理の最後に、印刷ジョブのデータを解析し、ページとページの境目とを認識しつつ出力する。ページ間で印刷をぴったりポーズするためには、ページとページの境目とを認識しつつ出力する処理の後に情報処理装置内に印刷ジョブに係るデータが滞留することが無いことが前提となるからである。
【００３２】
このＸＰＳ印刷パスにおいても、ＯＳの提供するプリントキュー画面には印刷ジョブの保留・再開を指示するためのユーザインタフェースが提供されている。しかし、この操作が行われたことによってフィルタパイプライン３０５やＬＭ３０６に対する印刷ジョブ保留・再開の通知が行われず、印刷ジョブのジョブ情報に一時停止中を表すフラグがセット・解除されるのみである。したがって、ＧＤＩ印刷パスのように印刷コンポーネント（ＧＤＩ印刷パスではＧＤＩ２０２）からの通知によって処理を保留・再開することで印刷ジョブの保留・再開を行うことはできなくなっている。本実施形態においては、ＬＭ３０６の処理を工夫することで、ＸＰＳ印刷パスにおいて印刷ジョブを保留することを可能にしている。この方法（又は処理）の詳細については後述する。
【００３３】
図５は、ＧＤＩ印刷パス及びＸＰＳ印刷パスの両方においてＯＳが提供するプリントキュー画面の表示の一例を示す図であるである。印刷ジョブごとに、印刷ジョブのドキュメント名、状態、所有者、ページ数、スプールデータのサイズ、受付時刻が表示されるようになっている。
また、図６及び図７は、ＯＳの提供するプリントキュー画面で印刷の保留の操作を行うためのユーザインタフェースの一例を示す図である。図６は、プリンタ２０８又はプリンタ３０７で印刷するためにスプールされる印刷ジョブ全てを一括で保留する場合の操作の一例を示す図である。一方、図７は、特定の印刷ジョブだけを保留する場合の操作の一例を示す図である。
【００３４】
＜ＸＰＳ印刷パスにおける印刷ジョブ保留処理＞
以下、図８を参照して、本実施形態のＸＰＳ印刷パスにおける印刷ジョブ保留処理の詳細を説明する。図８は、ＬＭ３０６において、プリンタ３０７への印刷ジョブ出力処理の処理動作を表すフローチャートである。
上述のとおり、ＸＰＳ印刷パスにおいては、ＯＳの提供するプリントキュー画面での印刷ジョブ保留操作がフィルタパイプライン３０５に通知されない。このため、フィルタパイプライン３０５において、ＧＤＩ印刷パスのようなＯＳからの通知に基づくジョブ保留処理は行えない。このため、本実施形態におけるＸＰＳ印刷パスにおいては、プリントキュー画面での印刷ジョブ保留操作に応じてＬＭ３０６がプリンタ３０７への印刷ジョブ出力処理を保留することによって、印刷ジョブ保留を実現する。
【００３５】
図８ではＸＰＳ印刷パスにおけるＬＭ３０６のプリンタ３０７への印刷ジョブ出力処理の処理動作を表している。ＬＭ３０６の印刷ジョブ出力処理は、ＬＭ３０６がエクスポートしている関数、ＷｒｉｔｅＰｏｒｔ（）を印刷コンポーネント３０２が呼び出すことにより指示される。ＷｒｉｔｅＰｏｒｔ（）関数のパラメータとして、プリンタ３０７へ出力する印刷ジョブのデータとそのサイズとがＬＭ３０６へ渡されるようになっている。ＬＭ３０６はプリンタ３０７への出力処理を行い、出力できたデータサイズを関数の返却値として印刷コンポーネント３０２へ返すようになっている。その後、印刷コンポーネント３０２は出力できたデータの続きの一定サイズのデータを指定してＷｒｉｔｅＰｏｒｔ（）を呼び出す処理を印刷ジョブのデータを全て出力し終えるまで繰り返すようになっている。
【００３６】
ステップＳ８０１において、ＬＭ３０６は、現在処理中の印刷ジョブの印刷ジョブ情報を印刷コンポーネント３０２から取得する。印刷ジョブ情報には、印刷ジョブがプリントキューで保留状態とされているかどうかの情報が含まれている。
ステップＳ８０２において、ＬＭ３０６は、現在処理中の印刷ジョブが保留状態かどうかを判断する。保留状態でない場合には、ＬＭ３０６は、ステップＳ８０７へ進む。ステップＳ８０７において、ＬＭ３０６は、ＷｒｉｔｅＰｏｒｔ（）関数によりプリンタ３０７への出力を指示された印刷データを全てプリンタ３０７へ出力する。そして、ステップＳ８０６において、ＬＭ３０６は、ＷｒｉｔｅＰｏｒｔ（）関数の返却値として出力した印刷データのサイズ（バイト数）を出力した旨設定して、印刷コンポーネント３０２に制御を戻す。
【００３７】
ステップＳ８０２で現在処理中の印刷ジョブが保留状態であると判断した場合、ＬＭ３０６は、ステップＳ８０３へ進む。ステップＳ８０３において、ＬＭ３０６は、ＷｒｉｔｅＰｏｒｔ（）でプリンタ３０７への出力を指示された印刷データの解析を行う。ステップＳ８０４において、ＬＭ３０６は、上述のとおり、コマンド識別子とコマンド長の情報とを基に解析を行い、印刷データがページ先頭を含むかを判断する。
ＬＭ３０６におけるページ先頭を含むかどうかの判断は次のように行う。即ち、ＬＭ３０６は、
（１）印刷ジョブの先頭ページの場合、印刷ジョブ開始後、最初の頭出しコマンド（本実施形態では  Ｅｓｃ  ｄコマンド）が出現した場合、又は、
（２）印刷ジョブの先頭ページ以外では、前ページの排紙コマンド（本実施形態では  ＦＦコマンド）の後最初の頭出しコマンドが出現した場合、
にページ先頭を含むと判断する。
【００３８】
上述のとおり、印刷コンポーネント３０２は一度のＷｒｉｔｅＰｏｒｔ（）呼び出しでは一定サイズのデータの出力しか指定しない。したがって、ＷｒｉｔｅＰｏｒｔ（）で指定されたデータがコマンドの途中で切れたり、排紙コマンドの後頭出しコマンドの前で切れたりすることがありうる。このようなケースに対応するためＬＭ３０６は、ＷｒｉｔｅＰｏｒｔ（）関数から印刷コンポーネント３０２に処理を戻すときにも、印刷ジョブが完了するまでは印刷ジョブの解析状態を初期化せず、次のＷｒｉｔｅＰｏｒｔ（）呼び出しに引き継ぐようにする。
【００３９】
ステップＳ８０４において、ＬＭ３０６は、印刷データがページ先頭を含まないと判断した場合、ステップＳ８０７へ進む。ステップＳ８０７において、ＬＭ３０６は、ＷｒｉｔｅＰｏｒｔ（）関数によりプリンタ３０７への出力を指示された印刷データを全てプリンタ３０７へ出力する。そして、ステップＳ８０６において、ＬＭ３０６は、ＷｒｉｔｅＰｏｒｔ（）関数の返却値として出力した印刷データのサイズ（バイト数）を出力した旨設定して、印刷コンポーネント３０２に制御を戻す。
【００４０】
ステップＳ８０４で印刷データがページ先頭を含むと判断した場合、ＬＭ３０６は、ステップＳ８０５へ進む。
ステップＳ８０５において、ＬＭ３０６は、印刷データの解析の結果、認識したページ先頭の頭出しコマンド（Ｅｓｃ  ｄコマンド）の直前までのデータをプリンタ３０７に出力する。ステップＳ８０６において、ＬＭ３０６は、ＷｒｉｔｅＰｏｒｔ（）関数の返却値として出力した印刷データのサイズ（バイト数）を出力した旨設定して、印刷コンポーネント３０２に制御を戻す。
印刷ジョブが完了するまでは印刷コンポーネント３０２によって繰り返しＬＭ３０６のＷｒｉｔｅＰｏｒｔ（）関数が呼び出される。ＬＭ３０６は、その都度、印刷ジョブ情報を参照して印刷ジョブの保留状態を確認し、保留状態であればページ先頭を区切り位置として、ページ先頭のコマンド以降をプリンタ３０７へ転送しないよう制御し、保留状態が解除されれば転送を再開するよう制御する。
【００４１】
以上のようにして、ＬＭ３０６がＷｒｉｔｅＰｏｒｔ（）関数を呼び出される都度、処理中の印刷ジョブの印刷ジョブ情報を参照し、印刷ジョブが保留状態であるか否かを判断する。そして、ＬＭ３０６が保留状態であれば解析によって検出したページ先頭データの直前までをプリンタ３０７に出力し、その後印刷ジョブの保留状態が解除されるまでデータの出力を保留する。このことによって、ＸＰＳ印刷パスにおいても印刷ジョブの保留処理が行えるようになる。
【００４２】
＜ＧＤＩ印刷パスにおける印刷ジョブ保留処理＞
次に、図９乃至図１１を用いて、本実施形態のＧＤＩ印刷パスにおける印刷ジョブ保留処理の詳細を説明する。
上述のとおり、ＧＤＩ印刷パスにおいては、従来からＰＰ２０５に対してＧＤＩ２０２が印刷ジョブの保留・再開を通知し、それに応じてＰＰ２０５が印刷データ生成を保留・再開することで、印刷ジョブの保留・再開を行えるようになっている。しかしながら、印刷ジョブのスプール形式がＲＡＷ形式の場合にはページの途中で印刷が停止し、印字品位に影響が出る場合がある。本実施形態では、ＧＤＩ印刷パスにおいても、ＬＭ２０７が動作する状況では、上記従来の方法ではなく、ＬＭ２０７からプリンタ２０８への印刷データ転送を保留する方法を用いることにより、ページ途中で印刷ジョブが保留されることを防ぐようになっている。つまり、以下では、ＬＭ２０７が動作する状況でない場合（双方向通信機能が有効になっていない場合）で、ユーザが印刷ジョブの保留、又は解除の操作を行った場合の、ＰＰ２０５の処理を説明する。
【００４３】
図９は、ＯＳの提供するプリントキュー画面でユーザが印刷ジョブの保留の操作を行った結果、ＧＤＩ２０２がＰＰ２０５に印刷ジョブの保留を通知した場合の、ＰＰ２０５の処理動作を表したフローチャートである。
図９のステップＳ９０１において、ＰＰ２０５は、ＯＳ上の設定でプリンタ２０８との双方向通信機能が有効になっているかどうかを判断する。ＰＰ２０５は、双方向通信機能が有効になっている場合は何も処理をせずにＧＤＩ２０２に制御を戻す。一方、双方向通信機能が無効になっている場合には、ステップＳ９０２に進み、ＰＰ２０５は、ＰＰ２０５の内部変数を操作して、印刷ジョブを保留する旨、指定するフラグを有効にする。この処理は、プリンタ２０８との双方向通信機能が無効である場合、即ち、ＬＭ２０７が機能しない設定である場合には、ＰＰ２０５が従来からの印刷ジョブの保留・再開処理を行うよう制御するための処理である。この内部変数の初期値は印刷ジョブを保留しないことを示す値になっているので、プリンタ２０８との双方向通信が有効の設定になっている場合は、ＰＰ２０５による印刷ジョブの保留・再開処理を行わないようになっている。
【００４４】
図１０は、ＯＳの提供するプリントキュー画面でユーザが印刷ジョブの再開の操作を行った結果、ＧＤＩ２０２がＰＰ２０５に印刷ジョブの再開を通知した場合の、ＰＰ２０５の処理動作を表したフローチャートである。
図１０のステップＳ１００１において、ＰＰ２０５は、ＯＳ上の設定でプリンタ２０８との双方向通信機能が有効になっているかどうかを判断する。ＰＰ２０５は、双方向通信機能が有効になっている場合は何も処理をせずにＧＤＩ２０２に制御を戻す。一方、双方向通信機能が無効になっている場合には、ステップＳ１００２に進み、ＰＰ２０５は、ＰＰ２０５の内部変数を操作して、印刷ジョブを保留する旨、指定するフラグを解除する。即ち、ＰＰ２０５は、印刷ジョブを保留しない状態に変更する。
【００４５】
図１１は、ＰＰ２０５による印刷データ生成処理の処理動作の概略を示すフローチャートである。
ＰＰ２０５は、ＧＤＩ２０２からのＰｒｉｎｔＤｏｃｕｍｅｎｔＯｎＰｒｉｎｔＰｒｏｃｅｓｓｏｒ（）関数呼び出しにより、スプールファイル２０４からスプールデータを取得する。そして、ＰＰ２０５は、印刷データを生成して、プリンタ２０８への印刷データ出力を指示するＷｒｉｔｅＰｒｉｎｔｅｒ（）関数を呼び出す。ＰＰ２０５は、この処理を、スプールファイルが終了するまで繰り返す（つまり、ステップＳ１１０１からステップＳ１１０４までの処理を繰り返す）。
このときＰＰ２０５は上述の図９及び図１０でプリンタ２０８との双方向通信機能が無効であると判断した場合に操作された内部変数を参照し、この内部変数が印刷ジョブを保留する旨、示している場合には印刷データの生成と出力とを行わないよう制御する。
【００４６】
このように制御する結果、ＰＰ２０５は、プリンタ２０８との双方向通信を行う設定の場合には、印刷ジョブの保留・再開処理に関与しない。逆に、ＰＰ２０５は、プリンタ２０８との双方向通信を行わない設定の場合には、印刷ジョブの保留・再開処理に関与するように動作することになる。
プリンタ２０８との双方向通信を行う設定の場合、ＰＰ２０５は、生成した印刷データを、ＬＭ２０７を介してプリンタ２０８へ出力されることになる。このとき、ＬＭ２０７は、ＸＰＳ印刷パスにおけるＬＭ３０６と同様に、印刷ジョブ状態を確認し、印刷データを解析し、印刷ジョブの保留・再開の処理を行う。
この結果、ＧＤＩ印刷パスにおいて、ＬＭ２０７が動作する設定の場合にはＬＭ２０７が印刷ジョブの保留・再開の処理を司り、ＬＭ２０７が動作しない設定の場合にはＰＰ２０５が印刷ジョブの保留・再開を司るようになる。これは、ＬＭ２０７が動作する設定では、ページの途中で印刷ジョブが保留されないように制御し、それ以外の場合にはページの途中で印刷ジョブが保留されうるとしても最低限の印刷ジョブの保留・再開の処理が行えるようにしたものである。
【００４７】
（その他の実施形態）
また、本発明の目的は、以下のようにすることによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（又は記録媒体）を、システム或いは装置に供給する。そして、そのシステム或いは装置の中央演算処理手段（ＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行する。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することになり、そのプログラムコードを記録した記憶媒体は本発明を構成することになる。
【００４８】
また、システム或いは装置の前記中央演算処理手段が読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、システム或いは装置上で稼働しているオペレーティングシステム（ＯＳ）等が実際の処理の一部又は全部を行う。その処理によって上述した実施形態の機能が実現される場合も含まれる。
【００４９】
更に、記憶媒体から読み出されたプログラムコードが、前記システム或いは装置に挿入された機能拡張カードや、接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれる。
【００５０】
本発明を前記記憶媒体に適用する場合、その記憶媒体（コンピュータ読み取り可能な記憶媒体）には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【００５１】
以上、上述した各実施形態では、ＸＰＳ印刷パスにおいてＬＭが処理中の印刷ジョブの保留状態を監視し、保留状態となっている場合には印刷データのプリンタへの転送を保留することで、ＸＰＳ印刷パスにおける印刷ジョブの保留処理を実現できる。
また、上述した各実施形態では、ＬＭが印刷データを解析し、印刷データの転送を保留する際にはページの境目で行うことにより、ページの途中で印刷が保留されることを回避し、印刷を保留した場合も良好な印刷結果を得ることができる。
更に、上述した各実施形態では、ＧＤＩ印刷パスにおいて、ＬＭが動作する設定であればＬＭによる印刷ジョブ保留処理を行い、ＬＭが動作しない設定であればプリントプロセッサによる印刷ジョブ保留処理を行う。このことにより、印刷ジョブ保留処理において設定に応じた最大の利便性を提供することができる。
【００５２】
上述した各実施形態によれば、ＸＰＳ印刷パスにおいて印刷の保留を可能とし、また、ＧＤＩ印刷パスにおいてスプールデータがＲＡＷ形式である場合でも、例えばページの境目等で印刷の保留を行うことができる。
【００５３】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００５４】
【図１】情報処理装置の構成の一例を示す図である。
【図２】情報処理装置に適用可能な印刷システムのうち、ＧＤＩ印刷パスと呼ばれる印刷システムの概略構成の一例を示す図である。
【図３】プリンタ２０８が解釈可能な印刷ジョブのデータの一例を示す図である。
【図４】情報処理装置に適用可能な印刷システムのうち、ＸＰＳ印刷パスと呼ばれる印刷システムの概略構成の一例を示す図である。
【図５】ＧＤＩ印刷パス及びＸＰＳ印刷パスの両方においてＯＳが提供するプリントキュー画面の表示の一例を示す図であるである。
【図６】プリンタ２０８又はプリンタ３０７で印刷するためにスプールされる印刷ジョブ全てを一括で保留する場合の操作の一例を示す図である。
【図７】特定の印刷ジョブだけを保留する場合の操作の一例を示す図である。
【図８】ＬＭ３０６において、プリンタ３０７への印刷ジョブ出力処理の処理動作を表すフローチャートである。
【図９】ＯＳの提供するプリントキューでユーザが印刷ジョブの保留の操作を行った結果、ＧＤＩ２０２がＰＰ２０５に印刷ジョブの保留を通知した場合の、ＰＰ２０５の処理動作を表したフローチャートである。
【図１０】ＯＳの提供するプリントキューでユーザが印刷ジョブの再開の操作を行った結果、ＧＤＩ２０２がＰＰ２０５に印刷ジョブの再開を通知した場合の、ＰＰ２０５の処理動作を表したフローチャートである。
【図１１】ＰＰ２０５による印刷データ生成処理の処理動作の概略を示すフローチャートである。
【符号の説明】
【００５５】
１００  ＣＰＵ
１０１  ＲＯＭ
１０２  ＲＡＭ
１０３  ＦＤドライブ
１０４  ＦＤ
１０５  ＨＤ
１０６  キーボード
１０７  ディスプレイ
１０８  システムバス
１０９  インタフェース
【図１】
2010134772.tif 000003
【図２】
2010134772.tif 000004
【図３】
2010134772.tif 000005
【図４】
2010134772.tif 000006
【図５】
2010134772.tif 000007
【図６】
2010134772.tif 000008
【図７】
2010134772.tif 000009
【図８】
2010134772.tif 000010
【図９】
2010134772.tif 000011
【図１０】
2010134772.tif 000012
【図１１】
2010134772.tif 000013