(57)【要約】【課題】  プレビュー実行時と実印刷処理実行時において、同一のレイアウト処理を繰り返し行っていた。【解決手段】  レイアウト処理を行った後の印刷データを用いてプレビューを行い、更に実印刷処理を行う場合はプレビューで使用した印刷データを印刷キューに格納することで、同一の印刷処理を重複して行わないようにした。【選択図】  図２
2008152728.tif 000002
【特許請求の範囲】
【請求項１】
スプールファイルから文書データを入力するレイアウト処理手段と、
前記レイアウト処理手段から文書データを入力するプレビュー文書作成手段と、
前記プレビュー文書作成手段から文書データを入力する印刷コマンド生成処理手段と、
プレビュー用文書データに基づきプレビューを制御するプレビュー制御手段とを有し、
前記レイアウト処理手段は、プレビューフラグが設定されている場合、スプールファイルから入力された文書データを印刷設定情報に基づきレイアウト処理することなく前記プレビュー文書作成手段に出力し、プレビューフラグが設定されていない場合、印刷設定情報に基づきスプールファイルから入力された文書データのレイアウト処理を行い、レイアウト処理された文書データを前記プレビュー文書作成手段に出力し、
前記プレビュー文書作成手段は、プレビュー済みの場合またはプレビューが設定されていない場合、レイアウト処理された文書データを前記印刷コマンド生成処理手段に出力し、プレビュー済みでなくプレビューが設定されている場合、プレビューフラグを設定するとともに、レイアウト処理された文書データに基づきプレビュー用文書データを作成し、
前記プレビュー制御手段は、印刷指示に基づきプレビューフラグが設定された文書データを前記スプールファイルに出力し、
前記印刷コマンド生成処理手段は、レイアウト処理された文書データをプリンタが解釈可能な印刷コマンドに変換することを特徴とする情報処理装置。
【請求項２】
プレビュー用文書データを読み込み、印刷イメージを表示させるプレビュー制御手段を有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記プレビュー文書作成手段は、プレビュー用文書データの作成に応じて印刷キューのジョブが削除されるように処理することを特徴とする請求項１記載の情報処理装置。
【請求項４】
プレビュー時に印刷指示された場合、印刷キューにプレビュー用文書を新規ジョブとして格納する格納手段を有することを特徴とする請求項３記載の情報処理装置。
【請求項５】
プレビューフラグが設定されている場合、スプールファイルから入力された文書データを印刷設定情報に基づきレイアウト処理することなく出力し、プレビューフラグが設定されていない場合、印刷設定情報に基づきスプールファイルから入力された文書データのレイアウト処理を行い、レイアウト処理された文書データを出力し、
プレビュー済みの場合またはプレビューが設定されていない場合、レイアウト処理された文書データを出力し、プレビュー済みでなくプレビューが設定されている場合、プレビューフラグを設定するとともに、レイアウト処理された文書データに基づきプレビュー用文書データを作成し、印刷指示に基づきプレビューフラグが設定された文書データを前記スプールファイルに出力し、
レイアウト処理された文書データをプリンタが解釈可能な印刷コマンドに変換することを特徴とするプレビュー方法。
【請求項６】
プレビュー用文書データを読み込み、印刷イメージを表示させることを特徴とする請求項５記載のプレビュー方法。
【請求項７】
前記プレビュー文書作成手段は、プレビュー用文書データの作成に応じて印刷キューのジョブが削除されるように処理することを特徴とする請求項５記載のプレビュー方法。
【請求項８】
プレビュー時に印刷指示された場合、印刷キューにプレビュー用文書を新規ジョブとして格納することを特徴とする請求項７記載のプレビュー方法。
【請求項９】
プレビューフラグが設定されている場合、スプールファイルから入力された文書データを印刷設定情報に基づきレイアウト処理することなく出力し、プレビューフラグが設定されていない場合、印刷設定情報に基づきスプールファイルから入力された文書データのレイアウト処理を行い、レイアウト処理された文書データを出力し、
プレビュー済みの場合またはプレビューが設定されていない場合、レイアウト処理された文書データを出力し、プレビュー済みでなくプレビューが設定されている場合、プレビューフラグを設定するとともに、レイアウト処理された文書データに基づきプレビュー用文書データを作成し、印刷指示に基づきプレビューフラグが設定された文書データを前記スプールファイルに出力し、
レイアウト処理された文書データをプリンタが解釈可能な印刷コマンドに変換することをコンピュータに実行させることを特徴とするプログラム。
【請求項１０】
プレビュー用文書データを読み込み、印刷イメージを表示することをコンピュータに実行させることを特徴とする請求項９記載のプログラム。
【請求項１１】
プレビュー用文書データの作成に応じて印刷キューのジョブが削除されるように処理することをコンピュータに実行させることを特徴とする請求項９記載のプログラム。
【請求項１２】
プレビュー時に印刷指示された場合、印刷キューにプレビュー用文書を新規ジョブとして格納することをコンピュータに実行させることを特徴とする請求項１１記載のプログラム。
【請求項１３】
請求項９乃至１２いずれか記載のプログラムを記憶した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば印刷処理を行う前に、印刷イメージをユーザが認識可能に表示する、いわゆるプレビュー機能等を有する情報処理装置、プレビュー方法、プログラム、及び記憶媒体に関する。
【背景技術】
【０００２】
従来より、印刷前に印刷イメージを取得して画面に表示する技術が提案されている。
【０００３】
このような技術の一例として、プリンタが解釈可能な印刷コマンドをプリンタに接続された計算機（データ処理装置）によって解析し、その計算機でＣＭＹＫプレーン毎に展開することによって印刷イメージを生成する手法が知られている。また、プリンタに接続された計算機から当該プリンタに印刷コマンドを送信した後、その計算機は当該プリンタ内部で作成された印刷イメージを受信し、受信した印刷イメージに基づいて表示を行なう手法が一般に知られている。
【０００４】
ここで、オペレーティングシステム（ＯＳ）としてＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）を搭載した計算機を用いた印刷システムにおいて、アプリケーションプログラム（アプリケーション）等で生成された印刷データは、ＯＳ標準のデータ形式でスプールファイルに格納される。ＯＳは印刷データを印刷するためにプリンタドライバを呼び出す。そしてプリンタドライバが、スプールファイルに格納された印刷データを読み取り、イメージ生成処理部により印刷イメージを作成し、さらにプリンタが解釈可能な印刷コマンドに変換する。印刷コマンドはプリンタに送信され、プリンタは印刷コマンドを解釈し、記録媒体に像を形成することで印刷処理が実行される。
【０００５】
この印刷システムにおいてプレビュー機能を提供するために、プリンタドライバは印刷処理を開始した時に、印刷イメージを表示するプレビューアを実行する。そして画像生成部はプレビュー用の印刷イメージを作成し、プレビューアは当該プレビュー用の印刷イメージを表示する。つまり、プリンタドライバにおいて、印刷イメージを作成する当該画像生成部と、印刷イメージを表示する当該プレビューアとが協調することにより、プレビュー機能が実現される。（特許文献１参照）
【０００６】
また、印刷ジョブを結合する機能を有する印刷システムにおけるプレビューでは、それぞれの印刷ジョブのレイアウトを考慮したプレビューを行える仕組みが考案されている。印刷すべきデータを中間コード形式に変換した印刷ジョブを結合して１つの結合ジョブを生成する際に、結合ジョブ内のそれぞれの印刷ジョブのレイアウト情報を個別に保存する。結合ジョブのプレビューを表示する際には、プレビューを行うページに対応するレイアウト情報を参照することで、結合ジョブ内のそれぞれの印刷ジョブのレイアウトを再現する。また、中間データの他にレイアウト情報を持つことで、結合ジョブ内のそれぞれの印刷ジョブのレイアウト情報を、同一結合ジョブ内の他の印刷ジョブに影響を与えることなくプレビュー中に変更することができる。（特許文献２参照）
【特許文献１】特開２００４−１０２６１８号公報
【特許文献２】特開２００１−１３００８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、前記のような従来の技術には次のような解決すべき課題があった。
【０００８】
前記従来例の第一の手法では、プリンタドライバがＯＳに呼び出されている間にプレビューの実行が可能であった。ＯＳがプリンタドライバを呼び出し印刷処理を行うのは、印刷キュー中の先頭の印刷ジョブを対象としている。通常、印刷処理の対象となる印刷ジョブは印刷キューにつき一つのみとなる。従って、プレビュー機能を実行している間は、他の印刷ジョブは印刷対象にならない。このため印刷キュー中に印刷処理中の印刷ジョブがある場合、他の印刷ジョブのプレビュー機能を実行できない欠点がある。また、印刷処理中の印刷ジョブにおいてプレビュー機能を実行している際、少なくともプレビュー機能を実行しているジョブの処理が終了するまで、同一印刷キュー中の他のジョブは印刷されない欠点がある。また、同ＯＳを用いれば複数のユーザーが同時に印刷ジョブを発行することがあるにも関らず、複数のユーザが同時にプレビュー機能を利用できないことが問題である。
【０００９】
レイアウト処理の視点では、プレビュー用の印刷イメージを作成する際にレイアウト処理を行い、さらにその時点では上記印刷ジョブは中間データなので、プレビュー画面を表示させるためには、ビットマップ化処理を行わなければならない。このように画面表示用にビットマップ化処理を行ったプレビュー用のビットマップデータは、実際に印刷処理を続行させるにおいて、必ずしもプリンタが必要とするビットマップデータに適合していないので、流用することができない。すなわち、実際に印刷を行うための印刷イメージを作成するにあたってはレイアウト処理を再度行う必要がある。つまり同一のレイアウト処理を印刷イメージを作成する度に繰り返し行う必要があり、同一処理を重複して行う問題がある。
【００１０】
前記従来例の第二の手法では、複数の印刷ジョブを結合するにあたりレイアウト情報を別途保存するため、プレビュー機能で印刷イメージを表示する際にレイアウト処理が必要となる。また、プレビュー中にレイアウト情報を変更できることから、実際にプリンタで印刷する際にもレイアウト処理が必要になる。つまり、プレビュー中にレイアウト情報が変更されなかった場合は、同一のレイアウト処理をプレビュー時と実印刷時に繰り返し行う必要があり、同一処理を重複して行う問題がある。
【００１１】
本発明は上記従来の問題点に鑑み、同一のレイアウト処理を重複して行わないことで効率的に処理を行う、プレビュー機能を有するプリンタドライバを提供することを目的とする。また、プレビュー表示中に印刷キュー中の後続の印刷ジョブを処理できることを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明の情報処理装置は、スプールファイルから文書データを入力するレイアウト処理手段と、
前記レイアウト処理手段から文書データを入力するプレビュー文書作成手段と、
前記プレビュー文書作成手段から文書データを入力する印刷コマンド生成処理手段と、
プレビュー用文書データに基づきプレビューを制御するプレビュー制御手段とを有し、
前記レイアウト処理手段は、プレビューフラグが設定されている場合、スプールファイルから入力された文書データを印刷設定情報に基づきレイアウト処理をすることなく前記プレビュー文書作成手段に出力し、プレビューフラグが設定されていない場合、印刷設定情報に基づきスプールファイルから入力された文書データのレイアウト処理を行い、レイアウト処理された文書データを前記プレビュー文書作成手段に出力し、
前記プレビュー文書作成手段は、プレビュー済みの場合またはプレビューが設定されていない場合、レイアウト処理された文書データを前記印刷コマンド生成処理手段に出力し、プレビュー済みでなくプレビューが設定されている場合、プレビューフラグを設定するとともに、レイアウト処理された文書データに基づきプレビュー用文書データを作成し、
前記プレビュー制御手段は、印刷指示に基づきプレビューフラグが設定された文書データを前記スプールファイルに出力し、
前記印刷コマンド生成処理手段は、レイアウト処理された文書データをプリンタが解釈可能な印刷コマンドに変換することを特徴とする。
【発明の効果】
【００１３】
上記構成により本発明によればプレビューアから印刷開始を指示してもレイアウト処理は１回しか行わない為、コンピュータの負荷が軽減する効果が得られる。また、プレビュー用電子文書の作成が終了していれば、プレビュー中でも印刷キュー中の後続の印刷ジョブを処理できる。
【発明を実施するための最良の形態】
【００１４】
以下、図面に示す実施例に基づき本発明を詳細に説明する。尚、本文中のＸＰＳとはＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎの略で、Ｍｉｃｒｏｓｏｆｔ社が開発したオープン規格の電子文書フォーマットの一つである。
【００１５】
＜ＸＰＳ文書の構成＞
本文の理解を容易にするため、まずＸＰＳについて簡単に説明する。ＸＰＳ文書はＦｉｘｅｄＤｏｃｕｍｅｎｔＳｅｑｕｅｎｃｅ（以下ＦＤＳ）をルートとするツリー構造になっている。ＦＤＳは複数のＦｉｘｅｄＤｏｃｕｍｅｎｔ（以下ＦＤ）を持ち、ＦＤは複数のＦｉｘｅｄＰａｇｅ（以下ＦＰ）を持つ。ＦＤＳとＦＤとＦＰのそれぞれは、ＸＰＳパートと呼ばれることがある。ＦＰは文書のページの内容をＸＭＬ形式で記述しており、実際に表示または印刷される内容を含んでいる。ＦＰのページ内容で使用されるフォントや画像等の資源は複数のＦＰで共有することができる。また、ＦＤＳとＦＤとＦＰははそれぞれ印刷設定をＰｒｉｎｔＴｉｃｋｅｔ（以下ＰＴ）で持つことができる。ＰＴはＸＰＳ文書を印刷する際の印刷設定をＸＭＬ形式で記述したものである。ここで各ＦＰを印刷する際に使用する印刷設定は、ＦＤＳのＰＴと、印刷対象ＦＰの親ＦＤのＰＴと、印刷対象ＦＰのＰＴをマージしたＰＴとなる。
【００１６】
図５はＸＰＳ文書の論理構造を示したブロック図の一例である。ＸＰＳ文書５０１の論理構造はＦＤＳ５０３がルートとなるツリー構造となっている。ＦＤＳ５０３は子としてＦＤ５１１とＦＤ５１３を有する。ＦＤ５１１は子としてＦＰ５２１とＦＰ５２３を有する。ＦＤ５１３は子としてＦＰ５２５を有する。印刷設定を記述したＰＴについては、ＦＤＳ５０３がＰＴ５３１を、ＦＤ５１１がＰＴ５３３を、ＦＰ５２１がＰＴ５３５を、ＦＤ５１３がＰＴ５３７をそれぞれ保持している。ＦＰ５２３とＦＰ５２５はＰＴを保持していない。また、ＦＰ５２１とＦＰ５２３がフォントや画像等の資源５４１を共有しており、ＦＰ５２５はフォントや画像等の資源５４３を利用している。ここで例えばＦＰ５２１を印刷する際に使用するＰＴは、ＰＴ５３１とＰＴ５３３とＰＴ５３５をマージしたＰＴとなる。
【００１７】
以上説明したように、ＸＰＳ文書は論理的にＸＰＳパートという概念を用いると理解が容易になる。ただし、ＸＰＳ文書自体はバイト列（ストリーム）として取り扱いが可能である為、ＸＰＳ文書内部のデータを指す場合はＸＰＳデータという言葉を用いることもある。従って本文においてもＸＰＳパートとＸＰＳデータという言葉を用いて実施例を説明する。
【００１８】
＜印刷システムの構成＞
図１は本発明の実施の一形態に係る印刷システムの構成を示すブロック図である。プリンタ１０１は、画像形成を行うインクジェット方式のプリンタであり、後述するデータ処理装置１０２で生成された印刷コマンドに基づいて記録媒体１００に画像の形成を行う。プリンタの種類については特に問わないが、ここではインクジェット方式のカラープリンタを想定している。データ処理装置１０２は、アプリケーションが印刷ジョブを作成し、プリンタドライバが印刷ジョブのスプールデータから、接続されたプリンタ１０１の印刷動作を制御する印刷コマンドの生成を行う。本実施形態ではデータ処理装置１０２としてパーソナルコンピュータを用いている。印刷の設定に関するユーザーからの指示や入力を受ける役割も果たす。データ処理装置１０２は、各種機能ブロック１３０〜１３５、１４０〜１４３によって構成される。また、データ処理装置１０２には、データ処理装置１０２を制御するＯＳが組み込まれており、このＯＳ上で各種機能ブロックが動作する。通信インターフェース１０３は、データ処理装置１０２とプリンタ１０１を接続する通信インタフェースである。本実施形態ではシリアルインタフェースであるＵＳＢを用いているが、この他に、ＩＥＥＥ１３９４、Ｅｔｈｅｒｎｅｔ（登録商標）、ＩｒＤＡ、ＩＥＥＥ８０２．１１、電力線などのシリアルインターフェースや、セントロニクス、ＳＣＳＩなどのパラレルインタフェースを利用することもできる。通信を実現するものであれば有線／無線を問わずどのようなインタフェースであっても構わない。このように、本実施形態における印刷システムとは、単体の装置ではなく、データ処理装置１０２と画像形成を行うプリンタ１０１とが特定の双方向インタフェースで接続された構成をとっている。しかしながら、この例に限られることなく、このようなデータ処理装置とプリンタの機能が一体となった装置一体型の印刷システムであってもよい。尚、プリンタ１０１及びデータ処理装置１０２とも本実施形態の特徴を説明する上で特に必要ないと思われる機能については省略する。
【００１９】
中央制御部１４１は、データ処理装置１０２の各種機能を制御し、ＣＰＵの持つ機能がこれに該当する。入力操作部１４２は、ユーザーの意図を印刷設定に反映させるための各種入力機器から構成される。設定情報通知部１４３は、印刷設定をユーザーに通知する。通知方法としては、モニタなどの表示装置を使用する場合や音声による通知などが考えられる。Ｉ／Ｆ制御部１４０は、データ処理装置１０２のインタフェース機能を司る。Ｉ／Ｆ制御部１４０はＵＳＢのホスト側のコントローラによって構成され、ＵＳＢホストとしての機能を有する。ＵＳＢホストとしての機能の一部はＯＳやドライバなどソフトウェアによっても構成される。記憶部１４４はＯＳやアプリケーションプログラムやプリンタドライバの命令コードを格納したり、ソフトウェアが動作するにあたり一時的にデータを保存・読込みするのに使用される。記憶部１４４は例えばハードディスクドライブや半導体メモリなどで構成される。プリンタドライバ１３０は、印刷のための各種設定や印刷データの生成及びプリンタの制御をデータ処理装置１０２上で行うためのソフトウェアである。中央制御部１４１によりプリンタドライバのプログラムが実行されて、印刷設定処理部１３１や、レイアウト処理部とプレビュー文書作成部と印刷コマンド変換処理部を含む印刷コマンド生成部１３４、データ通信処理部１３３などの機能が実現される。印刷設定処理部１３１は、用紙の設定や印刷品位の設定などを含む各種印刷設定を行う。印刷設定処理部１３１は、ユーザーからの指示や入力を受け付け、設定された内容を表示もしくは通知する機能を有する。印刷コマンド生成部１３４では、まず、レイアウト成処理部においてアプリケーションにより作成された印刷ジョブのページのレイアウト処理を行う。その後、プレビュー文書作成部において印刷設定に応じプレビュー用文書を作成する。そして、印刷コマンド変換処理部においてレイアウト処理後の印刷データを印刷コマンドに変換する。印刷コマンド生成部１３４で作成された印刷コマンドは、データ通信処理部１３３を介してＩ／Ｆ制御部１４０に送られ、プリンタ１０１へ印刷コマンドが送られる。プレビュー制御部１３５は、プレビュー文書作成部によって作成されるプレビュー用文書を用いて、プレビュー機能をユーザに提供する。ここでプレビュー機能とはプレビュー用文書を用いて印刷イメージを情報通知部１４３を介して表示し、ユーザからの指示を入力操作部１４２を介して取得し、表示する印刷イメージを切り替えたり、印刷を続行したり、印刷をキャンセルしたりする機能のことを指す。
【００２０】
＜プリンタドライバの動作＞
図２は、本発明におけるプリンタドライバの実施形態を説明するために図１の印刷システムをＯＳの印刷サポート機能とプリンタドライバを中心に概念的に表したブロック図である。図２において、本発明に関るモジュールは、印刷設定処理部の機能を有するユーザインタフェースモジュール２１１と、印刷コマンド生成部の機能を有するフィルターパイプライン２０７である。ここでフィルターパイプライン２０７は、レイアウトフィルター２１３と、プレビューフィルター２１５と、印刷コマンドフィルター２１７で構成される。なお、レイアウトフィルター２１３はＸＰＳデータのページをレイアウト処理する機能を有する。プレビューフィルター２１５はプレビュー機能を提供するためのフィルターである。印刷コマンドフィルター２１７はＸＰＳデータをプリンタが解釈可能な印刷コマンドに変換する機能を有する。
【００２１】
ここでフィルターとは、一般的に入力されたデータをもとに、加工、変換、無変換、生成等の工程を介して、何らかのデータを出力する機能を有するプログラムのことを称する。
【００２２】
図２における印刷システムでは、アプリケーション２０１が作成した文書の各ページの印刷データは、ＯＳの印刷サポート機能２０３を通じてＸＰＳスプールファイル２０５に一時的に蓄えられる。そして、これをプリンタドライバのフィルターパイプライン２０７がプリンタが解釈可能な印刷コマンドに変換してプリンタ２３１に供給して印刷するよう構成されている。
【００２３】
ユーザインタフェースモジュール２１１は、一般に印刷に使用する用紙サイズや印刷方向、その他の属性を設定する機能を提供する。同時に本発明におけるユーザインタフェースモジュール２１１は、プリンタによる印刷動作を開始する前に印刷イメージを表示するプレビューを設定する機能を有する。ユーザインタフェースモジュール２１１は、複数の印刷設定項目の設定値が格納された印刷設定情報をアプリケーション２０１に返却する。ユーザインタフェースモジュール２１１が提供する印刷設定ダイアログの一例については図３を用いて後述する。
【００２４】
アプリケーション２０１は作成した文書の印刷にあたり、ＯＳの印刷サポート機能２０３に対して、印刷開始や印刷終了を通知したり、印刷設定を行うためにユーザインタフェースモジュール２１１から返却された印刷設定情報を通知したり、文書の各ページの描画開始や描画終了を通知する。ＯＳの印刷サポート機能２０３は、アプリケーションが描画した内容や印刷設定情報をＸＰＳスプールファイル２０５に格納する。
【００２５】
フィルターパイプライン２０７は一つ以上のフィルターで構成されており、印刷時にＸＰＳスプールファイルから印刷設定情報とＸＰＳパートとを読込み、プリンタが解釈可能な印刷コマンドに変換してプリンタ２３１に供給し、印刷を行う機能を有する。各フィルターはスプールされた印刷ジョブをデスプール際にＯＳの印刷サポート機能から呼び出される。スプールされたＸＰＳデータはフィルターパイプライン２０７の各フィルターを通過するＸＰＳデータのまま内容が編集され、或いはドライバ独自のデータ形式に変換され、最終的にプリンタが解釈可能な印刷コマンドに変換される。印刷ジョブのＸＰＳデータを全て処理し終えた場合、或いは、印刷ジョブがキャンセルされた場合は、フィルターパイプライン２０７の各フィルターは動作を終了する。本実施形態におけるフィルターパイプライン２０７はレイアウト処理部であるレイアウトフィルター２１３と、プレビュー文書作成部であるプレビューフィルター２１５と、印刷コマンド変換部である印刷コマンドフィルター２１７で構成される。
【００２６】
レイアウトフィルター２１３は、ＸＰＳスプールファイル２０５に格納されたＸＰＳデータを入力とし、印刷設定情報に基づきページのレイアウト処理を行い、レイアウト済みのＸＰＳデータを出力する機能を有する。ただし、印刷設定情報にレイアウト設定がなされていない場合や、プレビュー済フラグが格納されている場合は、入力のＸＰＳデータをそのまま出力する。本実施例におけるレイアウト処理とは例えば複数のページを一つの用紙面に印刷するＮ−ｕｐ印刷や、一つのページを複数の用紙面に印刷するポスター印刷等を含む。
【００２７】
プレビューフィルター２１５は、レイアウトフィルター２１３の出力を入力とし、印刷設定情報に基づきユーザにプレビュー機能を提供する。ただし、印刷設定情報のプレビュー設定がＯＦＦである場合や、プレビュー済フラグが格納されている場合は、入力のＸＰＳデータをそのまま出力する。印刷設定情報にプレビュー済フラグが格納されていなく、かつ、プレビュー設定がＯＮである場合、プレビューフィルター２１５はＦＤＳの印刷設定情報であるＰＴにプレビュー済フラグを格納する。続いてプレビュー制御モジュール２１９を起動し、プレビュー用ＸＰＳ文書２２１を用意する。プレビューフィルター２１５は、プレビュー用ＸＰＳ文書２２１にＦＤＳを格納した後、入力のＸＰＳパートをキャッシュすると共にプレビュー用ＸＰＳ文書２２１に格納していく。入力の最後のＸＰＳパートを処理する前に、プレビュー制御モジュール２１９から印刷続行の通知を受けた場合は、ＦＤＳとキャッシュしたＸＰＳパートを出力し、残りのＸＰＳパートを入力から取得し、そのまま出力する。また、プレビューフィルター２１５は、プレビュー用ＸＰＳ文書２２１を完成させるとともに、各フィルターの処理を終了させる。
【００２８】
印刷コマンドフィルター２１７はプレビューフィルター２１５の出力を入力とし、印刷設定情報に従い、ＸＰＳデータをプリンタが解釈可能な印刷コマンドに変換し出力する機能を有する。印刷コマンドフィルター２１７が入力のＸＰＳデータを一度イメージデータに変換する場合、一般的にレンダーフィルターと呼ばれる。レンダーフィルターはインクジェットプリンタに代表される廉価なラスタープリンタ用のプリンタドライバにおいて多く見られる。印刷コマンドフィルター２１７がレンダーフィルターとして動作する場合は、入力のＸＰＳデータを一度イメージデータに変換する。その後、色空間の変換や二値化等の画像処理の過程を経て、ラスタープリンタが解釈可能な印刷コマンドに変換される。ページプリンタに代表される高機能なプリンタにおいて、プリンタが解釈できる印刷コマンドの種類にＸＰＳが含まれるならば、印刷コマンドフィルター２１７は入力のＸＰＳデータを編集しＸＰＳデータを出力する。印刷コマンドフィルター２１７にて処理する必要がなければ、入力のＸＰＳデータをそのまま出力するか、印刷コマンドフィルター２１７はプリンタドライバに含めなくても良いことは言うまでもない。
【００２９】
出力デバイスであるプリンタ２３１は、フィルターパイプライン２０７で生成された印刷コマンドを解釈し、可視画像を印刷用紙に対して形成する機能を持つ。印刷用紙２４１で図示される印刷結果の例は、レイアウトフィルター２１３が２−ｕｐの処理を行った場合を示している。
【００３０】
ここで２−ｕｐ印刷とは、ＸＰＳスプールファイル２０５に格納されている２つのページを縮小し、ユーザが見やすいように同一用紙面に配置したページを印刷することである。同様にＮ個のページを縮小し、同一用紙面に配置すればＮ−ｕｐ印刷となる。従ってＮ−ｕｐのレイアウト処理によって作成されたレイアウト済みのページには、ＸＰＳスプールファイル２０５に格納されていた複数のページの内容に関するＸＭＬ記述を含むことになる。例えばＸＰＳスプールファイル２０５に格納されているページの内容に関するＸＭＬ記述のサイズが一定だとすると、２−ｕｐのレイアウト処理後のページの内容に関するＸＭＬ記述のサイズは約２倍となる。同様にＮ−ｕｐのレイアウト処理後のページの内容に関するＸＭＬ記述のサイズは約Ｎ倍となる。従ってＸＰＳスプールファイル２０５に格納されているページの内容が複雑な場合、ページの内容のＸＭＬ記述のサイズが大きく成る為、レイアウト処理に要するコストが増加する。また、Ｎ−ｕｐの配置するページ数（Ｎ）が多くなるほどレイアウト処理に要するコストが増加する。
【００３１】
プレビュー制御モジュール２１９は、プレビュー用ＸＰＳ文書２２１を読込み、ユーザにプレビューを提供する機能を有する。プレビュー制御モジュール２１９はユーザにプレビュー用のユーザインタフェースを提供し、印刷イメージを表示したり、ユーザの指示に従い表示するページの印刷イメージを切替たり、印刷を続行したり、印刷を中断したりする。プレビューフィルター２１５がプレビュー用ＸＰＳ文書２２１にＸＰＳデータを書き込んでいる間に印刷開始がユーザに指示された場合、プレビュー制御モジュール２１９はプレビューフィルター２１５に印刷続行を通知し終了する。プレビューフィルター２１５がプレビュー用ＸＰＳ文書２２１にＸＰＳデータを書き込んでいる間に印刷キャンセルがユーザに指示された場合、印刷ジョブのキャンセルを行い終了する。プレビュー用ＸＰＳ文書２２１が完成した後に印刷開始がユーザに指示された場合、プレビュー用ＸＰＳ文書２２１のデータを用い新規の印刷ジョブを作成し終了する。プレビュー用ＸＰＳ文書２２１が完成した後に印刷キャンセルがユーザに指示された場合は終了する。プレビュー制御モジュール２１９が終了する際にはプレビュー用ＸＰＳ文書２２１を削除する。プレビュー制御モジュール２１９が提供するプレビューウィンドウについては図４を用いて後述する。
【００３２】
ここで、図２を用いてプレビュー設定がＯＮの２−ｕｐ印刷を行う場合について説明する。アプリケーション２０１はＯＳの印刷サポート機能２０３を介しユーザインタフェースモジュール２１１の印刷設定機能を利用する。印刷設定情報としてプレビュー設定をＯＮに設定し、レイアウト設定を２−ｕｐに設定する。アプリケーション２０１は取得した印刷設定情報を用いて、複数ページからなる文書の印刷を開始する。アプリケーション２０１の文書の印刷データと印刷設定情報はＯＳの印刷サポート機能を介してＸＰＳスプールファイル２０５に格納される。ＸＰＳスプールファイル２０５に文書のページがスプールされ始めると、ＯＳの印刷サポート機能はフィルターパイプライン２０７を起動する。レイアウトフィルター２１３は印刷設定情報を参照しレイアウト印刷設定が２−ｕｐになっているため、ページのレイアウト処理を行い、レイアウト後のページを出力する。プレビューフィルター２１５は印刷設定情報にプレビュー済フラグを格納し、印刷設定とＸＰＳデータをプレビュー用ＸＰＳ文書２２１に格納し、プレビュー制御モジュール２１９を起動する。プレビュー制御モジュール２１９はプレビュー用ＸＰＳ文書２２１を用いて印刷イメージを表示し、ユーザに印刷機能を提供する。
【００３３】
ここでアプリケーション２０１の文書が２ページで構成されているとすれば、レイアウト設定で２−ｕｐが指定されている為、プレビュー用ＸＰＳ文書２２１に格納されるページ数は１ページとなる。従ってプレビュー用ＸＰＳ文書２２１の作成は終了しているので、ユーザが印刷開始をプレビュー制御モジュール２１９に指示した場合は、新規の印刷ジョブを作成しプレビュー用ＸＰＳ文書２２１の内容をそのまま格納する。新規の印刷ジョブが再び印刷された時は、印刷設定情報にプレビュー済フラグが格納されている為、レイアウトフィルター２１３とプレビューフィルター２１５では入力がそのまま出力される。続いて印刷コマンドフィルター２１７によって、入力のＸＰＳデータがプリンタが解釈可能な印刷コマンドに変換される。プリンタ２３１は供給された印刷コマンドを解釈し印刷用紙に像を形成し、出力結果２４１が得られる。
【００３４】
また、アプリケーション２０１の文書のページ数が非常に多く、ユーザが印刷開始をプレビュー制御モジュール２１９に指示した時点で、プレビュー用ＸＰＳ文書２２１が作成中であれば、プレビュー制御モジュール２１９はプレビューフィルター２１５に印刷続行を通知する。プレビュー用ＸＰＳ文書２２１を作成中のプレビューフィルター２１５は、プレビュー用ＸＰＳ文書２２１の作成を中止し、保持しているＸＰＳパートを全て出力し、入力から残りのＸＰＳパートを取得し出力する。続いて印刷コマンドフィルター２１７により入力は印刷コマンドに変換され、これをプリンタ２３１が解釈して印刷結果２４１が得られる。
【００３５】
このようにプレビュー時において処理済のレイアウト処理を、印刷続行時には行わないようにすることで、同一処理の重複実行を排除し、効率的な印刷処理が行えるようになる。
【００３６】
また、ある印刷ジョブのプレビュー中にプレビュー用ＸＰＳ文書２２１の作成が完了した場合は、当該印刷ジョブの印刷処理は一旦終了できるため、印刷キューに存在する後続の印刷ジョブの印刷処理を開始することができる。従って、ある印刷ジョブのプレビュー中に、他の印刷ジョブのプレビューを行うことが可能となり、また、他の印刷ジョブの印刷コマンドを生成しプリンタを駆動することが可能となる。
【００３７】
ここで、本実施例では理解を容易にする為にフィルターパイプライン２０７は機能ごとにフィルターを分け、三つのフィルターで構成されるようにした。しかし、これらのフィルターの機能を単一のフィルターで実現しても良いことは言うまでもない。
【００３８】
また、本実施例では理解を容易にする為に各フィルターは入力と、印刷コマンド以外の出力をＸＰＳパートで取り扱うように記述した。しかし各フィルターにおける入出力はＸＰＳデータをストリームで扱うような形式にしても良いことは言うまでもない。
【００３９】
＜印刷設定画面＞
図３は本実施形態における印刷モードや各種用紙設定を行う際に表示される印刷設定ダイアログの一例を示す図である。図３において、印刷設定ダイアログ３０１は、表示エリア３０２〜３１１、３２０〜３３１から構成される。印刷設定では表示する項目が非常に多いため、タブシートを使用して設定項目を内容ごとに分けて見やすい構成にするのが通例である。
【００４０】
図３に基本設定タブ３０２が選択された場合の表示例を示す。基本設定の簡易表示エリア３２０には、文字情報だけでなく視覚に訴える形で設定された情報を表示する。用紙種類選択部３２２は、用紙の種類を表示するとともに利用者により選択させることができる。用紙種類選択部３２２はドロップダウンメニューとなっており普段は選択されている用紙の種類が表示され、そこをクリックすることで選択可能な用紙種類がリスト表示される。選択可能な用紙の種類はプリンタで印刷可能な用紙であり、図示されている普通紙の他にも例えば光沢紙、コート紙、写真専用紙、ハガキ、年賀状葉書等が含まれる。給紙方法選択部３２３は、プリンタ本体が用紙を給紙する給紙方法を表示し、利用者による給紙方法の選択をさせることができる。利用者は、給紙方法選択部３２３により、たとえば自動給紙口である給紙トレイや給紙カセット、または印刷用紙を一枚ずつ手動で給紙する「手差し給紙」などを選択できる。印刷品質選択部３２４は利用者に印刷の品位を設定させるための項目である。色調整部３２５は利用者に印刷の色を調整させるための項目である。モノクロ印刷設定部３２６は、印刷文書がカラーであっても印刷結果をグレースケールにするためのチェックボックスである。プレビュー印刷設定部３２７は、各種印刷設定がどのように印刷文書に反映されるかを、プリンタによる実際の印刷が行われる前に確認するためのチェックボックスである。標準設定部３３１が押されると、基本設定３０２の設定が標準（出荷時設定）に戻される。
【００４１】
ユーザーは各項目を選択した後にＯＫボタン３０８を押下することで印刷設定ダイアログ３０１を閉じ、選択した印刷設定を印刷に反映させることができる。キャンセルボタン３０９を押下すると印刷設定ダイアログ３０１が閉じ、選択した設定項目の内容は破棄され印刷に反映されることはない。適用ボタン３１０は印刷設定ダイアログ３０１は開いたままで選択した印刷設定を印刷に反映させることができる。ヘルプボタン３１１は基本設定３０２の各設定項目に関する説明文を別ウィンドウで表示させることができる。
【００４２】
＜プレビュー制御モジュールのプレビューウィンドウ＞
図４に、本実施の形態におけるプレビュー制御モジュールによって提供される表示画面（プレビューウィンドウ）の一例を示す。印刷プレビューウィンドウ４０１は、プレビュー画像や印刷ジョブの印刷設定等を表示するための表示エリアと、ユーザがプレビュー画像の表示方法等を変更するための入力手段を兼備している。
【００４３】
メニューバー４０２は、ユーザは表示切り替え等プレビューアへの命令をメニュー形式選択することができる。ユーザ操作部４０３〜４０６が用意される領域はツールバーであり、ユーザはメニューバー４０２を使用しなくともツールバー４０３を押下することで容易にプレビューページの切り替え等を行うことができる。ページ切り替えボタン４０３は４つのボタンで構成されており、先頭ページ、前ページ、次ページ、最終ページへプレビュー表示を切り替えることが可能である。４０４はプレビュー画像の表示サイズを変更する為のドロップダウンリストで、全体表示や１００％、２００％表示等を選択することができる。印刷開始ボタン４０５においては、ユーザがこのボタンを押下することでプレビューアを終了し、プレビューしていたプレビュー用ＸＰＳ文書を印刷処理可能な状態にすることができる。印刷中止ボタン４０６においては、ユーザがこのボタンを押下することでプレビューアを終了し、プレビュー用ＸＰＳ文書が作成中であれば印刷ジョブをキャンセルすることができる。プレビュー表示領域４０７は、プレビュー用ＸＰＳファイルの内容を利用し、印刷用紙と印刷用紙に形成されるであろう可視象を印刷イメージとして表示する。表示領域４０８はプレビュー機能を実行している印刷ジョブの印刷設定に関る代表的な設定項目の設定値を表示する。本図においては文書の総ページ数は３ページであり、現在プレビュー表示しているページ番号は２ページであり、印刷設定で設定された部数は１部であり、かつ等倍印刷が設定されていた例を示している。
【００４４】
また、図４に例示する表示画面は、プレビュー設定がＯＮである印刷設定情報を伴う印刷ジョブがスプールされ、ＯＳの印刷サポート機能によりフィルターパイプラインが起動され、プレビューフィルターがプレビュー制御モジュールを起動した時点で表示される。
【００４５】
＜印刷キューとプレビュー＞
通常、一台のプリンタで同時に印刷可能な文書は一つであることから、ＯＳはプリンタごとに複数の印刷ジョブを管理するための論理的なキューを持つ。これは一般的に印刷キューと呼ばれ、キューの先頭の印刷ジョブの処理状態が「印刷中」となりプリンタドライバの処理対象となる。
【００４６】
図７は本実施例における印刷キューと印刷ジョブのプレビューの関係を説明する為の概念図の一例である。図７に示される印刷ジョブのうち、ＪｏｂＡとＪｏｂＢがプレビュー設定がＯＮとなっている印刷設定情報が格納されている。
【００４７】
図７（１）は印刷キュー７０１に印刷ジョブが三個格納されている状態を示している。ここで先頭のＪｏｂＡ７１５の処理状態が「印刷中」となっており、ＪｏｂＢ７１３とＪｏｂＣ７１１は「待機中」となる。ここでＪｏｂＡ７１５の印刷設定情報はプレビュー設定ＯＮであるから、プレビュー用ＸＰＳ文書Ａ７２５が作成される。時間の経過とともにプレビュー用ＸＰＳ文書Ａ７２５が完成すると、印刷キューからＪｏｂＡ７１５が削除され図７（２）の状態になる。
【００４８】
図７（２）ではプレビュー用ＸＰＳ文書Ａ７２５に基づくプレビューは実行中である。印刷キューの先頭の印刷ジョブにあたるＪｏｂＢ７１３の印刷状態は「印刷中」となる。ＪｏｂＢ７１３はプレビュー設定ＯＮであるから、プレビュー用ＸＰＳ文書Ｂ７２３が作成される。この時点で、プレビュー用ＸＰＳ文書Ａ７２５に基づくプレビューと、プレビュー用ＸＰＳ文書Ｂ７２３に基づくプレビューが同時に行われていることになる。これは単一ユーザーに対して複数の印刷ジョブに対するプレビュー機能を提供する場合や、あるいは複数のユーザに対して同時にプレビュー機能を提供する場合に有用である。時間の経過と共にプレビュー用ＸＰＳ文書Ｂ７２３が完成すると、印刷キューからＪｏｂＢ７１３が削除され図７（３）の状態になる。
【００４９】
図７（３）ではプレビュー用ＸＰＳ文書Ａ７２５に基づくプレビューと、プレビュー用文書Ｂ７２３に基づくプレビューは同時に実行中である。印刷キューの先頭の先頭の印刷ジョブにあたるＪｏｂＣ７１１の印刷状態は「印刷中」となる。ＪｏｂＣ７１１はプレビュー設定ＯＦＦであるから、プレビューは実行されず、フィルターパイプラインによってプリンタが解釈可能な印刷コマンドが生成され、プリンタにより印刷用紙に像が形成されてゆく。一般的にプリンタによる印刷処理速度は遅く、アプリケーションが文書の印刷処理を行い印刷データがスプールされる時間の方が短い。ここで、ＪｏｂＣ７１１の内容がプリンタにより印刷されている間に、プレビュー用ＸＰＳ文書Ａ７２５に基づくプレビューにおいて、ユーザにより印刷開始が指示されたとする。この場合、プレビュー制御モジュールは新規印刷ジョブをキューに作成し、プレビュー用ＸＰＳ文書Ａ７２５の内容をＸＰＳスプールファイル２０５に格納する。この状態を図（４）に示す。
【００５０】
図７（４）ではプレビュー用文書Ｂ７２３に基づくプレビューは実行中である。印刷キュー先頭の印刷ジョブに当たるＪｏｂＣ７１１の印刷状態は「印刷中」で、図７（３）から引き続きプリンタによる印刷処理が行われている。ここでプレビュー用ＸＰＳ文書Ａ７２５を印刷続行するために新たに作成された印刷ジョブであるＪｏｂＡ'７３５の処理状態は「待機中」となる。時間の経過とともにＪｏｂＣ７１１の印刷処理が終了すると、図７（５）の状態になる。
【００５１】
図７（５）ではプレビュー用文書Ｂ７２３に基づくプレビューは実行中である。印刷キューの先頭の印刷ジョブに当たるＪｏｂＡ'７３５の処理状態は「印刷中」となる。ＪｏｂＡ'７３５は既にプレビューされた印刷ジョブであることは、前述したように印刷設定にプレビュー済フラグが格納されていることで判断される。従ってＪｏｂＡ'７３５に対してプレビューは実行されず、フィルターパイプラインによってプリンタが解釈可能な印刷コマンドが生成され、プリンタにより印刷用紙に像が形成されてゆく。時間の経過とともにＪｏｂＡ'７３５の印刷処理が終了すると、印刷キューからＪｏｂＡ'７３５が削除され図７（６）の状態になる。
【００５２】
図７（６）ではプレビュー用文書Ｂ７２３に基づくプレビューは実行中である。印刷キューには印刷ジョブが一つも格納されていない状態となる。
【００５３】
以上のように、本実施例によれば複数のプレビューを同時に提供したり、プレビュー機能を提供中に印刷キュー中の印刷ジョブの実印刷を行うことができる。
【００５４】
ここで、本実施例ではキューという概念から逸脱しないよう、新規に作成した印刷ジョブは印刷キューの最後に格納されるように説明した。しかし、ＯＳの印刷サポート機能によっては、新規の印刷ジョブを印刷キューの途中に格納できる場合もある。すなわち新規印刷ジョブを印刷キューに格納する際に、既存の印刷ジョブの前に格納しても良い。新規印刷ジョブを格納する印刷キュー中の位置が自由な場合、プレビュー制御モジュールは最適な位置を選択して新規印刷ジョブを格納できる。例えば、印刷キューに格納されている印刷ジョブはＸＰＳ文書であるから、総ページ数やジョブのサイズを取得することで、各印刷ジョブがプリンタにより印刷される処理時間を推定できる。このことから、新規印刷ジョブを追加する時点で、印刷キューに格納されている印刷ジョブがすべて印刷される時の、推定平均待ち時間を最小にするような位置を選択してもよい。また、新規印刷ジョブを格納する印刷キュー中の位置を、ユーザが選択できるようにユーザインタフェースを提供しても良い。以上のように、本発明の利点を阻害するものではないから、新規印刷ジョブを格納するキュー中の位置は任意であって構わない。
【００５５】
＜ＰｒｉｎｔＴｉｃｋｅｔとプレビュー済フラグ＞
図６を用いてＰＴに格納するプレビュー済フラグについて説明する。前述したようにＰＴとはＸＭＬ形式で記述された印刷設定である。従ってテキストで表現できる為、図６（Ａ）のように視覚的に記述することができる。
【００５６】
図６（Ａ）のＰＴはレイアウト設定として２−ｕｐが指定された印刷設定の一例を表している。ＰＴの標準的な記載内容はＰｒｉｎｔＳｃｈｅｍａと呼ばれるスキーマにより規定されており、Ｎ−ｕｐに関する設定項目も存在する。なお、ＰｒｉｎｔＳｃｈｅｍａは一般的に公開されている仕様である。ＰＴにはＮ−ｕｐ設定としてＦＤＳに影響を及ぼすＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙと、ＦＤに影響を及ぼすＤｏｃｕｍｅｎｔＮＵｐが存在する。これらはＰｒｉｎｔＳｃｈｅｍａにより規定されており、プリンタドライバはこれら二つの印刷設定を排他的に取り扱う必要があるが、どちらの設定を優先させるかはプリンタドライバにより異なる。ここではどちらの設定が優先されてもいいように、どちらの印刷設定にも２−ｕｐが指定されている。
【００５７】
印刷設定には他の設定項目も数多く存在するが、本実施例に関連のあるＮ−ｕｐのみについて説明した。また、設定項目によってはＦＤＳとＦＤだけではなくＦＰにも影響を及ぼすものもある。
【００５８】
図６（Ｂ）は図６（Ａ）のＰＴに前述したプレビュー済フラグを格納したＰＴの一例を示している。ＰＴに格納するプレビュー済フラグはＰｒｉｎｔＳｃｈｅｍａで規定されていない独自の情報であるため、プライベートな名前空間を追加する必要がある。図６（Ｂ）ではプライベートな名前空間プレフィックスを“ｎｓ００００”としている。格納するプレビュー済フラグはＰｒｉｎｔＳｃｈｅａｍａのフレームワークを利用してＰｒｏｐｅｒｔｙの値として表現している。ここではＰｒｏｐｅｒｔｙのｎａｍｅ属性として“ｎｓ００００：ＰｒｅｖｉｅｗＦｉｌｔｅｒＰｒｏｃｅｓｓ”と記述している。また値として“Ｄｏｎｅ”というｓｔｒｉｎｇ値を記述することで、プレビュー済フラグを表現している。ＰＴに“ｎｓ００００：ＰｒｅｖｉｅｗＦｉｌｔｅｒＰｒｏｃｅｓｓ”が存在しない場合、或いは、“ｎｓ００００：ＰｒｅｖｉｅｗＦｉｌｔｅｒＰｒｏｃｅｓｓ”が存在しその値が“Ｄｏｎｅ”以外であれば、プレビューを行っていないと判断できる。
【００５９】
図６においてはプレビュー済フラグを格納するのに、フレームワークのＰｒｏｐｅｒｔｙを用いたが、この他にもＦｅａｔｕｒｅ／Ｏｐｔｉｏｎを用いても良いことは言うまでもない。また、プレビュー済フラグを示すプライベートな名前空間を用意し、当該名前空間の有無でプレビュー済フラグを表現してもよい。ＰＴはＸＭＬで記載されているため、ＰｒｉｎｔＳｃｈｅｍａに則っていれば、この他のどのような表現でもプレビュー済フラグを格納しても構わない。
【００６０】
＜参照用ＰｒｉｎｔＴｉｃｋｅｔ取得処理＞
フィルターパイプラインの各フィルターにおいて、印刷設定情報を取得するには前述したようにＸＰＳのＰＴをマージする必要がある。ＸＰＳ文書の各パートはＰＴを持つことが可能だが、逆に持たないことも可能である。また、たとえＸＰＳパートがＰＴを持っていたとしても、図６（Ａ）で例示されるＰＴの様にＮ−ｕｐの情報しか記載されていなく、不完全なＰＴである可能性がある。従ってＦＤＳのＰＴを取得する際もユーザのデフォルト印刷設定のＰＴとのマージ処理が必要である。ここでデフォルト印刷設定のＰＴには、プリンタドライバで扱える全ての設定項目が格納されている。従ってマージ後のＰＴも全ての印刷設定項目を含む。
【００６１】
図９はＦＤＳのＰＴとユーザのデフォルト印刷設定のＰＴをマージし参照用ＰＴを取得する処理のフローチャートの一例である。図９のフローチャートに係るプログラムは、データ処理装置の記憶部１４４のハードディスクに記憶されており、記憶部１４４のＲＡＭに適時読み出されて中央制御部１４１のＣＰＵにより実行される。
【００６２】
まずＳ２０１でユーザのデフォルト印刷設定を格納したデフォルトＰＴを取得する。続いてＳ２０３でＸＰＳ文書のＦＤＳを取得する。続いてＳ２０５でＦＤＳのＰＴを取得する。Ｓ２０７ではＦＤＳのＰＴが取得できたかどうかを判定し、取得できていればＳ２１１に移り、取得できなければＳ２０９に移る。Ｓ２１１では取得したＦＤＳのＰＴとデフォルトＰＴをマージしたＰＴを参照用ＰＴとし終了する。Ｓ２０９ではＦＤＳにＰＴが存在しなかったため、デフォルトＰＴを参照用ＰＴとし終了する。
【００６３】
ここで、全ての印刷設定項目とは、少なくともアプリケーションが設定可能な全ての設定項目のことを指しており、プレビュー済フラグのようなプリンタドライバ内部の設定項目はこれに含まれないものとする。
【００６４】
このようにプリンタドライバが扱える全ての設定項目を含む参照用ＰＴを取得することができる。
【００６５】
＜レイアウトフィルタ処理＞
図８を用いてレイアウトフィルターの処理について説明する。図８はレイアウトフィルターの処理を示すフローチャートの一例である。図８のフローチャートに係るプログラムは、データ処理装置の記憶部１４４のハードディスクに記憶されており、記憶部１４４のＲＡＭに適時読み出されて中央制御部１４１のＣＰＵにより実行される。
【００６６】
まずＳ１０１で前述したように参照用ＰＴを取得する。続いてＳ１０３で参照用ＰＴにプレビュー済フラグが格納されているかどうかを判断し、格納されていればＳ１２１に移り、格納されていなければＳ１０５に移る。
【００６７】
Ｓ１０５ではＦＤを取得し、Ｓ１０７でＦＤからＰＴを取得する。Ｓ１０９でＦＤのＰＴを取得できたか判断し、取得できればＳ１１１に移り、取得できなければＳ１１３に移る。Ｓ１１１では参照用ＰＴに取得できたＦＤのＰＴをマージする。続くＳ１１３では参照用ＰＴの印刷設定情報にレイアウト設定がされているか判断し、レイアウト設定がされていればＳ１４１に移り、レイアウト設定がされていなければＳ１３１に移る。
【００６８】
Ｓ１３１からＳ１３５まではレイアウト処理を行わないで入力のＸＰＳデータをプレビューフィルターに出力するのみである。Ｓ１３１では取得済みのＦＤＳをプレビューフィルターに出力し、Ｓ１３３では取得済みのＦＤをプレビューフィルターに出力し、Ｓ１３５では入力から残りのＸＰＳパートを取得しプレビューフィルターに出力し、終了する。
【００６９】
Ｓ１４１からＳ１４５は入力のＸＰＳデータにレイアウト処理を行いプレビューフィルターに出力する。Ｓ１４１では取得済みのＦＤＳをプレビューフィルターに出力し、Ｓ１４３では取得済みのＦＤをプレビューフィルターに出力する。Ｓ１４５では入力から残りのＸＰＳパートを順次取得し、ＦＰのレイアウト処理を行ったレイアウト済みのＦＰを作成してプレビューフィルターに出力する。ここで前述したようにＰＴに格納されるレイアウト設定はＦＤＳに影響を及ぼすものと、ＦＤに影響を及ぼすものがあるため、必要に応じてＦＤもプレビューフィルターに出力する。このように新たに作成されたレイアウト済みのＦＰをプレビューフィルターに送信し、全てのＦＰをプレビューフィルターに出力した後に終了する。
【００７０】
Ｓ１２１とＳ１２３ではプレビュー済みの印刷ジョブは既にレイアウト処理は行われている為、レイアウト処理は行わない。Ｓ１２１では入力されたＦＤＳをプレビューフィルターに出力する。続いてＳ１２３では残りのＸＰＳパートを入力から順次取得しプレビューフィルターに出力した後、終了する。これにより出力したＸＰＳデータは次のフィルター（プレビューフィルター）に送信される。
【００７１】
このようにＰＴに格納されたプレビュー済フラグを参照することで、プレビュー後に同一のレイアウト処理を重複して行わないようにすることができる。
【００７２】
＜プレビューフィルター処理＞
図１０を用いてプレビューフィルターの処理について説明する。図１０はプレビューフィルターの処理を示すフローチャートの一例である。図１０のフローチャートに係るプログラムは、データ処理装置の記憶部１４４のハードディスクに記憶されており、記憶部１４４のＲＡＭに適時読み出されて中央制御部１４１のＣＰＵにより実行される。
【００７３】
まずＳ４０１で前述したように参照用ＰＴを取得する。続いてＳ４０３で参照用ＰＴにプレビュー済フラグが格納されているかどうかを判断し、格納されていればＳ４４１に移り、格納されていなければＳ４０５に移る。
【００７４】
Ｓ４０５では参照用ＰＴの印刷設定情報のプレビュー設定がＯＮかどうかを判定し、ＯＮでなければＳ４４１に移り、ＯＮであればＳ４１１に移る。
【００７５】
Ｓ４１１からＳ４２５まではプレビュー用ＸＰＳ文書を作成するための処理となる。Ｓ４１１では取得済みのＦＤＳがＰＴを持たなければ、ＦＤＳにＰＴを付加する。続くＳ４１３ではＦＤＳのＰＴにプレビュー済フラグを格納する。続くＳ４１５ではプレビュー制御モジュールを起動する。続くＳ４１７ではプレビュー用ＸＰＳ文書を作成し取得済みのＦＤＳを追加する。なお、プレビュー用ＸＰＳ文書は、レイアウト処理されたＸＰＳ文書にプレビュー済みフラグが付加されたＸＰＳ文書である。続くＳ４２１では入力から次のＸＰＳパートを取得し、取得したＸＰＳパートをキャッシュした後に、プレビュー用ＸＰＳ文書に追加する。Ｓ４２３では取得したＸＰＳパートが最終かどうか判断し、最終であればＳ４５１に移り、最終でなければＳ４２５に移る。取得したＸＰＳパートが最終である場合、ＸＰＳデータは一切出力せず、Ｓ４５１でフィルターパイプラインの各フィルターに動作の終了を通知し、印刷キューから印刷ジョブが削除されるように処理する。Ｓ４２５ではプレビュー制御モジュールから印刷続行通知があったかどうか判断し、通知がなければＳ４２１に移りプレビュー用ＸＰＳ文書の作成を継続し、通知があればＳ４３１に移る。
【００７６】
Ｓ４３１からＳ４３５はプレビュー用ＸＰＳ文書を作成中に、ユーザから印刷開始が指示された場合の処理である。Ｓ４３１では取得済みのＦＤＳを印刷コマンドフィルターに出力し、Ｓ４３３ではキャッシュ済みのＸＰＳパートを順次印刷コマンドフィルターに送信する。続くＳ４３５では入力から残りのＸＰＳパートを順次取得し印刷コマンドフィルターに出力し終了する。
【００７７】
Ｓ４４１とＳ４４３ではプレビュー済みの印刷ジョブは既にプレビュー処理は行われている為、プレビュー処理は行わない。Ｓ４４１では入力されたＦＤＳを印刷コマンドフィルターに出力する。続いてＳ４４３では残りのＸＰＳパートを入力から順次取得し印刷コマンドフィルターに出力した後、終了する。これにより出力したＸＰＳデータは次のフィルター（印刷コマンドフィルター）に送信される。
【００７８】
ここではプレビュー用ＸＰＳ文書を作成中に、入力のＸＰＳパートをキャッシュし、作成中に印刷続行通知があった場合はキャッシュからＸＰＳを印刷コマンドフィルターに出力するように記述したが、キャッシュしなくてもよい。ＸＰＳパートをキャッシュしない場合は、作成中のプレビュー用ＸＰＳ文書からＸＰＳパートを読込み、印刷コマンドフィルターに出力するようにすればよいことは明らかである。
【００７９】
このようにすることで、プレビュー用ＸＰＳファイルにプレビュー済フラグを格納することが可能となる。また、プレビュー用ＸＰＳファイルを作成中であっても、印刷開始指示に応じて、印刷コマンドを作成する為にＸＰＳデータを出力することができる。また、プレビュー済みのＸＰＳデータを再度プレビューすることを抑制できる。
【００８０】
＜プレビュー制御モジュールの処理＞
図１１を用いてプレビュー制御モジュールの処理について説明する。図１１はプレビュー制御モジュールの処理を示すフローチャートの一例である。
【００８１】
まずＳ３５１で前述したプレビューウィンドウを表示する。図１１のフローチャートに係るプログラムは、データ処理装置の記憶部１４４のハードディスクに記憶されており、記憶部１４４のＲＡＭに適時読み出されて中央制御部１４１のＣＰＵにより実行される。
【００８２】
Ｓ３０１からＳ３１１までイベント処理ループとなる。Ｓ３０１はイベント処理ループの開始端であり、続くＳ３０３でイベントを取得し、続くＳ３０５でイベントが印刷開始かどうか判定する。イベントが印刷開始であればＳ３２１に移り、印刷開始でなければＳ３０７に移る。Ｓ３０７ではイベントが印刷中止かどうか判定し、印刷中止であればＳ３３１に移り、印刷中止でなければＳ３０９に移る。Ｓ３０９では印刷開始と印刷中止以外のイベントの処理を行う。例えば図４を用いて前述したようにプレビューウィンドウを介して発生するイベントが表示ページの切り替えであれば、プレビューウィンドウのプレビュー表示領域の内容を再描画する。また、タイマーイベントの処理にあたり、スプールされているページ数の表示を変更することもできる。このようにＳ３０９で行う処理はさまざまである。続くＳ３１１はイベント処理ループの終端でありＳ３０１に戻る。
【００８３】
Ｓ３２１からＳ３２５は印刷開始処理である。Ｓ３２１でプレビュー用ＸＰＳ文書がプレビューフィルターにより作成中であるかどうか判定し、作成中であればＳ３２５に移り、作成が完了していればＳ３２３に移る。Ｓ３２５ではプレビューしている内容の印刷ジョブが印刷キュー内に残っている為、プレビューフィルターに印刷続行を通知した後、Ｓ３４１に移る。Ｓ３２３では、既に印刷ジョブは印刷キューから削除されているために、キューに新たな印刷ジョブを作成し、プレビュー用ＸＰＳ文書の内容を入力とし、新たな印刷ジョブのＸＰＳ文書をスプールファイルに出力した後、Ｓ３４１に移る。
ここで、プレビュー制御モジュールによる印刷ジョブ作成手順について説明する。まず、OSに印刷ジョブの追加を通知し、OSからＸＰＳスプールファイル２０５のパスを取得する。次に、ＸＰＳスプールファイル２０５に、印刷ジョブに対応するプレビュー用XPS文書の内容をコピーする。次に、 OSに追加した印刷ジョブのスケジューリングを依頼する。
【００８４】
Ｓ３３１とＳ３３３は印刷キャンセル処理である。Ｓ３３１でプレビュー用ＸＰＳ文書がプレビューフィルターにより作成中であるかどうか判定し、作成中であればＳ３３３に移り、作成が完了していればＳ３４１に移る。Ｓ３３３ではプレビューしている内容の印刷ジョブが印刷キュー内に残っている為、当該印刷ジョブをキャンセルする。プレビュー用ＸＰＳ文書の作成が完了していれば、プレビューしている内容の印刷ジョブは印刷キュー内に存在しないため、印刷ジョブのキャンセルは不要である。
【００８５】
Ｓ３４１ではプレビュー用ＸＰＳ文書を削除し終了する。
【００８６】
このようにすることで、プレビュー中の印刷ジョブが存在する場合は、ユーザの印刷開始の指示に即座に従い、プリンタによる印刷を開始できる。また、もとの印刷ジョブごとにプレビュー用ＸＰＳ文書を持つ為、同時に複数のプレビュー機能を提供することができる。
【００８７】
以上説明したように、本実施形態によれば次のような効果が得られる。
（１）プレビューアから印刷開始を指示しても同一のレイアウト処理は一回しか行わない為、コンピュータの負荷が軽減する。
（２）プレビュー用ＸＰＳ文書の作成が終了していれば、プレビュー中でも印刷キュー中の後続の印刷ジョブを処理できる。
【図面の簡単な説明】
【００８８】
【図１】本発明の実施形態に係わる印刷システムの一例を示すブロック図
【図２】本発明の実施形態に係わるプリンタドライバ一例を示すブロック図
【図３】本発明の実施形態に係わる印刷設定ダイアログの一例を示す図
【図４】本発明の実施形態に係わるプレビューウィンドウの一例を示す図
【図５】ＸＰＳの論理構造の概念図
【図６】本発明の実施形態に係わるプレビュー済フラグの格納方法の一例を示す図
【図７】本発明の実施形態に係わる印刷キュー内の印刷ジョブとプレビューの関係を示す概念図
【図８】本発明の実施形態に係わるレイアウトフィルターの処理を示すフローチャート
【図９】本発明の実施形態に係わる参照用ＰｒｉｎｔＴｉｃｋｅｔを取得する処理のフローチャート
【図１０】本発明の実施形態に係わるプレビューフィルターの処理を示すフローチャート
【図１１】本発明の実施形態に係わるプレビュー制御モジュールの処理を示すフローチャート
【符号の説明】
【００８９】
１３０  プリンタドライバ
１３４  印刷コマンド生成部
２１１  ユーザインタフェースモジュール
２１３  レイアウトフィルター
２１５  プレビューフィルター
２１７  印刷コマンドフィルター
２１９  プレビュー制御モジュール
３０１  印刷設定ダイアログ
３２７  プレビュー印刷設定部
４０１  印刷プレビューウィンドウ
４０５  印刷開始ボタン
４０６  印刷中止ボタン
【図１】
2008152728.tif 000003
【図２】
2008152728.tif 000004
【図３】
2008152728.tif 000005
【図４】
2008152728.tif 000006
【図５】
2008152728.tif 000007
【図６】
2008152728.tif 000008
【図７】
2008152728.tif 000009
【図８】
2008152728.tif 000010
【図９】
2008152728.tif 000011
【図１０】
2008152728.tif 000012
【図１１】
2008152728.tif 000013