(57)【要約】      （修正有）【課題】タンデムデバイスに対して、複数のプリンタドライバが連携してタンデムドライバとして動作して印刷可能にする。【解決手段】プリンタドライバがタンデムデバイスであると判断したら、接続されているデバイスのプリンタドライバを呼び出して、タンデムシステム向けのプリンタドライバとして連携して印刷を行う。【選択図】図１１
2012168814.tif 000002
【特許請求の範囲】
【請求項１】
第１の印刷装置の排紙部と第２の印刷装置の給紙部とが接続されている印刷システムを制御する情報処理装置であって、
該情報処理装置は第１のプリンタドライバと第２のプリンタドライバとを有し、
前記第１のプリンタドライバは、
前記第１の印刷装置に対して該第１の印刷装置に接続された前記第２の印刷装置のモデル名を取得させる取得手段と、
前記取得手段により取得された第２の印刷装置のモデル名から前記第１の印刷装置に接続された第２の印刷装置を特定する特定手段と、
前記特定手段により特定された前記第２の印刷装置のドライバである第２のプリンタドライバを特定し、該第２のプリンタドライバの出力ポートを、前記第１の印刷装置のドライバである第１のプリンタドライバの出力ポートに合わせて変更する変更手段と、
前記特定手段により特定された前記第２のプリンタドライバを起動し、印刷対象データのうち、前記第２の印刷装置で処理されるデータを前記第２のプリンタドライバに送信する送信手段と、
前記印刷対象データのうち、第１の印刷装置にて印刷すべき印刷ジョブを生成する第１の生成手段とを有し、
前記第２のプリンタドライバは、
前記第１のプリンタドライバにより起動されると、前記送信手段で送信された前記第２の印刷装置に対応する印刷ジョブを用いて、前記第１の印刷装置に対応する印刷ジョブとは識別できるように生成する第２の生成手段を有し、
前記情報処理装置はさらに
前記第１の生成手段及び前記第２の生成手段で生成された印刷ジョブを関連付けて、前記変更手段にて変更された出力ポートから前記第１の印刷装置に送信する手段を有することを特徴とする情報処理装置。
【請求項２】
前記第１のプリンタドライバは前記第１の印刷装置の印刷設定を受け付けるためのユーザインターフェースを表示する手段を備え、
前記第２のプリンタドライバは前記第２の印刷装置の印刷設定を受け付けるためのユーザインターフェースを表示する手段を備え、
前記第１のプリンタドライバのユーザインターフェースには、前記第２のプリンタドライバのユーザインターフェースを表示させるための操作部を含むことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ユーザインターフェースでは、前記第１の印刷装置または前記第２の印刷装置またはその両方により画像形成を行うタンデムドライバの動作を設定でき、
前記タンデムドライバの動作の設定に応じて、前記第１のプリンタドライバおよび前記第２の印刷装置により、それぞれの印刷装置に対する印刷ジョブを生成することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第２の印刷装置に対応する第２のプリンタドライバがインストールされていない場合には、当該第２のプリンタドライバを新たにインストールする手段を更に有することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記第１のプリンタドライバにてお気に入りに設定された第１の印刷設定と、前記第２のプリンタドライバにてお気に入りに設定された第２の印刷設定とを関連付けて登録し、
前記第１のプリンタドライバを起動させ、前記関連付けて登録された第１の印刷設定と第２の印刷設定を選択することにより、
前記第１の印刷設定を用いて前記第１の生成手段が、第１の印刷装置にて印刷すべき印刷ジョブを生成し、
前記第２の印刷設定を用いて前記第２の生成手段が、第２の印刷設定にて印刷すべき印刷ジョブを生成し、
前記送信手段が、前記第１の生成手段及び前記第２の生成手段で生成された印刷ジョブを関連付け、前記変更手段にて変更された出力ポートから前記第１の印刷装置に送信することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
第１の印刷装置の排紙部と第２の印刷装置の給紙部とが接続されている印刷システムを制御する情報処理装置の制御方法であって、
該情報処理装置は第１のプリンタドライバと第２のプリンタドライバを有し
前記第１のプリンタドライバは、
前記第１の印刷装置に対して該第１の印刷装置に接続された前記第２の印刷装置のモデル名を取得させる取得ステップと、
前記取得ステップにより取得された第２の印刷装置のモデル名から前記第１の印刷装置に接続された第２の印刷装置を特定する特定ステップと、
前記特定ステップにより特定された前記第２の印刷装置のドライバである第２のプリンタドライバを特定し、該第２のプリンタドライバの出力ポートを、前記第１の印刷装置のドライバである第１のプリンタドライバの出力ポートに合わせて変更する変更ステップと、
前記特定ステップにより特定された前記第２のプリンタドライバを起動し、印刷対象データのうち、前記第２の印刷装置で処理されるデータを前記第２のプリンタドライバに送信する送信ステップと、
前記印刷対象データのうち、第１の印刷装置にて印刷すべき印刷ジョブを生成する第１の生成ステップとを有し、
前記第２のプリンタドライバは、
前記第１のプリンタドライバにより起動されると、前記送信ステップで送信された前記第２の印刷装置に対応する印刷ジョブを用いて、前記第１の印刷装置に対応する印刷ジョブとは識別できるように生成する第２の生成ステップを有し、
前記情報処理装置の制御方法はさらに
前記第１の生成ステップ及び前記第２の生成ステップで生成された印刷ジョブを関連づけて、前記変更ステップにて変更された出力ポートから前記第１の印刷装置に送信するステップを有することを特徴とする情報処理装置の制御方法。
【請求項７】
前記第１のプリンタドライバは前記第１の印刷装置の印刷設定を受け付けるためのユーザインターフェースを表示するステップを有し、
前記第２のプリンタドライバは前記第２の印刷装置の印刷設定を受け付けるためのユーザインターフェースを表示するステップを有し、
前記第１のプリンタドライバのユーザインターフェースには、前記第２のプリンタドライバのユーザインターフェースを表示させるための操作部を含むことを特徴とする請求項６に記載の情報処理装置の制御方法。
【請求項８】
前記ユーザインターフェースでは、前記第１の印刷装置または前記第２の印刷装置またはその両方により画像形成を行うタンデムドライバの動作を設定でき、
前記タンデムドライバの動作の設定に応じて、前記第１のプリンタドライバおよび前記第２の印刷装置により、それぞれの印刷装置に対する印刷ジョブを生成することを特徴とする請求項７に記載の情報処理装置の制御方法。
【請求項９】
前記第２の印刷装置に対応する第２のプリンタドライバがインストールされていない場合には、当該第２のプリンタドライバを新たにインストールするステップを更に有することを特徴とする請求項６に記載の情報処理装置の制御方法。
【請求項１０】
前記第１のプリンタドライバにてお気に入りに設定された第１の印刷設定と、前記第２のプリンタドライバにてお気に入りに設定された第２の印刷設定とを関連付けて登録し、
前記第１のプリンタドライバを起動させ、前記関連付けて登録された第１の印刷設定と第２の印刷設定を選択することにより、
前記第１の印刷設定を用いて前記第１の生成ステップが、第１の印刷装置にて印刷すべき印刷ジョブを生成し、
前記第２の印刷設定を用いて前記第２の生成ステップが、第２の印刷設定にて印刷すべき印刷ジョブを生成し、
前記送信ステップが、前記第１の生成ステップ及び前記第２の生成ステップで生成された印刷ジョブを関連づけ、前記変更ステップにて変更された出力ポートから前記第１の印刷装置に送信することを特徴とする請求項７に記載の情報処理装置の制御方法。
【請求項１１】
請求項７乃至１０のいずれか一項に記載の情報処理装置の制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば複数のデバイスが連結されたタンデムプリントシステムと該システムにより実行される印刷制御方法およびプログラムに関するものである。
【背景技術】
【０００２】
近年、ＣＭＹＫなどのプロセスカラーを表現するトナーを組み合わせることで生成した印刷物に更なる付加価値を加えるため、プロセスカラーでは表現できない色を表現する特色トナーや、光沢感を与えることを目的とした透明トナーを用いることがある。しかし、これらの特色トナーや透明トナーは特殊な印刷装置でしか扱えないことが殆どである。よって、多種類のトナーを用いた印刷を行う印刷装置を組み合わせることで付加価値印刷を実現している。例えば特許文献１に開示されているように、印刷ジョブを受け取った前段の印刷装置が印刷した用紙を排紙し、前段の印刷装置に接続された後段の印刷装置が、この排紙された印刷済みの用紙を給紙して印刷を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１４５５９５号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一方、従来の印刷装置において、印刷装置の排紙部にフィニッシャを接続するように、印刷装置に対してアクセサリを接続することがある。
この場合、この印刷装置を制御するためのプリンタドライバが対応できるアクセサリの種類、機能などについては、プリンタドライバを作成する時点で決定しているのが一般的であった。よって、製品が発売される時にすでに、後から接続され得る全てのアクセサリに対応可能なプリンタドライバがリリースされている。このため、１度市場に出た製品に対して後からアクセサリを追加する場合は、その都度、新規にプリンタドライバを開発していた。
【０００５】
あるいは、アドイン機能を追加することができるＩ／Ｆを予め用意することで対応をしていた。すなわち、新規に接続されるアクセサリに対して操作を行う部分を、新規に接続されるアクセサリごとにアドイン機能として開発し、従来のプリンタドライバに影響を与えずに、単純に機能を付加する機能拡張を図ることで対応をしていた。このため、既存の印刷装置に対してアクセサリを後から接続する製品拡張の際、新規のドライバを開発するか、後から接続するアクセサリに対応するアドイン機能を開発していた。よって、製品拡張の際は、ユーザも新規に開発されたドライバをインストールするかアクセサリに対応するアドイン機能を導入するのが一般的であった。
【０００６】
しかし、先行技術に示されているように複数の印刷装置を接続して一台の印刷装置として扱う場合に、上記のアドイン機能追加のような対応では開発負荷が大きくなる。つまり、接続される装置に対応したドライバ又はアドイン機能をそれぞれ新規に作らなければならない。よって、接続される装置が変更されると、そのたびに接続した装置を制御するためだけに必要な新たなドライバや、接続される個々の装置に対して新たなアドイン機能を開発する必要があるため、開発負荷が大きくなる。
【０００７】
また、複数の印刷装置を接続して制御するのに必要なプリンタドライバを新たに作成すると、複数の印刷装置を接続して使用する場合と、複数の印刷装置を独立で使用する場合の両ケースに対応できるドライバを実現させることが難しい。
【０００８】
また、複数の独立した印刷装置が接続されているか否かによって対応するプリンタドライバをその都度使い分けることは、ユーザにとって煩雑な作業を要するという問題が存在しうる。
【０００９】
本発明は上記従来例に鑑みてなされたもので、上記課題を解決することを目的とする。具体的には、タンデムシステム用のドライバや専用アプリケーションを用いずに、タンデムシステムを構成する個々のプリンタのプリンタドライバの連携を可能にする。そして、印刷を行おうとするアプリケーションからはあたかもひとつのプリンタと同様に扱うことができるタンデムプリントシステムおよび印刷制御方法を提供することを目的とする。すなわち、単一のポートを通してタンデムシステムと通信し、また、印刷を行うアプリケーションにより、タンデムを構成する個々のデバイスにより遂行される機能の設定を行うことができるタンデムプリントシステムおよび印刷制御方法を提供する。
【課題を解決するための手段】
【００１０】
上記目的を達成するために本発明は以下の構成を備える。すなわち、第１の印刷装置の排紙部と第２の印刷装置の給紙部とが接続されている印刷システムを制御する情報処理装置であって、
該情報処理装置は第１のプリンタドライバと第２のプリンタドライバとを有し、
前記第１のプリンタドライバは、
前記第１の印刷装置に対して該第１の印刷装置に接続された前記第２の印刷装置のモデル名を取得させる取得手段と、
前記取得手段により取得された第２の印刷装置のモデル名から前記第１の印刷装置に接続された第２の印刷装置を特定する特定手段と、
前記特定手段により特定された前記第２の印刷装置のドライバである第２のプリンタドライバを特定し、該第２のプリンタドライバの出力ポートを、前記第１の印刷装置のドライバである第１のドライバの出力ポートに合わせて変更する変更手段と、
前記特定手段により特定された前記第２のプリンタドライバを起動し、印刷対象データのうち、前記第２の印刷装置で処理されるデータを前記第２のプリンタドライバに送信する送信手段と、
前記印刷対象データのうち、第１の印刷装置にて印刷すべき印刷ジョブを生成する第１の生成手段とを有し、
前記第２のプリンタドライバは、
前記第１のプリンタドライバにより起動されると、前記送信手段で送信された前記第２の印刷装置に対応する印刷ジョブを用いて、前記第１の印刷装置に対応する印刷ジョブとは識別できるように生成する第２の生成手段を有し、
前記情報処理装置はさらに
前記第１の生成手段及び前記第２の生成手段で生成された印刷ジョブを関連付けて、前記変更手段にて変更された出力ポートから前記第１の印刷装置に送信する手段を有する。
【発明の効果】
【００１１】
本発明により、タンデムシステム用のドライバや専用アプリケーションを用いずに、タンデムシステムを構成する個々のプリンタのプリンタドライバの連携を可能する。そして、印刷を行おうとするアプリケーションからはあたかもひとつのプリンタと同様に扱うことができる。具体的には、プリンタドライバがタンデムシステムであると認識すると、接続されている別の機種のプリンタドライバを呼び出し連携して動作することができる。また、タンデムシステムの１つのポートに向かって接続されている機種のすべてのプリンタドライバが印刷を行うことができる。また接続されているプリンタドライバの印刷設定はすべて、ユーザインターフェースを使って呼び出すことができるので、接続されているすべての機種の機能をあらかじめ設定しておくことができる。これにより、タンデムシステムにおいて、専用のプリンタドライバや、プリンタドライバの更新をすることなく、通常のプリンタドライバ同士が連携して、タンデムシステムのすべての機能を活用した印刷を行うことができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態としての、コンピュータシステムのハードウェアとソフトウェアのブロック構成図である。
【図２】本発明の一実施形態としての、クライアントとサーバー、そしてプリンタが接続されたネットワークの構成図である。
【図３】本発明の一実施形態としての、一般的なコンピュータを用いた印刷処理システムのブロック構成図である。
【図４】本発明の一実施形態としての、ＸＰＳＤｒｖ印刷処理システムのブロック構成図である。
【図５】本発明の一実施形態としての、印刷設定であるＤＥＶＭＯＤＥ構造体のデータ構造を示したブロック図である。
【図６】本発明の一実施形態としての、ＸＰＳＤｒｖ印刷処理システムの印刷設定であるＸＭＬ形式のプリントチケットの一例である。
【図７】本発明の一実施形態としての、プリンタドライバのユーザインターフェースである。
【図８】本発明の一実施形態としての、タンデムシステムを検知したときのプリンタドライバのユーザインターフェースで、タンデムボタンが表示されているものである。
【図９】本発明の一実施形態としての、タンデムドライバの動作設定を選択するダイアログである。
【図１０】本発明の一実施形態としての、タンデムシステムが２つ以上接続されているときに、サブドライバを選択するダイアログである。
【図１１】本発明の一実施形態としての、タンデムドライバの印刷処理システムのブロック構成図である。
【図１２】本発明の一実施形態としての、タンデムドライバのＸＰＳＤｒｖ印刷処理システムのブロック構成図である。
【図１３】本発明の一実施形態としての、タンデムデバイスがプリンタドライバにタンデム接続されているサブデバイスのモデル名を返す動作フローチャートである。
【図１４】本発明の一実施形態としての、タンデムドライバのメインドライバがプリンタドライバのユーザインターフェースを開く動作フローチャートである。
【図１５】本発明の一実施形態としての、タンデムドライバのメインドライバがタンデムシステムに対して印刷開始動作を行う動作フローチャートである。
【図１６】本発明の一実施形態としての、タンデムドライバのメインドライバがタンデムシステムに対して描画処理を行う動作フローチャートである。
【図１７】本発明の一実施形態としての、タンデムデバイスがタンデムドライバから印刷ジョブを受け取って印刷を行う動作フローチャートである。
【図１８】本発明の一実施形態としての、タンデムドライバのメインドライバがオペレーティングシステムからサブドライバを検索する動作フローチャートである。
【図１９】本発明の一実施形態としての、タンデムドライバのＸＰＳＤｒｖ印刷処理システムのタンデムフィルタがタンデムシステムに対して印刷処理を行う動作フローチャートである。
【図２０】タンデム印刷システムの構成図である。
【発明を実施するための形態】
【００１３】
［実施形態１］
＜コンピュータの構成＞
図１は本発明の実施形態を示す一般的なコンピュータを用いたシステムのブロック構成図である。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機能であっても、複数の機器からなるシステムであっても、ネットワークを介して接続がなされ処理が行われるシステムであっても、本発明を適用できる。
【００１４】
ＣＰＵ１０１は主記憶装置１０２のＲＯＭ１０２１あるいはＲＡＭ１０２２あるいは補助記憶装置１０５に格納されたプログラムに従って装置全体の制御を行う。ＲＡＭ１０２２はＣＰＵ１０１が各種処理を行う際のワークエリアとしても使用される。補助記憶装置１０５はオペレーティングシステム（ＯＳ）１０５３やアプリケーションソフト１０５１等を記録する。キーボード１０３１やマウス・タッチパネルなどに代表されるポインティングデバイスなどの入力機器は、入力Ｉ／Ｆ１０３を通じて、ユーザがコンピュータに対して各種指示を与えるためのデバイスである。出力Ｉ／Ｆ１０４は、データを外部に出力するためのインターフェースであり、モニタ１０４１やプリンタ１０４２などの出力機器に対してデータを出力する。プリンタ１０４２とは直接接続されるローカルＩ／Ｏのみならず、通信Ｉ／Ｆ１０６を通じて接続されるネットワーク１０６１を通して接続されていてもよい。また、１０７は共通データシステムバスで、モジュール間でそれぞれのデータのやりとりを行う。
【００１５】
図２は本発明の実施の形態におけるネットワーク１０６１の環境を簡略した図である。印刷を行う文書や画像を作成するクライアントコンピュータ（情報処理装置）２０１／２０２が単体もしくは複数ネットワークに接続されている。また、クライアントのユーザやプリンタを管理するサーバーコンピュータ２０３が接続されていることもある。プリンタ２０４／２０５が単体もしくは複数ネットワークに接続されており、プリンタ２０５のように物理的に接続されていても実際には使用できないオフライン状態であることもある。
【００１６】
ネットワークにはＰＡＮ（Ｐｅｒｓｏｎａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ Ｎｅｔｗｏｒｋ）がある。その他、ＭＡＮ（Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ Ｎｅｔｗｏｒｋ）もある。このように、小規模から大規模までのネットワークがあり、これらの機器がすべてのネットワークに接続されている。クラウドなど、サーバーやプリンタがインターネットを越えて接続されていてもかまわない。またプリンタは単機能のプリンタのみならず、種々の機能を備えた複合機であってもよく、画像形成機能を持つ画像形成装置であればよい。タンデムシステムを構成する際には、その後段のデバイスとして、画像形成機能を持たないフィニッシャを用いることもできる。ただし本実施形態では、画像形成装置を直列に接続したタンデムプリントシステムについて説明する。また、本実施形態では、タンデムプリントシステムとは画像形成装置のみにより構成されるシステムを指し、クライアントを含めた全体を印刷処理システムと呼ぶ。
【００１７】
図３において、一般的なコンピュータを用いた印刷処理システムを示す。オペレーティングシステム３１０は、図１の補助記憶装置１０５にＯＳ１０５３として格納されている。グラフィックスエンジン３０２、プリントマネージャ３０４はオペレーティングシステム３１０に含まれるモジュールである。プリンタドライバ３０３は、図１の補助記憶装置１０５にプリンタドライバー１０５２として格納されている。アプリケーション３０１は、図１の補助記憶装置１０５にアプリケーション１０５１として格納されている。ユーザはキーボード１０３１やマウス１０３２などといった入力装置を使用して、出力装置のモニタ１０４１に映し出されたアプリケーションプログラム３０１を使用して作成した文書３０１１の印刷処理を実行する。印刷処理はプリンタの選択、印刷設定の作成、描画データの変換と３つの処理を順番に行うことで実行される。まずは、プリンタの選択として、印刷を実行するプリンタに対応したプリンタドライバ３０３を選択する。次に印刷設定３０１３の作成を行う。印刷対象のアプリケーションデータである文書の印刷設定３０１３はプリンタドライバのコンフィギュレーションモジュール３０３２によって初期値が作成される。作成された印刷設定３０１３をアプリケーションもしくはプリンタドライバのユーザインターフェースを使用してユーザが望む最終印刷結果になるように変更して設定を行う。たとえば、出力する用紙サイズを変更したり、両面印刷、白黒印刷を行なうといった設定である。印刷設定３０１３はＲＡＭ１０２２上に確保されるが、保存する形式はバイナリのデータ構造体であったり、マークアップ言語のＸＭＬであったりする。この形態はプリンタドライバやオペレーティングシステム３１０の仕様によって異なる。印刷設定３０１３は文書印刷のたびに作成するが、プリンタ３０９のオプション機器や、ユーザごとの環境設定など設定を保持しておきたいものは、プリンタドライバがオペレーティングシステム３１０のレジストリデータベース３０８に保存する。印刷設定３０１３のユーザごとのデフォルト値はオペレーティングシステム３１０のプリントマネージャ３０４が、レジストリデータベース３０８に保存する。最後に描画データの変換を行う。印刷設定３０１３が作成し終わったら、ユーザによって印刷処理が実行され、オペレーティングシステム３１０に印刷処理を通知する。オペレーティングシステム３１０はグラフィックスエンジン３０２を通じて、指定されたプリンタドライバ３０３への描画を行う。印刷設定３０１３でレイアウト処理が指定されている場合は、プリンタドライバ３０３のレンダリングモジュール３０３１に行く前に一時的なスプールファイル３０５を作成し、レイアウトモジュール３０６を起動する。レイアウト処理とは用紙の順番を入れ替えたり、一枚の用紙に複数ページを貼り付けたりする処理を指す。レイアウトモジュール３０６はレイアウトを変更した後、プリンタドライバ３０３への描画を行う。描画データが送られてきたプリンタドライバ３０３はレンダリングモジュール３０３１によって、プリンタが理解できるデータ言語すなわちプリンタ制御言語（プリンタ記述言語とも呼ぶ）に変換する。このとき印刷設定３０１３も、プリンタ制御言語として変換する。レンダリングモジュール３０３１、コンフィギュレーションモジュール３０３２はともに複数の種類のプリンタ３０８に対して共通のモジュールであることが多く、機種ごとの違いは機種依存データファイル３０３３に記述されている。レンダリングモジュール３０３１、コンフィギュレーションモジュール３０３２は適宜、この機種依存データファイル３０３３を参照する。変換されたデータはスプールファイル３０５として逐次保存していく。プリントマネージャ３０４はスプールファイル３０５を取得し、印刷ジョブファイルとして印刷処理のスケジュール管理を行う。プリンタが印刷できる状態になったら、プリントマネージャ３０４はＩ／Ｏモジュール３０７を介してプリンタ３０９に印刷ジョブデータを送信する。このようにして、アプリケーションからの印刷データがプリンタ言語に変換されて印刷を行う。
【００１８】
文書３０１１の印刷設定３０１３を作成するには、アプリケーションによって印刷設定３０１３を直接書き換えるか、プリンタドライバ３０３のコンフィギュレーションモジュール３０３２が提供するユーザインタフェース（図７に示す）を使用する。印刷設定３０１３はＭｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムでは、ＤＥＶＭＯＤＥ構造体と呼ばれる図５の構造をしている。ＤＥＶＭＯＤＥ構造体はオペレーティングシステムで公開定義されている標準の設定領域５０１と、プリンタドライバが拡張した設定領域５０２に分けられている。標準の設定領域５０１には、用紙サイズや給紙段の切り替え、カラー白黒の切り替えなど印刷の基本的な設定の値がある。拡張した設定領域５０２には、プリンタのオプションに応じた排紙機能や、細かい色調整機能などの値がある。本実施形態ではさらに、タンデム接続されたプリンタのプリンタドライバが作成する印刷設定領域５０２６も拡張した設定領域５０２に保持する。アプリケーションは各プリンタドライバ３０３が持つ拡張設定を知ることはできず、直接印刷設定を書き換えることができるのは、システムで定義されている標準の設定領域５０１だけとなる。そこで、アプリケーションはプリンタドライバ３０３のコンフィギュレーションモジュール３０３２が提供するユーザインターフェースを表示させて、拡張された印刷設定領域５０２をユーザに行わせるのが一般的である。コンフィギュレーションモジュール３０３２はユーザインターフェースだけではなく、アプリケーションプログラムインタフェース（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）も提供している。よって、ユーザインターフェースを表示せずに拡張された印刷設定５０２を外部から設定することも可能である。しかし、コンフィギュレーションモジュール３０３２のＡＰＩを使用する場合はアプリケーションがプリンタドライバ３０３ごとに対応しなければならないので、一般的なアプリケーションは標準の設定領域５０１のみ変更を行う。
【００１９】
本実施形態のタンデムシステムとは、図２０に示すように、前段にある第１のプリンタＡと後段にある第２のプリンタＢが接続されて構成されている印刷システムである。具体的には、第１のプリンタＡが給紙し、トナーを用いて印刷を行った後、排紙口に排紙をした用紙を第２のプリンタＢが給紙し、給紙した紙に対して再度トナーを用いて印刷を行う。このような印刷を行うタンデムシステムにおけるプリンタドライバ３０３の動作について、図１１のシステム図と、図１３、１４、１５、１６、１７、１８のフローチャートを使って説明する。図１１にあるように、タンデムシステムでは前段のプリンタであるメインのプリンタドライバ（以降はメインドライバと呼ぶ）と、後段のプリンタであるサブのプリンタドライバ（以降はサブドライバと呼ぶ）が連携して動作を行う。タンデムシステムは２台以上の印刷装置もしくは複合機が接続されたシステムで、外部から印刷データを受信し、タンデムシステム全体の制御をするデバイスを第１の印刷装置であるメインデバイスとする。第２の印刷装置であるサブデバイスはメインデバイスからの命令に従い、動作を行う。第１のプリンタドライバであるメインドライバは、タンデムシステムにおけるメインデバイス用のプリンタドライバであり、メインデバイスにて印刷すべき印刷データを生成する第１の生成手段を有する。第２のプリンタドライバであるサブドライバはサブデバイス用のプリンタドライバであり、サブドライバにて印刷すべき印刷データを生成する第２の生成手段を有する。
【００２０】
＜印刷設定変更手順＞
タンデムシステムにおける印刷設定３０１３を作成するための動作フローとして図１４のフローチャートを追って説明する。メインドライバはアプリケーションから、拡張された印刷設定５０２を作成するために、ユーザインターフェースを表示させる命令を受け取る（Ｓ１４０１）。この命令は図１１にあるように、グラフィックスエンジン３０２を通して渡される。メインドライバは、プリンタデバイスからタンデムシステムとして接続されているサブデバイスのモデル名を取得する（Ｓ１４０２）。モデル名はプリンタドライバがデバイスと双方向通信を行うことで取得するが、デバイス側の動作フローは図１３のフローチャートに記載しているので後述する。メインドライバは、タンデムシステムのモデル名が１つも取得できなかったらタンデムシステムではないと判断し（Ｓ１４０３）、通常のプリンタドライバのユーザインターフェースを表示する（Ｓ１４０５）。メインドライバは、タンデムシステムのモデル名が１つでも取得できれば、オペレーティングシステム３１０にインストールされているドライバからタンデムシステムのサブドライバを検索してリストを作る（Ｓ１４０４）。オペレーティングシステム３１０からサブドライバを検索する動作フローは、図１８のフローチャートに記載しているので後述する。タンデムシステムのサブドライバが見つかったら、メインドライバはプリンタドライバのユーザインターフェースに、サブドライバのユーザインターフェースを表示させるための操作部であるタンデムドライバボタンをつけて表示する（Ｓ１４０６）。図８がタンデムドライバボタンを表示したプリンタドライバのユーザインターフェースである。ユーザによってタンデムボタンが押されると、メインドライバは先ほど取得したサブドライバリストを参照する（Ｓ１４０７）。サブドライバリストに複数のドライバが列挙されている場合は（Ｓ１４０８）、タンデムシステムで接続されているすべてのサブデバイスのサブドライバ一覧リストを表示する（Ｓ１４０９）。
【００２１】
図１０はタンデムシステムで２つのデバイスがサブデバイスとして接続されているときに表示される、サブドライバ一覧リストの例である。サブドライバ一覧リストから１つサブドライバを選択するか、タンデムシステムでサブドライバが１つのときにタンデムボタンが押されると、選択されたサブドライバのプリンタドライバのユーザインターフェースを開く（Ｓ１４１０）。サブドライバのユーザインターフェースは、そのドライバが通常ユーザに対して提供するユーザインターフェースと同じものでよい。すなわち例えば図８の画面から、「タンデムドライバ」ボタンを除いたような構成である。もちろんデバイスの種類により様々であってよい。
【００２２】
しかし、メインドライバで２in１印刷設定が選ばれた場合、このサブドライバでは２in１印刷設定しか選ばれないように画面を制御する。つまり、印刷設定においてコンフリクトが発生しないように、メインドライバの設定に応じて、サブドライバが設定できる項目のみ限定して表示する。または設定できない項目をグレーアウト等してもよい。つまり、通常印刷で用いられる場合、サブドライバのユーザインターフェースは図８の画面から「タンデムドライバ」ボタンを除いたような一般的な構成でよい。
【００２３】
しかし、サブドライバ一覧リストから選択されるかメインドライバの「タンデムボタン」が押されることにより起動された場合、サブドライバのユーザインターフェースは、メインドライバの設定に応じて制御された表示を行う。
【００２４】
さらに、メインドライバにてある印刷設定（第１の印刷設定）をお気に入りに登録し、サブドライバにてある印刷設定（第２の印刷設定）をお気に入りに登録し、この２つのお気に入りを関連づけることができる。この関連付けにより、サブドライバを起動させずに、メインドライバにて関連付けられたお気に入りを選択するだけで、２つのドライバで設定しておいたお気に入り印刷設定を印刷対象データに施して実行することができる。例えば、メインドライバでは２in１印刷をお気に入りに設定し、サブドライバではスタンプ印刷をお気に入りに設定して、これらを関連付ける。そして、メインドライバにて関連付けられたお気に入りの設定を選択する。すると、メインドライバからはメインデバイスに対して、印刷対象データに２in１設定を施して印刷を実行させる。そして、サブドライバからはサブデバイスに対して、印刷対象データにスタンプ印刷を施して実行させることができる。この時、起動しているメインドライバのユーザインターフェースにおけるプレビューには、メインドライバにて設定された印刷設定とサブドライバにて設定された印刷設定を組み合わせた結果が表示される。
【００２５】
また、このサブドライバにて設定された値の保存先は、タンデムシステムのサブドライバ（タンデムドライバ）の領域５０２６である。このユーザインターフェースで、オペレータはサブデバイスの印刷設定を行う。サブドライバのユーザインターフェースがユーザによって閉じられると、メインドライバはサブドライバの印刷設定を取得する（Ｓ１４１１）。そして、メインドライバの印刷設定３０１３の拡張した設定領域５０２のサブドライバの印刷設定領域５０２６に、取得した印刷設定を追加して保存する（Ｓ１４１２）。このとき、サブドライバの印刷設定領域５０２６の標準の設定領域５０２６１をタンデムシステム用に変更し、設定しなおす。具体的には、給紙段の設定を「手差しトレイ」に変更する。標準の設定領域はどのドライバにも共通の仕様であり外部から変更することが可能なので、給紙段の設定をメインドライバが変更することは容易である。「手差しトレイ」に変更するのは、タンデムシステムにおいては、メインのデバイスが排紙部から排紙した用紙を、サブのデバイスが「手差しトレイ」である給紙部で受け取って印刷を続けるためである。つまり、タンデムデバイスでは、メインのデバイスの排紙口とサブのデバイスの給紙部である「手差しトレイ」が接続されていることになる。
【００２６】
サブドライバのユーザインターフェースを閉じると、再びメインドライバのユーザインターフェースに戻る。そして、メインドライバのユーザインターフェースでメインデバイスの印刷設定を完了してユーザインターフェースを閉じると、メインドライバの印刷設定３０１３が作成され、タンデムシステムの印刷設定が完成する。サブドライバのユーザインターフェースはモーダルダイアログであるため、サブドライバのユーザインターフェースを閉じることなく、メインドライバのユーザインターフェースを閉じることはできない。つまり前後連動しているウィンドウとなっている。こサブドライバのユーザインターフェースが閉じた後、メインドライバのユーザインターフェースのプレビュー画面には、メインドライバで設定された印刷設定とサブドライバで設定された印刷設定を組み合わせた結果が表示される。
【００２７】
また、メインドライバはタンデムドライバとしての動作をあらかじめ決めておくことができる。メインドライバのユーザインターフェースにあるドライバの動作を設定する「環境設定」項目（不図示）には、タンデムドライバの動作を決める図９のダイアログが存在する。タンデムドライバの動作としては、タンデムドライバとして印刷するときに、メインドライバとサブドライバの両方で同一の描画データを印刷ジョブとして作成してタンデムシステムに送信する設定がデフォルトである。だが、メインドライバ、サブドライバそれぞれ片方しか印刷ジョブを作成しないようにすることもできる。メインドライバしか印刷ジョブを作らないようにすると、タンデムシステムとして認識しても通常のドライバと変わらない動作となる。サブドライバしか印刷ジョブを作らないようにすると、メインドライバの描画がまったく行われないので、サブデバイスにだけ印刷ジョブを送信することができる。これは、サブデバイスがグロス（つや）効果のあるクリア（透明）トナーを持つデバイスで、フォームをあらかじめ登録してクリアトナーを重ね合わせるオーバーレイ動作を行うときに、フォームだけを送信するといった用途で使用できる。図９のタンデムドライバの動作の設定において、「ジョブ識別ＩＤ」は空欄であれば自動でメインドライバが作成するが、オペレータが任意のＩＤを入力することもできる。図９のユーザインターフェースで設定されたタンデムドライバの動作は、メインドライバがユーザごとにレジストリデータベース３０８に保存しておき、印刷時にレジストリデータベースから読みだして使用する。
【００２８】
＜メインデバイスの動作＞
図１３のフローチャートを使って、Ｓ１４０２のメインデバイスがタンデムシステムのモデル名、すなわちサブデバイスのモデル名をプリンタドライバに返すフローを説明する。メインプリンタドライバ（メインドライバ）はタンデムシステムのサブデバイスのモデル名を取得するためにメインデバイスに対してモデル名を要求する命令を送信し、タンデムシステムのメインデバイスは命令を取得する（Ｓ１３０１）。メインデバイスはその命令に応じて、タンデム接続されたデバイスがあるかどうかを判定する（Ｓ１３０２）。接続の有無およびモデル名は、例えばタンデム接続用のポートから接続確認用の命令を送信し、その応答を読み取ることで判定する。接続がなければ、メインプリンタドライバに対してタンデムシステムのモデル名がないことを返却する（Ｓ１３０４）。１台でもタンデムシステムとして接続されていれば、メインデバイスはタンデム接続されたサブデバイスに対してモデル名取得の命令を送信する。この命令で接続の有無の判定を兼ねてもよい。メインデバイスはサブデバイスがモデル名を返してくるまで待っていて、モデル名を取得する（Ｓ１３０５）。モデル名が取得できたら、メインデバイスはタンデム接続されているモデル名リストにモデル名を追加する（Ｓ１３０６）。メインデバイスは、すべてのタンデム接続されているサブデバイスからモデル名を取得するまで、モデル名取得を繰り返すため（Ｓ１３０７）、取得していないサブデバイスがあれば次のモデル名取得デバイスとして選択する（Ｓ１３０９）。そして、メインデバイスはメインプリンタドライバにすべてのサブデバイスのモデル名リストを返却する（Ｓ１３０８）。例えば、メインデバイスにサブデバイス１が接続し、そのサブデバイス１にさらにサブデバイス２が接続した場合について説明する。この時、メインプリンタドライバにはサブデバイスのモデル名が２つ返却されるが、デバイスが接続されている順番はわからない。よって、メインデバイスのコントローラは、まず自身に接続されるサブデバイス１のコントローラにモデル名を問い合わせる。さらに、そのサブデバイス１に自身以外に接続されているデバイスがあるか問い合わせる。すると、サブデバイス１はサブデバイス２に接続されていることをメインコントローラに回答する。これにより、メインコントローラは、自身に接続されているサブデバイスの接続順番を把握することができる。
【００２９】
＜サブドライバの検索手順＞
図１８のフローチャートを使って、Ｓ１４０４における、オペレーティングシステム３１０から、インストールされているサブドライバを検索する方法を説明する。メインドライバはオペレーティングシステム３１０にインストールされているプリンタドライバをすべて列挙する（Ｓ１８０１）。これはメインドライバが、オペレーティングシステム３１０の提供するＡＰＩを呼び出すことで、すべて列挙することができる。次にメインドライバは、列挙したプリンタドライバから１つ取り出し（Ｓ１８０２）、取り出したプリンタドライバのモデル名をオペレーティングシステム３１０の提供するＡＰＩを呼び出して取得する（Ｓ１８０３）。プリンタドライバはデバイスの機種ごとに１つ用意されているので、機種を特定するためのモデル名に関連づけられてオペレーティングシステム３１０にインストールされている。したがって、オペレーティングシステム３１０はプリンタドライバとモデル名の関連を知っているので、メインドライバがオペレーティングシステム３１０を経由してモデル名を取得することができる。メインドライバはここで、デバイスから取得したタンデムシステムのモデル名リストに、今取得したプリンタドライバのモデル名が含まれているかどうかを調べる（Ｓ１８０４）。タンデムシステムのモデル名リストに含まれていたら、メインドライバは取り出したプリンタドライバをサブドライバリストに追加する（Ｓ１８０５）。同一のモデル名のプリンタドライバが複数オペレーティングシステム３１０にインストールされていることがある。そのときは、出力ポートが同一のプリンタドライバを１つ選び、なければ最初に見つかったプリンタドライバを選んで、サブドライバとしてリストに追加する。同一モデルのプリンタドライバであればいいので、複数インストールされているときは、どれか１つを使うことですむからである。
【００３０】
メインドライバは、列挙したプリンタドライバをすべて確認したら（Ｓ１８０６）、タンデムシステムに必要なサブデバイスのすべてのドライバがサブドライバとして見つかったかどうかを判定する（Ｓ１８０７）。見つからなかったときは、プリンタドライバを検索してインストールを試みる。まず、メインドライバはオペレーティングシステム３１０に組み込まれているプリンタドライバから、サブデバイスのモデル名に一致するドライバを検索する（Ｓ１８０８）。見つかれば、メインドライバはオペレーティングシステム３１０に組み込みドライバを使ってそのモデル名のドライバをインストールするように指示を行う。インストールができれば、メインドライバはサブドライバリストにインストールしたドライバを追加する（Ｓ１８０９）。これでもタンデムシステムに必要なサブドライバが見つからないときは（Ｓ１８１０）、Ｓ１８１１へ進む。そして、メインドライバがオペレーティングシステム３１０の持つインターネットの更新プログラムのサイトへ、オペレーティングシステム３１０を経由して問い合わせを行う（Ｓ１８１１）。インターネットの更新サイトから一致するモデル名のドライバが見つかれば、メインドライバはドライバのダウンロードを行いインストールする。インストールができれば、メインドライバはサブドライバリストにインストールしたドライバを追加する（Ｓ１８１２）。これでほとんどの場合はすべてのサブドライバが見つかるが、どうしても見つからなかったときは、メインドライバはエラーとして終了する。エラーになったときは、メインドライバはメッセージボックスを表示し、足りないサブドライバのモデル名を表示し、ユーザに手動でプリンタドライバをインストールしてもらうように呼びかける。
【００３１】
＜メインドライバによる印刷処理手順＞
次にタンデムシステムにおける印刷を行うための動作フローとして、図１５のフローチャートを使って説明する。メインドライバはアプリケーションから、タンデムシステムに向かって印刷を行う印刷開始命令を取得する（Ｓ１５０１）。この印刷開始命令もまた図１１にあるように、グラフィックスエンジン３０２を通して渡される。メインドライバは、プリンタデバイスからタンデムシステムとして接続されているサブデバイスのモデル名を取得する（Ｓ１５０２）。これは前述した図１３のフローチャートと同じである。メインドライバは、サブデバイスのモデル名が１つも取得できなかったらタンデムシステムではないと判断し（Ｓ１５０３）、通常の印刷処理に行く。メインドライバはレジストリデータベース３０８からタンデムドライバの動作設定（図９で設定）を取得し、サブドライバで描画データを作成するかどうかを調べる（Ｓ１５０４）。サブドライバで描画データを作成しない場合は、通常の印刷処理に行く。
【００３２】
サブドライバで描画データを作成するときは、メインドライバはまずジョブ識別ＩＤを作成する（Ｓ１５０５）。レジストリデータベース３０８からタンデムドライバの動作設定に含まれるジョブ識別ＩＤを取得し、ユーザによってＩＤが入力されていればその値を使用する。ジョブ識別ＩＤが設定されていなければ、メインドライバはスプールファイル３０５に関連づけられている印刷ジョブＩＤをベースにしたジョブ識別ＩＤを作成する。作成したジョブ識別ＩＤは、その保存場所に保存される。オペレーティングシステム３１０は複数のスプールファイル３０５を管理するためにそれぞれにＩＤをつけており、そのＩＤをメインドライバはオペレーティングシステム３１０を経由して取得する。メインドライバは、オペレーティングシステム３１０にインストールされているドライバからタンデムシステムのサブドライバを検索してリストを作る（Ｓ１５０６）。これは前述した図１８のフローチャートと同じである。メインドライバはサブドライバのリストから１つサブドライバを取り出し（Ｓ１５０７）、サブドライバの出力ポートをメインドライバの出力ポートに変更する（Ｓ１５０８）。これにより、サブドライバのデータ出力先であるＩＰアドレスをメインデバイスと同じにする。このとき、メインドライバはサブドライバの出力ポートをサブドライバのリストに関連づけて保持しておき、印刷の終了処理で元のポートに戻すときに使用する。
【００３３】
つぎにメインドライバは、印刷設定領域５０１からサブドライバの印刷設定領域５０２６を取り出し、サブドライバの印刷開始命令を呼び出す（Ｓ１５０９）。ここでは図１１に示すように、メインドライバ（図１１の１１０１）があたかもアプリケーションのようになり、サブドライバ（図１１の１１０２）に向かって印刷を行うことになる。次にメインドライバは、サブドライバに対して作成したジョブ識別ＩＤを送信する（Ｓ１５１０）。サブドライバはジョブ識別ＩＤを受け取り、印刷ジョブにジョブ識別ＩＤとモデル名とを埋め込む。メインドライバはサブドライバの印刷開始命令を呼び出すことで取得したハンドルとデバイスコンテキストとを、サブドライバに関連づけて保持しておく（Ｓ１５１１）。ここでいうハンドルはサブドライバのオブジェクトの実体を指し示し、デバイスコンテキストとはサブドライバにより描画するためのキャンバスすなわち描画する対象である。メインドライバは、サブドライバリストからすべてのサブドライバについて印刷開始処理を行ったら（Ｓ１５１２）、メインドライバ自身での印刷処理に移る。メインドライバはレジストリデータベース３０８からタンデムドライバの動作設定を取得し、メインドライバで印刷を行うかどうかを判定する（Ｓ１５１３）。メインドライバで印刷を行うときは、印刷開始処理を行い（Ｓ１５１４）、印刷ジョブにジョブ識別ＩＤとモデル名を埋め込む。これで、印刷開始処理が完了した。
【００３４】
＜ジョブの変換処理＞
次に図１６のフローチャートを使って、アプリケーションからの描画命令をタンデムシステムの印刷ジョブに変換していく処理を説明する。この処理は、図１５の印刷開始処理手順の終了に引き続いてメインドライバにより実行される。メインドライバは、アプリケーションからの描画命令を受け取る（Ｓ１６０１）。メインドライバは、サブドライバのハンドルとデバイスコンテキストを保持しているかどうかをサブドライバリストから判定する（Ｓ１６０２）。サブドライバのハンドルとデバイスコンテキストを保持していれば、サブドライバのデバイスコンテキストに、アプリケーションからの描画命令をそのまま同じ内容で描画する（Ｓ１６０３）。そして、メインドライバの印刷処理として、描画命令をプリンタ制御言語に変換する（Ｓ１６０４）。変換されたプリンタ制御言語のデータはスプールファイル３０５として逐次保存されていき、サブドライバ側でも同様に変換処理が行われ、別のスプールファイル３０５として保存される。こうして図１１にあるように、メインデバイスとサブデバイスそれぞれに対応したデータを保存する複数のスプールファイル３０５が生成され、いずれもタンデムシステムに送信される。
【００３５】
すべての描画命令処理が終わると、アプリケーションからは印刷終了処理が呼ばれる。ここで、サブドライバリストにサブドライバのハンドルとデバイスコンテキストを保持していたら破棄し、出力ポートを元のポートに戻す処理を行う。
【００３６】
＜メインデバイスによる印刷ジョブの実行＞
図１７のフローチャートでは、タンデムシステムのプリンタドライバから送られてきた複数の印刷ジョブを、メインデバイスがどのように制御するのかを示した動作フローである。まず、メインデバイスは印刷ジョブが到着するまで待ちの状態になっている（Ｓ１７０１）。次に印刷ジョブを受信すると、メインデバイスは印刷ジョブを取得し（Ｓ１７０２）、タンデムシステムとしてサブデバイスが接続されているかどうかを判定する（Ｓ１７０３）。タンデムシステムでなければ、受信した印刷ジョブのレンダリングを行い（Ｓ１７０９）、エンジンハードウェアにレンダリングした絵を送信する（Ｓ１７１０）。こうして通常の印刷処理が行われる。
【００３７】
一方、タンデムシステムになっていれば、メインデバイスは、メインドライバとサブドライバで生成された印刷されたジョブが結合した印刷ジョブを受信する。タンデムシステムに接続されているサブデバイスの数だけ複数の印刷ジョブが到着することがあるので、メインデバイスは印刷ジョブにあるジョブ識別ＩＤを取得する。メインデバイスは、同じジョブ識別ＩＤを持った印刷ジョブがタンデムシステムに接続されたサブデバイスの数だけ取得するまで待ち（Ｓ１７０４）、すべてそろった時点で印刷処理を開始する。このようにジョブ識別ＩＤによりジョブとデバイスとを関連付ける。メインデバイスは、印刷ジョブに記載されているモデル名が一致するジョブをサブデバイスに送信する（Ｓ１７０５）。ここで、サブデバイスは印刷ジョブを受信するが、レンダリングは行わずためておく。メインデバイスは自分の印刷ジョブのレンダリングを行い（Ｓ１７０６）、エンジンハードウェアにレンダリングした絵を送信する（Ｓ１７０７）。メインデバイスの印刷が完了したら、タンデムシステムのサブデバイスに対して、ジョブ識別ＩＤが同一のジョブの印刷を開始するように指示を送る（Ｓ１７０８）。指示が来たサブデバイスは、受信してあった印刷ジョブからジョブ識別ＩＤが同一のジョブのレンダリングを行い、エンジンハードウェアにレンダリングした絵を送信する。このサブデバイスによる印刷処理は、メインデバイスが印刷ジョブ全体を完了した後で開始してもよいが、シートを単位として、１枚のシートの処理がメインデバイスで完了するつど、サブデバイスによる処理を開始してもよい。
【００３８】
上述したタンデムプリントシステムにおける印刷制御方法は、たとえば電子写真方式のプリンタを２つ接続してタンデムシステムを構成する。そして、前段のプリンタで通常のトナーを用いて画像形成し、後段のプリンタで透明トナーを用いてコーティングする場合などに応用できる。透明トナーに限らず、特色記録剤を用いてもよい。
【００３９】
このように、タンデムシステム専用のプリンタドライバを使用することなく、タンデムシステムを構成するそれぞれのデバイスのプリンタドライバが連携して動作することで、タンデムシステムを用いて印刷することが可能である。さらに、タンデムシステムを使用するにあたって、それぞれのプリンタドライバを少し変更するだけで、メインデバイスとサブデバイスの詳細な機能までフルに設定して使用することができる。また、タンデムシステムとして接続されるサブデバイスの種類が新しく追加されても、プリンタドライバを変更することなく、タンデムシステムの印刷を行うことができる。
【００４０】
本実施形態では、サブドライバの出力ポートをメインドライバの出力ポートと同一にしていた（Ｓ１５０８）。しかし、メインデバイスだけでなくサブデバイスにもプリンタドライバから接続している場合は、出力ポートを変更せず直接サブドライバがサブデバイスに印刷ジョブを送信してもよい。この場合は、１つのポートを複数の印刷ジョブが流れることがなくなるので、ネットワークの占有時間の軽減を図ることができる。
【００４１】
［実施形態２］
実施形態１とは別の印刷処理システムであっても、本発明を適用することができる。図４は第２の実施形態におけるＸＰＳＤｒｖ（ＸＰＳドライバ）印刷システムのブロック構成図である。ＸＰＳＤｒｖとはＸＰＳ（ＸＭＬ Ｐａｐｅｒ Ｓｐｅｃｉｆｉｃａｔｉｏｎ）と呼ばれる文書ファイルフォーマットをスプールデータとして使用し、印刷を行うプリンタドライバのことを指す。ＸＰＳＤｒｖ印刷処理システム全体はオペレーティングシステム上で動作しており、図１の補助記憶装置１０５のＯＳ１０５３に相当する。プリントマネージャ４１４、ＧＤＩｔｏＸＰＳ変換モジュール４０８、フィルタパイプラインマネージャはオペレーティングシステムに含まれるモジュールである。バージョン３プリンタドライバとフィルタパイプラインの各フィルタは、図１の補助記憶装置１０５にプリンタドライバ１０５２として格納されている。フィルタパイプラインマネージャはオペレーティングシステムに含まれるが、各フィルタはプリンタドライバのモジュールである。ＧＤＩ印刷アプリケーション４０１とＸＰＳ印刷アプリケーション４０２は、図１の補助記憶装置１０５にアプリケーション１０５１として格納されている。ユーザはキーボード１０３１やマウス１０３２等の入力装置を使用する。この装置を用い、出力装置のモニタ１０４１に映し出されたＧＤＩ印刷アプリケーションプログラム４０１（以下ＧＤＩアプリ）、もしくはＸＰＳ印刷アプリケーションプログラム４０２（以下ＸＰＳアプリ）から印刷処理を実行する。印刷処理はプリンタの選択、印刷設定の作成、描画データの変換と３つの処理を順番に行うことで実行する。
【００４２】
まずは、印刷に用いるプリンタ４１６の選択をする。これは、印刷を実行するプリンタ４１６に対応したプリンタドライバを選択することと同義である。次に印刷設定を作成する。印刷設定はアプリケーションが印刷設定用のメモリを確保し、アプリケーションかプリンタドライバのコンフィギュレーションモジュール４０５が、機種依存ファイル４０７を利用して設定データを埋めるという形で行われる。ＧＤＩアプリ４０１では、印刷設定データとしてバイナリのＤＥＶＭＯＤＥ構造体４０３を用い、ＸＰＳアプリ４０２ではマークアップ言語のＸＭＬで記載されたプリントチケット４０４を用いる。ＤＥＶＭＯＤＥ構造体４０３もプリントチケット４０４も、図５の構造のように、オペレーティングシステムが定義する標準領域とプリンタドライバが独自で定義する拡張領域を持つ。また、プリントチケット４０４は、図６にあるようなＸＭＬ形式で記述された印刷設定情報であるので、標準領域と拡張領域は名前空間によって記載が分かれている。このＤＥＶＭＯＤＥ構造体４０３もしくはプリントチケット４０４が印刷設定を保持しており、アプリケーションが直接書き換えることで印刷設定を変更する。プリンタ４１６に依存した専用の設定は、コンフィギュレーションモジュール４０５が持つプリンタドライバのユーザインタフェース（図７）を表示し、ユーザがユーザインターフェースを操作することで行う。
【００４３】
プリンタドライバは、ユーザインターフェースで入力された設定に従い、ＤＥＶＭＯＤＥ構造体４０３もしくはプリントチケット４０４のプリンタ４１６に依存した設定を変更する。印刷設定とは具体的に、出力する用紙サイズを「Ａ４」にする、両面印刷を行う、カラーと白黒を切り替える、給紙段を指定するなどといった設定のことを指す。プリントチケット４０４は印刷設定がＸＭＬ形式で記述されているので、ＸＰＳアプリ４０２がすべての設定値を直接変更して書き換えることは容易だが、従来のようにプリンタドライバのユーザインターフェースを使って設定変更してもかまわない。印刷設定は文書印刷のたびに作成するが、プリンタ４１６のオプション機器や、ユーザごとの環境設定など設定を保持しておきたいものは、プリンタドライバがオペレーティングシステムのレジストリデータベース４１７に保存する。印刷設定のユーザごとのデフォルト値はオペレーティングシステムのプリントマネージャ４１４が、レジストリデータベース４１７に保存する。最後に描画データの変換を行う。印刷設定が確定したら、ユーザはアプリケーションから印刷処理を実行する。ＧＤＩアプリ４０１から印刷する場合は、バージョン３プリンタドライバの形態を取るＧＤＩｔｏＸＰＳ変換モジュール４０８に描画データが送られ、ＸＰＳスプールファイル４０９が作成される。バージョン３プリンタドライバとは、Ｍｉｃｒｏｓｏｆｔ（登録商標）のＷｉｎｄｏｗｓ２０００（登録商標）以降に対応したプリンタドライバのことを指す。このときＧＤＩｔｏＸＰＳ変換モジュール４０８はコンフィギュレーションモジュール４０５を呼び出し、印刷設定をＤＥＶＭＯＤＥ構造体４０３からプリントチケット４０４に変換する。ＸＰＳアプリ４０２から印刷する場合は、ＸＰＳファイルをＸＰＳアプリ自身が生成するのと、オペレーティングシステムがＸＰＳアプリからの描画命令に応じてＸＰＳファイルを生成するのと２通りの方法がある。どちらの方法であっても、印刷の途中でＸＰＳスプールファイル４０９を生成する。このようにＸＰＳＤｒｖ印刷システムは、印刷時に必ずＸＰＳスプールファイル４０９を生成するのが特徴である。
【００４４】
ＸＰＳスプールファイル４０９が生成されたら、プリントフィルタパイプラインプロセスに処理が渡される。プリントフィルタパイプラインプロセスは複数のフィルタを通すことで印刷が行われる仕組みで、フィルタコンフィギュレーションファイル４１０でフィルタの数や順番を制御する。プリントフィルタパイプラインプロセスで動作するフィルタパイプラインマネージャはフィルタコンフィギュレーションファイル４１０に従って、この実施例では設定フィルタ４１１、レイアウトフィルタ４１２、レンダラフィルタ４１３の順に処理を行う。処理はＸＰＳスプールファイル４０９をフィルタに受け渡すことで行われ、フィルタがそれぞれＸＰＳスプールファイル４０９を加工し次のフィルタに渡していくことで処理が進む。最後にはプリンタが理解できるデータ言語であるプリンタ制御言語（以下、ＰＤＬ（Ｐａｇｅ Ｄｅｓｃｒｉｐｔｉｏｎ Ｌａｎｇｕａｇｅ）と略す）となって出力される。もちろんプリンタ４１６がＸＰＳスプールファイル４０９を直接読み込んで印刷できるＸＰＳダイレクトプリンタであれば、すべてのフィルタをスルーして印刷してもよい。設定フィルタ４１１ではプリントチケットを読み込んで印刷に必要なデータをプリントチケットに書き込む処理を、レイアウトフィルタ４１２では倍率の変更や製本の面付けレイアウトやスタンプなどレイアウトに関する処理を行う。レイアウトフィルタ４１２では、ＸＰＳスプールファイル４０９に含まれる印刷設定プリントチケット４０４に従って動作する。よって、たとえば面付けの設定がプリントチケット４０４に存在しないときは、レイアウトフィルタ４１２は何も動作せずスルーして、次のフィルタにＸＰＳスプールファイル４０９をそのまま渡す。最後のレンダラフィルタ４１３では、ＸＰＳスプールファイル４０９をレンダリングしてＰＤＬに変換する。ＰＤＬデータは印刷処理のスケジュール管理を行うプリントマネージャ４１４で管理され、キュー（待ち行列）に印刷ジョブが次々と登録される。プリンタ４１６が印刷できる状態になったら、キューに登録した順にＰＤＬデータをＩ／Ｏモニタ４１５を通して送信する。このようにして、アプリケーションからの印刷データをプリンタ言語に変換することがプリンタドライバの主な役目であり、実際の印刷処理が行われる。
【００４５】
次にＸＰＳＤｒｖ印刷システムのタンデムシステムにおける印刷を行うための動作フローとして、図１９のフローチャートを使って説明する。メインのプリンタドライバのフィルタはオペレーティングシステムからフィルタパイプラインマネージャを通じてＸＰＳスプールファイルが渡される（Ｓ１９０１）。図１２がＸＰＳＤｒｖ印刷システムのタンデムシステムにおけるシステム図である。メインドライバにはタンデムシステムにおける印刷を行うタンデムフィルタ１２０１が存在する。タンデムフィルタ１２０１は、メインドライバの印刷処理の最初に処理を行う。タンデムフィルタ１２０１は、プリンタデバイスからタンデムシステムとして接続されているモデル名を取得する（Ｓ１９０２）。これは実施形態１で記載した図１３のフローチャートと同じである。タンデムフィルタ１２０１は、タンデムシステムのモデル名が１つも取得できなかったらタンデムシステムではないと判断し（Ｓ１９０３）、通常の印刷処理に行く。タンデムフィルタ１２０１は、レジストリデータベース３０８からタンデムドライバの動作設定を取得し、サブドライバで印刷するかどうかを調べる（Ｓ１９０４）。サブドライバで印刷しない場合は、通常の印刷処理に行く。サブドライバで印刷するときは、タンデムフィルタ１２０１はまずジョブ識別ＩＤを作成する（Ｓ１９０５）。レジストリデータベース３０８からタンデムドライバの動作設定に含まれるジョブ識別ＩＤを取得し、ユーザによってジョブ識別ＩＤが入力されていればその値を使用する。ジョブ識別ＩＤが存在しなければ、タンデムフィルタ１２０１はＸＰＳスプールファイルに関連づけられている印刷ジョブＩＤをベースにしたＩＤを作成する。オペレーティングシステム３１０はＸＰＳスプールファイルを管理するためにそれぞれにＩＤをつけており、そのＩＤをタンデムフィルタ１２０１はフィルタパイプラインマネージャのインターフェースを経由して取得する。
【００４６】
タンデムフィルタ１２０１は、オペレーティングシステム３１０にインストールされているドライバからタンデムシステムのサブドライバを検索してリストを作る（Ｓ１９０６）。これは実施形態１で記載した図１８のフローチャートと同じである。タンデムフィルタ１２０１はサブドライバのリストから１つサブドライバを取り出し（Ｓ１９０７）、サブドライバの出力ポートをメインドライバの出力ポートに変更する（Ｓ１９０８）。このとき、タンデムフィルタ１２０１はサブドライバの出力ポートをサブドライバのリストに関連づけて保持しておき、印刷の終了処理で元のポートに戻すときに使用する。タンデムフィルタ１２０１は入力されたＸＰＳスプールファイルをそのままコピーし、補助記憶装置１０５に保存しておく（Ｓ１９０９）。タンデムフィルタ１２０１は、印刷設定プリントチケット４０４からサブドライバの印刷設定を取り出し、そこに作成したジョブ識別ＩＤをプロパティとして追加して、保存したＸＰＳスプールファイル４０９のコピーに保存する（Ｓ１９１０）。保存したＸＰＳスプールファイル４０９のコピーを使って、タンデムフィルタ１２０１はサブドライバに印刷を行う（Ｓ１９１１）。これはＸＰＳファイルをアプリケーション自身が作成して印刷している方式と同じなので、図１２にあるようにすぐにサブドライバのフィルタパイプラインマネージャに渡されて印刷が開始される。タンデムフィルタ１２０１は、サブドライバリストからすべてのサブドライバについて印刷開始処理を行ったら（Ｓ１９１２）、メインドライバ自身での印刷処理に移る。タンデムフィルタ１２０１はレジストリデータベース３０８からタンデムドライバの動作設定を取得し、メインドライバで印刷を行うかどうかを判定する（Ｓ１９１３）。メインドライバで印刷を行うときは、ＸＰＳスプールファイルの印刷設定プリントチケットにジョブ識別ＩＤを記載して、次のフィルタにＸＰＳスプールファイルを送る（Ｓ１９１４）。
【００４７】
このようにＸＰＳＤｒｖ印刷システムにおいても、タンデムシステム向けの印刷処理を、他の処理に影響を与えないタンデムフィルタを１つ追加するだけで実現できる。タンデムフィルタは機種に依存しているわけではないので、すべてのドライバにあらかじめ入れておけば、どのような組み合わせのタンデムシステムであっても、印刷処理を実現することができる。
【００４８】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2012168814.tif 000003
【図２】
2012168814.tif 000004
【図３】
2012168814.tif 000005
【図４】
2012168814.tif 000006
【図５】
2012168814.tif 000007
【図６】
2012168814.tif 000008
【図７】
2012168814.tif 000009
【図８】
2012168814.tif 000010
【図９】
2012168814.tif 000011
【図１０】
2012168814.tif 000012
【図１１】
2012168814.tif 000013
【図１２】
2012168814.tif 000014
【図１３】
2012168814.tif 000015
【図１４】
2012168814.tif 000016
【図１５】
2012168814.tif 000017
【図１６】
2012168814.tif 000018
【図１７】
2012168814.tif 000019
【図１８】
2012168814.tif 000020
【図１９】
2012168814.tif 000021
【図２０】
2012168814.tif 000022