(57)【要約】【課題】  複数のフィルターで順次印刷データを処理するような印刷システムにおいて、印刷設定情報のマージ処理の合計処理時間を低減する。【解決手段】  第１の階層の第１の印刷設定情報と、第１の階層より下位の階層である第２の階層の第２の印刷設定情報をマージすることに基づいて第３の印刷設定情報を第１のフィルターが生成して保存して、第３の印刷設定情報を第１のフィルターに後続する第２のフィルターで取得する。【選択図】  図５
2014238698.tif 000002
【特許請求の範囲】
【請求項１】
第１の階層の第１の印刷設定情報と、前記第１の階層より下位の階層である第２の階層の第２の印刷設定情報をマージすることに基づいて第３の印刷設定情報を生成して保存する保存手段と、
前記保存手段が保存する前記第３の印刷設定情報を取得する取得手段と、を有し、
前記保存手段は第１のフィルターによって実行され、前記取得手段は前記第１のフィルターに後続する第２のフィルターによって実行されることを特徴とする情報処理装置。
【請求項２】
前記保存手段は、前記第１の印刷設定情報と前記第２の印刷設定情報をマージすることでマージ済み印刷設定情報を生成して、前記マージ済み印刷設定情報の形式を変換することで中間情報として前記第３の印刷設定情報を生成して保存することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記マージ済み印刷設定情報の印刷設定に基づく中間設定情報と前記マージ済み印刷設定情報の印刷設定の更新に関する更新情報を前記中間情報として保存することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記マージ済み印刷設定情報はページ単位に存在し、
前記保存手段は第１のページの前記マージ済み印刷設定情報と前記第１のページの前ページである第２のページの前記マージ済み印刷設定情報が等しい場合に、前記第１のページの前記マージ済み印刷設定情報に基づく前記中間情報を生成せずに、前記第１のページの前記マージ済み印刷設定情報と前記第２のページの印刷設定情報が等しいことを示す情報を保存することを特徴とする請求項２又は請求項３に記載の情報処理装置。
【請求項５】
前記保存手段は、割り付け印刷が指示されている場合に割り付け後の印刷設定情報として、割り付け対象のページのいずれか１ページの印刷設定情報を決定して、決定された前記印刷設定情報に基づいて前記中間情報を生成して保存することを特徴とする請求項２乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記保存手段は、前記第２の階層より下位の階層である第３の階層の第４の印刷設定情報と前記第１の印刷設定情報と前記第２の印刷設定情報をマージすることに基づいて第３の印刷設定情報を生成して保存することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記保存手段は前記第３の印刷設定情報を前記第４の印刷設定情報に上書き保存することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
コンピュータに、
第１の階層の第１の印刷設定情報と、前記第１の階層より下位の階層である第２の階層の第２の印刷設定情報をマージすることに基づいて第３の印刷設定情報を生成して保存する保存工程と、
前記保存工程で保存する前記第３の印刷設定情報を取得する取得工程と、を実行させ、
前記保存工程は第１のフィルターで実行され、前記取得工程は前記第１のフィルターに後続する第２のフィルターで実行されることを特徴とするプログラム。
【請求項９】
前記保存工程は、前記第１の印刷設定情報と前記第２の印刷設定情報をマージすることでマージ済み印刷設定情報を生成して、前記マージ済み印刷設定情報の形式を変換することで中間情報として前記第３の印刷設定情報を生成して保存することを特徴とする請求項８に記載のプログラム。
【請求項１０】
前記マージ済み印刷設定情報の印刷設定に基づく中間設定情報と前記マージ済み印刷設定情報の印刷設定の更新に関する更新情報を前記中間情報として保存することを特徴とする請求項９に記載のプログラム。
【請求項１１】
前記マージ済み印刷設定情報はページ単位に存在し、
前記保存工程は第１のページの前記マージ済み印刷設定情報と前記第１のページの前ページである第２のページの前記マージ済み印刷設定情報が等しい場合に、前記第１のページの前記マージ済み印刷設定情報に基づく前記中間情報を生成せずに、前記第１のページの前記マージ済み印刷設定情報と前記第２のページの印刷設定情報が等しいことを示す情報を保存することを特徴とする請求項９又は請求項１０に記載のプログラム。
【請求項１２】
前記保存工程は、割り付け印刷が指示されている場合に割り付け後の印刷設定情報として、割り付け対象のページのいずれか１ページの印刷設定情報を決定して、決定された前記印刷設定情報に基づいて前記中間情報を生成して保存することを特徴とする請求項９乃至１１のいずれか１項に記載のプログラム。
【請求項１３】
前記保存工程は、前記第２の階層より下位の階層である第３の階層の第４の印刷設定情報と前記第１の印刷設定情報と前記第２の印刷設定情報をマージすることに基づいて第３の印刷設定情報を生成して保存することを特徴とする請求項８に記載のプログラム。
【請求項１４】
前記保存工程は前記第３の印刷設定情報を前記第４の印刷設定情報に上書き保存することを特徴とする請求項１３に記載のプログラム。
【請求項１５】
第１の階層の第１の印刷設定情報と、前記第１の階層より下位の階層である第２の階層の第２の印刷設定情報をマージすることに基づいて第３の印刷設定情報を生成して保存する保存工程と、
前記保存工程で保存する前記第３の印刷設定情報を取得する取得工程と、を有し、
前記保存工程は第１のフィルターで実行され、前記取得工程は前記第１のフィルターに後続する第２のフィルターで実行されることを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置及びプログラム、制御方法に関する。
【背景技術】
【０００２】
特定処理を行うためのフィルターを複数個組み合わせて印刷コマンドを生成するよう構成される印刷システムが存在する。このような構成の印刷システムでは、各フィルターは、自身の担う役割に応じて印刷コマンドの元となる印刷データを変更し、次のフィルターに渡す。このように、フィルター間を流れる印刷データは、適宜フィルターによって編集される。従って、各フィルターは前のフィルターによって渡された印刷データを処理する。
特許文献１はレイアウトフィルターの処理の後にレイアウトフィルターに後続するプレビューフィルターが階層ごとに印刷設定情報を取得する技術を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２８２８４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで第１のフィルターが第１の階層より下位の階層である第２の階層の出力用の第２の印刷設定情報を特定するために、第２の印刷設定情報と第１の階層の第１の印刷設定情報をマージする環境を想定する。また第１のフィルターは第１のフィルターに後続する第２のフィルターにマージ前の印刷設定情報（第１の印刷設定情報と第２の印刷設定情報）を送信するものとする。
【０００５】
次に想定した環境で特許文献１を用いる場合について考える。この場合、特許文献１は前述の環境を開示していない。さらに前述の環境で処理を行った場合、第２のフィルターにはマージ前の印刷設定情報が渡されているため、第２のフィルターが第２の階層の出力用の第２の印刷設定情報を特定するために、第１の印刷設定情報と第２の印刷設定情報を第１のフィルターと同様に第２のフィルターが再度マージする虞がある。よって、このように構成すると第１のフィルターと第２のフィルターで処理が重複して行われてしまい、その結果、フィルター全体の処理が遅延する可能性がある。
【０００６】
本発明は前述のフィルター全体の処理が遅延する可能性を低減することを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的を達成するための本発明に係る情報処理装置は、
第１の階層の第１の印刷設定情報と、前記第１の階層より下位の階層である第２の階層の第２の印刷設定情報をマージすることに基づいて第３の印刷設定情報を生成して保存する保存手段と、
前記保存手段が保存する前記第３の印刷設定情報を取得する取得手段と、を有し、
前記保存手段は第１のフィルターによって実行され、前記取得手段は前記第１のフィルターに後続する第２のフィルターによって実行されることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、フィルター全体の処理が遅延する可能性を低減することができる。
【図面の簡単な説明】
【０００９】
【図１】印刷装置と情報処理装置によって構成される印刷システムのブロック図
【図２】プリンタドライバの構成を示すブロック図
【図３】レイアウトフィルターの処理を示すフローチャート
【図４】レイアウトフィルターのＦＰの加工・編集処理を示すサブフローチャート
【図５】レイアウトフィルターのＦＰ送信処理を示すサブフローチャート
【図６】レイアウトフィルターの逆順用ＦＰ送信処理を示すサブフローチャート
【図７】ＰｒｏｐｅｒｔｙＢａｇに格納する印刷設定情報の構造を示すブロック図
【図８】レンダーフィルターの処理を示すフローチャート
【図９】プレビューフィルターの処理を示すフローチャート
【図１０】ＸＰＳ文書の論理構造を示すブロック図
【図１１】実施形態３のレイアウトフィルターのＦＰ送信処理を示すサブフローチャート
【図１２】実施形態３のレイアウトフィルターの逆順用ＦＰ送信処理を示すサブフローチャート
【図１３】実施形態３のレンダーフィルターの処理を示すフローチャート
【図１４】実施形態３のプレビューフィルターの処理を示すフローチャート
【図１５】従来処理と本発明の処理時間の違いを概念的に示したブロック図
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１１】
ここで印刷設定情報のマージ処理について説明する。
【００１２】
印刷設定情報のマージ、及び印刷設定の整合を取る処理は、構成によっては処理負荷が高い。さらに、各フィルターは、前記印刷設定情報のマージ処理を行い、自身の担う処理を必要に応じて実行した後、印刷設定情報を含むパーツを、実行が終了したものから順次次のフィルターに渡すよう構成する必要がある。従って、次のフィルターは、前のフィルターの前記印刷設定情報のマージ処理が完了しないと、自身の印刷設定情報のマージ処理を開始できない。そのため、印刷システムを構成するフィルターの数が増えるほど、印刷設定情報のマージ処理に要する処理時間が長くなってしまう。よって、アプリケーションが印刷データを作成してから、実際に印刷装置で記録動作に至るまでの時間が遅くなる等の問題があった。
【００１３】
なお、本明細書における印刷設定とはＰｒｉｎｔＴｉｃｋｅｔ（ＰＴ）やＤＥＶＭＯＤＥ構造体に格納される情報を意味する。また本明細書では以降、印刷設定情報としてＰＴを例に説明するが、印刷設定が格納されている情報であればよくＰＴに限られない。
【００１４】
そこで本発明は、前記のような構成の印刷システムにおいて、印刷設定情報のマージ処理の合計処理時間を削減する方法を提供することを目的とする。
【００１５】
＜実施形態１＞
図１は印刷装置２と印刷装置２に接続された情報処理装置（パソコン１）によって構成される印刷システムの全体構成を概念的に表したブロック図の一例である。
【００１６】
パソコン１は入力インターフェース１１とＣＰＵ１２、ＲＯＭ１３、ＲＡＭ１４、外部記憶装置１５、出力インターフェース１６、表示部１７、キーボード１０、マウス１８、入出力インターフェース１９を有する。ＲＯＭ１３には初期化プログラムが入っており、外部記憶装置１５にはアプリケーションプログラム群とＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、プリンタドライバやその他各種のデータが保存されている。外部記憶装置１５にストアされる各種プログラムはＲＡＭ１４をワークメモリとして使用する。
【００１７】
印刷装置２は入出力インターフェース２１とＲＡＭ２２、プリントエンジン２３、ＲＯＭ２４、ＣＰＵ２５を有する。入出力インターフェース２１はパソコン１の入出力インターフェース１９に接続してある。ＲＡＭ２２はＣＰＵ２５の主メモリとワークメモリとして用いられ、受信した印刷データを一旦保存するための受信バッファや各種のデータを保存する。プリントエンジン２３はＲＡＭ２２に保存されたデータに基づき印刷を行う。ＲＯＭ２４には各種の制御プログラムが使用するデータが入っており、ＣＰＵ２５はこれらの制御プログラムに従って印刷装置２の各部を制御する。
【００１８】
ここでは、例としてパソコン１と印刷装置２の処理分担を上記のように示したが、特にこの分担形態に限らず他の形態であっても構わない。
【００１９】
図２は本実施形態におけるプリンタドライバの構成を説明するためにプリンタドライバ２０７を中心に概念的に表したブロック図の一例である。以下、一般的に普及しているパソコンにＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）をＯＳとして使用し、スプールデータとしてＭｉｃｒｏｓｏｆｔ社が開発したオープン規格の電子文書フォーマットの一つであるＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（以下、ＸＰＳ）を用いる印刷システムについて説明する。
【００２０】
アプリケーション２０１が作成した印刷データは、ＯＳの印刷サポート機能２０２を介しスプールデータ２０５としてスプーラ２０３のプリントキュー２０４に一時的に蓄えられる。印刷データは、プリンタドライバ２０７によって印刷装置２が解釈可能な印刷コマンドに変換された後に、印刷装置２に供給されて印刷されるよう構成されている。アプリケーション２０１は印刷指示を行う際にＯＳの印刷サポート機能２０２を介して、ユーザーインターフェースモジュール２０６から返却された印刷設定情報を印刷データに付加する。印刷設定情報は、アプリケーション２０１からの印刷開始指示を行う前に予め設定された情報である。
【００２１】
プリンタドライバ２０７に渡された印刷データは、先ずレイアウトフィルター２０８によって処理される。ここでフィルターとは、入力されたデータをもとに、加工、変換、無変換、生成等の工程を介して、何らかのデータを出力する機能を有するプログラムのことで、不図示のＯＳのフィルター管理機能から呼び出される。レイアウトフィルター２０８は、印刷設定情報に従って印刷データのページを並べ替えたり複数ページを１つのページにまとめたりといったページ構成処理を印刷データに対して行う。次に印刷データは、プレビューフィルター２０９に渡される。プレビューフィルター２０９は、印刷設定情報内に印刷プレビュー情報を表示する指示がなされている場合、印刷プレビュー表示モジュール２１０を呼び出す。印刷プレビュー表示モジュール２１０は印刷プレビュー画面をパソコンの表示部１７上に表示し、印刷結果をユーザーが事前に確認する手段を提供する。その後、印刷プレビュー画面でユーザーが印刷指示をした場合には印刷データは再度スプールされて、レイアウトフィルター２０８から処理される。プレビューフィルター２０９は、印刷設定情報に印刷プレビュー情報を表示する指示がなされていない場合は、印刷データをレンダーフィルター２１１に渡す。レンダーフィルター２１１は、印刷設定情報に従って印刷データを印刷装置２が解釈可能な印刷コマンドに変換する。レンダーフィルター２１１が送信した印刷コマンドは順次印刷装置２に送信される。
【００２２】
図１０はＸＰＳ文書の論理構造を示したブロック図の一例である。ＸＰＳ文書１００１の論理構造はＦｉｘｅｄＤｏｃｕｍｅｎｔＳｅｑｕｅｎｃｅ（ＦＤＳ）１００２がルートとなるツリー構造となっている。ＦＤＳ１００２は子として（下位の階層として）ＦｉｘｅｄＤｏｃｕｍｅｎｔ（ＦＤ）１０１１とＦＤ１０１２を有する。ＦＤ１０１１は子としてＦｉｘｅｄＰａｇｅ（ＦＰ）１０２１とＦＰ１０２２を有する。ＦＤ１０１２は子としてＦＰ１０２３を有する。印刷設定を記述したＰＴについては、ＦＤＳ１００２がＰＴ１０３１を、ＦＤ１０１１がＰＴ１０３２を、ＦＰ１０２１がＰＴ１０３３を、ＦＤ１０１２がＰＴ１０３４をそれぞれ保持している。ＦＰ１０２２とＦＰ１０２３はＰＴを保持していない。また、ＦＰ１０２１とＦＰ１０２２がフォントや画像等の資源１０４１を共有しており、ＦＰ１０２３はフォントや画像等の資源１０４２を利用している。
【００２３】
ここで例えばＦＰ１０２１を印刷する際に使用するＰＴは、不図示のユーザーデフォルトＰＴとＰＴ１０３１とＰＴ１０３２とＰＴ１０３３をマージしたＰＴとなる。マージとは、２つのＰＴ同士を併合し、１つのＰＴを生成する処理を示す。従って、ＦＰ１０２１を印刷する際に使用するＰＴを決定するためには、３回のマージ処理が必要となる。通常、マージにはバリデーションと呼ばれる複数の印刷設定同士の整合性を取る処理も含まれる。
【００２４】
以上のようにＸＰＳはツリー構造を持ち、表示や印刷において必要な資源を内包する。
図３は本実施形態におけるレイアウトフィルター２０８の処理フローを示すフローチャートである。図３のフローチャートは、レイアウトフィルター２０８の代表的な処理として、通常印刷処理、割り付け印刷（Ｎｕｐ印刷）処理、逆順印刷処理の３つのモードの処理フローを含む。レイアウトフィルター２０８は、それ以外にも冊子印刷処理、スタンプ挿入処理、部数印刷処理など、ページ構成変更やページ内容加工に関する種々の処理を含んでも良い。
【００２５】
レイアウトフィルター２０８は、まずＦＤＳを受信する（Ｓ３０１）。フィルターは、不図示のＯＳのフィルター管理機能の提供するＡＰＩを呼び出すことで、ＸＰＳ文書を構成するパーツを受信したり送信したりすることができる。次に、レイアウトフィルター２０８は、Ｐ、Ｑ、Ｒの３つの変数をそれぞれ０に初期化する（Ｓ３０２）。
【００２６】
Ｐは処理ページ数、Ｑは割り付け印刷処理で利用する蓄積ページ数、Ｒは逆順印刷処理で利用する送信済みページ数を示す。
【００２７】
次に、レイアウトフィルター２０８はＦＤＳ階層のマージ済みＰｒｉｎｔＴｉｃｋｅｔ（ＭｅｒｇｅｄＦＤＳＰＴ）を決定する（Ｓ３０３）。レイアウトフィルター２０８は、ユーザーデフォルトＰＴと、ＦＤＳが保持するＰＴをマージすることによって、ＭｅｒｇｅｄＦＤＳＰＴを決定する。ＦＤＳがＰＴを保持しない場合、レイアウトフィルター２０８は、ユーザーデフォルトＰＴをＭｅｒｇｅｄＦＤＳＰＴとして採用する。また、このマージ処理は、通常、ユーザーインターフェースモジュール２０６によって提供されるものであり、呼び手はユーザーインターフェースモジュール２０６の特定のＡＰＩを呼び出すことでマージ処理を依頼することができる。
【００２８】
次に、レイアウトフィルター２０８は、Ｓ３０１で受信したＦＤＳを送信する（Ｓ３０４）。レイアウトフィルター２０８がＦＤＳを送信すると、次のフィルターであるプレビューフィルター２０９がＦＤＳを受信可能になる。各フィルターは並行に動作することができるが、各パーツは、前のフィルターの処理が完了し送信されるまで、次のフィルターで受信することはできない。このような動作は、ＦＤ、ＦＰに関しても同様である。
【００２９】
次にレイアウトフィルター２０８はＦＤを受信する（Ｓ３０５）。次に、レイアウトフィルター２０８は、ＭｅｒｇｅｄＦＤＳＰＴと、ＦＤが保持するＰＴをマージすることによって、ＭｅｒｇｅｄＦＤＰＴを決定する（Ｓ３０６）。ＦＤがＰＴを保持しない場合、レイアウトフィルター２０８は、ＭｅｒｇｅｄＦＤＳＰＴをＭｅｒｇｅｄＦＤＰＴとして採用する。次にレイアウトフィルター２０８はＦＤを送信する（Ｓ３０７）。なお、本発明では、最終的に確定したＭｅｒｇｅｄＦＰＰＴを各ＦＰに付加するため、レイアウトフィルター２０８以降のフィルターは、構成によってはＦＤを参照する必要が無い。
【００３０】
その場合には、Ｓ３０７の処理は次のように行うように構成しても良い。具体的には、Ｓ３０４の後に、予め用意された固定のＦＤを１つだけ送信する。また、レイアウトフィルター２０８がＦＤを送信する場合、逆順印刷時にはＦＤの順番も逆にして送信する必要があるが、その処理については本発明の特徴的な処理部分では無いため本フローチャートから省略している。
【００３１】
次にレイアウトフィルター２０８はＦＰを受信する（Ｓ３０８）。次に、レイアウトフィルター２０８はＭｅｒｇｅｄＦＤＰＴと、ＦＰが保持するＰＴをマージすることによって、ＭｅｒｇｅｄＦＰＰＴを決定する（Ｓ３０９）。ＦＰがＰＴを保持しない場合、レイアウトフィルター２０８は、ＭｅｒｇｅｄＦＤＰＴをＭｅｒｇｅｄＦＰＰＴとして採用する。
【００３２】
次にレイアウトフィルター２０８は、ＭｅｒｇｅｄＦＰＰＴの印刷設定に従って、ＦＰを加工・編集する処理を行う（Ｓ３１０）。ＦＰの加工・編集処理の詳細は、図４のフローチャートに示し、その説明は後述する。Ｓ３１０でＦＰの加工・編集処理が終了すると、レイアウトフィルター２０８は、Ｐ番目の出力ＦＰが存在するか否かを判定する（Ｓ３１１）。出力ＦＰとは、レイアウトフィルター２０８が必要に応じて加工・編集した、次のフィルターに渡すためのＦＰを示す。レイアウトフィルター２０８は、Ｓ３１０の処理の１つとして、この出力ＦＰの生成処理を行うが、その処理については後述する。Ｓ３１１で出力ＦＰが存在した場合、レイアウトフィルター２０８は、１ページ目のＭｅｒｇｅｄＦＰＰＴで逆順印刷が指示されているか確認する（Ｓ３１２）。Ｓ３１２で逆順印刷が指示されていなかった場合、レイアウトフィルター２０８はＦＰ送信処理を行う（Ｓ３１３）。ＦＰ送信処理の詳細は、図５のフローチャートに示し、その説明は後述する。Ｓ３１１でＰ番目の出力ＦＰが存在しなかった場合、及びＳ３１２で逆順印刷が指示されていた場合、レイアウトフィルター２０８は、Ｓ３１３のＦＰ送信処理をスキップする。
【００３３】
レイアウトフィルター２０８は、次のＦＰが存在するか否か判断し（Ｓ３１４）、存在した場合はＳ３０８からＳ３１３の処理を繰り返す。次のＦＰが存在しなかった場合、レイアウトフィルター２０８は、次のＦＤが存在するか否か判断する（Ｓ３１５）。次のＦＤが存在した場合、レイアウトフィルター２０８はＳ３０５からＳ３１４の処理を繰り返す。次のＦＤが存在しなかった場合、レイアウトフィルター２０８は、１ページ目のＭｅｒｇｅｄＦＰＰＴで逆順印刷が指示されているか確認する（Ｓ３１６）。逆順印刷が指示されていた場合、レイアウトフィルター２０８は、逆順用のＦＰ送信処理を行い（Ｓ３１７）、処理を終了する。逆順用のＦＰ送信処理の詳細は、図６のフローチャートに示し、その説明は後述する。逆順印刷が指示されていなかった場合、レイアウトフィルター２０８は、逆順用のＦＰ送信処理を行わず、処理を終了する。
【００３４】
図４は、レイアウトフィルター２０８がＳ３１０で行う、ＦＰの加工・編集処理の詳細を示すサブフローチャートである。レイアウトフィルター２０８は、１ページ目のＭｅｒｇｅｄＦＰＰＴで割り付け印刷が指示されているか確認する（Ｓ４０１）。
【００３５】
割り付け印刷が指示されていなかった場合、レイアウトフィルターは、Ｐに１を加える（Ｓ４０２）。次に、レイアウトフィルターは、現在のＦＰをＰ番目の出力ＦＰとして保存する（Ｓ４０３）。さらに、レイアウトフィルター２０８は、現在のＭｅｒｇｅｄＦＰＰＴをＰ番目のＭｅｒｇｅｄＦＰＰＴとして保存する（Ｓ４０４）。Ｓ４０１で割り付け印刷が指示されていなかった場合の、本サブフローチャートにおけるレイアウトフィルターの処理は以上で終了である。
【００３６】
Ｓ４０１で割り付け印刷が指示されていた場合、レイアウトフィルターはＱに１を加える（Ｓ４０５）。次に、レイアウトフィルターは、ＱをＮで割った余りが０か否かを判断する（Ｓ４０６）。
【００３７】
ここで、Ｎは、割り付け印刷設定における割り付け数を示し、ＭｅｒｇｅｄＦＰＰＴ内で指定されている。
【００３８】
Ｓ４０６の判定が偽の場合、レイアウトフィルターはＱをＮで割った余りが１か否かを判断する（Ｓ４０７）。Ｓ４０７が真の場合、レイアウトフィルターは、ＭｅｒｇｅｄＦＰＰＴを一時的にキャッシュする（Ｓ４０８）。Ｓ４０８の処理後、及びＳ４０７が偽の場合、レイアウトフィルターはＦＰを一時的にキャッシュする（Ｓ４０９）。Ｓ４０１で割り付け印刷が指示され、かつＳ４０６が偽であった場合の、本サブフローチャートにおけるレイアウトフィルターの処理は以上で終了である。
【００３９】
Ｓ４０６が真であった場合、レイアウトフィルターは、Ｐに１を加える（Ｓ４１０）。次に、レイアウトフィルターは、現在のＦＰとＳ４０９でキャッシュした複数のＦＰを元に、割り付け済みのＦＰを生成し、それをＰ番目の出力ＦＰとして保存する（Ｓ４１１）。割り付け済みのＦＰは、元となる複数のＦＰにおけるページ内オブジェクトを縮小して配置することで作成される。ここで、Ｓ４１１で作成する割り付け済みのＦＰには、割り付け前の最初のＦＰが保持するＰＴを付加する。さらに、レイアウトフィルターは、Ｓ４０８でキャッシュしたＭｅｒｇｅｄＦＰＰＴをＰ番目のＭｅｒｇｅｄＦＰＰＴとして保存する（Ｓ４１２）。Ｓ４１１とＳ４１２の処理は、割り付け印刷を行う場合に、割り付け前の最初のＦＰの印刷設定を、割り付け後のＦＰの印刷設定として扱うことを意味している。
【００４０】
なお、レイアウトフィルターは、その他の方法で、割り付け後のＦＰの印刷設定を決定するように構成しても良い。具体的には最初のＦＰの印刷設定に限らず割り付け対象のＦＰのうち最初から最後のページのいずれか１ページの印刷設定を割り付け後のＦＰの印刷設定とすればよい。
【００４１】
次に、レイアウトフィルターは、Ｑを０にする（Ｓ４１３）。最後に、レイアウトフィルターは、Ｓ４０８及びＳ４０９でキャッシュしたデータを破棄する（Ｓ４１４）。Ｓ４０１で割り付け印刷が指示され、かつＳ４０６が真であった場合の、本サブフローチャートにおけるレイアウトフィルターの処理は以上で終了である。
【００４２】
図５は、レイアウトフィルター２０８がＳ３１３で行う、ＦＰの送信処理の詳細を示すサブフローチャートである。レイアウトフィルターは、Ｐ番目のＭｅｒｇｅｄＦＰＰＴが、Ｐ−１番目のＭｅｒｇｅｄＦＰＰＴと等しいか否かを判定する（Ｓ５０１）。この判定処理は、ＭｅｒｇｅｄＦＰＰＴの元になった、ＦＤＰＴ、ＦＰＰＴをもとに行う。例えば、連続するＦＰ１とＦＰ２、及びそれらの親であるＦＤ１のいずれもＰＴを保持していなかった場合、必然的にＦＰ１とＦＰ２のマージ済み印刷設定は等しいと判断できる。また、ＦＰ１とＦＰ２が同じＰＴを保持していた場合も、ＦＰ１とＦＰ２のマージ済み印刷設定は等しいと判断できる。レイアウトフィルター２０８は、Ｓ３０６及びＳ３０９で、処理中パーツの保持するＰＴが、前のパーツ（ＦＰであれば、その１つ前のＦＰ）の保持するＰＴと等しいか否かの判定を追加で行う。さらにレイアウトフィルター２０８は、その判定結果に従い、適宜マージ処理をスキップして、代わりに前のパーツからＰＴは変わっていないという情報を残す。このような情報を元に、レイアウトフィルター２０８は、Ｓ５０１で、Ｐ番目のＭｅｒｇｅｄＦＰＰＴが、Ｐ−１番目のＭｅｒｇｅｄＦＰＰＴと等しいか否かを判定することができる。
【００４３】
Ｓ５０１が偽の場合、レイアウトフィルター２０８は、Ｐ番目のＭｅｒｇｅｄＦＰＰＴを後述する中間設定情報７０６であるＤＥＶＭＯＤＥ構造体の形式に変換する（Ｓ５０２）。ＤＥＶＭＯＤＥ構造体は、印刷設定を格納するための構造体である。この変換処理は、通常、ユーザーインターフェースモジュール２０６によって提供されるものであり、呼び手はユーザーインターフェースモジュール２０６の特定のＡＰＩを呼び出すことで変換処理を依頼することができる。次に、レイアウトフィルター２０８は、Ｐ番目の後述する中間設定情報７０６及び更新情報７０７をＰ番目のデータとしてＰｒｏｐｅｒｔｙＢａｇ（ＰＢ）に登録する（Ｓ５０３）。ＰｒｏｐｅｒｔｙＢａｇとは、不図示のＯＳのフィルター管理機能により提供されるデータ管理機能であり、データはＲＡＭ１４、若しくは外部記憶装置１５に格納される。全てのフィルターは、ＰｒｏｐｅｒｔｙＢａｇに、任意のデータを格納したり、取得したりできる。
【００４４】
ここで、レイアウトフィルター２０８がＰｒｏｐｅｒｔｙＢａｇに格納する情報の構造を図７に示す。図７（Ａ）は、複数ページの中間情報を格納するためのリスト構造である。
【００４５】
中間情報は印刷設定情報をマージすることで生成した印刷設定情報に基づいて生成される情報である。なお、中間情報も印刷設定に関する情報という意味では印刷設定情報の一種である。
【００４６】
図７の説明を続ける。リスト構造７０１の中には、排他用オブジェクト７０２、ページ１の中間情報７０３からページＭの中間情報７０４までが格納される。リスト構造７０１は、必要に応じてジョブ階層の中間情報を格納しても良い。排他用オブジェクト７０２は、複数のスレッドが同時にリスト構造７０１にアクセスした場合にデータが壊れてしまうのを防止するため、それぞれのスレッドからの処理を排他するために利用される。
【００４７】
中間情報７０５の構造を図７（Ｂ）に示す。中間情報７０５は、中間設定情報７０６、更新情報７０７で構成される。中間設定情報７０６には、前述のＤＥＶＭＯＤＥ構造体の形式の印刷設定が格納される。中間設定情報７０６に格納される情報は、ＰＴや、ＤＥＶＭＯＤＥ以外の構造体の形式であっても良い。更新情報７０７には、中間設定情報７０６からの更新情報が格納される。例えば、Ｓ４０１で割り付け印刷が指示されていた場合、レイアウトフィルターは、指示内容によって、Ａ４サイズの２ページを、Ｂ５サイズ１枚に割り付けるなどする。この場合、レイアウトフィルターがＳ４１１で作成するＦＰはＢ５サイズである。従って、レイアウトフィルター以降のフィルターは、このＦＰをＢ５サイズとして処理する必要がある。このようなケースにおいて、レイアウトフィルター２０８は、更新情報７０７に、用紙サイズをＢ５に変更した事を示す情報を格納する。レイアウトフィルターは、更新情報７０７を格納する代わりに、中間設定情報７０６に、変更を反映させる構成としても良い。
【００４８】
なお、中間情報の実体はメモリ上に図７（Ｂ）の構造で格納され、その格納されたメモリ空間上のアドレスが、リスト構造７０１の各ページの中間情報として格納される。リスト構造７０１において、異なるページの中間情報として、１つの中間情報を示すアドレスを格納しても良い。このような構成とすることで、メモリ使用量を削減できるし、また、アドレスの同一判定を行うことで、中間情報の同一判定を容易に行うことができる。
【００４９】
図５のフローチャートの説明に戻る。レイアウトフィルターは、Ｓ５０３で、リスト構造７０１を適宜作成・更新し、ＰｒｏｐｅｒｔｙＢａｇに格納する。さらに、リスト構造７０１に、中間情報７０５の構成で、Ｐ番目の中間設定情報７０６及び更新情報７０７を格納する。Ｓ５０１で、Ｐ番目のＭｅｒｇｅｄＦＰＰＴがＰ−１番目と同じだった場合、レイアウトフィルターは、Ｐ番目の印刷設定はＰ−１番目（Ｐ番目の前ページ）と等しいことをＰｒｏｐｅｒｔｙＢａｇに保存する（Ｓ５０４）。レイアウトフィルターは、リスト構造７０１のＰ−１番目の中間情報として格納されているアドレスを、Ｐ番目の中間情報として格納することで、Ｓ５０４の処理を実現する。
【００５０】
Ｓ５０３、及びＳ５０４でＰｒｏｐｅｒｔｙＢａｇに情報を格納後、レイアウトフィルター２０８は、Ｐ番目の出力ＦＰを送信する（Ｓ５０５）。レイアウトフィルターが出力したＦＰは、レイアウトフィルター以降のフィルターで受信可能になる。このように、ＰｒｏｐｅｒｔｙＢａｇへの中間情報の格納処理の後にＦＰを送信することで、以降のフィルターが該ＦＰを受信したタイミングで、そのＦＰに対する中間情報がＰｒｏｐｅｒｔｙＢａｇに格納されている事を保証できる。
【００５１】
図５のフローチャートでは、レイアウトフィルターは、連続するページ間で印刷設定が等しい場合に、その情報をＰｒｏｐｅｒｔｙＢａｇに格納する。ここで、レイアウトフィルターは、連続するページ間でなくても、印刷設定が等しい場合はその情報をＰｒｏｐｅｒｔｙＢａｇに格納するよう構成しても良い。その場合、利用するメモリをより削減することができる。
【００５２】
図６は、レイアウトフィルター２０８がＳ３１７で行う、逆順設定時のＦＰの送信処理の詳細を示すサブフローチャートである。まず、レイアウトフィルター２０８は、Ｐが０より大きいか否かを判断する（Ｓ６０１）。Ｐが０以下の場合、レイアウトフィルター２０８は、本サブフローチャートの処理を終了する。Ｐが０より大きい場合、レイアウトフィルターは、Ｒに１を加える（Ｓ６０２）。次に、レイアウトフィルター２０８は、Ｐ番目のＭｅｒｇｅｄＦＰＰＴがＰ＋１番目のＭｅｒｇｅｄＦＰＰＴと同じであるか否かを判断する（Ｓ６０３）。Ｓ６０３が偽の場合、レイアウトフィルター２０８は、Ｐ番目のＭｅｒｇｅｄＦＰＰＴを中間設定情報であるＤＥＶＭＯＤＥ構造体の形式に変換する（Ｓ６０４）。Ｓ６０４の処理はＳ５０２の処理と同一である。次に、レイアウトフィルター２０８は、Ｐ番目の中間設定情報７０６及び更新情報７０７を、Ｒ番目のデータとしてＰｒｏｐｅｒｔｙＢａｇ（ＰＢ）に登録する（Ｓ６０５）。Ｓ６０３が真の場合、レイアウトフィルター２０８は、Ｒ番目の印刷設定はＲ−１番目と等しいことをＰｒｏｐｅｒｔｙＢａｇに保存する（Ｓ６０６）。Ｓ６０５、及びＳ６０６でＰｒｏｐｅｒｔｙＢａｇに情報を格納後、レイアウトフィルター２０８は、Ｐ番目の出力ＦＰを送信する（Ｓ６０７）。次にレイアウトフィルター２０８は、Ｐから１をひく（Ｓ６０８）。その後、レイアウトフィルターは、Ｓ６０１の処理に戻り、Ｓ６０１が偽になるまで処理を繰り返す。このように、逆順印刷設定が指定されている場合、レイアウトフィルターは、ページの順序を逆転させる処理を行う。
【００５３】
以上、本実施形態におけるレイアウトフィルターの特徴的な動作を中心に、図３から図６のフローチャートで説明した。なお、本実施形態では、代表的なレイアウト変更処理として割り付け印刷と逆順印刷を取り上げたが、レイアウトフィルター２０８がそれ以外のページ構成変更やページ内容加工を実施する場合も、本発明を適用可能であることは言うまでもない。レイアウトフィルター２０８は、ページ構成変更やページ内容加工を行った場合、次のフィルターに送信するＦＰの順番、単位で、中間情報が参照可能なよう、ＰｒｏｐｅｒｔｙＢａｇに印刷設定を格納すれば良い。
【００５４】
図３、及び図５のフローチャートでは、レイアウトフィルターは、中間情報をページ単位でＰｒｏｐｅｒｔｙＢａｇに格納する。後続のフィルターが、ＭｅｒｇｅｄＦＤＳＰＴやＭｅｒｇｅｄＦＤＰＴを参照する場合、レイアウトフィルターは、それらのＰＴを格納するように構成しても良い。その場合、レイアウトフィルターは、Ｓ３０３の後にＭｅｒｇｅｄＦＤＳＰＴを、Ｓ３０６の後にＭｅｒｇｅｄＦＤＰＴを格納する。その場合、図７（Ａ）のリスト構造は、ＦＤＳ階層、ＦＤ階層の情報を格納できるよう、構成する必要がある。
【００５５】
図８は本実施形態におけるレンダーフィルター２１１の処理フローを示すフローチャートである。レンダーフィルター２１１は、まずＦＤＳを受信する（Ｓ８０１）。次に、レンダーフィルター２１１はＰを０に初期化する（Ｓ８０２）。次に、レンダーフィルター２１１は、ＦＤの受信（Ｓ８０３）、ＦＰの受信（Ｓ８０４）を行う。次に、レンダーフィルター２１１はＰに１を加える（Ｓ８０５）。次にレンダーフィルター２１１は、ＰｒｏｐｅｒｔｙＢａｇからＰ番目の中間情報を取得する（Ｓ８０６）。この中間情報は、レイアウトフィルター２０８によって、Ｓ５０３、Ｓ５０４、Ｓ６０５、Ｓ６０６で格納されたものである。フローチャートには記載されていないが、Ｓ８０６で中間情報の取得に失敗した場合、レンダーフィルター２１１は、受信済みのＦＤＳ、ＦＤ、ＦＰの保持するＰＴを取得して印刷設定を決定する。これにより、何らかのトラブルが発生して中間情報を取得できなかった場合も、レンダーフィルター２１１は処理を続行することができる。
【００５６】
次に、レンダーフィルター２１１は、取得したＰ番目の中間情報が、１ページ前の中間情報と同じか否かを判定する（Ｓ８０７）。この判定は、Ｐ番目の中間情報と、Ｐ−１番目の中間情報が、それぞれ格納されているメモリ上のアドレスが等しいか否か、を判定することで実現できる。Ｓ８０７が偽の場合、中間情報に格納されているＤＥＶＭＯＤＥ構造体の形式の印刷設定に対し、同じく中間情報に格納されている更新情報を反映する（Ｓ８０８）。反映後、印刷設定間の不整合が生じる可能性があるため、必要に応じて印刷設定間の不整合を取り除く処理も行う（Ｓ８０８）。既にレイアウトフィルター２０８によってＤＥＶＭＯＤＥ構造体の形式の印刷設定が更新されている場合、Ｓ８０８の処理、及び処理の一部は不要である。次に、レンダーフィルター２１１は、印刷設定に従って、印刷コマンドの生成処理を初期化する（Ｓ８０９）。この処理は、具体的には、印刷設定に従って決定する印字領域及び解像度を元にレンダリングエンジンを初期化すること、印刷設定のうち必要な情報を印刷装置２に送信すること、等を含む。次に、レンダーフィルター２１１は、ＦＰを元に印刷装置２が解釈可能な印刷コマンドを生成し、送信する（Ｓ８１０）。Ｓ８０７が真の場合、つまりＰ番目の中間情報が、１ページ前の中間情報と同じである場合、レンダーフィルター２１１は、Ｓ８０８、Ｓ８０９に相当する処理をスキップし、ＦＰを元に印刷装置２が解釈可能な印刷コマンドを生成し、送信する（Ｓ８１１）。Ｓ８０７からＳ８１１のような構成により、印刷設定が変わらない場合に、不要な処理が発生することを防ぐことができる。
【００５７】
レンダーフィルター２１１は、Ｓ８１２で次のＦＰが存在するか否かを判断し、存在した場合はＳ８０４からＳ８１１の処理を繰り返す。Ｓ８１２で次のＦＰが存在しないと判断した場合、レンダーフィルター２１１はＳ８１３で次のＦＤが存在するか否かを判断し、存在した場合はＳ８０３からＳ８１２の処理を繰り返す。Ｓ８１３で次のＦＤが存在しないと判断した場合、レンダーフィルター２１１は本フローチャートの処理を終了する。以上が本実施形態におけるレンダーフィルター２１１の処理である。
【００５８】
各フィルターでマージ処理をそれぞれ行う（マージした結果（中間情報）をフィルター間で引き継がない）構成であれば、レンダーフィルター２１１は、レイアウトフィルター２０８が実施するＳ３０９等のＰＴのマージ処理を複数回実施する必要がある。しかし本実施形態の構成により、レンダーフィルター２１１は、メモリ空間からマージ済みの中間情報を取得することで、ＰＴのマージ処理を省略することができる。マージは、ＰＴの構造を理解した上での印刷設定の収集、バリデーション、さらにＰＴの構造への書き出しと、複数の処理を要し、一般的に処理負荷は高い。本実施形態でＰＴのマージ処理を省略することにより、より高速に印刷データの生成処理を行うことができる。具体的には、まず、アプリケーション２０１が印刷を開始してから、印刷装置２が実際に印刷動作を開始するまでの時間を短縮することができる。さらに、プリンタドライバ２０７が、複数ページの印刷データを処理する場合の１ページあたりの処理時間を短縮することができる。なお、プレビューフィルター２０９も、レンダーフィルター２１１と同様に、ＰＴのマージ処理を省略して、ＰｒｏｐｅｒｔｙＢａｇから中間情報を取得する事が可能であることは言うまでもない。
【００５９】
図１５は、本構成による印刷処理時間の短縮を概念的に示した図である。図１５（Ａ）は各フィルターでマージ処理をそれぞれ行う構成における処理時間を、（Ｂ）は本実施形態の構成における処理時間を示している。また、図１５は、ＦＤＳ、ＦＤ、ＦＰがそれぞれＰＴを保持している場合に、各ＰＴをマージして最初のページの印刷設定を確定させるまでの処理を示している。横軸は、右にいくほど時間が経過していることを示している。各フィルターでマージ処理をそれぞれ行う構成では、レイアウトフィルター２０８がＳ３０３、Ｓ３０６、Ｓ３０９で実施するマージ処理を、全てのフィルターが実施する必要がある。さらに、前のフィルターのＰＴの処理が終了しないと、次のフィルターはそのＰＴを処理できない。従って、図１５（Ａ）に示す通り、各フィルターが順次３回のマージ処理を実行する事になり、全体でマージ処理５回分の処理時間を要する。なお、実際には３つのフィルターのマージ処理を並列に動作させると、それぞれのマージ処理を単独で動作させるよりも処理時間を要する場合がある。これに対し、本発明では、レイアウトフィルター２０８がマージした結果をプレビューフィルター２０９及びレンダーフィルター２１１で参照する。これにより、全体でマージ処理３回分の処理時間で処理が終了する。
【００６０】
また、本実施形態ではプリンタドライバ２０７は３つのフィルターにより構成されているが、２個以上の異なる数のフィルターにより構成される場合も、本発明を適用可能である。フィルターの数が増えると、省略可能なＰＴのマージ処理の回数が増えるため、より処理時間を短縮することができる。また、本実施形態では、先頭のフィルターであるレイアウトフィルター２０８が、ＰＴのマージ処理と、ＰｒｏｐｅｒｔｙＢａｇへの格納処理を行う。何らかの理由で中間情報の参照が不要なフィルターを先頭に配置する場合、２番目以降の中間情報を参照する最初のフィルターが、ＰＴのマージ処理と、ＰｒｏｐｅｒｔｙＢａｇへの格納処理を行うよう構成する。
【００６１】
なお、上記説明ではレイアウトフィルターで中間情報をＦＰに基づいて生成する場合について示した。しかし、これに限らずレイアウトフィルターはＭｅｒｇｅｄＦＤＰＴを中間情報として後続のフィルターに送り、後続のフィルターではＭｅｒｇｅｄＦＤＰＴとＦＰをマージ処理することによってＭｅｒｇｅｄＦＰＰＴを得るように構成しても良い。あるいはＭｅｒｇｅｄＦＰＰＴをＤＥＶＭＯＤＥに変換せずに中間情報として保存する構成にしても構わない。
【００６２】
＜実施形態２＞
本実施形態では、２番目以降のフィルターが印刷設定を変更する構成をとる。なお、以後、特に言及が無い点は、実施形態１と同一の構成である。本実施形態の印刷プレビュー表示モジュール２１０は、印刷設定の一部をユーザーに変更可能とするユーザーインターフェースを提供する。変更可能な印刷設定は、例えば、用紙の種類等である。
【００６３】
図９は、印刷プレビュー表示モジュールを起動する、プレビューフィルター２０９の処理フローを示すフローチャートである。プレビューフィルター２０９は、まずＦＤＳを受信し、それを後で参照可能なようにキャッシュする（Ｓ９０１）。次に、プレビューフィルター２０９はＰを０に、Ｑを０にそれぞれ初期化する（Ｓ９０２）。次に、プレビューフィルター２０９は、ＦＤを受信し、それを後で参照可能なようにキャッシュする（Ｓ９０３）。次に、プレビューフィルター２０９は、ＦＰを受信し、それを後で参照可能なようにキャッシュする（Ｓ９０４）。次に、プレビューフィルター２０９はＰに１を加える（Ｓ９０５）。次に、プレビューフィルター２０９は、次のＦＰが存在するか否かを判断し（Ｓ９０６）、存在した場合はＳ９０４からＳ９０５の処理を繰り返す。Ｓ９０６で次のＦＰが存在しないと判断した場合、プレビューフィルター２０９は次のＦＤが存在するか否かを判断し（Ｓ９０７）、存在した場合はＳ９０３からＳ９０６の処理を繰り返す。
【００６４】
Ｓ９０７で次のＦＤが存在しないと判断した場合、プレビューフィルター２０９はＸＰＳデータの再構成を行う（Ｓ９０８）。具体的には、プレビューフィルター２０９は、キャッシュしたＦＤＳ、ＦＤ、ＦＰを元に、再度ＸＰＳデータの形式のデータを生成する。このＸＰＳデータの再構成処理は、印刷プレビュー表示モジュール２１０が実施しても良い。次に、プレビューフィルター２０９は、印刷プレビュー表示モジュール２１０を起動し、再構成したＸＰＳデータを渡す（Ｓ９０９）。印刷プレビュー表示モジュール２１０は、ＸＰＳデータを受け取ると、ＸＰＳデータのプレビュー表示領域と、印刷設定の変更領域を持つ、不図示のユーザーインターフェース画面を表示部１７に表示する。その間、プレビューフィルター２０９は、印刷プレビュー表示モジュール２１０の処理が完了するまで待つ。印刷プレビュー表示モジュール２１０のユーザーインターフェース画面で、ユーザーが適宜印刷設定を変更する。以降、ユーザーによって変更された印刷設定の情報を設定変更情報と称する。続いてユーザーが印刷開始を指示すると、印刷プレビュー表示モジュール２１０は、設定変更情報を伴ってプレビューフィルター２０９に応答を返す。プレビューフィルター２０９は、印刷プレビュー表示モジュール２１０から設定変更情報を受信すると（Ｓ９１０）、キャッシュしておいたＦＤＳを送信する（Ｓ９１１）。次に、プレビューフィルター２０９は、キャッシュしておいたＦＤを送信する（Ｓ９１２）。次に、プレビューフィルター２０９は、Ｑに１を加える（Ｓ９１３）。次にプレビューフィルター２０９は、ＰｒｏｐｅｒｔｙＢａｇからＱ番目の中間情報を取得する（Ｓ９１４）。次に、プレビューフィルター２０９は、取得したＱ番目の中間情報が、１ページ前の中間情報と同じか否かを判定する（Ｓ９１５）。Ｓ９１５が偽の場合、プレビューフィルター２０９は、ＰｒｏｐｅｒｔｙＢａｇのＱ番目の中間情報を更新する（Ｓ９１６）。更新は、印刷プレビュー表示モジュール２１０から受け取った、設定変更情報に基づいて行う。Ｓ９１６の処理完了後、及びＳ９１５が真の場合、プレビューフィルター２０９はＦＰを送信する（Ｓ９１７）。次に、プレビューフィルター２０９は、キャッシュにＳ９１２で送信したＦＤの子のＦＰが存在するか否かを判断し（Ｓ９１８）、存在した場合はＳ９１３からＳ９１７の処理を繰り返す。Ｓ９１８でＦＰが存在しないと判断した場合、プレビューフィルター２０９はキャッシュに次のＦＤが存在するか否かを判断し（Ｓ９１９）、存在した場合はＳ９１２からＳ９１８の処理を繰り返す。Ｓ９１９で次のＦＤが存在しないと判断した場合、プレビューフィルター２０９は本フローチャートの処理を終了する。
【００６５】
以上のように、本実施形態では、プレビューフィルター２０９が、レイアウトフィルター２０８によってＰｒｏｐｅｒｔｙＢａｇに格納済みの中間情報を更新する処理を行う。プレビューフィルターは、中間情報の更新処理が完了してからＦＰを送信するため、レンダーフィルター２１１がＦＰを受信したタイミングでは、中間情報の更新は完了していることを保証できる。このように、複数のフィルターがＰｒｏｐｅｒｔｙＢａｇに格納した中間情報を更新する場合も、中間情報を更新してからＦＰを送信することで、各フィルターが受信するＦＰとそれに対する印刷設定の不整合が起きず、正しい処理を行うことができる。なお、プレビューフィルター２０９は、逆順設定や割り付け設定など、ページ順やページ数が変わるような印刷設定変更を行うよう構成しても良い。その場合、プレビューフィルター２０９は、ページ編集や、ページ順変更処理を行う。その際も、プレビューフィルター２０９は、ＦＰを送信する前に、そのＦＰに対する中間情報の更新を完了するように構成する。
【００６６】
＜実施形態３＞
本実施形態では、最初のフィルターが決定した印刷設定を、実施形態１、２とは別の方法で２番目以降のフィルターに渡す変形例について説明する。なお、以後、特に言及が無い点は、実施形態２と同一の構成である。
【００６７】
レイアウトフィルター２０８の基本的な処理フローは図３に示したものと同一である。図１１は、レイアウトフィルター２０８がＳ３１３で実施するＦＰ送信処理を示すサブフローチャートである。まず、レイアウトフィルター２０８は、Ｐ番目のＭｅｒｇｅｄＦＰＰＴをＰ番目の出力ＦＰに関連付ける（Ｓ１１０１）。これによってＰ番目のＦＰＰＴはＰ番目のＭｅｒｇｅｄＦＰＰＴによって上書き保存される。次に、レイアウトフィルター２０８は、Ｐ番目の出力ＦＰを送信する（Ｓ１１０２）。以上でレイアウトフィルター２０８がＳ３１３で実施するＦＰ送信処理は終了である。本実施形態では、Ｓ５０１からＳ５０４の処理と異なり、Ｐ番目とＰ−１番目のＭｅｒｇｅｄＦＰＰＴが等しいか否かによって処理を変える必要は無い。レイアウトフィルター２０８がＰ番目のＦＰとＰ−１番目のＦＰに同じＭｅｒｇｅｄＦＰＰＴを関連付けた場合、以後のフィルターは取得したＰＴ同士を比較することで、それらが同じＰＴであるか否かを判定することができる。
【００６８】
図１２は、レイアウトフィルター２０８がＳ３１７で実施する逆順用ＦＰ送信処理を示すサブフローチャートである。Ｓ１２０１はＳ６０１と、Ｓ１２０２はＳ６０２と、それぞれ同一の処理である。Ｓ１２０２の後、レイアウトフィルター２０８は、Ｐ番目のＭｅｒｇｅｄＦＰＰＴをＰ番目の出力ＦＰに関連付ける（Ｓ１２０３）。これによってＰ番目のＦＰＰＴはＰ番目のＭｅｒｇｅｄＦＰＰＴによって上書き保存される。Ｓ１２０４はＳ６０７と、Ｓ１２０５はＳ６０８と、それぞれ同一の処理である。以上で、レイアウトフィルター２０８がＳ３１７で実施する逆順用ＦＰ送信処理は終了である。
【００６９】
図１３は、本実施形態におけるレンダーフィルター２１１の処理フローを示すフローチャートである。Ｓ１３０１からＳ１３０５までは、Ｓ８０１からＳ８０５までの処理と同一である。Ｓ１３０５の後、レンダーフィルター２１１は、ＦＰが保持するＰＴを取得する（Ｓ１３０６）。これは、レイアウトフィルター２０８によって付加されたＭｅｒｇｅｄＦＰＰＴである。Ｓ１３０７は、Ｓ８０７と同一である。Ｓ１３０７が偽の場合、レンダーフィルター２１１は、Ｓ１３０６で取得したＰＴをＤＥＶＭＯＤＥに変換する（Ｓ１３０８）。Ｓ１３０９からＳ１３１３までの処理は、Ｓ８０９からＳ８１３までの処理と同一である。以上でレンダーフィルター２１１の処理は終了である。
【００７０】
図１４は、本実施形態におけるプレビューフィルター２０９の処理フローを示すフローチャートである。Ｓ１４０１からＳ１４１３までの処理は、Ｓ９０１からＳ９１３までの処理と同一である。Ｓ１４１３の後、プレビューフィルター２０９は、ＦＰが保持するＰＴを取得する（Ｓ１４１４）。次にＱ番目のＦＰＰＴと１ページ前のＦＰＰＴが同じか否かを判定する（Ｓ１４１５）。Ｓ１４１５が偽の場合、プレビューフィルター２０９は、取得したＰＴを更新して、再度ＦＰに関連付け直す（Ｓ１４１６）。更新は、Ｓ９１６と同様に、印刷プレビュー表示モジュール２１０から受け取った、設定変更情報に基づいて行う。Ｓ１４１５が真の場合、プレビューフィルター２０９は、前ページの更新済みＰＴをＦＰに関連付けする（Ｓ１４１７）。Ｓ１４１８からＳ１４２０までの処理は、Ｓ９１７からＳ９１９までの処理と同一である。以上で、本実施形態におけるプレビューフィルター２０９の処理は終了である。
【００７１】
以上のように、本実施形態のレイアウトフィルター２０８は、ＰｒｏｐｅｒｔｙＢａｇにＭｅｒｇｅｄＦＰＰＴを格納する代わりに、ＭｅｒｇｅｄＦＰＰＴをＦＰのＰＴとして付加し直す。プレビューフィルター２０９とレイアウトフィルター２０８は、ＦＰにＭｅｒｇｅｄＦＰＰＴが付加されている前提で、ＦＤＳとＦＤに付加されているＰＴの取得処理をスキップし、ＦＰに付加されたＰＴをＭｅｒｇｅｄＦＰＰＴとして扱う。これにより、実施形態１及び２と同様に、複数フィルターがＰＴのマージ処理を重複して行うことを避け、処理を高速化させることができる。なお、本実施形態のレイアウトフィルター２０８はＭｅｒｇｅｄＦＰＰＴをＦＰＰＴとして格納するが、さらにＤＥＶＭＯＤＥに変換した印刷設定をバイナリとしてＰＴの中に格納する等しても良い。そうすることで、複数フィルターがＤＥＶＭＯＤＥへの変換処理を重複して行うことを避け、さらに処理を高速化させることができる。また、ＰＴ以外のパーツにＭｅｒｇｅｄＦＰＰＴやＤＥＶＭＯＤＥを参照可能な形で格納するよう構成しても良い。
【００７２】
＜実施形態４＞
本発明の目的は前述した実施例の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵまたはＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００７３】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、ＳＳＤ、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【００７４】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【００７５】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【符号の説明】
【００７６】
１  パソコン
２  印刷装置
２０７  プリンタドライバ
２０８  レイアウトフィルター
２０９  プレビューフィルター
２１１  レンダーフィルター
【図１】
2014238698.tif 000003
【図２】
2014238698.tif 000004
【図３】
2014238698.tif 000005
【図４】
2014238698.tif 000006
【図５】
2014238698.tif 000007
【図６】
2014238698.tif 000008
【図７】
2014238698.tif 000009
【図８】
2014238698.tif 000010
【図９】
2014238698.tif 000011
【図１０】
2014238698.tif 000012
【図１１】
2014238698.tif 000013
【図１２】
2014238698.tif 000014
【図１３】
2014238698.tif 000015
【図１４】
2014238698.tif 000016
【図１５】
2014238698.tif 000017