(57)【要約】【課題】  本発明は、印刷データを変換するフィルターが例えば外部によって提供されており、モードによって処理を切り替えることが困難である場合でも、印刷データを保存領域を介して後続のフィルターに送信することで、描画不良が生じる可能性を低減することを目的とする。【解決手段】  情報処理装置は、第１のモードである場合に第１の印刷データを第２のフィルターに送信し、第２のモードである場合に第２の印刷データを第２のフィルターに送信してかつ第３の印刷データを保存領域に保存する第１のフィルターと、第１のモードである場合に、第１のフィルターから受信した印刷データを変換する第２のフィルターから、変換された第１の印刷データを受信し、第２のモードである場合に、第２のフィルターから受信する変換された第２の印刷データを削除し、保存領域から第３の印刷データを取得する第３のフィルターと、を有する。【選択図】  図６
2015230711.tif 000002
【特許請求の範囲】
【請求項１】
第１のモードである場合に第１の印刷データを第２のフィルターに送信し、第２のモードである場合に第２の印刷データを前記第２のフィルターに送信してかつ第３の印刷データを保存領域に保存する第１のフィルターと、
前記第１のモードである場合に、前記第１のフィルターから受信した印刷データを変換する前記第２のフィルターから、変換された前記第１の印刷データを受信し、前記第２のモードである場合に、前記第２のフィルターから受信する変換された前記第２の印刷データを削除し、前記保存領域から前記第３の印刷データを取得する第３のフィルターと、を有することを特徴とする情報処理装置。
【請求項２】
前記第１のフィルターは、印刷データを受信し、前記第２のモードである場合に、受信した前記印刷データから描画データを削除して、前記描画データが削除された前記印刷データを前記第２の印刷データとして前記第２のフィルターに送信することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１のフィルターは、印刷データを受信し、前記第２のモードである場合に、受信した前記印刷データの描画データをダミーデータに置き換え、前記ダミーデータを含む前記印刷データを前記第２の印刷データとして前記第２のフィルターに送信することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記第１のフィルター及び前記第３のフィルターは、印刷設定データに基づいてモードが前記第１のモードであるか又は前記第２のモードであるかを判定することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第１のフィルターは、印刷設定データに基づいてモードが前記第１のモードであるか又は前記第２のモードであるかを判定し、
前記第２のフィルターは、前記第２の印刷データに前記ダミーデータが含まれている否かに基づいて前記第１のモードであるか又は前記第２のモードであるかを判定することを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記第１のフィルターは前記保存領域に前記第３の印刷データのパスを保存し、
前記第３のフィルターは前記パスに基づいて前記第３の印刷データを取得することを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
コンピューターに、
第１のモードである場合に第１の印刷データを第２のフィルターに送信し、第２のモードである場合に第２の印刷データを前記第２のフィルターに送信してかつ第３の印刷データを保存領域に保存する第１のフィルターと、
前記第１のモードである場合に、前記第１のフィルターから受信した印刷データを変換する前記第２のフィルターから、変換された前記第１の印刷データを受信し、前記第２のモードである場合に、前記第２のフィルターから受信する変換された前記第２の印刷データを削除し、前記保存領域から前記第３の印刷データを取得する第３のフィルターと、を実行させることを特徴とするプログラム。
【請求項８】
前記第１のフィルターは、印刷データを受信し、前記第２のモードである場合に、受信した前記印刷データから描画データを削除して、前記描画データが削除された前記印刷データを前記第２の印刷データとして前記第２のフィルターに送信することを特徴とする請求項７に記載のプログラム。
【請求項９】
前記第１のフィルターは、印刷データを受信し、前記第２のモードである場合に、受信した前記印刷データの描画データをダミーデータに置き換え、前記ダミーデータを含む前記印刷データを前記第２の印刷データとして前記第２のフィルターに送信することを特徴とする請求項７に記載のプログラム。
【請求項１０】
前記第１のフィルター及び前記第３のフィルターは、印刷設定データに基づいてモードが前記第１のモードであるか又は前記第２のモードであるかを判定することを特徴とする請求項７乃至９のいずれか１項に記載のプログラム。
【請求項１１】
前記第１のフィルターは、印刷設定データに基づいてモードが前記第１のモードであるか又は前記第２のモードであるかを判定し、
前記第２のフィルターは、前記第２の印刷データに前記ダミーデータが含まれている否かに基づいて前記第１のモードであるか又は前記第２のモードであるかを判定することを特徴とする請求項９に記載のプログラム。
【請求項１２】
前記第１のフィルターは前記保存領域に前記第３の印刷データのパスを保存し、
前記第３のフィルターは前記パスに基づいて前記第３の印刷データを取得することを特徴とする請求項７乃至１１のいずれか１項に記載のプログラム。
【請求項１３】
第１のモードである場合に第１の印刷データを第２のフィルターに送信し、第２のモードである場合に第２の印刷データを前記第２のフィルターに送信してかつ第３の印刷データを保存領域に保存する第１のフィルターと、
前記第１のモードである場合に、前記第１のフィルターから受信した印刷データを変換する前記第２のフィルターから、変換された前記第１の印刷データを受信し、前記第２のモードである場合に、前記第２のフィルターから受信する変換された前記第２の印刷データを削除し、前記保存領域から前記第３の印刷データを取得する第３のフィルターと、を有することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィルターを用いて印刷データを処理する技術に関する。
【背景技術】
【０００２】
従来、データに対して処理を行う複数の機能を複数のモジュールにわけて実装する技術がある。
特許文献１はモジュールとしてフィルターを設け、それぞれのフィルターで処理を行う技術を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２１５８７９
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本明細書では、特許文献１のようにフィルターを設け、フィルターによって印刷データを処理する方法を検討する。複数のフィルターを用いて印刷データに対して順次処理を行うように構成した場合に、どのフィルターを採用するかによって実現できる機能が決定されてしまい、フィルターが順次行う処理内容を変更できない可能性がある。
【０００５】
処理内容を変更したい例としては例えば、印刷データの種類や出力先のプリンターによっては、特定のフィルターによって印刷データに処理を行った場合に、処理された印刷データのプリンター出力に描画不良が生じることが挙げられる。よって、本明細書ではさらに、フィルターによる印刷データの変換を行うかどうかをモードによって切り替える方法を検討する。
【０００６】
しかしながら、この方法でも印刷データを変換するフィルターが例えばプリンターベンダーによって処理内容の変更や処理のスキップといった変更を行うことができず、結果、モードによって処理を切り替えることも困難なことがある。特許文献１でも描画不良やフィルターによるモードの切り替えが困難であることについては開示していないため、同様の問題が生じるおそれがある。
【０００７】
よって、本発明は前述の課題を解決することを目的とする。これによりユーザーにとって利便性の高い印刷システムを提供することができる。
【課題を解決するための手段】
【０００８】
上記の目的を達成するための本発明に係る情報処理装置は、
第１のモードである場合に第１の印刷データを第２のフィルターに送信し、第２のモードである場合に第２の印刷データを前記第２のフィルターに送信してかつ第３の印刷データを保存領域に保存する第１のフィルターと、
前記第１のモードである場合に、前記第１のフィルターから受信した印刷データを変換する前記第２のフィルターから、変換された前記第１の印刷データを受信し、前記第２のモードである場合に、前記第２のフィルターから受信する変換された前記第２の印刷データを削除し、前記保存領域から前記第３の印刷データを取得する第３のフィルターと、を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ユーザーにとって利便性の高い印刷システムを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】コンピューターシステムのハードウェアとソフトウェアのブロック構成図
【図２】クライアントとサーバーとプリンターが接続されたネットワークの構成図
【図３】Ｖ４プリンタードライバー印刷処理システムのブロック構成図
【図４】Ｖ４プリンタードライバーの描画データとして使用されるＸＰＳスプールファイルの内部構成
【図５】ＸＰＳスプールファイルに含まれる、１ページ分の描画データを表すＦｉｘｅｄＰａｇｅの例
【図６】Ｖ４プリンタードライバーのレイアウトフィルターのＸＰＳモードのフローチャート
【図７】Ｖ４プリンタードライバーの印刷設定フィルターのＸＰＳモードのフローチャート
【図８】ＦｉｘｅｄＰａｇｅのＸＭＬで、描画データをダミーデータに置きかえたサンプル
【図９】２つのモードにおける印刷データの流れを示す図
【発明を実施するための形態】
【００１１】
［実施例１］
本明細書では特定のモードでは所定のフィルターの処理前の印刷データを保存しておき、後続のフィルターでは先のフィルターにより処理された印刷データではなく、保存された印刷データを処理する構成について説明する。
【００１２】
図１は本発明の実施形態を示す情報処理装置（コンピューター）１００におけるシステムのブロック構成図である。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機能であっても、複数の機器からなるシステムであっても、ネットワークを介して接続がなされ処理が行われるシステムであっても、本発明を適用できることは言うまでもない。
【００１３】
ＣＰＵ１０１は主記憶装置１０２のＲＯＭ１０２１あるいはＲＡＭ１０２２あるいは補助記憶装置１０５に格納されたプログラムに従って情報処理装置全体を制御する。加えて、ＣＰＵ１０１が補助記憶装置１０５に記憶されているプログラムに基づき処理を実行することによって、図３に示されるような情報処理装置１００のソフトウェア構成及び後述するフローチャートの各ステップの処理が実現される。ＲＡＭ１０２２はＣＰＵ１０１が各種処理を行う際のワークエリアとしても使用される。補助記憶装置１０５はアプリケーション１０５１、プリンタードライバー１０５２、オペレーティングシステム（ＯＳ）１０５３等を記録する。キーボード１０３１やマウス・タッチパネルなどに代表されるポインティングデバイス１０３２などの入力機器は、入力Ｉ／Ｆ１０３を通じて、ユーザーがコンピューターに対して各種指示を与えるためのデバイスである。出力Ｉ／Ｆ１０４は、データを外部に出力するためのインターフェースであり、モニタ１０４１やプリンター１０４２などの出力機器に対してデータを出力する。プリンター１０４２とは直接接続されるローカルＩ／Ｏのみならず、通信Ｉ／Ｆ１０６を通じて接続されるネットワーク１０６１を通して接続されていてもよい。また、１０７は共通データシステムバスで、Ｉ／Ｆやモジュール間でデータのやりとりを行う。また、プリンター１０４２は、印刷機能のみを持った印刷装置でも良いし、ＦＡＸ機能のみを持ったＦＡＸ装置でも良いし、スキャン機能および印刷機能など複数の機能を持った複合機でも良い。なお、プリンター１０４２を画像処理装置と呼ぶこともある。
【００１４】
図２は本発明の実施の形態におけるネットワーク１０６１の環境を簡略した図である。
【００１５】
印刷される文書や画像を作成する情報処理装置１００／２０１がネットワークに接続されている。また、情報処理装置のユーザーやプリンターを管理するサーバーコンピュータ２０３が接続されていることもある。ネットワークにはさらにプリンター２０５および１０４２が接続されている。
【００１６】
なお、プリンター２０５は、物理的にネットワークに接続されているが、実際には使用できないオフライン状態であることを示している。ネットワークにはＰＡＮ（Ｐｅｒｓｏｎａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＭＡＮ（Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などの小規模から大規模までのネットワークがある。
【００１７】
図３はＶ４（Ｖｅｒｓｉｏｎ  ４）プリンタードライバー印刷システムのブロック構成図である。Ｖ４プリンタードライバー印刷システムはＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（以下、ＸＰＳと略す）と呼ばれるファイルフォーマットをスプールデータとして使用し、印刷を行うシステムである。図３におけるソフトウェアコンポーネントである１０５１及び１０５２は、補助記憶装置１０５に記憶されており、実行時にＲＡＭ１０２２にロードされ、ＣＰＵ１０１によって実行される。Ｖ４プリンタードライバー印刷システムは、オペレーティングシステム１０５３上で動作している。
【００１８】
ＧＤＩｔｏＸＰＳ変換モジュール３０７、フィルターパイプラインマネージャ３１２、標準フィルター３１４はプリンタードライバー１０５２に含まれるモジュールである。そして、列挙したモジュール及びプリントマネージャ３１８は同時にオペレーティングシステム１０５３から提供されているモジュールである。これらのモジュールのうち標準フィルター３１４はＶ４プリンタードライバーでＰＣＬ（登録商標）やＰＳ（登録商標）のページ記述言語を生成するために使用される、Ｍｉｃｒｏｓｏｆｔ（登録商標）社によって提供されるＸＰＳフィルターである。具体的には、標準フィルター３１４は直前のフィルターから印刷データ（ＸＰＳスプールファイル）を受け取り、それをＰＣＬ（登録商標）又はＰＳ（登録商標）の印刷データに変換する。
【００１９】
プリンタードライバー１０５２とフィルターパイプラインマネージャ３１２の各フィルターである３１３から３１５と、デバイスアプリ３１０は、図１の補助記憶装置１０５にプリンタードライバー１０５２として格納されている。なお、デバイスアプリ３１０は、プリンタードライバーのインストールに連動して、ネットワークを介して自動的にインストールされる。ＧＤＩ印刷アプリケーション３０１（以下、ＧＤＩアプリと略す）とＸＰＳ印刷アプリケーション３０２（以下、ＸＰＳアプリと略す）は、図１の補助記憶装置１０５にアプリケーション１０５１として格納されている。ＧＤＩアプリ３０１は、オペレーティングシステム１０５３が用意するＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）を使用して印刷を行うアプリである。ＸＰＳアプリ３０２は、ＸＰＳスプールファイル３０６を直接使用して印刷を行うアプリである。ユーザーはキーボード１０３１やタッチパネル／マウス１０３２などといった入力装置を使用して、出力装置のモニタ１０４１に映し出されたＧＤＩアプリ３０１、もしくはＸＰＳアプリ３０２から印刷処理を指示する。なお、印刷処理は「プリンターの選択」、「印刷設定データの作成」、「描画データの変換」と３つの処理を順番に行うことで実現される。以下、印刷処理の流れを説明する。
【００２０】
まず、ユーザーは、印刷したいプリンター１０４２を選択する。ユーザーから見るとプリンター１０４２の選択は、印刷を実行するプリンター１０４２に対応したプリンタードライバー１０５２を選択することと同じである。
【００２１】
次に印刷設定データが作成される。印刷設定データが作成される場合、アプリケーション１０５１が印刷設定データ用のメモリ領域をＲＡＭ１０２２に確保する。そして、アプリケーション１０５１は、プリンタードライバー１０５２のコンフィグモジュール３０８を呼び出して、印刷設定データを作成して保存する。ＧＤＩアプリ３０１では印刷設定データとしてバイナリのＤＥＶＭＯＤＥ構造体３０３を用い、ＸＰＳアプリ３０２ではマークアップ言語のＸＭＬ（ｅＸｔｅｎｓｉｖｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）で記載されたプリントチケット３０４を用いる。
【００２２】
ＤＥＶＭＯＤＥ構造体３０３は、オペレーティングシステムが定義する標準領域とプリンタードライバーが独自で定義する拡張領域を持つ。プリントチケット３０４は、ＸＭＬ形式で記述された印刷設定データで、標準領域と拡張領域は名前空間によって記載が分かれている。印刷設定データには機種固有の情報も含まれているので、コンフィグモジュール３０８は、機種依存ファイル３０９を利用して、印刷設定データを作成する。アプリケーション１０５１は、ＤＥＶＭＯＤＥ構造体３０３もしくはプリントチケット３０４の内容を書き換えることで印刷設定を変更する。
【００２３】
印刷設定データには、出力する用紙サイズの情報（例えば「Ａ４」）、両面印刷の指定、カラーと白黒、給紙段の指定など、印刷に必要な設定値が含まれる。印刷設定データの標準領域は仕様が外部に公開されているので、アプリケーションが直接変更できる。プリンター１０４２に依存した拡張領域は、プリンタードライバー１０５２だけが詳細な仕様を把握しているので、通常はデバイスアプリ３１０が持つユーザーインターフェースを使ってユーザーが設定する。ＤＥＶＭＯＤＥ構造体３０３と異なり、プリントチケット３０４は設定値がＸＭＬ形式で記述されているので、ＸＰＳアプリ３０２がすべての設定値を直接変更して書き換えることは可能ではある。しかし拡張領域は、プリンタードライバーごとの独自定義であるため詳細な仕様まではわからず、プリンター１０４２によって仕様が異なることから、デバイスアプリ３１０のユーザーインターフェースを使って設定値を変更するほうが容易である。このように、プリンタードライバー１０５２とデバイスアプリ３１０によって、印刷設定の変更・決定が行われる。これにより印刷設定データが確定される。
【００２４】
なお、デバイスアプリ３１０は、プリンタードライバー１０５２の一種ではあるが、プリンタードライバーとは別のプログラムとしてインストールされる。デバイスアプリ３１０は、プリンタードライバーと、プリントチケット３０４を使用して印刷設定データをやりとりする。
【００２５】
最後に描画データの変換を行う。なお、描画データとはＸＰＳスプールファイル３０６などの印刷データのそれぞれのページに描かれる絵のデータを意味する。印刷データは各ページに描画データを含み、フィルターによって処理されるデータを意味する。本明細書におけるＸＰＳスプールファイル３０６や標準ＰＤＬが印刷データである。
【００２６】
プリンタードライバー１０５２とデバイスアプリ３１０によって印刷設定データが確定したら、ユーザーはアプリケーションから印刷処理を指示する。ＧＤＩアプリ３０１から印刷する場合は、ＧＤＩｔｏＸＰＳ変換モジュール３０７に描画データが送られ、ＸＰＳスプールファイル３０６が作成される。
【００２７】
ＸＰＳアプリ３０２から印刷する場合は、ＸＰＳスプールファイル３０６をＸＰＳアプリ自身が生成するのと、オペレーティングシステムがＸＰＳアプリからの描画命令に応じてＸＰＳスプールファイル３０６を生成するのと２通りの方法がある。どちらの方法であっても、印刷の途中でＸＰＳスプールファイル３０６が生成される。このようにＶ４プリンタードライバー印刷システムは、印刷時にＸＰＳスプールファイル３０６を生成する。
【００２８】
ＸＰＳスプールファイル３０６が生成されたら、プリントフィルタパイプライン３１１に処理が渡される。プリントフィルタパイプライン３１１は複数のフィルターに印刷データを通すことで印刷処理が行われる仕組みで、フィルターコンフィグレーションファイル３１６がフィルターの数や順番を制御する。プリントフィルタパイプライン３１１で動作するフィルターパイプラインマネージャ３１２はフィルターコンフィグレーションファイル３１６に従って、この実施例ではレイアウトフィルター３１３（第１のフィルターに相当）、標準フィルター３１４（第２のフィルターに相当）、印刷設定フィルター３１５（第３のフィルターに相当）の順に処理を行う。フィルターはプリンタードライバー１０５２の構成によって、数や種類が異なる。例えば、図３の３つのフィルターに加えて、更に、印刷データを暗号化するための暗号化フィルターが含まれていても良い。
【００２９】
印刷処理はＸＰＳスプールファイル３０６をフィルターに受け渡すことで行われ、フィルターがそれぞれＸＰＳスプールファイル３０６を加工し次のフィルターに渡していくことで処理が進む。最終的にはＸＰＳスプールファイル３０６などの印刷データが印刷ジョブに変換されて、プリンターに送信される。なお、プリンターは、印刷ジョブを解釈可能であり、送信された印刷ジョブを解釈することで印刷ジョブに基づく印刷処理を実行する。
【００３０】
それぞれのフィルターは独自のデータを、データの保存領域であるプロパティバッグ３１７に保存することができる。それぞれのフィルターは独自のデータをプロパティバッグ３１７に保存することができる他に、プロパティバッグ３１７から、オペレーティングシステム１０５３の情報や、他のフィルターのデータを取得することもできる。
【００３１】
レイアウトフィルター３１３では倍率の変更や製本の面付けレイアウトやスタンプなどレイアウトに関する処理を行う。レイアウトフィルター３１３は、ＸＰＳスプールファイル３０６に含まれるプリントチケット３０４に従って動作する。そのため、たとえば面付けの設定がプリントチケット３０４に存在しないときは、レイアウトフィルター３１３は印刷データに対して何も処理せず、後続の標準フィルター３１４にＸＰＳスプールファイル３０６を渡す。
【００３２】
標準フィルター３１４は、入力されたＸＰＳスプールファイル３０６をレンダリングしてＸＰＳとは異なるページ記述言語（以下、ＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）と略す）である標準ＰＤＬに変換する。また、標準フィルター３１４は、プリントチケット３０４の印刷設定データのうち標準領域の設定を、プリンタジョブ言語（以下、ＰＪＬ（Ｐｒｉｎｔｅｒ  Ｊｏｂ  Ｌａｎｇｕａｇｅ）と略する）に変換する。標準フィルター３１４は、標準ＰＤＬとＰＪＬをまとめて後続の印刷設定フィルター３１５にストリームとして渡す。なお、ストリームとはパーツ毎に保存されたファイルではなく、パーツを一まとめにしてＺＩＰ圧縮されたファイルを意味する。
【００３３】
最後の印刷設定フィルター３１５は、プリントチケット３０４の印刷設定データのうち拡張領域の設定を、ＰＪＬに変換する。印刷設定フィルター３１５は、変換したＰＪＬと渡された標準ＰＤＬとＰＪＬをまとめて印刷ジョブとして、フィルターパイプラインマネージャ３１２に渡す。印刷ジョブは続いて、印刷処理のスケジュール管理を行うプリントマネージャ３１８に送られ、キュー（待ち行列）に次々と登録される。プリントマネージャ３１８は、プリンター１０４２と通信してプリンター１０４２が印刷できる状態になり次第、キューに登録した順にポートモニター３１９を通して印刷ジョブを送信する。
【００３４】
このようにして、印刷データをおよび印刷設定データを印刷ジョブに変換することがプリンタードライバーの主な役目であり、これによって情報処理装置での印刷処理が実施される。
【００３５】
図４はＸＰＳスプールファイル３０６の内部構造である。ＸＰＳスプールファイル３０６は、ルート４０１から始まり、フォルダーとＸＭＬファイルとバイナリリソースからなるツリー構造となっている。ＸＰＳスプールファイル３０６に含まれるＸＭＬファイルは、大きく分けてｒｅｌｓファイルと、それ以外のファイルとに分けられる。ｒｅｌｓファイルは、それぞれのＸＭＬファイルがどの役割を持っているかという関連付け（リレーションシップ）が記載されている。それ以外のファイルについては、以下に説明する。
【００３６】
「［Ｃｏｎｔｅｎｔ＿Ｔｙｐｅｓ］．ｘｍｌ」４０２は、リソースデータに含まれるＸＭＬファイル以外のバイナリデータファイルの種類を関連付ける。「ＦｉｘｅｄＤｏｃｕｍｅｎｔＳｅｑｕｅｎｃｅ．ｆｄｓｅｑ」４０３は、ＸＰＳスプールファイル３０６に含まれるドキュメントを指し示す。ここでは、「ＦｉｘｅｄＤｏｃｕｍｅｎｔ．ｆｄｏｃ」４０６を指し示している。「Ｊｏｂ＿ＰＴ．ｘｍｌ」４０４は印刷ジョブ全体のプリントチケットである。「ＦｉｘｅｄＤｏｃｕｍｅｎｔ．ｆｄｏｃ」４０６は、ＸＰＳスプールファイル３０６の自身のドキュメントに含まれるページを指し示す。ここでは、１ページしか存在しないので、「１．ｆｐａｇｅ」４０７を指し示している。「１．ｆｐａｇｅ」４０７は、ＦｉｘｅｄＰａｇｅと呼ばれる１ページ分の描画データであり、図５のようなＸＭＬになっている。図５の５０１の部分が実際の描画データとなる。「＊．ｏｄｔｔｆ」４０８はフォントデータである。文字を表現する際に使用するフォントデータが、使用する文字の分だけ取り出したサブセットで埋め込まれている。他にリソースデータとして描画データのイメージデータなども格納されていることがある。
【００３７】
このように、ＸＰＳスプールファイル３０６は、多数の細かいパーツから構成されている。また、フィルター間をストリームとして送信される際は、これらのパーツはまとめてＺＩＰ圧縮されており、１つのファイルとしてまとめられ、サイズが小さくなっている。
【００３８】
次に本明細書における特に特徴的な、標準フィルター３１４が出力する標準ＰＤＬを使用する方法と、標準フィルター３１４が出力する標準ＰＤＬを使用せずに、ＸＰＳスプールファイル３０６を直接プリンターに送信する方法を切り替える手段について説明する。これらをレイアウトフィルター３１３の図６のフローチャートと、印刷設定フィルター３１５の図７のフローチャートを使って説明する。
【００３９】
先に図６を用いてレイアウトフィルター３１３の処理を説明する。
【００４０】
レイアウトフィルター３１３は、オペレーティングシステム１０５３が提供するフィルターパイプラインマネージャ３１２から、ＸＰＳスプールファイル３０６のパーツを受信する（Ｓ６０１）。フィルターパイプラインマネージャ３１２はＸＰＳスプールファイル３０６を図４のパーツ毎に分解し、レイアウトフィルター３１３は、分解されたＸＰＳスプールファイル３０６を、それぞれのパーツ毎に受信する。
【００４１】
なお、フィルターがＸＰＳスプールファイル３０６をそのまま受信するか、それぞれのパーツに分解されて受信するかは、フィルターコンフィグレーションファイル３１６にあらかじめ記載しておくことで指定することができる。本実施例では、レイアウトフィルター３１３は、パーツを分解して受信するようにフィルターコンフィグレーションファイル３１６に記載している。
【００４２】
レイアウトフィルター３１３は、受信したパーツのプリントチケット３０４の設定を調べ（Ｓ６０２）、レイアウト処理を行う（Ｓ６０３）。レイアウト処理とは、１ページに複数ページを縮小して割り付けるＮｕｐや、ページにスタンプを打つなどの、描画データを加工する処理のことである。レイアウトフィルター３１３は、プリントチケット３０４に記載された印刷設定を元に、図５のＦｉｘｅｄＰａｇｅの描画データを付加する。
【００４３】
レイアウトフィルター３１３は、印刷設定データであるプリントチケット３０４に記載された印刷設定に基づいて現在のモードがＸＰＳモードであるか又は標準ＰＤＬモードであるかどうかを判定する（Ｓ６０４）。レイアウトフィルター３１３はプリントチケット３０４に記載されたモードを判定することで、プリンタードライバー１０５２とデバイスアプリ３１０によって、いずれのモードが設定されたのかを把握することができる。本明細書ではプリントチケット３０４の印刷設定として、「描画出力モード」を指定する機能（Ｆｅａｔｕｒｅ）があり、描画出力モードはＸＰＳモード又は標準ＰＤＬモードのいずれかが指定される。すなわち、レイアウトフィルター３１３はＳ６０４で、プリントチケット３０４の描画出力モードにＸＰＳモードが指定されているかどうかを判定する。
【００４４】
ＸＰＳモードであれば、レイアウトフィルター３１３は、ＸＰＳスプールファイル３０６のそれぞれのパーツを補助記憶装置１０５上の一時フォルダーに保存する（Ｓ６０５）。一時フォルダーはオペレーティングシステム１０５３が管理しており、パーツはそれぞれファイルとしてこの一時フォルダーに保存される。このとき、ページ単位のプリントチケットは一時フォルダーに保存するが、ドキュメント単位とジョブ単位のプリントチケットは一時フォルダーに保存しない。理由はドキュメント単位とジョブ単位のプリントチケットは標準ＰＤＬフィルターを介して印刷設定フィルターに送信されるためである。なお、ドキュメント単位とジョブ単位のプリントチケットも一時フォルダーに保存するように構成しても構わない。
【００４５】
図９は標準ＰＤＬモードとＸＰＳモードにおける印刷データの流れを詳細に説明するための図である。Ｓ６０５及び後述するＳ６０９において一時フォルダー及びプロパティバッグに保存される印刷データであるＸＰＳスプールファイル３０６は、図９ではＸＰＳスプールファイルＣとして表現している。
【００４６】
次にレイアウトフィルター３１３は、オペレーティングシステムから受信したＸＰＳスプールファイル３０６のＦｉｘｅｄＰａｇｅである「１．ｆｐａｇｅ」４０７から描画データを削除する（Ｓ６０６）。具体的には、レイアウトフィルター３１３は、図５の５０１の部分をすべて削除したＸＭＬに変更する。Ｓ６０６で描画データを削除され、後述するＳ６０７で標準フィルター３１４に送信される印刷データであるＸＰＳスプールファイル３０６は、図９ではＸＰＳスプールファイルＢとして表現している。Ｓ６０６の処理により、ＸＰＳスプールファイルＢのＦｉｘｅｄＰａｇｅから描画データがなくなり白紙になるが、事前にフォルダーに保存したＸＰＳスプールファイルＣの描画データは変更していないので、元の描画データが印刷システムから失われてしまうことはない。
【００４７】
そして、レイアウトフィルター３１３は、白紙にしたパーツを含め、ＸＰＳスプールファイル３０６のパーツ（ＸＰＳスプールファイルＢ）を後続の標準フィルター３１４に送信する（Ｓ６０７）。
【００４８】
このようにして、パーツをすべて処理していき、レイアウトフィルター３１３は、すべてのパーツの保存が完了したら、保存したパーツとフォルダー全体をｚｉｐ圧縮して、ＸＰＳスプールファイル３０６のストリームを作成する（Ｓ６０８）。レイアウトフィルター３１３が、Ｓ６０３のレイアウト処理を何もしていなかったら、プリントチケット３０４及びパーツとストリームの違いを除き、このファイルはレイアウトフィルター３１３がＳ６０１で受信した元のＸＰＳスプールファイル３０６と同じものとなる。レイアウトフィルター３１３がフォルダーにパーツを保存する前にレイアウト処理を行うのは、ＸＰＳモードでも標準ＰＤＬモードでもレイアウト処理を行ったＸＰＳスプールファイル３０６を使用したいからである。
【００４９】
最後にレイアウトフィルター３１３は、作成した印刷データであるＸＰＳスプールファイル３０６を、保存領域であるプロパティバッグ３１７に保存する（Ｓ６０９）。
【００５０】
一方、標準ＰＤＬモードだった場合、レイアウトフィルター３１３は、ＸＰＳスプールファイル３０６のそれぞれのパーツを、後続の標準フィルター３１４に送信する（Ｓ６１０）。Ｓ６１０で標準フィルター３１４に送信するＸＰＳスプールファイル３０６を図９ではＸＰＳスプールファイルＡとして表現している。ＸＰＳスプールファイルＡとＸＰＳスプールファイルＣの、パーツであるかストリームであるかを除く実質的な違いは、Ｓ６０５で説明したように、ドキュメント単位とジョブ単位のプリントチケットがあるかどうかである。ＸＰＳスプールファイルＣにドキュメント単位とジョブ単位のプリントチケットを含めた場合は実質的な違いはない。
【００５１】
レイアウトフィルター３１３から受信したＸＰＳスプールファイル３０６のパーツは、標準フィルター３１４が標準ＰＤＬに変換する。標準フィルター３１４は、プリントチケット３０４に含まれるページ単位の印刷設定情報のみをＰＪＬに変換し、標準ＰＤＬとともに後続の印刷設定フィルター３１５に送信する。また、標準フィルター３１４はプリントチケット３０４をプロパティバッグ３１７に保存する。
【００５２】
標準フィルター３１４が標準ＰＤＬに変換する際、レイアウトフィルター３１３がＸＰＳモードで動作していれば、標準フィルター３１４が受信する描画データはレイアウトフィルター３１３によってすべて白紙になっている。よって、標準フィルター３１４が標準ＰＤＬに変換するデータ量は少なくて済む。その結果、標準フィルター３１４は印刷データを高速に処理できる。
【００５３】
次に、図７のフローチャートを用いて印刷設定フィルター３１５の処理について説明する。印刷設定フィルター３１５は、標準フィルター３１４が処理した標準ＰＤＬのストリームを受信する（Ｓ７０１）。
【００５４】
印刷設定フィルター３１５は、標準フィルター３１４がプロパティバッグ３１７に保存したプリントチケット３０４を取得し、印刷設定を調べる（Ｓ７０２）。
【００５５】
印刷設定フィルター３１５は、プリントチケット３０４の印刷設定に基づいて現在のモードがＸＰＳモードであるかどうかを判定する（Ｓ７０３）。判定の方法はＳ６０４と同一であるため、詳細な説明は省略する。
【００５６】
印刷設定フィルター３１５は、ＸＰＳモードのときは、プロパティバッグ３１７からレイアウトフィルター３１３が保存したＸＰＳスプールファイル３０６を取得する（Ｓ７０４）。
【００５７】
印刷設定フィルター３１５は、取得したＸＰＳスプールファイル３０６から、プリンターに出力するためのＰＤＬデータを作成する（Ｓ７０５）。ＰＤＬデータとはパケットごとに分割され、プリンターで処理するためのコマンドが付加されたデータである。
【００５８】
次に印刷設定フィルター３１５は、標準フィルター３１４が出力した標準ＰＤＬのストリームを削除する（Ｓ７０６）。
【００５９】
印刷設定フィルター３１５は、プリントチケット３０４の印刷設定のジョブ単位とドキュメント単位の設定からＰＪＬを作成する（Ｓ７０７）。
【００６０】
印刷設定フィルター３１５は、ＰＪＬとＳ７０５で作成したＰＤＬデータをあわせて印刷ジョブを生成し（Ｓ７０８）、プリンターに印刷ジョブを送信する。
【００６１】
印刷設定フィルター３１５は、ＸＰＳモードでなかったときは、標準フィルター３１４から受信したストリームから、プリンターに送信するＰＤＬデータを作成する（Ｓ７０９）。
【００６２】
以上により、常に標準ＰＤＬしか生成できない標準フィルター３１４を使用したとしても、レイアウトフィルター３１３（第１のフィルター）と印刷設定フィルター３１５（第３のフィルター）によって、ＸＰＳスプールファイル３０６からＰＤＬデータを作成しプリンターに送信するＸＰＳモードを実現できる。そのためユーザーは、標準フィルター３１４を使用すると描画不良が起こるデータを印刷したいときであっても、ＸＰＳモードに印刷設定を変更して印刷するだけで、容易に回避することが可能である。
【００６３】
［実施例２］
実施例１の図６において、レイアウトフィルター３１３は、Ｓ６０９でプロパティバッグ３１７にＸＰＳスプールファイル３０６を保存している。このとき、ＸＰＳスプールファイル３０６をプロパティバッグ３１７に保存することで、ＸＰＳスプールファイル３０６のサイズに応じたコピー時間が生じる。しかし、ＸＰＳスプールファイル３０６はアプリケーション１０５１が描画するデータによっては巨大なサイズになるので、プロパティバッグ３１７への保存も長い時間を要する。
【００６４】
そこで、レイアウトフィルター３１３は、ＸＰＳスプールファイル３０６を生成するために使用した一時フォルダーに生成されたＸＰＳスプールファイル３０６をそのまま残しておき、プロパティバッグ３１７にはＸＰＳスプールファイル３０６へのパスの情報だけを保存する。印刷設定フィルター３１５は、Ｓ７０４において、プロパティバッグからパスの情報を取得し、取得したパスからＸＰＳスプールファイル３０６を取得する。
【００６５】
このように構成することで、レイアウトフィルター３１３がプロパティバッグ３１７に巨大なサイズのデータを保存することがなくなるので、パフォーマンスが向上する。
【００６６】
さらに、実施例１の図６において、レイアウトフィルター３１３は、Ｓ６０５でＸＰＳスプールファイル３０６のパーツを一時フォルダーに保存しているが、メモリである主記憶装置１０２の容量が大きい場合は、一時フォルダーに保存せずに、メモリ内に保持するように構成しても構わない。レイアウトフィルター３１３は、パーツをメモリ内に保持すると、主記憶装置１０２への入出力Ｉ／Ｏにかける時間が少なくて済むので、パフォーマンスを向上することができる。
【００６７】
［実施例３］
本実施例では、実施例１の図６において、レイアウトフィルター３１３は、Ｓ６０６でＦｉｘｅｄＰａｇｅの描画データを削除して白紙を生成しているが、ここでダミーデータを入れる構成について説明する。
【００６８】
一例としては、図８にあるように、ＦｉｘｅｄＰａｇｅの描画データを、ダミーデータである“ＸＰＳ  Ｍｏｄｅ”というテキストに置き換える。文字を置き換えるので、それに応じたフォントをリソースとして追加して、他のリソースはすべて削除する。また、複数あるページを１ページにして、ページ数を削減してもよい。これにより、標準フィルター３１４に描画させるページが少なくなり、パフォーマンスが向上する。
【００６９】
描画データをダミーデータにすることで、印刷設定フィルター３１５は、図７のＳ７０２でプロパティバッグ３１７からプリントチケット３０４を取得する必要がなくなる。具体的に説明すると、実施例１ではＳ７０３でプリントチケット３０４からＸＰＳモードであるか判定した。
【００７０】
しかし、本実施例であればストリームにダミーデータのテキストが含まれているかどうかでＸＰＳモードであるか標準ＰＤＬモードであるか判定することができる。これによりＳ７０３でプリントチケット３０４をもとに判定する必要がなくなる。また、プリントチケット３０４のＸＭＬデータを解釈するよりも、ストリームにダミーデータのテキストが含まれているかどうかを判定する方が効率的なので、印刷設定フィルター３１５のパフォーマンスも向上させることができる。
【００７１】
さらに、実施例１の図６において、印刷設定フィルター３１５は、Ｓ７０２でプロパティバッグ３１７からプリントチケット３０４を取得して印刷設定を調べているが、プロパティバッグ３１７にＸＰＳスプールファイル３０６があるかどうかを調べることで、ＸＰＳモードかどうかを判定してもよい。これにより、前述の構成と同様に図７のＳ７０２でプロパティバッグ３１７からプリントチケット３０４を取得する必要がなくなる。よって、プロパティバッグ３１７にアクセスする回数がＸＰＳスプールファイルを取得（有無を確認）するための１回のみでよくなるので、パフォーマンスを向上させることができる。
【００７２】
（その他の実施例）
なお、本明細書はＰＣＬ（登録商標）やＰＳ（登録商標）で出力する標準フィルター３１４を用いて標準ＰＤＬモードとＸＰＳモードを切り替える例を説明したが、印刷データの形式としてはＰＣＬ（登録商標）やＰＳ（登録商標）やＸＰＳの組み合わせに限られない。例としてフィルター間では通常ＰＤＦ形式で印刷データをやりとりするように構成し、標準フィルター３１４はＰＤＦをＸＰＳに変換する機能を有していても構わない。このような組み合わせの場合、上述の実施例を応用することでＰＤＦモードとＸＰＳモードの２種類を切り替えることができる。
【００７３】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピューターにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７４】
３０６  ＸＰＳスプールファイル
３１３  レイアウトフィルター
３１４  標準フィルター
３１５  印刷設定フィルター
【図１】
2015230711.tif 000003
【図２】
2015230711.tif 000004
【図３】
2015230711.tif 000005
【図４】
2015230711.tif 000006
【図５】
2015230711.tif 000007
【図６】
2015230711.tif 000008
【図７】
2015230711.tif 000009
【図８】
2015230711.tif 000010
【図９】
2015230711.tif 000011