(57)【要約】【課題】  従来、同じ機能で違う動作をする２つの機能を印刷設定に持つ場合は、ＵＩはどちらか片方の設定か、両方の設定を持つしかなかった。【解決手段】  有効な機能にのみＵＩに反映させ、入力時有効なものに対して出力時は設定するという方法で、１つのＵＩで２つの機能を両立する。【選択図】  図１
2008310739.tif 000002
【特許請求の範囲】
【請求項１】
印刷設定を行うためのユーザインタフェースと、現在の印刷設定を保存する手段と、印刷ジョブ全体に適用する設定と印刷文書だけに適用する設定の２つを同じ機能に対して印刷設定に持つ手段を持ち、印刷設定に記述された同じ機能のうち、有効となる片方の設定のみをユーザインタフェース上に反映させる手段と、ユーザインタフェースで設定したデータは、入力された印刷設定に記述された同じ機能のうち、有効となる設定にのみ反映させる手段を持つことを特徴とする印刷制御装置。
【請求項２】
請求項１の印刷制御装置において、印刷設定の同じ機能が両方とも無効、もしくは両方とも有効であった場合は、印刷ジョブ全体に適用する設定を有効とする手段を持つことを特徴とする印刷制御装置。
【請求項３】
請求項１の印刷制御装置において、印刷設定の同じ機能のどちらを優先するか、もしくは自動で判定するかを、ユーザインタフェースであらかじめ指定された設定を元に行う手段を持つことを特徴とする印刷制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の同じ機能の印刷設定を、プリンタドライバのユーザインタフェース上で同一のものとして扱い、それぞれの設定を失われないようにする印刷制御装置およびその制御方法とプリンタドライバに関するものである。
【背景技術】
【０００２】
コンピュータ上で作成した文書や図といったファイルをアプリケーションから印刷する際には、プリンタドライバを使って描画データをプリンタ言語に変換しプリンタに送信するのが一般的である。そのとき、用紙の種類や両面、カラー、給紙段といった印刷設定は、アプリケーションが持つ印刷設定用のユーザインタフェースか、プリンタドライバが提供する印刷設定用のユーザインタフェースを使って設定を行う。基本的な機能はアプリケーションが持つユーザインタフェースで設定できるが、そのプリンタだけが持つ特殊機能や細かい設定はプリンタドライバが提供するユーザインタフェースでないと設定することができない。
【０００３】
複雑化する文書や機能に伴い、プリンタドライバのユーザインタフェースを持つコンフィギュレーションモジュールの機能も増大してきた。たとえば、Ｍｉｃｒｏｓｏｆｔ社のＸＰＳ文書のようなマルチドキュメントの機構を持つ文書形式に対応するプリンタドライバである。ＸＰＳ文書は、印刷するもの全体を「ジョブ」レベル、ひとつの文書を「ドキュメント」レベル、文書内の１ページを「ページ」レベル、という概念で分け、ひとつのジョブの中に複数のドキュメントを入れることができる形式になっており、これをマルチドキュメント文書と呼ぶ。このような場合、「ジョブ」ごとの印刷設定、「ドキュメント」ごとの印刷設定、「ページ」ごとの印刷設定がそれぞれ必要になり、対応するプリンタドライバのユーザインタフェースで作成する印刷設定データもＸＭＬ形式のＰｒｉｎｔＴｉｃｋｅｔというフォーマットで作られるようになった。
【０００４】
印刷設定データは従来から存在するバイナリ形式のフォーマットであるＤＥＶＭＯＤＥ構造体と、新しく作成されたマークアップ言語のＸＭＬ形式のフォーマットであるＰｒｉｎｔＴｉｃｋｅｔの２つが大きく分けて存在する。このうち、ＰｒｉｎｔＴｉｃｋｅｔには前述したマルチドキュメントの文書に対応するように、それぞれの機能がどのレベルの印刷設定であるかを示す接頭辞（Ｐｒｅｆｉｘ）がついている。たとえば、両面を「ドキュメント」に対して行う機能であればＤｏｃｕｍｅｎｔＤｕｐｌｅｘという名前がついている。このように、印刷設定データが拡張されたことによって、マルチドキュメントに対応できるようになった。
【０００５】
しかし、プリンタドライバのユーザインタフェースには問題が残る。ドキュメントを印刷するユーザが設定するユーザインタフェースは、あくまでひとつのドキュメントに対して指定するものであり、マルチドキュメントに対して設定する手段がない。アプリケーションの印刷設定用ユーザインタフェースであれば、複数のドキュメントに対してそれぞれ別のユーザインタフェースを開いて設定させることができるが、プリンタドライバのユーザインタフェースは１つのドキュメントに対してしか設定する手段を持たない。したがって、プリンタドライバのユーザインタフェースでは、印刷設定をする対象がマルチドキュメントであるかどうかを認識できないことになる。つまり、印刷設定データがＰｒｉｎｔＴｉｃｋｅｔになり、マルチドキュメントの概念が導入されたにもかかわらず、プリンタドライバのユーザインタフェースで設定された印刷設定はどの接頭辞をつけた機能をＰｒｉｎｔＴｉｃｋｅｔに記述すればいいのかがわからなくなっていた。
【０００６】
そこで、プリンタドライバはひとつの機能に対して必ずひとつの接頭辞のみサポートするようにしている。たとえば、「用紙サイズ」では「ページ」のみサポート、「両面」であれば「ドキュメント」のみサポートといった具合である。これならば、プリンタドライバのユーザインタフェースは、マルチドキュメントかどうかがわからなくても、ＰｒｉｎｔＴｉｃｋｅｔの印刷設定をすることができる。
【０００７】
しかし、これではマルチドキュメントならでは機能が実現できなくなってしまう。たとえば、ひとつのページに複数のページを印刷するＮＵｐ印刷では、マルチドキュメントのときに「ドキュメントの区切りを設定する」という機能が存在する。ジョブ全体にＮＵｐを行い、前のドキュメントの余りページに次のドキュメントのページを印刷したＮＵｐを行うか、それともそこは白紙として、ドキュメントごとにページを変えてＮＵｐを行うかという機能である。また、ステイプル印刷においても、マルチドキュメントのときには「サブセットステイプル」という機能が存在する。これはステイプルという機能が、通常ジョブ全体にステイプルするのに対して、ドキュメントごとにステイプルをする機能である。ＮＵｐやステイプルにおいて、「ジョブ」もしくは「ドキュメント」のどちらかひとつしかサポートしないということになると、せっかくマルチドキュメントに対応した記述方法になった印刷設定にもかかわらず、これらの機能をＰｒｉｎｔＴｉｃｋｅｔでは記述できないことになってしまう。
【０００８】
従来マルチドキュメントの処理はアプリケーションのユーザインタフェースで行い、印刷するドキュメントごとに印刷設定を切り替えることで実現していた。しかし、ＰｒｉｎｔＴｉｃｋｅｔをサポートするプリンタドライバでは印刷設定を切り替えようとしても、ＰｒｉｎｔＴｉｃｋｅｔ内の機能には接頭辞が記載されているため、印刷設定をかける対象は接頭辞によって固定されてしまうのである。たとえば、従来は印刷の途中でステイプルのＯｎ／Ｏｆｆを切り替えられたのに、ＰｒｉｎｔＴｉｃｋｅｔで「ジョブ」のステイプルといわれてしまうと、「ジョブ」全体にかけるものとして扱わなければならなくなるので、途中でＯｎ／Ｏｆｆされても意味がなくなってしまう。
【０００９】
また、両方をサポートするようなことになっても、前述したようにプリンタドライバは接頭辞をどれにして設定値を入れればいいのかがわからない。また、ＰｒｉｎｔＴｉｃｋｅｔの仕様として、同じ機能で異なる動作のＦｅａｔｕｒｅを同時にサポートするときは、排他でなければならないとなっている。すなわち、「ＪｏｂＳｔａｐｌｅ」がＯｎであるＳｔａｐｌｅＴｏｐＬｅｆｔなら「ＤｏｃｕｍｅｎｔＳｔａｐｌｅ」は無効になる値（これをＩｄｅｎｔｉｔｙＯｐｔｉｏｎと呼ぶ）であるＮｏｎｅにしなければならない。「ＤｏｃｕｍｅｎｔＮＵｐ」が４なら「ＪｏｂＮＵｐ」は無効になる値の１にしなければならない。プリンタドライバはどちらに設定値を入れればいいのかがわからないため、このように排他の設定をすることも困難である。
【００１０】
印刷をするグラフィックスドライバにおける印刷設定を行う処理においても問題になる。グラフィックスドライバは入力された印刷データに付随する印刷設定データを検証するために、コンフィギュレーションモジュールにＰｒｉｎｔＴｉｃｋｅｔが正しいかどうかを尋ねるマージ＆バリデート処理を行う。コンフィギュレーションモジュールはここで渡された印刷設定データを検証し、誤っているようであれば競合（コンフリクト）を解決して正しい印刷設定データを返すようになっている。しかし、コンフィギュレーションモジュールは、ジョブレベルに付随したＰｒｉｎｔＴｉｃｋｅｔが渡されているのか、ドキュメントレベルに付随したＰｒｉｎｔＴｉｃｋｅｔが渡されているのかわからないために、どちらも同じ処理で検証するようになっている。そのときに、ジョブないしはドキュメントの片方の機能しかサポートしていないと、印刷設定データが丸まってしまうことになり、ユーザがわざわざマルチドキュメントとして設定した印刷設定が消えてしまう。また、両方をサポートしていると、やはりどちらを有効にすべきなのかがわからない。
【００１１】
このような問題を解決するために、一般的には以下の３つの方法が用いられてきた。１つはプリンタドライバのユーザインタフェース上には「ジョブ」もしくは「ドキュメント」の片方の設定しかもたない、というものである（非特許文献１参照）。２つ目として、そもそも設定を両方ともプリンタドライバのユーザインタフェース上に載せてしまうことである。３つ目として、プリンタドライバで「複数ジョブを１ジョブとして印刷する」という印刷指定をあらかじめ行っておき、印刷ごとにデータを保存しておき、プリンタドライバで表示する。そして、プリンタドライバで印刷が指示されたら初めて印刷が開始する。このようにすれば、複数ジョブをプリンタドライバが認識できるようになるので、それぞれの文書に印刷設定を行うようなプリンタドライバのユーザインタフェースで設定することが可能になる（特許文献１参照）。
【００１２】
ＷＤＫ（Ｗｉｎｄｏｗｓ（登録商標）  Ｄｒｉｖｅｒ  Ｋｉｔ）に含まれるＰｒｉｎｔ Ｆｅａｔｕｒｅｓ  Ｆｉｌｔｅｒ Ｓａｍｐｌｅ  Ｄｒｉｖｅｒは、ＮＵｐが「ジョブ」「ドキュメント」の両方サポートのドライバだが、ユーザインタフェースには「ＤｏｃｕｍｅｎｔＮＵｐ」のみが表示されており、ユーザインタフェース上からは「ＤｏｃｕｍｅｎｔＮＵｐ」のみ変更可能である。
【特許文献１】特開２００４−３６２２１９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、上述した従来の技術では、問題が発生する。プリンタドライバのユーザインタフェース上で１つだけ、たとえば「ドキュメント」しか設定を持たない場合は、ユーザがプリンタドライバのユーザインタフェース上で設定を変更するときは「ドキュメント」のみしか指定できないという問題がある。
【００１４】
また、両方の設定をプリンタドライバのユーザインタフェース上に載せると、どちらも設定することができるが、ひとつのドキュメントに対して行う印刷設定に対して「ジョブ」と「ドキュメント」という２つの印刷設定が表示されていると、ユーザはどちらを設定すれば有効になるのかが非常にわかりにくい。また、マルチドキュメントかどうかをプリンタドライバは判定できないので、マルチドキュメントでなくても常に２つの印刷設定が表示されていることも、わかりにくくする一面となっていた。
【００１５】
また、一回印刷を行うことによって複数ドキュメントを認識する場合は、ユーザがアプリケーションからいったん印刷を行った後に再度プリンタドライバのユーティリティで印刷設定をしなおして印刷をしなければならず、アプリケーションでの設定とプリンタドライバの設定という二度手間になる。これでは、せっかく導入された、マルチドキュメントの接頭辞を持つ新しい印刷設定であるＰｒｉｎｔＴｉｃｋｅｔの利点が生かせない。
【課題を解決するための手段】
【００１６】
上述した問題を解決するために、本発明は以下の構成からなるプリンタドライバを提供する。すなわち、印刷設定を行うためのユーザインタフェースと、現在の印刷設定を保存する手段と、印刷ジョブ全体に適用する設定と印刷文書だけに適用する設定の２つを同じ機能に対して印刷設定に持つ手段を持つ。また、印刷設定に記述された同じ機能のうち、有効となる片方の設定のみをユーザインタフェース上に反映させる手段と、ユーザインタフェースで設定したデータは入力された印刷設定に記述された同じ機能のうち、有効となる設定にのみ反映させる手段を持つ。
【００１７】
また、印刷設定の同じ機能が両方とも無効、もしくは両方とも有効であった場合は、印刷ジョブ全体に適用する設定を有効とする手段を持つ。
【００１８】
また、前述した動作の切り替えを、ユーザインタフェースであらかじめ指定された設定を元に行う手段を持つ。
【発明の効果】
【００１９】
本発明によって、マルチドキュメントに対応したＰｒｉｎｔＴｉｃｋｅｔの印刷設定を打ち消すことなく、ユーザインタフェース上から設定することができる。また、ユーザインタフェース上には１つの設定しかないので混乱することなく、ユーザはアプリケーションと連携して的確な印刷設定を行うことができる。
【発明を実施するための最良の形態】
【００２０】
図１は本発明の一実施形態を示す印刷処理システムのブロック構成図である。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機能であっても、複数の機器からなるシステムであっても、ＬＡＮ、ＷＡＮ等のネットワークを介して接続がなされ処理が行われるシステムであっても、本発明を適用できることは言うまでもない。
【００２１】
図１において、一般的なコンピュータを用いたシステムのブロック構成図を示す。ＣＰＵ１０１はＲＯＭ１０２あるいはＲＡＭ１０３あるいは記憶装置１０５に格納されたプログラムに従って装置全体の制御を行う。ＲＡＭ１０３はＣＰＵ１０１が各種処理を行う際のワークエリアとしても使用される。記憶装置１０５はオペレーティングシステム（ＯＳ）１０５４やアプリケーションソフト１０５１等を記録する。キーボードやマウスなどの入力機器は、入力Ｉ／Ｆ１０４を通じて、ユーザがコンピュータに対して各種指示を与えるためのデバイスである。出力Ｉ／Ｆ１０６は、データを外部に出力するためのインタフェースであり、モニタやプリンタに対してデータを出力する。プリンタとはローカルＩ／Ｏのみならず、ネットワークを通して接続されていてもよい。また、１０７は共通データバスで、それぞれのデータのやりとりを行う。
【００２２】
図２において、一般的なコンピュータを用いた印刷処理システムを示す。ユーザはキーボードやマウスなどといった入力装置１０４を使用して、出力装置１０５のモニタに映し出されたアプリケーションプログラム２０１を使用して作成した文書２０１１の印刷処理を実行する。ユーザによって印刷処理が実行されると、アプリケーション２０１はユーザの印刷操作を理解し、文書の印刷設定２０１２と文書内容の描画データ２０１３を元に、印刷を実行するプリンタに対応したプリンタドライバ２０６を選択した後、オペレーティングシステムに印刷処理を通知する。オペレーティングシステムはグラフィックスエンジン２０２を通じて、スプールファイル２０３への描画や、指定されたプリンタドライバ２０６への描画を行い、プリンタドライバはプリンタが理解できるデータ言語すなわちプリンタ制御言語に変換し、プリントマネージャ２０４が各アプリケーションからの印刷処理のスケジュール管理を行う。プリントマネージャ２０４は、プリンタが印刷できる状態になったときに、Ｉ／Ｏモジュール２０５を介してプリンタ２０７に印刷ジョブデータを送信する。これにより、印刷が実行される。
【００２３】
文書の印刷設定２０１２はプリンタドライバのコンフィギュレーションモジュール２０６１によって初期値が作成され、その印刷設定をアプリケーションもしくはプリンタドライバのユーザインタフェースを使用してユーザが望む最終印刷結果になるように変更して設定を行う。印刷設定は２種類の形態があり、１つはＤＥＶＭＯＤＥと呼ばれるバイナリデータ形式のデータ構造体であり、もう１つはＰｒｉｎｔＴｉｃｋｅｔと呼ばれるタグを用いたマークアップ言語ＸＭＬ形式のテキストデータである。この形態はプリンタドライバやオペレーティングシステムの仕様によって異なるが、本実施形態ではＰｒｉｎｔＴｉｃｋｅｔを採用したプリンタドライバにフォーカスする。
【００２４】
図３においてＭｉｃｒｏｓｏｆｔ社が定義するＸＰＳ（ＸＭＬ Ｐａｐｅｒ Ｓｐｅｃｉｆｉｃａｔｉｏｎ）文書の文書構造を示す。ＸＰＳ文書はマークアップ言語であるＸＭＬ形式で記述された文書であり、全体がスコープもしくはレベルという概念で区分されている。ＸＰＳ文書は「ジョブ」と「ドキュメント」と「ページ」の３つのレベルが存在し、「ジョブ」は文書全体を表すもので一般的なものであり、「ドキュメント」は複数のページが集まった１文書を表し、「ページ」は文書内のそれぞれのページを表す。「ジョブ」と「ドキュメント」はそれぞれどのようなものを自分の中に含むかということを記述したＸＭＬ形式のデータがあり、「ページ」にはＸＭＬ形式で記述された１ページ分の描画データが入っている。印刷設定であるＰｒｉｎｔＴｉｃｋｅｔは、それぞれのレベルのそれぞれのデータに付帯することができ、すべての「ページ」に異なったＰｒｉｎｔＴｉｃｋｅｔをつけることも可能である。このようにすることで、従来は１つの印刷ジョブに対して１つしか印刷設定を持つことができなかったのに対し、「ドキュメント」ごと、「ページ」ごとに印刷設定を切り替えることができる文書構造を実現している。
【００２５】
図４は一般的なＰｒｉｎｔＴｉｃｋｅｔの構造を示した図である。ＸＭＬ形式で記述されるＰｒｉｎｔＴｉｃｋｅｔは、名前空間と呼ばれるタグの内部構造における区画によって分けられている。名前空間は接頭辞とＵＲＩという組み合わせからなり、ＵＲＩが実際の名前空間を表す。接頭辞は特に決まったものではなく、ＵＲＩで示された名前空間に属していることをＸＭＬ上で簡便に表す省略記号のようなもので、ＸＭＬごとに異なっていてもかまわない。ここでは図４に記述されている接頭辞に従って実施形態の説明を続ける。
【００２６】
図４における６個の名前空間は、それぞれが異なった役割を持っている。ｐｓｆの名前空間はＰｒｉｎｔＴｉｃｋｅｔのフレームワークを定義しているもので、ＦｅａｔｕｒｅやＯｐｔｉｏｎ、Ｖａｌｕｅといった基本的なタグを定義している。Ｆｅａｔｕｒｅはプリンタデバイスやプリンタドライバが持つ機能を表し、Ｏｐｔｉｏｎは機能の選択肢を表す。また、Ｖａｌｕｅは要素の具体的な値を表し、ＳｃｏｒｅｄＰｒｏｐｅｒｔｙはＯｐｔｉｏｎに付属する情報を表す。ＰａｒａｍｅｔｅｒＩｎｉｔは機能の値の初期値を指定する。ｐｓｋの名前空間はオペレーティングシステムが定義するＰｒｉｎｔＴｉｃｋｅｔの機能を表している。具体的には、用紙のサイズを指定する「ＰａｇｅＭｅｄｉａＳｉｚｅ」や、用紙の向きを指定する「ＰａｇｅＯｒｉｅｎｔａｔｉｏｎ」、コレート（部単位）印刷を行う「ＤｏｃｕｍｅｎｔＣｏｌｌａｔｅ」、コピー部数を指定する「ＪｏｂＣｏｐｉｅｓＡｌｌＤｏｃｕｍｅｎｔｓ」などがある。ｘｓｉとｘｓｌはＸＭＬスキーマの定義として一般的に定義されているもので、ｘｓｉの名前空間はＸＭＬスキーマの組み込み属性・インスタンスを定義している。ｘｓｌの名前空間はＸＭＬスキーマの既定属性を示している。ｎｓ００００の名前空間はプリンタドライバが独自に拡張した名前空間であり、プリンタデバイス固有の機能を定義している。
【００２７】
ｐｓｋの機能名称にはすべて接頭辞（Ｓｃｏｐｉｎｇ  Ｐｒｅｆｉｘ）がついており、それぞれが「ジョブ」レベルに適用する機能、「ドキュメント」レベルに適用する機能、「ページ」レベルに適用する機能となる。「ジョブ」に付帯できるＰｒｉｎｔＴｉｃｋｅｔにはすべての接頭辞の機能を指定することができ、印刷ジョブ全体に適用される設定となる。「ドキュメント」に付帯できるＰｒｉｎｔＴｉｃｋｅｔは「Ｄｏｃｕｍｅｎｔ」と「Ｐａｇｅ」の接頭辞の機能しか持つことができず、適用される範囲も「ドキュメント」内のみに限定される。「ページ」に付帯できるものは「Ｐａｇｅ」の接頭辞の機能しか持つことができず、「ページ」にのみ適用される。まったく同じ機能、たとえば「ＰａｇｅＯｒｉｅｎｔａｔｉｏｎ」はＰａｇｅの接頭辞を持つためにどこの位置のＰｒｉｎｔＴｉｃｋｅｔにも指定できるが、ジョブ、ドキュメント、ページのすべての階層のＰｒｉｎｔＴｉｃｋｅｔに「ＰａｇｅＯｒｉｅｎｔａｔｉｏｎ」の機能を持たせた場合は、ページに記述された「ＰａｇｅＯｒｉｅｎｔａｔｉｏｎ」の設定が有効となる。まったく同等の機能で接頭辞だけ異なるもの、たとえば「ＪｏｂＩｎｐｕｔＢｉｎ」と「ＰａｇｅＩｎｐｕｔＢｉｎ」は、ＰｒｉｎｔＴｉｃｋｅｔ内で同時に指定することができない。したがって、プリンタドライバがそのプリンタデバイスにおいて、ＰｒｉｎｔＴｉｃｋｅｔのどの機能をサポートするのかを示すために、ＰｒｉｎｔＣａｐａｂｉｌｉｔｉｅｓというサポート情報をアプリケーションに返している。
【００２８】
これらとは別に、プリンタやドライバ機能としては同等でも、文書の形態によって動作が異なる機能もＰｒｉｎｔＴｉｃｋｅｔには存在する。たとえば「ＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙ」と「ＤｏｃｕｍｅｎｔＮＵｐ」である。これらは１ページの中に複数ページを縮小して印刷するＮＵｐと呼ばれる割り付け印刷の機能を示すが、片方は「ジョブ」レベルで片方は「ドキュメント」レベルのものである。これを実際の文書に適用するとどうなるかを図５に示す。ここでは、１つの「ジョブ」に複数の「ドキュメント」を持つＸＰＳ文書に適用するものとする。５０１は「ＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙ」を使用して４Ｕｐを行った場合で、最初の「ドキュメント」を４Ｕｐしたときに白紙になる部分に、次のＤｏｃｕｍｅｎｔの最初のページが入り込むようになっている。５０２は「ＤｏｃｕｍｅｎｔＮＵｐ」を使用して４Ｕｐを行った場合で、最初の「ドキュメント」は最初の「ドキュメント」だけでＮＵｐを行い、白紙の部分はそのままになる。つまり、この２つは同じＮＵｐという機能を表していてジョブとドキュメントというレベルが異なるのだが、実際に適用される動作も異なる。したがって、ＰｒｉｎｔＴｉｃｋｅｔ上では違う機能とみなされるため、両方を同時にサポートすることができる。逆に両方をサポートしないと、図５に示すどちらかの機能は実現できないことになる。
【００２９】
同様に、図６は「ＪｏｂＳｔａｐｌｅＡｌｌＤｏｃｕｍｅｎｔｓ」と「ＤｏｃｕｍｅｎｔＳｔａｐｌｅ」の動作の違いを示したものである。６０１は「ジョブ」レベルにステイプルする場合で、複数の「ドキュメント」をまとめてステイプルする。６０２は「ドキュメント」レベルにステイプルする場合で、「ドキュメント」ごとにステイプルする。したがって、この２つも違う機能とみなされ、両方を同時にサポートすることができる。
【００３０】
ただし、「ＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙ」と「ＤｏｃｕｍｅｎｔＮＵｐ」、「ＪｏｂＳｔａｐｌｅＡｌｌＤｏｃｕｍｅｎｔｓ」と「ＤｏｃｕｍｅｎｔＳｔａｐｌｅ」はそれぞれ排他関係にある。両方を有効にしたら、文書体裁が成り立たなくなってしまうからである。つまり、ＰｒｉｎｔＴｉｃｋｅｔ上で同時にサポートすることはできても、同時に有効にすることはできない。ＰｒｉｎｔＴｉｃｋｅｔにおいて無効にするという指定は、ＩｄｅｎｔｉｔｙＯｐｔｉｏｎと呼ばれる値が設定されたＯｐｔｉｏｎを指定することで無効になる。たとえば、ＮＵｐであれば「１」がＩｄｅｎｔｉｔｙＯｐｔｉｏｎに相当し無効となる。「Ｓｔａｐｌｅ」であれば「Ｎｏｎｅ」がＩｄｅｎｔｉｔｙＯｐｔｉｏｎに相当し無効となる。両方とも有効であった場合は、Ｊｏｂを優先するというのが、ＰｒｉｎｔＴｉｃｋｅｔの仕様となっている。
【００３１】
これらの前提条件を踏まえて、図７のシステム構成図と、図８・９のフローチャートを用いて、以下に本発明の実施例の中核を示す。
【００３２】
プリンタドライバのコンフィギュレーションドライバは印刷設定であるＰｒｉｎｔＴｉｃｋｅｔを入力として受け取り（７０１）、プリンタドライバのユーザインタフェースで設定された値や、データの整合性を取って、設定を変更したＰｒｉｎｔＴｉｃｋｅｔを出力とする（７０２）。コンフィギュレーションドライバの中は大きく分けて、データシステム（７０６）とＰｒｉｎｔＴｉｃｋｅｔとＵＩのデータ変換部（７０３）、それに機能間関係リスト（７０４）と、除外データベース（７０５）からなる。データシステム（７０６）は、プリンタドライバが持つ機能をそれぞれ１つずつのオブジェクトとして保持しており、それぞれがデータとしての値を持っている。たとえば、用紙サイズという名前のオブジェクトは「Ａ４」という値を持っており、給紙段という名前のオブジェクトは「カセット１」という値を持っている。これらのオブジェクトはお互いに相関関係にあり、データ同士が機能の不整合を起こさないように、コンフリクトエンジンがそれぞれの値を監視しており、不整合を起こすときは片方の値を丸めて正しくなるようにしている。この規則はコンフリクトルールという形で、コンフリクトエンジンが持つ。機能間関係リスト（７０４）は、ＰｒｉｎｔＴｉｃｋｅｔにおけるどのＦｅａｔｕｒｅが、同一機能でありながら動作が異なるＦｅａｔｕｒｅであるかを記載しているリストである。ここでは、「ＪｏｂＮＵｐＡｌｌＤｏｃｕｍｅｎｔｓＣｏｎｔｉｇｕｏｕｓｌｙ」と「ＤｏｃｕｍｅｎｔＮＵｐ」が機能間関係にあることをリストとして登録してある。除外データベース（７０５）は、そのときに無効となっているＦｅａｔｕｒｅを覚えておくためのデータベースである。データ変換を行う際に、有効か無効かを判定し、データベースに格納していく。
【００３３】
次に図８のフローチャートに従って、ＰｒｉｎｔＴｉｃｋｅｔが入力されたときのコンフィギュレーションドライバの動作を説明する。
【００３４】
コンフィギュレーションドライバはＰｒｉｎｔＴｉｃｋｅｔが入力されると、自分の中にあるデータシステムのデータオブジェクトに変換を行う。そのために、まずＰｒｉｎｔＴｉｃｋｅｔ内の機能を１つ選択して取り出す（８０１）。このとき、Ｆｅａｔｕｒｅの接頭辞がＪｏｂ、Ｄｏｃｕｍｅｎｔ、Ｐａｇｅである順番に１つずつ取り出す。Ｊｏｂ同士やＤｏｃｕｍｅｎｔ同士のＦｅａｔｕｒｅの順番は問わない。この順番で取り出すことによって、暗黙的にＪｏｂがもっとも機能として強いことを示している。次に除外データベースの中に、現在ＰｒｉｎｔＴｉｃｋｅｔから取り出した機能が入っているかどうかをチェックする（８０２）。もし入っていたら、無条件で無効ということになるので、内部のデータオブジェクトに適用するとこなく、次のＦｅａｔｕｒｅをＰｒｉｎｔＴｉｃｋｅｔから取り出す。除外データベースに入っていなかった場合は、現在有効な機能かどうかをチェックする（８０３）。これはＦｅａｔｕｒｅで指定されたＯｐｔｉｏｎがＩｄｅｎｔｉｔｙＯｐｔｉｏｎであるかどうかを判定する。もし、有効な機能であれば、機能間関係リストにある相手の機能を除外データベースに登録する（８０４）。これは、現在取り出したＦｅａｔｕｒｅが有効なので、対応するＦｅａｔｕｒｅを無効とするためである。現在取り出したＦｅａｔｕｒｅが無効のときは、機能間関係リストにある相手の機能を除外データベースから削除し（８０５）、現在取り出したＦｅａｔｕｒｅを除外データベースに登録する（８０６）。これで対応するＦｅａｔｕｒｅが有効になる。この除外データベース登録作業が終わると、ここで取り出したＦｅａｔｕｒｅの値を、データシステムのデータオブジェクトに変換する（８０７）。すべての機能を変換したら（８０８）、データオブジェクトのデータの競合を解決し（８０９）、プリンタドライバのユーザインタフェースを表示する場合は表示をする（８１０）。そうでなければ、ＰｒｉｎｔＴｉｃｋｅｔを出力する動作に移る。これにより、１つの機能で動作が異なる２つのデータを１つのデータオブジェクトにマッピングすることができる。
【００３５】
次に図９のフローチャートに従って、ＰｒｉｎｔＴｉｃｋｅｔを出力するときのコンフィギュレーションドライバの動作を説明する。
【００３６】
まず、ユーザインタフェースを表示している状態であれば、ユーザがユーザインタフェースを操作して設定を変更し（９０１）、データオブジェクトの値を任意の値にする。そして、操作している最中、もしくはユーザインタフェースを閉じたときに、コンフリクトエンジンがデータオブジェクトの整合性を解決する（９０２）。ユーザインタフェースを表示しないでＰｒｉｎｔＴｉｃｋｅｔを出力する場合は、ユーザインタフェースを表示することなく、データオブジェクトの整合性を解決する。次にＰｒｉｎｔＴｉｃｋｅｔに変換するためにデータオブジェクトから機能の値を１つ取り出す（９０３）。取り出した値を変換する対象のＦｅａｔｕｒｅが除外データベースに登録されているかどうかをチェックする（９０４）。もし、登録されていないのであれば、データオブジェクトをＰｒｉｎｔＴｉｃｋｅｔのＦｅａｔｕｒｅとして出力する（９０５）。登録されていたら、無効な値ということになるので、出力するＦｅａｔｕｒｅのＩｄｅｎｔｉｔｙＯｐｔｉｏｎをＯｐｔｉｏｎとして出力する（９０６）。そして、すべてのデータオブジェクトをＰｒｉｎｔＴｉｃｋｅｔのＦｅａｔｕｒｅに変換したら（９０７）、ＰｒｉｎｔＴｉｃｋｅｔを出力する。これにより、入力時に有効だったＦｅａｔｕｒｅに対して、出力時に有効にして返すことができる。また、もう片方のＦｅａｔｕｒｅに関しては確実に無効にすることができる。
【００３７】
図８・９のフローチャートは１つの機能で動作が異なる２つのＦｅａｔｕｒｅの両方ともが無効、あるいは有効であっても、仕様どおり動作する。
【００３８】
以上により、１つの機能で動作が異なる２つのＦｅａｔｕｒｅを両方ともＰｒｉｎｔＴｉｃｋｅｔでサポートしながら、ユーザインタフェース上には１つのデータを表示し、整合性が取れるようになる。したがって、ユーザは「ジョブ」や「ドキュメント」といった文書構造を意識することなく、プリンタドライバのユーザインタフェースから印刷設定をすることができる。
【００３９】
また、図１０にあるように、プリンタドライバのユーザインタフェース上で常にＪｏｂを優先にするか、Ｄｏｃｕｍｅｎｔを優先にするか、それとも前述のように自動で判定するかを決めることもできる。常にＪｏｂもしくはＤｏｃｕｍｅｎｔを優先するようにすると従来のドライバ同様、そのレベルのみサポートというドライバになる。つまり、優先する設定のみ常にデータシステムのデータオブジェクトに変換し、優先しないほうは無視する。これを自動に切り替えることで、前述した仕組みで動作するようになる。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施形態として、コンピュータを含むシステムの構成を説明するブロック図である。
【図２】本発明の一実施形態として、プリンタドライバのシステムの構成を説明するブロック図である。
【図３】本発明の一実施形態として、マルチドキュメントを持つ文書構造であるＸＰＳ文書を説明するブロック図である。
【図４】本発明の一実施形態として、印刷設定のＰｒｉｎｔＴｉｃｋｅｔを表したＸＭＬである。
【図５】本発明の一実施形態として、マルチドキュメントの文書にＮＵｐの印刷設定を行ったときの挙動を示した図である。
【図６】本発明の一実施形態として、マルチドキュメントの文書にステイプルの印刷設定を行ったときの挙動を示した図である。
【図７】本発明の一実施形態として、コンフィギュレーションドライバの構成を説明するブロック図である。
【図８】本発明の一実施形態として、印刷設定のＰｒｉｎｔＴｉｃｋｅｔを入力として取るときのフローチャートである。
【図９】本発明の一実施形態として、印刷設定のＰｒｉｎｔＴｉｃｋｅｔを出力とするときのフローチャートである。
【図１０】本発明の一実施形態として、同じ機能で異なる動作をする機能についてのＰｒｉｎｔＴｉｃｋｅｔの処理方法を、ユーザが変更できるユーザインタフェースである。
【符号の説明】
【００４１】
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  入力インタフェース
１０５  外部記憶装置。主にＨＤＤなどを指す
１０５１  アプリケーションソフトウェア
１０５２  印刷関連の各種プログラム
１０５３  プリンタドライバ
１０５４  オペレーティングシステム
１０６  出力インタフェース
１０７  システムバス
１０８  キーボード
１０９  ポインティングデバイス。マウスなど
１１０  モニタ
１１１  プリンタ
２０１  アプリケーション
２０１１  アプリケーションによって作成された文書
２０１２  文書を印刷するための印刷設定。用紙の向きやレイアウトなどの設定
２０１３  描画データ。文書を実際に印刷する際の描画の集まり
２０２  グラフィックスエンジン
２０３  スプールファイル。グラフィックスエンジンもしくはプリンタドライバが一時的にデータを貯めておくファイル
２０４  プリントマネージャ。印刷ジョブを管理する
２０５  Ｉ／Ｏモジュール。プリンタデバイスと直接やりとりする部分
２０６  プリンタドライバ
２０６１  コンフィギュレーションモジュール。主に印刷設定を作成する。ＵＩドライバとも呼ばれる
２０６２  レンダリングモジュール。主に描画データをプリンタ制御言語に変換する
２０６３  機種依存データファイル。機種ごとの能力を記述する
７０１  プリンタドライバに入力するＰｒｉｎｔＴｉｃｋｅｔ
７０２  プリンタドライバから出力されるＰｒｉｎｔＴｉｃｋｅｔ
７０３  ＰｒｉｎｔＴｉｃｋｅｔとデータシステムのデータを変換する変換部
７０４  同一の機能で異なる動作をするＦｅａｔｕｒｅ同士をリストとして保持する機能間関係リスト
７０５  同一の機能で異なる動作をするＦｅａｔｕｒｅにおいて、無効とするものを保持する除外データベース
７０６  データシステム上にある各機能のデータオブジェクトを管理するデータシステムと、それらの整合性を取るコンフリクトエンジン
【図１】
2008310739.tif 000003
【図２】
2008310739.tif 000004
【図３】
2008310739.tif 000005
【図４】
2008310739.tif 000006
【図５】
2008310739.tif 000007
【図６】
2008310739.tif 000008
【図７】
2008310739.tif 000009
【図８】
2008310739.tif 000010
【図９】
2008310739.tif 000011
【図１０】
2008310739.tif 000012