(57)【要約】【課題】プリンタのメモリ容量を増大させることなく即時印刷と予約印刷とを円滑に行う。【解決手段】ネットワークを介してプリンタ１１２に接続されたコンピュータシステム（印刷ジョブ送信装置）１０１に、即時印刷ジョブを印刷する順に並べてスプールするためのデータ構造である即時印刷キュー１５０と、予約印刷ジョブを印刷する順に並べてスプールするためのデータ構造である予約印刷キュー１５２とを別々に設ける。【選択図】図１
2010092467.tif 000002
【特許請求の範囲】
【請求項１】
印刷データとこの印刷データの印刷処理をプリンタに実行させるための命令とを含む印刷ジョブをスプールする印刷ジョブスプーラを備え、上記印刷ジョブスプーラがスプールした印刷ジョブを、ネットワークを介して接続された上記プリンタに送信する印刷ジョブ送信装置であって、
上記印刷ジョブには、上記プリンタが利用可能になり次第印刷する即時印刷ジョブと、指定時刻に印刷する予約印刷ジョブとがあり、
即時印刷ジョブであるか予約印刷ジョブであるかの選択指示を受け付けるスプールオプション取得部を備え、
上記印刷ジョブスプーラは、
即時印刷ジョブを印刷する順に並べて格納するためのデータ構造である即時印刷キューと、予約印刷ジョブを印刷する順に並べて格納するためのデータ構造である予約印刷キューとが別々に構築されており、
上記スプールオプション取得部が受け付けた上記選択指示に応じて、即時印刷ジョブを上記即時印刷キューに格納し、予約印刷ジョブを上記予約印刷キューに格納し、
上記プリンタが印刷ジョブを受信可能になる毎に、上記予約印刷キューに格納されている予約印刷ジョブのうち上記指定時刻に達した予約印刷ジョブおよび上記即時印刷キューに格納されている即時印刷キューを上記プリンタに順次送信することを特徴とする印刷ジョブ送信装置。
【請求項２】
オペレーティングシステムと上記プリンタの動作を制御するプリンタドライバとを含むコンピュータシステムに備えられる印刷ジョブ送信装置であって、
上記印刷ジョブスプーラは、即時印刷キューへの即時印刷ジョブの付加および即時印刷キューからの即時印刷ジョブの取り出しを管理する即時印刷キュー管理部と、予約印刷キューへの予約印刷ジョブの付加および予約印刷ジョブからの予約印刷ジョブの取り出しを管理する予約印刷キュー管理部とを備えており、
上記即時印刷キュー管理部および上記予約印刷キュー管理部の両方が上記オペレーティングシステム内に組み込まれていることを特徴とする請求項１に記載の印刷ジョブ送信装置。
【請求項３】
オペレーティングシステムと上記プリンタの動作を制御するプリンタドライバとを含むコンピュータシステムに備えられる印刷ジョブ送信装置であって、
上記印刷ジョブスプーラは、即時印刷キューへの即時印刷ジョブの付加および即時印刷キューからの即時印刷ジョブの取り出しを管理する即時印刷キュー管理部と、予約印刷キューへの予約印刷ジョブの付加および予約印刷ジョブからの予約印刷ジョブの取り出しを管理する予約印刷キュー管理部とを備えており、
上記予約印刷キュー管理部は上記プリンタドライバ内に組み込まれており、
上記即時印刷キュー管理部は上記オペレーティングシステム内に組み込まれていることを特徴とする請求項１に記載の印刷ジョブ送信装置。
【請求項４】
上記予約印刷キュー管理部は、上記予約印刷キューにスプールされた予約印刷ジョブの中に上記指定時刻に達した予約印刷ジョブがあるか否かを監視しており、上記指定時刻に達した予約印刷ジョブがある場合に、当該予約印刷ジョブを上記予約印刷キューから取り出して上記即時印刷キュー管理部に引渡し、
上記即時印刷キュー管理部は、上記予約印刷キュー管理部から受け取った上記予約印刷ジョブを即時印刷ジョブとして上記即時印刷キューに加えることを特徴とする請求項２または３に記載の印刷ジョブ送信装置。
【請求項５】
上記即時印刷キュー管理部は、上記予約印刷キュー管理部から受け取った上記予約印刷ジョブを上記即時印刷キューにおける最先に印刷される位置に加え、上記プリンタが利用可能になり次第、当該予約印刷ジョブを上記プリンタに送信し、
上記予約印刷キュー管理部は、上記指定時刻に達した予約印刷ジョブが上記予約印刷キュー内に存在しない場合にはその旨を上記即時印刷キュー管理部に通知し、
上記即時印刷キュー管理部は、上記通知を受けた場合に、上記プリンタが利用可能になり次第、上記即時印刷キューにおける最先に印刷される位置に格納されている即時印刷ジョブを上記プリンタに送信することを特徴とする請求項４に記載の印刷ジョブ送信装置。
【請求項６】
初期状態では上記予約印刷キューは生成されておらず、
上記印刷ジョブスプーラに予約印刷ジョブが入力されたときに上記予約印刷キュー管理部が上記予約印刷キューを生成することを特徴とする請求項２から５のいずれか１項に記載の印刷ジョブ送信装置。
【請求項７】
上記印刷ジョブスプーラは、上記予約印刷キューから上記予約印刷ジョブを取り出した後、この予約印刷キューに他の予約印刷ジョブがスプールされていない場合に、この予約印刷キューを削除することを特徴とする請求項６に記載の印刷ジョブ送信装置。
【請求項８】
ネットワークを介して複数のプリンタに接続され、
上記印刷ジョブスプーラは、プリンタ毎に上記即時印刷キューと上記予約印刷キューとを生成することを特徴とする請求項１から７のいずれか１項に記載の印刷ジョブ送信装置。
【請求項９】
印刷データとこの印刷データの印刷処理をプリンタに実行させるための命令とを含む印刷ジョブをスプールする印刷ジョブスプーラを備え、上記印刷ジョブスプーラがスプールした印刷ジョブを、ネットワークを介して接続された上記プリンタに送信する印刷ジョブ送信装置における上記印刷ジョブの管理方法であって、
上記印刷ジョブには、上記プリンタが利用可能になり次第印刷する即時印刷ジョブと、指定時刻に印刷する予約印刷ジョブとがあり、
即時印刷ジョブを印刷する順に並べて格納するためのデータ構造である即時印刷キューと、予約印刷ジョブを印刷する順に並べて格納するためのデータ構造である予約印刷キューとを別々に構築する工程と、
即時印刷ジョブであるか予約印刷ジョブであるかの選択指示を受け付ける工程と、
上記選択指示に応じて、印刷ジョブが即時印刷ジョブである場合には当該印刷ジョブを即時印刷キューに格納し、印刷ジョブが予約印刷ジョブである場合には当該印刷ジョブを上記予約印刷キューに格納する工程と、
上記プリンタが印刷ジョブを受信可能になる毎に、上記予約印刷キューに格納されている予約印刷ジョブのうち上記指定時刻に達した予約印刷ジョブおよび上記即時印刷キューに格納されている即時印刷キューを上記プリンタに順次送信する工程とを含むことを特徴とする印刷ジョブの管理方法。
【請求項１０】
請求項１から８のいずれか１項に記載の印刷ジョブ送信装置と、
上記印刷ジョブ送信装置から受信した印刷ジョブに応じて印刷処理を行うプリンタとを備えていることを特徴とする印刷システム。
【請求項１１】
請求項１にから８のいずれか１項に記載の印刷ジョブ送信装置を動作させるプログラムであって、コンピュータを上記印刷ジョブスプーラとして機能させるためのプログラム。
【請求項１２】
請求項１１に記載のプログラムをコンピュータ読み取り可能に格納した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スプールした印刷ジョブをプリンタに送信する印刷ジョブ送信装置に関するものである。より具体的には、即時印刷ジョブのスプールと予約印刷ジョブのスプールとを行う印刷ジョブ送信装置に関するものである。
【背景技術】
【０００２】
コンピュータ印刷環境では、ユーザ（あるいはアプリケーション）は、印刷出力のために特定のプリンタを選択し、さらに好みのオプションを指定することによって原稿の印刷を要求する。最近のコンピュータ環境では、要求された印刷ジョブ（所望のパラメータを有する）は印刷スプーラに転送される。印刷スプーラは、その印刷ジョブ要求を、同じコンピュータシステムによって作成された他の印刷ジョブや、そのプリンタに接続された他のコンピュータシステムによって作成された印刷ジョブと一緒に、順にスプール／キュー（印刷キュー）に格納する。一般に、スプーラは、印刷ジョブデータをファイルに保存し、印刷される印刷ジョブのキュー（待ち行列）を保持する。その後、スプール／キューに格納された印刷ジョブは、スプーラによって印刷キューから取り出されて印刷出力される。
【０００３】
一般に、ジョブのスプール処理には即時印刷と予約印刷の２つの方法がある。即時印刷はユーザが即時に（すなわち印刷ジョブがスプーラのキューのトップになり次第）印刷することを意図するものである。予約印刷は、印刷ジョブが所望の時間（指定時刻）に印刷されるようにスプーラに提供される。スプーラは予約印刷ジョブを印刷キュー内に保持しており（一般に、最先のものから最遅のものまで印刷時間の順に保持する）、その印刷予約時間になると印刷ジョブをキューから取り出して送信する。
【０００４】
ほとんどのコンピュータシステム（すなわち印刷スプーラ機能を有するオペレーティングシステム）において現在実用されているように、許容されるスプール処理の種類は、システム管理者がプリンタをインストールするときに定義される。すなわち、プリンタは、あるときには即時印刷のスプール処理のみを実行するようにユーザによって設定され、またあるときには予約印刷のスプール処理のみを行うように再設定される。
【０００５】
また、現在実用されている構成は、特定のプリンタに対して１種類のスプールオプションのみが定義されたものである。このため、特定のコンピュータ環境において、即時印刷と予約印刷との両方のスプールオプションを同時に使用することが望まれる場合には、１つのプリンタ（物理プリンタ）をコンピュータ上では仮想的に２つの別々のプリンタ（論理プリンタ）として定義して取り扱う必要がある。第１論理プリンタは即時印刷スプール処理を行うように設定され、第２論理プリンタは予約印刷スプール処理を行うように設定される。このような設定では、ユーザ（あるいはアプリケーションプログラム）は、原稿を印刷する前に、即時印刷スプール処理用に設定された第１論理プリンタに基づいて印刷するのか、予約印刷スプール処理用に設定された第２論理プリンタに基づいて印刷するのかを決定しなければならない。第１論理プリンタおよび第２論理プリンタのいずれに基づいて印刷する場合であっても、実際に印刷処理を行うのは共通のプリンタ（物理プリンタ）である。
【０００６】
なお、特許文献１には、ホストコンピュータから送られる印刷データを受信して受信バッファに格納し、時刻指定出力（予約印刷）が指定されている場合は指定時刻に出力し、時刻指定がされていない場合は即時出力する印刷制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−１３７５９１号公報（平成１２年５月１６日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記のような、１つの物理プリンタに複数の論理プリンタを対応付ける「ワークアラウンド」方式には、システム管理者が１つの物理プリンタに対応して２つの論理プリンタを設定するという追加的な工程を実行しなければならないという問題がある。オペレーティングシステムおよびスプール処理システムが、複数の論理プリンタ用にスプールされた印刷ジョブの印刷を１つの物理プリンタで行うための調整を行うように構成されていない場合にはこの設定はさらに複雑になる。
【０００９】
また、１つのコンピュータシステム上に２つの論理プリンタを構築するには、そのシステムにおいて追加的なリソースを利用する必要がある。
【００１０】
さらに、おそらく最も重要な問題として、そのユーザ（あるいはアプリケーション）が、２つの論理プリンタのそれぞれの目的を理解し、印刷ジョブ毎に適切なスプール処理設定を選択する必要があるという問題がある。
【００１１】
また、上記特許文献１の技術では、予約印刷を行う場合には指定時刻になるまで印刷ジョブがプリンタのメモリに格納される。このため、予約印刷ジョブのデータ容量が大きい場合にはプリンタのメモリがこの予約印刷ジョブによって占有され、この予約印刷ジョブの印刷が完了するまで他の印刷ジョブを受け付けることができなくなってしまうという問題がある。また、この問題を解消するために、プリンタに備えられるメモリの容量を大きくすることが考えられるが、その場合にはプリンタの装置コストが増大してしまう。
【００１２】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、プリンタのメモリ容量を増大させることなく即時印刷と予約印刷とを円滑に行うことにある。
【課題を解決するための手段】
【００１３】
本発明の印刷ジョブ送信装置は、上記の課題を解決するために、印刷データとこの印刷データの印刷処理をプリンタに実行させるための命令とを含む印刷ジョブをスプールする印刷ジョブスプーラを備え、上記印刷ジョブスプーラがスプールした印刷ジョブを、ネットワークを介して接続された上記プリンタに送信する印刷ジョブ送信装置であって、上記印刷ジョブには、上記プリンタが利用可能になり次第印刷する即時印刷ジョブと、指定時刻に印刷する予約印刷ジョブとがあり、即時印刷ジョブであるか予約印刷ジョブであるかの選択指示を受け付けるスプールオプション取得部を備え、上記印刷ジョブスプーラは、即時印刷ジョブを印刷する順に並べて格納するためのデータ構造である即時印刷キューと、予約印刷ジョブを印刷する順に並べて格納するためのデータ構造である予約印刷キューとが別々に構築されており、上記スプールオプション取得部が受け付けた上記選択指示に応じて、即時印刷ジョブを上記即時印刷キューに格納し、予約印刷ジョブを上記予約印刷キューに格納し、上記プリンタが印刷ジョブを受信可能になる毎に、上記予約印刷キューに格納されている予約印刷ジョブのうち上記指定時刻に達した予約印刷ジョブおよび上記即時印刷キューに格納されている即時印刷キューを上記プリンタに順次送信することを特徴としている。
【００１４】
上記の構成によれば、印刷ジョブスプーラが、即時印刷ジョブを印刷する順に並べて格納するためのデータ構造である即時印刷キューと、予約印刷ジョブを印刷する順に並べて格納するためのデータ構造である予約印刷キューとが別々に構築されており、上記スプールオプション取得部が受け付けた上記選択指示に応じて、即時印刷ジョブを上記即時印刷キューに格納し、予約印刷ジョブを上記予約印刷キューに格納し、上記プリンタが印刷ジョブを受信可能になる毎に、上記予約印刷キューに格納されている予約印刷ジョブのうち上記指定時刻に達した予約印刷ジョブおよび上記即時印刷キューに格納されている即時印刷キューを上記プリンタに順次送信する。これにより、各印刷ジョブについて即時印刷ジョブとするか予約印刷ジョブとするかの選択指示を行うだけで、印刷ジョブ送信装置が即時印刷ジョブと予約印刷ジョブとを管理し、印刷可能な状態になった印刷ジョブをプリンタに順次送信する。したがって、即時印刷および予約印刷を行う場合のスプール処理を簡略化することができる。また、プリンタに送信される印刷ジョブは常に印刷可能な状態の印刷ジョブなので、プリンタに予約印刷ジョブが蓄積されることを防止できる。これにより、プリンタのメモリ容量を増大させることなく即時印刷と予約印刷とを円滑に行うことができる。
【００１５】
また、オペレーティングシステムと上記プリンタの動作を制御するプリンタドライバとを含むコンピュータシステムに備えられる印刷ジョブ送信装置であって、上記印刷ジョブスプーラは、即時印刷キューへの即時印刷ジョブの付加および即時印刷キューからの即時印刷ジョブの取り出しを管理する即時印刷キュー管理部と、予約印刷キューへの予約印刷ジョブの付加および予約印刷ジョブからの予約印刷ジョブの取り出しを管理する予約印刷キュー管理部とを備えており、上記即時印刷キュー管理部および上記予約印刷キュー管理部の両方が上記オペレーティングシステム内に組み込まれている構成としてもよい。
【００１６】
上記の構成によれば、オペレーティングシステムに備えられる印刷ジョブスプーラによって即時印刷キューと予約印刷キューとを管理する機能を持たせることにより、即時印刷および予約印刷を行う場合のスプール処理を簡略化するとともに、プリンタのメモリ容量を増大させることなく即時印刷と予約印刷とを円滑に行うことができる。
【００１７】
また、オペレーティングシステムと上記プリンタの動作を制御するプリンタドライバとを含むコンピュータシステムに備えられる印刷ジョブ送信装置であって、上記印刷ジョブスプーラは、即時印刷キューへの即時印刷ジョブの付加および即時印刷キューからの即時印刷ジョブの取り出しを管理する即時印刷キュー管理部と、予約印刷キューへの予約印刷ジョブの付加および予約印刷ジョブからの予約印刷ジョブの取り出しを管理する予約印刷キュー管理部とを備えており、上記予約印刷キュー管理部は上記プリンタドライバ内に組み込まれており、上記即時印刷キュー管理部は上記オペレーティングシステム内に組み込まれている構成としてもよい。
【００１８】
また、上記予約印刷キュー管理部は、上記予約印刷キューにスプールされた予約印刷ジョブの中に上記指定時刻に達した予約印刷ジョブがあるか否かを監視しており、上記指定時刻に達した予約印刷ジョブがある場合に、当該予約印刷ジョブを上記予約印刷キューから取り出して上記即時印刷キュー管理部に引渡し、上記即時印刷キュー管理部は、上記予約印刷キュー管理部から受け取った上記予約印刷ジョブを即時印刷ジョブとして上記即時印刷キューに加える構成としてもよい。
【００１９】
上記の構成によれば、プリンタドライバに予約印刷キュー管理部を設けることにより、即時印刷および予約印刷を行う場合のスプール処理を簡略化するとともに、プリンタのメモリ容量を増大させることなく即時印刷と予約印刷とを円滑に行うことができる。また、即時印刷キュー管理部として、従来のオペレーティングシステムに備えられる標準システムスプーラをそのまま適用することができる。
【００２０】
また、上記即時印刷キュー管理部は、上記予約印刷キュー管理部から受け取った上記予約印刷ジョブを上記即時印刷キューにおける最先に印刷される位置に加え、上記プリンタが利用可能になり次第、当該予約印刷ジョブを上記プリンタに送信し、上記予約印刷キュー管理部は、上記指定時刻に達した予約印刷ジョブが上記予約印刷キュー内に存在しない場合にはその旨を上記即時印刷キュー管理部に通知し、上記即時印刷キュー管理部は、上記通知を受けた場合に、上記プリンタが利用可能になり次第、上記即時印刷キューにおける最先に印刷される位置に格納されている即時印刷ジョブを上記プリンタに送信する構成としてもよい。
【００２１】
上記の構成によれば、指定時刻に達した予約印刷ジョブを優先的に印刷させることができる。
【００２２】
また、初期状態では上記予約印刷キューは生成されておらず、上記印刷ジョブスプーラに予約印刷ジョブが入力されたときに上記予約印刷キュー管理部が上記予約印刷キューを生成する構成としてもよい。
【００２３】
また、上記印刷ジョブスプーラは、上記予約印刷キューから上記予約印刷ジョブを取り出した後、この予約印刷キューに他の予約印刷ジョブがスプールされていない場合に、この予約印刷キューを削除する構成としてもよい。
【００２４】
上記の構成によれば、予約印刷ジョブが存在しない場合には予約印刷キューが生成されないので、予約印刷キューが生成される場合に用いられる印刷ジョブ送信装置のリソースを開放して有効利用することができる。
【００２５】
また、ネットワークを介して複数のプリンタに接続され、上記印刷ジョブスプーラは、プリンタ毎に上記即時印刷キューと上記予約印刷キューとを生成する構成としてもよい。
【００２６】
上記の構成によれば、印刷ジョブ送信装置がネットワークを介して複数のプリンタに接続されている場合であっても、即時印刷ジョブおよび予約印刷ジョブをプリンタ毎に適切に管理することができる。
【００２７】
本発明の印刷ジョブの管理方法は、上記の課題を解決するために、印刷データとこの印刷データの印刷処理をプリンタに実行させるための命令とを含む印刷ジョブをスプールする印刷ジョブスプーラを備え、上記印刷ジョブスプーラがスプールした印刷ジョブを、ネットワークを介して接続された上記プリンタに送信する印刷ジョブ送信装置における上記印刷ジョブの管理方法であって、上記印刷ジョブには、上記プリンタが利用可能になり次第印刷する即時印刷ジョブと、指定時刻に印刷する予約印刷ジョブとがあり、即時印刷ジョブを印刷する順に並べて格納するためのデータ構造である即時印刷キューと、予約印刷ジョブを印刷する順に並べて格納するためのデータ構造である予約印刷キューとを別々に構築する工程と、即時印刷ジョブであるか予約印刷ジョブであるかの選択指示を受け付ける工程と、上記選択指示に応じて、印刷ジョブが即時印刷ジョブである場合には当該印刷ジョブを即時印刷キューに格納し、印刷ジョブが予約印刷ジョブである場合には当該印刷ジョブを上記予約印刷キューに格納する工程と、上記プリンタが印刷ジョブを受信可能になる毎に、上記予約印刷キューに格納されている予約印刷ジョブのうち上記指定時刻に達した予約印刷ジョブおよび上記即時印刷キューに格納されている即時印刷キューを上記プリンタに順次送信する工程とを含むことを特徴としている。
【００２８】
上記の方法によれば、即時印刷ジョブを印刷する順に並べて格納するためのデータ構造である即時印刷キューと、予約印刷ジョブを印刷する順に並べて格納するためのデータ構造である予約印刷キューとを別々に構築しておき、即時印刷ジョブであるか予約印刷ジョブであるかの選択指示に応じて、印刷ジョブが即時印刷ジョブである場合には当該印刷ジョブを即時印刷キューに格納し、印刷ジョブが予約印刷ジョブである場合には当該印刷ジョブを上記予約印刷キューに格納する。そして、上記プリンタが印刷ジョブを受信可能になる毎に、上記予約印刷キューに格納されている予約印刷ジョブのうち上記指定時刻に達した予約印刷ジョブおよび上記即時印刷キューに格納されている即時印刷キューを上記プリンタに順次送信する。これにより、各印刷ジョブについて即時印刷ジョブとするか予約印刷ジョブとするかの選択指示を行うだけで、即時印刷ジョブと予約印刷ジョブとを管理し、印刷可能な状態になった印刷ジョブをプリンタに順次送信することができる。したがって、即時印刷および予約印刷を行う場合のスプール処理を簡略化することができる。また、プリンタには送信される印刷ジョブは常に印刷可能な状態の印刷ジョブなので、プリンタに予約印刷ジョブが蓄積されることを防止できる。これにより、プリンタのメモリ容量を増大させることなく即時印刷と予約印刷とを円滑に行うことができる。
【００２９】
本発明の印刷システムは、上記したいずれかの印刷ジョブ送信装置と、上記印刷ジョブ送信装置から受信した印刷ジョブに応じて印刷処理を行うプリンタとを備えている。
【００３０】
上記の構成によれば、即時印刷および予約印刷を行う場合のスプール処理を簡略化するとともに、プリンタのメモリ容量を増大させることなく即時印刷と予約印刷とを円滑に行うことができる。
【００３１】
なお、上記印刷ジョブ送信装置は、コンピュータによって実現してもよく、この場合には、コンピュータを上記印刷ジョブスプーラとして動作させることにより、上記印刷ジョブ送信装置をコンピュータにて実現させるプログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も本発明の範疇に含まれる。
【発明の効果】
【００３２】
以上のように、本発明の印刷ジョブ送信装置は、上記印刷ジョブスプーラは、即時印刷ジョブを印刷する順に並べて格納するためのデータ構造である即時印刷キューと、予約印刷ジョブを印刷する順に並べて格納するためのデータ構造である予約印刷キューとが別々に構築されており、上記スプールオプション取得部が受け付けた上記選択指示に応じて、即時印刷ジョブを上記即時印刷キューに格納し、予約印刷ジョブを上記予約印刷キューに格納し、上記プリンタが印刷ジョブを受信可能になる毎に、上記予約印刷キューに格納されている予約印刷ジョブのうち上記指定時刻に達した予約印刷ジョブおよび上記即時印刷キューに格納されている即時印刷キューを上記プリンタに順次送信する。
【００３３】
また、本発明の印刷ジョブの管理方法は、即時印刷ジョブを印刷する順に並べて格納するためのデータ構造である即時印刷キューと、予約印刷ジョブを印刷する順に並べて格納するためのデータ構造である予約印刷キューとを別々に構築する工程と、即時印刷ジョブであるか予約印刷ジョブであるかの選択指示を受け付ける工程と、上記選択指示に応じて、印刷ジョブが即時印刷ジョブである場合には当該印刷ジョブを即時印刷キューに格納し、印刷ジョブが予約印刷ジョブである場合には当該印刷ジョブを上記予約印刷キューに格納する工程と、上記プリンタが印刷ジョブを受信可能になる毎に、上記予約印刷キューに格納されている予約印刷ジョブのうち上記指定時刻に達した予約印刷ジョブおよび上記即時印刷キューに格納されている即時印刷キューを上記プリンタに順次送信する工程とを含む。
【００３４】
それゆえ、即時印刷および予約印刷を行う場合のスプール処理を簡略化することができる。また、プリンタのメモリ容量を増大させることなく即時印刷と予約印刷とを円滑に行うことができる。
【図面の簡単な説明】
【００３５】
【図１】本発明の一実施形態にかかる印刷システムの概略構成を示すブロック図である。
【図２】本発明の一実施形態にかかる印刷システムの変形例を示すブロック図である。
【図３】図１に示した印刷システムにおける処理の流れを示すフローチャートである。
【図４】図３におけるステップ３０８の処理の具体例を示すフローチャートである。
【図５】図３におけるステップ３２４の処理の具体例を示すフローチャートである。
【図６】図２に示した印刷システムにおける処理の流れを示すフローチャートである。
【図７】図１および図２に示した印刷システムを、ソフトウェアを用いて実現する場合の構成例を示すブロック図である。
【発明を実施するための形態】
【００３６】
図１は、本実施形態にかかる印刷システム１００の概略構成を示すブロック図である。
【００３７】
なお、従来の技術では、上述したように、（１）システム管理者が、１つの物理プリンタに異なるスプール／キュー処理オプションのための２つの（あるいはそれ以上の）論理プリンタを定義する必要があり、（２）印刷ジョブを作製するユーザが、管理者によって定義された論理プリンタの中から所望するスプールオプションを利用するための論理プリンタを選択する必要があった。これに対して、本実施形態にかかる印刷システム１００では、１つのプリンタに複数のキューを関連付けて管理することにより、上記（１）および（２）の処理を省略できるようになっている。
【００３８】
図１に示すように、印刷システム１００は、印刷ジョブ生成部１０２、印刷ジョブオプション取得部１０３、スプールオプション取得部１０４、プリンタドライバ１０７、印刷ジョブスプーラ１１０、即時印刷キュー（即時印刷キュー記憶部）１５０、および予約印刷キュー（予約印刷キュー記憶部）１５２を備えたコンピュータシステム１０１（印刷ジョブ送信装置。例えばパーソナルコンピュータ、ワークステーションなど。）と、このコンピュータシステム１０１に対してネットワークを介して通信可能に接続されたプリンタ１１２とを備えている。なお、印刷ジョブスプーラ１１０はコンピュータシステム１０１のオペレーションシステム内に備えられる。また、印刷ジョブ生成部１０２は、例えばコンピュータシステム１０１において利用されるアプリケーションシステムの１つである。また、プリンタドライバ１０７は、プリンタ１１２に印刷ジョブに応じた印刷処理を実行させるためのものであり、印刷ジョブインターフェース１０６とスプールインターフェース１０８とを備えている。
【００３９】
印刷ジョブ生成部１０２は、印刷ジョブを生成してプリンタドライバ１０７に出力する。なお、印刷ジョブとは、印刷するデータと当該データの印刷処理をプリンタに実行させるための命令とを含むデータである。また、本実施形態では、印刷ジョブ生成部１０２が印刷ジョブを生成するものとしているが、これに限らず、例えば、コンピュータシステム１０１が各種記録媒体に記録されている印刷ジョブを読み出すようにしてもよく、コンピュータシステム１０１がネットワークを介して印刷ジョブを取得する構成としてもよい。
【００４０】
印刷ジョブオプション取得部１０３は、ユーザ（あるいはアプリケーション）から印刷ジョブに関する印刷オプション（例えば、両面印刷か否か、Ｎ−ｕｐ（割付印刷）か否か、印刷枚数などの出力パラメータ）を受け付けて印刷ジョブインターフェース１０６に伝達する。
【００４１】
スプールオプション取得部１０４は、即時印刷を行うかあるいは予約印刷を行うか、および予約印刷を行う場合には印刷処理を行う時刻（指定時刻）についてのユーザ（あるいはアプリケーション）からの選択指示（スプールオプション）を受け付けてスプールインターフェース１０８に伝達する。
【００４２】
なお、印刷オプションおよびスプールオプションを、例えば、グラフィカル・ユーザ・インターフェース（ＧＵＩ）を使用してユーザが入力するようにしてもよい。この場合、ＧＵＩは、ユーザが印刷ジョブに対して印刷ジョブオプションおよびスプールオプションを指定することを可能にするとともに、印刷処理を実行するプリンタを選択できるように構成される。また、周知のダイアログ・ボックスまたは他のグラフィカル／テクスチャ・ユーザ・インターフェイス技術を用いて印刷オプションおよびスプールオプションを入力するようにしてもよい。さらに、印刷オプションおよびスプールオプションの入力を可能にするために、印刷ジョブインターフェース１０６およびスプールインターフェース１０８にアクセスすることのできるアプリケーション・プログラム・インターフェイス（ＡＰＩ）を利用してもよい。また、印刷オプションおよびスプールオプションを印刷ジョブと関連付けるために、上記した以外の設計選択をなし得ることは当業者にとって容易に明らかである。また、印刷ジョブ生成部１０２が印刷オプションおよび／またはスプールオプションを反映させた印刷ジョブを生成してプリンタドライバ１０７に出力するようにしてもよい。
【００４３】
印刷ジョブインターフェース１０６は、印刷ジョブ生成部１０２から入力された印刷ジョブに、印刷ジョブオプション取得部１０３から入力された印刷オプションを実行させるための情報を付加してスプールインターフェース１０８に伝達する。
【００４４】
スプールインターフェース１０８は、印刷ジョブインターフェース１０６から伝達された印刷ジョブにスプールオプション取得部１０４から入力されたスプールオプションを付加して印刷ジョブスプーラ１１０に出力する。
【００４５】
印刷ジョブスプーラ１１０は、即時印刷キュー管理部１２１と予約印刷キュー管理部１２２とを備えており、印刷ジョブに関連付けられているスプールオプションに基づいて、印刷ジョブを格納（スプール）するキューを選択し、選択したキューに印刷ジョブを格納する。具体的には、スプールオプションによって即時印刷が指定されている場合には即時印刷キュー管理部１２１がその印刷ジョブを即時印刷キュー１５０に格納させ、予約印刷が指定されている場合には予約印刷キュー管理部１２２がその印刷ジョブを予約印刷キュー１５２に格納させる。なお、即時印刷キューとは即時印刷を行う印刷ジョブ（即時印刷ジョブ）を印刷する順に並べて格納するためのデータ構造であり、予約印刷キューとは予約印刷を行う印刷ジョブ（予約印刷ジョブ）を印刷する順に並べて格納するためのデータ構造である。
【００４６】
また、印刷ジョブスプーラ１１０（即時印刷キュー管理部１２１および／または予約印刷キュー管理部１２２）は、プリンタ１１２が次の印刷ジョブを受信可能になることを監視する処理をバックグラウンド処理で実行する。そして、プリンタ１１２が次の印刷ジョブを受信できる状態になると、印刷ジョブスプーラ１１０は、即時印刷キュー１５０および予約印刷キュー１５２に格納された各印刷ジョブのスプールオプションに基づいて、次の印刷ジョブを取り出す。例えば、まず、予約印刷キュー管理部１２２が予約印刷キュー１５２に格納された印刷ジョブの中に印刷予約時間に達した印刷ジョブ（印刷可能な状態である印刷ジョブ）が存在するか否かを判断し、存在する場合、その印刷ジョブを予約印刷キュー１５２から取り出してプリンタ１１２に送信する。また、予約印刷キュー１５２に現時点で印刷可能な状態の印刷ジョブが存在しない場合、予約印刷キュー管理部１２２がその旨を即時印刷キュー管理部１２１に通知し、即時印刷キュー管理部１２１が即時印刷キュー１５０に印刷ジョブが格納されているか否かを確認し、格納されている場合には即時印刷キュー１５０から次の印刷ジョブを取り出してプリンタ１１２に送信する。これにより、プリンタ１１２は印刷ジョブスプーラ１１０から送信された印刷ジョブに含まれる印刷データを印刷媒体上へ印刷する。
【００４７】
なお、初期設定では予約印刷キュー１５２を作成しておかず、印刷ジョブスプーラ１１０が予約印刷ジョブを受け付けたときに予約印刷キュー１５２を作成するようにしてもよい。これにより、予約印刷ジョブが印刷ジョブスプーラ１１０に入力されるまで、システムのリソース（メモリ）を開放してそのリソースを有効利用することができる。
【００４８】
なお、本実施形態では、印刷システム１００におけるプリンタ１１２以外の各要素がコンピュータシステム１０１に備えられているものとしたが、これに限るものではない。例えば、複数のコンピュータシステム（パーソナルコンピュータ、ワークステーションなど）を、ネットワークを介して共通の印刷ジョブスプーラ１１０に接続し、これら各コンピュータシステムにおいて印刷ジョブスプーラ１１０を操作できるようにしてもよい。この場合、印刷ジョブ生成部１０２、印刷ジョブオプション取得部１０３、およびスプールオプション取得部１０４は、プリンタドライバ１０７を操作可能である単一のコンピュータシステム内で操作可能であってもよい。あるいは、例えば、図１に示す全ての要素（プリンタ１１２以外の要素）を、スタンドアロンアプリケーション環境またはネットワークコンピュータ環境において操作可能な１つのコンピュータシステムに組み込んでもよい。あるいは、例えば、図１に示す全ての要素（プリンタ１１２以外の要素）を、クラウドコンピューティングサービスによって実現してもよく、サース（Software as a Service; SaaS）のようにインターネットを介してアクセスされるソフトウェアで実現してもよい。
【００４９】
なお、本発明は図１に示した印刷システム１００の構成に限定されるものではなく、必要に応じて各種要素を追加したり、同等の要素に置換したりしてもよいことは、当業者にとって自明であろう。本明細書では、説明を簡単かつ簡潔にするために、そのような追加要素および同等の要素についての説明は省略する。
【００５０】
図２は、本実施形態にかかる印刷システムの変形例である印刷システム２００の概略構成を示すブロック図である。なお、説明の便宜上、図１に示した印刷システム１００と同様の機能を有する部材（要素）には同じ符号を付し、その説明を省略する。
【００５１】
図１の印刷システム１００と異なる点は、プリンタドライバ１０７に代えてプリンタドライバ２０７が備えられている点である。プリンタドライバ２０７は、図１のプリンタドライバ１０７における印刷ジョブインターフェース１０６に代えて印刷ジョブインターフェース２０６および内部スプーラ２０９を備えており、印刷ジョブスプーラ１１０に代えてシステム印刷ジョブスプーラ２１０を備えている。
【００５２】
なお、システム印刷ジョブスプーラ２１０はコンピュータシステム２０１（印刷ジョブ送信装置。例えばパーソナルコンピュータ、ワークステーションなど。）のオペレーションシステム内に備えられる。また、印刷ジョブ生成部１０２は、例えばコンピュータシステム２０１において利用されるアプリケーションシステムの１つである。
【００５３】
システム印刷ジョブスプーラ（即時印刷キュー管理部）２１０は、即時印刷ジョブを即時印刷キュー１５０に格納する処理を行う。このシステム印刷ジョブスプーラ２１０は、例えば、マイクロソフト・ウィンドウズ（登録商標）、ユニックス（登録商標）、およびリナックス（登録商標）などの市販のオペレーティングシステムに採用されているような標準的な印刷ジョブスプーラであってもよい。このような標準的なシステム印刷ジョブスプーラ２１０は、上述したように、特定のプリンタ１１２に対して１種類のスプールオプションを管理する能力を持つ。
【００５４】
内部スプーラ（予約印刷キュー管理部）２０９は、印刷ジョブインターフェース２０６と関連付けられており、予約印刷ジョブを予約印刷キュー１５２に格納する。
【００５５】
印刷ジョブ生成部１０２から印刷ジョブインターフェース２０６に印刷ジョブが入力され、印刷ジョブオプション取得部１０３から印刷ジョブインターフェース２０６に印刷ジョブオプションが入力されると、印刷ジョブインターフェース２０６は、スプールインターフェース１０８と情報をやり取りして、スプールオプション取得部１０４が受け付けたスプールオプションが即時印刷であるか予約印刷であるかを判断する。そして、即時印刷である場合、印刷ジョブオプションおよびスプールオプションを付加した印刷ジョブをスプールインターフェースからシステム印刷ジョブスプーラ２１０に出力する。これにより、システム印刷ジョブスプーラ２１０は、即時印刷ジョブを即時印刷キュー１５０に格納する。一方、予約印刷である場合、印刷ジョブインターフェース２０６は印刷ジョブオプションおよびスプールオプションを付加した印刷ジョブを内部スプーラ２０９に転送し、内部スプーラ２０９はこの印刷ジョブを予約印刷キュー１５２に格納する。
【００５６】
内部スプーラ２０９とシステム印刷ジョブスプーラ２１０とは、その後協調して機能し、予約印刷キュー１５２および即時印刷キュー１５０に格納された各印刷ジョブを適切なタイミングで印刷させる。具体的には、内部スプーラ２０９は、予約印刷キュー１５２に格納した印刷ジョブについて、当該印刷ジョブの予約時刻になって当該印刷ジョブが印刷可能な状態になることを監視する。そして、予約印刷キュー１５２に格納された印刷ジョブが印刷可能な状態になったことを検出すると、内部スプーラ２０９は、その印刷ジョブを予約印刷キュー１５２から取り出し、印刷可能な状態の印刷ジョブ（即時印刷ジョブ）としてシステム印刷ジョブスプーラ２１０に転送する。すなわち、内部スプーラ２０９は、予約印刷キュー１５２に格納した予約印刷ジョブのうち、予約時刻になった予約印刷ジョブをシステム印刷ジョブスプーラ２１０に転送する。その後、システム印刷ジョブスプーラ２１０は、内部スプーラ２０９から受信した印刷ジョブ（予約時刻に達した予約印刷ジョブ）を即時印刷ジョブとして即時印刷キュー１５０における最上位（最先に印刷される位置）に加える。なお、ここではシステム印刷ジョブスプーラ２１０が内部スプーラ２０９から受信した印刷ジョブを即時印刷キュー１５０の最上位に加えるものとしたが、これに限らず、即時印刷キュー１５０に格納されている他の印刷ジョブとの優先順位は任意の方法で決定するようにすればよい。その後、システム印刷ジョブスプーラ２１０は、プリンタ１１２をモニターし、プリンタ１１２が次の印刷ジョブを受信できる状態になると即時印刷キュー１５０から次の印刷ジョブを取り出してプリンタ１１２へ転送する。
【００５７】
なお、図１に示した印刷システム１００の場合と同様、初期設定では予約印刷キュー１５２を作成しておかず、内部スプーラ２０９が予約印刷ジョブを受け付けたときに予約印刷キュー１５２を作成するようにしてもよい。これにより、予約印刷ジョブが印刷ジョブスプーラ１１０に入力されるまで、システムのリソース（メモリ使用量、およびアプリケーションの動作負荷）を節約できる。このようなシステムのリソースの節約は、予約印刷の頻度が低い場合に特に効果が大きい。例えば、予約印刷を行うシステムでは、印刷ジョブを適切なタイミングで取り出すことができるように、予約印刷キュー１５２をモニタリングする処理をバックグラウンド処理として行うスレッドが生じる。このため、当該スレッドの作成および実行により、コンピュータシステム上のリソースが消費される。したがって、予約印刷ジョブが不定期にしかない等、予約印刷キュー１５２がほとんど使用されない場合、内部スプーラ２０９が予約印刷ジョブを受信した場合にのみ予約印刷キュー１５２および対応するスレッド（モニタリングスレッド）を生成するようにすることで、コンピュータリソースを節約できる。また、予約印刷キュー１５２内の予約印刷ジョブを全てシステム印刷ジョブスプーラ２１０に転送した後、内部スプーラ２０９が予約印刷キュー１５２を削除するようにしてもよい。これにより、システムのリソースを開放して有効利用できる。なお、本発明は図２に示した印刷システム２００の構成に限定されるものではなく、必要に応じて各種要素を追加したり、同等の要素に置換したりしてもよいことは、当業者にとって自明であろう。本明細書では、説明を簡単かつ簡潔にするために、そのような追加要素および同等の要素についての説明は省略する。
【００５８】
図３は、図１に示した印刷システム１００における印刷ジョブの生成工程および印刷ジョブのデスプール工程についての処理の流れを示すフローチャートである。
【００５９】
はじめに、印刷ジョブの生成工程について説明する。まず、印刷ジョブスプーラ１１０がスプール処理の初期化（キューの作成）を行う（ステップ３００）。例えば、即時印刷キュー１５０および予約印刷キュー１５２を作成（構築）する。なお、特定のスプールオプションについての最初の印刷ジョブが印刷ジョブスプーラ１１０に入力されるまで当該スプールオプションに対応するキューの作成を延期してもよい。例えば、上述したように、予約印刷キュー１５２については、予約印刷ジョブが印刷ジョブスプーラ１１０に入力されるまで生成しないようにしてもよい。
【００６０】
その後、印刷ジョブ生成部１０２が印刷ジョブを生成する（ステップ３０２）。例えば、印刷ジョブは、ユーザが各種アプリケーションプログラムを用いて作成してもよい。アプリケーションプログラムは、例えば、特定の書類の印刷を要求し、特定の印刷特性を任意に関連付けた印刷ジョブを生成する。
【００６１】
その後、印刷ジョブインターフェース１０６が、印刷ジョブ生成部１０２において生成された印刷ジョブを、特定のプリンタ１１２に関連付ける（ステップ３０４）。なお、印刷ジョブインターフェース１０６は、必要に応じて印刷ジョブオプション取得部１０３が取得した印刷ジョブオプションを印刷ジョブに付加する。
【００６２】
その後、スプールインターフェース１０８が、印刷ジョブインターフェース１０６によってプリンタ１１２に関連付けられた印刷ジョブにスプールオプション取得部１０４が取得したスプールオプションを付加する（ステップ３０６）。上記スプールオプションとは、即時印刷を行うか予約印刷を行うかを指定するものであり、予約印刷を行う場合には予約時間に関する情報を含む。
【００６３】
その後、印刷ジョブスプーラ１１０が、印刷ジョブオプションおよびスプールオプションを付加された印刷ジョブに基づいて印刷処理を行うプリンタおよび印刷ジョブを格納するキューを選択する（ステップ３０８）。例えば、印刷ジョブのスプールオプションが即時印刷を示している場合には即時印刷キュー１５０が選択され、印刷ジョブのスプールオプションが予約印刷を示している場合には予約印刷キュー１５２が選択される。
【００６４】
その後、必要に応じて印刷ジョブを格納するためのキューが生成される（ステップ３１０）。例えば、印刷ジョブに対応付けられたスプールオプションが予約印刷を示している場合であって、予約印刷キュー１５２が未生成の場合、印刷ジョブスプーラ１１０は予約印刷キュー１５２を生成する。
【００６５】
なお、それぞれ特定の予約時刻に対応付けられた複数の予約印刷キューを生成するようにしてもよい。この場合、同じ予約時刻に設定された複数の予約印刷ジョブが生成された場合、これら各予約印刷ジョブは同じ予約時刻に対応する予約印刷キューに加えられる。他の予約時刻に関連付けられた他の予約印刷ジョブは、その特定の予約時刻に関連付けられた予約印刷キューに加えられる。これは、例えば、最初の標準時間（例えば夜の１２時）に予約時刻を設定した複数の印刷ジョブ、および他の標準時間（例えば昼の１２時）に予約時刻を設定した他の一群の印刷ジョブを生成するような環境において有用である。
【００６６】
その後、印刷ジョブスプーラ１１０が、選択したキューに印刷ジョブを格納する（ステップ３１２）。
【００６７】
次に、印刷ジョブのデスプール工程について説明する。印刷ジョブスプーラ１１０は、プリンタ１１２が次の印刷ジョブを受信可能になるのを監視する処理をバックグラウンド処理として実行している。そして、プリンタ１１２が次の印刷ジョブを受信可能になったことを検出すると、印刷ジョブスプーラ１１０は、プリンタ１１２に対応する各キューの中に印刷ジョブが格納されているものがあるか否かを判断する（ステップ３２０）。そして、いずれのキューにも印刷ジョブが格納されていない場合、印刷ジョブスプーラ１１０は、上記のバックグラウンド処理を継続する。
【００６８】
一方、印刷ジョブが格納されている場合、印刷ジョブスプーラ１１０は、キューに格納されている各印刷ジョブのスプールオプションに基づいてプリンタ１１２に送信すべき次の印刷ジョブを選択して取り出し（デスプールし）、プリンタ１１２に送信する（ステップ３２２）。例えば、予約印刷キュー１５２に格納されている印刷ジョブが予約時刻になったとき、この印刷ジョブは次の印刷ジョブとして予約印刷キュー１５２から取り出されてプリンタ１１２に送信される。また、予約印刷キュー１５２に格納されている印刷ジョブの中に予約時刻になって印刷可能な状態になった印刷ジョブが存在しない場合、印刷ジョブスプーラ１１０は、即時印刷キュー１５０に格納されている印刷ジョブの中から最先に印刷される位置に格納された印刷ジョブを取り出し、プリンタ１１２に送信する。
【００６９】
その後、印刷ジョブスプーラ１１０は、印刷待ちの印刷ジョブ（印刷可能な状態のジョブ）がいずれかのキューに残っているか否かを判断する（ステップ３２４）。そして、残っていない場合、上記のバックグラウンド処理に戻ってステップ３２０以降の処理を繰り返し行う。
【００７０】
一方、ステップ３２４において印刷待ちの印刷ジョブが残っていると判断した場合、印刷ジョブスプーラ１１０は、印刷待ちの印刷ジョブを取り出してプリンタ１１２に送信し（ステップ３２６）、上記のバックグラウンド処理に戻ってステップ３２０以降の処理を繰り返し行う。なお、予約印刷キュー１５２および即時印刷キュー１５０における印刷可能な状態の印刷ジョブを全てプリンタ１１２に出力し終えるまで、ステップ３２４およびステップ３２６の処理を繰り返すようにしてもよい。
【００７１】
なお、図３に関する上記の説明では、即時印刷キュー１５０および予約印刷キュー１５２を印刷ジョブスプーラ１１０によって管理するものとして説明したが、これに限らず、例えば図２に示した印刷システム２００のようにシステム印刷ジョブスプーラ２１０とプリンタドライバ２０７内に備えられる内部スプーラ２０９とに上記各キューの管理を割り当ててもよい。
【００７２】
図４は、図３におけるステップ３０８の処理、すなわち印刷ジョブに関連付けられたスプールオプションに基づいて複数のキューの中から適切なキューを選択する処理の具体例を示すフローチャートである。
【００７３】
まず、印刷ジョブスプーラ１１０は、受信した印刷ジョブに関連付けられたスプールオプションを検出し、当該スプールオプションが即時印刷を指定するものであるか、予約印刷を指定するものであるかを判断する（ステップ４００）。そして、印刷ジョブスプーラ１１０は、即時印刷であると判断した場合には即時印刷キュー１５０を選択し（ステップ４０２）、予約印刷であると判断した場合には予約印刷キュー１５２を選択する（ステップ４０４）。その後、選択したキュー（即時印刷キュー１５０または予約印刷キュー１５２）に基づいて図３のステップ３１０以降の処理が行われる。
【００７４】
図５は、図３におけるステップ３２４の処理、すなわちプリンタ１１２に対応する各キューの中から次にプリンタ１１２に送信する印刷ジョブを取り出す処理の具体例を示すフローチャートである。
【００７５】
印刷ジョブスプーラ１１０は、まず、予約印刷キュー１５２に予約時間に達して現時点で印刷可能な印刷ジョブが格納されているか否かを判断する（ステップ５００）。格納されている場合、印刷ジョブスプーラ１１０は、予約印刷キュー１５２から当該印刷ジョブを取り出し（ステップ５０２）、図３のステップ３２４において印刷可能なジョブが存在する場合の処理、すなわちステップ３２６の処理を行う（ステップ５１０）。一方、ステップ５００において、予約印刷キュー１５２に現時点で印刷可能な状態の印刷ジョブ（予約時間に達した印刷ジョブ）が格納されていないと判断した場合、印刷ジョブスプーラ１１０は、即時印刷キュー１５０に印刷ジョブが格納されているか否かを判断する（ステップ５０４）。そして、格納されていると判断した場合、印刷ジョブスプーラ１１０は、即時印刷キュー１５０から印刷ジョブを取り出し（ステップ５０６）、図３のステップ３２６の処理を行う（ステップ５１０）。また、ステップ５０４において即時印刷キュー１５０に印刷ジョブが格納されていないと判断した場合、印刷ジョブスプーラ１１０は、図３のステップ３２４において印刷可能なジョブが存在しなかった場合の処理、すなわちステップ３２０の処理に戻る。
【００７６】
図６は、図２に示した印刷システム２００における印刷ジョブの生成工程および印刷ジョブのデスプール工程についての処理の流れを示すフローチャートである。図６に示す方法は、図３に示す方法に類似しているが、図３では即時印刷キュー１５０および予約印刷キュー１５２を単一の印刷ジョブスプーラ１１０で管理していたのに対して、図６では予約印刷キュー１５２についてはプリンタドライバ２０７備えられた内部スプーラ２０９で管理し、即時印刷キュー１５０についてはコンピュータシステム２０１のシステム印刷ジョブスプーラ２１０で管理する点が異なっている。
【００７７】
図６に示す方法は、システム印刷ジョブスプーラ２１０として従来のコンピュータシステムに備えられている標準システムスプーラを用い、プリンタドライバ２０７内に設けた内部スプーラ２０９によって予約印刷キュー１５２を管理するようにするだけで実現できる。すなわち、システム印刷ジョブスプーラ２１０として、従来のコンピュータシステムに備えられている標準システムスプーラを改良することなくそのまま用いることができる。
【００７８】
はじめに、印刷ジョブの生成工程について説明する。まず、内部スプーラ２０９がプリンタドライバ２０７内に予約印刷キュー１５２を生成し、システム印刷ジョブスプーラ２１０がシステムスプーラ内（オペレーティングシステム内）に即時印刷キュー１５０を生成（構築）する（ステップ６００）。なお、ステップ６００の処理は、システム印刷ジョブスプーラ（スプール処理システム）２１０およびプリンタドライバ２０７の初期化処理の一部として実行してもよい。また、初期状態では予約印刷キュー１５２を作成せず、予約印刷ジョブがプリンタドライバ２０７に入力されたときに必要に応じて予約印刷キュー１５２を生成するようにしてもよい。
【００７９】
その後、印刷ジョブ生成部１０２が印刷ジョブを生成する（ステップ６０２）。例えば、印刷ジョブは、ユーザが各種アプリケーションプログラムを用いて作成してもよい。アプリケーションプログラムは、例えば、特定の書類の印刷を要求し、特定の印刷特性を任意に関連付けた印刷ジョブを生成する。
【００８０】
その後、印刷ジョブインターフェース２０６が、印刷ジョブ生成部１０２において生成された印刷ジョブを、特定のプリンタ１１２に関連付ける（ステップ６０４）。また、印刷ジョブインターフェース２０６が、必要に応じて印刷ジョブオプション取得部１０３が取得した印刷ジョブオプションを印刷ジョブに付加する。なお、ステップ６０４の処理は、例えば、従来から公知のユーザーインターフェース技術やアプリケーションプログラムインターフェイス技術を用いて行うことができる。
【００８１】
その後、スプールインターフェース１０８が、印刷ジョブインターフェース２０６によってプリンタ１１２に関連付けられ、印刷ジョブオプションを付加された印刷ジョブにスプールオプション取得部１０４が取得したスプールオプションを付加する（ステップ６０６）。上記スプールオプションとは、例えば、即時印刷を行うか予約印刷を行うかを指定し、予約印刷を行う場合には予約時間を示すものである。なお、ステップ６０６の処理は、例えば、従来から公知のユーザーインターフェース技術やアプリケーションプログラムインターフェイス技術を用いて行うことができる。
【００８２】
その後、内部スプーラ２０９およびシステム印刷ジョブスプーラ２１０が、印刷ジョブおよび印刷ジョブに関連付けられたスプールオプションに基づいて印刷ジョブを格納するキューを選択し（ステップ６０８）、選択したキューに印刷ジョブを格納する（ステップ６１０）。具体的には、まず内部スプーラ２０９が、スプールオプションが予約印刷を示しているか否かを判断し、予約印刷を示している場合には予約印刷キュー１５２を選択して予約印刷キュー１５２に印刷ジョブを格納する。また、予約印刷ではない場合（即時印刷である場合）には内部スプーラ２０９が印刷ジョブをシステム印刷ジョブスプーラ２１０に出力し、システム印刷ジョブスプーラ２１０が即時印刷キュー１５０を選択して即時印刷キュー１５０に印刷ジョブを格納する。
【００８３】
次に、印刷ジョブのデスプール工程について説明する。
【００８４】
内部スプーラ２０９は、予約印刷キュー１５２内に現時点で印刷可能な印刷ジョブ（予約時間に達した印刷ジョブ）が存在するか否かを判断する処理をバックグラウンド処理で行っている（ステップ６２０）。
【００８５】
そして、内部スプーラ２０９は、予約印刷キュー１５２内に現時点で印刷可能な印刷ジョブが存在する場合、予約印刷キュー１５２内から次に印刷すべき印刷ジョブを取り出し（ステップ６２２）、システム印刷ジョブスプーラ２１０に送信する（ステップ６２４）。システム印刷ジョブスプーラ２１０は、内部スプーラ２０９から受信した上記印刷ジョブを即時印刷キュー１５０に格納する。
【００８６】
その後、システム印刷ジョブスプーラ２１０は、プリンタ１１２が次の印刷ジョブを受信可能になる毎に即時印刷キュー１５０から次に送信すべき印刷ジョブを取り出してプリンタ１１２に送信する（ステップ６２６）。
【００８７】
なお、ステップ６２０において内部スプーラ２０９が予約印刷キュー１５２内に現時点で印刷可能な印刷ジョブが存在しないと判断した場合、内部スプーラ２０９からシステム印刷ジョブスプーラ２１０にその旨が通知され、システム印刷ジョブスプーラ２１０はステップ６２６の処理を行う。
【００８８】
ステップ６２６の処理の後、システム印刷ジョブスプーラ２１０は、印刷待ちの印刷ジョブ（印刷可能な状態のジョブ）が即時印刷キュー１５０に残っているか否かを判断する（ステップ６２８）。そして、残っていない場合、ステップ６２０の処理に戻る。
【００８９】
一方、ステップ６２８において即時印刷キュー１５０に印刷待ちの印刷ジョブが残っていると判断した場合、システム印刷ジョブスプーラ２１０は、印刷待ちの印刷ジョブを即時印刷キュー１５０から取り出してプリンタ１１２に送信し（ステップ６３０）、ステップ６２０の処理に戻る。
【００９０】
なお、内部スプーラ２０９が、予約印刷キュー１５２内の印刷ジョブを全て取り出したときに、プリンタドライバ２０７から予約印刷キュー（予約印刷キュー記憶部）１５２を削除するようにしてもよい。例えば、初期状態では予約印刷キュー１５２を生成しない構成とし、プリンタドライバ２０７が予約印刷ジョブを受信したときに予約印刷キュー１５２および予約印刷キュー１５２をモニタリングするスレッドが既に生成されているか否かを判断し、存在しない場合に予約印刷キュー１５２およびそのモニタリングスレッドを生成するようにしてもよい。予約印刷キュー１５２およびそのモニタリングスレッドの生成後に新たな予約印刷ジョブを受信した場合には、その予約印刷ジョブは生成済みの予約印刷キュー１５２に格納される。そして、内部スプーラ２０９は、予約印刷キュー１５２から予約印刷ジョブを取り出してシステム印刷ジョブスプーラ２１０に送信すると、予約印刷キュー１５２が空になったか否か（予約印刷キュー１５２に残っている印刷ジョブがあるか否か）を判断し、空である場合には予約印刷キュー１５２およびそのモニタリングスレッドを削除する。これにより、予約印刷ジョブが存在しない場合にプリンタドライバ２０７内のリソースを開放できる。
【００９１】
なお、上記の各実施形態において、即時印刷キュー１５０および予約印刷キュー１５２の管理に上記した以外の機能を追加してもよい。例えば、従来から公知のジョブ優先順位付け技術を用いて各キュー内の印刷ジョブに優先順位を付け、各キューから取り出す印刷ジョブを当該キュー内における各印刷ジョブの優先順位に応じて決定するようにしてもよい。例えば、各印刷ジョブのサイズに応じて（サイズの小さい順あるいはサイズの大きい順）に上記優先順位を付けてもよい。
【００９２】
また、図３から図６に示した処理方法に対して、更なるステップ（処理）を追加したり、同等のステップに置換したりしてもよいことは、当業者にとって明らかであろう。このような追加的なステップおよび同等のステップは、説明を簡単かつ簡潔にするために、本明細書では省略している。
【００９３】
また、上記各実施形態において、印刷システム１００、２００に備えられる各部（プリンタ１１２を除く）を、ＣＰＵ等のプロセッサを用いてソフトウェアによって実現してもよい。この場合、印刷システム１００、２００は、各機能を実現する制御プログラムの命令を実行するＣＰＵ（central processing unit）、上記プログラムを格納したＲＯＭ（read only memory）、上記プログラムを展開するＲＡＭ（random access memory）、上記プログラムおよび各種データを格納するメモリ等の記憶装置（記録媒体）などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアである印刷システム１００、２００の制御プログラムのプログラムコード（実行形式プログラム、中間コードプログラム、ソースプログラム）をコンピュータで読み取り可能に記録した記録媒体を、印刷システム１００，２００に供給し、そのコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に記録されているプログラムコードを読み出し実行することによって達成される。
【００９４】
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー（登録商標）ディスク／ハードディスク等の磁気ディスクやＣＤ−ＲＯＭ／ＭＯ／ＭＤ／ＤＶＤ／ＣＤ−Ｒ等の光ディスクを含むディスク系、ＩＣカード（メモリカードを含む）／光カード等のカード系、あるいはマスクＲＯＭ／ＥＰＲＯＭ／ＥＥＰＲＯＭ／フラッシュＲＯＭ等の半導体メモリ系などを用いることができる。
【００９５】
また、印刷システム１００、２００を通信ネットワークと接続可能に構成し、通信ネットワークを介して上記プログラムコードを供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、ＬＡＮ、ＩＳＤＮ、ＶＡＮ、ＣＡＴＶ通信網、仮想専用網（virtual private network）、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、ＩＥＥＥ１３９４、ＵＳＢ、電力線搬送、ケーブルＴＶ回線、電話線、ＡＤＳＬ回線等の有線でも、ＩｒＤＡやリモコンのような赤外線、Ｂｌｕｅｔｏｏｔｈ（登録商標）、８０２．１１無線、ＨＤＲ、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
【００９６】
また、印刷システム１００、２００の各ブロックは、ソフトウェアを用いて実現されるものに限らず、ハードウェアロジックによって構成されるものであってもよく、処理の一部を行うハードウェアと当該ハードウェアの制御や残余の処理を行うソフトウェアを実行する演算手段とを組み合わせたものであってもよい。
【００９７】
図７は、ソフトウェアを用いて印刷システム１００、２００（プリンタ１１２を除く）を実現する場合の構成例を示すブロック図である。この図に示す印刷スプールコンピュータシステム７０１は、制御部（プロセッサ）７００、プログラムおよびデータを記憶するメモリ７０２、入出力装置（Ｉ／Ｏデバイス）７０４、ネットワークインターフェース７０６、およびコンピュータ読取可能なプログラムを記録した記録媒体７１２を備えている。また、制御部７００、プログラムおよびデータを記憶するメモリ７０２、入出力装置７０４、およびネットワークインターフェース７０６はシステムバス７５０を介して互いに接続されている。
【００９８】
制御部７００は、印刷スプールコンピュータシステム７０１の各部の動作を制御するものである。なお、制御部７００は複数の制御要素の集合によって構成されるものであってもよい。
【００９９】
入出力装置７０４は、ユーザからの指示を受け付けるためのものであり、例えば、キーボード、ディスプレイ、ポインティング・デバイス、あるいはこれらの組み合わせによって構成される。
【０１００】
記録媒体７１２はコンピュータ読取可能なプログラムを記録した記録媒体である。
【０１０１】
ネットワークインターフェース７０６はネットワークを介して印刷スプールコンピュータシステム７０１と他のデータ処理システムや記憶装置とを接続するためのものである。
【０１０２】
制御部７００は、記録媒体７１２から読み出したプログラム、あるいはネットワークインターフェース７０６を介して受信したプログラムをメモリ７０２に一時的に格納し、これを適宜読み出して実行することで上述した印刷処理（例えば図３〜図６の処理）を行う。
【０１０３】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【０１０４】
本発明は、即時印刷ジョブのスプールと予約印刷ジョブのスプールとを行う印刷ジョブ送信装置、この印刷ジョブ送信装置を備えたコンピュータシステム、および印刷システムに適用できる。
【符号の説明】
【０１０５】
１００，２００  印刷システム
１０１，２０１  コンピュータシステム（印刷ジョブ送信装置）
１０２  印刷ジョブ生成部
１０３  印刷ジョブオプション取得部
１０４  スプールオプション取得部
１０６，２０６  印刷ジョブインターフェース
１０７，２０７  プリンタドライバ
１０８  スプールインターフェース
１１０  印刷ジョブスプーラ
１１２  プリンタ
１２１  即時印刷キュー管理部
１２２  予約印刷キュー管理部
１５０  即時印刷キュー（即時印刷キュー記憶部）
１５２  予約印刷キュー（予約印刷キュー記憶部）
２０９  内部スプーラ（予約印刷キュー管理部）
２１０  システム印刷ジョブスプーラ（即時印刷キュー管理部）
【図１】
2010092467.tif 000003
【図２】
2010092467.tif 000004
【図３】
2010092467.tif 000005
【図４】
2010092467.tif 000006
【図５】
2010092467.tif 000007
【図６】
2010092467.tif 000008
【図７】
2010092467.tif 000009