以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
[第1の実施形態]
図1は、本実施形態の印刷システムの構成を示す図である。印刷システム100では、データ処理装置101(情報処理装置)とプリンタ(印刷装置)120は、ネットワーク111を介して相互に通信可能に接続されている。プリンタ120は、データ処理装置101から各種ジョブやデータを受信し、印刷対象データに基づいて記録媒体上への記録(印刷)を行う。プリンタ120は、電子写真記録方式やインクジェット記録方式等の各種記録方式により印刷を行う。なお、印刷システム100は、これに限定されるものではなく、サーバ等の他の装置を含んでも良く、プリンタ120がサーバから印刷対象データを取得するような構成でも良い。また、ネットワーク111は、有線ネットワークでも無線ネットワークでも良い。また、データ処理装置101とプリンタ120は、通信距離が異なる複数種類の無線通信が可能なように構成されていても良い。また、プリンタ120は、印刷機能だけでなく、スキャナ機能やファクス機能等、複数の機能が一体化された、いわゆるMFP(Multi Function Peripheral)であっても良い。
データ処理装置101は、プリンタ120を制御し、例えば、印刷ジョブ及び印刷対象データを送信してプリンタ120に印刷を実行させる。本実施形態では、例えばパーソナルコンピュータ(PC)がデータ処理装置101として用いられ、オペレーティングシステム(OS)としてXが実装されている。Xとしては、例えば、MacOS(登録商標)が挙げられる。PCの資源、例えばPC内の各ブロックは、OSにより管理される。図1(b)に示すように、データ処理装置101は、ハードウェア構成として、CPU131、ROM132、RAM133、ハードディスク134、表示部135、操作部136、通信インタフェース(I/F)137や各種デバイスコントローラを含む。
CPU131は、ROM132のプログラム用ROMに記憶された、或いはハードディスク134からRAM133にロードされたOSやアプリケーション等のプログラムを実行する。後述する各フローチャートの処理は、このプログラムの実行により実現される。また、RAM133は、CPU131の主メモリ、ワークエリア等としても機能する。また、表示部135は、例えばCRTディスプレイであり、データ処理装置101やプリンタ120の電源状態等の各種ステータスや、ジョブの実行状況等を表示する。また、表示部135は、プリンタ120が実行可能な機能を設定するための設定画面や、本実施形態における各ダイアログ画面も表示する。操作部136は、例えばキーボードやポインティングデバイスであり、例えば、印刷の実行や設定等についてのユーザ操作を受け付ける。なお、表示部135と操作部136は、タッチパネルを含むものであってもよく、表示部135と操作部136の一部又は全部が一体となっていてもよい。
ハードディスク134は、データ処理装置101やプリンタ120の動作に必要な各種テーブルやデータを記憶する。本実施形態に必要な一覧やテーブル等もハードディスク134やROM132、RAM133の記憶領域に記憶される。ハードディスク134は、ハードディスク(HD)やフレキシブルディスク(FD)等へのデータアクセスを制御するディスクコントローラ(DKC)等を含んでいる。また、通信I/F137は、ネットワーク111を介して接続されたプリンタ120との間の通信をするインタフェースである。システムバス138は、上記の各ブロックを相互に通信可能に接続する。
図1(a)に示すように、データ処理装置101は、ソフトウェア構成として、アプリケーション102、プリンタユーティリティ103、ジョブ管理部104、印刷キュー105、PPDファイル106を含む。また、データ処理装置101は、ジョブ表示部107、印刷フィルタ108、メンテナンスフィルタ109、インタフェース(I/F)制御部110を含む。図1(a)に示す各ブロックは、CPU131によるプログラムの実行により実現される。本実施形態では、OSの印刷制御システムとして、例えば、MacOS Xに含まれるCUPS(Common UNIX(登録商標) Printing System)が用いられ、ジョブ管理部104、印刷キュー105は、CUPSにより制御される。I/F制御部110は、CUPSにおいてプリンタ120との通信を行うバックエンドとして動作する。プリンタ120の印刷機能の設定可能な値や設定初期値の情報は、PPD(PostScript Printer Description)ファイル106に記述されている。アプリケーション102は、PPDファイル106をジョブ管理部104に問い合わせることにより、印刷機能の設定可能な値や設定初期値の情報を取得して印刷設定を行う。
ユーザがアプリケーション102で作成したデータについて印刷が要求されると、その要求は、印刷対象データとともに印刷ジョブとしてジョブ管理部104に投入される。ジョブ管理部104は、受け取ったジョブを識別するための識別情報(ジョブID)をジョブに割り当てて印刷キュー105(ジョブキュー)に格納して管理し、また、印刷キュー105から順次取り出して実行する。ジョブ管理部104は、例えば、印刷キュー105への格納順(例えば、日付/時刻順)に取り出す。
ジョブ管理部104は、印刷キュー105から印刷ジョブを取り出した場合、印刷対象データを印刷フィルタ108に送る。そして、印刷フィルタ108は、印刷対象データを受け取るとプリンタ120が解釈可能な描画コマンドに変換し、I/F制御部110を介してプリンタ120に送信する(第1のジョブ実行の一例)。その後、印刷フィルタ108は、プリンタ120が印刷処理を完了するまでプリンタ120の状態を監視する。監視は、プリンタ120から後述するステータス情報を取得することにより行われる。ジョブ表示部107は、印刷キュー105が保持するジョブのリストをジョブ管理部104に問い合わせて取得し、そのジョブの一覧と各ジョブの処理状態を後述する図5や図10のダイアログを表示部135に表示する。
ユーザは、プリンタユーティリティ103によりプリンタ120の備える機能を設定可能である。ユーザがプリンタ120の機能の設定を要求すると、機能設定ジョブが、図8で説明するように、その要求を示す設定ファイルとともにジョブ管理部104に投入される。ジョブ管理部104は、印刷ジョブの場合と同様に、設定ジョブを印刷キュー105に格納して管理し、また、印刷キュー105から順次取り出して実行する。このように、印刷キュー105は、印刷ジョブと設定ジョブを保持可能な構成となっている。
ジョブ管理部104は、印刷キュー105から機能設定ジョブを取り出した場合、要求を示す設定ファイルをメンテナンスフィルタ109に送る。メンテナンスフィルタ109は、設定ファイルを受け取るとプリンタ120が解釈可能な設定コマンドに変換し、I/F制御部110を介してプリンタ120に送信する(第2のジョブ実行の一例)。I/F制御部110が制御するインタフェース及びI/F制御部121が制御するインタフェースは、例えば、ローカルインタフェースであるUSB(Universal Serial Bus)で構成される。
本実施形態では、データ処理装置101の、印刷フィルタ108、プリンタユーティリティ103、メンテナンスフィルタ109は、MacOS Xに含まれるCUPSと連携して動作するように構成されている。
プリンタ120は、I/F制御部121、印刷制御部122を含む。プリンタは120、I/F制御部121を介して、データ処理装置101から送信された印刷対象データやジョブ、設定コマンドを受信する。印刷制御部122は、データ処理装置101から送信された印刷対象データに基づいて印刷部を制御し、また、設定コマンドに基づいてプリンタ120に機能を設定する。機能については図2において説明する。
プリンタ120は、図1(c)に示すように、データ処理装置101と同様に、ハードウェア構成として、CPU141、ROM142、RAM143、ハードディスク144、表示部145、操作部146、通信I/F147を含む。CPU141〜通信I/F147は、CPU131〜通信I/F137の説明と同様の構成からなり、同様に動作するため、説明を省略する。I/F制御部121、印刷制御部122は、CPU141によるプログラムの実行により実現される。
プリンタ120は、さらに、印刷部148と読取部149を含む。印刷部148は、各記録方式に応じた構成により、印刷用紙などの被記録媒体上に画像を印刷する。例えば、インクジェット記録方式の場合には、記録ヘッドやキャリッジ等を有し、被記録媒体上にインク滴を吐出する。読取部149は、例えば、スキャナヘッドを有し、原稿台に設置された原稿を光学的に読み取る。また、読取部149は、自動原稿給送装置(ADF)から給紙された複数枚の原稿を連続的に読み取る場合もある。システムバス150は、上記の各ブロックを相互に通信可能に接続する。
図2は、プリンタユーティリティ103が提供する操作ダイアログの一例を示す図である。プリンタユーティリティ103は、例えば表示部135のメイン設定画面から起動を指示されると、操作ダイアログ200を表示する。ユーザは、タブメニュー201によりプリンタユーティリティ103のダイアログを切り替えることができる。ユーザがタブメニューの「自動電源設定」を選択すると、プリンタユーティリティ103は、プリンタ120の自動電源オフ機能と自動電源オン機能の設定を行うための自動電源設定ダイアログ203を表示する。プリンタユーティリティ103は、起動直後では、例えば自動電源設定ダイアログ201を表示している。自動電源オフチェックボックス204と時間選択ポップアップメニュー206により、ユーザから、プリンタ120の自動電源オフ機能の設定を受付可能である。自動電源オフ機能は、プリンタ120が特定の時間使用されない場合にユーザの操作を介さずに電源を自動的にオフする機能である。ユーザは自動電源オフチェックボックス204により本機能を有効にするか否かを設定でき、電源をオフするまでの特定の時間を時間選択ポップアップメニュー206により設定することができる。本実施形態では、ユーザから、特定の時間として、選択ポップアップメニュー206により、例えば、「15分」、「30分」、「60分」の何れかを選択を受け付ける。
自動電源オンチェックボックス205により、ユーザから、プリンタ120の自動電源オン機能の設定を受付可能である。自動電源オン機能は、ユーザの操作を介さずに、電源オフ状態のプリンタ120の電源を自動的にオンする機能である。本機能が有効のとき、プリンタ120は、データ処理装置101から印刷対象データや設定コマンド等を受信すると、自動的に電源オンの状態になる。ユーザは、自動電源オンチェックボックス205により本機能を有効にするか否かを設定することができる。
ユーザにより適用ボタン202が押下されると、プリンタユーティリティ103は、図2に示すダイアログの機能の設定をプリンタ120に適用させる。具体的には、適用ボタン202の押下を受け付けると、プリンタユーティリティ103は、自動電源オフ機能と自動電源オン機能の設定を要求する設定ジョブをジョブ管理部104に投入する。その後、ジョブが処理されるまでの間、図4に示す機能設定中ダイアログ400を表示する。そして、設定ジョブの処理が完了すると、プリンタユーティリティ103は、機能設定中ダイアログ400を閉じて、自動電源設定ダイアログ201に戻る。
本実施形態では、適用ボタン202が押下されると、プリンタユーティリティ103は、機能の設定が完了するまで機能設定中ダイアログ400を表示して、他の機能の設定を受け付けない。即ち、プリンタユーティリティ103は、ジョブ管理部104に複数の設定ジョブを投入することはない。その結果、例えば、プリンタ120の電源状態の移行条件が異なるような複数の設定ジョブの投入を防ぐことができる。
図3は、プリンタユーティリティ103が提供する乾燥待ち設定ダイアログの一例を示す図である。ユーザからタブメニューの「乾燥待ち設定」の選択を受け付けると、プリンタユーティリティ103は、プリンタ120の乾燥待ち機能の設定を行うための乾燥待ち設定ダイアログ300を表示する。インク乾燥待ち時間選択スライドバー301により、ユーザから、乾燥待ちする時間の設定を受付可能である。乾燥待ち機能とは、例えば、複数ページの印刷において次ページの印刷開始までの所定時間、印刷を休止する機能である。これにより、印刷面が完全に乾かないうちに次ページが排紙されて用紙が汚れることを防ぐことができる。本実施形態では、ユーザから、待ち時間選択スライドバー301により、乾燥待ちする時間として、例えば、「なし」、「5秒」、「10秒」、「20秒」、「30秒」の何れかの選択を受け付ける。
図2と同様に、ユーザから適用ボタン202が押下されると、プリンタユーティリティ103は、図3のダイアログの設定をプリンタ120に適用させる。具体的には、適用ボタン202の押下を受け付けると、プリンタユーティリティ103は、乾燥待ち機能の設定を要求する設定ジョブをジョブ管理部104に投入する。その後、プリンタユーティリティ103は、設定ジョブが処理されるまでの間、図4に示す機能設定中ダイアログ400を表示する。そして、設定ジョブの処理が完了すると、プリンタユーティリティ103は、機能設定中ダイアログ400を閉じて、乾燥待ち設定ダイアログ300に戻る。
図4は、機能の設定中に表示されるダイアログの一例を示す図である。機能設定中ダイアログ400は、設定ジョブが処理されてプリンタ120の機能が設定されている間に表示される。自動電源設定ダイアログ203又は乾燥待ち設定ダイアログ300が表示されているときに適用ボタン202が押下されると、プリンタユーティリティ103は、各ダイアログの機能の設定を要求する設定ジョブをジョブ管理部104に投入する。そして、機能設定中ダイアログ400が表示される。そして、プリンタユーティリティ103は、投入した機能ジョブの処理が完了すると、機能設定中ダイアログ400を閉じて自動電源設定ダイアログ203又は乾燥待ち設定ダイアログ300の表示に戻る。
このように、本実施形態では、プリンタ120に機能を設定中には、データ処理装置101の表示部135に機能を設定中であることを表示することにより、ユーザは機能を設定中であることを認識することができる。なお、本実施形態では、「設定した内容を適用しています。しばらくお待ちください。」と表示するものとしたが、これに限定されるものではない。
図5は、ジョブ表示部107により表示部135に表示されるダイアログの一例を示す図である。ジョブ表示ダイアログ500のジョブ表示領域503には、印刷キュー105が保持するジョブの一覧が表示される。ジョブ表示領域503は、ジョブの処理状態を表示する状態表示領域504とジョブの名称を表示する名称表示領域505を含む。表示領域504に表示されるジョブの処理状態の情報としては、「処理中」、「処理待ち」などが挙げられる。ユーザによりジョブ削除ボタン501が押下されると、ジョブ表示部107は、ジョブ表示領域503で選択されたジョブのキャンセルをジョブ管理部104に要求する。ジョブ管理部104は、キャンセルの要求に応じて、そのジョブを印刷キュー105から削除する。表示領域502には、処理中の印刷フィルタ108又はメンテナンスフィルタ109の状態情報が表示される。
図5(a)は、アプリケーションの一例としてテキスト編集用のアプリケーションであるテキストエディット(登録商標)から文書1の印刷ジョブが投入されたときのダイアログを示す図である。ジョブ表示領域503では、処理中のジョブとして文書1の印刷ジョブがハイライト表示されている。なお、処理中のジョブ以外の印刷ジョブが投入された場合は、ジョブ表示領域503に当該投入されたジョブは表示されるが、処理待ちとなるためハイライト表示されない。状態表示領域504には、「処理中」と表示されている。また、名称表示領域505には、印刷するデータの名称である「文書1」が表示されている。本実施形態では、名称表示領域505に表示される名称は、ジョブを投入したアプリケーション102により指定された名称である。アプリケーション102は、ジョブを投入するときにジョブ管理部104にジョブの名称も通知する。ジョブ表示部107は、ジョブ管理部104から各ジョブの名称を含むジョブの一覧情報を取得し、名称表示領域505に表示する。ステータス表示領域502には、印刷フィルタ108が文書1を印刷中であることを示すメッセージが表示されている。
図5(b)は、プリンタユーティリティ103から設定ジョブが投入されたときに表示されるダイアログの一例を示す。ジョブ表示領域503では、処理中のジョブとして設定ジョブがハイライト表示されている。状態表示領域504には、「処理中」と表示されている。名称表示領域505には、設定ジョブであることを示すジョブの名称が表示されている。本実施形態では、設定ジョブの名称は、設定ジョブであることを示す「プリンタの設定」と、設定する機能の名称及び設定値であり、例えば「自動電源オフ機能:30分、自動電源オン機能:無効」である。このジョブ名称は、設定ジョブを投入したプリンタユーティリティ103が設定ジョブをジョブ管理部104に投入するときにジョブ管理部104に通知する名称である。ステータス表示領域502には、メンテナンスフィルタ109がプリンタ120の設定中であることを示すメッセージが表示されている。
図6は、メンテナンスフィルタ109の機能の設定処理を示すフローチャートである。図6に示す各処理は、例えば、CPU131がROM132に記憶されたプログラムをRAM133に読み出して実行することにより実現される。S601で、ジョブ管理部104は、印刷キュー105から設定ジョブを取り出すと、その要求を示す設定ファイルをメンテナンスフィルタ109に送り、その後、メンテナンスフィルタ109の処理が開始される。
S602で、メンテナンスフィルタ109は、ジョブ管理部104から受け取った設定ファイルに基づいて、プリンタ120を設定モードに移行させるための制御コマンドを生成する。S603で、メンテナンスフィルタ109は、生成した設定コマンドをプリンタ120に送信する。
S604で、メンテナンスフィルタ109は、プリンタ120にステータス情報を要求し、プリンタ120からステータス情報を取得する。そして、S605で、メンテナンスフィルタ109は、取得したプリンタ120のステータス情報に含まれる機能の設定状態情報(設定進捗状況)を解析する。
一方、プリンタ120は、メンテナンスフィルタ109から送信された設定コマンドに応じて機能を設定する。また、プリンタ120は、機能の設定が完了すると、設定完了の旨を含むステータス情報をメンテナンスフィルタ109に送信する。
S606で、メンテナンスフィルタ109は、プリンタ120のステータス情報の解析の結果、プリンタの機能の設定が完了したか否かを判定する。ここで、プリンタ120の機能の設定が完了したと判定された場合、S607に進む。一方、プリンタ120の機能の設定が完了していないと判定された場合、S604からの処理を繰り返す。S607で、メンテナンスフィルタ109は、プリンタ120の設定モードを終了させるための制御コマンドをプリンタ120に送信し、図6の処理を終了する。
図7は、印刷フィルタ108の印刷処理を示すフローチャートである。図7の各処理は、例えば、CPU131がROM132に記憶されたプログラムをRAM133に読み出して実行することにより実現される。S701で、ジョブ管理部104は、印刷キュー105から印刷ジョブを取り出すと、印刷要求のあった印刷対象データを印刷フィルタ108に送り、印刷フィルタ108の処理が開始される。また、印刷フィルタ108は、プリンタ120を印刷モードに移行させるための制御コマンドをプリンタ120に送信する。
S702で、印刷フィルタ108は、ジョブ管理部104から印刷対象データを所定のバンド単位で取得する。S703で、印刷フィルタ108は、印刷対象データの有無を判定する。ここで、印刷対象データがあると判定された場合、S704で、印刷フィルタ108は、印刷対象データに基づいて、プリンタ120の解釈可能な描画コマンドを生成し、S705で、その生成した描画コマンドをプリンタ120に送信する。一方、印刷対象データがないと判定された場合、描画コマンドの生成及び送信を行わずに、S706に進む。
S706で、印刷フィルタ108は、プリンタ120からステータス情報を取得し、S707で、取得したプリンタ120のステータス情報を解析し、プリンタ120の印刷処理の進捗状況を監視する。S708で、印刷フィルタ108は、1ページ分の描画コマンドの生成及び送信が終了しているか否かを判定する。ここで、終了していると判定された場合、S709に進む。一方、終了していないと判定された場合、S702からの処理を繰り返す。
S709で、印刷フィルタ108は、S707で解析した結果に基づいて、プリンタ120で1ページ分の印刷が完了したか否かを判定する。ここで、完了していないと判定された場合、S706からの処理を繰り返す。一方、1ページ分の印刷が完了したと判定された場合、S710に進み、印刷フィルタ108は、S707で解析された結果に基づいて、プリンタ120で全ページの印刷が完了したか否かを判定する。ここで、全ページの印刷が完了したと判定された場合、S722に進む。S722で、印刷フィルタ108は、メンテナンスフィルタ109の代理で設定した機能及び設定値を代理設定情報としてPPDファイル106に保存している場合には、それらの情報を削除する。記憶部であるPPDファイル106への代理設定情報の保存については後述する。S722の処理後、S723で、印刷フィルタ108は、プリンタ120の印刷モードを終了させるための制御コマンドをプリンタ120に送信し、図7の処理を終了する。
本実施形態では、以下で説明するように、S710で全ページの印刷が完了していないと判定された場合、印刷フィルタ108は、次ページの印刷を継続する前に、印刷フィルタ108が設定可能な機能の設定があれば代理で実行する。しかしながら、機能を設定するには一旦印刷処理を中断する必要があり、また、ページの途中で印刷を中断して設定すると印刷画質に影響を及ぼしてしまう。従って、本実施形態では、印刷フィルタ108は、1ページの印刷が完了して次ページの印刷を実行する前のページ間において、メンテナンスフィルタ109の代理で、プリンタ120への機能の設定を実行する。
S711で、印刷フィルタ108は、ジョブ管理部104に印刷キュー105が保持するジョブの一覧情報を問い合わせて取得する。ジョブの一覧情報には、各ジョブの処理状態とジョブの名称とが含まれている。ジョブの名称には、設定ジョブであれば、設定ジョブである旨を示す名称と、設定対象の機能の名称及び設定値とが含まれる。従って、印刷フィルタ108は、ジョブの一覧情報を参照することにより、設定ジョブが処理の待機中であるか否か、また、設定ジョブにより設定される機能及び設定値を取得することができる。
S712で、印刷フィルタ108は、取得したジョブの一覧情報において、待機中の設定ジョブがあるか否かを判定する。ここで、待機中の設定ジョブがないと判定された場合、S702からの処理を繰り返す。一方、待機中の設定ジョブがあると判定された場合、S713に進み、印刷フィルタ108は、設定ジョブである旨を示す名称に基づいて、設定する機能及び設定値を取得する。
S714で、印刷フィルタ108は、取得した機能の設定値を代理で設定可能であるか否かを判定する。本実施形態では、現在処理中の印刷ジョブに対する印刷動作が変わらないものは、取得した機能の設定値を代理で設定可能と判定する。例えば、自動電源オフ機能や自動電源オン機能の設定であれば、設定しても現在処理中の印刷動作は変わらないので、その場合、印刷フィルタ108は設定可能と判定する。また、乾燥待ち機能の設定であれば、設定すると次ページの印刷開始までの休止時間が変わる可能性がある。よって、複数ページの印刷の途中である場合、印刷フィルタ108は設定不可と判定する。また、1ページの印刷や複数ページの印刷であっても、最終ページの印刷中であれば、たとえ設定しても次ページの印刷はなく、印刷動作には影響がないので、その場合、印刷フィルタ108は設定可能と判定する。
S715で代理で設定不可と判定された場合、S702からの処理を繰り返す。一方、代理で設定可能と判定された場合、S716で、印刷フィルタ108は、PPDファイル106を取得する。S717で、印刷フィルタ108は、PPDファイル106の代理設定情報を参照して、S713で取得された機能の設定値を既に代理で設定済みであるか否かを判定する。
印刷フィルタ108は、代理での設定を行うと後述のS720でPPDファイル106に、設定した機能及び設定値を代理設定情報として保存する。従って、印刷フィルタ108は、PPDファイル106の代理設定情報を参照することにより、既に代理で設定済みであるか否かを判定することができる。PPDファイル106への代理設定情報の保存や、PPDファイル106からの代理設定情報の取得は、ジョブ管理部104を介して行われる。印刷フィルタ108は、印刷フィルタ108が代理で設定した機能の名称をKeyとし、その設定値をValueとしてジョブ管理部104に通知する。ジョブ管理部104は、通知を受けたKeyとValueとを関連付けてPPDファイル106に記述する。PPDファイル106に既に同じ機能の名称のKeyの記述があれば、ジョブ管理部104は、そのValueを更新する。
また、PPDファイル106からの代理設定情報の取得も、ジョブ管理部104を介して行われる。印刷フィルタ108が機能の名称をKeyとしてジョブ管理部104に問い合わせると、ジョブ管理部104は、PPDファイル106を検索し、問い合わせを受けたKeyと関連付けて記述されたValueを印刷フィルタ108に返す。また、問い合わせを受けたKeyがPPDファイル106になければ、ないことを示す値を印刷フィルタ108に返す。
PPDファイル106に代理設定情報がなければ、印刷フィルタ108は、その機能について、まだ代理で設定していないと判定する。また、PPDファイル106に保存されている代理設定情報がS713で取得したものと異なれば、印刷フィルタ108は、その機能について、まだ代理で設定していないと判定し、同じであれば、代理で設定済みであると判定する。
S717で代理で設定済みであると判定された場合、S702からの処理を繰り返す。一方、まだ代理で設定していないと判定された場合、S718に進む。S718で、印刷フィルタ108は、プリンタ120の印刷モードを終了させるための制御コマンドをプリンタ120に送信する。S719で、印刷フィルタ108は、S713で取得した機能の設定値をメンテナンスフィルタ109の代理で設定する。ここで、印刷フィルタ108は、図6のメンテナンスフィルタ109による機能の設定処理と同じ処理を実行する。機能の設定が終了すると、S720で、印刷フィルタ108は、設定した機能及び設定値を、代理設定情報としてPPDファイル106に保存する。そして、S721で、印刷フィルタ108は、再度、プリンタ120を印刷モードに移行させるための制御コマンドをプリンタ120に送信し、S702からの処理を繰り返す。
このように、本実施形態では、印刷ジョブの実行中、具体的には、印刷ジョブのページ間に、印刷キュー105に設定ジョブがあるか判定する。そして、設定ジョブがあった場合は、印刷ジョブをページ間で一時中断し、設定ジョブを実行させる。そして、設定ジョブによる設定処理が実行されると、印刷ジョブの印刷を再開させる。すなわち、設定ジョブを印刷ジョブの印刷処理中に割り込みさせる。
図8は、プリンタユーティリティ103の機能の設定処理を示すフローチャートである。図8の各処理は、例えば、CPU131がROM132に記憶されたプログラムをRAM133に読み出して実行することにより実現される。ユーザが図2又は図3に示すプリンタユーティリティ103のダイアログ上で機能の設定値を選択して適用ボタン202を押下すると、プリンタユーティリティ103の設定処理が開始される。
S801で、プリンタユーティリティ103は、ユーザの設定した値を取得する。S802で、プリンタユーティリティ103は、ユーザの選択した機能及びその設定値を示す設定ファイルを生成する。S803で、プリンタユーティリティ103は、設定ファイルと、ジョブの名称を付加した設定ジョブとをジョブ管理部104に投入する。ジョブの名称には、設定ジョブであることを示す名称と、設定する機能の名称及び設定値とが含まれる。
S804で、プリンタユーティリティ103は、自身の投入した設定ジョブを識別可能なジョブIDを取得する。ジョブIDは、ジョブ管理部104が受け取ったジョブを管理するために割り当てられる識別情報である。プリンタユーティリティ103は、ジョブIDを用いてジョブ管理部104に対して自身の投入したジョブの処理状態の問い合わせや、キャンセルの要求を行う。S805で、プリンタユーティリティ103は、S804で取得したジョブIDを用いてジョブ管理部104に対して自身の投入した設定ジョブの処理状態を問い合わせて取得する。
S806で、プリンタユーティリティ103は、自身の投入した設定ジョブが完了したか否かを判定する。ここで、完了したと判定された場合、図8の処理を終了する。完了したと判定される場合とは、印刷キュー105に格納された設定ジョブがジョブ管理部104により所定順に取り出されてメンテナンスフィルタ109により実行された場合である。
一方、完了していないと判定された場合、S807に進み、プリンタユーティリティ103は、PPDファイル106の代理設定情報を取得する。そして、S808で、プリンタユーティリティは、PPDファイルの代理設定情報を参照し、自身が投入した設定ジョブの要求が代理で設定済みであるか否かを判定する。
プリンタユーティリティ103が投入した設定ジョブが完了していなくても、印刷フィルタ108が印刷中に、プリンタユーティリティ103の要求した機能の設定を代理で行っている場合がある。その場合には、PPDファイル106に設定した機能及び設定値が代理設定情報として保存されている。従って、プリンタユーティリティ103は、PPDファイル106を参照することにより、その機能について、代理で設定済みであるか否かを判定できる。
プリンタユーティリティ103は、ジョブ管理部104を介してPPDファイル106の代理設定情報を取得する。PPDファイル106に代理設定情報がない、若しくは、PPDファイル106に保存されている代理設定情報が自身の要求した機能の設定と異なっていれば、プリンタユーティリティ103は、代理で設定されてないと判定してS805からの処理を繰返す。また、代理設定情報が自身の要求した機能の設定と同じであれば、プリンタユーティリティ103は、その機能について、代理で設定済みであると判定し、S809に進む。
プリンタユーティリティ103の要求した機能の設定を印刷フィルタ108が代理で実行したのであれば、プリンタユーティリティ103の投入した設定ジョブはもはや不要である。よって、プリンタユーティリティは、S804で取得したジョブIDを用いてジョブ管理部104に対して自身の投入した設定ジョブのキャンセルを要求した後、図8の処理を終了する。キャンセルを要求されたジョブ管理部104は、印刷キュー105から設定ジョブを削除する。
つまり、本実施形態によれば、印刷キュー105に格納され且つまだ印刷キュー105からの取出対象でない設定ジョブであっても、印刷フィルタ108により実行可能であると判定された場合には、印刷ジョブの実行とともに代理で実行される。その結果、ユーザが設定ジョブの実行を指示した後、印刷キュー105で処理待ち状態が継続する状態を防ぐことができ、ユーザの利便性の低下を防ぐことができる。
図9は、PPDファイル106の代理設定情報の記述の一例を示す図である。印刷フィルタ108が、自動電源オフ機能の名称をKeyとし、その設定値をValueとしてジョブ管理部104に通知すると、ジョブ管理部104は、PPDファイル106に文字列900のように記述する。本実施形態では、例えば、PPDファイル106に記述する自動電源オフ機能の名称は「AutoPowerOff」であり、設定値は無効であれば0、有効であれば電源をオフするまでの時間に応じて15、30、60の何れかである。印刷フィルタ108やプリンタユーティリティ103が自動電源オフ機能の名称をKeyとしてジョブ管理部104に問い合わせると、ジョブ管理部104は、PPDファイル106を検索し、対応するValueを設定値として問い合わせ元に返す。
印刷フィルタ108が、自動電源オン機能の名称をKeyとし、その設定値をValueとしてジョブ管理部104に通知すると、ジョブ管理部104は、PPDファイル106に文字列901のように記述する。本実施形態では、例えば、PPDファイル106に記述する自動電源オン機能の名称は「AutoPowerOn」であり、設定値は無効であれば0、有効であれば1である。印刷フィルタ108やプリンタユーティリティ103が自動電源オン機能の名称をKeyとしてジョブ管理部104に問い合わせると、ジョブ管理部104は、PPDファイル106を検索し、対応するValueを設定値として問い合わせ元に返す。
印刷フィルタ108が、乾燥待ち機能の名称をKeyとし、その設定値をValueとしてジョブ管理部104に通知すると、ジョブ管理部104は、PPDファイル106に文字列902のように記述する。本実施形態では、例えば、PPDファイル106に記述する乾燥待ち機能の名称は「DryTime」であり、設定値は設定した乾燥待ちする時間に応じて0、5、10、20、30の何れかである。印刷フィルタ108やプリンタユーティリティ103が乾燥待ち機能の名称をKeyとしてジョブ管理部104に問い合わせると、ジョブ管理部104は、PPDファイル106を検索し、対応するValueを設定値として問い合わせ元に返す。
図10は、ジョブ表示ダイアログの遷移の一例を示す図である。ジョブ管理部104が印刷ジョブを処理中にユーザがプリンタユーティリティ103で適用ボタン202を押下すると、プリンタユーティリティ103は、設定ジョブをジョブ管理部104に投入する。その際、ジョブ表示ダイアログのジョブ表示領域503には、図10(a)に示すように印刷ジョブと設定ジョブとがともに表示される。ここで、印刷フィルタ108は、設定ジョブの要求する機能の設定をメンテナンスフィルタ109の代理で実行可能であれば行い、代理設定情報をPPDファイル106に保存する。
また、プリンタユーティリティ103は、自身の投入した設定ジョブがメンテナンスフィルタ109により完了していなければ、PPDファイル106の代理設定情報を参照する。そして、自身が要求した機能の設定を印刷フィルタ108が代理で実行したか否かを判定する。そして、印刷フィルタ108により既に代理で実行されたと判定した場合、プリンタユーティリティ103は、自身の投入した設定ジョブはもはや不要と判定し、そのジョブのキャンセルをジョブ管理部104に要求して機能の設定処理を終了する。ジョブ管理部104が、プリンタユーティリティ103からの設定ジョブのキャンセルの要求を受けて印刷キュー105から削除すると、図10(b)のようにジョブ表示ダイアログのジョブ表示領域503から設定ジョブが表示されなくなる。
以上のように、本実施形態においては、印刷フィルタ108が設定ジョブをメンテナンスフィルタ109の代理で実行することにより、印刷処理中でも、プリンタ120に機能を設定することができる。
印刷フィルタ108が代理で実行した機能の設定を代理設定情報としてPPDファイル106に保存し、プリンタユーティリティ103が、PPDファイル106に保存された代理設定情報に基づいて自身の投入した設定ジョブのキャンセルを要求する。その結果、設定ジョブがジョブ表示部107に長時間表示された状態を防ぐことができる。
代理設定情報は、上述したものに限定されるものではなく、例えば、印刷フィルタ108が代理で実行した設定ジョブのジョブIDを保存するようにしても良い。その場合、プリンタユーティリティ103は、PPDファイル106に保存された代理設定情報に基づいて自身の投入したジョブのジョブIDが代理で実行済みであると判定すると、そのジョブのキャンセルを要求する。
本実施形態では、印刷キューに印刷ジョブがあり、印刷実行中であっても印刷の完了を待つことなく、設定ジョブを実行させ、完了させることができる。これにより、設定ジョブが印刷キューダイアログに長時間表示されるのを抑制することができる。また、例えば、設定ジョブに投入から完了までの時間制限が設けられている場合であっても、設定ジョブを時間制限内に処理をすることができる。
[第2の実施形態]
第1の実施形態では、図8で説明したように、プリンタユーティリティ103が、PPDファイル106の代理設定情報に基づき不要と判定した設定ジョブのキャンセルをジョブ管理部104に要求した。本実施形態では、印刷フィルタ108が、設定ジョブのキャンセルを要求する。
印刷システム100の構成、プリンタユーティリティ103の表示するダイアログ、ジョブ表示ダイアログ、メンテナンスフィルタ109の機能の設定処理、PPDファイル106の代理設定情報の記述については、第1の実施形態と同様である。従って、それらの説明を省略する。以下、第1の実施形態と異なる点について説明する。
図11は、印刷フィルタ108の印刷処理を示すフローチャートである。図11の各処理は、例えば、CPU131がROM132に記憶されたプログラムをRAM133に読み出して実行することにより実現される。図11のS1101〜S1119は、図7のS701〜S719の処理と同じであるため説明を省略する。
S1119で、印刷フィルタ108は、S1113で取得した機能の設定値をメンテナンスフィルタ109の代理で設定した後、S1120に進む。S1120で、印刷フィルタ108は、代理で設定した機能の設定に対応する設定ジョブのキャンセルをジョブ管理部104に要求する。設定ジョブのキャンセルは、設定ジョブのジョブIDを用いて、ジョブ管理部104にジョブのキャンセルを要求することによって行われる。S1121〜S1124は、図7のS720〜S723の処理と同じであるため説明を省略する。
図12は、プリンタユーティリティ103の機能の設定処理を示すフローチャートである。図12の各処理は、例えば、CPU131がROM132に記憶されたプログラムをRAM133に読み出して実行することにより実現される。図12のS1201〜S1206は、図8のS801〜S806の処理と同じであるため説明を省略する。
S1206で、プリンタユーティリティ103は自身の投入した設定ジョブが完了したか否かを判定し、完了したと判定された場合、図12の処理を終了する。一方、完了していないと判定された場合、S1207に進み、プリンタユーティリティ103は、自身の投入した設定ジョブがキャンセルされたか否かを判定する。図11のS1120で説明したように、印刷フィルタ108は、印刷中にプリンタユーティリティ103の要求した機能の設定を代理で行うと、その要求した設定ジョブをキャンセルする。従って、自身の投入した設定ジョブがキャンセルされているのであれば、要求した機能の設定が代理で行われたと判定し、図12の処理を終了する。キャンセルされた否かの判定は、プリンタユーティリティ103がジョブ管理部104に問い合わせることにより行われる。一方、キャンセルされていないのであれば、S1205からの処理を繰り返し、自身の投入した設定ジョブの処理状態の監視を続ける。
次に、本実施形態におけるジョブ表示ダイアログの遷移について説明する。本実施形態でも、ジョブ管理部104が印刷ジョブを処理中にユーザがプリンタユーティリティ103で適用ボタン202を押下すると、ジョブ表示ダイアログのジョブ表示領域503に、図10(a)に示すように、印刷ジョブと設定ジョブが表示される。ここで、本実施形態では、印刷フィルタ108は、設定ジョブの要求する機能の設定を代理で実行可能であれば行って、そのジョブのキャンセルをジョブ管理部104に要求する。ジョブ管理部104は、印刷フィルタ108からの設定ジョブのキャンセルの要求を受けると、そのジョブを印刷キュー105から削除する。従って、図10(b)に示すように、ジョブ表示ダイアログのジョブ表示領域503から設定ジョブが表示されなくなる。
以上のように、本実施形態でも、印刷フィルタ108が設定ジョブをメンテナンスフィルタ109の代理で実行するので、印刷処理中でも、プリンタ120に機能を設定することができる。更に、印刷フィルタ108が代理で実行した機能の設定に対応する設定ジョブをキャンセルすることによって、設定ジョブがジョブ表示部107に長時間表示される状態を防ぐことができる。
従って、本実施形態では、実施形態1と同様に、印刷キューに印刷ジョブがあり、印刷実行中であっても印刷の完了を待つことなく、設定ジョブを実行させ、完了させることができる。これにより、設定ジョブが印刷キューダイアログに長時間表示されるのを抑制することができる。また、例えば、設定ジョブに投入から完了までの時間制限が設けられている場合であっても、設定ジョブを時間制限内に処理をすることができる。
[その他の実施形態]
第1の実施形態及び第2の実施形態では、データ処理装置101がジョブ管理部104と印刷キュー105を備えるように構成されていた。しかしながら、プリンタ120がこれらを備え、プリンタ120側で各実施形態に記載の印刷フィルタ108とメンテナンスフィルタ109による処理が行われるように印刷システム100が構成されても良い。その場合、各フローチャートの処理は、例えば、CPU141がROM142に記憶されたプログラムをRAM143に読み出して実行することにより実現される。
また、第1の実施形態及び第2の実施形態における印刷システム100では、単体の装置ではなく、データ処理装置101とプリンタ120とが特定の双方向インタフェースで接続された構成をとっている。しかしながら、この例に限られることなく、データ処理装置101とプリンタ120の機能が一体となった装置一体型の印刷システム100であっても良い。
また、上述した実施形態では、設定ジョブとして自動電源オフの設定、自動電源オンの設定、インク感想待ち時間の機能の設定の情報を含むものとしたが、これに限定されず、これらのうち1又は2の設定の情報を含むものとしてもよい。また、この場合は、印刷キュー105に、設定ジョブが複数投入され、各設定ジョブが異なる機能の設定に関するものであった場合、これらをまとめて実行するようにしてもよい。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROM、DVDなどを用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOSなどが実際の処理の一部または全部を行うようにしても良い。その処理によって前述した実施形態の機能が実現される場合も含まれる。
記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる構成の場合がある。その場合、プログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。