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