(57)【要約】【課題】  少ない開発コストでプリンタドライバの機能を拡張することができる仮想プリンタドライバプログラムを提供する。【解決手段】  アプリケーション４０１からのページ開始要求を取得すると、仮想プリンタドライバ４５１のページ開始関数４５１ａは、実プリンタドライバ４５３の同一関数であるページ開始関数４５３ａに要求を伝える（図中（１））。実プリンタドライバ４５３のページ開始関数４５３ａからの完了の信号を待って、ページ開始関数４５１ａは、ページ先頭にビットマップを挿入するために、実プリンタドライバ４５３のビットマップ出力関数４５３ｄに要求を出力する(図中（２）)。その完了を待ってページ開始関数４５１ａは、アプリケーション４０１へ、処理の完了を返す（図中（３））。【選択図】        図５
2006209430.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションからの印刷要求を印刷機器が解釈できる言語に変換するプリンタドライバと、前記アプリケーションとの間の中継プログラムとして働く、仮想プリンタドライバ。
【請求項２】
アプリケーションからの印刷要求を印刷機器が解釈できる言語に変換するプリンタドライバ（以下、「実プリンタドライバ」という。）と、前記アプリケーションとの間でデータの中継が行なわれるようにコンピュータを動作させる、仮想プリンタドライバプログラムであって、
前記アプリケーション、または他の仮想プリンタドライバからの要求を受付ける受付ステップと、
前記受付けられた要求に基づいて、前記実プリンタドライバ、または他の仮想プリンタドライバに要求を出力する出力ステップとをコンピュータに実行させる、仮想プリンタドライバプログラム。
【請求項３】
前記出力ステップは、前記アプリケーション、または他の仮想プリンタドライバからの要求の少なくとも一部をそのまま前記実プリンタドライバ、または他の仮想プリンタドライバに転送する、請求項２に記載の仮想プリンタドライバプログラム。
【請求項４】
特定の機能を実現する際に、前記実プリンタドライバの機能を利用することを特徴とする、請求項２または３に記載の仮想プリンタドライバプログラム。
【請求項５】
他の仮想プリンタドライバプログラムと多段に組合されることで、複数の機能を組合わせた印刷を可能とする、請求項２〜４のいずれかに記載の仮想プリンタドライバプログラム。
【請求項６】
他の仮想プリンタドライバプログラムと並列に組合されることで、複数アプリケーションからの印刷要求に基づいて、前記実プリンタドライバへ要求を出力することが可能な、請求項２〜５のいずれかに記載の仮想プリンタドライバプログラム。
【請求項７】
外部プログラムと連携して動作することを特徴とする、請求項２〜６のいずれかに記載の仮想プリンタドライバプログラム。
【請求項８】
外部サーバの仮想プリンタドライバと組合せることが可能である、請求項２〜７のいずれかに記載の仮想プリンタドライバプログラム。
【請求項９】
請求項２〜７のいずれかに記載の仮想プリンタドライバプログラムを記録した、コンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は仮想プリンタドライバ、および仮想プリンタドライバプログラムに関し、特にアプリケーションからの印刷要求を印刷機器が解釈できる言語に変換するプリンタドライバ（以下、「実プリンタドライバ」という。）と、アプリケーションとの間の中継プログラムとして働く仮想プリンタドライバ、および仮想プリンタドライバプログラムに関する。
【背景技術】
【０００２】
従来より、ＰＣ（パーソナルコンピュータ）などのコンピュータと、ＭＦＰ（Multi Function Peripherals）などの画像形成装置（印刷機器）とをネットワークで接続した印刷システムが知られている。コンピュータにインストールされたアプリケーションから印刷要求が出されると、プリンタドライバは、それを画像形成装置が解釈できる言語に変換し、画像形成装置に送信する。これにより、画像形成装置でプリントが行なわれる。
【０００３】
図１５は、アプリケーションとプリンタドライバとの関係を示す図である。
【０００４】
プリンタドライバ４５３は、ページ開始関数４５３ａと、文字出力関数４５３ｂと、図形描画関数４５３ｃと、ビットマップ出力描画関数４５３ｄと、ページ終了関数４５３ｅとを備えている。
【０００５】
アプリケーション４０１が通常の印刷処理を行なう際には、（１）に示されるように、アプリケーションの各要求に対応するプリンタドライバ４５３の関数４５３ａ〜４５３ｅを利用することにより、印刷処理が行なわれる。
【０００６】
プリンタドライバ４５３は、アプリケーション４０１からの要求を、印刷機器１の解釈できる言語（ＰＤＬ：page description language（ページ記述言語））に変換し、印刷機器１に出力する（図中の（２））。
【０００７】
ページ開始要求、オブジェクト描画要求（文字出力要求、図形描画要求、ビットマップ出力要求など）、およびページ終了要求の一連のシーケンスを繰り返すことにより、印刷が行なわれる。
【０００８】
なお、プリントの技術に関して、以下の特許文献１には、アプリケーションプログラムの能力に左右されることなく、あらゆる出力デバイスから高品位の印刷を行なうために、中間データに操作を加える印刷データ統合処理システムが開示されている。
【０００９】
また特許文献２は、印刷結果のレイアウトを変更するために中間データに操作を加える印刷データレイアウト編集システムを開示している。
【００１０】
特許文献３は、合成を行なうために中間データを作成する印刷システムを開示している。
【特許文献１】特開２００２−２１９８２８号公報
【特許文献２】特開２００２−２２２１８４号公報
【特許文献３】特開平１１−１８４６５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
プリンタドライバに印刷データを加工する機能などの追加機能を備えさせる場合、例えばプリンタドライバに、印刷データ内に含まれるページへの地紋挿入機能や、ページの挿入機能を実装するためには、プリンタドライバ本体にそのような機能を実装する必要があった。
【００１２】
これにより、プリンタドライバ本体の開発担当者の作業の工数が多くなり、また、プリンタドライバ本体に変更を加えるため、市場へリリースするまでに評価工数が必要であるという問題があった。
【００１３】
また、プリンタドライバにはＰＣＬ、ＰｏｓｔＳｃｒｉｐｔ、ＧＤＩなど複数のタイプがあるため、全てのタイプのプリンタドライバに同一の機能を実装するのは困難であった。
【００１４】
この発明は上記問題点を解決するためになされたものであり、少ない開発コストでプリンタドライバの機能を拡張することができる仮想プリンタドライバプログラムを提供することを目的としている。
【課題を解決するための手段】
【００１５】
上記目的を達成するためこの発明のある局面に従うと、仮想プリンタドライバは、アプリケーションからの印刷要求を印刷機器が解釈できる言語に変換するプリンタドライバと、アプリケーションとの間の中継プログラムとして働くよう動作する。
【００１６】
この発明の他の局面に従うと、仮想プリンタドライバプログラムは、アプリケーションからの印刷要求を印刷機器が解釈できる言語に変換するプリンタドライバ（実プリンタドライバ）と、アプリケーションとの間でデータの中継が行なわれるようにコンピュータを動作させる仮想プリンタドライバプログラムであって、アプリケーション、または他の仮想プリンタドライバからの要求を受付ける受付ステップと、受付けられた要求に基づいて、実プリンタドライバ、または他の仮想プリンタドライバに要求を出力する出力ステップとをコンピュータに実行させる。
【００１７】
好ましくは出力ステップは、アプリケーション、または他の仮想プリンタドライバからの要求の少なくとも一部をそのまま実プリンタドライバ、または他の仮想プリンタドライバに転送する。
【００１８】
好ましくは仮想プリンタドライバプログラムは、特定の機能を実現する際に、実プリンタドライバの機能を利用することを特徴とする。
【００１９】
好ましくは仮想プリンタドライバプログラムは、他の仮想プリンタドライバプログラムと多段に組合されることで、複数の機能を組合わせた印刷を可能とする。
【００２０】
好ましくは仮想プリンタドライバプログラムは、他の仮想プリンタドライバプログラムと並列に組合されることで、複数アプリケーションからの印刷要求に基づいて、実プリンタドライバへ要求を出力することが可能である。
【００２１】
好ましくは仮想プリンタドライバプログラムは、外部プログラムと連携して動作することを特徴とする。
【００２２】
好ましくは仮想プリンタドライバプログラムは、外部サーバの仮想プリンタドライバと組合せることが可能である。
【００２３】
この発明の他の局面に従うと、コンピュータ読取可能な記録媒体は、上記いずれかに記載の仮想プリンタドライバプログラムを記録する。
【発明の効果】
【００２４】
この発明に従うと、仮想プリンタドライバは、実プリンタドライバとアプリケーションとの間の中継プログラムとして働くため、少ない開発コストでプリンタドライバの機能を拡張することができる。
【発明を実施するための最良の形態】
【００２５】
［第１の実施の形態］
図１は、本発明の第１の実施の形態における画像形成システムの構成を示す図である。
【００２６】
図を参照して、画像形成システムは、画像形成装置の一種であるＭＦＰ（Multi Function Peripheral）１と、複数のＰＣ２ａ〜２ｃとから構成される。各機器は、それぞれネットワークに接続される。
【００２７】
このような構成により、ＭＰＦ１は、ネットワーク上で複数のユーザから共有される。
【００２８】
図２は、図１のＰＣ２ａ〜２ｃの１つの構成を示すブロック図である。
【００２９】
図を参照してＰＣは、装置全体の制御を行なうＣＰＵ３０１と、操作画面等を表示するディスプレイ部３０３と、ＭＦＰ１に送信するデータなどを記憶する記憶部３０５と、キーボードやマウスなどを含む操作部３０７と、ネットワークとの間でデータの送受信を行なうネットワークＩ／Ｆ部３０９とから構成される。
【００３０】
図３は、図１のＭＦＰ１の構成を示すブロック図である。
【００３１】
図を参照してＭＦＰ１は、原稿の読取を行なうスキャン部２０１と、装置全体の制御を行なう制御部２０３と、データを作成するデータ作成部２０５と、ネットワークを介したデータの送受信を行なうデータ送受信部２０７およびネットワークＩ／Ｆ部２１１と、プリントエンジンなどを備え用紙に画像を記録する印刷出力部２１３と、データを記憶する記憶部２１５と、ユーザからの操作を受付ける操作パネル部２０９とを備えている。
【００３２】
図４は、本発明の第１の実施の形態において用いられる仮想プリンタドライバの構成および機能を説明するための図である。
【００３３】
ここでは、仮想プリンタドライバに対比させて、図１５に示した、アプリケーションからの印刷要求を印刷機器が解釈できる言語に変換するプリンタドライバを実プリンタドライバ４５３と称している。
【００３４】
実プリンタドライバ４５３は、図１５のプリンタドライバと同様の機能を有し、ページ開始関数４５３ａと、文字出力関数４５３ｂと、図形描画関数４５３ｃと、ビットマップ出力描画関数４５３ｄと、ページ終了関数４５３ｅとを備えている。
【００３５】
仮想プリンタドライバ４５１も、ページ開始関数４５１ａと、文字出力関数４５１ｂと、図形描画関数４５１ｃと、ビットマップ出力描画関数４５１ｄと、ページ終了関数４５１ｅとを備えている。仮想プリンタドライバ４５１は、アプリケーション４０１と実プリンタドライバ４５３との間に位置し、両者の間でデータの授受を中継する。すなわち、仮想プリンタドライバ４５１は、アプリケーション４０１の要求を実プリンタドライバ４５３へ中継する。
【００３６】
仮想プリンタドライバ４５１、実プリンタドライバ４５３、およびアプリケーション４０１は、それぞれＰＣの記憶部３０５に記憶され、ＣＰＵ３０１により読出されることによりコンピュータを動作させるプログラムである。
【００３７】
ここでは、仮想プリンタドライバ４５１は、アプリケーションの要求（図中（１））をそのまま実プリンタドライバ４５３の同一関数に転送する（図中（２））。実プリンタドライバ４５３の戻りは、そのままアプリケーション４０１に転送される。
【００３８】
仮想プリンタドライバ４５１をアプリケーション４０１と実プリンタドライバ４５３との間に挿入した図４の状態で、アプリケーション４０１、実プリンタドライバ４５３、および印刷機器１の動作は、図１５での動作と全く同じである。
【００３９】
言い換えれば、アプリケーション４０１が利用するプリンタドライバが、実プリンタドライバ４５３から仮想プリンタドライバ４５１に代わる以外、本実施の形態ではシステムに影響を与えない。すなわち、図４のシステムにおいても、図１５と同一の印刷結果が得られる。
【００４０】
すなわち、実プリンタドライバ４５３は、アプリケーション４０１からの要求を、仮想プリンタドライバ４５１を介して取得し、それを印刷機器１の解釈できる言語（ＰＤＬ：page description language（ページ記述言語））に変換し、印刷機器１に出力する。
【００４１】
ページ開始要求、オブジェクト描画要求（文字出力要求、図形描画要求、ビットマップ出力要求など）、およびページ終了要求の一連のシーケンスを繰り返すことにより、印刷が行なわれる。
【００４２】
ここに、仮想プリンタドライバ４５１に追加機能を実装する場合を説明する。
【００４３】
図５は、追加機能を実装した仮想プリンタドライバ４５１が挿入された場合のシステムの動作を示す図である。
【００４４】
この例では、仮想プリンタドライバ４５１は、印刷するページの先頭にビットマップ（たとえば地紋）を挿入する機能を有している。
【００４５】
まず、アプリケーション４０１からのページ開始要求を取得すると、仮想プリンタドライバ４５１のページ開始関数４５１ａは、実プリンタドライバ４５３の同一関数であるページ開始関数４５３ａに要求を伝える（図中（１））。
【００４６】
実プリンタドライバ４５３のページ開始関数４５３ａからの完了の信号を待って、仮想プリンタドライバ４５１のページ開始関数４５１ａは、追加機能を実行する。
【００４７】
この例ではページ先頭にビットマップを挿入するために、仮想プリンタドライバ４５１のページ開始関数４５１ａは、実プリンタドライバ４５３のビットマップ出力関数４５３ｄに要求を出力する(図中（２）)。その完了を待ってページ開始関数４５１ａは、アプリケーション４０１へ、処理の完了を返す（図中（３））。
【００４８】
このような処理により、アプリケーションや、実プリンタドライバに変更を加えずに、追加機能の実現が可能である。
【００４９】
［第２の実施の形態］
図６は、第２の実施の形態における、追加機能を実装した仮想プリンタドライバが２つ挿入された場合のシステムの動作を示す図である。
【００５０】
図６に示されるように、この実施の形態では仮想プリンタドライバを多段に重ねている。
【００５１】
ここでは第１の実施の形態と同様の、ページ開始時にビットマップを出力する追加機能Ａを持つ仮想プリンタドライバＡ４５１と、図形描画時に文字を印刷する追加機能Ｂを持つ仮想プリンタドライバＢ４５２とを重ねた構成を例に挙げる。
【００５２】
仮想プリンタドライバＡ４５１は、実プリンタドライバ４５３へではなく、仮想プリンタドライバＢ４５２の同一関数に要求を転送する。
【００５３】
仮想プリンタドライバＢ４５２は、実プリンタドライバ４５３の同一関数に要求を転送する。
【００５４】
仮想プリンタドライバＡ４５１の追加機能Ａは、ビットマップ出力を仮想プリンタドライバＢ４５２のビットマップ出力関数４５２ｄに要求することで実行される。仮想プリンタドライバＢ４５２は、実プリンタドライバ４５３の同一関数に要求を転送することで、ビットマップの描画を行なう。
【００５５】
追加機能Ｂは、実プリンタドライバ４５３の文字出力関数４５３ｂに、文字出力の要求を出力することにより実行される。文字出力関数４５３ｂからの完了の返答を待って、図形描画関数４５２ｃが完了した旨を図形描画関数４５１ｃに返すことは、追加機能Ａの動作と同様である。このような動作により、ページに文字を挿入する機能などが追加される。
【００５６】
以上のように２つの仮想プリンタドライバを重ねることにより、複数の機能を同時に実現することができる。また、図６に示されるように、多段に重ねられた仮想プリンタドライバはその順序を入れ替えても動作するという特徴を有している。
【００５７】
［第３の実施の形態］
図７は、第３の実施の形態における、外部プログラムと連携を行なう仮想プリンタドライバが挿入された場合のシステムの動作を示す図である。
【００５８】
ここでは、仮想プリンタドライバの追加機能が外部プログラムと連携する例として、外部プログラム４６１に登録されたビットマップを、外部プログラム４６１に登録されたページに印刷する例を示す。
【００５９】
仮想プリンタドライバ４５１のページ開始関数４５１ａは、実プリンタドライバ４５３の同一関数に要求を転送した後、外部プログラム４６１に問合わせを行なうことで、機能を実行するページ番号を取得する。
【００６０】
取得されたページ番号が現在処理しているページ番号と合致すれば、追加機能が実行される。すなわち、外部プログラム４６１からビットマップが取得され、追加機能であるビットマップの描画が行なわれる（図中（１））。
【００６１】
また、機能を実行するページ番号と現在処理しているページ番号との合致の判定は、外部プログラム４６１が行なうようにしてもよい。すなわち、ページ開始関数４５１ａは、外部プログラム４６１に対してページ番号を引数として追加機能を実行するか否か問い合わせをする。外部プログラム４６１は、登録されたページであれば印刷すべきビットマップを仮想プリンタドライバ４５１に返し、仮想プリンタドライバ４５１は追加機能を実行する。登録されたページでなければ、外部プログラムは、処理しない旨を返答する。 
【００６２】
本実施の形態では、例えば文書の３ページ目など特定のページにコピー禁止を示すウォーターマークなどを挿入することができる。また、外部プログラムにデータを記憶させてそれを呼出したり、外部プログラムで判断を行なうなどの処理を実行することができるため、仮想プリンタドライバの汎用性が高まる。
【００６３】
外部プログラムの機能としては、ビットマップのプリントの他、プリント履歴のログを取りサーバに蓄積させる処理、条件に基づいた複雑な地紋を作成する処理などを行なうこととしてもよい。
【００６４】
［第４の実施の形態］
図８は、第４の実施の形態における、仮想プリンタドライバが並列に組合されて挿入された場合のシステムの動作を示す図である。
【００６５】
ここでは、並列に組合された仮想プリンタドライバＡ４７１およびＢ４７２によって、アプリケーションＡ４１１およびＢ４１２から出力される２つのドキュメントを印刷することとしている。
【００６６】
また印刷においては、外部プログラム４６３に登録された合成シーケンスどおりにドキュメントが合成される。
【００６７】
アプリケーションＡ４１１およびＢ４１２は、それぞれ仮想プリンタドライバＡ４７１およびＢ４７２を使って文書の印刷を行う。仮想プリンタドライバＡ４７１およびＢ４７２は並列に動作し、同一の実プリンタドライバ４５３に要求を転送する。このとき、仮想プリンタドライバＡ４７１およびＢ４７２は、外部プログラム４６３に各ページの印刷を行うか否かを問合わせながら動作する。
【００６８】
まず、仮想プリンタドライバＡ４７１は、外部プログラム４６３に、アプリケーションＡ４１１が出力する文書のＰａｇｅ１（Ｐ１）の印刷可否を問合わせる。外部プログラム４６３は、登録された合成シーケンスの先頭がアプリケーションＡ４１１のＰ１からＰ５であることを確認し、印刷可である旨を返す。
【００６９】
この手順で、仮想プリンタドライバＡ４７１は、アプリケーションＡ４１１の文書のＰ１からＰ５の印刷を行なう。
【００７０】
仮想プリンタドライバＡ４７１は、外部プログラム４６３に、アプリケーションＡ４１１が出力する文書のＰａｇｅ６（Ｐ６）の印刷可否を問合わせる。外部プログラム４６３は、登録された合成シーケンスにおいて、アプリケーションＡ４１１の文書のＰ６の印刷の前に、アプリケーションＢ４１２の文書のＰ２を印刷する必要があることを確認し、印刷を許可しない旨を返す。これにより、アプリケーションＡ４１１の文書のＰ６の印刷は停止される。
【００７１】
この間、外部プログラム４６３は、仮想プリンタドライバＢ４７２の問合わせに対し、合成シーケンスにおいて、アプリケーションＢ４１２の文書の印刷は、Ｐ２から行なう必要があることを確認する。これにより、アプリケーションＢ４１２の文書のＰ１の印刷可否の問合わせに対しては、破棄すべき旨を返す。
【００７２】
このとき、仮想プリンタドライバＢ４７２は、Ｐ１のアプリケーションＢ４１２からの要求を、実プリンタドライバ４５３に転送せず、ダミーの完了報告のみをアプリケーションＢ４１２へ返す。
【００７３】
次に仮想プリンタドライバＢ４７２は、外部プログラム４６３へＰ２の実行可否の問合わせをする。
【００７４】
アプリケーションＡ４１１の文書のＰ５までの印刷が完了するまで、否である旨の返答が行なわれるため、それまで仮想プリンタドライバＢ４７２は印刷を停止する。
【００７５】
仮想プリンタドライバＡ４１１によるＰ５の印刷完了後、仮想プリンタドライバＢ４７２によるＰ２の印刷可否の問合わせに対する返答が可になる。そのため、ここで仮想プリンタドライバＢ４７２は、実プリンタドライバ４５３へＰ２のデータの転送を開始する。仮想プリンタドライバＢ４７２の残りページは、合成シーケンスに登録されていないので外部プログラム４６３から破棄する旨が返り、Ｐ１と同様に破棄される。
【００７６】
仮想プリンタドライバＢ４７２のＰ２の処理完了時点で、仮想プリンタドライバＡ４７１による外部プログラム４６３へのＰ６の印刷可否の問合わせの回答が可になる。そのためここで、Ｐ６のアプリケーションＡ４１１からの要求を実プリンタドライバ４５３に転送する。その後、Ｐ７からＰ１０までの問合わせが可として返ってくるので、アプリケーションＡ４１１からの要求の転送を実行し、Ｐ１１以降のページは、外部プログラム４６３の指示により破棄することとなる。
【００７７】
以上のような処理により、各アプリケーションの内容を変えなくても、プリンタドライバとして所望の仮想プリンタドライバを選択するだけで、指定された合成シーケンスに従った文書の印刷が実行される。
【００７８】
図９は、外部プログラム４６３が記録するグローバル変数を示す図である。
【００７９】
図を参照して、グローバル変数として、現在の印刷文書のページ番号と、アプリケーションＡの印刷の開始フラグ（初期状態ではＦＡＬＳＥ）と、アプリケーションＢの印刷の開始フラグ（初期状態ではＦＡＬＳＥ）と、合成シーケンスが記録される。
【００８０】
合成シーケンスとしては、印刷文書（最終的に出力される文書）のページ番号に合わせて、印刷指示（どのアプリケーションのどのページを印刷するか）が記録されている。
【００８１】
図１０は、仮想プリンタドライバの呼出しに対して外部プログラムが行なう初期化処理を示すフローチャートである。
【００８２】
図を参照して、ステップＳ１０１で、グローバル変数内の現在の印刷文書ページ番号に「１」を代入する。ステップＳ１０３で、呼出しを行なった仮想プリンタドライバに対応するアプリケーションの開始フラグを「ＴＲＵＥ」とする。
【００８３】
ステップＳ１０５で、他のアプリケーションの開始フラグ（複数ある場合には全てのアプリケーションの開始フラグ）が「ＴＲＵＥ」となっているかを判定し、ＹＥＳであれば初期化処理を終了する。
【００８４】
また、ステップＳ１０５でＮＯであれば、ステップＳ１０７でＳｌｅｅｐ処理を行なう。これは、他の仮想プリンタドライバがそれに対応する開始フラグをＴＲＵＥにし、全ての開始フラグがＴＲＵＥとなるまでＷａｉｔ（待機）する処理である。
【００８５】
なお、外部プログラムは、複数の仮想プリンタドライバのそれぞれからの呼出しに対して、別スタック上で動作することによって、全ての呼出しに対して独立に動作する。ただし、グローバル変数は複数からの問合わせに対して共用となる。
【００８６】
図１１は、仮想プリンタドライバの問合せに対して外部プログラムが行なう処理を示すフローチャートである。
【００８７】
図を参照して問合せにおいては、文書のページ番号とアプリケーション名とが引数とされる。また、ローカル変数に完了コードが定義される。
【００８８】
ステップＳ２０１で、合成シーケンスに、引数の文書のページ番号とアプリケーション名との組合せが登録されているかが判定される。ＹＥＳであれば、ステップＳ２０３で、グローバル変数（図９）内の、現在の印刷文書ページ番号を読出し、そのページ番号に対応する合成シーケンス内の印刷指示を取得する。
【００８９】
ステップＳ２０５で、取得した印刷指示に含まれる文書のページ番号とアプリケーション名の組合せが、引数の文書のページ番号とアプリケーション名の組合せに合致するかが判定される。ＹＥＳであれば、ステップＳ２０７で、グローバル変数内の現在の印刷文書ページ番号を１増加させ、ステップＳ２０９で完了コードを「印刷可」として仮想プリンタドライバに返し、処理を終了する。
【００９０】
ステップＳ２０１でＮＯであれば、ステップＳ２１３で完了コードを「ページ破棄」として仮想プリンタドライバに返し、処理を終了する。
【００９１】
ステップＳ２０５でＮＯであれば、ステップＳ２１１でＳｌｅｅｐ処理を行ない、ステップＳ２０３に戻る。ここに、Ｓｌｅｅｐ処理とは、他のアプリケーションが、「現在の印刷文書ページ番号」の値を増加させ、そのページ番号が合成シーケンス内の対応するアプリケーションを指すまでＷａｉｔする処理である。
【００９２】
図１２は、仮想プリンタドライバの呼出しに対して外部プログラムが行なう終了処理を示すフローチャートである。
【００９３】
図を参照して、ステップＳ３０１で、呼出しを行なった仮想プリンタドライバに対応するアプリケーションの開始フラグを「ＦＡＬＳＥ」とする。
【００９４】
このようにして、本実施の形態では、外部プログラムに記録された合成シーケンスに応じてプリント内容を制御することができる。また、アプリケーションは、プリンタドライバに通常の処理通りの情報を送ればよいため、特にアプリケーションに改変を加える必要はない。
【００９５】
［第５の実施の形態］
図１３は、本発明の第５実施の形態における画像形成システムの構成を示す図である。
【００９６】
図を参照して、本システムは、ＰＣ２ａおよびＭＦＰ１を含むクライアントシステム５と、外部サーバ３ａ，３ｂとを備えている。クライアントシステム５と、外部サーバ３ａ，３ｂとは、ここではインターネットＩなどの通信回線を通じて接続されているものとする。
【００９７】
外部サーバ３ａ，３ｂは、仮想プリンタドライバを備えており、クライアントシステム５内に含まれるＰＣ２ａで生じたプリントジョブを、ＰＣ２ａに含まれる仮想プリンタドライバを介して受信し、処理を行ない、それを仮想プリンタドライバを介して、ＰＣ２ａに返信する。
【００９８】
ここで、外部サーバ３ａ，３ｂで行なわれる処理としては、画像の加工、電子透かしの挿入、タイムスタンプの付与などが考えられる。また、外部サーバ３ａ，３ｂで処理が行なわれる場合に、ジョブを送信したクライアントやＰＣを特定し、それに併せて課金を行なうようにしてもよい。
【００９９】
図１４は、第５の実施の形態における、外部サーバの仮想プリンタドライバを利用するシステムの動作を示す図である。
【０１００】
クライアントシステム５に含まれるＰＣ２ａには、アプリケーション４０１と、外部中継用仮想プリンタドライバ（ＳＯＡＰ（Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）  ＯＵＴ）４８１と、外部中継用仮想プリンタドライバ（ＳＯＡＰ  ＩＮ）４８３と、実プリンタドライバ４８５とがプログラムとして記録されている。
【０１０１】
また、外部サーバ３ａには、外部中継用仮想プリンタドライバ（ＳＯＡＰ  ＩＮ）４８７と、仮想プリンタドライバ４８９と、外部中継用仮想プリンタドライバ（ＳＯＡＰ  ＯＵＴ）４９１とがプログラムとして記録されている。
【０１０２】
外部中継用仮想プリンタドライバ（ＳＯＡＰ  ＯＵＴ）４８１，４９１は、関数への要求をＳＯＡＰ形式のデータに変換し送信し、ＳＯＡＰ形式の関数の完了を関数の戻り値に変換する。
【０１０３】
外部中継用仮想プリンタドライバ（ＳＯＡＰ  ＩＮ）４８３，４８７は、ＳＯＡＰ形式の要求を関数への要求に変換し、関数の完了をＳＯＡＰ形式の戻り値に変換する
図１４に示される関数の配置例では、外部サーバ３ａ上の仮想プリンタドライバ４８９は、関数Ａに要求を受けたときに、外部中継用仮想プリンタドライバ（ＳＯＡＰ  ＯＵＴ）４９１の関数Ｂに要求を出力することにより、特定の処理を実現する追加機能を持つ。
【０１０４】
図１４のように、外部中継用仮想プリンタドライバ（ＳＯＡＰ  ＯＵＴ）４８１，４９１から外部中継用仮想プリンタドライバ（ＳＯＡＰ  ＩＮ）４８７，４８３への要求の転送がＳＯＡＰにより行なわれる。
【０１０５】
外部中継用仮想プリンタドライバ（ＳＯＡＰ  ＩＮ）４８７，４８３は、ＳＯＡＰ形式の要求を関数への要求へ変換し、外部中継用仮想プリンタドライバ（ＳＯＡＰ  ＯＵＴ）４８１，４９１に、ＳＯＡＰにより戻り値を転送する。
【０１０６】
外部中継用仮想プリンタドライバ（ＳＯＡＰ  ＯＵＴ）４８１，４９１は、ＳＯＡＰによる戻り値を、関数の戻りに変換する。
【０１０７】
このような、外部中継用仮想プリンタドライバによる動作を、クライアントと外部サーバとの双方で行なう。
【０１０８】
またここでは、外部サーバ３ａの仮想プリンタドライバ４８９は、第１の実施の形態における仮想プリンタドライバ４５１と同様の動作を行なう。このような構成により、クライアントは外部サーバの仮想プリンタドライバに実装されている追加機能を利用することができる。
【０１０９】
［実施の形態における効果］
以上のように本発明の実施の形態によると、プリンタドライバとアプリケーションソフトウェアの中継プログラムとしての仮想プリンタドライバを提供することができ、また、その仮想プリンタドライバに追加機能を実装することができる。
【０１１０】
これにより従来の印刷システムのように、追加機能をユーザに提供する際に、実プリンタドライバに追加機能を実装することが不要となり、開発担当者に負担をかける問題が解消される。
【０１１１】
すなわち、実施の形態によると、実プリンタドライバとアプリケーションの中継プログラムとしての仮想プリンタドライバを、実プリンタドライバとアプリケーションの間に挿入することにより、実プリンタドライバに変更を施さなくても、仮想プリンタドライバに追加機能を実装することで追加機能を実現することが可能となる。これにより、ユーザに容易に追加機能を提供できるという効果がある。
【０１１２】
さらに、仮想プリンタドライバは、多段または並列に使用することができるため、複合機能を容易にユーザに提供することができる。
【０１１３】
なお、上述の実施の形態におけるフローチャートやブロック図での処理を実行するプログラムを提供することもできるし、そのプログラムをＣＤ−ＲＯＭ、フレキシブルディスク、ハードディスク、ＲＯＭ、ＲＡＭ、メモリカードなどの記録媒体に記録してユーザに提供することにしてもよい。また、プログラムはインターネットなどの通信回線を介して、装置にダウンロードするようにしてもよい。
【０１１４】
なお、上述の実施の形態においてはＭＦＰに接続される機器の例として、ＰＣを挙げたが、その他機器としては、モバイル端末、携帯電話などを用いることができる。さらに、画像形成装置として、印刷機能を備えたものであれば、プリンタ、コピー機、ファクシミリ、およびそれらの複合機などを用いることができる。
【０１１５】
なお、上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１１６】
【図１】本発明の実施の形態の１つにおける画像形成システムの構成を示す図である。
【図２】図１のＰＣ２ａ〜２ｃの１つの構成を示すブロック図である。
【図３】図１のＭＦＰ１の構成を示すブロック図である。
【図４】本発明の第１の実施の形態における仮想プリンタドライバの構成および機能を説明するための図である。
【図５】追加機能を実装した仮想プリンタドライバ４５１が挿入された場合のシステムの動作を示す図である。
【図６】第２の実施の形態における、追加機能を実装した仮想プリンタドライバが２つ挿入された場合のシステムの動作を示す図である。
【図７】第３の実施の形態における、外部プログラムと連携を行なう仮想プリンタドライバが挿入された場合のシステムの動作を示す図である。
【図８】第４の実施の形態における、仮想プリンタドライバが並列に組合されて挿入された場合のシステムの動作を示す図である。
【図９】外部プログラム４６３が記録するグローバル変数を示す図である。
【図１０】仮想プリンタドライバの呼出しに対して外部プログラムが行なう初期化処理を示すフローチャートである。
【図１１】仮想プリンタドライバの問合せに対して外部プログラムが行なう処理を示すフローチャートである。
【図１２】仮想プリンタドライバの呼出しに対して外部プログラムが行なう終了処理を示すフローチャートである。
【図１３】本発明の第５実施の形態における画像形成システムの構成を示す図である。
【図１４】第５の実施の形態における、外部サーバの仮想プリンタドライバを利用するシステムの動作を示す図である。
【図１５】アプリケーションとプリンタドライバとの関係を示す図である。
【符号の説明】
【０１１７】
１  ＭＦＰ、２ａ〜２ｃ  ＰＣ、２０１  スキャン部、２０３  制御部、２０５  データ作成部、２０７  データ送受信部、２０９  操作パネル部、２１１  ネットワークＩ／Ｆ部、２１３  印刷出力部、２１５  記憶部、３０１  ＣＰＵ、３０３  ディスプレイ部、３０５  記憶部、３０７  操作部、３０９  ネットワークＩ／Ｆ部、４５１，４５２，４７１，４７２，４８１，４８３，４８７，４８９，４９１  仮想プリンタドライバ、４０１，４１１，４１２  アプリケーション、４５３，４８５  実プリンタドライバ、４６１，４６３  外部プログラム。
【図１】
2006209430.tif 000003
【図２】
2006209430.tif 000004
【図３】
2006209430.tif 000005
【図４】
2006209430.tif 000006
【図５】
2006209430.tif 000007
【図６】
2006209430.tif 000008
【図７】
2006209430.tif 000009
【図８】
2006209430.tif 000010
【図９】
2006209430.tif 000011
【図１０】
2006209430.tif 000012
【図１１】
2006209430.tif 000013
【図１２】
2006209430.tif 000014
【図１３】
2006209430.tif 000015
【図１４】
2006209430.tif 000016
【図１５】
2006209430.tif 000017