(57)【特許請求の範囲】
【請求項１】
印刷制御のためのアプリケーションと、出力先のプリンタに対応するプリンタドライバとが動作する情報処理装置であって、
ループバックアドレスで指定した待ち受けポートによる待ち受けを行うことで、前記アプリケーションにより前記待ち受けポートを送信ポートとして設定された前記プリンタドライバから、前記アプリケーションからのデータから生成した印刷データを受信する受信手段と、
前記受信手段による前記印刷データに係る通信の完了に従い、前記印刷データのスプールの完了を判断する判断手段と、
受信した前記印刷データから、前記アプリケーションからのデータに係る情報を特定する特定手段と、
前記判断されたスプール完了、前記印刷データ、及び特定された前記アプリケーションからのデータに係る情報を、前記アプリケーションに対して通知する通知手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記アプリケーションは、前記プリンタドライバの送信ポートとして、印刷開始のタイミングで、前記待ち受けポートを設定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記受信手段は、前記プリンタドライバからＲＡＷプロトコルで印刷データを受信することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記アプリケーションは、前記プリンタドライバに印刷データの生成を要求する前に印刷予約を行い、該印刷予約に応じたジョブＩＤを発行することを特徴とする請求項１乃至３のいずれか一項に記載の情報処理装置。
【請求項５】
前記アプリケーションは、前記出力先のプリンタが、サポートされていないプリンタである場合には、プロトコルとしてＬＰＲを、ＬＰＲのキュー名として前記ジョブＩＤを指定した前記待ち受けポートを、前記プリンタドライバの送信ポートとして設定することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記プリンタドライバは、前記情報処理装置を管理するオペレーティングシステムが提供する標準のポートモニタを利用して印刷データを出力することを特徴とする請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記アプリケーションは、前記通知された印刷データを、出力先となる前記プリンタに対して送信することを特徴とする請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項８】
出力先のプリンタに対応するプリンタドライバが動作する情報処理装置であって、
印刷指示を受け付けると、指定されたプリンタに対応する送信ポートを、ループバックアドレスで指定した所定の待ち受けポートに変更する変更手段と、
前記プリンタドライバにより生成された印刷データを、前記所定の待ち受けポートを介して受信し、前記プリンタに受信した前記印刷データを送信する手段と、
前記プリンタと通信して印刷の状態を監視する監視手段と
を有することを特徴とする情報処理装置。
【請求項９】
前記印刷の状態には、前記プリンタの状態と前記印刷データに係るジョブの状態を含むことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
印刷制御のためのアプリケーションと、出力先のプリンタに対応するプリンタドライバとが動作する情報処理装置を、
ループバックアドレスで指定した待ち受けポートによる待ち受けを行うことで、前記アプリケーションにより前記待ち受けポートを送信ポートとして設定された前記プリンタドライバから、前記アプリケーションからのデータから生成した印刷データを受信する受信手段と、
前記受信手段による前記印刷データに係る通信の完了に従い、前記印刷データのスプールの完了を判断する判断手段と、
受信した前記印刷データから、前記アプリケーションからのデータに係る情報を特定する特定手段と、
前記判断されたスプール完了、前記印刷データ、及び特定された前記アプリケーションからのデータに係る情報を、前記アプリケーションに対して通知する通知手段と
して機能させるためのプログラム。
【請求項１１】
出力先のプリンタに対応するプリンタドライバが動作する情報処理装置を、
印刷指示を受け付けると、指定されたプリンタに対応する送信ポートを、ループバックアドレスで指定した所定の待ち受けポートに変更する変更手段と、
プリンタドライバにより生成された印刷データを、前記所定の待ち受けポートを介して受信し、前記プリンタに受信した前記印刷データを送信する手段と、
前記プリンタと通信して印刷の状態を監視する監視手段と
して機能させるためのプログラム。
【請求項１２】
印刷制御のためのアプリケーションと、出力先のプリンタに対応するプリンタドライバとが動作する情報処理装置による印刷制御方法であって、
ループバックアドレスで指定した待ち受けポートによる待ち受けを行うことで、前記アプリケーションにより前記待ち受けポートを送信ポートとして設定された前記プリンタドライバから、前記アプリケーションからのデータから生成した印刷データを受信する受信工程と、
前記受信工程による前記印刷データに係る通信の完了に従い、前記印刷データのスプールの完了を判断する判断工程と、
受信した前記印刷データから、前記アプリケーションからのデータに係る情報を特定する特定工程と、
前記判断されたスプール完了、前記印刷データ、及び特定された前記アプリケーションからのデータに係る情報を、前記アプリケーションに対して通知する通知工程と
を有することを特徴とする印刷制御方法。
【請求項１３】
出力先のプリンタに対応するプリンタドライバが動作する情報処理装置による印刷制御方法であって、
印刷指示を受け付けると、指定されたプリンタに対応する送信ポートを、ループバックアドレスで指定した所定の待ち受けポートに変更する変更工程と、
プリンタドライバにより生成された印刷データを、前記所定の待ち受けポートを介して受信し、前記プリンタに受信した前記印刷データを送信する工程と、
前記プリンタと通信して印刷の状態を監視する監視工程と
を有することを特徴とする印刷制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、印刷制御方法、およびプログラムに関する。
【背景技術】
【０００２】
一般的に、ユーザーがWindows（登録商標）システムにおいて印刷処理を実行する際、ユーザーはWindows（登録商標）システムにあらかじめ組み込まれている標準ポートモニターを指定して印刷指示を行う。そして標準ポートモニターによって、プリンタドライバが生成する印刷データが印刷装置に送信される。しかしながら標準ポートモニターは印刷装置に印刷データの送信が完了した時点で印刷ジョブを削除するため、排紙が完了をしたことをユーザーが知るためには実際に印刷装置の状況を確認するしかなかった。前述の問題を回避するため、印刷を管理する印刷サーバー等ではカスタムポートモニターを用意し、カスタムポートモニターを利用して印刷サーバーで必要な処理を行う方法が知られている。例えば、プリンタドライバが生成した印刷データと文書名や印刷属性等の印刷ジョブ属性情報とをカスタムポートモニターから印刷サーバーに送信し、印刷サーバー側で印刷データと印刷ジョブ属性情報を保持することより、排紙完了までの印刷の管理を行うことが可能となる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2007-328558号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、標準ポートモニターしか動作しないシステムが考えられる。例えば現行のMicrosoft Windows8（登録商標）では、新しいプリンタドライバのアーキテクチャが導入されており、カスタムポートモニターをWindows（登録商標）システムに登録できない仕組みとなっている。このようなシステムでは、印刷サーバー側での印刷データ、印刷ジョブ属性情報などの印刷関連データの保存、排紙完了までの印刷ジョブ管理などの機能を、カスタムポートモニターを用いて実現することができない。特許文献１では、印刷装置の第一のポートで受信した印刷データを取扱い可能な形式へ変換し、変換を行ったモジュールが変換したデータを、ループバックアドレスを利用して第二のポートへ送信する方法が発案されている。しかし、特許文献１で示される方法は、印刷データの送信元と送信先とが同一のアプリケーション内だからこそ実現可能な方法である。例えば、一般的にWindows（登録商標）スプーラと印刷サーバーの場合、印刷サーバーから標準ポートモニターに対して印刷サーバーが必要な処理を行わせ、印刷データを印刷サーバーに送信させることはできない。
【０００５】
本発明は上記従来例に鑑みて成されたもので、カスタムポートモニターを利用することなく、アプリケーションによる印刷関連データの取得、ひいては印刷の管理を実現する情報処理装置、印刷管理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本発明は以下の構成を有する。
【０００７】
本発明の一側面によれば、印刷制御のためのアプリケーションと、出力先のプリンタに対応するプリンタドライバとが動作する情報処理装置であって、
ループバックアドレスで指定した待ち受けポートによる待ち受けを行うことで、前記アプリケーションにより前記待ち受けポートを送信ポートとして設定された前記プリンタドライバから、前記アプリケーションからのデータから生成した印刷データを受信する受信手段と、
前記受信手段による前記印刷データに係る通信の完了に従い、前記印刷データのスプールの完了を判断する判断手段と、
受信した前記印刷データから、前記アプリケーションからのデータに係る情報を特定する特定手段と、
前記判断されたスプール完了、前記印刷データ、及び特定された前記アプリケーションからのデータに係る情報を、前記アプリケーションに対して通知する通知手段とを有する。
【０００８】
本発明の他の側面によれば、出力先のプリンタに対応するプリンタドライバが動作する情報処理装置であって、
印刷指示を受け付けると、指定されたプリンタに対応する送信ポートを、ループバックアドレスを含む所定の待ち受けポートに変更する変更手段と、
前記プリンタドライバにより生成された印刷データを、前記所定の待ち受けポートを介して受信し、前記プリンタに受信した前記印刷データを送信する手段と、
前記プリンタと通信して印刷の状態を監視する監視手段とを有する。
【発明の効果】
【０００９】
本発明によれば、標準ポートモニターからアプリケーションへの印刷データ、印刷ジョブ属性情報等の印刷関連データの受け渡しが可能となり、カスタムポートモニターを使用することなくアプリケーションによる印刷関連データの取得、ひいては印刷の管理を実現できる。
【図面の簡単な説明】
【００１０】
【図１】印刷システムの全体構成を示す図である。
【図２】印刷サーバー１０１、クライアント端末１０２のハードウェア構成図である。
【図３】ＲＡＭ２０３のメモリマップの一例を示す図である。
【図４】印刷システムのモジュール構成を示す図である。
【図５】実施形態１における、印刷管理モジュール４０１がデータベース１０４に保持する情報を示すメモリマップの一例である。
【図６】印刷管理モジュール４０１がクライアント端末１０２から印刷指示を受けてからプリンタドライバ４１０に対して描画指示をするまでの処理を示すフローチャートである。
【図７】印刷データ受信モジュール４０３がプリンタドライバ４１０から印刷データを受け付け、送信モジュール４０４へ通知するまでの処理を示すフローチャートである。
【図８】送信モジュール４０４が印刷データ受信モジュール４０３から印刷データ、印刷ジョブ属性情報を受け取ってから、プリンタ１０３において排紙が完了するまでの処理を示すフローチャートである。
【図９】実施形態２における、印刷管理モジュール４０１がデータベース１０４に保持する情報の一例を示すメモリマップである。
【図１０】印刷データの解析ができない場合の印刷管理モジュール４０１の処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を用いて説明する。
［実施形態１］
＜システム構成＞
図１は、本発明の実施形態に係る印刷システムの全体構成を示す図である。図１において、印刷サーバー１０１、クライアント端末１０２、プリンタ１０３、データベース１０４はネットワーク１００を介して接続されている。
【００１２】
ネットワーク１００は、例えば、インターネット等のＬＡＮ、ＷＡＮ、電話回線、専用デジタル回線、ＡＴＭやフレームリレー回線、ケーブルテレビ回線、データ放送用無線回線等のいずれである。またこれらの組み合わせにより実現される、いわゆる通信ネットワークである。ネットワーク１００は、データの送受信が可能であればよい。そして、クライアント端末１０２から印刷サーバー１０１、印刷サーバー１０１から出力先のプリンタ１０３への通信手段は異なっていてもよい。また、本実施形態に含まれる装置間の通信はイーサネット（登録商標）ケーブルを利用した有線通信でもよいし、電波や光などを利用した無線通信でもよい。
【００１３】
印刷サーバー１０１は、外部インターフェースを有しており、クライアント端末１０２のＷｅｂブラウザや不図示の他システムから文書データや印刷指示要求を受け付ける。また、印刷サーバー１０１は、文書データの文書情報５００、印刷ジョブのジョブ情報５１０、プリンタ情報５２０、印刷データ受信モジュール情報５３０をデータベース１０４に保持する（図５参照）。印刷サーバー１０１は、複数台存在してもよく、その場合は、ロードバランサより仮想的にひとつの印刷サーバーとして振る舞うような冗長性を持たせた構成を取ることもできる。また、印刷サーバー１０１は、プリンタ１０３の監視や管理、印刷ジョブの制御や監視、プリンタ１０３への印刷ジョブの転送を行う。なお、後述するプリンタドライバ４１０は印刷サーバー１０１にインストールされており、図６−図８説明するフローチャートも印刷サーバー１０１上で実行される。
【００１４】
クライアント端末１０２は、例えば、デスクトップパソコン、ノートパソコン、モバイルパソコン、ＰＤＡ（パーソナルデータアシスタント）等から成るが、プログラムの実行環境が内蔵された携帯電話であってもよい。クライアント端末１０２では、Ｗｅｂブラウザ（インターネットブラウザ、ＷＷＷブラウザ、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂの利用に供するブラウザ）等のプログラムを実行する環境が内蔵されている。
【００１５】
データベース１０４は大容量記憶装置であり、印刷サーバーが使用する文書データの文書情報５００、印刷ジョブのジョブ情報５１０、プリンタ情報５２０、印刷データ受信モジュール情報５３０が格納されている。なお、本実施形態では、印刷サーバー１０１は、ネットワーク１００上のデータベース１０４を使用する構成をとっているが、印刷サーバー１０１の機器内に保持する構成をとっても良い。
【００１６】
＜ハードウェア構成＞
図２は、本発明の実施形態に係る印刷システムの印刷サーバー１０１、クライアント端末１０２のハードウェア構成図である。また、特に断らない限り、本発明の機能が実行可能であるならば、単体の機器であっても、複数の機器からなるシステムであっても、本発明が適用できることは言うまでもない。また、特に断らない限り、本発明の機能が実行可能であるならば、ＬＡＮ、ＷＡＮ等のネットワークを介して接続が為され、処理が行われるシステムであっても本発明を適用できることは言うまでもない。
【００１７】
ＣＰＵ２０１は情報処理装置の制御装置であり、ＨＤ２０７に格納されているアプリケーションプログラム、プリントドライバプログラム、オペレーティングシステムや、本発明の印刷システムプログラムを実行する。また、ＣＰＵ２０１はＲＡＭ２０３にプログラム実行に必要な情報、ファイル等を一時的に格納する制御を行う。また、ＣＰＵ２０１はディスプレイ２０６上の不図示マウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。
【００１８】
ＲＯＭ２０２は不揮発性の記憶手段であり、内部には基本Ｉ／Ｏプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。ＲＡＭ２０３は一時記憶手段であり、ＣＰＵ２０１の主メモリやワークエリア等として機能する。
【００１９】
インターフェース２０４は入出力手段であり、インターフェース２０４を介して情報処理装置は外部装置とのデータのやり取りを行う。キーボード２０５は指示入力手段であり、ユーザーが印刷サーバー等に命令等を入力指示するためのものである。ディスプレイ２０６は表示手段であり、キーボード３０５から入力したコマンド等を表示するものである。ハードディスク（ＨＤ）２０７は外部記憶手段の一つであり、大容量メモリとして機能する。ＨＤ２０７は、本発明の印刷システムプログラム、アプリケーションプログラム、プリントドライバプログラム、ＯＳ等を格納している。
【００２０】
＜メモリマップ＞
図３は、本発明の実施形態に係る図２に示したＲＡＭ２０３のメモリマップの一例を示す図であり、ＨＤ２０７からロードされる印刷システムプログラムがＲＡＭ２０３上にロードされ実行可能となった状態のメモリマップである。本実施形態では、ＨＤ２０７から印刷システムプログラム及び関連データを直接ＲＡＭ２０３にロードして実行させる例を示すが、これ以外にも、本印刷システムプログラムを記憶する媒体は、ＨＤ以外にＣＤ-ＲＯＭ、ＣＤ-Ｒ、ＰＣカード、ＤＶＤ、ＩＣメモリカードであってもよい。さらに、本印刷システムプログラムをＲＯＭ２０２に記憶しておき、これをメモリマップの一部となすように構成し、直接ＣＰＵ２０１で実行することも可能である。また、以上の各装置と同等の機能を実現するソフトウェアをもってハードウェア装置の代替として構成することもできる。
【００２１】
メモリマップ３００はＲＡＭ２０３に確保された各領域を示す。基本Ｉ/Ｏプログラム３０１は、情報処理装置の電源がＯＮされたときに、ＨＤ２０７からＯＳをＲＡＭ２０３に読み込み、ＯＳの動作を開始させるＩＰＬ（イニシャルプログラムローディング）機能などを有しているプログラムが入っている領域である。オペレーティングシステム（ＯＳ）３０２は、コンピュータの資源の管理等を行うプログラムである。本実施形態の印刷システムプログラム３０３は、ＲＡＭ２０３上に確保される領域に記憶され、ＣＰＵ２０１により実行される。関連データ３０４は、ＲＡＭ２０３上に確保される領域に記憶されるデータであり、またその記憶領域のことである。ワークエリア３０５は、ＣＰＵ２０１が本印刷システムプログラムを実行するために利用する領域が確保されている。
【００２２】
メモリマップ３１０は図２に示したＨＤ２０７のメモリマップの一例であり、ＨＤ２０７のデータ内容を示している。ＨＤ２０７には、ボリューム情報３０６、ディレクトリ情報３０７等の管理用情報と、本実施形態の印刷システムプログラム３０８、印刷システムプログラム３０８の関連データ３０９を含む。印刷システムプログラム３０８は本実施形態で説明するフローチャートに基づいてプログラム化したものであり、本実施形態では印刷サーバー１０１に同様の構成をとっている。印刷システムプログラム３０８を印刷プログラム３０８と称する場合もある。
【００２３】
＜印刷システム＞
次に本実施形態における、印刷システムの印刷処理について説明する。なお、印刷システムの印刷処理は上述した印刷システムプログラム３０８で実行される。印刷システムプログラム３０８の各ソフトウェアモジュールはＨＤ２０７に記憶されており、ＣＰＵ２０１によってＲＡＭ２０３にロードされ実行される。
【００２４】
＜モジュール構成＞
図４は、本発明の実施形態に係る印刷システムのモジュール構成を示す図である。本実施形態において、印刷システムプログラム３０８は、印刷管理モジュール４０１、印刷データ受信モジュール４０３、送信モジュール４０４、デバイス制御モジュール４０５を含む。印刷管理モジュール４０１と送信モジュール４０４、印刷データ受信モジュール４０３と送信モジュール４０４は、夫々ソフトウェアのインターフェース（ＡＰＩ）４０６、４０７を介して情報のやり取りを行う。なお、本実施形態では印刷管理モジュール４０１、印刷データ受信モジュール４０３、送信モジュール４０４、デバイス制御モジュール４０５はそれぞれ独立した構成を取っているが、同様の機能が実現できさえすれば特にその構成に限定するものではない。また、本実施形態において、オペレーティングシステム（ＯＳ）は、マイクロソフト社が提供するWindows（登録商標）システムを想定している。特に、本実施形態ではプリンタや印刷サーバーを提供するベンダーにより作成されるカスタムポートモニターを登録できない仕組みとなっているＯＳを想定している。
【００２５】
プリンタドライバ４１０、システムスプーラ４１１、標準ポートモニター４１２はオペレーティングシステム３０２により提供される。ただしプリンタドライバは製造者により提供されるモジュールを含むことがある。
【００２６】
印刷管理モジュール４０１は、外部インターフェース４０２を介して、クライアント端末１０２や、他アプリケーションから文書データや印刷指示を受け付ける。印刷管理モジュール４０１は受け付けた文書データや文書情報５００をデータベース１０４に保存する。また、印刷管理モジュール４０１は、印刷処理時、印刷の予約指示や印刷ジョブの取得などの情報を送信モジュールとやり取りを行い、プリンタドライバ４１０に対して描画指示を行う。また、印刷管理モジュール４０１は、システムスプーラ４１１に対して、標準ポートモニター４１２が制御する印刷ポートの変更指示を行う。たとえば、元々プリンタ１０３が設定されていたところを、ループバックアドレスおよび印刷データ受信モジュール４０３の待ち受けポートに変更する。ここでシステムスプーラ４１１は、上述のＯＳのプリントシステムで提供される機能の一つである。システムスプーラ４１１は、プリントドライバ４１０が生成する印刷データを受け付け、一時的にＨＤ２０７に保存したり、プリンタオブジェクトの管理などを行う。また、アプリケーションはＯＳが提供するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ Ｐｒｏｇｒａｍ Ｉｎｔｅｒｆａｃｅ）を介して、システムスプーラ４１１からプリンタオブジェクトの作成、変更、削除等の操作を行うことができる。
【００２７】
印刷データ受信モジュール４０３は、標準ポートモニター４１２から送信される印刷データを受信し、送信モジュール４０４に送信を行う。また、印刷データ受信モジュール４０３は、受信した印刷データの解析を行い、送信モジュール４０４で必要な印刷ジョブ属性情報を取得し送信モジュールに送信を行う。ここで、印刷ジョブ属性情報とは、文書名やユーザー名、印刷設定等の情報である。また、本実施形態において、標準ポートモニター４１２から印刷データ受信モジュール４０３への印刷データの送信は、印刷管理モジュール４０１による指示に応じて設定された印刷ポートであるループバックアドレスを介して行われる。具体的には標準ポートモニターからＮＩＣ２０４に印刷データが転送され、ＮＩＣ２０４から印刷データ受信モジュールが受信のために開いている通信ポート４１３に対して送信が行われる。通信ポート４１３は印刷データ受信モジュール４０３がリッスンするポートであり、否sつシステムプログラム３０８または印刷データ受信モジュール４０３の待ち受けポートとも呼ぶ。
【００２８】
送信モジュール４０４は、印刷管理モジュール４０１からの印刷の予約に対する応答や、印刷データ受信モジュール４０３から印刷データ、印刷ジョブ属性情報を受信し、印刷サーバー１０１のＨＤ２０７に保持する。また、送信モジュール４０４はデバイス制御モジュール４０５を介してプリンタ１０３の状態や、ジョブ状態の取得、制御を行い、デバイス制御モジュール４０５から受信したプリンタの状態やジョブ状態などを印刷管理モジュール４０１に通知する。また、送信モジュール４０４は印刷データ受信モジュール４０３から受信した印刷データをプリンタ１０３に送信する。デバイス制御モジュール４０５は送信モジュール４０４からの要求に応じてプリンタ１０３の状態を取得し、ジョブ状態の監視、ジョブキャンセルなどの制御を行う。プリンタドライバ４１０は、印刷管理モジュール４０１からの描画指示に応じて、アプリケーションプログラム等により作成された文書データからプリンタ１０３で解釈可能な印刷データに変換を行う。一般的なＯＳにおいて、印刷データはシステムスプーラ４１１から標準ポートモニター４１２を経て、所定の送信ポートから転送される。
【００２９】
なお印刷システムプログラム３０８において、印刷データ送信モジュール４０３以外の部分のことを、印刷制御のためのアプリケーションプログラムと呼ぶことがある。
【００３０】
＜文書情報５００、ジョブ情報５１０、プリンタ情報５２０、印刷データ受信モジュール情報５３０＞
図５は、本発明の実施形態に係る印刷管理モジュール４０１がデータベース１０４に保持する情報を示すメモリマップの一例である。文書情報５００は、クライアント端末１０２等から文書データが入稿された際に印刷管理モジュール４０１が作成する。
【００３１】
文書ＩＤ５０１は、文書データの入稿時に印刷管理モジュール４０１が発行する、文書データを特定するための一意の情報である。文書ＩＤ５０１は文書の入稿要求に対する応答としてクライアント端末１０２に渡され、クライアント端末１０２が印刷指示要求の情報に文書ＩＤ５０１を含めることで印刷管理モジュール４０１は印刷対象の文書を特定する。文書名５０２は、クライアント端末１０２からの文書入稿要求に含まれる情報であり、文書データの入稿後にクライアント端末１０２のＷｅｂブラウザで文書情報として表示される名称である。また本実施形態において、後述するプリンタドライバ４１０への描画命令にも使用される。文書保存先５０３は、データベース１０４上の文書データの存在場所を示す。印刷管理モジュール４０１は文書データの入稿の際に文書データを保存する場所を決定し、文書情報５００として保持する。ステータス５０４は、文書データの状態を示す。印刷管理モジュール４０１は、待機中、印刷待ち、印刷中、削除済み等といった文書データの状態に応じた値となるようステータス５０４を随時更新する。ジョブＩＤ５０５は、文書を印刷する際に送信モジュール４０４から通知され、印刷管理モジュール４０１が文書情報５００、ジョブ情報５１０に保持する一意のＩＤである。ジョブＩＤ５０５は文書情報５００とジョブ情報５１０を紐づけるために使用される。
【００３２】
ジョブ情報５１０は、クライアント端末１０２から印刷指示要求を受け付けた際に印刷管理モジュール４０１が作成する。文書名５０１、ジョブＩＤ５０５は文書情報５００に保持されているものと同様の情報が格納される。プリンタ名５１１は、クライアント端末１０２からの印刷指示要求に含まれる情報であり、印刷管理モジュール４０１は、プリンタ情報５２０を特定するために使用する。ステータス５１２は、印刷ジョブの状態を示し、印刷管理モジュール４０１は、送信モジュール４０４からの印刷ジョブ状態の通知に応じて随時更新する。
【００３３】
プリンタ情報５２０は、印刷管理モジュール４０１が管理するプリンタ１０３の情報であり、プリンタ毎に１組保持される。本実施形態では、印刷管理モジュール４０１へプリンタ情報を登録する手段に関しては特に説明しないが、たとえば新たなプリンタのインストール時に、インストーラプログラムにより登録することができる。プリンタ名５２１は、印刷管理モジュール４０１が管理するプリンタ１０３の名称である。プリンタ名５２１は、クライアント端末１０２のＷｅｂブラウザに表示する際に用いられ、印刷管理モジュール４０１がジョブ情報５１０のプリンタ名５１１からプリンタ情報５２０を特定するために使用する。ＩＰアドレス５２２はネットワーク１００上でプリンタ１０３を判別するための識別情報であり、印刷管理モジュール４０１が印刷予約要求時に送信モジュール４０４へ渡す情報である。送信モジュール４０４は、ＩＰアドレス５２２で特定されるプリンタ１０３に対して印刷データの送信を行う。システムプリンタ名５２３は、印刷管理モジュール４０１がＯＳ上にプリンタオブジェクトが存在することを確認し、送信ポートの変更を行う際に使用される。システムプリンタ名５２３は、オペレーティングシステムに登録されたプリンタ名である。ステータス５２４はプリンタ１０３の状態を示し、送信モジュール４０４からのプリンタ１０３の状態の通知に応じて印刷管理モジュール４０１が随時更新を行う。印刷データ受信モジュール情報５３０は、印刷データ受信モジュール４０３の設定情報を示す。本実施形態では、印刷データ受信モジュール情報５３０は、例えば印刷システムプログラム３０８の機能を用いてユーザーが事前に設定するものとする。印刷データ受信モジュール情報５３０は印刷データ受信モジュール４０３の実際の動作に用いている情報と一致している必要がある。印刷プロトコル５３１は、印刷データ受信モジュール４０３が印刷データを待ち受ける印刷プロトコルの種類を示す。印刷管理モジュール４０１は、後述するＯＳの送信ポートを作成する際に印刷プロトコル５３１を参照する。本実施形態において、印刷プロトコルの種類としては、ＲＡＷプロトコル（read after write）を想定している。その他の印刷プロトコルとして、ＬＰＲ（line printer remote）、ＩＰＰ（Internet Printing Protocol）などが挙げられる。待ち受けポート番号５３２は、印刷データ受信モジュール４０３が印刷データの受信のために開いている通信ポート番号である。ループバックアドレス５３３は、印刷データ受信モジュール４０３が開いている通信ポートのＩＰアドレスである。ループバックアドレスとは一般的に自分自身を示すＩＰアドレスである。慣例的にＩＰｖ４（Internet Protocol version4）では「１２７．０．０．１」、ＩＰｖ６（Internet Protocol version6）では「：：１」が使用される。
【００３４】
＜印刷管理モジュール４０１の印刷開始処理＞
以下、本実施形態における印刷処理に関してフローチャートを用いて説明する。図６は、本発明の実施形態に係る印刷管理モジュール４０１がクライアント端末１０２から印刷指示を受けてからプリンタドライバ４１０に対して描画指示をするまでの処理を示すフローチャートである。本実施形態ではユーザーによってあらかじめ文書データが入稿されているとして説明するが、文書データの入稿とともに印刷指示を行うことも想定される。また、前提として、ＯＳ上にはプリンタドライバ４１０のインストール、プリンタオブジェクトの作成がなされているものとする。
【００３５】
Ｓ６０１において、印刷管理モジュール４０１は、外部インターフェース４０２を介してクライアント端末１０２等から受け付けた印刷指示の内容を解釈し情報を保持する。このとき、外部インターフェースを介して渡される印刷指示の内容として、文書ＩＤ５０１、プリンタ名５１１が含まれる。
【００３６】
Ｓ６０２において、印刷管理モジュール４０１は、Ｓ６０１で保持している文書ＩＤ５０１、プリンタ名５１１がデータベース１０４の文書情報５００、プリンタ情報５２０に存在するかどうかの判定を行う。両方とも存在する場合はＳ６０３に進む。どちらか一方でも存在しない場合はＳ６０４に進む。
【００３７】
Ｓ６０３において、印刷管理モジュール４０１は、インターフェース４０６を介して送信モジュール４０４に印刷予約要求を行う。このとき、印刷管理モジュール４０１は、プリンタ名５１１で特定されるプリンタ情報５２０のＩＰアドレス５２２を取得し、プリンタ名５２１とともに送信モジュール４０４に通知を行う。また、印刷管理モジュール４０１は、印刷予約要求の応答として送信モジュール４０４からジョブＩＤ５０５を受け取り、データベース１０４の文書情報５００、ジョブ情報５１０に格納する。ここで、ジョブＩＤ５０５は送信モジュール４０４が発行する。また、送信モジュール４０４は、ジョブＩＤ５０５に紐づけて印刷管理モジュール４０４から受け取ったプリンタ名５１１、ＩＰアドレス５２２を保持する。
【００３８】
Ｓ６０５において、印刷管理モジュール４０１は、プリンタ名５１１で特定されるプリンタ情報５２０のシステムプリンタ名５２３を取得する。加えてＯＳ上にシステムプリンタ名５２３と一致する識別名を持つプリンタオブジェクトの存在を確認する。すなわち、指定されたプリンタが利用可能であることを確認する。具体的には印刷管理モジュール４０１がシステムスプーラ４１１からプリンタのリストを取得し、その中からシステムプリンタ名５２３に合致するものを検索する。システムプリンタ名５２３を持つプリンタオブジェクトが存在する場合は指定されたプリンタは利用可能であり、Ｓ６０６に進む。存在しない場合はＳ６０４に進む。
【００３９】
Ｓ６０６において印刷管理モジュール４０１は、Ｓ６０５で合致したシステムプリンタ名５２３のプリンタオブジェクトの情報をシステムスプーラ４１１から取得し、該情報に含まれる送信ポートの情報を取得する。取得する送信ポートの情報は、ＩＰアドレスと印刷プロトコルの種類、通信先ポート番号である。ここで、本実施形態では、印刷プロトコルとしてＯＳで広く使用されているRAW（read after write）を想定している。その他の印刷プロトコルとして、LPR（line printer remote）、IPP（Internet Printing Protocol）等が挙げられるが、本実施形態と同様に利用可能である。ポートの情報を取得する理由は、後述する印刷データ受信モジュール４０３が印刷データを受け付けるために待ち受けている印刷プロトコル５３１、待ち受けポート番号５３２、ループバックアドレス５３３と一致している必要があるためである。通信ポートとは、情報処理装置がデータ通信を行う際に通信先のプログラムを特定するために用いられ、プログラムは特定の通信ポート番号の通信ポートを開くことでそのポートに対してデータ通信を行うプログラムからデータを受け取ることができる。印刷データ受信モジュール４０３のポート番号は予め割り当てられており、既知である。ここで、印刷プロトコル５３１、待ち受けポート番号５３２、ループバックアドレス５３３の組により特定されるポートを、印刷システムの受信ポートとも称する。
【００４０】
Ｓ６０７において、印刷管理モジュール４０１は、Ｓ６０６で取得した送信ポートの情報が印刷データ受信モジュール情報５３０と一致するか、すなわち印刷システムプログラム３０８の待ち受け４１３ポートと一致するか判定し、一致する場合はＳ６０９に進み、一致しない場合はＳ６０８に進む。
【００４１】
ステップＳ６０６で取得した送信ポートの情報が印刷システムの受信ポートと一致していない場合には、Ｓ６０８において、印刷管理モジュール４０１は、印刷データ受信モジュール情報５３０を基に、システムスプーラ４１１に対して送信ポート作成要求を行う。この要求に応じて、システムスプーラ４１１では、印刷システムの受信ポートに相当する新たな送信ポートが作成される。加えて、印刷管理モジュール４０１は、システムスプーラ４１１に対してシステムプリンタ名５２３に対応する送信ポートを前記新規に作成した送信ポートに変更する要求を行う。
【００４２】
Ｓ６０９において、印刷管理モジュール４０１は、文書ＩＤ５０１で特定される文書情報５００のジョブＩＤ５０１と、文書保存先５０３に保存した文書データとを取得し、ジョブＩＤ５０１と文書データとをプリンタドライバ４１０に引き渡して描画指示を行う。本実施形態では、印刷管理モジュール４０１が文書名５０２にジョブＩＤを付加して描画指示を行う。すなわち、プリンタドライバ４１０に対して印刷データの生成を要求する。Ｓ６０４において、印刷管理モジュール４０１は、外部インターフェース４０２を介してエラーをクライアント端末１０２に通知し処理を終了する。
【００４３】
以上の手順により、印刷システムプログラム３０８は、印刷指示を受けると、すなわち印刷開始のタイミングで、その待ち受けポートをシステムスプーラの送信ポートとして設定し、印刷データ（あるいは印刷ジョブ）の生成要求を発行することができる。
【００４４】
＜印刷データ受信モジュール４０３の印刷データ処理＞
図７は、本発明の実施形態に係る印刷データ受信モジュール４０３がプリンタドライバ４１０から印刷データを受け付け、送信モジュール４０４へ通知するまでの処理を示すフローチャートである。
【００４５】
Ｓ７０１において、印刷データ受信モジュール４０３は、プリンタドライバ４１０から印刷データを受け付けるために必要な通信ポート４１３を開いて待ち受ける（すなわち通信ポート４１３をリッスンする）。通信ポート４１３は、ループバックアドレスと印刷データ受信モジュール４０３の待ち受けポート番号とで特定され、図６でいう印刷システムの受信ポートのことである。ここで通信ポートの情報は、印刷データ受信モジュール４０３が起動時にデータベース１０４に格納されている情報を取得してもよいし、印刷管理モジュール４０１から通信ポート情報を受け取ってもよい。本実施形態では特に限定しない。なお図７の手順は、たとえば印刷サーバー１０１の稼働開始をきっかけとして開始され、印刷サーバー１０１の稼働中には通信ポート４１３をリッスンしていて良い。
【００４６】
Ｓ７０２で印刷データ受信モジュール４０３は、プリンタドライバ４１０が生成する印刷データを、標準ポートモニター４１２を経て受信する。図６で説明したように、標準ポートモニター４１２の送信ポートは通信ポート４１３に変更されている。このとき印刷データ受信モジュール４０３は、送信モジュール４０４に対して、印刷データを受信開始した旨を通知する。
【００４７】
Ｓ７０３１〜Ｓ７０３２は、通信が終了するまで、すなわち印刷データの受信を完了するまで繰り返される。ただしＳ７０３２はループの末尾を示すブロックであり、特段の処理はない。Ｓ７０３において、印刷データ受信モジュール４０３は、印刷プロトコルに則り、通信が完了するまで受信を続ける。受信が完了した場合、印刷データ受信モジュール４０３は、プリンタドライバ４１０の印刷データの生成処理が完了したと判断しＳ７０４に進む。プリンタドライバ４１０により生成された印刷データはシステムスプーラ４１１によりスプールされるために、印刷データの受信の完了は、印刷データのスプール完了であるということもできる。
【００４８】
データの受信が完了すると、Ｓ７０４において、印刷データ受信モジュール４０３は、受信した印刷データの解析を行い、文書名、印刷属性などの印刷ジョブ属性情報を取得する。Ｓ７０５において、印刷データ受信モジュール４０３は、Ｓ７０３で受信した印刷データおよびＳ７０４で取得した印刷ジョブ属性情報に加え、印刷データの受信が完了した旨を送信モジュール４０４へ通知する。
【００４９】
＜送信モジュール４０４の印刷送信処理＞
図８は、本発明の実施形態に係る送信モジュール４０４が印刷データ受信モジュール４０３から印刷データ、印刷ジョブ属性情報を受け取ってから、プリンタ１０３において排紙が完了するまでの処理を示すフローチャートである。
【００５０】
Ｓ８０１において、送信モジュール４０４は、印刷データ受信モジュール４０３から印刷データ、印刷ジョブ属性情報を受け取る。これは図７のステップＳ７０５に対応した処理である。
【００５１】
Ｓ８０２において、送信モジュール４０４は、受信した印刷ジョブ属性情報に含まれる文書名からジョブＩＤ５０５を抜き出し、Ｓ６０３の印刷予約要求時に保持したジョブＩＤ５０５と一致するか確認を行う。ジョブＩＤ５０５が一致した場合はＳ８０３に進み、一致しない場合は印刷データを破棄し処理を終了する。なお印刷ジョブ属性情報にジョブＩＤ５０５が含まれていてもよい。
【００５２】
Ｓ８０３において、送信モジュール４０４は、ジョブＩＤ５０５に紐づくプリンタ名５１１、ＩＰアドレス５２２を用いてプリンタ１０３に対して印刷データを送信する。
【００５３】
Ｓ８０４において、送信モジュール４０４は、デバイス制御モジュール４０５を介してプリンタ１０３のプリンタ状態、ジョブ状態の監視を開始する。
【００５４】
Ｓ８０５において、送信モジュール４０４は、デバイス制御モジュール４０５に問い合わせて印刷ジョブの排紙が完了したかどうかを判定し、ジョブの状態（及びプリンタの状態も）をジョブのステータスとして印刷管理モジュール４０１に通知する。送信モジュール４０４がデバイス制御モジュール４０５に問い合わせた結果、排紙が完了したと判断した場合はＳ８０６に進む。
【００５５】
Ｓ８０６において、送信モジュール４０４は、印刷管理モジュール４０４に対してジョブＩＤ５０５とともに印刷ジョブが完了した旨を通知する。
【００５６】
以上の処理を行うことにより、標準ポートモニターから印刷システムへの印刷データ、および印刷ジョブ属性情報の受け渡しを可能とし、カスタムポートモニターを利用して実現していた機能を、カスタムポートモニターを使用することなく、標準ポートモニターを用いて実現可能となる。これにより、カスタムポートモニターを利用できないオペレーティングシステムにおいても、印刷システムプログラム等のアプリケーションプログラムにより、印刷ジョブの状態やプリンタの状態を監視し、印刷ジョブを管理することができる。
【００５７】
［実施形態２］
本実施形態は、実施形態１に対して、印刷データ受信モジュール４０３が印刷データを解析することができない場合の処理を追加している。印刷データはプリンタが解釈可能なページ記述言語を用いて記述されており、各プリンターベンダーのプリンタドライバによってその記載内容が異なるため、印刷データを解析できない可能性が十分ある。実施形態１では印刷データ受信モジュール４０３が図７のステップＳ７０４で印刷データを解析してジョブＩＤ５０５を取得し、ジョブＩＤ５０５によって送信モジュール４０４が印刷ジョブの特定を行った。しかし、印刷データの解析ができない場合は、送信モジュール４０４で印刷ジョブの特定ができなくなる。以下で印刷データが解析できない場合の処理を図９、図１０を用いて説明する。なお、本実施形態においてシステム構成や印刷サーバーの構成は実施形態１と同様である。
【００５８】
＜サポートプリンタリスト、プリンタ情報＞
図９は、本発明の実施形態に係る印刷管理モジュール４０１がデータベース１０４に保持する情報の一例を示すメモリマップである。なお、図５で説明した実施形態１の文書情報５００、ジョブ情報５１０、印刷データ受信モジュール情報５３０も同様に保持している。サポートプリンタリスト９００は、印刷データ受信モジュール４０３が印刷データ解析可能なプリンタの一覧である。印刷管理モジュール４０１はあらかじめサポートプリンタ９００リストを保持している。
【００５９】
プリンタ情報９１０は、プリンタ情報５２０を拡張した情報である。プリンタ情報９１０はプリンタ情報５２０と同様に印刷管理モジュール４０１が管理するプリンタ１０３の情報であり、プリンタ毎に１組保持される。プリンタ名５２１〜ステータス５２４はプリンタ情報５２０と同様である。プリンタモデル９１１は、プリンタ１０３の機種情報であり、印刷管理モジュール４０１がプリンタ情報９１０の作成時に設定する。プリンタモデル９１１は、印刷管理モジュール４０１が送信モジュールを介してプリンタ１０３から取得してもよいし、プリンタドライバ４１０から取得してもよい。サポートプリンタリスト９００のプリンタモデルとプリンタモデル９１１とは、機種が同じであれば同じ値が設定される。
【００６０】
＜印刷データを解析できない場合の印刷管理モジュール４０１の処理＞
図１０は、印刷データの解析ができない場合の印刷管理モジュール４０１の処理を示すフローチャートである。本実施形態ではＳ６０１からＳ６０７、およびＳ６０８、Ｓ６０９は実施形態１と同様であり、説明は省略する。
【００６１】
Ｓ１００１において、印刷管理モジュール４０１は、データベース１０４よりプリンタ情報９１０を取得する。
【００６２】
Ｓ１００２において、印刷管理モジュール４０１は、データベース１０４よりサポートプリンタリスト９００からＳ１００１で取得したプリンタ情報９１０のプリンタモデル９１１と合致するものを検索する。
【００６３】
Ｓ１００３において、Ｓ１００２での検索の結果、プリンタモデル９１１に合致するものがあった場合はＳ６０８に進む。印刷管理モジュール４０１は、プリンタモデル９１１がサポートプリンタリスト９００に見つからなかった場合は印刷受信モジュール４０１において印刷データの解析ができないと判断しＳ１００５に進む。
【００６４】
Ｓ１００５において、印刷管理モジュール４０１は、印刷データ解析不可用ポートの作成をシステムスプーラ４１１に対して指示する。本実施形態において、印刷データ解析不可用ポートとは、印刷プロトコル部分に情報を付与することのできる通信ポートである。具体的にはLPR（line printer remote）プロトコル内で使用されるキュー名や、IPP（Internet Printing Protocol）プロトコル内で通知される文書名などがある。本実施形態では、LPRを例に説明する。印刷管理モジュール４０１は、システムスプーラ４１１に対して送信ポート作成要求を行う際、要求内容に印刷プロトコルとしてLPRを指定し、また、キュー名としてＳ６０３で取得したジョブＩＤ５０５を指定する。指定されるポートは、ループバックアドレスを用いた印刷システムの待ち受けポートである。また印刷管理モジュール４０１は、システムスプーラ４１１に対して、システムプリンタ名５２３に対応する送信ポートを新規に作成した送信ポートに変更する要求を行う。
【００６５】
印刷データ受信モジュール４０３は、図１０のステップＳ１００５で作成された待ち受けポートをリッスンし、印刷データを受信する際には、実施形態１と同様に図７の手順を実行する。この印刷データは印刷システムプログラム３０８によりサポートされておらず、解析できないが、その代わりに図１０の手順によって待ち受けポートのプロトコルＬＰＲのキュー名としてジョブＩＤが指定されている。そこで、本実施形態の印刷データ受信モジュール４０３は、図７のステップＳ７０４において、待ち受けポートについて指定されたプロトコルがＬＰＲである場合には、キュー名の値をジョブＩＤであるとして用いる。そしてステップＳ７０５においては、そのジョブＩＤに基づいて送信モジュールへと解析結果等を通知する。待ち受けポートについて指定されたプロトコルがＬＰＲでない場合、または、キュー名の値が本来のキュー名の範囲内にある場合には、ステップＳ７０４では、実施形態１で説明したように印刷データ（ジョブデータ）を解析する。もちろんこれは一例であって、本来のキュー名として指定できる値の範囲と、ジョブ名として指定できる値の範囲とを区分するなどしてもよい。
【００６６】
このようにすることで印刷データモジュール４０３は、図７のステップＳ７０４において標準ポートモニター４１２から受信した印刷データを解析した際、LPRプロトコルのやり取りでキュー名からジョブＩＤ５０５を取得することができる。このため、印刷システムプログラム３０８は、印刷のために使用するプリンタの機種をサポートしておらず、印刷データ（あるいはジョブデータ）を解析できない場合であっても、ジョブを指定されたプリンタに送信し、印刷を行わせることができ、またジョブやプリンタを監視できる。このようにして、待ち受けポートがステップＳ１００５で作成されたものであることを識別できる。もちろんこれは一例であって、待ち受けポートがステップＳ１００５で作成されたものであることを識別できるのであれば、どのような方法をとってもよい。
【００６７】
以上の処理により、印刷データを解析することができない場合においても、カスタムポートモニターを利用して実現していた機能を、カスタムポートモニターを使用することなく実現可能となる。
【符号の説明】
【００６８】
１０１  印刷サーバー、４０１  印刷管理モジュール、４０３  印刷データ受信モジュール、４０４  送信モジュール
【図１】
0006371697.tif 000002
【図２】
0006371697.tif 000003
【図３】
0006371697.tif 000004
【図４】
0006371697.tif 000005
【図５】
0006371697.tif 000006
【図６】
0006371697.tif 000007
【図７】
0006371697.tif 000008
【図８】
0006371697.tif 000009
【図９】
0006371697.tif 000010
【図１０】
0006371697.tif 000011