入出力インターフェースとしてstream形式のインターフェースを持つ第一のフィルターで印刷データを入力し記憶領域に格納する記憶工程と、前記第一のフィルターの後に位置し、入出力インターフェースとしてdocument形式のインターフェースを持つ第二のフィルターで、前記印刷データを構成するパーツを順次、入力し、解析する解析工程と、前記解析工程における前記解析の結果、前記印刷データより取得された印刷設定情報に従って、前記記憶工程で記憶領域に記憶された印刷データを処理する処理工程と、前記第二のフィルターで、前記印刷設定情報を取得したあと、以降のパーツの全部又は一部を入力せず処理を終了する終了工程と、を含む印刷データ処理方法。前記処理工程では、前記解析工程における前記解析の結果、前記印刷データより取得された印刷設定情報の保存場所情報に従って、前記記憶工程で記憶領域に記憶された印刷データを保存場所に移動させる請求項1記載の印刷データ処理方法。前記処理工程では、前記解析工程における前記解析の結果、前記印刷データより取得された印刷設定情報の印刷プレビュー表示情報に従って、前記記憶工程で記憶領域に記憶された印刷データを印刷プレビュー表示する表示モジュールを起動する請求項1記載の印刷データ処理方法。前記処理工程では、前記印刷プレビュー表示情報が印刷プレビューを表示することを示している場合、前記記憶工程で記憶領域に記憶された印刷データを印刷プレビュー表示する表示モジュールを起動させ、前記終了工程では、前記第二のフィルターで、前記印刷設定情報を取得したあと、前記印刷プレビュー表示情報が印刷プレビューを表示することを示している場合、以降のパーツの全部又は一部を入力せず処理を終了する請求項3記載の印刷データ処理方法。入出力インターフェースとしてdocument形式のインターフェースを持つ第一のフィルターで、印刷データを構成するパーツを順次、入力し、解析する解析工程と、前記解析工程における前記解析の結果、前記印刷データより取得された印刷設定情報を記憶領域に記憶する記憶工程と、前記第一のフィルターの後に位置し、入出力インターフェースとしてstream形式のインターフェースを持つ第二のフィルターで、前記印刷データを入力し、前記記憶工程で前記記憶領域に記憶された印刷設定情報に従って処理する処理工程と、を含む印刷データ処理方法。前記記憶工程では、前記取得された印刷設定情報のうち印刷データの保存場所情報を前記記憶領域に記憶し、前記処理工程では、前記第二のフィルターで、前記印刷データを入力し、前記記憶領域に記憶された保存場所情報に従って、前記印刷データを保存場所に保存する請求項5に記載の印刷データ処理方法。入出力インターフェースとしてstream形式のインターフェースを持つ第一のフィルターで印刷データを入力し記憶領域に格納する記憶手段と、前記第一のフィルターの後に位置し、入出力インターフェースとしてdocument形式のインターフェースを持つ第二のフィルターで、前記印刷データを構成するパーツを順次、入力し、解析する解析手段と、前記解析手段における前記解析の結果、前記印刷データより取得された印刷設定情報に従って、前記記憶手段で記憶領域に記憶された印刷データを処理する処理手段と、前記第二のフィルターで、前記印刷設定情報を取得したあと、以降のパーツの全部又は一部を入力せず処理を終了する終了手段と、を有する印刷データ処理装置。入出力インターフェースとしてdocument形式のインターフェースを持つ第一のフィルターで、印刷データを構成するパーツを順次、入力し、解析する解析手段と、前記解析手段における前記解析の結果、前記印刷データより取得された印刷設定情報を記憶領域に記憶する記憶手段と、前記第一のフィルターの後に位置し、入出力インターフェースとしてstream形式のインターフェースを持つ第二のフィルターで、前記印刷データを入力し、前記記憶手段で前記記憶領域に記憶された印刷設定情報に従って処理する処理手段と、を有する印刷データ処理装置。コンピュータに、入出力インターフェースとしてstream形式のインターフェースを持つ第一のフィルターで印刷データを入力し記憶領域に格納する記憶ステップと、前記第一のフィルターの後に位置し、入出力インターフェースとしてdocument形式のインターフェースを持つ第二のフィルターで、前記印刷データを構成するパーツを順次、入力し、解析する解析ステップと、前記解析ステップにおける前記解析の結果、前記印刷データより取得された印刷設定情報に従って、前記記憶ステップで記憶領域に記憶された印刷データを処理する処理ステップと、前記第二のフィルターで、前記印刷設定情報を取得したあと、以降のパーツの全部又は一部を入力せず処理を終了する終了ステップと、を実行させるためのプログラム。コンピュータに、入出力インターフェースとしてdocument形式のインターフェースを持つ第一のフィルターで、印刷データを構成するパーツを順次、入力し、解析する解析ステップと、前記解析ステップにおける前記解析の結果、前記印刷データより取得された印刷設定情報を記憶領域に記憶する記憶ステップと、前記第一のフィルターの後に位置し、入出力インターフェースとしてstream形式のインターフェースを持つ第二のフィルターで、前記印刷データを入力し、前記記憶ステップで前記記憶領域に記憶された印刷設定情報に従って処理する処理ステップと、を実行させるためのプログラム。仮想ドライバが印刷データ中の印刷設定情報を取得するためには、印刷データの構造を解釈し、展開する必要がある。しかし、印刷データの構造によっては、印刷データの独自の展開処理は技術的に容易でなく、また印刷データフォーマットのバージョンアップに伴う構造の変化に対応できないといった問題を招く可能性がある。本発明はこのような問題点に鑑みなされたもので、簡易、かつ、堅牢性の高い構成で、印刷データを、印刷データ中の印刷設定情報に従って処理することを目的とする。そこで、本発明の印刷データ処理方法は、入出力インターフェースとしてstream形式のインターフェースを持つ第一のフィルターで印刷データを入力し記憶領域に格納する記憶工程と、前記第一のフィルターの後に位置し、入出力インターフェースとしてdocument形式のインターフェースを持つ第二のフィルターで、前記印刷データを構成するパーツを順次、入力し、解析する解析工程と、前記解析工程における前記解析の結果、前記印刷データより取得された印刷設定情報に従って、前記記憶工程で記憶領域に記憶された印刷データを処理する処理工程と、前記第二のフィルターで、前記印刷設定情報を取得したあと、以降のパーツの全部又は一部を入力せず処理を終了する終了工程と、を含む。本発明によれば、簡易、かつ、堅牢性の高い構成で、印刷データを、印刷データ中の印刷設定情報に従って処理することができる。以下、本発明の実施形態について図面に基づいて説明する。<実施形態1>図1は、印刷装置2と印刷装置2に接続された情報処理装置パソコン1とによって構成される印刷システムの全体構成を概念的に表した一例を示す図である。パソコン1は、入力インターフェース11とCPU12、ROM13、RAM14、外部記憶装置15、出力インターフェース16、表示部17、キーボード10、マウス18、入出力インターフェース19を有する。ROM13には初期化プログラムが入っており、外部記憶装置15にはアプリケーションプログラム群とOSOperatingSystem、プリンタドライバやその他各種のデータが保存されている。RAM14は、外部記憶装置15にストアされる各種プログラムがワークメモリとして使用する。CPU12がプログラム等に基づいて処理を実行することによって後述するソフトウェア構成が実現されたり、後述するフローチャートの処理が実現されたりする。印刷装置2は、入出力インターフェース21とRAM22、プリントエンジン23、ROM24、CPU25を有する。入出力インターフェース21は、パソコン1の入出力インターフェース19に接続してある。RAM22は、CPU25の主メモリとワークメモリとして用いられ、受信した印刷ジョブを一旦保存するための受信バッファや各種のデータを保存する。プリントエンジン23は、RAM22に保存されたデータに基づき印刷を行う。ROM24には各種の制御プログラムが使用するデータが入っており、CPU25はこれらの制御プログラムに従って印刷装置2の各部を制御する。ここでは、例としてパソコン1と印刷装置2との処理分担を上記のように示したが、特にこの分担形態に限らず他の形態であってもよい。なお、パソコン1は、印刷データ処理装置コンピュータの一例である。図2は、パソコン1のソフトウェア構成等の一例を示す図である。ブラウザー201は、Webページを表示するためのアプリケーションである。ブラウザー201は、不図示のインターネットを介して不図示のWWWサーバから受信した構造化文書を外部記憶装置15へダウンロードし、それに基づいて表示部17へ表示させる。Webページは、HTMLやXHTML等の構造化文書ファイルであり、テキストや画像等の要素がタグを用いて記述されている。アドオン202は、ブラウザー201から呼び出されるプラグインソフトウェアである。アドオン202は、Webページの印刷やプレビュー、一部領域のクリップ等の処理の実行をユーザーから受け付けるユーザーインターフェースを持つ。アドオン202は、ユーザーからの入力に応じて、ブラウザー201に対し現在表示されているWebページを仮想ドライバ203に対して印刷するよう指示する。仮想ドライバ203は、特定の印刷装置に接続されず、スプールされた印刷データを外部記憶装置15やRAM14に保存するよう構成される仮想的なプリンタドライバである。アドオン202は、印刷を指示する際に指定する印刷設定情報の予め決められた場所に、印刷データの保存場所情報を含める。アドオン202が、仮想ドライバ203に対して、印刷データの保存場所情報を印刷設定情報に付加するよう依頼し、仮想ドライバ203が保存場所情報を含めるような構成としてもよい。ここで、印刷データの保存場所情報とは、例えばファイル名を含むフルパス等である。ブラウザー201が作成した印刷データは、仮想ドライバ203によって外部記憶装置15やRAM14に保存される。このとき、仮想ドライバ203は、印刷設定情報中に含まれる印刷データの保存場所情報に従った場所に印刷データ204を保存する。アドオン202は、仮想ドライバ203に印刷を指示した後、発行した印刷ジョブが残存するか否かを定期的に後述するスプーラに問い合わせる。印刷ジョブが残存しない場合、アドオン202は、編集アプリケーション205を起動し、印刷データ204と、アドオン202のユーザーインターフェースを経由してユーザーから入力された指示と、を編集アプリケーション205に渡す。アドオン202は、指定した印刷データの保存場所に印刷データが存在するかどうかを定期的に確認することで、印刷データの保存完了を判定してもよい。編集アプリケーション205は、受け取った指示に応じて、印刷データの編集や表示を行い、最終的にプリンタドライバ206に対して印刷要求を発行する。プリンタドライバ206は、編集アプリケーション205によって編集された印刷データを受け取り、印刷装置2が解釈可能な印刷コマンドに変換する。プリンタドライバ206は、印刷コマンドを印刷装置2に送信する。印刷装置2は、受け取った印刷コマンドを元に印刷処理を実行する。以上のように、本実施形態の印刷プログラムは、ブラウザー201に表示されたWebページを適宜編集して印刷することができる。ここで、仮想ドライバ203は、Webページを元に作成された中間データを取得することを目的としている。中間データは、その後編集される等の理由から、特定解像度で展開されたラスターデータではなく、テキストやグラフィックスの形式を維持したベクターデータであることが望ましい。ブラウザー201からの印刷により作成される印刷データは、通常、ベクターデータであることから、本印刷プログラムでは、中間データとしてその印刷データを用いる。このような構成により、アドオン202は、ブラウザー201からWebページを元に作成された中間データを直接取得できないような場合にも、ベクターデータである印刷データを中間データとして取り出すことができる。また、本実施形態の印刷プログラムは、アドオン202が印刷データの保存場所を仮想ドライバ203に対して指定する構成とすることで、仮想ドライバ203とアドオン202や編集アプリケーション205との間で通信が発生しない。プリンタドライバである仮想ドライバ203と、ブラウザー201のプラグインソフトウェアであるアドオン202という特殊な条件下で動作する2つのプログラム同士の通信は避けることが好ましい。更に、アドオン202は各種制御を一元的に行うことができ、ユーザーからの各種要求のハンドリングを容易に行うことができる。図3は、実施形態1の印刷プログラム中の仮想ドライバ203の全体構成を概念的に表した一例を示す図である。以下、一般的に普及しているパソコンにMicrosoft社のWindows登録商標をOSとして使用する印刷システムについて説明する。また、スプールデータフォーマットとしてMicrosoft社が開発したオープン規格の電子文書フォーマットの一つであるXMLPaperSpecification以下、XPSを用いる印刷システムについて説明する。以後、このような印刷システム上で動作するプリンタドライバをXPSドライバと呼ぶ。ブラウザー201等のアプリケーション301が作成した印刷データは、OSの印刷サポート機能302を介しスプールデータ305としてスプーラ303のプリントキュー304に一時的に蓄えられる。アプリケーション301の作成する印刷データの種類によっては、印刷データはOSの印刷サポート機能302は経由することなく、そのままスプールデータ305として蓄えられる。スプールデータ305は、名称等を付加した印刷ジョブとしてスプーラ303により管理される。印刷ジョブは、順次、仮想ドライバ203によって処理される。アプリケーション301は、印刷指示を行う際に、ユーザーインターフェースモジュール306から返却された印刷設定情報を印刷ジョブに付加する。印刷設定情報は、アプリケーション301からの印刷開始指示を行う前に予め設定された情報である。仮想ドライバ203に渡された印刷データは、先ずチケットフィルター307によって処理される。ここでフィルターとは、入力されたデータをもとに、加工、変換、無変換、生成等の工程を介して、何らかのデータを出力する機能を有するプログラムのことで、後述するOSのフィルター管理機能から呼び出される。XPSドライバは、その目的や機能に応じて、任意の個数のフィルターを任意の順番で構成することが許容されている。印刷データ中のPrintTicketPT。XPSドキュメントにおける印刷設定情報を参照し、印刷データを保存する場所等の情報を取得する。データフィルター308は、入力した印刷データを、前述の印刷データを保存する場所に保存する。通常、最後のフィルターは、入力した印刷データを印刷装置2が解釈可能な印刷コマンドに変換し、出力する。出力した印刷コマンドは、プリンタドライバに関連付けられたポートに対応するポートドライバーを経由して印刷装置2に到達する。本実施形態における仮想ドライバ203の出力ポートは、NULポートとしてある。NULポートは、入力したデータを全て無視するだけの論理的なポートである。仮想ドライバ203の役割は印刷データを外部記憶装置15に格納することであり、それはデータフィルター308によって実行される。したがって、データフィルター308は、あらゆるデータの出力を行わない。そのため、仮想ドライバ203の出力ポートは、NULポート以外であっても問題無い。また、データフィルター308は、印刷データと印刷データの保存場所情報とを出力し、ポートドライバーが印刷データを保存するように構成してもよい。図3の例では、データフィルター308は、チケットフィルター307の後に位置している。前述したように、XPSドライバは任意の個数のフィルターを任意の順番で構成することが許容されている。フィルター間でデータの受け渡しを行うインターフェースには、XPSstream形式と、XPSdocument形式の2種類が存在する。XPSstream形式のインターフェースでは、印刷データはバイトストリームとして扱われる。XPSdocument形式のインターフェースでは、印刷データであるXPSドキュメントがXPSパート単位で扱われる。ここでいうXPSパートとはFixedDocumentSequenceFDS、FixedDocumentFD、FixedPageFPとそれらに付随するPTや、画像、フォント等のリソースのことを指す。各フィルターは、入力と出力それぞれに対して、どちらかのインターフェースを利用するよう予め構成される。入力にXPSdocument形式のインターフェースを利用するフィルターは、XPSドキュメントを解析してXPSパートを抽出する必要が無い。そのため、XPSstream形式のフィルターに比べ、FPの変更が必要なレイアウト処理等の処理を容易に実施可能である。図4は、実施形態1のフィルター構成例とそのときの動作を示す概念図である。チケットフィルター307は、入出力インターフェースとしてXPSdocument形式を利用する。データフィルター308は、入出力インターフェースとしてXPSstream形式を利用する。チケットフィルター307は、入出力インターフェースとしてdocument形式のインターフェースを持つ第一のフィルターの一例である。データフィルター308は、入出力インターフェースとしてstream形式のインターフェースを持つ第二のフィルターの一例である。スプールデータとして格納されているXPSドキュメント401は、チケットフィルター307に送られる。ここで、チケットフィルター307の入力インターフェースは、XPSdocument形式なので、XPSドキュメントはOSのフィルター管理機能402により複数のXPSパート403に分解されチケットフィルター307に送られる。チケットフィルター307は、分解されたXPSパートを、順次、受信することができる。例えば、スプールデータとして、XPSドキュメントの一部しか格納されていない状態であっても、チケットフィルター307は、格納が完了しているXPSパートから順次、受信することができる。チケットフィルター307は、XPSパートのうち、PTを参照し、アプリケーションによって指定された印刷データの保存場所情報を取得する。チケットフィルター307は、印刷データの保存場所情報をデータフィルター308に通知する。チケットフィルター307の出力インターフェースもXPSdocument形式なので、チケットフィルター307は、受信したXPSパートをXPSパート単位で出力する。チケットフィルター307が出力した複数のXPSパート404は、データフィルター308に送られる。ここで、データフィルター308の入力インターフェースは、XPSstream形式なので、OSのフィルター管理機能402は、複数のXPSパート404をXPSドキュメント405に変換する。データフィルター308は、変換されたXPSドキュメント405をバイトストリームとして受け取る。データフィルター308は、入力したXPSドキュメント405を、チケットフィルター307により通知された印刷データの保存場所に保存する。データフィルター308の出力インターフェースもXPSstream形式なので、データを出力する場合は、バイトストリームとして出力する。但し本実施形態におけるデータフィルター308は、前述の通りあらゆるデータを出力しないように構成する。この構成により、PTに指定された印刷データの保存場所にXPSドキュメントを保存するという目的を容易に実現することができる。何らかの機能を実現するために、それぞれのフィルター前後に別のフィルターが存在してもよい。仮に入出力インターフェースとしてXPSstreamを利用するフィルターが全ての処理を行う場合、XPSドキュメントの構造に従い独自でXPSパートに展開する処理が必要であるが、これは技術的に容易では無い。また、バージョンアップ等に伴いXPSドキュメントの構造が変化した場合等に、独自の展開処理では正しく展開できない可能性がある。図5は、チケットフィルター307の印刷データの保存場所情報の取得処理の一例を示すフローチャートである。前述の通り、チケットフィルター307は、入出力インターフェースとして、XPSdocument形式を利用する。チケットフィルター307は、XPSパートを、OSのフィルター管理機能402に対して要求するS501。OSのフィルター管理機能402は、要求に応じて、XPSパートを準備ができ次第、1つずつチケットフィルター307に渡す。チケットフィルター307は、S501でXPSパートを取得できたかどうかを判定するS502。XPSパートを取得できた場合、チケットフィルター307は、S501で入力したXPSパートがFDSであるかどうか判定するS503。S503で入力したXPSパートがFDSであると判定した場合、チケットフィルター307は、FDSに関連付けられたPTを更に取得するS504。チケットフィルター307は、取得したPTに印刷設定の一つとして記載されている印刷データの保存場所情報を読み出し、PropertyBagに格納するS505。PropertyBagは、OSのフィルター管理機能402により提供されるデータ管理機能である。全てのフィルターは、PropertyBagに、任意のデータを格納したり、取得したりできる。チケットフィルター307は、S501で入力したXPSパートを次のフィルターに渡すよう、OSのフィルター管理機能402に対して指示するS506。チケットフィルター307が出力した印刷データは、OSのフィルター管理機能402によって、次のフィルターの入力インターフェースに応じた形式に変換された後、次のフィルターに渡される。S503で入力したXPSパートがFDSではないと判定した場合、チケットフィルター307は、S504とS505との処理をスキップし、S506の処理を実行する。その後、チケットフィルター307は、S501の処理に戻り、取得したXPSに対してS501からS506までの処理を繰り返す。S502で、XPSパートを取得できなかったと判定した場合、チケットフィルター307は処理を終了する。図6は、データフィルター308の印刷データ保存処理の一例を示すフローチャートである。前述の通り、データフィルター308は、入出力インターフェースとして、XPSstream形式を利用する。データフィルター308は、PropertyBagに、印刷データの保存場所情報がないか問い合わせるS601。印刷データの保存場所情報は、チケットフィルター307のS505の処理によってPropertyBagに格納される。データフィルター308は、S601の処理が成功したか否か判定するS602。S602で、印刷データの保存場所情報の取得に失敗したと判定した場合、データフィルター308は、一定間隔、例えば100msecの間スリープした後、再度PropertyBagから印刷データの保存場所情報の取得を試みるS601。S602で、印刷データの保存場所情報の取得に成功したと判定した場合、データフィルター308は、一定サイズ、例えば2MByte分の印刷データを、OSのフィルター管理機能402に対して要求するS603。OSのフィルター管理機能402は、印刷データの先頭から順に要求されたサイズの印刷データが準備でき次第、データフィルター308に渡す。次に、データフィルター308は、取得した一定サイズの印刷データを、外部記憶装置15のS601で取得した印刷データの保存場所情報に従った場所に、ファイルとして書き出すS604。外部記憶装置15は、記憶領域の一例である。次に、データフィルター308は、全ての印刷データを入力したかどうか判定するS605。OSのフィルター管理機能402は、データフィルター308による印刷データの要求S603がデータの末尾まで到達した場合、そのことを示す情報を返却する。データフィルター308は、この情報を参照し、全ての印刷データを入力したかどうかを判定する。S605で、全ての印刷データを入力していないと判定した場合、データフィルター308は、入力済みの印刷データの続きの印刷データの入力とファイルへの書き出し処理を行うS603-S604。S605で、全ての印刷データを入力したと判定した場合、データフィルター308は、処理を終了する。図6のフローチャートでは、データフィルター308は、印刷データ全体を保存することを目的としている。もし印刷データの一部のみを保存することが目的である場合、データフィルター308は、S605の判定前に、印刷データのうち所望する部分を既に入力しているかどうかを判定し、入力していた場合は処理を終了する。仮想ドライバ203が印刷データの一部のみを保存することを目的とする場合、このように構成することで、仮想ドライバ203の処理を更に高速化できる。本実施形態の仮想ドライバ203は、OSの機能を利用した簡易、かつ、堅牢性の高い構成で、印刷データを、印刷データ中の印刷設定情報に記載の印刷データ保存場所に保存することができる。なお、本実施形態の構成は、印刷データを印刷データ中の印刷設定情報に従って処理する他の目的にも適用可能である。<実施形態2>図7は、実施形態2の印刷プログラム中の仮想ドライバ203の全体構成を概念的に表した一例を示す図である。図7に示す通り、本実施形態における仮想ドライバ203では、データフィルター308とチケットフィルター307との処理順が、実施形態1における仮想ドライバ203とは逆である。それらのフィルターの処理の詳細は後述する。フィルターの処理順と処理内容を除き、図7で示した仮想ドライバ203の構成は、実施形態1の図3で示した構成と同等である。なお、本実施形態における印刷システムの全体構成は実施形態1の図1と同等である。以後、特に言及が無い点は、実施形態1と同等の構成である。図7の例では、チケットフィルター307は、データフィルター308の後に位置している。実施形態1の図4で示したとおり、連続するフィルター間で、前のフィルターの出力インターフェースと、後のフィルターの入力インターフェースと、が異なる場合、OSのフィルター管理機能402による変換処理が動作する。XPSドキュメントの複雑さに依存するが、この変換処理は一定の処理時間を要する。したがって、XPSドライバで高速な処理を期待する場合、この変換処理ができるだけ発生しないようにフィルターを構成することが望ましい。図8は、実施形態2のフィルター構成例とそのときの動作を示す概念図である。前述の通り、本実施形態における仮想ドライバ203は、データフィルター308とチケットフィルター307という2つのフィルターを持つ。データフィルター308は、入出力インターフェースとしてXPSstream形式を利用する。したがって、スプールされたXPSドキュメント801は、OSのフィルター管理機能402により変換されることなく、バイトストリームとしてデータフィルター308に渡される。データフィルター308は、入力したXPSドキュメント802を外部記憶装置15やRAM14に保存すると共に、バイトストリームとして出力する。チケットフィルター307は、入出力インターフェースとしてXPSdocument形式を利用する。したがって、データフィルター308が出力したXPSドキュメント803は、OSのフィルター管理機能402により複数のXPSパート804に分解され、チケットフィルター307に渡される。チケットフィルター307は、XPSパートのうち、PTを参照し、アプリケーションによって指定された印刷データの保存場所情報を取得する。チケットフィルター307は、印刷データの保存場所情報をデータフィルター308に通知した後、それ以降のXPSパートを受信せず終了する。データフィルター308は、保存したXPSドキュメントを、チケットフィルター307により通知された印刷データの保存場所に、移動、又は複製する。データフィルター308は、入出力インターフェースとしてstream形式のインターフェースを持つ第一のフィルターの一例である。チケットフィルター307は、入出力インターフェースとしてdocument形式のインターフェースを持つ第二のフィルターの一例である。この構成により、PTに指定された印刷データの保存場所にXPSドキュメントを保存するという目的を容易に実現することができる。更に、OSのフィルター管理機能402によるXPSドキュメントの変換回数を一回に抑えることにより、処理は高速である。処理の高速化において重要なのはデータフィルター308とチケットフィルター307との処理順であり、何らかの機能を実現するために、それぞれのフィルター前後に別のフィルターが存在してもよい。図9は、データフィルター308の印刷データ保存処理の一例を示すフローチャートである。まず、データフィルター308は、後述する、格納した印刷データが残っていた場合、それらを削除するS901。この処理は、データフィルター308の処理がエラー終了する等して残った、以後の処理では不必要なファイルを削除することを目的とする。前述の通り、データフィルター308は、入出力インターフェースとして、XPSstream形式を利用する。データフィルター308は、一定サイズ、例えば2MByte分の印刷データを、OSのフィルター管理機能402に対して要求するS902。次に、データフィルター308は、入力した一定サイズの印刷データを次のフィルターに渡すよう、OSのフィルター管理機能402に対して指示するS903。次に、データフィルター308は、取得した一定サイズの印刷データを、外部記憶装置15にファイルとして書き出すS904。一例として、データフィルター308は、仮想ドライバ203が管理する規定のフォルダの下にランダムな名称でファイルを作成する。なお、印刷データは、外部記憶装置15にではなく、RAM14上に記憶されてもよい。次に、データフィルター308は、全ての印刷データを入力したかどうか判定するS905。S905で、全ての印刷データを入力していないと判定した場合、データフィルター308は、入力済みの印刷データの続きの印刷データの入出力とファイルへの書き出し処理を行うS902-S904。S905で、全ての印刷データを入力したと判定した場合、データフィルター308は、PropertyBagに、印刷データの保存場所情報がないか問い合わせるS906。印刷データの保存場所情報は、後述するチケットフィルター307の処理によってPropertyBagに格納される。データフィルター308は、S906の処理が成功したか否か判定するS907。S907で、印刷データの保存場所情報の取得に失敗したと判定した場合、データフィルター308は、一定間隔、例えば100msecの間スリープした後、再度、PropertyBagから印刷データの保存場所情報の取得を試みるS906。S907で、印刷データの保存場所情報の取得に成功したと判定した場合、データフィルター308は、S904で格納した印刷データを、取得した印刷データの保存場所に移動するS908。なお、この移動処理は、チケットフィルター307が実施してもよい。その場合、データフィルター308は、S904で格納した印刷データの場所を示す情報を、PropertyBagに格納する。チケットフィルター307は、PropertyBagから取得した場所に格納されている印刷データを、PT内の印刷データの保存場所に移動する。また、この移動処理は、移動処理専用のフィルターが実施してもよい。図9のフローチャートでは、データフィルター308は、印刷データ全体を保存することを目的としている。もし印刷データの一部のみを保存することが目的である場合、データフィルター308は、S905の判定の前に、S906とS907との処理を行う。その後、印刷データのうち所望する部分を既に入力していれば、データフィルター308は、印刷データの入出力処理S902-S904を途中で止め、S908の処理を行い終了する。仮想ドライバ203が印刷データの一部のみを保存することが目的である場合、このように構成することで、仮想ドライバ203の処理を更に高速化できる。図10は、チケットフィルター307の印刷データの保存場所情報の取得処理の一例を示すフローチャートである。前述の通り、チケットフィルター307は、入出力インターフェースとして、XPSdocument形式を利用する。チケットフィルター307は、XPSパートを、OSのフィルター管理機能402に対して要求するS1001。チケットフィルター307は、S1001で入力したXPSパートがFDSであるかどうか判定するS1002。S1002で入力したXPSパートがFDSでは無いと判定した場合、チケットフィルター307は、FDSを入力するまでXPSパートの要求を繰り返すS1001-S1002。FDSは、XPSドキュメントの論理構造においてFPやFDの上位に存在する。OSのフィルター管理機能402は、XPSドキュメントの論理構造における上位パーツから順番に渡すので、チケットフィルター307は、XPSパートの入力を要求して間もなく、FDSを入力することができる。S1002で入力したXPSパートがFDSであると判定した場合、チケットフィルター307は、FDSに関連付けられたPTを更に取得するS1003。チケットフィルター307は、取得したPTに印刷設定の一つとして記載されている印刷データの保存場所情報を読み出し、PropertyBagに格納するS1004。このように、チケットフィルター307は、FSD以降のXPSパートの入力を全部又は一部要求せず、処理を終了する。OSのフィルター管理機能402がXPSドキュメントを変換処理中であっても、全てのフィルターが処理を終了した場合、印刷ジョブは終了する。チケットフィルター307が不必要なパーツを全部又は一部要求しないことで、データフィルター308による印刷データの保存処理S908が完了後、プリントキュー304の印刷ジョブも速やかに終了する。それにより、複数の印刷ジョブが連続して投入された場合の、仮想ドライバ203の生産性を向上させることができる。本実施形態における印刷システムでは、ユーザーがアドオン202に対して要求した印刷やプレビュー等さまざまな操作によって、仮想ドライバ203に印刷データの保存要求が発生する。仮想ドライバ203の構成により、印刷データの保存は高速に実行され、印刷システム全体として、レスポンスのよい操作感をユーザーに提供することができる。なお、本実施形態の構成を、印刷データを印刷データ中の印刷設定情報に従って処理する他の目的にも適用可能である。<実施形態3>図11は、実施形態3のパソコン1上で実行される印刷プログラムにおいて、プリンタドライバ1107を中心に全体構成を概念的に表した一例を示す図である。なお、本実施形態における印刷システムの全体構成は実施形態1の図1と同等である。以後、特に言及が無い点は、実施形態1と同等の構成である。プリンタドライバ1107は、アプリケーション1101からの印刷要求を受け、印刷装置2に印刷コマンドを送信する、標準的なプリンタドライバである。したがって、図2に示した実施形態1の印刷プログラムの構成に限定せず、任意のアプリケーションから印刷要求を受ける。アプリケーション1101からユーザーインターフェースモジュール1106までは、図3の301から306までと同等である。プリンタドライバ1107は、プレビューフィルター1108とレンダーフィルター1109との2つのフィルターで構成される。プレビューフィルター1108は、入出力インターフェースとして、XPSstream形式を利用するフィルターである。プレビューフィルター1108は、印刷設定情報中の指定に応じて、印刷プレビュー表示モジュール1110を別プロセスで起動する。印刷プレビュー表示モジュール1110は、プレビューフィルター1108から受け取った印刷データを元に、想定される印刷結果を表す印刷プレビューを表示部17に表示する。印刷プレビュー表示モジュール1110、ユーザーから印刷の指示を受けると、印刷データ中の印刷設定情報の印刷プレビューの表示指示をオフに変更した上で、印刷データを再度、スプールデータ1105としてプリントキュー1104に追加する。レンダーフィルター1109は、入出力インターフェースとして、XPSdocument形式を利用するフィルターである。レンダーフィルター1109は、印刷データを元に印刷装置2が解釈可能な印刷コマンドを作成し、印刷装置2に送信する。印刷装置2は、受け取った印刷コマンドを元に印刷処理を実行する。なお、プリンタドライバ1107は、更に印刷データのレイアウト処理を行うフィルター等を有する構成としてもよい。図11のレンダーフィルター1109は、プレビューフィルター1108の後に位置している。プレビューフィルター1108は、入出力インターフェースとしてstream形式のインターフェースを持つ第一のフィルターの一例である。レンダーフィルター1109は、入出力インターフェースとしてdocument形式のインターフェースを持つ第二のフィルターの一例である。図12は、プレビューフィルター1108の印刷プレビュー表示モジュール起動処理の一例を示すフローチャートである。S1201からS1207までの処理は、実施形態1におけるデータフィルター308のS901からS907までの処理と同等である。但し、プレビューフィルターは、PropertyBagから印刷データの保存場所情報ではなく、印刷プレビューの表示情報印刷プレビュー表示情報を取得するS1206。プレビューフィルター1108は、印刷プレビューの表示情報を参照し、印刷プレビューの表示が指示されているか否かを判定するS1208。S1208で印刷プレビューの表示が指示されていると判定した場合、プレビューフィルター1108は、印刷プレビュー表示モジュール1110を起動するS1209。この際、プレビューフィルター1108は、S1204で保存した印刷データを印刷プレビュー表示モジュール1110に渡す。S1208で印刷プレビューの表示が指示されていないと判定した場合、プレビューフィルター1108は、S1204で作成したファイルを削除するS1210。なお、これらの処理は、レンダーフィルター1109が実施してもよいし、専用のフィルターが実施してもよい。図13は、レンダーフィルター1109の処理の一例を示すフローチャートである。S1301からS1304までの処理は、実施形態1におけるチケットフィルター307のS1001からS1004までの処理と同等である。但し、レンダーフィルター1109は、PropertyBagに、印刷データ保存場所情報ではなく、印刷プレビューの表示情報を格納するS1304。レンダーフィルター1109は、印刷プレビューの表示情報を参照し、印刷プレビューの表示が指示されているか否かを判定するS1305。S1305で印刷プレビューの表示が指示されていると判定した場合、レンダーフィルター1109は、処理を終了する。S1305で印刷プレビューの表示が指示されていないと判定した場合、レンダーフィルター1109は、印刷データを元に印刷コマンドを作成し、印刷装置2に送信するS1306。プリンタドライバ1107は、実施形態2における仮想ドライバ203と同等のフィルター構成によって、印刷プレビューの表示を高速に行うことができる。更に、印刷プレビューの表示が指示されていない場合にも、OSのフィルター管理機能402により、印刷処理に不必要なXPSドキュメントの変換処理が動作することは無い。それにより、プリンタドライバ1107は、印刷処理に必要最小限な構成とした場合と同等の速度で印刷処理を実行することができる。なお、本実施形態の構成を、印刷データを印刷データ中の印刷設定情報に従って処理する他の目的にも適用可能である。<実施形態4>実施形態3におけるプリンタドライバ1107は、更に実施形態2における仮想ドライバ203の機能を併せ持つよう構成してもよい。この場合、プリンタドライバ1107は、印刷設定情報に印刷データ保存場所情報が指定されているか否かも判定し、指定されていた場合は仮想ドライバとして動作し、印刷処理を行わずに終了する。これにより、1つのプリンタドライバと追加のアプリケーションで、図2の印刷プログラムを構成することができる。この構成により、ユーザーに対し、仮想ドライバは存在しないよう隠ぺいすることができる。<その他の実施形態>また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェアプログラムを、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ又はCPUやMPU等がプログラムを読み出して実行する処理である。以上、上述した各実施形態によれば、簡易、かつ、堅牢性の高い構成で、印刷データを、印刷データ中の印刷設定情報に従って処理することができる。以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形変更が可能である。