(57)【要約】【課題】出力先のドライバがサポートしていない機能についても、ユーザの印刷設定にしたがってプルプリントを行う。【解決手段】ステップＳＣ１５０３において、実際に出力するプリンタドライバが描画処理に関連する項目の機能をサポートしているかどうかを問い合わせる。ステップＳＣ１５０４における問い合わせの結果、プリンタドライバがその機能をサポートしていない場合、ステップＳＣ１５０６において、印刷データを加工する処理を行う。一方、ステップＳＣ１５０４においてプリンタドライバがその機能をサポートしている場合、ステップＳＣ１５０５において、その機能に該当する印刷設定が有効かどうかを判定する。該当する印刷設定が無効であった場合、ステップＳＣ１５０６に進み、印刷データを加工する処理を行う。【選択図】  図１５
2013050935.tif 000002
【特許請求の範囲】
【請求項１】
印刷設定情報が設定された中間形式の印刷ジョブに基づいて印刷データを生成するドライバを備える印刷制御装置であって、
前記ドライバが前記印刷設定情報のうち所定の機能をサポートしているか否かを判定する機能判定手段と、
前記ドライバが前記機能をサポートしていないと判定された場合、前記機能に関して前記中間形式の印刷ジョブを加工し、前記ドライバが前記機能をサポートしていると判定された場合、前記機能に関する処理を前記ドライバに実行させるために前記中間形式の印刷ジョブを前記ドライバに送信する加工手段と
を備えたことを特徴とする印刷制御装置。
【請求項２】
前記機能に該当する前記ドライバの印刷設定が有効であるかどうかを判定する設定判定手段をさらに備え、
前記印刷設定が無効であると判定された場合、前記加工手段が前記機能に関して前記中間形式の印刷ジョブを加工することを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
前記加工手段が前記中間形式の印刷ジョブを加工した場合、前記ドライバの前記機能に該当する印刷設定を無効にする無効手段をさらに備えたことを特徴とする請求項１または２のいずれかに記載の印刷制御装置。
【請求項４】
前記機能が拡大縮小印刷機能である場合、前記加工手段は、印刷する用紙が定形用紙サイズであるかそれ以外の用紙サイズであるかに基づいて、異なる処理により描画領域を算出することを特徴とする請求項１に記載の印刷制御装置。
【請求項５】
前記機能が拡大縮小印刷機能である場合、拡大または縮小後の用紙のサイズを前記ドライバがサポートしているかどうかを判定する用紙判定手段を備え、
拡大または縮小後の用紙のサイズを前記ドライバがサポートしていない場合、前記加工手段が前記中間形式の印刷ジョブの描画データを拡大または縮小する処理を行うことを特徴とする請求項１に記載の印刷制御装置。
【請求項６】
前記機能が描画処理に関する機能であることを特徴とする請求項１に記載の印刷制御装置。
【請求項７】
前記描画処理に関する機能は、カラー／モノクロ印刷機能、集約印刷機能、または拡大縮小印刷機能のいずれかであることを特徴とする請求項７記載の印刷制御装置。
【請求項８】
印刷設定情報が設定された中間形式の印刷ジョブに基づいて印刷データを生成するドライバを備える印刷制御装置にて実行される印刷制御プログラムであって、
前記ドライバが前記印刷設定情報のうち所定の機能をサポートしているか否かを判定する機能判定ステップと、
前記ドライバが前記機能をサポートしていないと判定された場合、前記機能に関して前記中間形式の印刷ジョブを加工し、前記ドライバが前記機能をサポートしていると判定された場合、前記機能に関する処理を前記ドライバに実行させるために前記中間形式の印刷ジョブを前記ドライバに送信する加工ステップとをコンピュータに実行させることを特徴とする印刷制御プログラム。
【請求項９】
前記機能に該当する前記ドライバの印刷設定が有効であるかどうかを判定する設定判定ステップをさらに前記コンピュータに実行させ、
前記印刷設定が無効であると判定された場合、前記加工手段が前記機能に関して前記中間形式の印刷ジョブを加工することを特徴とする請求項８に記載の印刷制御プログラム。
【請求項１０】
前記加工ステップにおいて前記中間形式の印刷ジョブを加工した場合、前記ドライバの前記機能に該当する印刷設定を無効にする無効ステップをさらに前記コンピュータに実行させることを特徴とする請求項８または９のいずれかに記載の印刷制御プログラム。
【請求項１１】
前記機能が拡大縮小印刷機能である場合、前記加工ステップにおいて、印刷する用紙が定形用紙サイズであるかそれ以外の用紙サイズであるかに基づいて、異なる処理により描画領域を算出することを特徴とする請求項８に記載の印刷制御プログラム。
【請求項１２】
前記機能が拡大縮小印刷機能である場合、拡大または縮小後の用紙のサイズを前記ドライバがサポートしているかどうかを判定する用紙判定ステップをさらに前記コンピュータに実行させ、
拡大または縮小後の用紙のサイズを前記ドライバがサポートしていない場合、前記加工ステップにて前記中間形式の印刷ジョブの描画データを拡大または縮小する処理を行うことを特徴とする請求項８に記載の印刷制御プログラム。
【請求項１３】
前記機能が描画処理に関する機能であることを特徴とする請求項８に記載の印刷制御プログラム。
【請求項１４】
前記描画処理に関する機能は、カラー／モノクロ印刷機能、集約印刷機能、または拡大縮小印刷機能のいずれかであることを特徴とする請求項１３記載の印刷制御プログラム。
【請求項１５】
印刷設定情報が設定された中間形式の印刷ジョブに基づいて印刷データを生成するドライバを備える印刷制御装置のための印刷制御方法であって、
前記ドライバが前記印刷設定情報のうち所定の機能をサポートしているか否かを判定する機能判定ステップと、
前記ドライバが前記機能をサポートしていないと判定された場合、前記機能に関して前記中間形式の印刷ジョブを加工し、前記ドライバが前記機能をサポートしていると判定された場合、前記機能に関する処理を前記ドライバに実行させるために前記中間形式の印刷ジョブを前記ドライバに送信する加工ステップと
を含むことを特徴とする印刷制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御装置、印刷制御プログラムおよび印刷制御方法に関する。
【背景技術】
【０００２】
従来、ユーザが印刷装置からサーバ上に一時蓄積された印刷データに対して行った印刷要求に応じて、当該印刷装置から印刷データの出力を可能にする所謂「プルプリント」の印刷システムが提案されている（例えば、特許文献１参照）。このプルプリントの印刷システムによれば、ユーザはアプリケーションからの印刷時に特定の印刷装置への出力ではなく、所望の印刷装置からの印刷データ出力を行うことが可能である。また、このプルプリントの印刷システムでは、クライアント上で動作するプリンタドライバが印刷データを作成し、作成した印刷データをサーバに送信している。
【０００３】
また、プルプリントの印刷システムではないが、クライアント／サーバ環境で異なるプリンタドライバを使用する印刷環境において以下のようなシステムが提案されている。例えば、この印刷システムではクライアント上で動作するプリンタドライバがサーバ側で必要となる印刷設定情報が付加されたスプールファイルをサーバに転送する。スプールファイルを受信したサーバ側のスプール連携部は、スプールファイルから付加された印刷設定情報を参照し、この情報を印刷データに反映する（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許４０３３８５７
【特許文献２】特許４１１９８６８
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の印刷システムでは、ユーザが印刷装置からサーバ上に一時蓄積された印刷データに対して印刷要求を行う際に、印刷設定情報の変更を指示することが困難である。サーバ上に一時蓄積される印刷データの形式は、印刷装置に依存したＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）であるため、印刷設定変更の指示通りにＰＤＬを編集しなければならないが、この編集は難しい。
【０００６】
具体的な例として以下に示す。ユーザが印刷装置からサーバ上に一時蓄積された印刷データに対して印刷要求を行う際に、４ページを１ページに割り付けるような印刷設定情報（以後、４ｉｎ１と称する）を指示したとする。このとき、サーバ上に一時蓄積される印刷データ、即ちＰＤＬを４ｉｎ１に適合するように変更する必要がある。もし、ＰＤＬが印刷装置の解像度に依存するラスター形式であるなら、４ｉｎ１を実現するためにラスター画像を縮小することになるので、細線の消失等、品質上の様々な問題が生じる。
【０００７】
また、ＰＤＬは多種多様な仕様が存在するので、それら複数のＰＤＬに対応することは多大な労力を必要とする。そもそも、ＰＤＬの仕様が非公開であったら、ＰＤＬを変更することもできない。さらに、ＰＤＬが変更できないということは、すなわちユーザが印刷データをサーバに蓄積するための指示を行った時点で機種が限定されてしまい、プルプリントをする時に自由に機種を変更できないという課題もある。
【０００８】
これらの課題を解決するために、例えば、サーバ側でデータを再編集できるようなプリントシステムが望まれる。しかし、クライアント上のプリンタドライバでユーザに指定された印刷機能を必ずしもサーバ側のプリンタドライバがサポートしているとは限らない。  例えば、クライアント上のアプリケーションで設定された原稿用紙サイズを実際に出力するプリンタに設置してある用紙に合わせて拡大縮小する機能が該当する。
【０００９】
これはサーバ側のプリンタドライバがその機能をサポートしていれば、そのまま印刷データをサーバのプリンタドライバに送信すれば問題なく印刷できるが、サポートしていない場合は、拡大縮小処理を行わないで原稿用紙サイズのまま出力されてしまう。また、拡大縮小の印刷機能自体はサポートしていても、拡大縮小する対象の用紙がプリンタドライバ毎に異なるので、もしその用紙をサポートしていない場合はやはり期待通りの印刷結果にならない。
【００１０】
本発明は、上記課題を考慮し、ユーザが望む適切な印刷機能、特に拡大縮小印刷機能やカラー／モノクロ印刷機能やページ集約機能などの印刷データ自体の描画処理が必要な印刷処理でプルプリントが可能な印刷制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の印刷制御装置は、印刷設定がなされた印刷データをドライバへ送信する装置であって、前記ドライバに対して、前記印刷設定のうち所定の機能をサポートしているか否かを判定する機能判定手段と、前記ドライバが前記機能をサポートしていないと判定された場合、前記機能に関して前記印刷データを加工する加工手段とを備えたことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ユーザがクライアントＰＣ上で設定した内容に従った印刷結果を提供することが可能になる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態のシステムの構成例を示す図である。
【図２】情報処理装置のハードウェア構成例を示すブロック図である。
【図３】複合機のハードウェア構成例を示すブロック図である。
【図４】本実施形態における全体の流れを説明する模式図である。
【図５】各データフローの詳細を示す表である。
【図６】クライアントＰＣ上の印刷画面の一例を示す模式図である。
【図７】本発明の第１の制御処理手順の一例を示すフローチャートである。
【図８】本発明の第２の制御処理手順の一例を示すフローチャートである。
【図９】本発明の第３の制御処理手順の一例を示すフローチャートである。
【図１０】本発明の論理プリンタ作成手順を示すフローチャートである。
【図１１】本発明の第４の制御処理手順の一例を示すフローチャートである。
【図１２】本発明の第５の制御処理手順の一例を示すフローチャートである。
【図１３ａ】図７のステップＳＢ７０３とステップＳＣ７０１の間を流れるデータ詳細を示す図である
【図１３ｂ】図８のステップＳＣ８０９とステップＳＥ８１１の間を流れるデータ詳細を示す図である。
【図１３ｃ】図９のステップＳＥ９０５とステップＳＣ９０１の間を流れるデータ詳細を示す図である。
【図１３ｄ】図９のステップＳＣ９１０とステップＳＥ９０６の間を流れるデータ詳細を示す図である。
【図１４ａ】複合機の操作部の表示部に表示される画面の模式図である。
【図１４ｂ】複合機の操作部の表示部に表示される画面の模式図である。
【図１４ｃ】複合機の操作部の表示部に表示される画面の模式図である。
【図１４ｄ】複合機の操作部の表示部に表示される画面の模式図である。
【図１４ｅ】複合機の操作部の表示部に表示される画面の模式図である。
【図１４ｆ】複合機の操作部の表示部に表示される画面の模式図である。
【図１５】中間形式の印刷ジョブを加工する処理の一例を示すフローチャートである。
【図１６】中間形式の印刷ジョブを拡大縮小する処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について図面を用いて説明する。
（第１の実施形態）
【００１５】
図１は、クライアントＰＣ、プリントサーバ（印刷制御装置）、アドレス管理サーバ、および印刷装置を含むプリントシステムの構成の一例を示すシステム構成図である。図１の「事業所Ａ」に示すように、本実施形態のプリントシステムは、１又は複数のクライアントＰＣ１００、１又は複数のプリントサーバ１０１、１又は複数の複合機１０２を含む。一例として、クライアントＰＣ１００はユーザ毎に割り当てられ、プリントサーバ１０１は事業所Ａの階毎に設置され、複合機１０２は事業所Ａの階毎に設置されている。さらに、アドレス管理サーバ１０３、１又は複数のログインサービスＰＣ１０４（例えば、階毎に設置）、ディレクトリサービスサーバ１０５は、ローカルエリアネットワーク（ＬＡＮ）１０６を介して接続されている。
【００１６】
クライアントＰＣ１００には、仮想プリンタドライバがインストールされている。この仮想プリンタドライバは、クライアント・アプリケーションから受け取ったデータに基づいて特定の複合機に依存しない中間形式の印刷ジョブを生成し、プリントサーバ１０１へ送信する。なお、中間形式の印刷ジョブとは、フォーマットに関する仕様が公開されていて、かつ再編集が容易な形式のデータを意味する。例えば、ＥＭＦＳＰＯＯＬ形式（Enhanced Metafile Spool Format）、ＸＰＳ（XML Paper Specification）等がある。本実施形態においては、ＥＭＦＳＰＯＯＬ形式を使って説明するが、ＸＰＳやＰＤＦなど他の中間形式の印刷ジョブであってもかまわない。
【００１７】
プリントサーバ１０１は、受信した印刷ジョブを所定の格納場所に保存する。また、プリントサーバ１０１は、ジョブ管理データベース（以後、ジョブ管理ＤＢと呼ぶ）を備え、印刷ジョブに関するメタデータをジョブ管理ＤＢにより記憶し管理する。プリントサーバ１０１は、ジョブ管理ＤＢに記録されているメタデータから印刷ジョブ一覧データを生成し、この印刷ジョブ一覧データを複合機１０２へ転送する。プリントサーバ１０１は、ジョブ管理ＤＢに記録管理しているメタデータと複合機１０２から受信する印刷設定情報を使って、印刷設定情報の更新を行い、複合機１０２へ更新した印刷設定情報を転送する。さらに、プリントサーバ１０１は、上記所定の格納場所に保存している印刷ジョブ及とジョブ管理ＤＢに記録管理しているメタデータからＰＤＬ（Printer Description Language）データ生成し、複合機１０２へ転送する。
【００１８】
アドレス管理サーバ１０３は、アドレス管理データベース（以後、アドレス管理ＤＢと呼ぶ）を備え、「プルプリント」実行時に、印刷ジョブを管理するプリントサーバ１０１のアドレスとユーザ識別子を、アドレス管理ＤＢにより記憶し、管理する。さらに、アドレス管理サーバ１０３は、複合機１０２からの印刷ジョブ一覧要求に応じて、複合機１０２から受信したユーザ識別子に対応するプリントサーバ１０１のアドレスを複合機１０２へ送信する。
【００１９】
ログインサービスＰＣ１０４は、複合機１０２のログインサービスを提供する。ログインサービスＰＣ１０４は、ディレクトリサービスサーバ１０５で記憶管理されているクライアントＰＣ１００のログインユーザ名、パスワードに基づく認証処理（例えば、ＳＳＯ：Ｓｉｎｇｌｅ  Ｓｉｇｎ−ＯＮ）を行う。このログインユーザ名、パスワードとは例えば、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）のログインユーザ名、パスワードを示す。ログインサービスＰＣの例としては、キヤノン社のセキュリティエージェント（Ｓｅｃｕｒｉｔｙ  Ａｇｅｎｔ）を搭載したパーソナルコンピュータである。
【００２０】
ディレクトリサービスサーバ１０５は、ネットワーク上に存在するサーバ、クライアント、プリンタ等のハードウェア資源や、それらを使用するユーザの属性、アクセス権等の情報を一元的に記憶し、管理する。ユーザの属性には、クライアントＰＣ１００のログインユーザ名、パスワード（例えば、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）のログインユーザ名、パスワード）を含む。ディレクトリサービスサーバの例としては、アクティブディレクトリ（Ａｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙ）機能を搭載したサーバである。
【００２１】
また、本実施形態のプリントシステムは、上述した構成の「事業所Ａ」と、「事業所Ａ」と同様の構成が１又は複数の「事業所Ｂ」とが、ＷＡＮ１０７を介して接続されていてもよい。
【００２２】
図２は、図１に示したクライアントＰＣ１００、プリントサーバ１０１、アドレス管理サーバ１０３、ログインサービスＰＣ１０４、ディレクトリサービスサーバ１０５に適用可能な情報処理装置のハードウェア構成を示すブロック図である。図２において、ＣＰＵ２０１は、システムバス２０４に接続される各デバイスやコントローラを統括的に制御する。ＲＯＭ２０２あるいは外部メモリ２１１には、ＣＰＵ２０１の制御プログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  ／  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）やオペレーティングシステムプログラム（以下、ＯＳ）が記憶されている。さらに、ＲＯＭ２０２あるいは外部メモリ２１１には、各サーバ或いは各ＰＣの実行する機能を実現するために必要な後述する各種コンピュータプログラム等も記憶されている。２０３はＲＡＭで、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する。
【００２３】
ＣＰＵ２０１は、処理の実行に際して必要なプログラム等をＲＯＭ２０２あるいは外部メモリ２１１からＲＡＭ２０３にロードして、該ロードしたプログラムを実行することで各種動作を実現する。また、２０５は入力コントローラで、キーボード２０９や不図示のマウス等のポインティングデバイス等からの入力を制御する。２０６はビデオコントローラで、モニター２１０への表示を制御する。一般に、モニター２１０は液晶ディスプレイやＣＲＴ等の表示器である。これらは必要に応じて管理者が使用するものである。
【００２４】
メモリコントローラ２０７は、外部メモリ２１１へのアクセスを制御する。外部メモリとは、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク（ＨＤ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＳＤメモリーカード等を指す。２０８は通信Ｉ／Ｆコントローラで、ネットワーク（例えば、図１に示したＬＡＮ１０６）を介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、ＴＣＰ／ＩＰを用いた通信等が可能である。
【００２５】
なお、ＣＰＵ２０１は、例えばＲＡＭ２０３内の表示情報用領域へアウトラインフォントの展開（ラスタライズ）処理を実行することにより、モニター２１０上での表示を可能としている。また、ＣＰＵ２０１は、モニター２１０上の不図示のマウスカーソル等でのユーザ指示を可能とする。本発明を実現するための後述する各種プログラムは、外部メモリ２１１に記録されており、必要に応じてＲＡＭ２０２にロードされることによりＣＰＵ２０１によって実行されるものである。さらに、上記プログラムの実行時に用いられる定義ファイル及び各種情報テーブル等も、外部メモリ２１１に格納されており、これらについての詳細な説明も後述する。
【００２６】
図３は、図１に示した複合機１０２のコントローラユニットのハードウェア構成の一例を示すブロック図である。図３において、３１６はコントローラユニットで、画像入力デバイスとして機能するスキャナ３１４や、画像出力デバイスとして機能するプリンタ３１２と接続する。一方、ＬＡＮ（例えば、図１に示したＬＡＮ１０６）や公衆回線（ＷＡＮ）（例えば、ＰＳＴＮまたはＩＳＤＮ等）と接続することで、画像データやデバイス情報の入出力を行う。
【００２７】
コントローラユニット３１６において、３０１はＣＰＵで、システム全体を制御するプロセッサである。３０２はＲＡＭで、ＣＰＵ３０１が動作するためのシステムワークメモリであり、プログラムを記録するためのプログラムメモリや、画像データを一時記録するための画像メモリでもある。３０３はＲＯＭで、システムのブートプログラムや各種制御プログラムが格納されている。３０４はハードディスクドライブ（ＨＤＤ）で、システムを制御するための各種プログラム，画像データ等を格納する。
【００２８】
３０７は操作部インターフェース（操作部Ｉ／Ｆ）で、操作部（ＵＩ）３０８とのインターフェース部であり、操作部３０８に表示する画像データを操作部３０８に対して出力する。また、操作部Ｉ／Ｆ３０７は、操作部３０８から本システム使用者が入力した情報（例えば、ユーザ情報等）をＣＰＵ３０１に伝える役割をする。なお、操作部３０８はタッチパネルを有する表示部を備え、該表示部に表示されたボタンを、ユーザが押下（指等でタッチ）することにより、各種指示を行うことができる。３０５はネットワークインターフェース（Ｎｅｔｗｏｒｋ  Ｉ／Ｆ）で、ネットワーク（ＬＡＮ）に接続し、データの入出力を行う。３０６はモデム（ＭＯＤＥＭ）で、公衆回線に接続し、ＦＡＸの送受信等のデータの入出力を行う。３１８は外部インターフェース（外部Ｉ／Ｆ）で、ＵＳＢ、ＩＥＥＥ１３９４，プリンタポート，ＲＳ−２３２Ｃ等の外部入力を受け付けるＩ／Ｆ部である。
【００２９】
本実施形態においては認証で必要となるＩＣカードの読み取り用のカードリーダ３１９が外部Ｉ／Ｆ部３１８に接続されている。そして、ＣＰＵ３０１は、この外部Ｉ／Ｆ３１８を介してカードリーダ３１９によるＩＣカードからの情報読み取りを制御し、該ＩＣカードから読み取られた情報を取得可能である。以上のデバイスがシステムバス３０９上に配置される。３２０はイメージバスインターフェース（ＩＭＡＧＥ  ＢＵＳ  Ｉ／Ｆ）であり、システムバス３０９と画像データを高速で転送する画像バス３１５とを接続し、データ構造を変換するバスブリッジである。
【００３０】
画像バス３１５は、ＰＣＩバスまたはＩＥＥＥ１３９４で構成される。画像バス３１５上には以下のデバイスが配置される。３１０はラスターイメージプロセッサ（ＲＩＰ）で、例えば、ＰＤＬコード等のベクトルデータをビットマップイメージに展開する。３１１はプリンタインターフェース（プリンタＩ／Ｆ）で、プリンタ３１２とコントローラユニット３１６を接続し、画像データの同期系／非同期系の変換を行う。また、３１３はスキャナインターフェース（スキャナＩ／Ｆ）で、スキャナ３１４とコントローラユニット３１６を接続し、画像データの同期系／非同期系の変換を行う。３１７は画像処理部で、入力画像データに対し補正、加工、編集を行い、プリント出力画像データに対して、プリンタの補正、解像度変換等を行う。また、これに加えて、画像処理部３１７は、画像データの回転や、多値画像データに対してはＪＰＥＧ、２値画像データはＪＢＩＧ、ＭＭＲ、ＭＨ等の圧縮伸張処理を行う。
【００３１】
スキャナ部３１４は、原稿となる紙上の画像を照明し、ＣＣＤラインセンサーで走査することで、ラスターイメージデータとして電気信号に変換する。原稿用紙は原稿フィーダーのトレイにセットし、装置使用者が操作部３０８から読み取り起動指示することにより、ＣＰＵ３０１がスキャナ３１４に指示を与え、フィーダーは原稿用紙を１枚ずつフィードし原稿画像の読み取り動作を行う。プリンタ部３１２は、ラスターイメージデータを用紙上の画像に変換する部分である。その方式は感光体ドラムや感光体ベルトを用いた電子写真方式、微少ノズルアレイからインクを吐出して用紙上に直接画像を印字するインクジェット方式等があるが、どの方式でも構わない。
【００３２】
プリント動作の起動は、ＣＰＵ３０１からの指示によって開始する。なお、プリンタ部３１２には、異なる用紙サイズまたは異なる用紙向きを選択できるように複数の給紙段を持ち、それに対応した用紙カセットがある。操作部３０８は、ＬＣＤ表示部を有し、ＬＣＤ上にタッチパネルシートが貼られており、システムの操作画面を表示するとともに、表示してあるキーが押されるとその位置情報を操作部Ｉ／Ｆ３０７を介してＣＰＵ３０１に伝える。
【００３３】
操作部３０８は、各種操作キーとして、例えば、スタートキー、ストップキー、ＩＤキー、リセットキー等を備える。ここで、操作部３０８のスタートキーは、原稿画像の読み取り動作を開始する時などに用いる。スタートキーの中央部には、緑と赤の２色ＬＥＤがあり、その色によってスタートキーが使える状態にあるかどうかを示す。また、操作部３０８のストップキーは、稼働中の動作を止める働きをする。また、操作部３０８のＩＤキーは、使用者のユーザＩＤを入力する時に用いる。リセットキーは、操作部からの設定を初期化する時に用いる。カードリーダ３１９は、ＣＰＵ３０１からの制御により、ＩＣカード（例えば、ソニー社のフェリカ（ＦｅｌｉＣａ）（登録商標））内に記憶されている情報を読み取り、該読み取った情報を外部Ｉ／Ｆ３１８を介してＣＰＵ３０１へ通知する。
【００３４】
以上のような構成によって、複合機１０２は、スキャナ３１４から読み込んだ画像データをＬＡＮ１０６上に送信し、ＬＡＮ１０６から受信した印刷データをプリンタ３１２により印刷出力することができる。また、スキャナ３１４から読み込んだ画像データをモデム３０６により、公衆回線上にＦＡＸ送信し、公衆回線からＦＡＸ受信した画像データをプリンタ３１２により出力することできる。
【００３５】
図４を用いて、本実施形態のプリントシステムにおけるプルプリントの全体の流れについて説明する。まず、本実施形態のプルプリントを実行するための前提について説明する。本実施形態のプルプリントを実現するための仮想プリンタドライバをプリントサーバ１０１に共有プリンタとしてインストールしておく。プリンタドライバは、アプリケーションから指示された印字や描画命令の出力に基づいて中間形式の印刷ジョブを生成する。さらに、プリンタドライバやプリンタが持つ機能を制御するための印刷設定を行う機能（ユーザインターフェース）と、その印刷設定をインストールされた論理プリンタ毎に外部記憶装置に記憶する機能等を有する。
【００３６】
この印刷設定は、米国Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）の場合、DEVMODE構造体に格納される。このDEVMODE構造体とは、プリンタが使用可能な機能，レイアウト設定，仕上げ設定，給・排紙設定，印字品質設定等の論理プリンタに関するデフォルトの動作条件を含む各種設定を記憶するために、米国Ｍｉｃｒｏｓｏｆｔ社が規定したものである。この各種設定値は、インストールされた論理プリンタ毎に外部記憶装置に記憶される。各クライアントＰＣ１００へは、仮想プリンタドライバを前記プリントサーバ１０１からポイント＆プリント等でダウンロードしてインストールして、該仮想プリンタドライバの論理プリンタを追加しておく。
【００３７】
以下、本実施形態のプルプリントの全体の流れについて説明する。図４は、本実施形態のプリントシステムにおけるプルプリント（通称「どこでもプリント」）の全体の流れを説明する模式図である。図４に示すように、まず、ユーザは、クライアントＰＣ１００にログインし、該クライアントＰＣ１００で実行されるクライアント・アプリケーション４００から仮想プリンタドライバ４０１に対応する論理プリンタへの印刷指示を行う（１−１）。なお、仮想プリンタドライバは、ドライバ４０８に対して前段にあるため、「前段プリンタドライバ」と呼称される。
【００３８】
この印刷指示に応じて、クライアントＰＣ１００のクライアント・アプリケーション４００は、グラフィックエンジンを介して、仮想プリンタドライバ４０１にデータを送信する。クライアントＰＣ１００の仮想プリンタドライバ４０１は、該クライアント・アプリケーションからグラフィックエンジンを介して受け取ったデータに基づいてデバイスに依存しないＥＭＦＳＰＯＯＬ形式の印刷ジョブを生成する。そして、クライアントＰＣ１００は、生成したＥＭＦＳＰＯＯＬ形式の印刷ジョブをプリントプロセッサ４０２に送信する（１−２）。プリントプロセッサ４０２は、仮想プリンタドライバ４０１から送信されてきたＥＭＦＳＰＯＯＬ形式の印刷ジョブを読み取り、印刷ジョブのメタデータを生成する。そして、ジョブ管理サービス４０３へメタデータとＥＭＦＳＰＯＯＬ形式の印刷ジョブを送信する（１−３）。
【００３９】
プリントサーバ１０１にて、ジョブ管理サービス４０３は、プリントサーバ１０１上の所定の格納場所にＥＭＦＳＰＯＯＬ形式の印刷ジョブを保存し、さらにメタデータをジョブ管理ＤＢ４０４に登録する（１−４）。このジョブ管理ＤＢ４０４はプリントサーバ１０１の外部記憶装置上に構築される。このとき、プリントサーバ１０１は、上記所定の格納場所にＥＭＦＳＰＯＯＬ形式の印刷ジョブを保存するだけで、印刷装置への送信は行わない。さらに、プリントサーバ１０１は、ＥＭＦＳＰＯＯＬ形式の印刷ジョブの識別子とユーザ識別子をアドレス管理サーバ１０３上のアドレス管理サービス４０５へ登録するために送信する（１−５）。
【００４０】
アドレス管理サービス４０５は、ジョブ管理サービス４０３から、印刷ジョブの識別子とユーザ識別子を受信すると、プリントサーバ１０１のアドレスも加えてアドレス管理ＤＢ４０６に登録する（１−６）。このアドレス管理ＤＢ４０６は、アドレス管理サーバ１０３の外部記憶装置上に構築される。なお、本実施形態では、機器を判別するためのアドレスとしてＩＰアドレスを使用する。本実施形態では、ジョブ識別子としてＧＵＩＤ（Global Unique Identifier）を使用する。
【００４１】
複合機１０２は、カードリーダ３１９により読み取り可能なＩＣカードを検知すると、該ＩＣカード内の個人認証情報を読み取り、該読み取った個人認証情報を認証要求として不図示の認証サーバに送信する。個人認証情報は、認証に用いられる情報であり該ＩＣカードの製造番号でも良い。認証サーバは、複合機１０２より個人認証情報を受信すると、該個人認証情報の認証処理を認証サーバの外部記憶装置上に記憶されるＩＣカード認証用テーブルに基づいて行い、認証結果を複合機１０２に返信する。なお、認証処理に成功した場合には、認証結果として、クライアントＰＣ１００のユーザ識別子を送信するものとする。なお、この認証サーバの機能はアドレス管理サーバ１０３にあってもよい。
【００４２】
複合機１０２上のパネル・アプリケーション４０７は、認証に成功した旨の認証結果（クライアントＰＣ１００のログインユーザ識別子）を受信する。本実施形態では、ユーザ識別子としてユーザ名を使用する。もちろん、ユーザを識別する手段としてＩＣカードの製造番号などでもかまわない。パネル・アプリケーション４０７は、プリントサーバ１０１に印刷ジョブ一覧を要求するが、その前にプリントサーバ１０１のＩＰアドレスを取得する前処理を実施する。すなわち、アドレス管理サーバ１０３上のアドレス管理サービス４０５にユーザ名を送信する（２−１）。アドレス管理サービス４０５は、受信したユーザ名に対応するプリントサーバ１０１のＩＰアドレスを得る（２−２）。そして、パネル・アプリケーション４０７へプリントサーバ１０１のアドレスを返信する（２−３）。パネル・アプリケーション４０７は、アドレス管理サービス４０５からプリントサーバ１０１のＩＰアドレスを受信すると、プリントサーバ１０１上のジョブ管理サービス４０３へ対し印刷ジョブ一覧を要求する（２−４）。ジョブ管理サービス４０３は、ジョブ管理ＤＢ４０４を参照して（２−５）、該ユーザ名に対応する印刷ジョブ一覧を生成し、パネル・アプリケーション４０７へ印刷ジョブ一覧を返信する（２−６）。パネル・アプリケーション４０７は、ジョブ管理サービス４０３から印刷ジョブ一覧を受信すると、該印刷ジョブ一覧を操作部３０８のＵＩ上に表示する。
【００４３】
ユーザにより、印刷ジョブが選択され、印刷設定変更及び印刷指示がなされると、パネル・アプリケーション４０７は、該選択された印刷ジョブの印刷設定情報をジョブ管理サービス４０３に送信する（３−１）。ジョブ管理サービス４０３は、パネル・アプリケーション４０７から印刷設定情報を受信すると、ジョブ管理ＤＢ４０４を参照して（３−２）、印刷設定情報の変更を行う。そして、ジョブ管理サービス４０３は、パネル・アプリケーション４０７へ変更した印刷設定情報を返信する（３−３）。パネル・アプリケーション４０７は送信した印刷設定情報と受信した印刷設定情報を比較し、印刷設定変更が正しく機能したかどうか判定する。正しく機能しなかった場合は、操作部３０８のＵＩ上にその旨のメッセージを表示する。
【００４４】
そして、パネル・アプリケーション４０７は、改めてジョブ管理サービス４０３に対し印刷要求（出力指示）を行う（４−１）。ジョブ管理サービス４０３は、パネル・アプリケーション４０７から印刷指示を受信すると、ジョブ管理ＤＢ４０４を参照して印刷に必要な情報を取得する（４−２）。そして、ジョブ管理サービス４０３は、プリンタドライバ４０８に対して機能のサポート状況を問い合わせ（４−３）、プリンタドライバ４０８から回答を取得する（４−４）。ジョブ管理サービス４０３は、その回答に基づいて印刷処理を実行し、プリンタドライバ４０８にＥＭＦＳＰＯＯＬ形式の印刷ジョブを送信し（４−５）、複合機１０２にＰＤＬジョブを送信して複合機１０２で印刷する（４−６）。なお、プリンタドライバ４０８は、仮想プリンタドライバの後段にあるため、後段ドライバともいう。
【００４５】
最後に、ユーザにより印刷ジョブの削除が指示されると、パネル・アプリケーション４０７は、ジョブ管理サービス４０３に対し指定された印刷ジョブの削除を指示する。ジョブ管理サービス４０３は、パネル・アプリケーション４０７から印刷ジョブの削除要求を受信すると、まず、アドレス管理サービス４０５へ登録した印刷ジョブ識別子の削除を指示する（５−２）。アドレス管理サービス４０５は、ジョブ管理サービス４０３から印刷ジョブ識別子の登録解除要求を受信すると、アドレス管理ＤＢ４０６の該当するレコードを削除する（５−３）。次に、ジョブ管理サービス４０３は、ジョブ管理ＤＢの該当するレコードを削除し（５−４）、ＥＭＦＳＰＯＯＬ形式の印刷ジョブファイルも削除する。
【００４６】
図５は、図４のプリントシステムにおけるデータの詳細を表形式で表したものである。以降、フローチャートを使って詳細に説明するが、その際に図５を併用して説明を補足していく。
【００４７】
図１に示したクライアントＰＣ１００上で動作するクライアント・アプリケーション４００上での印刷指示について説明する。図６は、図１に示したクライアントＰＣ１００上で動作するクライアント・アプリケーション４００の印刷画面の一例を示す模式図であり、クライアントＰＣ１００のＣＰＵの制御により表示器に表示される。６１０は論理プリンタ選択部で、クライアントＰＣ１００に設定されている論理プリンタから、印刷を行う論理プリンタを選択するためのものである。このプリンタ選択部６１０において、「どこでも印刷」６０１は、本実施形態のプルプリント設定された仮想プリンタドライバに対応する論理プリンタとする。さらに、「Ｃｘｘｘｘ  ｉｘ３２５０」６０２，「Ｃｘｘｘｘ  ｉｘ５０５１」６０３は、通常のプリンタドライバに対応する論理プリンタとする。
【００４８】
プリンタ選択部６１０でいずれかの論理プリンタが選択され、ＯＫボタン６０５が押下されると、アプリケーションは、印刷のためのデータを、選択された論理プリンタに対応するプリンタドライバにグラフィックエンジンを介して送信する。以下、プリンタ選択部６１０で「どこでも印刷」６０１が選択されて印刷指示がなされた場合のプリンタドライバの動作について説明する。
【００４９】
図７は、本発明のプリントシステムにおける第１の制御処理手順の一例を示すフローチャートであり、図４に示した１−１から１−６までの処理手順に対応する。ステップＳＡ７００〜ステップＳＡ７０２は、図４に示した仮想プリンタドライバ４０１による印刷ジョブ投入処理に対応する。これらフローチャートの処理は、図１に示したクライアントＰＣ１００のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。ステップＳＢ７００〜ステップＳＢ７０６は、図４に示したプリントプロセッサ４０２によるメタデータ生成・送信処理及び印刷ジョブ転送処理に対応する。これらフローチャートの処理は、図１に示したプリントサーバ１０１のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。ステップＳＣ７００〜ステップＳＣ７０９は、図４に示したジョブ管理サービス４０３によるメタデータ登録処理及び印刷ジョブ保存処理対応する。これらフローチャートの処理は、図１に示したプリントサーバ１０１のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。ステップＳＤ７００〜ステップＳＤ７０４は、図４に示したアドレス管理サービス４０５による印刷ジョブ識別子登録処理に対応する。これらフローチャートの処理は、図１に示したアドレス管理サーバ１０３のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。
【００５０】
まず、仮想プリンタドライバ４０１による印刷ジョブ投入処理を説明する。ステップＳＡ７００において、仮想プリンタドライバ４０１の処理が開始する。ステップＳＡ７０１において、図４のクライアント・アプリケーション４００から仮想プリンタドライバ４０１に入力されたデータをＥＭＦＳＰＯＯＬ形式の印刷ジョブとして出力する。これは図４の１−１と１−２に相当する。米国Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）の場合、プリンタドライバへの入力はＤＤＩ（Device Driver Interface）と呼ばれるＯＳ（Operating System）による関数呼び出しによって実施される。
【００５１】
仮想プリンタドライバ４０１は、ＤＤＩの呼び出しと同時に渡されるパラメーターを解釈して、ＥＭＦＳＰＯＯＬ形式の印刷ジョブを生成し、ＯＳが管理するスプーラーへ生成したジョブを出力する。一般に、プリンタドライバの役割は、出力対象のデバイスに依存した印刷ジョブを生成し出力することであるが、本実施形態においては、複合機１０２に依存しない中間形式の印刷ジョブを生成し、出力することが重要である。これによって、複合機１０２の構成が変更されたとしても、本発明のプリントシステムにおいて仮想プリンタドライバ４０１の構成に変更は生じない。つまり、複合機固有の機能をプルプリントシステムで使用することが容易に実現できる。ステップＳＡ７０２で処理を終了する。
【００５２】
次に、プリントプロセッサ４０２によるメタデータ生成・送信処理及び印刷ジョブ転送処理を説明する。米国Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）の場合、ＯＳがプリントプロセッサに対し印刷ジョブの処理を依頼する際に呼び出すPrintDocumentOnPrintProcessor関数の内部処理を示す。ステップＳＢ７００において、プリントプロセッサ４０２はプリントサーバ１０１上で処理を開始する。ステップＳＢ７０１において、プリントプロセッサ４０２は、ＯＳのスプーラーに出力されたジョブの種類がＲＡＷ形式かどうか判断する。ＲＡＷ形式とは、プリンタドライバが出力した印刷ジョブを意味する。つまり、仮想プリンタドライバ４０１はステップＳＡ７０１にて印刷ジョブを出力しているので、ここではＲＡＷ形式と判断され、ステップＳＢ７０２へ進む。ＲＡＷ形式と判断されない場合は、ステップＳＢ７０６へ進み、処理を終わる。
【００５３】
ステップＳＢ７０２において、メタデータを生成する。メタデータは、図５の「１−４」行の「送信データ」列にある、ＧＵＩＤ（Global Unique Identifier）、ジョブ名、ユーザ名、DEVMODE、仮想プリンタドライバの論理プリンタ名である。具体的には、図１３ａのようなＸＭＬ形式で表現される。ＪｏｂＩｎｆｏ要素のＧｕｉｄ属性には、本発明のプリントシステムにおいて一意となる印刷ジョブの識別子を記述する。ＪｏｂＩｎｆｏ要素のＪｏｂＮａｍｅ属性には、図４の１−１の過程で指定されたジョブの名前を記述する。ＪｏｂＩｎｆｏ要素のＵｓｅｒＮａｍｅ属性には、図４の１−１の過程で印刷を実行したユーザの名前を記述する。ＪｏｂＩｎｆｏ要素のＰｒｉｎｔＱｕｅｕｅＮａｍｅ属性には、図４の１−１の過程で使用された論理プリンタの名前を記述する。ＤｏｃｕｍｅｎｔＳｅｔｔｉｎｇｓ要素のDEVMODEＳｎａｐｓｈｏｔ属性には、図４の１−１の過程で指定された最初ページの印刷設定（DEVMODE）を記述する。なお、DEVMODEはバイナリ形式なので、ＸＭＬで記述するためにＢａｓｅ６４と呼ばれる手法によりテキスト化している。
【００５４】
ステップＳＢ７０３おいて、ＳＢ７０２で生成したメタデータをジョブ管理サービス４０３へ送信する。米国Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）の場合、送信プロトコルとして名前付きパイプを使うと高効率である。しかも、後述するユーザトークン取得に関しても名前付きパイプの使用は都合が良い。ステップＳＢ７０４において、ＯＳのスプーラーからスプールデータを読み込む。そして、ステップＳＢ７０５において、読み込んだスプールデータをジョブ管理サービス４０３へ送信する。ステップＳＢ７０６で処理を終了する。
【００５５】
次にジョブ管理サービス４０３によるメタデータ登録処理及び印刷ジョブ保存処理を説明する。ステップＳＣ７００において、ジョブ管理サービス４０３はプリントサーバ１０１上で処理を開始する。ステップＳＣ７０１において、ジョブ管理サービス４０３は名前付きパイプのサーバとして機能することによって、プリントプロセッサ４０２からステップＳＢ７０３で送信されたメタデータを図１３ａのようなＸＭＬ形式で受信する。なお、プリントプロセッサ４０２とのコネクションを確立する際に、ジョブ管理サービス４０３は、名前付きパイプのクライアント（即ちプリントプロセッサ４０２）のユーザトークンを取得する（ステップＳＣ７０２）。ユーザトークンの使用方法については後述する。
【００５６】
ステップＳＣ７０３において、ジョブ管理サービス４０３は、ＥＭＦＳＰＯＯＬ形式の印刷ジョブを保存するファイルパスを決定する。ステップＳＣ７０４において、ジョブ管理サービス４０３は、プリントプロセッサ４０２のステップＳＢ７０５から送信されたＥＭＦＳＰＯＯＬ形式の印刷ジョブを受信する。ステップＳＣ７０５において、受信したＥＭＦＳＰＯＯＬ形式の印刷ジョブをステップＳＣ７０３で決定したファイル名で保存する。ステップＳＣ７０６において、ジョブ管理サービス４０３は、現在の日付・時刻を生成する。これをもって印刷ジョブ投入時刻とする。ステップＳＣ７０７において、ＳＣ７０１で受信したメタデータとステップＳＣ７０２で取得したユーザトークンとステップＳＣ７０３で決定したファイル名とステップＳＣ７０６で生成した日付・時刻を新規レコードとしてジョブ管理ＤＢ４０４に登録する。ステップＳＣ７０８において、ジョブ管理サービス４０３は、アドレス管理サービス４０５へ印刷ジョブ識別子登録コマンドを送信する。このとき、ステップＳＣ７０１で受信したメタデータに含まれるＧＵＩＤとユーザ名も送信される。ステップＳＣ７０９で処理を終了する。
【００５７】
次にアドレス管理サービス４０５による印刷ジョブ識別子登録処理を説明する。ステップＳＤ７００において、アドレス管理サービス４０５は、アドレス管理サーバ１０３上で処理を開始する。ステップＳＤ７０１において、アドレス管理サービス４０５は、ジョブ管理サービス４０３からステップＳＣ７０８で送信されたＧＵＩＤとユーザ名を受信する。なお、アドレス管理サービス４０５は、ジョブ管理サービス４０３とのコネクションを確立する際に、プリントサーバ１０１のＩＰアドレスを取得する（ステップＳＤ７０２）。ステップＳＤ７０３において、アドレス管理サービス４０５は、ＳＤ７０１で受信したＧＵＩＤとユーザ名とＳＤ７０２で取得したＩＰアドレスを図４のアドレス管理ＤＢ４０６に新規レコードとして登録する。ステップＳＤ７０４で処理を終了する。
【００５８】
図８は、本発明のプリントシステムにおける第２の制御処理手順の一例を示すフローチャートであり、図４に示した２−１から２−６までの処理手順に対応する。ステップＳＥ８００〜ステップＳＥ８１３は、図４に示したパネル・アプリケーション４０７による印刷ジョブ一覧表示処理に対応する。これらフローチャートの処理は、図１に示した複合機１０２のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。ステップＳＤ８００〜ステップＳＤ８０７は、図４に示したアドレス管理サービス４０５によるアドレス解決処理に対応する。これらフローチャートの処理は、図１に示したアドレス管理サーバ１０３のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。ステップＳＣ８００〜ステップＳＣ８１０は、図４に示したジョブ管理サービス４０３による印刷ジョブ一覧生成処理に対応する。これらフローチャートの処理は、図１に示したプリントサーバ１０１のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。
【００５９】
まず、パネル・アプリケーション４０７による印刷ジョブ一覧表示処理を説明する。ステップＳＥ８００において、パネル・アプリケーション４０７の処理が開始する。ステップＳＥ８０１において、パネル・アプリケーション４０７は、ログイン表示画面（図１４ａ）を操作部３０８に表示する。そして、ステップＳＥ８０２において、パネル・アプリケーション４０７は、ＩＣカード等によるユーザ認証を行う。本実施形態において、ユーザ認証は重要なプロセスではないので、ここでは、認証カードの検出方法やＩＣカードの識別ＩＤ取得方法や認証サーバによる認証処理といった詳細説明を省略する。
【００６０】
ステップＳＥ８０３において、パネル・アプリケーション４０７は、認証結果を判定し、認証エラーである旨の認証結果が得られた場合には、ステップＳＥ８０４において、エラー表示画面（図１４ｂ）を操作部３０８の表示部に表示する。該エラー表示画面にてＯＫボタンの押下を受け付けると、ステップＳＥ８０１に戻り、パネル・アプリケーション４０７は、再度、ログイン表示画面を表示する。一方、ステップＳＥ８０３にて認証が成功したと判定した場合、ステップＳＥ８０５へ進む。
【００６１】
ステップＳＥ８０５において、パネル・アプリケーション４０７は、認証に成功したユーザ名を取得する。ステップＳＥ８０６において、パネル・アプリケーション４０７は、アドレス管理サーバ４０５にユーザ名を送信し、ステップＳＥ８０７において、アドレス管理サーバ４０５からプリントサーバ１０１のＩＰアドレスのリストを受信する。つまり、パネル・アプリケーション４０７は、アドレス管理サーバ４０５に対し、ユーザ名で対象となる印刷ジョブを絞り込み、その印刷ジョブを保持するジョブ管理サービスのＩＰアドレスを返信することを要求している。
【００６２】
続くステップＳＥ８０８からステップＳＥ８１１までは、ＩＰアドレスのリストからＩＰアドレスを列挙するループ処理である。ステップＳＥ８０８において、パネル・アプリケーション４０７は、ＩＰアドレスのリストからＩＰアドレスを取り出す。ステップＳＥ８０９において、パネル・アプリケーション４０７は、ＩＰアドレスを取り出せたかどうか判定する。取り出せた場合、ステップＳＥ８１０へ進み、パネル・アプリケーション４０７は、ジョブ管理サーバ４０３に印刷ジョブ一覧要求コマンドを送信する。このときパネル・アプリケーション４０７は、ユーザ名も送信する。
【００６３】
ステップＳＥ８１１において、パネル・アプリケーション４０７は、ジョブ管理サーバ４０３から印刷ジョブ一覧を受信する。この印刷ジョブ一覧は、図５の「２−６」行の「送信データ」列にある、ＧＵＩＤ、ジョブ名、部数、両面、カラーモード、ページ集約、日付・時刻である。具体的には、図１３ｂのようなＸＭＬ形式で表現される。ＪｏｂＬｉｓｔ要素は、ジョブの数だけのＪｏｂＩｎｆｏ子要素を保持する。ＪｏｂＩｎｆｏ要素のＧｕｉｄ属性は図１３ａで説明したＧＵＩＤと同じものである。ＪｏｂＩｎｆｏ要素のＪｏｂＮａｍｅ属性も図１３ａで説明したＪｏｂＮａｍｅと同じものである。
【００６４】
一方、ＤｏｃｕｍｅｎｔＳｅｔｔｉｎｇｓ要素が保持する各種属性は図８のものと大きく異なる。ＣｏｐｙＣｏｕｎｔ属性は、印刷部数を指定する。Ｄｕｐｌｅｘｉｎｇ属性は片面印刷を使用するか、両面印刷を使用するかを指定する。具体的には、ＯｎｅＳｉｄｅｄと記述すると、片面印刷を指定する。ＴｗｏＳｉｄｅＬｏｎｇＥｄｇｅと記述すると、両面（長辺綴じ）を指定する。ＴｗｏＳｉｄｅｄＳｈｏｒｔＥｄｇｅと記述すると、両面（短辺綴じ）を指定する。ＯｕｔｐｕｔＣｏｌｏｒ属性は、色に関する出力方法を指定する。Ｃｏｌｏｒと記述すると、カラーを指定する。Ｍｏｎｏｃｈｒｏｍｅと記述すると、モノクロを指定する。ＰａｇｅＰｅｒＳｈｅｅｔ属性は、用紙の片面に印刷するように選択できるページ数を指定する。ＤａｔｅＴｉｍｅ属性は、ジョブ投入時刻を指定する。
【００６５】
ステップＳＥ８０８からステップＳＥ８１１において、パネル・アプリケーション４０７は、ＩＰアドレスのリストからＩＰアドレスを取り出し終えると、ステップＳＥ８１２に進み、印刷ジョブ一覧表示画面（図１４ｃ）を操作部３０８の表示部に表示する。ステップＳＥ８１３で処理を終了する。
【００６６】
次にアドレス管理サービス４０５によるアドレス解決処理を説明する。ステップＳＤ８００において、アドレス管理サービス４０５の処理が開始する。ステップＳＤ８０１において、アドレス管理サービス４０５は、パネル・アプリケーション４０７のステップＳＥ８０６から送信されるユーザ名を受信する。ステップＳＤ８０２において、アドレス管理サービス４０５は、図４のアドレス管理ＤＢ４０６からステップＳＤ８０１で得たユーザ名と一致するレコードを探索する。ステップＳＤ８０３において、アドレス管理サービス４０５は、探索したレコードから１つのレコードを取り出す。
【００６７】
ステップＳＤ８０４において、アドレス管理サービス４０５は、レコードを取り出せたかどうか判断する。取り出せるときは、ステップＳＤ８０５へ進み、アドレス管理サービス４０５は、レコードからジョブ管理サービス４０３が動作するプリントサーバ１０１のＩＰアドレスを取り出す。ステップＳＤ８０３からステップＳＤ８０５において、アドレス管理サービス４０５は、探索した全レコードからＩＰアドレスを取り出し終えると、ステップＳＤ８０６へ進み、パネル・アプリケーション４０７へＩＰアドレスのリストを返信する。ステップＳＤ８０７で処理を終了する。
【００６８】
次にジョブ管理サービス４０３による印刷ジョブ一覧生成処理を説明する。ステップＳＣ８００において、ジョブ管理サービス４０３の処理が開始する。ステップＳＣ８０１において、ジョブ管理サービス４０３は、パネル・アプリケーション４０７のステップＳＥ８１０から印刷ジョブ一覧要求を受け付ける。このときジョブ管理サービス４０３は、ユーザ名も受信する。ステップＳＣ８０２において、ジョブ管理サービス４０３は、図４のジョブ管理ＤＢ４０４からステップＳＣ８０１で得たユーザ名と一致するレコードを探索する。ステップＳＣ８０３において、ジョブ管理サービス４０３は、探索したレコードから１つのレコードを取り出す。
【００６９】
ステップＳＣ８０４において、ジョブ管理サービス４０３は、レコードを取り出せるかどうかを判断する。取り出せるときは、ステップＳＣ８０５へ進み、レコードからＧＵＩＤとジョブ名とDEVMODEと仮想プリンタドライバの論理プリンタ名とユーザトークンと日付・時刻を取り出す。ステップＳＣ８０６において、ジョブ管理サービス４０３は、ステップＳＣ８０４で得たユーザトークンを使って、自身のスレッドを偽装する。スレッドを偽装している間、スレッドは図４のクライアント・アプリケーション４００で印刷を実行したユーザのセキュリティコンテキストで実行される。
【００７０】
ステップＳＣ８０７において、ジョブ管理サービス４０３は、ステップＳＣ８０５で得たDEVMODEからカラーモード、両面、ページ集約、部数、といった個々の情報を取り出す。DEVMODEは、プリンタドライバが管理するプリンタドライバ固有のデータ形式であるので、DEVMODEから個々の情報を取り出すためには、DEVMODEを生成したプリンタドライバに問い合わせる必要がある。ステップＳＣ８０７で仮想プリンタドライバの論理プリンタ名を取得済みなので、ジョブ管理サービス４０３は、この論理プリンタを使ってDEVMODEから個々の情報を取り出すことになる。一般に、DEVMODEから個々の情報を取り出す手法としては、プリンタドライバにDEVMODEを操作する独自の拡張インターフェースを設けて、そのインターフェースを経由することが多い。近年は、プリントチケットと呼ばれる米国Microsoft社が規定したＸＭＬによる印刷設定格納形式を利用する方法も利用ある。即ち、プリンタドライバがプリントチケットをサポートするならば、DEVMODEをプリントチケットに変換し、プリントチケットから個々の情報を取り出してもよい。
【００７１】
ステップＳＣ８０８において、ジョブ管理サービス４０３は、スレッドの偽装を解除する。ステップＳＣ８０３からステップＳＣ８０８において、探索した全レコードから個々の印刷設定を取り出し終えると、ステップＳＣ８０９へ進み、ジョブ管理サービス４０３は、印刷ジョブ一覧（図１３ｂ）を生成する。そして、パネル・アプリケーション４０７へ印刷ジョブ一覧を返信する。ステップＳＣ８１０で処理を終了する。
【００７２】
図９は、本発明のプリントシステムにおける第３の制御処理手順の一例を示すフローチャートであり、図４に示した３−１から３−３までの処理手順に対応する。ステップＳＥ９００〜ステップＳＥ９１３は、図４に示したパネル・アプリケーション４０７による印刷設定変更確認及び印刷指示処理に対応する。これらフローチャートの処理は、図１に示した複合機１０２のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。ステップＳＣ９００〜ステップＳＣ９１１は、図４に示したジョブ管理サービス４０３による印刷設定変更処理に対応する。これらフローチャートの処理は、図１に示したジョブ管理サーバ１０１のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。
【００７３】
まず、パネル・アプリケーション４０７による印刷設定変更確認及び印刷指示処理を説明する。ステップＳＥ９００において、パネル・アプリケーション４０７の処理が開始する。なお、図８のステップＳＥ８１２において、パネル・アプリケーション４０７は、印刷ジョブ一覧表示画面（図１４ｃ）を操作部３０８の表示部に表示している。ステップＳＥ９０１において、パネル・アプリケーション４０７は、印刷ジョブの選択とプリントするボタン１４２２の押下を受け付ける。すると、ステップＳＥ９０２において、パネル・アプリケーション４０７は、印刷設定変更画面（図１４ｄ）を操作部３０８の表示部に表示する。
【００７４】
図１４ｄの１４３１は、カラーモードの指定を意味し、モノクロとカラーのどちらかをチェックできる。図１４ｄの１４３２は、両面・片面の指定を意味し、片面、両面（長辺綴じ）、両面（短辺綴じ）のうち１つを選択できる。図１４ｄの１４３３は、ページ集約の指定を意味し、１ｉｎ１、２ｉｎ１、４ｉｎ１、６ｉｎ１、８ｉｎ１、９ｉｎ１、１６ｉｎ１のうち１つを選択できる。図１４ｄの１４３４は、印刷部数の指定を意味し、１から9999までの値を指定できる。なお、図１４ｄは、パネル・アプリケーション４０７が、図１４ｃにおいて文書名「決算報告書」の印刷ジョブの選択を受け付けて、プリントするボタン１４２２の押下を受け付けた場合の印刷設定変更例を示している。
【００７５】
ステップＳＥ９０３において、パネル・アプリケーション４０７は、印刷設定変更を受け付ける。ここでは、図１４ｄの１４３２の両面・片面指定が、ユーザにより片面から両面（長辺綴じ）に変更されたとする。ステップＳＥ９０４において、パネル・アプリケーション４０７は、印刷設定情報が変更されたかどうか判定する。変更されていない場合は、以後の印刷設定変更確認処理をスキップし、一気にステップＳＥ９１１へ進む。印刷設定情報が変更された場合は、ステップＳＥ９０５へ進む。
【００７６】
ステップＳＥ９０５において、パネル・アプリケーション４０７は、ジョブ管理サービス４０３へ印刷設定情報を送信する。この印刷設定情報は、図５の「３−１」行の「送信データ」列にある、ＧＵＩＤ、部数、両面、カラーモード、ページ集約、複合機のモデル名である。具体的には、図１３ｃのようなＸＭＬ形式で表現される。ＪｏｂＩｎｆｏ要素のＧｕｉｄ属性は図１３ａで説明したＧｕｉｄと同じものである。ＪｏｂＩｎｆｏ要素のＤｅｖｉｃｅＭｏｄｅｌＮａｍｅ属性は、図１の複合機１０２のモデル名を記述する。ＤｏｃｕｍｅｎｔＳｅｔｔｉｎｇｓ要素が保持する各種属性は図１３ｂで説明したものと同様である。ただし、ステップＳＥ９０３で片面を両面（長辺綴じ）に変更しているので、Ｄｕｐｌｅｘｉｎｇ属性はＴｗｏＳｉｄｅＬｏｎｇＥｄｇｅになる。
【００７７】
ステップＳＥ９０６において、パネル・アプリケーション４０７は、ジョブ管理サービス４０３から印刷設定変更指示が反映された印刷設定情報を受信する。この印刷設定情報は、図５の「３−３」行の「送信データ」列にある、ＧＵＩＤ、部数、両面、カラーモード、ページ集約である。具体的には、図１３ｄのようなＸＭＬ形式で表現される。内容は図１３ｃとほぼ同じなので説明は省略する。ステップＳＥ９０７において、パネル・アプリケーション４０７は、ステップＳＥ９０５で送信した印刷設定情報とステップＳＥ９０６で受信した印刷設定情報を比較する。前に述べたようにステップＳＥ９０５で送信した印刷設定情報ではＤｕｐｌｅｘｉｎｇ属性をＴｗｏＳｉｄｅＬｏｎｇＥｄｇｅと指定した。しかし、ステップＳＥ９０６で受信した印刷設定情報のＤｕｐｌｅｘｉｎｇ属性はＯｎｅＳｉｄｅｄとなったとする。このように送信した印刷設定情報と受信した印刷設定情報が一致しないことは原理的にありえる。
【００７８】
例えば、ステップＳＥ９０３で変更対象外の設定情報として用紙サイズがあるが、図４の１−１の段階で用紙サイズは「はがき」になっていたとする。そして、印刷設定の禁則条件として、用紙が「はがき」の場合、両面・片面指定は片面しか選択できないとする。かつ、禁則条件適用の優先度は両面・片面指定よりも用紙サイズの指定の方が高いとする。となると、Ｄｕｐｌｅｘｉｎｇ属性は常にＯｎｅＳｉｄｅｄにならざるを得ない。パネル・アプリケーションに４０７にプリンタドライバと同様の高度な禁則処理を実装すれば、図１４ｄの設定変更入力の時点で両面指定を変更できないようにすることも可能であるが、パネル・アプリケーションの実装難易度が非常に高くなる。本実施形態のように、パネル・アプリケーション４０７では印刷設定の禁則処理を行わず、印刷設定情報を変更したら都度、変更可能かどうかプリンタドライバに問い合わせる方が容易なうえ汎用性も増す。
【００７９】
パネル・アプリケーション４０７がステップＳＥ９０５で送信した印刷設定情報とステップＳＥ９０６で受信した印刷設定情報を比較した結果、差異が無い場合は、ステップＳＥ９１１へ進む。一方、差異がある場合は、ステップＳＥ９０８へ進み、エラー表示画面（図１４ｅ）を操作部３０８の表示部に表示するように制御する。ここでは、ステップＳＥ９０６で受信した印刷設定のＤｕｐｌｅｘｉｎｇ属性はＯｎｅＳｉｄｅｄになっているので、図１４ｅのエラー表示も「片面」から「両面（長辺綴じ）」に変更できなかった旨の内容となっている。
【００８０】
ステップＳＥ９０９において、パネル・アプリケーション４０７は、印刷続行指示の入力を受け付ける。ステップＳＥ９１０において、ＯＫボタン１４４２の押下を受け付けると、ステップＳＥ９１１へ進む。ステップＳＥ９１１の印刷指示処理については後述する。そしてステップＳＥ９１２へ進む。一方、図１４ｅのエラー表示画面でキャンセルボタン１４４１の押下を受け付けると、ステップＳＥ９１２へ進み、図１４ｅのエラー表示画面及び図１４ｄの印刷設定変更画面を閉じる。ステップＳＥ９１３で処理を終了する。
【００８１】
次にジョブ管理サービス４０３による印刷設定変更処理を説明する。ステップＳＣ９００において、ジョブ管理サービス４０３の処理を開始する。ステップＳＣ９０１において、ジョブ管理サービス４０３は、パネル・アプリケーション４０７のステップＳＥ９０５から図１３ｃのようなＸＭＬ形式で印刷設定情報を受信する。ステップＳＣ９０２において、ジョブ管理サービス４０３は、印刷設定変更のための論理プリンタを作成する。詳細は図１０にて後述する。ステップＳＣ９０３において、ジョブ管理サービス４０３は、図４のジョブ管理ＤＢ４０４からステップＳＣ９０１で得たＧＵＩＤと一致するレコードを探索する。ステップＳＣ９０４において、ジョブ管理サービス４０３は、探索して得られたレコードからDEVMODEとユーザトークンを取得する。
【００８２】
ステップＳＣ９０５において、ジョブ管理サービス４０３は、ステップＳＣ９０４で得たユーザトークンを使って、自身のスレッドを変更する。スレッドを変更している間、スレッドは図４のクライアント・アプリケーション４００で印刷を実行したユーザのセキュリティコンテキストで実行される。ステップＳＣ９０６において、ジョブ管理サービス４０３は、ステップＳＣ９０１で得た個々の印刷設定情報をステップＳＣ９０４で得たDEVMODEに適用する。DEVMODEは、プリンタドライバが管理するプリンタドライバ固有のデータ形式であるので、DEVMODEに個々の情報を適用するためには、DEVMODEを生成したプリンタドライバにDEVMODEの更新を依頼する必要がある。ステップＳＣ９０２で論理プリンタを生成済みなので、この論理プリンタを使ってDEVMODEに対し個々の情報を適用することになる。一般に、DEVMODEに個々の情報を適用する手法としては、プリンタドライバにDEVMODEを操作する独自の拡張インターフェースを設けて、そのインターフェースを経由することが多い。近年は、プリントチケットと呼ばれる米国Ｍｉｃｒｏｓｏｆｔ社が規定したＸＭＬによる印刷設定格納形式を利用する方法もある。即ち、プリンタドライバがプリントチケットをサポートするならば、DEVMODEをプリントチケットに変換し、プリントチケットに対し個々の情報を適用し、プリントチケットからDEVMODEに変換してもよい。
【００８３】
ステップＳＣ９０７において、ジョブ管理サービス４０３は、ジョブ管理ＤＢ４０４に保存しているDEVMODEをステップＳＣ９０６で変更したDEVMODEを使って更新する。ステップＳＣ９０８において、ジョブ管理サービス４０３は、ステップＳＣ９０６で更新したDEVMODEからカラーモード、両面、ページ集約、部数、といった個々の情報を取り出す。個々の情報の取り出し方は、図８のステップＳＣ８０７と同じである。ステップＳＣ９０９において、ジョブ管理サービス４０３は、スレッドの偽装を解除する。ステップＳＣ９１０において、ジョブ管理サービス４０３は、パネル・アプリケーション４０７へ図１３ｄのようなＸＭＬ形式で変更した印刷設定情報を返信する。ステップＳＣ９１１で処理を終了する。
【００８４】
図１０は、図９のステップＳＣ９０２で呼び出される論理プリンタ作成処理のフローチャートである。ステップＳＣ１０００において、ジョブ管理サービス４０３の処理を開始する。ステップＳＣ１００１において、ジョブ管理サービス４０３は、図１の複合機１０２のＩＰアドレスを取得する。この複合機１０２のＩＰアドレスは、パネル・アプリケーション４０７とのデータ送受信のコネクションが確立した際に入手されている。ステップＳＣ１００２において、ジョブ管理サービス４０３は、図１の複合機１０２のモデル名をサポートしたプリンタドライバがプリントサーバ１０１上にインストールされているかどうか判定する。インストールされていない場合、ステップＳＣ１００３へ進み、ジョブ管理サービス４０３は、図１の複合機１０２のモデル名をサポートしたプリンタドライバをプリントサーバ１０１上にインストールする。そして、ステップＳＣ１００４へ進む。一方、ステップＳＣ１００２でインストール済みと判定された場合は、ステップＳＣ１００４へ進む。なお、この段階でインストール済みとなったプリンタドライバは、図４のプリンタドライバ４０８に相当する。
【００８５】
ステップＳＣ１００４において、インストール済みのプリンタドライバから構成され、かつ、ステップＳＣ１００１で得たＩＰアドレスを出力ポートとして構成される論理プリンタがプリントサーバ１０１上に存在するかどうか判定する。存在しない場合、ステップＳＣ１００５へ進み、ジョブ管理サービス４０３は、インストール済みのプリンタドライバを使ってステップＳＣ１００１で得たＩＰアドレスを出力ポートとする論理プリンタを作成する。そして、ステップＳＣ１００６へ進む。一方、ステップＳＣ１００４で存在すると判定された場合は、ＳＣ１６０６へ進む。ステップＳＣ１００６で処理を終了する。
【００８６】
図１１は、本発明のプリントシステムにおける第４の制御処理手順の一例を示すフローチャートであり、図９のステップＳＥ９１１で呼び出される印刷指示処理のフローチャートでもある。図４に示した４−１から４−４までの処理手順に対応する。ステップＳＥ１１００〜ステップＳＥ１１０７は、図４に示したパネル・アプリケーション４０７による印刷指示処理に対応する。これらフローチャートの処理は、図１に示した複合機１０２のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。ステップＳＣ１１００〜ステップＳＣ１１０９は、図４に示したジョブ管理サービス４０３による印刷処理に対応する。これらフローチャートの処理は、図１に示したジョブ管理サーバ１０１のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。
【００８７】
まず、パネル・アプリケーション４０７による印刷指示処理を説明する。ステップＳＥ１１００において、パネル・アプリケーション４０７の処理を開始する。ステップＳＥ１１０１において、パネル・アプリケーション４０７は、ジョブ管理サービス４０３へ印刷指示要求コマンドを送信する。このとき選択済みの印刷ジョブのＧＵＩＤと複合機１０２のモデル名も送信する。ステップＳＥ１１０２において、パネル・アプリケーション４０７は、ジョブ管理サービス４０３から印刷実行結果（成否）を受信する。ステップＳＥ１１０３において、印刷実行に成功したかどうかを判定する。失敗した場合は、ステップＳＥ１１０４へ進み、パネル・アプリケーション４０７は、エラー表示画面（図１４ｆ）を操作部３０８の表示部に表示する。そしてステップＳＥ１１０７へ進む。
【００８８】
一方、ステップＳＥ１１０３において、印刷実行に成功したと判定した場合は、ステップＳＥ１１０５へ進む。ステップＳＥ１１０５において、図１４ｃのプリント後文書消去チェックボックス１４２１がチェックされていたかどうかを判定する。プリント後に削除する指示があった場合、ステップＳＥ１１０６へ進み、パネル・アプリケーション４０７は、印刷ジョブを削除する。詳細は図１２にて後述する。そしてステップＳＥ１１０７に進む。ステップＳＥ１１０７で処理を終了する。
【００８９】
次にジョブ管理サービス４０３による印刷処理を説明する。ステップＳＣ１１００において、ジョブ管理サービス４０３の処理を開始する。ステップＳＣ１１０１において、ジョブ管理サービス４０３は、パネル・アプリケーション４０７のステップＳＥ１１０１から印刷指示コマンドを受信する。このとき、印刷対象の印刷ジョブのＧＵＩＤと複合機１０２のモデル名も受信する。ステップＳＣ１１０２において、ジョブ管理サービス４０３は、印刷実行変更のための論理プリンタを作成する。処理内容は、図９のステップＳＣ９０２と同じである。詳細は図１０で述べた通りである。
【００９０】
ステップＳＣ１１０３において、ジョブ管理サービス４０３は、図４のジョブ管理ＤＢ４０４からステップＳＣ１１０１で得たＧＵＩＤと一致するレコードを探索する。ステップＳＣ１１０４において、探索して得られたレコードからＥＭＦＳＰＯＯＬのファイル名とDEVMODEとユーザトークンを取得する。ステップＳＣ１１０５において、ステップＳＣ１１０４で得たユーザトークンを使って、自身のスレッドを変更する。スレッドを変更している間、スレッドは図４のクライアント・アプリケーション４００で印刷を実行したユーザのセキュリティコンテキストで実行される。
【００９１】
ステップＳＣ１１０６において、ジョブ管理サービス４０３は、ステップＳＣ１１０２で得た論理プリンタに対し、ステップＳＣ１１０４で得たＥＭＦＳＰＯＯＬとDEVMODEをレンダリングして印刷処理を実行する。論理プリンタを構成するプリンタドライバはＰＤＬを生成し、複合機１０２にＰＤＬを送信する。ＳＣ１１０６において送信されたＰＤＬを用いて複合機１０２は印刷処理を実行する。ステップＳＣ１１０７において、ジョブ管理サービス４０３は、スレッドの変更を解除する。ステップＳＣ１１０８において、ジョブ管理サービス４０３は、パネル・アプリケーション４０７へ印刷実行結果（成否）を返信する。ステップＳＣ１１０９で処理を終了する。
【００９２】
図１２は、本発明のプリントシステムにおける第５の制御処理手順の一例を示すフローチャートであり、図４に示した５−１から５−４までの処理手順に対応する。ステップＳＥ１２００〜ステップＳＥ１２０３は、図４に示したパネル・アプリケーション４０７による印刷ジョブ削除指示処理に対応する。これらフローチャートの処理は、図１に示した複合機１０２のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。ステップＳＣ１２００〜ステップＳＣ１２０７は、図４に示したジョブ管理サービス４０３処理による印刷ジョブ削除処理に対応する。これらフローチャートの処理は、図１に示したジョブ管理サーバ１０１のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。ステップＳＤ１２００〜ステップＳＤ１２０４は、図４に示したアドレス管理サービス４０５による印刷ジョブ識別子登録解除処理に対応する。これらフローチャートの処理は、図１に示したアドレス管理サーバ１０３のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。
【００９３】
まず、パネル・アプリケーション４０７による印刷ジョブ削除指示処理を説明する。ステップＳＥ１２００において、パネル・アプリケーション４０７の処理を開始する。なお、前述した通りステップＳＥ１２００の呼び出しは、図１１のステップＳＥ１１０６であるが、もう一つ図１２ｃの消去ボタン１４２１押下を受け付けた場合も同様に同ステップを呼び出す。ステップＳＥ１２０１において、パネル・アプリケーション４０７は、削除対象の印刷ジョブのＧＵＩＤを取得する。ステップＳＥ１２０２において、パネル・アプリケーション４０７は、印刷管理サービス４０３へ印刷ジョブ削除指示コマンドを送信する。このときステップＳＥ１２０１で取得したＧＵＩＤも送信する。ステップＳＥ１２０３で処理を終了する。
【００９４】
次にジョブ管理サービス４０３による印刷ジョブ削除処理を説明する。ステップＳＣ１２００において、ジョブ管理サービス４０３の処理を開始する。ステップＳＣ１２０１において、ジョブ管理サービス４０３は、パネル・アプリケーション４０７のステップＳＥ１２０２から印刷ジョブ削除指示コマンドを受信する。このとき、削除対象の印刷ジョブのＧＵＩＤも受信する。ステップＳＣ１２０２において、ジョブ管理サービス４０３は、アドレス管理サービス４０５へ印刷ジョブ識別子登録解除コマンドを送信する。このとき、ステップＳＣ１２０１で得たＧＵＩＤも送信する。ステップＳＣ１２０３において、ジョブ管理サービス４０３は、図４のジョブ管理ＤＢ４０４からステップＳＣ１２０１で得たＧＵＩＤと一致するレコードを探索する。
【００９５】
ステップＳＣ１２０４において、ジョブ管理サービス４０３は、探索して得られたレコードからＥＭＦＳＰＯＯＬのファイル名を取得する。ステップＳＣ１２０５において、ジョブ管理サービス４０３は、ＥＭＦＳＰＯＯＬのファイルを削除する。ステップＳＣ１２０６において、ジョブ管理サービス４０３は、図４のジョブ管理ＤＢ４０４からステップＳＣ１２０３で得たレコードを削除する。ステップＳＣ１２０７で処理を終了する。
【００９６】
次にアドレス管理サービス４０５による印刷ジョブ識別子登録解除処理を説明する。ステップＳＤ１２００において、アドレス管理サービス４０５の処理を開始する。ステップＳＤ１２０１において、アドレス管理サービス４０５は、ジョブ管理サービス４０３のステップＳＣ１２０２から印刷ジョブ識別子登録解除コマンドを受信する。このとき対象の印刷ジョブ識別子であるＧＵＩＤも受信する。ステップＳＤ１２０２において、アドレス管理サービス４０５は、図４のアドレス管理ＤＢ４０６からステップＳＤ１２０１で得たＧＵＩＤと一致するレコードを探索する。ステップＳＤ１２０３において、アドレス管理サービス４０５は、図４のジョブ管理ＤＢ４０４からステップＳＤ１２０２で得たレコードを削除する。ステップＳＤ１２０４で処理を終了する。
【００９７】
図１５は、本発明のプリントシステムにおける第６の制御処理手順の一例を示すフローチャートであり、図４に示した４−２から４−５までの処理手順に対応する。ステップＳＣ１５００〜ステップＳＣ１５０９は、図４に示したジョブ管理サービス４０３による印刷処理に対応する。これらフローチャートの処理は、図１に示したジョブ管理サーバ１０１のＣＰＵが外部メモリに格納されたプログラムをＲＡＭ上にロードして実行することにより実現される。この制御処理は、クライアント上のアプリケーション４００の機能がプリントサーバ側１０１のプリンタドライバ４０８でサポートされていない場合の処理である。具体的には、例えば、クライアント上のアプリケーション４００で設定された原稿用紙サイズを、実際に出力するプリンタ１０２に設置してある用紙に合わせて拡大もしくは縮小して印刷する機能があるとする。プリントサーバ側１０１のプリンタドライバ４０８がこの拡大縮小印刷機能をサポートしている場合、そのままＥＭＦＳＰＯＯＬ形式の印刷ジョブをプリンタドライバ４０８に送信することにより、印刷が行われる。一方、本実施形態のプルプリントシステムでは、プリンタドライバ４０８がその機能をサポートしていない場合であっても、拡大縮小印刷処理を行わないで原稿用紙サイズのまま出力されてしまうのを回避する処理を行う。また、プリンタドライバ４０８が拡大縮小印刷機能自体はサポートしていたものの、拡大もしくは縮小する対象の用紙をサポートしてない場合であっても、本実施形態は拡大縮小印刷機能を正しく動作させることができる。なお、以下の制御処理はプリントサーバ１０１上のジョブ管理サービス４０３が行うが、特にこれに限定するものではない。
【００９８】
まずジョブ管理サービス４０３はパネル・アプリケーション４０７より印刷要求信号を受信すると、ジョブ管理ＤＢ４０４より該当するＥＭＦＳＰＯＯＬ形式の印刷ジョブを取得する。ＥＭＦＳＰＯＯＬ形式の印刷ジョブを取得した後、ステップＳＣ１５０１において、ジョブ管理サービス４０３は、その印刷ジョブからクライアントＰＣ１００のアプリケーション４００または仮想プリンタドライバ４０１が設定した印刷設定情報を取得する。さらに、ステップＳＣ１５０２において、ジョブ管理サービス４０３は、取得した印刷設定の中で特に描画処理に関連する項目の設定が有効になっているかどうかを判定する。
【００９９】
ステップＳＣ１５０２において描画処理に関連する項目の設定が有効である場合、ステップＳＣ１５０３において、ジョブ管理サービス４０３は、実際に出力するプリンタドライバ４０８を起動する。そして、ジョブ管理サービス４０３（機能判定手段）は、その描画処理に関連する項目の機能をサポートしているかどうかを問い合わせる。問い合わせの方法としては、一般的なＷｉｎｄｏｗｓ（登録商標）のＡＰＩを使って該当する機能が有効かどうかを調べる方法を用いるが、プリンタドライバによっては特別に問い合わせするＩ／Ｆを使ってもよい。もしくは、当該Ｉ／Ｆが設けられていない場合は、その機能をサポートしていないと判断してもよい。
【０１００】
ステップＳＣ１５０４における問い合わせの結果、プリンタドライバ４０８がその機能をサポートしていない場合、ステップＳＣ１５０６において、ジョブ管理サービス４０３（加工手段）はＥＭＦＳＰＯＯＬ形式の印刷ジョブを加工する処理を行う。一方、ステップＳＣ１５０４においてその機能をサポートしている場合、ステップＳＣ１５０５において、ジョブ管理サービス４０３（設定判定手段）は、その機能に該当する印刷設定が有効かどうかを判定する。ステップＳＣ１５０５において該当する印刷設定が無効であった場合、ステップＳＣ１５０６に進み、ジョブ管理サービス４０３は、ＥＭＦＳＰＯＯＬ形式の印刷ジョブを加工する処理を行う。一方、ステップＳＣ１５０５において該当する印刷設定が有効だった場合は、ステップＳＣ１５０８に進む。ステップＳＣ１５０５において印刷設定が有効であるかどうかを判定する手段は、ステップＳＣ１５０３における機能の問い合わせと同様に行われる。例えば、Ｗｉｎｄｏｗｓ（登録商標）のＡＰＩを使って調べる方法、またはプリンタドライバによっては特別に用意されているＩ／Ｆを使って問い合わせを行う方法が用いられる。
【０１０１】
次にステップＳＣ１５０６におけるジョブ管理サービス４０３が行うＥＭＦＳＰＯＯＬ形式の印刷ジョブの加工処理について具体的に説明する。ジョブ管理サービス４０３は、仮想プリンタドライバ４０１に設定されている機能を取得し、それに応じてＥＭＦＳＰＯＯＬ形式の印刷ジョブを加工する。例えばモノクロ印刷の設定が有効になっている場合において、ＥＭＦＳＰＯＯＬ形式の印刷ジョブがカラーデータであったとしたら、ジョブ管理サービス４０３は、ＥＭＦＳＰＯＯＬ形式の印刷ジョブを２値化してモノクロデータに変換する。ページ集約印刷の設定が有効になっている場合、ジョブ管理サービス４０３は、割り付ける数や割り付け方法に応じて１ページごとに縮小処理を行って、適切な位置に割り付ける。拡大縮小印刷の設定が有効になっている場合、ジョブ管理サービス４０３は、出力用紙に応じて適切なサイズに変換する。拡大縮小印刷の機能に関連する処理については第２の実施形態で詳細に説明する。
【０１０２】
ステップＳＣ１５０６においてＥＭＦＳＰＯＯＬ形式の印刷ジョブの加工処理が完了すると、ステップＳＣ１５０６において、ジョブ管理サービス４０３は、プリントサーバ１０１のプリンタドライバ４０８に送信する印刷設定の該当する設定を無効にする。ステップＳＣ１５０８において、ジョブ管理サービス４０３は、加工したＥＭＦＳＰＯＯＬ形式の印刷ジョブ及び設定を無効にした印刷設定をプリントサーバ１０１のプリンタドライバ４０８に送信し、印刷処理を指示する。
【０１０３】
本実施形態によれば、出力先となったプリンタドライバ４０８が描画関連の印刷機能をサポートしていない場合は、ジョブ管理サービス４０３が代行してＥＭＦＳＰＯＯＬ形式の印刷ジョブを加工する。したがって、出力先のプリンタドライバの機能の有無を問わず、ユーザが意図した印刷結果を提供することが可能になる。一方、プリントサーバ１０１のプリンタドライバ４０８がその機能をサポートしている場合は、ジョブ管理サービス４０３はＥＭＦＳＰＯＯＬ形式の印刷ジョブを加工しない。これにより、描画処理を各プリンタドライバに任せることになるので、それぞれのプリンタドライバの設定を細かく反映した印刷結果を提供することができる。例えば、印字可能領域はプリンタ毎に異なる。この際、プリンタドライバに任せることで、プリンタ毎の印字可能領域を考慮した描画処理を行える。なお、仮想プリンタドライバ４０１が例えば全てのＥＭＦＳＰＯＯＬ形式の印刷ジョブをモノクロで印刷させる機能（いわゆる「強制モノクロ機能」）を備えており、プリントサーバ１０１のプリンタドライバ４０８がその機能を備えていない場合がある。この場合においても、ジョブ管理サービス４０３がＥＭＦＳＰＯＯＬ形式の印刷ジョブをモノクロに加工してからプリンタドライバ４０８に送信してもよい。これにより、カラーで作成された文書でも強制的にモノクロで出力させることができる。
【０１０４】
以上述べたように、本実施形態によれば、ジョブ管理サービス４０３がＥＭＦＳＰＯＯＬ形式の印刷ジョブを直接加工するので、プリントサーバのプリンタドライバがサポートする機能の有無に依存せず、ユーザが期待した印刷設定情報で印刷することが可能となる。特に、ユーザがクライアントＰＣ上で設定した描画処理に関連する印刷設定情報において、実際に印刷を行うプリンタドライバがその機能をサポートしていない場合であっても、ユーザが所望した印刷結果を提供することができる。
【０１０５】
（第２の実施形態）
続いて、本発明の第２の実施形態であるプリントシステムについて説明する。第２の実施形態であるプリントシステムは、図１に示す第１の実施形態と同様の構成を有し、クライアントＰＣ、プリントサーバ（印刷制御装置）、アドレス管理サーバ、および印刷装置を含む。第２の実施形態であるプリントシステムは、特定の描画処理がカラー／モノクロ印刷機能や集約印刷機能であった場合の特別な処理を含む。具田的には、その処理は、ＥＭＦＳＰＯＯＬ形式の印刷ジョブの加工処理に加え、さらに特定の描画処理が拡大縮小印刷機能であった場合のＥＭＦＳＰＯＯＬ形式の印刷ジョブの加工処理を含む。
【０１０６】
図１６は、本発明のプリントシステムにおける第７の制御処理手順の一例を示すフローチャートであり、図４に示した４−２から４−５までの処理手順に対応する。。ステップＳＣ１６００〜ステップＳＣ１６０９は、図４に示したジョブ管理サービス４０３による印刷処理に対応する。これらフローチャートの処理は、図１に示したジョブ管理サーバ１０１のＣＰＵが外部メモリに格納された印刷制御プログラムをＲＡＭ上にロードして実行することにより実現される。この制御処理は、特定の描画処理が拡大縮小印刷機能であった場合のＥＭＦＳＰＯＯＬ形式の印刷ジョブの加工処理である。ステップＳＣ１６００からステップＳＣ１６０４までの処理は、第１の実施形態におけるステップＳＣ１５００からステップＳＣ１５０４と同様であるので詳細な説明は省略する。
【０１０７】
ステップＳＣ１６０４において、ジョブ管理サービス４０３は出力先のプリントサーバ１０１のプリンタドライバ４０８が拡大縮小印刷機能をサポートしているかどうかを判定する。サポートしている場合は、ステップＳＣ１６０５において、ジョブ管理サービス４０３は、プリンタドライバ４０８に対して、実際に出力する用紙をサポートしているかどうかを問い合わせる。問い合わせ方法は、第１の実施形態で説明したとおり、一般的なＷｉｎｄｏｗｓ（登録商標）のＡＰＩを使用する方法、またはプリンタドライバよって特別に用意してある特別なＩ／Ｆによって行う。具体的な問い合わせ方法ついて以下に説明する。まずジョブ管理サービス４０３が該当するＥＭＦＳＰＯＯＬ形式の印刷ジョブの中に格納されている印刷設定情報を取得し、その情報から拡大縮小後の出力用紙サイズを取得する。ジョブ管理サービスは、取得した出力用紙サイズを先ほどのＩ／Ｆを使ってプリンタドライバに渡し、拡大縮小が行えるかどうかを問い合わせる。そのＩ／Ｆの戻り値は、拡大縮小が行えるかどうかを返す。その値がＹｅｓの場合、ジョブ管理サービス４０３は、該当する用紙サイズをサポートしていると判断し、その値がＮｏの場合は、サポートしていないと判断する（ＳＣ１６０５）。
ステップＳＣ１６０５における問い合わせの結果、プリンタドライバ４０８がその用紙をサポートしていない場合、またはステップＳＣ１６０４においてプリンタドライバ４０８が拡大縮小印刷機能をサポートしていない場合、ステップＳＣ１６０６に進む。ステップＳＣ１６０６において、ジョブ管理サービス４０３は、ＥＭＦＳＰＯＯＬ形式の印刷ジョブにおける描画データを出力用紙サイズに拡大もしくは縮小する加工処理を行う。
【０１０８】
ジョブ管理サービス４０３が拡大縮小処理を行うとき、描画領域を算出する処理を行う。この算出処理は用紙が定形用紙サイズであるか不定形用紙サイズであるかによって異なる。定形用紙サイズとは、ＯＳやドライバ内部に予め定義されている用紙のサイズをいう。不定形用紙サイズとは、ユーザが独自にＯＳに登録した用紙のサイズ、他のプリンタドライバが内部的に定義している用紙のサイズなどをいう。不定形用紙サイズは、定形用紙サイズ以外のサイズをいう。例えば、不定形用紙サイズとは、印刷時に用紙サイズのＩＤ（Ａ４やレターなど）によって指定される用紙のサイズではなく、用紙の幅／高さのみによって指定されたサイズの用紙をいう。また、不定形用紙サイズは、それを意図的に提示するためのＩＤ（Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）では「２５６」という数値）によって指定された用紙のサイズをいう。出力用紙サイズが定形用紙サイズの場合、ジョブ管理サービス４０３（用紙判定手段）は、用紙のＩＤから描画領域の幅／高さを内部的に定義している数値、またはＯＳに登録している用紙サイズの幅/高さの数値を使用して描画領域を算出する。出力用紙サイズが不定形サイズの場合、ジョブ管理サービス４０３は印刷設定から拡大縮小後の用紙の幅／高さを取得し、拡大もしくは縮小する描画領域を算出する。
【０１０９】
ステップＳＣ１６０６において、ジョブ管理サービス４０３は、算出した描画領域に対して、ＥＭＦＳＰＯＯＬ形式の印刷ジョブにおける描画データの拡大または縮小の加工処理を行う。続いてステップＳＣ１６０７において、ジョブ管理サービス４０３は、印刷設定情報の該当する項目を無効にする。具体的には、ジョブ管理サービス４０３は、取得した印刷設定情報の原稿用紙サイズの項目に拡大縮小処理を行った出力用紙サイズの値を設定することにより、印刷設定情報の該当する項目を無効にする。ここで、印刷設定情報の出力用紙サイズを設定する項目に対して、拡大縮小しないような値（例えば「原稿用紙サイズと同じ」設定値）を設定する。一方、拡大縮小後の出力用紙サイズが不定形サイズの場合、ジョブ管理サービス４０３は、取得した印刷設定情報の原稿用紙サイズに不定形サイズを設定し、同時に用紙の幅／高さも設定する。ステップＳＣ１６０８からステップＳＣ１６０９の処理は、第１の実施形態のステップＳＣ１５０８からステップＳＣ１５０９と同様の処理なので説明は省略する。
【０１１０】
第２の実施形態によれば、印刷指示を受けたプリントサーバ１０１のプリンタドライバ４０８は拡大縮小設定に関する処理を行わずに、印刷設定情報の原稿用紙サイズの項目に設定されている用紙サイズで印刷データ（ＰＤＬデータ）を作成する。これによって、ユーザが所望する拡大縮小処理がされた印刷データが出力される。なお、出力する用紙サイズを強制的に指定してもよい。通常のクライアント・アプリケーション４００は原稿用紙サイズに関するデータを保持しているものが多い。したがって、それぞれのクライアント・アプリケーション４００に対してそれぞれ原稿用紙サイズを変更することは非効率的であるので、出力する用紙サイズを強制的に指定することによって、効率的に印刷データを出力することができる。
【０１１１】
（第３の実施形態）
第２の実施形態で説明した処理は、プリンタドライバ４０８が拡大縮小印刷機能をサポートしていない場合、実際に出力するプリンタドライバ４０８に送信する印刷設定の原稿用紙サイズに不定形サイズを設定して、印刷データを送信するものであった。第３の実施形態では、さらに不定形サイズでは使用できない機能（両面印刷など）が存在しても、印刷を行うことができる。第３の実施形態において、ステップＳＣ１６００からステップＳＣ１６０５までの処理は、第２の実施形態と同様であるので詳細な説明を省略する。
【０１１２】
ステップＳＣ１６０４において、プリンタドライバ４０８が拡大縮小印刷機能をサポートしていない場合、ステップＳＣ１６０６において、ジョブ管理サービス４０３は、ＥＭＦＳＰＯＯＬ形式の印刷ジョブの拡大もしくは縮小の加工処理を行う。続いてジョブ管理サービス４０３は、実際に出力するプリンタドライバ４０８からサポートする用紙サイズのリストを取得する。ジョブ管理サービス４０３は、取得した用紙サイズのリストの中に拡大または縮小した用紙サイズがあるかどうかを判定する。拡大または縮小した用紙サイズがリストにある場合、ジョブ管理サービス４０３は、プリンタドライバ４０８がその用紙サイズをサポートしていると判断する。そして、ステップＳＣ１６０８において、用紙サイズのＩＤを印刷設定の原稿用紙サイズの項目に設定してプリンタドライバ４０８に送信する。ステップＳＣ１６０８からステップＳＣ１６０９の処理は、第２の実施形態と同様であるので詳細な説明は省略する。
【０１１３】
第３の実施形態によれば、ジョブ管理サービス４０３より呼び出されたプリンタドライバ４０８に、定形サイズが設定された印刷設定が送信されるので、不定形サイズでは使用できない機能、例えば両面印刷機能を提供することができる。
（第４の実施形態）
第１の実施形態おいて、プリントサーバ１０１は「事業所Ａの階毎に設置」という例のように社内にサーバＰＣを設置して運用することを想定しているが、このサーバがクラウドコンピューティングサービスを利用した外部サーバとしてもよい。その場合、クライアントＰＣ１００の仮想プリンタドライバ４０１は中間形式の印刷ジョブを外部サーバに送信する。また、プルプリントするデバイス１０２は上記外部サーバから該当する中間形式の印刷ジョブに基づいて生成されたＰＤＬジョブを受信する。送受信方法としては内部のサーバに送受信する方法と差異はない。ただし、外部サーバと通信する場合はネットワークトラフィックに関する問題や、セキュリティ面において注意する必要がある。例えば、外部サーバに送受信する場合、ネットワーク負荷を軽減するために印刷ジョブのサイズを縮小する必要がある。この方法としては印刷ジョブの圧縮や、分散処理などの方法がある。またセキュリティ面においては印刷ジョブのコンテンツが外部ネットワークに漏洩する状況が発生する。この状況を回避するためには印刷ジョブの暗号化などの方法がある。これらの問題を解決することにより、外部サーバを利用したプルプリントシステムが実現可能となる。サーバ１０１内部の処理については、第１の実施形態と同じである。
第４の実施形態によれば、社内やもしくは事業所内にプルプリント用のサーバＰＣを別途用意する必要がない。またサーバＰＣのメンテナンスの必要もなくなる。
【０１１４】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【０１１５】
１００  クライアントＰＣ
１０１  プリントサーバ
【図１】
2013050935.tif 000003
【図２】
2013050935.tif 000004
【図３】
2013050935.tif 000005
【図４】
2013050935.tif 000006
【図５】
2013050935.tif 000007
【図６】
2013050935.tif 000008
【図７】
2013050935.tif 000009
【図８】
2013050935.tif 000010
【図９】
2013050935.tif 000011
【図１０】
2013050935.tif 000012
【図１１】
2013050935.tif 000013
【図１２】
2013050935.tif 000014
【図１３ａ】
2013050935.tif 000015
【図１３ｂ】
2013050935.tif 000016
【図１３ｃ】
2013050935.tif 000017
【図１３ｄ】
2013050935.tif 000018
【図１４ａ】
2013050935.tif 000019
【図１４ｂ】
2013050935.tif 000020
【図１４ｃ】
2013050935.tif 000021
【図１４ｄ】
2013050935.tif 000022
【図１４ｅ】
2013050935.tif 000023
【図１４ｆ】
2013050935.tif 000024
【図１５】
2013050935.tif 000025
【図１６】
2013050935.tif 000026