(57)【特許請求の範囲】
【請求項１】
印刷データを処理するために複数のフィルターを実行可能な情報処理装置であって、
第１の印刷データのページをラスター画像に変換する画像化処理を行うか否かの設定を受け付けるモジュールを有し、
前記複数のフィルターは、前記画像化処理を実行する第１のフィルター、前記第１の印刷データを所定のページ記述言語の第２の印刷データに変換する変換処理を実行する第２のフィルターと、第３のフィルターを含み、
前記画像化処理を行う設定を受け付けている場合、前記第１のフィルターが前記第１の印刷データの各ページを前記ラスター画像に変換し、前記ラスター画像を記憶領域に第３の印刷データとして保存し、前記第３のフィルターが前記第２のフィルターによる前記変換処理が行われていない前記第３の印刷データを前記記憶領域から取得して、
前記画像化処理を行わない設定を受け付けている場合、前記第１のフィルターが前記第１の印刷データを前記第２のフィルターに送信し、前記第２のフィルターは前記第１の印刷データを前記第２の印刷データに変換し、前記第３のフィルターが前記第２の印刷データを取得することを特徴とする情報処理装置。
【請求項２】
前記モジュールは前記画像化処理を行うか否かの設定を受け付ける印刷設定画面を表示することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１のフィルターは、前記画像化処理を行う設定を前記モジュールが受け付けた場合に、前記第１の印刷データのページを前記ラスター画像に変換して前記第３の印刷データとして前記記憶領域に保存し、白紙のページを前記第２のフィルターに送信し、
前記第３のフィルターは、前記画像化処理を行う設定を前記モジュールが受け付けた場合に、前記第３の印刷データを前記白紙のページに挿入することを特徴とする請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記第１のフィルターは、前記画像化処理を行う設定を前記モジュールが受け付けた場合に第１のイベントが発生するまで待機し、前記第１のイベントが発生した場合は、前記第３の印刷データを前記記憶領域に保存し、第２のイベントを発生させ、
前記第３のフィルターは、前記画像化処理を行う設定を前記モジュールが受け付けた場合に前記第２のイベントが発生するまで待機し、前記第２のイベントが発生した場合は、前記記憶領域から前記第３の印刷データを取得し、前記第１のイベントを発生させることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
印刷データを処理するために複数のフィルターを実行可能なコンピュータにおいて実行されるプログラムであって、
前記コンピュータに、第１の印刷データのページをラスター画像に変換する画像化処理を行うか否かの設定を受け付けるモジュールを実行させ、
前記複数のフィルターは、前記画像化処理を実行する第１のフィルター、前記第１の印刷データを所定のページ記述言語の第２の印刷データに変換する変換処理を実行する第２のフィルターと、第３のフィルターを含み、
前記画像化処理を行う設定を受け付けている場合、前記第１のフィルターが前記第１の印刷データの各ページを前記ラスター画像に変換し、前記ラスター画像を記憶領域に第３の印刷データとして保存し、前記第３のフィルターが前記第２のフィルターによる前記変換処理が行われていない前記第３の印刷データを前記記憶領域から取得して、
前記画像化処理を行わない設定を受け付けている場合、前記第１のフィルターが前記第１の印刷データを前記第２のフィルターに送信し、前記第２のフィルターは前記第１の印刷データを前記第２の印刷データに変換し、前記第３のフィルターが前記第２の印刷データを取得することを特徴とするプログラム。
【請求項６】
前記モジュールは前記画像化処理を行うか否かの設定を受け付ける印刷設定画面を表示することを特徴とする請求項５に記載のプログラム。
【請求項７】
前記第１のフィルターは、前記画像化処理を行う設定を前記モジュールが受け付けた場合に、前記第１の印刷データのページを前記ラスター画像に変換して前記第３の印刷データとして前記記憶領域に保存し、白紙のページを前記第２のフィルターに送信し、
前記第３のフィルターは、前記画像化処理を行う設定を前記モジュールが受け付けた場合に、前記第３の印刷データを前記白紙のページに挿入することを特徴とする請求項５又は請求項６に記載のプログラム。
【請求項８】
前記第１のフィルターは、前記画像化処理を行う設定を前記モジュールが受け付けた場合に第１のイベントが発生するまで待機し、前記第１のイベントが発生した場合は、前記第３の印刷データを前記記憶領域に保存し、第２のイベントを発生させ、
前記第３のフィルターは、前記画像化処理を行う設定を前記モジュールが受け付けた場合に前記第２のイベントが発生するまで待機し、前記第２のイベントが発生した場合は、前記記憶領域から前記第３の印刷データを取得し、前記第１のイベントを発生させることを特徴とする請求項５乃至７のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィルターを用いて印刷データを処理する技術に関する。
【背景技術】
【０００２】
従来、データに対して処理を行う複数の機能を複数のモジュールにわけて実装する技術がある。
特許文献１はモジュールとしてフィルターを設け、それぞれのフィルターで処理を行う技術を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２１５８７９
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本明細書では、特許文献１のようにフィルターを設け、フィルターによって印刷データを処理する方法を検討する。複数のフィルターを用いて印刷データに対して順次処理を行うように構成した場合に、どのフィルターを採用するかによって実現できる機能が決定されてしまい、要求によってフィルターの採用・不採用を動的に変更できないことがある。その結果、要求に応じてフィルターの処理内容の変更を行うことが困難となる。
【０００５】
処理内容を変更したい例としては、特定のフィルターによって印刷データに処理を行った場合に、処理された印刷データにプリンターに依存する描画コマンドが含まれており、プリンター出力に描画不良が生じる例が挙げられる。
【０００６】
描画不良が生じる具体例には、文字コマンドの属性としてプリンターがサポートしない外字や縦書きフォントが指定された場合や、図形コマンドとしてプリンターが処理可能な最大値を超える頂点数を持つ多角形描画が指定される場合が挙げられる。
【０００７】
よって、本明細書では、このような描画不良の回避手段として、文字コマンドや図形コマンドなどの印刷データのページを、プリンターの出力によって差異が生じない画像に変換する方法を検討する。
【０００８】
しかしながら、この方法でも要求に応じて処理内容を変更できない特定のフィルターを経由して前述の変換された画像を処理しようとすると、特定のフィルターが変換された画像を受け取った結果、特定のフィルターの特性によって、出力した印刷データのデータサイズが必要以上に大きくなり、処理が遅延する。特許文献１でもこうした課題や解決策について何ら開示していない。
【０００９】
よって、本発明は前述の課題を解決するために、設定に応じて特定のフィルターを迂回することで、特定のフィルターを採用した構成であっても描画不良の発生を防ぐことを目的とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成するための本発明に係る情報処理装置は、
印刷データを処理するために複数のフィルターを実行可能な情報処理装置であって、
第１の印刷データのページをラスター画像に変換する画像化処理を行うか否かの設定を受け付けるモジュールを有し、
前記複数のフィルターは、前記画像化処理を実行する第１のフィルター、前記第１の印刷データを所定のページ記述言語の第２の印刷データに変換する変換処理を実行する第２のフィルターと、第３のフィルターを含み、
前記画像化処理を行う設定を受け付けている場合、前記第１のフィルターが前記第１の印刷データの各ページを前記ラスター画像に変換し、前記ラスター画像を記憶領域に第３の印刷データとして保存し、前記第３のフィルターが前記第２のフィルターによる前記変換処理が行われていない前記第３の印刷データを前記記憶領域から取得して、
前記画像化処理を行わない設定を受け付けている場合、前記第１のフィルターが前記第１の印刷データを前記第２のフィルターに送信し、前記第２のフィルターは前記第１の印刷データを前記第２の印刷データに変換し、前記第３のフィルターが前記第２の印刷データを取得することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、設定に応じて特定のフィルターを迂回することで、特定のフィルターを採用した構成であっても描画不良の発生を防ぐことができる。
【図面の簡単な説明】
【００１２】
【図１】印刷システムが適用可能な装置構成例。
【図２】印刷システムに関わるハードウェア構成を示すブロック図。
【図３】印刷システムに関わるソフトウェアモジュールとデータファイルの構成を示す図。
【図４】印刷処理が実行された際の、動的なプログラムオブジェクトの配置を示す図。
【図５】第１の実施形態の画像化フィルターの処理の流れを示すフローチャート。
【図６】第１の実施形態のＸＰＳ標準フィルターの処理の流れを示すフローチャート。
【図７】第１の実施形態のコマンドフィルターの処理の流れを示すフローチャート。
【図８】ＸＰＳの構造を示す図。
【図９】ＰＣＬに含まれうるコマンドのパターンを示す例。
【図１０】第２の実施形態の画像化フィルターの処理の流れを示すフローチャート。
【図１１】第２の実施形態のコマンドフィルターの処理の流れを示すフローチャート。
【発明を実施するための形態】
【００１３】
［第１の実施形態］
以下、本発明を実施するための第１の実施形態について図面を用いて説明する。
【００１４】
図１は、本発明の印刷システムが適用可能な装置構成例を示す図である。本印刷システムはＰＣ１０とプリンター２０から構成される。
【００１５】
ＰＣ１０、プリンター２０はＬＡＮ１を介して接続されている。ここで、ＬＡＮ１はイーサーネットの通信方式に対応している。また、ＬＡＮ１は有線ＬＡＮ、無線ＬＡＮの他に、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＵＳＢなどの接続形態であっても良い。
【００１６】
図２は、ＰＣ１０のハードウェア構成を示すブロック図である。
【００１７】
ＣＰＵ１０１は、ＲＡＭ１０２に記憶されているプログラムに従って、システムバス１０４に接続される各デバイスを総括的に制御する。このＲＡＭ１０２は、ＣＰＵ１０１の主メモリ、ワークエリア等としても機能する。
【００１８】
加えて、ＣＰＵ１０１が外部メモリ１１１に記憶されているプログラムに基づき処理を実行することによって、図３に示されるような情報処理装置１００のソフトウェア構成及び後述するフローチャートの各ステップの処理が実現される。
【００１９】
ＲＯＭ１０３は、各種プログラム及びデータを格納しており、各種フォントを記憶するフォントＲＯＭ１０３ａ、ブートプログラムやＢＩＯＳ等を記憶するプログラムＲＯＭ１０３ｂ、及び各種データを記憶するデータＲＯＭ１０３ｃに区分けして構成される。
【００２０】
ネットワークＩ／Ｆ１０５は、ＬＡＮ１に接続され、通信処理を行なう。
【００２１】
キーボードコントローラＩ／Ｆ１０６は、キーボード１０９や不図示のポインティングデバイス（マウス）からのキー入力を制御する。
【００２２】
ディスプレイＩ／Ｆ１０７は、ディスプレイ１１０への表示処理を制御する。
【００２３】
外部メモリＩ／Ｆ１０８は、例えばハードディスク（ＨＤ）等の外部メモリ１１１とのアクセスを制御する。外部メモリ１１１は、オペレーティングシステム（以下、ＯＳ）１１２や本発明の印刷システムを担う各種ソフトウェア１１３、さらに、ユーザファイル、編集ファイル等の各種データ１１４を記憶する記憶媒体として機能する。
【００２４】
なお、ＯＳ１１２は本実施例ではＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）  ８を使用するものとする。
【００２５】
図３は、ＰＣ１０における本発明の印刷システムに関わるソフトウェアモジュールとデータファイルの静的なパッケージ構成を示す図である。
【００２６】
図３に示すすべてのソフトウェアモジュールとデータは外部メモリ１１１に記憶されており、実行時にＲＡＭ１０２にロードされＣＰＵ１０１によって実行されたり、読み込まれたりする。
【００２７】
プリンタードライバーパッケージ３０は、プリンターベンダーによって開発され提供されるソフトウェアモジュールやデータファイルを含むパッケージである。また、プリンタードライバーパッケージ３０は、ユーザーによってＯＳ１１２にセットアップされることによって、プリンタードライバーとして動作することが可能となる。
【００２８】
セットアップファイル３０１は、セットアップ時にＯＳ１１２によって読み込まれるデータファイルであり、プリンタードライバーパッケージ３０自身の構成や、依存するＯＳドライバーパッケージ３１に関する情報を含んでいる。
【００２９】
マニフェストファイル３０２は、プリンタードライバーの初期化情報を記述したデータファイルである。
【００３０】
ＧＰＤファイル３０３は、プリンタードライバーの機能情報を定義したデータファイルである。具体的には、利用可能な用紙サイズ、両面、ホチキスといったプリンタードライバーの機能に関する情報が記述されている。他にも、後述する画像化処理を適用した印刷方法を有効にするかどうか、という機能情報についても記述されている。ＧＰＤファイル３０３は、ＯＳドライバーパッケージ３１に含まれるＯＳコンフィグモジュール３１１によって読み込まれる。
【００３１】
パイプラインコンフィグファイル３０４は印刷処理の順序をどのように構成するかについて定義したデータファイルである。
【００３２】
ベンダーフィルターモジュール３０５は、プリンターベンダーによって開発された印刷処理を実現するためのモジュールである。
【００３３】
一方、ＯＳドライバーパッケージ３１は、プリンタードライバーパッケージ３０によって利用されるソフトウェアパッケージであり、Ｍｉｃｒｏｓｏｆｔ社によって開発され提供される。
【００３４】
ＯＳコンフィグモジュール３１１はＧＰＤファイル３０３に定義された情報に基づいてプリンタードライバーのユーザーインターフェースを表示したり、ＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）に含まれる印刷設定データであるＰｒｉｎｔＴｉｃｋｅｔを生成したりする。
【００３５】
ＯＳフィルターモジュール３１２には、Ｍｉｃｒｏｓｏｆｔ社によって開発された印刷処理が組み込まれている。
【００３６】
図４は、本発明の印刷処理に関わるソフトウェアモジュールがＲＡＭ１０２にロードされＣＰＵ１０１によって実行された際の、動的なプログラムオブジェクトの配置を示す図である。
【００３７】
アプリケーション４０１は文書を作成し、作成した文書を元にプリンタードライバーに印刷処理を行わせるためのソフトウェアである。ユーザーによって印刷指示が与えられると、アプリケーション４０１は文書をＸＰＳに変換し、ＯＳ１１２の提供する印刷ＡＰＩを通じてＸＰＳをフィルターパイプラインマネージャー４０２に送信する。
【００３８】
Ｖ４（Ｖｅｒｓｉｏｎ４）プリンタードライバーでは、ＸＰＳプリントフィルターパイプラインと呼ばれるプログラミングモデルに従って印刷処理が実行される。
【００３９】
ＸＰＳプリントフィルターパイプラインにおける印刷処理を行うモジュールはフィルターと呼ばれる。そして、複数のフィルターはフィルターパイプラインマネージャー４０２によって順にデータを処理する。具体的には、あるフィルターの出力がその次に連結されたフィルターの入力となり、各フィルターが入力に対し順次処理を実行することによってプリンター２０に送信するＰＤＬ（Ｐｒｉｎｔｅｒ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）を生成する仕組みになっている。
【００４０】
なお、本明細書ではフィルター間でやりとりされるデータ（ＸＰＳやＰＣＬ）や、後述するプロパティバッグに格納されるバイパスオブジェクトを印刷データとも呼ぶ。
【００４１】
フィルターパイプラインマネージャー４０２はＸＰＳを受信すると、パイプラインコンフィグファイル３０４を読み込み、記述されたフィルター構成情報にしたがってフィルターをロードし、フィルター間の入出力インターフェースを連結する。
【００４２】
図４では画像化フィルター４０３、ＸＰＳ標準フィルター４０４、コマンドフィルター４０５はフィルターパイプラインマネージャー４０２によってロードされたフィルターである。そのうち、画像化フィルター４０３とコマンドフィルター４０５はベンダーフィルターモジュール３０５に組み込まれているフィルターである。一方、ＸＰＳ標準フィルター４０４はＯＳフィルターモジュール３１２に組み込まれているＭｉｃｒｏｓｏｆｔ社のフィルター（ＭＳｘｐｓＰＣＬ６．ｄｌｌ）である。
【００４３】
なお、ＸＰＳ標準フィルター４０４は画像コマンドとして、非可逆圧縮の画像コマンドを可逆圧縮の画像形式であるＤｅｌｔａ  Ｒｏｗ  Ｃｏｍｐｒｅｓｓｉｏｎを適用した画像コマンドに変換してＰＣＬ（Ｐｒｉｎｔｅｒ  Ｃｏｍｍａｎｄ  Ｌａｎｇｕａｇｅ）を出力する。その結果、非可逆圧縮の画像コマンドから構成されたＰＣＬよりも、ＸＰＳ標準フィルター４０４によって出力されたＰＣＬのデータサイズの方が大きくなる特性がある。
【００４４】
本明細書では受信したＸＰＳはＸＰＳ標準フィルター４０４又はコマンドフィルター４０５によりＰＣＬに変換されて出力される。フィルターによって出力されたＰＣＬは、スプーラー４０６によってバッファリングされ、ポートモニター４０７によってプリンター２０に送信される。
【００４５】
パイプラインプロパティバッグ４０８は、すべてのフィルターがアクセスすることができるデータ管理用の保存領域である。互いに入出力のインターフェースが連結されていないフィルター同士であっても、パイプラインプロパティバッグ４０８に対してデータを登録したり取得したりできるため、画像化フィルター４０３からコマンドフィルター４０５に対して、間にあるＸＰＳ標準フィルターを介さず情報を送信することが可能である。
【００４６】
バイパスオブジェクト４０９はパイプラインプロパティバッグ４０８を通じて送受信されるデータオブジェクトである。また、バイパスオブジェクト４０９には後述する画像オブジェクト４１１とページ設定オブジェクト４１２が格納される。
【００４７】
図５は、第１の実施形態における画像化フィルター４０３の印刷処理を示すフローチャートである。
【００４８】
はじめに、画像化フィルター４０３は、フィルターパイプラインマネージャー４０２によってロードされると、画像オブジェクト４１１とページ設定オブジェクト４１２が存在しない空のバイパスオブジェクト４０９を生成し、パイプラインプロパティバッグ４０８に登録する（Ｓ１０１）。
【００４９】
次に、画像化フィルター４０３は、フィルターパイプラインマネージャー４０２が提供するＡＰＩを通じて、アプリケーション４０１から入力されたＸＰＳを構成するパーツにアクセスし、Ｊｏｂ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔを取得し、解析する（Ｓ１０２）。
【００５０】
図８にＸＰＳのデータ例を模式図で示す。
【００５１】
ＸＰＳはパーツと呼ばれるデータを構成要素とする文書フォーマットである。そして、パーツ同士はＸＰＳ内で互いに関連付けられている。
【００５２】
ＸＰＳの文書構造を構成するパーツにはＦｉｘｅｄＤｏｃｕｍｅｎｔＳｅｑｕｅｎｃｅ、ＦｉｘｅｄＤｏｃｕｍｅｎｔ、ＦｉｘｅｄＰａｇｅがあり、それぞれジョブ、ドキュメント、ページという文書の階層構造を表現している。ここで、ＦｉｘｅｄＰａｇｅは、ＸＰＳで規定された様々な描画コマンドが記述されたＸＭＬ形式のデータである。さらに各文書構造のパーツには印刷設定をＸＭＬ形式で表現したＰｒｉｎｔＴｉｃｋｅｔと呼ばれるパーツが関連付けられる。
【００５３】
ＰｒｉｎｔＴｉｃｋｅｔは、どの文書構造のパーツに関連付けられているかによってそれぞれＪｏｂ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔ、Ｄｏｃｕｍｅｎｔ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔ、Ｐａｇｅ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔと呼び分けられる。Ｊｏｂ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔはジョブ全体に渡る印刷設定を表現し、Ｄｏｃｕｍｅｎｔ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔはページの集まりであるドキュメントに対する印刷設定を表現する。Ｐａｇｅ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔは各ページ固有の印刷設定を表現する。
【００５４】
そして、画像化処理を適用した印刷方法を有効にするかどうかを示す情報はＪｏｂ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔに記述される。以降、この情報がＪｏｂ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔに記述されるまでの流れを説明する。
【００５５】
本発明におけるＶ４プリンタードライバーの機能を定義するＧＰＤファイル３０３には、画像化処理を適用した印刷方法を有効にするか否か、という機能情報が記述されている。これにより、ＧＰＤファイル３０３を元にＯＳコンフィグモジュール３１１によって表示された印刷設定画面では、ユーザーが画像化処理適用の有効または無効を選択的に入力することができる。アプリケーション４０１で印刷指示が行われると、ＯＳコンフィグモジュール３１１は、前述の印刷設定画面によって画像化処理を有効にするか否か、すなわち画像化処理を行うか否かの設定を受け付け、受け付けた設定をＰｒｉｎｔＴｉｃｋｅｔ形式に変換する。変換されたＰｒｉｎｔＴｉｃｋｅｔは、アプリケーション４０１がＸＰＳを生成する際にＪｏｂ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔとしてＸＰＳ内に書き込まれる。
【００５６】
再度図５に戻り説明を続ける。
【００５７】
画像化フィルター４０３は、Ｊｏｂ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔを解析した結果、画像化処理の印刷設定が有効化されていればステップＳ１０４に進み、そうでなければＳ１１０に進む（Ｓ１０３）。
【００５８】
以降、先に画像化処理有効時のフローであるＳ１０４〜Ｓ１０９の説明を行う。
【００５９】
画像化フィルター４０３は、フィルターパイプラインマネージャー４０２が提供するＡＰＩを通じて、ＦｉｘｅｄＰａｇｅのパーツを取得することができるかどうかを判断する（Ｓ１０４）。パーツが取得できたときはＳ１０５に進む。次のＦｉｘｅｄＰａｇｅがＡＰＩを通じて取得できなかったときは、それは画像化フィルター４０３がジョブに含まれる全ページを処理し終わったことを表すので、画像化フィルター４０３の処理を終了する。
【００６０】
次に、画像化フィルター４０３は、後述するコマンドフィルター４０５による取得イベントが発生するまで待機し（Ｓ１０５）、取得イベントが発生したら次に進んで取得したＦｉｘｅｄＰａｇｅを画像化し（Ｓ１０６）、画像をバイパスオブジェクト上の画像オブジェクト４１１として登録する（Ｓ１０７）。
【００６１】
本実施形態において、バイパスオブジェクト上の画像オブジェクト４１１とページ設定オブジェクト４１２は、ある１つのページに関する情報だけを保存するよう設計されている。また、画像化フィルター４０３とコマンドフィルター４０５は、それぞれ別のスレッドにおいて非同期に実行されるプログラムである。したがって、画像化された１ページの画像を画像化フィルター４０３が登録してからコマンドフィルター４０５が取得し、取得が終わってから、画像化された次のページの画像を画像化フィルター４０３が登録、というようにタイミングを合わせる必要がある。
【００６２】
ここで用いられるのが、取得イベントと登録イベントという２つのイベントである。
【００６３】
取得イベントはコマンドフィルター４０５が画像オブジェクト４１１とページ設定オブジェクト４１２を取得することで発生する。そして、画像化フィルター４０３は取得イベントが発生するまで画像オブジェクト４１１とページ設定オブジェクト４１２を登録することができない。よって、取得イベントが発生するまで、換言すればコマンドフィルター４０５による画像オブジェクト４１１とページ設定オブジェクト４１２の取得が完了するまで、画像化フィルター４０３による画像オブジェクト４１１とページ設定オブジェクト４１２の登録を待機させることができる。
【００６４】
一方の登録イベントは取得イベントと対になるイベントであり、画像化フィルター４０３が画像オブジェクト４１１とページ設定オブジェクト４１２を登録することで発生する。そして、コマンドフィルター４０５は登録イベントが発生するまで画像オブジェクト４１１とページ設定オブジェクト４１２を取得することができない。
【００６５】
なお、本実施例では取得イベントと登録イベントとしてはＷｉｎｄｏｗｓ（登録商標）のイベントを、待機処理はＷａｉｔｆｏｒＭｕｌｔｉｐｌｅＯｂｊｅｃｔのＡＰＩを、待機状態解除の処理はＳｅｔＥｖｅｎｔのＡＰＩを用いるものとする。
【００６６】
また、Ｓ１０６のＦｉｘｅｄＰａｇｅの画像化とは、ＦｉｘｅｄＰａｇｅに含まれるＸＰＳの描画コマンド（文字コマンド、図形コマンド、画像コマンド）をラスター画像に変換することである。本実施例では、画像化はＯＳ１１２の提供するＸＰＳ  Ｒａｓｔｅｒｉｚａｔｉｏｎ  Ｓｅｒｖｉｃｅを用いて、ＦｉｘｅｄＰａｇｅ全体を１枚のラスター画像に変換するものとする。また、ラスター画像は高速かつ高画質な印刷が可能なＪＰＥＧ圧縮形式を採用するものとする。これによってＳ１０６で印刷データのページがラスター画像に変換されて、Ｓ１０７で印刷データとして保存領域に保存される。
【００６７】
次に、画像化フィルター４０３は、フィルターパイプラインマネージャー４０２が提供するＡＰＩを通じて、Ｐａｇｅ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔのパーツを取り出し、バイパスオブジェクト上のページ設定オブジェクト４１２として登録する（Ｓ１０８）。
【００６８】
次に、画像化フィルター４０３は登録イベントを発生させる（Ｓ１０９）。
【００６９】
Ｓ１０９を実行したら次のページを処理するために画像化処理有効時フローの先頭であるＳ１０４に戻る。
【００７０】
一方、Ｓ１１０〜Ｓ１１１は画像化処理無効時のフローである。
【００７１】
画像化フィルター４０３は、Ｓ１０４と同様の方法で次のＦｉｘｅｄＰａｇｅを取得できるか判断し（Ｓ１１０）、画像化処理は不要なのでＦｉｘｅｄＰａｇｅが取得できた場合は取得したＦｉｘｅｄＰａｇｅをそのまま次のフィルターであるＸＰＳ標準フィルター４０４に送信する（Ｓ１１１）。次のＦｉｘｅｄＰａｇｅが取得できなかったとき、すなわち全ページの処理が終わったら、フィルターの処理を終了する。
【００７２】
図５のフローチャートの説明から明らかなように、第１の実施形態においてＸＰＳ標準フィルター４０４が動作するのは画像化処理が無効でかつＳ１１１が実行されたときに限定される。
【００７３】
以降、ＸＰＳ標準フィルター４０４の動作について説明する。
【００７４】
ＸＰＳ標準フィルター４０４は印刷データを変換してコマンドフィルター４０５に送信する。具体的には、ＸＰＳ標準フィルター４０４はＸＰＳを変換し、ＰＣＬを出力する。よって、まず最初に図９（ａ）を用いてＰＣＬのデータ構造を説明する。
【００７５】
ＰＣＬのデータ構造もＸＰＳと同様に文書構造を表す階層を有しており、上からＰＪＬ、Ｓｅｓｓｉｏｎ、Ｐａｇｅとなっている。ＰａｇｅはＯｒｉｅｎｔａｔｉｏｎやＭｅｄｉａＳｉｚｅといった印刷設定コマンドと、Ｔｅｘｔ、Ｇｒａｐｈｉｃｓ、Ｉｍａｇｅの各種描画コマンドから構成される。
【００７６】
図６は、第１の実施形態におけるＸＰＳ標準フィルター４０４の印刷処理を示すフローチャートである。
【００７７】
はじめに、ＸＰＳ標準フィルター４０４は、Ｊｏｂ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔを解析し（Ｓ２０１）、解析結果を元にＰＣＬにおけるＰＪＬとＳｅｓｓｉｏｎを生成し（Ｓ２０２）、コマンドフィルター４０５に送信する（Ｓ２０３）。
【００７８】
次に、ＸＰＳ標準フィルター４０４は、次のＦｉｘｅｄＰａｇｅが存在するか判定し（Ｓ２０４）、次のＦｉｘｅｄＰａｇｅが存在すれば、次のＦｉｘｅｄＰａｇｅをＰＣＬのＰａｇｅに変換し（Ｓ２０５）、コマンドフィルター４０５に送信する（Ｓ２０６）。
【００７９】
次のＦｉｘｅｄＰａｇｅが取り出せなかったとき、すなわち全ページの処理が終わったら、フィルターの処理を終了する。
【００８０】
図７は、第１の実施形態におけるコマンドフィルター４０５の印刷処理を示すフローチャートである。
【００８１】
はじめに、Ｊｏｂ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔに記述された印刷設定を解析して（Ｓ３０２）、画像化処理が有効かどうか判断する（Ｓ３０３）。画像化処理が有効である場合はステップＳ３０４に進み、そうでない場合はＳ３１３に進む。
【００８２】
画像化処理が有効である場合、コマンドフィルター４０５は、ＰＣＬのＰＪＬとＳｅｓｓｉｏｎをＪｏｂ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔから生成し（Ｓ３０４）、フィルターパイプラインマネージャーに送信する（Ｓ３０５）。
【００８３】
次に、各ページに対する処理として、Ｓ３０６〜Ｓ３１２において、バイパスオブジェクトから取得した情報を元にＰＣＬのＰａｇｅを生成、送信する。
【００８４】
より詳細には、まず画像化フィルター４０３による登録イベントが発生するまで待機する（Ｓ３０６）。
【００８５】
登録イベントが発生したら、バイパスオブジェクトから次の画像オブジェクト４１１が取得可能か判断し（Ｓ３０７）、あれば画像オブジェクト４１１を取得し（Ｓ３０８）、なければ処理を終了する。すなわち、Ｓ３０８によってコマンドフィルター４０５は保存領域から印刷データを取得する。
【００８６】
また、画像オブジェクト４１１に関連付けられたページ設定オブジェクト４１２（Ｐａｇｅ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔ）を取得する（Ｓ３０９）。
【００８７】
画像オブジェクト４１１を元にＰＣＬのＩｍａｇｅコマンドを生成し、ページ設定オブジェクト４１２（Ｐａｇｅ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔ）を元にＯｒｉｅｎｔａｔｉｏｎやＭｅｄｉａＳｉｚｅのコマンドを生成し、それらの情報を元にＰＣＬのＰａｇｅを生成する（Ｓ３１０）。そして、生成したＰａｇｅをパイプラインマネージャーに送信する（Ｓ３１１）。
【００８８】
Ｐａｇｅの送信が終わるたびに、画像化フィルター４０３に画像オブジェクト４１１とページ設定オブジェクト４１２を登録させるために取得イベントを発生させる（Ｓ３１２）。
【００８９】
Ｓ３０７ですべての画像を取得したと判断されたらフィルターの処理を終了する。
【００９０】
Ｓ３０６〜Ｓ３１２で生成されるＰＣＬは、画像化処理を適用したＰＣＬであり、各Ｐａｇｅの描画コマンドは、画像化されたページ全体を描画するための１つのＩｍａｇｅコマンドだけから構成される（図９（ｂ）に例を示す）。
【００９１】
一方、Ｓ３０３で画像化処理が無効であると判断された場合、コマンドフィルター４０５は、ＸＰＳ標準フィルターから送信されたＰＣＬコマンドを取得し、フィルターパイプラインマネージャーに送信する（Ｓ３１３〜Ｓ３１５）。取得するＰＣＬコマンドがなくなったらコマンドフィルター４０５の処理を終了する。
【００９２】
なお、図５と図７のフローチャートに示した処理において、バイパスオブジェクト４０９上には１ページ分だけの情報を登録したが、複数ページ分登録するよう構成しても良い。
【００９３】
ところで、Ｗｉｎｄｏｗｓ（登録商標）  ８ではＰＣＬだけでなくＰＳ（Ｐｏｓｔ  Ｓｃｒｉｐｔ）をサポートする標準ＸＰＳフィルター（ＭＳｘｐｓＰＳ．ｄｌｌ）も提供されているが、本実施例で述べた方法がＰＣＬと同様に適用可能であることは言うまでもない。
【００９４】
以上、本発明を実施するための第１の実施形態では、画像とページ設定の情報を、ＸＰＳ標準フィルター４０４を経由せずコマンドフィルター４０５に送信することにより、画像化処理を適用したＰＣＬが生成可能であることを示した。
【００９５】
［第２の実施形態］
次に、図１０と図１１を用いて、本発明を実施するための第２の実施形態について説明する。
【００９６】
第１の実施形態では画像化処理有効時はＸＰＳ標準フィルター４０４にデータを何も送信しなかったが、第２の実施形態では白紙のＦｉｘｅｄＰａｇｅから構成されるＸＰＳを送信する方法を示す。
【００９７】
図１０は第２の実施形態における、画像化フィルター４０３の処理の流れを示すフローチャートである。
【００９８】
Ｓ４０１〜Ｓ４０７は、Ｓ１０１〜Ｓ１０７と同一である。
【００９９】
すなわち、画像化処理有効時にＦｉｘｅｄＰａｇｅを画像化し、画像をバイパスオブジェクト４０９に登録するところまでは第１の実施形態と同じである。
【０１００】
次に、画像化フィルター４０３は、白紙のＦｉｘｅｄＰａｇｅをＸＰＳ標準フィルター４０４に送信し（Ｓ４０８）、登録イベントを発生させる（Ｓ４０９）。
【０１０１】
白紙のＦｉｘｅｄＰａｇｅとは、ＦｉｘｅｄＰａｇｅ内に描画コマンドを何も含まないＦｉｘｅｄＰａｇｅを指す。
【０１０２】
描画コマンドを何も含まないＦｉｘｅｄＰａｇｅをＸＰＳ標準フィルター４０４に送信すれば、ＸＰＳ標準フィルター４０４は描画コマンドを何も含まないＰＣＬのＰａｇｅを生成し、コマンドフィルター４０５に送信する。
【０１０３】
ただし、画像化フィルター４０３は、送信する白紙のＦｉｘｅｄＰａｇｅに、元のＦｉｘｅｄＰａｇｅのＰａｇｅ−ｌｅｖｅｌ  ＰｒｉｎｔＴｉｃｋｅｔを関連付けてＸＰＳ標準フィルター４０４に送信する。よって、ＸＰＳ標準フィルター４０４が出力するＰＣＬには、図９（ｃ）に示すように、ＰａｇｅにＯｒｉｅｎｔａｔｉｏｎやＭｅｄｉａＳｉｚｅといったページ設定コマンドが含まれる。
【０１０４】
後述するが、コマンドフィルター４０５はページ設定コマンドを含むが描画コマンドは含まないこのＰａｇｅに画像オブジェクト４１１をＩｍａｇｅコマンドとして挿入することにより、図９（ｂ）に示すＰＣＬを生成することが可能となる。
【０１０５】
画像化処理無効時の処理Ｓ４１０〜Ｓ４１１は、Ｓ１１０〜Ｓ１１１と同様である。
【０１０６】
図１１は第２の実施形態における、コマンドフィルター４０５の処理の流れを示すフローチャートである。
【０１０７】
Ｓ５０２〜Ｓ５０３は、Ｓ３０２〜Ｓ３０３と同様である。
【０１０８】
すなわち、画像化処理が有効であるか判断するところまでは第１の実施形態と同じである。
【０１０９】
次に、コマンドフィルター４０５は、ＸＰＳ標準フィルター４０４から送信されたＰＣＬコマンドが存在すれば取得する（Ｓ５０４〜Ｓ５０５）。
【０１１０】
次に取得したＰＣＬコマンドが白紙のＰａｇｅであるか判断し（Ｓ５０７）、白紙のＰａｇｅ以外のコマンドであればそのままフィルターパイプラインマネージャー４０２に送信し（Ｓ５０８）、新たなＰＣＬコマンドをＸＰＳ標準フィルター４０４から受信するステップ（Ｓ５０４）に戻る。白紙のＰａｇｅが取得できた場合は、登録イベントが発生するまで待機し（Ｓ５０９）、登録イベントが発生したら、バイパスオブジェクトから画像オブジェクト４１１を取得し（Ｓ５１０）、描画コマンドを何も含まない白紙のＰａｇｅ内に、Ｓ５１０で取得したバイパスオブジェクトの画像オブジェクト４１１をＩｍａｇｅコマンドとして挿入する（Ｓ５１１）。
【０１１１】
Ｉｍａｇｅコマンドが挿入された新たなＰａｇｅができたらフィルターパイプラインマネージャー４０２に送信し（Ｓ５１２）、取得イベントを発生させる（Ｓ５１３）。
【０１１２】
画像化処理無効時の処理Ｓ５１４〜Ｓ５１６は、Ｓ３１３〜Ｓ３１５と同一である。
【０１１３】
以上により、第２の実施形態における印刷処理でも、図９（ｂ）と同じ、ページ設定のコマンドと、ページの画像を表す１つのＩｍａｇｅコマンドを含むＰａｇｅからなるＰＣＬを生成可能であることを示した。
【０１１４】
第２の実施形態における方法では、ページ設定のＯｒｉｅｎｔａｔｉｏｎやＭｅｄｉａＳｉｚｅのページ設定コマンドをＸＰＳ標準フィルター４０４に行わせるため、コマンドフィルター４０５におけるページ設定コマンドの生成処理を省略できるという特徴がある。
【０１１５】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
0006376876.tif 000002
【図２】
0006376876.tif 000003
【図３】
0006376876.tif 000004
【図４】
0006376876.tif 000005
【図５】
0006376876.tif 000006
【図６】
0006376876.tif 000007
【図７】
0006376876.tif 000008
【図８】
0006376876.tif 000009
【図９】
0006376876.tif 000010
【図１０】
0006376876.tif 000011
【図１１】
0006376876.tif 000012