JP5171458B2 - 印刷制御装置、印刷制御方法、及びコンピュータプログラム - Google Patents

印刷制御装置、印刷制御方法、及びコンピュータプログラム Download PDF

Info

Publication number
JP5171458B2
JP5171458B2 JP2008193992A JP2008193992A JP5171458B2 JP 5171458 B2 JP5171458 B2 JP 5171458B2 JP 2008193992 A JP2008193992 A JP 2008193992A JP 2008193992 A JP2008193992 A JP 2008193992A JP 5171458 B2 JP5171458 B2 JP 5171458B2
Authority
JP
Japan
Prior art keywords
print command
print
page
printing
printer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008193992A
Other languages
English (en)
Other versions
JP2010033284A (ja
Inventor
敬二 川嵜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2008193992A priority Critical patent/JP5171458B2/ja
Priority to US12/505,917 priority patent/US8564822B2/en
Publication of JP2010033284A publication Critical patent/JP2010033284A/ja
Application granted granted Critical
Publication of JP5171458B2 publication Critical patent/JP5171458B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1204Improving or facilitating administration, e.g. print management resulting in reduced user or operator actions, e.g. presetting, automatic actions, using hardware token storing data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/125Page layout or assigning input pages onto output media, e.g. imposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/126Job scheduling, e.g. queuing, determine appropriate device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1275Print workflow management, e.g. defining or changing a workflow, cross publishing
    • G06F3/1277Print workflow management, e.g. defining or changing a workflow, cross publishing using filter pipeline, e.g. outside the driver, adding traps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1284Local printer device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Record Information Processing For Printing (AREA)

Description

本発明は、印刷制御装置、印刷制御方法、及びコンピュータプログラムに関し、特に、複数部数の印刷を行うために用いて好適なものである。
従来から、同一ページを複数部印刷することが指定された印刷要求が生じた場合、プリンタが解釈可能な印刷データを生成し、生成した印刷データをハードディスク等の記憶領域に保存しておき、二部目以降では生成済みの印刷データを参照する技術が知られる。これにより、同一ページを印刷する場合には、印刷データを再度生成する処理を行う必要が無く、二部目以降の処理を高速に行える。一般的に、複数部の印刷を行う方法として、各ページを連続して複数部出力する方法と、ジョブ中のページ全体を部単位で複数部出力する方法が知られる。各ページを連続して複数部出力する方法では、例えば3ページを2部印刷する場合、1,1,2,2,3,3の順で各ページの印刷を行う。一方、ジョブ中のページ全体を部単位で複数部出力する方法では、例えば3ページを2部印刷する場合、1,2,3,1,2,3の順で各ページの印刷を行う。
前者の複数部印刷を行う場合、同一ページの印刷は必ず連続する。このため、印刷データを保存して参照する前記手法を適用する場合、保存すべき印刷データは最大で1ページ分である。一方、後者の複数部印刷を行う場合、二部目以降の印刷で、生成済みの印刷データを活用するためには、ジョブ中のページ数分の印刷データを保存する必要がある。よって、ジョブ中のページ数が多い場合、ホストコンピュータやプリンタの内部の記憶領域に、印刷データを全て格納しきれない場合がある。そのため、現在のページの印刷データを、記憶領域に保存可能であると判定した場合にのみ保存する技術が知られている(特許文献1を参照)。
特開平6−202822号公報
しかしながら、前述した従来の技術では、記憶領域に格納しきれなかった印刷データを二部目以降の処理で再度生成することと、記憶領域に格納した印刷データを転送することとを同一のプロセスで順次行うようにしていた。したがって、二部目以降の処理を効率よく行うことができなかった。
また、前述した従来の技術では、記憶領域に保存可能なだけ印刷データを保存した場合、ジョブの前半部分の印刷データを偏って保存することになり、必ずしも印刷データを効率的に保存できるわけではない。例えばジョブの後半部分に複雑なページがあり、当該ジョブの後半部分の印刷データを生成するための負荷が重い場合、当該ジョブの後半部分の印刷データを保存しておいた方が、二部目以降の処理の高速化、簡略化という観点から有効である。
本発明は、このような問題点に鑑みてなされたものであり、複数部数の印刷を行うに際し、二部目以降の処理を従来よりも効率よく行えるようにすることを目的とする。
本発明の印刷制御方法は、記憶領域を有し、複数のページ及び複数部を指定する印刷要求に基づくプリンタでの印刷に用いるプリントコマンドを供給する印刷システムにおける印刷制御方法であって、前記印刷要求に基づきプリントコマンドを生成する生成工程と、前記プリンタにおけるページ単位の目安の印刷時間である想定印刷時間を取得する取得工程と、前記生成工程におけるページ単位のプリントコマンドの生成時間を測定する測定工程と、前記取得工程で取得した想定印刷時間と、前記測定工程で測定した生成時間とを用いて前記記憶領域に記憶すべき前記プリントコマンドをページ単位で決定する第1の決定工程と、前記第1の決定工程で決定されたページのプリントコマンドとは異なるページのプリントコマンドを、前記記憶領域に記憶すべきページのプリントコマンドとして決定する第2の決定工程と、前記第1の決定工程及び前記第2の決定工程で決定したページのプリントコマンドを前記記憶領域に記憶する記憶工程と、前記プリントコマンドを前記プリンタに対して供給する供給工程と、前記記憶領域の利用可能な容量と当該記憶領域に記憶されているプリントコマンドのサイズと前記印刷要求に含まれるページ数を用いて、プリントコマンドの前記記憶領域への記憶の頻度を調整するための調整パラメータを求める工程とを有し、前記生成工程におけるプリントコマンドの生成と、前記供給工程におけるプリントコマンドのプリンタに対する供給を並行に処理し、前記第1の決定工程においては、前記想定印刷時間と、前記求められた調整パラメータにより調整された前記生成時間とを用いて前記記憶領域に記憶すべき前記プリントコマンドをページ単位で決定し、二部目のプリンタに対するプリントコマンドの供給において、前記記憶工程で記憶したページのプリントコマンドが存在する場合には前記生成工程における当該ページのプリントコマンドの生成を行わず、前記供給工程において当該記憶されたプリントコマンドをプリンタに対して供給することを特徴とする。
本発明の印刷制御装置は、記憶領域を有し、複数のページ及び複数部を指定する印刷要求に基づくプリンタでの印刷に用いるプリントコマンドを供給する印刷制御装置であって、前記印刷要求に基づきプリントコマンドを生成する生成手段と、前記プリンタにおけるページ単位の目安の印刷時間である想定印刷時間を取得する取得手段と、前記生成手段によるページ単位のプリントコマンドの生成時間を測定する測定手段と、前記取得手段により取得した想定印刷時間と、前記測定手段により測定した生成時間とを用いて前記記憶領域に記憶すべき前記プリントコマンドをページ単位で決定する第1の決定手段と、前記第1の決定手段により決定されたページのプリントコマンドとは異なるページのプリントコマンドを、前記記憶領域に記憶すべきページのプリントコマンドとして決定する第2の決定手段と、前記第1の決定手段及び前記第2の決定手段により決定したページのプリントコマンドを前記記憶領域に記憶する記憶手段と、前記プリントコマンドを前記プリンタに対して供給する供給手段と、前記記憶領域の利用可能な容量と当該記憶領域に記憶されているプリントコマンドのサイズと前記印刷要求に含まれるページ数を用いて、プリントコマンドの前記記憶領域への記憶の頻度を調整するための調整パラメータを求める手段とを有し、前記生成手段によるプリントコマンドの生成と、前記供給手段によるプリントコマンドのプリンタに対する供給を並行に処理し、前記第1の決定手段においては、前記想定印刷時間と、前記求められた調整パラメータにより調整された前記生成時間とを用いて前記記憶領域に記憶すべき前記プリントコマンドをページ単位で決定し、二部目のプリンタに対するプリントコマンドの供給において、前記記憶手段により記憶したページのプリントコマンドが存在する場合には前記生成手段による当該ページのプリントコマンドの生成を行わず、前記供給手段が当該記憶されたプリントコマンドをプリンタに対して供給することを特徴とする。
本発明のコンピュータプログラムは、印刷制御方法をコンピュータに実行させることを特徴とする。
本発明によれば、二部目以降の処理を従来よりも効率よく行うことができる。
以下、図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の各実施形態は特許請求の範囲に記載の本発明を限定するものでなく、また、以下の各実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
<第1の実施形態>
図1は、印刷システムのハードウェア構成の一例を示すブロック図である。
図1において、CRT表示装置101は、プリンタドライバが提供する印刷設定ダイアログやプリンタステータス情報等を表示する。CRTC102は、表示装置用のコントローラである。KB103は、キーボード等のデータ入力装置であり、KBC104は、キーボードコントローラである。PD105は、ポインティングデバイス等の座標入力装置であり、PDC106は、ポインティングデバイスコントローラである。CPU107は、ホストコンピュータ装置100全体の制御を司る。
ROM108は、ブートプログラム等を記憶している。RAM109は、OS、各アプリケーションプログラム、プリンタドライバプログラム等を格納したり、ワークエリアとしても利用されたりする。HDD110は、OS、各アプリケーションプログラム、プリンタドライバプログラム、フォントデータ等を記憶している。更にHDD110は、スプールファイル等を一時的に記憶する。HDC111は、ハードディスクコントローラである。FDD112は、可搬性の記憶媒体の駆動装置であるフレキシブルディスクドライブであり、FDC113は、フレキシブルディスクコントローラである。I/F114は、インターフェースであり、インターフェースケーブルを介してインクジェットプリンタ等のプリンタ(PR)115に接続される。バス116は、各デバイスを相互に接続するためのものである。
ホストコンピュータ装置100に電源が投入されると、CPU107は、ROM108に格納されているブートプログラムに従って起動する。そうすると、CPU107は、HDD110からOSをロードし、ユーザの操作待ち状態になる。そして、KB103又はPD105からアプリケーションを介して、ユーザからの指示(印刷指示やプリンタドライバの印刷設定変更指示)を受けた場合、HDD110に格納されているプリンタドライバプログラムがRAM109にロードされ実行される。また、プリンタプログラムが自動的に起動するように設定されている場合には、ユーザからの指示によらずに、HDD110に格納されているプリンタドライバプログラムがRAM109にロードされ実行される。
図2は、印刷システムの機能的な構成の一例を示す図である。図2では、OSの印刷サポート機能とプリンタドライバとを中心に、印刷システムの機能の一例を概念的に示している。尚、以下では、Microsoft社が開発したオープン規格の電子文書フォーマットの一つであるXML Paper Specificationをスプールファイルとする印刷システムを例に挙げて説明する。また、以下の説明では、XML Paper Specificationを、必要に応じてXPSと称し、XPSをスプールファイルとするようなプリンタドライバを、必要に応じてXPSDrvと称する。
図2において、フィルターパイプライン204は、各ページのXPSデータをレイアウト処理する機能を含むレイアウトフィルター205と、XPSデータをプリンタ115が解釈可能なプリントコマンドに変換する機能を含むレンダーフィルター206を有する。XPSDrvにおいては、スプールファイルは96dpi単位で描画が記載されるXPS文書となる。
ここでフィルターとは、一般的に、入力されたデータをもとに、加工、変換、無変換、生成等の工程を行って、何らかのデータを出力する機能を有するプログラムのことを称する。
図2における印刷システムでは、アプリケーション200が作成した文書の各ページの印刷データは、OSの印刷サポート機能(MXDW)201を通じてXPSスプールファイル203として一時的に蓄えられる。プリンタドライバのフィルターパイプライン204は、XPSスプールファイル203として一時的に蓄えられた印刷データを、プリンタ115で解釈可能なプリントコマンドに変換してプリンタ115に供給する。プリンタ115は、供給されたプリンタコマンドを使って印刷する。
ユーザインタフェースモジュール202は、一般に、印刷に使用する用紙サイズや印刷方向、その他の属性を印刷設定項目として設定する機能を提供する。ユーザインタフェースモジュール202は、複数の印刷設定項目の設定値が格納された印刷設定情報(DEVMODE)をアプリケーション200に返却する。
アプリケーション200は、文書を作成するものである。アプリケーション200は、作成した任意の文書の印刷にあたり、MXDW201に対して、印刷開始や印刷終了を通知する。また、アプリケーション200は、MXDW201に対して、印刷設定を行うためにユーザインタフェースモジュール202から返却された印刷設定情報を通知したり、文書の各ページの描画開始や描画終了を通知したりする。MXDW201は、アプリケーション200が描画した内容や印刷設定情報をXPSスプールファイル203に変換し、格納する。
尚、アプリケーション200の構成によっては、MXDW201を介さずに、XPSスプールファイル203を直接生成することも可能である。
フィルターパイプライン204は、任意の個数のフィルターで構成されている。フィルターパイプライン204は、印刷設定情報と印刷データ(XPSデータ)を、XPSスプールファイル203から印刷時に読み出す。そして、フィルターパイプライン204は、読み出した情報を、プリンタ115が解釈可能なプリントコマンドに変換してプリンタ115に供給し、印刷の実行を指示する。
フィルターパイプライン204に含まれる各フィルターは、スプールされた印刷ジョブをデスプールする際に、フィルターパイプライン204から呼び出される。スプールされたXPSデータは、そのままフィルターパイプライン204の各フィルターを通過して、その内容が編集されたり、プリンタドライバ独自のデータ形式に変換されたりして、最終的にプリンタ115が解釈可能なプリントコマンドに変換される。
印刷ジョブのXPSデータを全て処理し終えた場合、又は、印刷ジョブがキャンセルされた場合、フィルターパイプライン204の各フィルターは動作を終了する。
前述したように本実施形態におけるフィルターパイプライン204は、レイアウト処理部であるレイアウトフィルター205と、プリントコマンド変換部であるレンダーフィルター206とを有する。
レイアウトフィルター205は、XPSスプールファイル203として格納されたXPSデータを入力し、印刷設定情報に基づいて、入力したXPSデータ(ページ)のレイアウト処理を行う。そして、レイアウトフィルター205は、レイアウト済みのXPSデータを出力する。
レンダーフィルター206は、レイアウトフィルター205から出力されたXPSデータを入力し、印刷設定情報に従い、入力したXPSデータをプリンタ115が解釈可能なプリントコマンドに変換して出力する。本実施形態においては、レンダーフィルター206は、プリントコマンドを生成する際に、入力したXPSデータを一度イメージデータに変換する。レンダーフィルター206は、色空間の変換や二値化等の画像処理が行われたイメージデータを、プリンタ115が解釈可能なプリントコマンドに変換する。ページプリンタに代表される高機能なプリンタでは、当該プリンタが解釈できるプリントコマンドの種類にXPSが含まれていることがある。このようなプリンタを用いる場合には、レンダーフィルター206の代わりに、入力したXPSデータを編集し、編集したXPSデータを出力するようなフィルターを持つ構成となる。また、XPSデータを編集する必要がなければ、そのようなフィルター自体が不要となる。
出力デバイスであるプリンタ115は、フィルターパイプライン204で生成されたプリントコマンドを解釈し、可視画像を印刷用紙に対して形成する。
図2に示したXPSDrvでは、XPSスプールファイル203が生成されるまではアプリケーション200のプロセスで処理が実行される。フィルターパイプライン204により実行される各フィルターの処理は、フィルターパイプライン204のプロセスで実行される。レンダーフィルター206がOSのAPI(Application Program Interface)を用いて転送処理したプリントコマンド207は、フィルターパイプライン204のプロセス上では一旦外部ファイルに保存される。その後、フィルターパイプライン204のプロセス上の異なるスレッドから転送依頼されたプリントコマンド207は、印刷システムのスプーラーのプロセスからプリンタ115に送信される。
このように、XPSDrvにおける印刷システムでは、プリントコマンド207の生成と、プリンタ115への転送とが異なるプロセスで動作する。すなわち、プリントコマンド207の生成と転送は並列で(並行して)動作することが可能である。例えばレンダーフィルター206は、プリンタ115が特定のページを印刷中であっても、そのページのプリントコマンド207の生成が完了していれば、次ページのプリントコマンド207の生成処理を開始することができる。
また、XPSDrv以外の印刷システムでは、プリントコマンド207の転送処理が、プリントコマンド207生成処理と異なるスレッドやプロセスで行われないようなケースが存在する。そのような印刷システムの一例として、Microsoft社の描画モジュールであるグラフィックデバイス・インターフェース(GDI(Graphics Device Interface))を用いるような印刷システムが挙げられる。そのような印刷システムでは、プリンタドライバ内に、データの生成と転送とを別々のスレッドで行うような仕組みを明示的に設けることにより、プリントコマンド207の生成と転送とを並列に行うような構成を実現することが可能である。以後、図2のようなXPSDrvの印刷システムを前提とした実施形態を説明するが、それ以外の印刷システムでも、プリントコマンド207の生成と転送とを並列に行うことができれば、以後の動作を適用することができる。
次に、プリントコマンド207の生成と転送とを並列に行う場合の基本動作の具体例を説明する。ここでは、一例として、プリンタ115の1ページの印刷時間が10秒、プリンタドライバによる1ページのプリントコマンド207の生成時間が15秒であるとする。また、1ページ目のプリントコマンド207が生成済みであるとする。
プリントコマンド207の生成と転送とが並列に動作せず、ページ単位で動作する場合、1ページ目の印刷中に2ページ目の生成処理を行うことができない。その結果、2ページ目の印刷開始と共に2ページ目のプリントコマンド207を生成することになる。そのため、2ページ目のプリントコマンド207の生成時間が、プリンタ115の2ページ目の印刷時間に対し5秒間足りなくなる。一方、プリントコマンド207の生成と転送とが並列に動作する場合、1ページ目の印刷中に2ページ目のプリントコマンド207を生成することが可能である。したがって、2ページ目の印刷処理が半分終了した段階で3ページ目のプリントコマンド207の生成を開始すれば、3ページ目の印刷の終了と共に3ページ目のプリントコマンド207の生成も完了する計算となる。このように、プリントコマンド207の生成と転送とが並列で動作しない場合、全てのページのプリントコマンド207が保存済みであって初めてプリンタ115は全てのページを夫々10秒で印刷することが可能である。それに対し、プリントコマンド207の生成と転送とが並列に動作する場合、3ページに1ページの割合でプリントコマンド207が生成済みであれば、プリンタ115は全てのページを夫々10秒で印刷することが可能である。このように、一部のページのプリントコマンド207が生成済みで、それを利用して高速に印刷処理を行うことを考えた場合、プリントコマンド207の生成と転送とを並列に動作させることで、全体として高速な処理を行うことが可能になる。
プリントコマンド207の生成と転送とを並列に動作させる場合、生成済みのプリントコマンド207を一時的に記憶しておくHDD110等の記憶領域が必要である。生成と転送とを並列に動作させるプリントコマンド207のサイズが小さい場合、RAM109を一時的な記憶領域として用いてもよい。前述した例で、更に全体でページ数が30ページのジョブであったとする。前述した通り、プリンタ115の最高速度で全ページを印刷するためには、3ページに1ページの割合でプリントコマンド207を事前に生成しておく必要がある。ここで、ジョブ全体に対して均等になるようにプリントコマンド207を事前に生成する場合、事前に生成するページは1、4、7・・・となる。この場合、前述した通り、2ページ目の印刷が半分終了した段階で3ページ目のプリントコマンド207を作り始める。これらの動作から、生成と転送とを並列に動作させるために必要な記憶領域の容量は、プリントコマンド207の1ページ分のサイズとなる。一方、プリントコマンド207をジョブ全体に対して均等に事前に生成せず、先頭から10ページ(1,2,3・・・)のプリントコマンド207を事前に生成したとする。この場合、10ページ目の印刷が終了するタイミング(印刷開始から100秒後)に、7ページ分のプリントコマンド207が略生成済みとなる。したがって、プリントコマンド207の生成と転送とを並列に行って、高速に処理を行うためには、最大で7ページ分のプリントコマンド207を格納可能な記憶領域が必要となる。
以上のように、ジョブ全体に対してできるだけ均等にプリントコマンド207を事前に生成することにより、プリントコマンド207の生成と転送との並列動作時に必要な記憶領域を小さくすることができる。
次に、複数部印刷の一例の概要について説明する。一般的に、複数部印刷には、各ページを連続して複数部出力する方法と、ジョブ中のページ全体を部単位で複数部出力する方法とが知られる。以下の説明では、これらのうち後者の複数部印刷方法を、必要に応じて、部単位の複数部印刷と称する。
図3は、部単位の複数部印刷時におけるレイアウトフィルター205及びレンダーフィルター206の動作の概要の一例を説明する図である。
フィルターパイプライン204から呼び出される各フィルターは、少なくとも、XPSスプールファイル203を入力し、プリンタ115が解釈可能なプリントコマンド207を出力することは前述した通りである。ここで、アプリケーション200から、3ページのジョブを二部印刷することが指定された場合を例に挙げて説明する。
図3に示す通り、レイアウトフィルター205では、XPSデータの各ページを複製し、各ページのXPSデータを複数回レンダーフィルター206に渡す。レンダーフィルター206では、複製された各ページのXPSデータを受信部300で受信する。プリントコマンド生成部301は、受信部300で受信されたXPSデータの各ページを参照して、プリントコマンド207を生成する。プリントコマンド転送部304は、プリントコマンド生成部301で生成されたプリントコマンド207を、OSのAPIを用いて出力する。前述した通り、プリントコマンド転送部304から出力されたプリントコマンド207は、記憶領域に外部ファイルとして保存され、プリントコマンド207を生成するプロセスとは異なるプロセスからプリンタ115へ送信される。これにより、プリントコマンド転送部304の処理は、プリンタ115の処理状況に関わらず通常瞬時に完了し、次ページ以降のプリントコマンド207を生成する処理を開始することが可能である。
このようにレイアウトフィルター205で複製された各ページのXPSデータを、レンダーフィルター206で逐次プリントコマンド207に変換することで複数部数の印刷を行うことができる。しかしながら、この構成では、同じプリントコマンド207を、指定された部数分繰り返して生成することになる。そこで、本実施形態では、プリントコマンド生成部301で一度生成したプリントコマンド207を効率的に保存し、保存したプリントコマンド207を、同じページを印刷する場合に再利用するようにしている。
プリントコマンド207は、HDD110等の記憶領域に外部ファイルの形で保存される。しかしながら、HDD110で保存可能な領域には限度がある上、空き容量が無くなる寸前までHDD110を使用した場合、OSや他のアプリケーションの一時記憶領域がなくなり動作が不安定になる可能性がある。部単位でない複数部印刷の場合、同じページは必ず連続するため、二部目以降で活用するために保存しておくべきプリントコマンド207の容量は1ページ分の容量である。一方、部単位の複数部印刷の場合には、ジョブの全ページのプリントコマンド207をHDD110に保存する必要がある。プリンタ115への印刷要求は数百枚に及ぶ場合もあり、常に全ページのプリントコマンド207をHDD110の記憶領域に保存可能であるとは限らない。
そこで、以下の各実施形態では、レンダーフィルター206内のプリントコマンド保存判定部302で、特定ページのプリントコマンド207を保存するか否かを判定する。そして、保存すると判定した場合のみ、プリントコマンド207をプリントコマンド保存部303に保存する。第1の決定、第2の決定を行うプリントコマンド保存判定部302を中心とする処理の一例の詳細については後述する。二部目以降を印刷する際に、該当するプリントコマンド207がプリントコマンド保存部303に保存されている場合、プリントコマンド207の生成を省略し、プリントコマンド転送部304は、保存されているプリントコマンド207をそのまま転送する。
尚、図3における各フィルターの処理は、主に、部単位の複数部印刷を行う際に必要な処理に限定しているが、各フィルターは、それ以外の処理も行う。例えばレイアウトフィルター205は、印刷要求に従い、ページの割り付け配置等のレイアウト処理も行う。また、図3の構成と異なり、レイアウトフィルター205ではXPSデータの各ページの複製を作成せずに、レンダーフィルター206でプリントコマンド207を保存しなかったページのみ、XPSデータを作成するといった構成にすることも可能である。
図4は、部単位の複数部印刷を行う際のレンダーフィルター206における一部目の処理の一例を説明するフローチャートである。
まず、レンダーフィルター206は、P(現在のページ数)、Pall(ジョブの総ページ数)、L(プリントコマンド207を保存するページ間隔)を0に初期化する(ステップS400)。これらのパラメータは、例えばRAM109に記憶される。
次に、受信部300は、(P+1)ページのXPSデータを受信した後、現在のページ数であるPに1を加算する(ステップS401)。
次に、プリントコマンド保存判定部302は、プリントコマンド207を保存するページ間隔Lが0であるか否かを判定する(ステップS402)。この判定の結果、プリントコマンド207を保存するページ間隔Lが0であった場合、プリントコマンド生成部301は、現在のページのプリントコマンド207を生成しながら、プリントコマンド保存部303に保存して記憶制御を行う(ステップS403)。また、これと同時に、プリントコマンド転送部304は、生成したプリントコマンド207のプリンタ115への転送を、OSのAPIを用いて依頼する(ステップS403)。プリントコマンド207の保存に際して、プリントコマンド生成部301は、二部目以降の処理で参照できるように、ジョブ毎にランダムに定められたIDとページ番号とを元にファイル名称を決定する。ただし、ファイル名称を決定する方法は、このような方法に限定されない。例えば、ランダムに定めた名前をファイル名称とし、そのファイル名称とページ番号とを対応付けるルックアップテーブルを別途作成してもよい。
次に、プリントコマンド保存判定部302は、ジョブの総ページ数Pallをレイアウトフィルター205に問い合わせる(ステップS404)。レイアウトフィルター205は、割り付け印刷等のページ数に影響するようなレイアウト処理も担う。このため、プリントコマンド保存判定部302は、最終的に印刷される物理ページ数(ジョブの総ページ数Pall)をレイアウトフィルター205に問い合わせる必要がある。このとき、XPSDrvの印刷システムでは、PropertyBagと呼ばれる“OSが提供するフィルター間通信の手法”を利用することが一般的である。このような方法により、レンダーフィルター206は、現在までに確定しているジョブの総ページ数Pallをレイアウトフィルター205に問い合わせて取得する。
次に、プリントコマンド保存判定部302は、プリントコマンド207を保存するページ間隔Lを決定する(ステップS405)。本実施形態では、プリントコマンド207を保存するページ間隔Lを、以下の(1)式に従う計算で決定する。
L=(Pall−P)/(記憶領域の利用可能容量/現在のページのプリントコマンドサイズ) ・・・(1)
ここで、(1)式の記憶領域の利用可能容量は、プリントコマンド保存部303に保存可能な“プリントコマンド207のサイズ”を示す。例えばHDD110のシステムドライブに存在する仮想領域にプリントコマンド207を保存する場合には、システムドライブの空き容量により、記憶領域の利用可能容量を決定する。ただし、空き容量を全て使うと、OSや他のアプリケーションの仮想記憶領域が無くなり、動作が不安定になる可能性がある。そのため、例えば、空き容量に対して利用可能な割合を掛け合わせることで、記憶領域の利用可能容量を決定するのが好ましい(例えば、記憶領域の利用可能容量を空き容量の半分にすることができる)。
また、本実施形態では、前述した通り、二部目以降の印刷処理で、プリントコマンド207の生成と転送とを並列に行う。そのためには、生成済みのプリントコマンド207を一時的に保存しておく記憶領域が必要である。このプリントコマンド207は、一部目の印刷処理中に保存するプリントコマンド207とは異なり、転送後に削除される。このように、二部目以降の印刷処理では、生成と転送とを並列に行うページ数のプリントコマンド207を保存可能なサイズの記憶領域が必要になるので、そのサイズ分の記憶領域を空けておく必要がある。尚、XPSDrvの印刷システムでは、前述した通り、プリントコマンド207の生成と転送との夫々が異なるプロセスで動作するために自動的に並列化される。そのため、生成と転送との並列化に必要なデータ(プリントコマンド207)はOS側で管理される。
(1)式において、プリントコマンド207を保存するページ間隔Lを求める演算式の分母は、現在のページと同じサイズのプリントコマンド207を何ページ分保存可能であるかを示す。一方、分子は、ジョブ全体のページ数から現在処理中のページ数を引いたものであるため、残りページ数を示す。以上により、プリントコマンド207を保存するページ間隔Lは、現在のページのプリントコマンド207を残りページに対し、均等なページ間隔で保存するとした場合のページ間隔となる。ここで、(1)式で計算された“プリントコマンド207を保存するページ間隔L”が1よりも小さい値である場合には、その値を切り捨てて、プリントコマンド207を保存するページ間隔Lを0にする。プリントコマンド207を保存するページ間隔Lが0であることは、記憶領域に充分な空き容量があるため、全ページのプリントコマンド207をプリントコマンド保存部303に保存することが可能であることを示す。一方、プリントコマンド207を保存するページ間隔Lが1よりも大きい値である場合には、その値を切り上げて、プリントコマンド207を保存する間隔を大きくしておく。
図4のステップS405に示すように、プリントコマンド保存判定部302は、プリントコマンド207を保存するページ間隔Lが0になり、プリントコマンド207を保存するたびに、プリントコマンド207を保存するページ間隔Lを再計算する。これは以下2つの理由によるものである。1つ目は、特定のページを処理中に、アプリケーション200から全ページの印刷データが送信済みである保証は無く、ジョブ総ページ数Pallが未確定である可能性があるためである。2つ目は、プリントコマンド207を保存するページ間隔Lを、処理中のページのプリントコマンド207のサイズを元に計算しているため、実際にはXPSデータの各ページの内容によって誤差が発生する可能性があるためである。
ステップS402の判定の結果、プリントコマンド207を保存するページ間隔Lが0でない場合には、次の処理が行われる。すなわち、プリントコマンド生成部301は、現在のページのプリントコマンド207を生成し、プリントコマンド転送部304は、生成されたプリントコマンド207をプリンタ115へ転送する(ステップS406)。ステップS406では、ステップS403と異なり、プリントコマンド保存部303へのプリントコマンド207の保存は行われない。
このようにしてプリントコマンド転送部304でプリントコマンド207を転送した後、プリントコマンド保存判定部302は、プリントコマンド207を保存するページ間隔Lから1を減算する(ステップS407)。このようにしてプリントコマンド207を保存するページ間隔Lを減算していき、プリントコマンド207を保存するページ間隔Lが0になると、ステップS403以降のプリントコマンド207を保存するフローに入る。
以上のような処理を繰り返し、残りページがなくなると、レンダーフィルター206の処理は、一部目の処理を終了する(ステップS408)。
図3に示した通り、一部目の印刷時に、プリントコマンド207を均等なページ間隔で保存し、保存したプリントコマンド207を二部目以降の印刷時に参照することで、二部目以降の印刷処理の軽量化及び高速化を図るのが本実施形態の目的の一つである。
図5は、部単位の複数部印刷を行う際のレンダーフィルター206における二部目以降の処理の一例を説明するフローチャートである。
まず、レンダーフィルター206は、図4のフローチャートと同様に、現在のページ数Pを処理中のページ番号として管理するため、現在のページ数Pを0に初期化する(ステップS500)。
次に、受信部300は、レイアウトフィルター205により複製された“(P+1)ページのXPSデータ”を受信した後、現在のページ数Pに1を加算する(ステップS501)。
次に、受信部300は、Pページ目のプリントコマンド207がプリントコマンド保存部303に存在するか否かを判定する(ステップS502)。ステップ502では、例えば、ステップS403において、現在のページPの値を元に決定されるファイル名称でプリントコマンド207が保存されている場合、現在のページPを元に決定されるファイル名称の外部ファイルが存在するか否かを判定すればよい。また、現在のページPの値を元に外部ファイルのファイル名称を参照することが可能なルックアップテーブルをステップS403で保存している場合には、それを参照することによってステップS502の判定を行えばよい。
以上のようなステップS502の判定の結果、Pページ目のプリントコマンド207がプリントコマンド保存部303に存在する場合、プリントコマンド転送部304は、プリントコマンド保存部303に保存済みのプリントコマンド207を読み出す。そして、プリントコマンド転送部304は、読み出したプリントコマンド207をプリンタ115に転送する指示を行う(ステップS504)。
一方、プリントコマンド保存部303にPページ目のプリントコマンド207が存在しない場合、プリントコマンド生成部301は、Pページ目のプリントコマンド207を生成する。そして、プリントコマンド転送部304は、生成されたプリントコマンド207をプリンタ115に転送する指示を行う(ステップS503)。Pページ目のXPSデータは、レイアウトフィルター205により部数分複製されている。このため、プリントコマンド生成部301は、ステップS501で受信部300が取得した“Pページ目のXPSデータ”を元に、プリントコマンド207を生成する。
前述した通り、XPSDrvでは、実際のプリントコマンド207の転送処理は、プリントコマンド207の生成処理と異なるプロセスで並列に実行される。よって、フィルターからのプリントコマンド207の転送依頼では、プリントコマンド207が外部ファイルに保存されるに過ぎない。つまり、ステップS504で実行される“プリントコマンド転送部304による転送処理”では、プリントコマンド保存部303に保存済みのプリントコマンド207が再びOSによって外部ファイルとして保存されるに過ぎず、その処理は通常一瞬で完了する。従って、レンダーフィルター206は、プリンタ115があるページの印刷処理を行っている最中に、次のページのプリントコマンド207が保存済みでない場合、ステップS503のプリントコマンド207の生成処理を開始することができる。本実施形態ではこのようにして、プリントコマンド207の生成処理と転送処理とを並列に行うようにしている。
Pページ目のプリントコマンド207の処理が終わると、受信部300は、処理をしていない残りのページがあるか否かを判定する(ステップS505)。この判定の結果、処理をしていない残りのページがある場合には、ステップS501に戻り、全てのページを処理するまで、ステップS501〜S504の処理を繰り返す。そして、残りのページがなくなると、受信部300は、処理をしていない残りの部があるか否かを判定する(ステップS506)。この判定の結果、処理をしていない残りの部がある場合には、ステップS500に戻り、全ての部を処理するまで、ステップS500〜S505の処理を繰り返す。そして、処理していない残り部がなくなった時点で、受信部300は、ステップS403でプリントコマンド保存部303に保存した一部目のプリントコマンド207を全て削除する(ステップS507)。そして、図5のフローチャートによる処理を終了する。
以上のように本実施形態では、一部目の印刷処理時に、利用可能な記憶容量を元に、ページ単位で、プリントコマンド207を保存するページの間隔が可能な限り均等になるように利用可能な記憶容量以内でプリントコマンド207を保存する。そして、二部目の印刷処理時に、記憶してあるプリントコマンド207については、それを再利用してプリンタ115に転送し、記憶していないプリントコマンド207については、再度生成する。このとき、プリントコマンド207の転送と生成とを並列して行うようにする。
図6は、本実施形態における印刷システムの動作の概略の具体例を説明する図である。
図6に示す例では、印刷ジョブは15ページのジョブであり、記憶領域に保存可能なプリントコマンド207のページ数は5ページであるとする。プリンタ115は、全ページを均一に時間t1(図6の小さな矩形の幅が時間t1に相当し、この値を1とする)で処理できるとする。また、プリントコマンド207は、5ページから9ページまでを時間t2(=2×t1)で、それ以外のページを時間t1で生成することが可能であるとする。また、図6では、図に向かって左から右に向かって時間が経過するものとする。更に、図6の矩形の中の番号はページを示す。
前述した通り、5ページから9ページまでのプリントコマンド207の生成負荷が高いため、一部目の印刷処理時間は、図6に示すように、プリンタ115の最高(最短)印刷時間よりも長くなる。ここで、5ページ目のプリントコマンド207を保存することが可能であるとする。この場合、本実施形態では、記憶するページ間隔をできるだけ均等に保存するため、1、4、7、10、13ページ目のプリントコマンド207を保存する。
二部目以降の印刷処理では、保存済みのページのプリントコマンド207の生成が不要であるため、そのページ以外のページのプリントコマンド207を生成する。その結果、二部目以降のプリントコマンド207の生成処理時間は、プリンタ115の最高印刷時間よりも短くなり、且つ全てのページにおいて印刷完了までにプリントコマンド207の生成が完了している。結果的に、二部目以降の印刷処理では、プリンタ115の最高速度で印刷することが可能である。
各ページのプリントコマンド207の生成処理時間と、プリンタ115の印刷処理時間とが均一である場合、本実施形態の構成は、最も無駄が少ない構成である。本実施形態では、二部目以降の印刷処理時に、プリントコマンド207を生成する負荷をジョブ全体に分散している。このため、CPU107の負荷が一部に偏らないことに加えて、二部目以降の印刷処理で、プリントコマンド207の生成と転送とを並列に処理するための一時記憶領域が最も小さくて済む。このように、プリントコマンド207を保存するページの間隔が均等になるようにプリントコマンド207を保存するというシンプルな構成ながら、通常の印刷ジョブにおいては効果的な結果を得ることができるのが本実施形態の特徴の一つである。
<第2の実施形態>
次に、本発明の第2の実施形態について説明する。前述したように第1の実施形態では、各ページのプリントコマンド207の生成処理時間と、プリンタ115の印刷処理時間とが均一である場合に、二部目以降の印刷処理を効率よく処理することができる。ただし、第1の実施形態では、ジョブ中の特定ページが複雑であり、その特定ページのプリントコマンドを生成するのに多大な時間を要する場合であっても、その特定ページのプリントコマンド207を保存するとは限らないため、効率的であるとは言えない。すなわち、特定ページのプリントコマンド207を生成する負荷が極めて重い場合、そのプリントコマンド207については、一部目の印刷処理時に保存しておくことが好ましいが、第1の実施形態では、そのプリントコマンド207が保存されるとは限らない。このように、第1の実施形態では、ジョブ中の各ページの処理負荷に偏りがある場合に効率的に処理可能であるとは言いがたい。
そこで、本実施形態では、一部目の印刷処理時に、プリントコマンド207の生成に要した時間と、プリンタ115の印刷時間とを元に、二部目の印刷処理時においてプリントコマンド207の生成がプリンタ115の印刷に間に合うかどうかを判断する。そして、プリントコマンド207の生成がプリンタ115の印刷に間に合わないと判断されたページのプリントコマンド207を保存する。以上のように本実施形態と前述した第1の実施形態とは、一部目の印刷処理時におけるプリントコマンド207の保存処理の一部が主として異なる。したがって、本実施形態の説明において、第1の実施形態と同一の部分については、図1〜図6に付した符号と同一の符号を付すこと等により、詳細な説明を省略する。
図7は、部単位の複数部印刷を行う際のレンダーフィルター206における一部目の処理の一例を説明するフローチャートである。尚、レンダーフィルター206のプリントコマンド保存判定部302以外の処理については、特に言及の無い限り、第1の実施形態と同じ構成をとる。
まず、レンダーフィルター206は、P(現在のページ数)、T(プリントコマンド207の生成がどの程度先行しているかを時間単位で示す値)、Psave(プリントコマンド207を保存したページ数)を0に初期化する(ステップS700)。これらのパラメータは、例えばRAM109等に記憶されている。尚、以下の説明では、プリントコマンド207の生成がどの程度先行しているかを時間単位で示す値Tを、必要に応じて、プリントコマンドの生成先行時間Tと称する。
次に、受信部300は、(P+1)ページのXPSデータを受信した後、現在のページ数であるPに1を加算する(ステップS701)。
次に、プリントコマンド生成部301は、現在のページのプリントコマンド207を生成する(ステップS702)。本実施形態では、プリントコマンド保存判定部302における保存判定に、プリントコマンド207の生成に要した時間を用いる。そのため、プリントコマンド保存判定部302の判定時に、プリントコマンド生成部301は既にプリントコマンド207を生成済みということになる。プリントコマンド保存判定部302で保存すると判定してから、プリントコマンド生成部301でプリントコマンド207を再度生成するのは無駄がある。このため、ステップS702でプリントコマンド保存部303に一旦全てのプリントコマンド207を保存して記憶制御する。また、これと同時に、プリントコマンド転送部304は、生成したプリントコマンド207のプリンタ115への転送を、OSのAPIを用いて依頼する(ステップS702)。
このようにしてプリントコマンド207のプリンタ115への転送を依頼した後、プリントコマンド保存判定部302は、ページ単位で時間Tnowを計算する(ステップS703)。時間Tnowは、以下の(2)式に従う計算で算出される。
Tnow=(想定印刷時間−Pページ目のプリントコマンド生成時間) ・・・(2)
プリントコマンド生成時間は、ステップS702でプリントコマンド207の生成を行った時間を測定することによって求めることができる。想定印刷時間は、プリンタ115が、該当するプリントコマンド207を途切れることなく受信できた場合に、そのプリントコマンド207を印刷するのに要する時間を示す。換言するならば、想定印刷時間は、該当するページのプリントコマンド207に対する、プリンタ115の最高(最短)印刷時間を想定したものである。
プリンタ115の構成上、ページ単体の印刷時間が、印刷用紙のサイズや印刷モードによって実質的に一意に決定される場合、必要な構成要素をもつルックアップテーブルを保持し、このルックアップテーブルを用いることによって想定印刷時間を求められる。一方、インクジェットプリンタのように、印刷する領域にプリントヘッドを移動し、インク滴を吐出することで印刷を行うような構成のプリンタの場合、様々な要因で印刷時間は変わる。すなわち、印刷する領域が存在しない場合は用紙を排出する時間しかかからない。印刷する領域が同じでも、使っている色が異なると一度に吐出することが可能なインク滴の量が変わり、印刷時間が変わる場合がある。そこで、完全とはいかないが、本実施形態では、プリンタ115の想定印刷時間を求めるために、以下3つの方法の何れかを採用する場合を例に挙げて説明する。
プリンタ115の印刷時間を概算する1つ目の方法は、印刷用紙のサイズや、印刷モード(品位の設定等)の条件を元に参照可能なルックアップテーブルであって、印刷時間の目安を示すルックアップテーブルを参照する方法である。
図8は、ルックアップテーブルの一例を示す図である。
図8では、用紙種、印刷品位、及びグレイスケールの設定の組み合わせで、プリンタ115の印刷時間の目安が求められるようになっている。この印刷時間の目安は、プリンタ115で予め測定され算出された値である。用紙種、印刷品位、及びグレイスケールに、用紙サイズを更に組み合わせて、プリンタ115の印刷時間の目安が求められるようにしてもよい。図8に示すルックアップテーブルに示す印刷時間は、プリンタ115がサポートする最大の用紙サイズの印刷時間の目安を示す。従って、それよりも小さい用紙サイズの印刷時間を参照したい場合、その用紙サイズと、プリンタ115がサポートする最大の用紙サイズとの面積比に従って印刷時間を再計算することで目安の印刷時間を求めることができる。
また、インクジェットプリンタでは、1ページ分の全てのプリントコマンド207を格納するだけの容量を有するRAMをプリンタ115内に保持しないのが一般的である。そのため、プリンタドライバからは、用紙の給紙方向を基準に、印刷する順番に帯状にプリントコマンド207をプリンタ115に送信する処理を行う。この帯状の処理単位は、一般的にバンドと呼ばれる。レンダーフィルター206では、バンドという単位でプリントコマンド207の生成処理を行う。この際、描画命令が1つも存在しなかったバンドの数をカウントしておくことで、用紙全体のどのくらいの割合に印刷領域が存在するかを概算することができる。このようにして求めた印刷領域の割合を、ルックアップテーブルで参照した印刷時間に掛け合わせることで、印刷時間の目安をより正確に算出することが可能である。
プリンタ115の印刷時間を概算する2つ目の方法は、ランゲージモニターやポートモニターでの送信状況を監視する方法である。図2の構成においては、ランゲージモニターは、プリントコマンド207とプリンタ115との間に存在するモジュールであり、プリントコマンド207をパース(parse)し、プリンタ115に送信する役割を担う。ポートモニターは、ランゲージモニターの下位層に存在し、ポート種別に従い、適切な方法で送信処理を行う。
前述した通り、インクジェットプリンタでは、ページ全体のプリントコマンド207を保存しておく容量を有するRAMを持たないことが一般的である。プリンタ115のRAMの容量が一杯であり、追加のプリントコマンド207を受信することが不可能な場合、ランゲージモニターから送信されたプリントコマンド207は直ぐに受理されず、プリンタ115のRAMの空き容量ができるまで待たされる。このようにして生じた待ち時間の合計を求めることで、プリンタ115がプリントコマンド207の生成時間に対し、どの程度遅れていたかを概算することができる。ただし、この方法では、プリントコマンド207の生成の方がプリンタ115の印刷動作よりも遅れている場合に、その遅延の度合いを知る術がない。よって、ページ全体で、プリントコマンド207の送信に遅延が略発生しなかった場合は、プリンタ115の印刷時間は、プリントコマンド207の生成時間に対し、一定時間高速であるとすること等により、プリンタ115の印刷時間を決定する。
プリンタ115の印刷時間を概算する3つ目の方法は、プリンタ115に問い合わせることである。プリンタ115は、受信したプリントコマンド207を記憶するRAMが空であった時間や、データが途切れた回数等をカウントしておく。プリンタドライバは、プリンタ115にそれらの値を問い合わせ、プリントコマンド207の生成時間と、それらの値とを元にプリンタ115の印刷時間を概算する。
前述した方法のうち、1つ目の方法は、プリンタ115の特性に応じてルックアップテーブルを作成する必要があるが、特別な仕組みを要することなく、プリンタ115の印刷時間を概算することができる。2つ目の方法は、プリンタ115の印刷処理が高速である場合に正確に印刷時間を概算できない場合があるが、ルックアップテーブルも作成する必要がない。3つ目の方法は、プリントコマンド207や印刷が間に合わなかった度合いをプリンタ115に問い合わせるため確実であるが、プリンタ115に特別な仕組みが必要となる。
また、2つ目及び3つ目の方法は、基本的にページ単位でプリントコマンド207の送信を見届ける必要がある。ステップS702で行うプリントコマンド207の転送処理は、実際にはOSのAPIにより外部ファイルに一旦格納されるものであり、実際の転送処理は、これとは別のプロセスで実行される。ランゲージモニターを用いた場合や、プリントコマンド207の送信状況をプリンタ115に問い合わせる場合には、プリントコマンド207の実際の転送処理が完了している必要がある。このため、ステップS703で時間Tnowを求める前に、そのページのプリントコマンド207の実際の転送処理の完了を待つ。
以上の何れかの方法で想定印刷時間を求めることができる。前述したように、プリントコマンド保存判定部302は、以上の何れかの方法で求めた想定印刷時間と、プリンタコマンド生成時間とを元に時間Tnowの値を計算する。プリントコマンド207の生成が充分に高速である場合、時間Tnowは正の値になるし、プリントコマンド207の生成がプリンタ115の印刷速度に対し間に合っていない場合、時間Tnowは負の値となる。このようにして、プリントコマンド保存判定部302は、プリントコマンド207の生成が間に合っているかどうかと、その生成が間に合っていない場合に、その間に合っていない度合いがどの程度であるかをページ単位で計算する。
次に、プリントコマンド保存判定部302は、これまでに計算した時間Tnowの合計値であるプリントコマンドの生成先行時間Tに、ステップS703で計算した時間Tnowを加えた値が、負の値になるか否かを判定する。プリントコマンドの生成先行時間Tは、各ページで求めた時間Tnowを足し合わせたものであり、プリンタドライバのプリントコマンド生成処理が、プリンタ115の印刷処理に対して先行している「貯金」時間と言える。二部目以降の印刷処理で、プリントコマンドの生成先行時間Tが正の値であるタイミングでは、プリントコマンドの生成先行時間Tが示す時間だけプリンタドライバがプリンタ115よりも先行して処理していることを示す。逆に、プリントコマンドの生成先行時間Tが負の値になったタイミングでは、プリントコマンド207の生成処理は、プリンタ115の印刷処理に対し遅れている、つまりプリンタ115を待たせていることを示す。よって、ステップS704の判定の結果、プリントコマンドの生成先行時間Tの現在値に、時間Tnowを加えた値(=T+Tnow)が負の値になった場合、現在のページのプリントコマンド207を保存する処理を行う(ステップS707、S708)。
プリントコマンド207を保存した場合、二部目以降の印刷処理では、保存済みのプリントコマンド207を参照すればよいので、そのページのプリントコマンド生成時間は実質0である。従って、プリントコマンド保存判定部302は、プリントコマンドの生成先行時間Tに対して、負の値である現在のページに対する時間Tnowを加えずに次の処理を行う。すなわち、プリントコマンド保存判定部302は、プリントコマンドの生成先行時間Tに、プリントコマンド207を保存したことによってプリンタドライバが活用可能になった時間(プリンタ115の想定印刷時間)を加算する(ステップS707)。
次に、プリントコマンド保存判定部302は、後で参照可能なように、プリントコマンド207を保存したページ数Psaveに1を加算する(ステップS708)。
一方、ステップS704の判定の結果、プリントコマンドの生成先行時間Tの現在値に、時間Tnowを加算した値(=T+Tnow)が正の値であった場合には、現在のページのプリントコマンド207を生成しても印刷に間に合う。従って、プリントコマンド保存判定部302は、ステップS702で保存した“現在のページのプリントコマンド207”を削除して記憶制御を行う(ステップS705)。そして、このページについては、二部目以降も一部目と同じプリントコマンド207の生成処理が再度動作することになる。このため、プリントコマンド保存判定部302は、プリントコマンドの生成先行時間Tに、現在のページにおける時間Tnowを加算する(ステップS706)。
以上のステップS706、S708の処理が終了すると、受信部300は、処理をしていない残りのページがあるか否かを判定する(ステップS709)。この判定の結果、処理をしていない残りのページがある場合には、ステップS701に戻り、全てのページを処理するまで、ステップS701〜S708の処理を繰り返す。そして、残りのページがなくなると、一部目のレンダーフィルター206の処理が終了する。
尚、図7のフローチャートで説明したプリントコマンド生成先行時間Tの値の最大値は、二部目以降の印刷処理で並列処理が可能な最大ページ数に影響を受ける。例えば、想定印刷時間が10秒である場合に、プリントコマンドの生成先行時間Tが40秒であるというのは、4ページ分のプリントコマンド207の生成処理が、プリンタ115の印刷処理よりも先行しているということを示す。そこで、二部目以降の印刷処理で並列処理が可能な最大ページ数と、想定印刷時間とを元に、プリントコマンドの生成先行時間Tの最大値を予め決定し、ステップS706、S707で計算したプリントコマンドの生成先行時間Tが、その最大値を越えないようにする。
このように特定ページのプリントコマンド207を保存したことによりプリンタドライバが活用可能な時間をプリントコマンドの生成先行時間Tとして伝播させることが本実施形態の特徴の一つである。このプリントコマンドの生成先行時間Tが伝播するという概念は、前述の通り、プリントコマンド207の生成と転送とが並列に動作することで、はじめて有効なものとなる。
以上のようにして一部目で一部のページが保存された場合の二部目以降のレンダーフィルター206の処理は、図5に示す通り、プリントコマンド207が存在すればそれを読み出して転送し、存在しなければ再度生成して転送するのが基本構成となる。プリンタ115が最高速度で印刷するのに必要なプリントコマンド207は、全て一部目の印刷処理時に保存されているはずである。したがって、二部目以降の印刷処理では、図5に示した処理さえ行えば、計算上は、プリンタ115の最高速度で印刷することが可能なはずである。しかしながら、例えば印刷要求が10部の印刷であった場合、プリントコマンド保存部303の記憶領域の空き容量を有効活用して二部目の印刷処理時に更にプリントコマンド207を保存しておくことで、三部目以降の印刷処理をより軽量に行うことが可能である。
図9は、部単位の複数部印刷を行う際のレンダーフィルター206における二部目の処理の一例を説明するフローチャートである。前述したように、二部目の印刷処理を図5に示したようにして行ってもよいが、ここでは、プリントコマンド保存部303の記憶領域の空き容量を有効に活用して二部目の印刷処理時にもプリントコマンド207を保存する場合を例に挙げて説明する。尚、ここでは一例として、プリントコマンド207を保存するページの間隔が均等になるように、一部目の印刷処理時にプリントコマンド207を保存する場合を例に挙げて説明する。プリントコマンド207を保存する基本的な処理自体は、第1の実施形態で説明した“プリントコマンド207を保存するページの決定手法”と同等である(図4を参照)。
まず、レンダーフィルター206は、Prest(一部目の印刷処理で保存していないページ数)、L(プリントコマンド207を保存するページ間隔)を0に初期化する(ステップS900)。これらのパラメータは、例えばRAM109に記憶される。
次に、受信部300は、現在のページのXPSデータを受信する(ステップS910)。
次に、受信部300は、一部目の印刷処理で、現在のページのプリントコマンド207を、プリントコマンド保存部303の記憶領域に保存済みであるか否かを判定する(ステップS901)。この判定の結果、プリントコマンド207が存在した場合には、次の処理が行われる。すなわち、プリントコマンド転送部304は、生成済みのプリントコマンド207をプリントコマンド保存部303から読み出し、読み出したプリントコマンド207をプリンタ115に転送する指示を行う(ステップS902)。そして、後述するステップS909に進む。
一方、プリントコマンド207が存在しない場合、プリントコマンド保存判定部302は、プリントコマンド207を保存するページ間隔Lが0であるかどうかを判定する(ステップS903)。この判定の結果、プリントコマンド207を保存するページ間隔Lが0であった場合、プリントコマンド生成部301は、次の処理を行う。すなわち、プリントコマンド生成部301は、受信部300で受信した“現在のページのXPSデータ”を元に、現在のページのプリントコマンド207を生成しながら、プリントコマンド保存部303に保存して記憶制御を行う(ステップS904)。また、これと同時に、プリントコマンド転送部304は、生成したプリントコマンド207のプリンタ115への転送を依頼する(ステップS904)。
次に、プリントコマンド保存判定部302は、プリントコマンド207を保存するページ間隔Lを、以下の(3)式に従う計算で決定する(ステップS905)。
L=(Pall−Psave−Prest)/(記憶領域の利用可能容量/現在のページのプリントコマンドサイズ) ・・・(3)
(3)式において、Pallは、ジョブの総ページ数を示し、一部目の印刷処理の時点で既知である。Psaveは、一部目の印刷処理(ステップS702)で保存済みのプリントコマンド207のページ数を示す。Prestは、一部目の印刷処理でプリントコマンド207を保存していないページの処理数を示す。よって、(3)式の分子(=Pall−Psave−Prest)は、一部目の印刷処理でプリントコマンド207を保存済みのページを除いた残りのページ数を示す。一方、分母は、プリントコマンド保存部303の記憶領域の利用可能容量を、現在のページのプリントコマンド207のサイズで割った値であり、保存可能なプリントコマンド207のページ数を示す。したがって、(3)式のLは、一部目の印刷処理で保存していないプリントコマンド207のうち、保存可能なプリントコマンド207を、ページ間隔が均等になるように保存する場合のページ間隔となる。以上のようにしてプリントコマンド207を保存するページ間隔Lを算出すると、後述するステップS908に進む。
前述したステップS903の判定の結果、プリントコマンド207を保存するページ間隔Lが0でない場合には、次の処理が行われる。すなわち、プリントコマンド生成部301は、現在のページのプリントコマンド207を生成し、プリントコマンド転送部304は、生成されたプリントコマンド207をプリンタ115へ転送する(ステップS906)。ステップS906では、ステップS904と異なり、現在のページのプリントコマンド207は、プリントコマンド保存部303に保存されない。
次に、プリントコマンド保存判定部302は、プリントコマンド207を保存するページ間隔Lから1を減算する(ステップS907)。そして、ステップS908に進む。
以上のステップS905、S907の処理が行われた後、レンダーフィルター206は一部目の印刷処理で保存していないページ数Prestに1を加算する(ステップS908)。そして、ステップS909に進む。
以上のステップS902、S908の処理が行われた後、受信部300は、処理をしていない残りのページがあるか否かを判定する(ステップS909)。この判定の結果、処理をしていない残りのページがある場合には、ステップS910に戻り、全てのページを処理するまで、ステップS910〜S908の処理を繰り返す。そして、残りのページがなくなると、レンダーフィルター206における二部目の処理を終了する。
このように二部目の印刷処理でプリントコマンド207を追加で保存した場合の三部目以降の印刷処理は、図5に示す処理と同等である。
図10は、本実施形態における印刷システムの動作の概略の具体例を説明する図である。
図6に示したものと同様に、図10に示す例でも、印刷ジョブは15ページのジョブであり、プリントコマンド保存部303の記憶領域に保存可能なプリントコマンド207のページ数は5ページとする。プリンタ115は、全ページを均一に時間t1(図10の小さな矩形の幅が時間t1に相当し、この値を1とする)で処理できるとする。また、プリントコマンド207は、5ページから9ページまでを時間t2(=2×t1)で、そのページ以外のページを時間t1で生成することが可能であるとする。また、図10では、図に向かって左から右に向かって時間が経過するものとする。更に、図10の矩形の中の番号はページを示す。
図10において、4ページ目までは、プリンタ115の印刷時間とプリントコマンド207の生成時間とが一致しているため、プリントコマンドの生成先行時間Tは0になる。5ページ目の段階で時間Tnowは、−1(=1−2)となり、負の値になる(ステップS703)。よって、5ページ目のプリントコマンド207は保存対象となる(ステップS704)。5ページ目のプリントコマンド207を保存したことにより、プリントコマンドの生成先行時間Tには、5ページ目の印刷処理時間(想定印刷時間)である1が加算され、1になる(ステップS707)。
6ページ目における時間Tnowは5ページ目と同様に−1であるが、プリントコマンドの生成先行時間Tが1であるため、これらの加算値(=T+Tnow)は0となる。したがって、6ページ目のプリントコマンド207は保存対象外となる(ステップS704)。このように5ページ目から9ページ目では、1ページずつ間隔を開けてプリントコマンド207が保存される。すなわち、5、7、9ページのプリントコマンド207が保存される。
5、7、9ページを除くページのプリントコマンド207の生成時間の合計が、二部目のプリントコマンド207の生成時間になる。図10に示すように、二部目におけるプリントコマンド207の生成処理時間は、プリンタ115の最高印刷時間よりも短くなり、且つ全てのページにおいて印刷完了までにプリントコマンド207の生成が完了している。結果的に、二部目の印刷処理では、全ページをプリンタ115の最高(最短)印刷時間内で印刷することが可能である。この時点で3ページのプリントコマンド207を保存済みであるので、更に2ページのプリントコマンド207を保存することが可能である。従って、図9に示すフローチャートに従い、更に2ページのプリントコマンド207を保存する。これにより、二部目の印刷処理が完了した段階で、1、5、7、9、15ページ目のプリントコマンド207が保存される。三部目以降の印刷処理では、それらのページを除くページのプリントコマンド207のみを生成することになり、プリンタ115の最高速度で印刷できることに加え、CPUによる処理負荷をより軽減させることが可能である。
以上のように本実施形態では、二部目以降をプリンタ115の最高速度で印刷するために最低限必要なプリントコマンド207の保存を一部目の印刷処理時に行う。そして、二部目の印刷処理時に、プリントコマンド保存部303の記憶領域に空き容量があった場合は、それを有効に活用し、新たに保存するプリントコマンド207のページ間隔が均等になるように、プリントコマンド207を更に保存する。三部目以降の印刷処理では、プリンタ115の最高速度での印刷が可能になることを保証しながら、プリントコマンド保存部303の記憶領域の空き容量を活かして、CPUによる処理負荷をより軽減させることができる。
尚、二部目の印刷処理時にプリントコマンド207を保存する処理(図9のフローチャートによる処理)を、第1の実施形態に適用するようにしてもよい。
<第3の実施形態>
次に、本発明の第3の実施形態について説明する。本実施形態では、一部目の印刷処理時に、第2の実施形態で説明した2つのプリントコマンド保存方法を同時に実行する。すなわち、プリントコマンド207の生成が印刷に間に合わないページを優先的に保存する手法と、保存可能なページ数のプリントコマンド207をページ間隔が均等になるように保存する手法とを同時に実行する。このように本実施形態と前述した第1、第2の実施形態とは、一部目の印刷処理の一部が主として異なる。したがって、本実施形態の説明において、第1、第2の実施形態と同一の部分については、図1〜図10に付した符号と同一の符号を付すこと等により、詳細な説明を省略する。
図11は、部単位の複数部印刷を行う際のレンダーフィルター206における一部目の処理の一例を説明するフローチャートである。尚、レンダーフィルター206のプリントコマンド保存判定部302以外の処理については、特に言及の無い限り、第1、第2の実施形態と同じ構成をとる。
まず、レンダーフィルター206は、各種パラメータを初期化する(ステップS1100)。各種パラメータは、P(現在のページ数)、Psave(プリントコマンド207を保存したページ数)、T(プリントコマンドの生成先行時間)、S(プリントコマンド207を保存するペースを調整するためのパラメータ)である。具体的に、現在のページ数P、プリントコマンド207を保存したページ数Psave、プリントコマンドの生成先行時間Tについては0に初期化し、プリントコマンド207を保存するペースを調整するためのパラメータSについては1に初期化する。尚、以下の説明では、プリントコマンド207を保存するペースを調整するためのパラメータSを、必要に応じて、保存ペース調整パラメータSと称する。また、これらのパラメータは、例えば、RAM109に記憶される。
次に、受信部300は、(P+1)ページのXPSデータを受信した後、現在のページ数であるPに1を加算する(ステップS1101)。
次に、プリントコマンド生成部301は、現在のページのプリントコマンド207を生成しながらプリントコマンド保存部303に保存して記憶制御を行う(ステップS1102)。また、これと同時に、プリントコマンド転送部304は、生成したプリントコマンド207のプリンタ115への転送を、OSのAPIを用いて依頼する(ステップS1102)。
次に、プリントコマンド保存判定部302は、以下の(4)式に従って時間Tnowを計算(導出)する(ステップS1103)。
Tnow=(想定印刷時間−S×Pページ目のプリントコマンド生成時間) ・・・(4)
想定印刷時間の定義及び算出方法は、第2の実施形態で説明した通りである。Pページ目(現在のページ)のプリントコマンド生成時間も、第2の実施形態と同様に、プリントコマンド生成部301におけるプリントコマンド207の生成時間を実際に測定することによって得る。保存ペース調整パラメータSは、前述した通り、プリントコマンド207を保存するペースを調整するためのパラメータであり、その値は通常1である。このステップS1103で求める時間Tnowは、基本的にステップS703で求められる時間Tnowと同じ意味を持つ。ただし、本実施形態の時間Tnowでは、保存ペース調整パラメータSの概念を加えており、この点が第2の実施形態の時間Tnowと異なる。
次に、プリントコマンド保存判定部302は、これまでに計算した時間Tnowの合計値であるプリントコマンドの生成先行時間Tに、ステップS703で計算した時間Tnowを加えた値が、負の値になるか否かを判定する(ステップS1104)。この判定の結果、プリントコマンドの生成先行時間Tの現在値に、時間Tnowを加えた値(=T+Tnow)が正の値であった場合には、現在のページのプリントコマンド207を生成しても印刷に間に合う。従って、プリントコマンド保存判定部302は、ステップS1102で保存した“現在のページのプリントコマンド207”を削除して記憶制御を行う(ステップS1105)。
次に、プリントコマンド保存判定部302は、プリントコマンドの生成先行時間Tに、ステップS1103で計算済みの“現在のページにおける時間Tnow”を加算する(ステップS1106)。そして、後述するステップS1109に進む。
ステップS1104の判定の結果、プリントコマンドの生成先行時間Tの現在値に、時間Tnowを加えた値(=T+Tnow)が負の値であった場合、ステップS1102で保存した“現在のページのプリントコマンド207”を削除せずに保存する処理を行う。すなわち、プリントコマンド保存判定部302は、プリントコマンドの生成先行時間Tに対し、時間Tnowではなく、プリントコマンド207を保存することによって生じた空き時間である想定印刷時間を加算する(ステップS1107)。
次に、プリントコマンド保存判定部302は、後で参照可能なように、プリントコマンド207を保存したページ数Psaveに1を加算する(ステップS1108)。そして、ステップS1109に進む。
以上のようにしてステップS1106、S1108の処理が終了すると、プリントコマンド保存判定部302は、以下の(5)式に従う計算を行って、記憶可能ページ数Psaveallを算出する(ステップS1109)。
Psaveall=記憶領域の利用可能容量/現在のページのプリントコマンドサイズ+Psave ・・・(5)
(5)式の(記憶領域の利用可能容量/現在ページのプリントコマンドサイズ)は、現在のページのプリントコマンド207と同じサイズのプリントコマンド207をあと何ページ分保存可能であるかを表す。このようにして求めた“保存可能な残りプリントコマンドページ数”に、今までに保存したプリントコマンド207のページ数Psaveを加算して、記憶可能ページ数Psaveallを求める。記憶可能ページ数Psaveallは、プリントコマンド保存部303の利用可能な容量で生成可能なプリントコマンド207の総ページ数になる。記憶可能ページ数Psaveallは、現在のページのプリントコマンド207のサイズを元に概算した値である。実際には、プリントコマンド207のサイズはページ毎に異なるため、記憶可能ページ数Psaveallをページ毎に計算し直す構成をとる。
次に、プリントコマンド保存判定部302は、ジョブの総ページ数Pallをレイアウトフィルター205に問い合わせる(ステップS1110)。ジョブの総ページ数Pallについても、最初に問い合わせたタイミングで確定している保証は無いため、毎ページ問い合わせる構成をとる。
次に、プリントコマンド保存判定部302は、以下の(6)式を満たすか否かを判定する。
Psave>P×(Psaveall/Pall) ・・・(6)
(6)式において、(Psaveall/Pall)は、ジョブ全体に対する、プリントコマンド207の均等な保存間隔を示す割合である。この値に現在のページ数Pを乗算することで、プリントコマンド207を均等なページ間隔で保存する場合に、現在のページ数の段階で保存できるページ数が得られる。プリントコマンド207を保存したページ数Psaveは、現在のページ数Pまでのページのうち、プリントコマンド207を実際に保存したページを示す。つまり、ステップS1111では、ジョブ全体でページ間隔が均等になるようにプリントコマンド207を保存するとしたときに、プリントコマンド207を保存しているページ数の現在値が過多であるか、それとも不足であるかを判別している。
以上のようなステップS1111の判定の結果、(6)式を満たす場合、保存しているページ数が多いことを示す。そこで、プリントコマンド保存判定部302は、一例として、保存ペース調整パラメータSに0.9を乗算して、保存ペース調整パラメータSを小さな値とする(ステップS1112)。
保存ペース調整パラメータSは、ステップS1103で参照され、プリントコマンド生成時間に掛け合わせることで、プリントコマンド生成時間を偽るためのパラメータである。保存ペース調整パラメータSを小さな値とすることで、プリントコマンド生成時間が小さいものとして時間Tnowが計算され、結果的に時間Tnowが正の値になりやすいように調整する。この結果、プリントコマンド207の保存を押さえることができる。
一方、ステップS1111の判定の結果、(6)式を満たさない場合、保存しているページ数が不足していることを示す。そこで、プリントコマンド保存判定部302は、一例として、保存ペース調整パラメータSに1.1を乗算して、保存ペース調整パラメータSを大きな値とする(ステップS1113)。これにより、プリントコマンド生成時間が長いと偽ることになり、結果的にプリントコマンド207の保存を促すことができる。
ここで、プリントコマンド保存判定部302は、保存ペース調整パラメータSに1.1又は0.9を乗算する場合を例に挙げて示しているが、乗算する値は、これ以外の異なる値であってもよい。また、保存ペース調整パラメータSは、ページ間隔が均等になるようにプリントコマンド207を保存するとして現時点で保存しているはずのページ数と、実際に現在までに保存しているページ数との差の大きさに合わせて変化するようなパラメータであってもよい。
以上のステップS1112、S1113の処理が終了すると、受信部300は、処理をしていない残りのページがあるか否かを判定する(ステップS1114)。この判定の結果、処理をしていない残りのページがある場合には、ステップS1101に戻り、全てのページを処理するまで、ステップS1101〜S1113の処理を繰り返す。そして、残りのページがなくなると、一部目のレンダーフィルター206の処理が終了する。
本実施形態では、一部目の印刷処理が終了した段階で、既にプリントコマンド保存部303の利用可能な容量を略使い切る形でプリントコマンド207を保存する形となる。よって、レンダーフィルター206の二部目以降の処理は、図5に示した処理と同じ処理になる。すなわち、プリントコマンド207が保存済みのページでは、そのプリントコマンド207を再利用してプリンタ115に送信し、プリントコマンド207が保存済みでないページでは、プリントコマンド207を再度生成してプリンタ115に送信する。
本実施形態では、プリントコマンド207の生成が印刷に間に合わないページを優先的に保存する処理と、保存可能なページ数のプリントコマンド207をページ間隔が均等になるように保存する処理とを、一部目の印刷処理時に同時に実行する。第2の実施形態では、例えば、ジョブ中の全ページのプリントコマンド207の生成が極めて高負荷であり、且つプリントコマンド保存部303の空き容量がそれほど無い場合には正しく機能しない虞がある。ジョブの前半部分のプリントコマンド207の保存が偏重してしまうからである。これに対し、本実施形態では、たとえプリントコマンド207の生成が印刷に間に合わない場合でも、ジョブ全体に対してプリントコマンド207を保存するページの間隔がそれなりに均等になるようする。そのため、ジョブの前半部分にプリントコマンド207の生成が偏ってしまうといったことはない。このことは、ステップS1112で、保存ペース調整パラメータSを小さめに調整する処理によって実現している。
これとは逆に、ステップS1113で、保存ペース調整パラメータSを大きめに調整する処理は、プリントコマンド207の保存を促すための調整である。そこで、ステップS1113における調整を省略し、ステップS1112における調整のみを行いながら一部目の印刷処理時に保存するページを決定するようにしてもよい。このようにした場合には、二部目の印刷処理時に図9に示すフローチャートの処理を行い、(プリントコマンド保存部303に空き容量がある場合には)プリントコマンド207を更に保存してもよい。
また、本実施形態において、プリントコマンド207を生成したタイミングにおける保存ペース調整パラメータSの値が小さいほど、そのプリントコマンド207の保存が重要であることを示す。保存ペース調整パラメータSが極めて大きい状態で保存したプリントコマンド207は、プリンタ115の印刷動作に対してプリントコマンド207の生成処理が十分に間に合っているにも関わらず保存されたものである。逆に、保存ペース調整パラメータSが極めて小さな値のときに保存したプリントコマンド207は、本来であれば毎ページでも保存しておきたいが、プリントコマンド保存部303の空き容量の問題で、敢えて間隔をあけて保存したものである。
そこで、この保存ペース調整パラメータSを活用して、次のようにしてもよい。すなわち、プリントコマンド207を保存する際に、その時点での保存ペース調整パラメータSの値を保存しておく。そして、保存ペース調整パラメータSが閾値よりも小さな値になった場合に、閾値以上の大きな値の保存ペース調整パラメータSに対応する、保存済みのプリントコマンド207を削除する。これにより、ジョブの後半で極端に処理負荷が高くなるようなデータに対しても、柔軟に対応することができる。
図12は、本実施形態における印刷システムの動作の概略の具体例を説明する図である。
図6、図10に示したものと同様に、図12に示す例でも、印刷ジョブは15ページのジョブであり、プリントコマンド保存部303の記憶領域に保存可能なプリントコマンド207のページ数は5ページとする。プリンタ115は、全ページを均一に時間t1(図12の小さな矩形の幅が時間t1に相当し、この値を1とする)で処理できるとする。また、プリントコマンド207は、5ページから9ページまでを時間t2(=2×t1)で、そのページ以外のページを時間t1で生成することが可能であるとする。また、図12では、図に向かって左から右に向かって時間が経過するものとする。更に、図12の矩形の中の番号はページを示す。
本実施形態の基本構成では、一部目の印刷完了時に、5ページのプリントコマンド207の保存が完了する形となる。ステップS1112、S1113の調整値により変わるが、図12に示す通り、プリントコマンド207の生成負荷が高い5〜9ページ目で多めに、そのページ以外のページで少なめに、プリントコマンド207を保存するページであると判断する。図12に示す通り、二部目の印刷処理における“プリントコマンド207の生成処理時間”は、プリンタ115の最高(最短)印刷時間よりも短くなり、且つ全てのページにおいて印刷完了までにプリントコマンド207の生成が完了している。結果的に、二部目以降の印刷処理では、全ページをプリンタ115の最高印刷時間で印刷することが可能である。
<第4の実施形態>
次に、本発明の第4の実施形態について説明する。本実施形態では、第3の実施形態と同様に、一部目の印刷処理時に保存すべきプリントコマンド207を最適に決定することを目的とする。第1〜第3の実施形態では、プリントコマンド207をページ毎に保存していく構成であった。これに対し本実施形態では、全てのページのプリントコマンド207を保存していき、不要であると判断したページのみを削除していく構成をとる。このように本実施形態と前述した第1〜第3の実施形態では、プリントコマンド207を保存するが主として異なる。したがって、本実施形態の説明において、第1〜第3の実施形態と同一の部分については、図1〜図12に付した符号と同一の符号を付すこと等により、詳細な説明を省略する。
図13は、部単位の複数部印刷を行う際のレンダーフィルター206における一部目の処理の一例を説明するフローチャートである。尚、レンダーフィルター206のプリントコマンド保存判定部302以外の処理については、特に言及の無い限り、第1〜第3の実施形態と同じ構成をとる。
まず、レンダーフィルター206は、P(現在のページ数)、及びPsave(プリントコマンド207を保存したページ数)を0に初期化する(ステップS1300)。これらのパラメータは、例えばRAM109に記憶される。
次に、受信部300は、(P+1)ページのXPSデータを受信した後、現在のページ数であるPに1を加算する(ステップS1301)。
次に、プリントコマンド生成部301は、現在のページのプリントコマンド207を生成しながらプリントコマンド保存部303に保存して記憶制御を行う(ステップS1302)。また、これと同時に、プリントコマンド転送部304は、生成したプリントコマンド207のプリンタ115への転送を、OSのAPIを用いて依頼する(ステップS1302)。
次に、プリントコマンド保存判定部302は、パラメータTpを以下の(7)式に従う計算を行ってページ毎に求める(ステップS1303)。
Tp=(現在のページの想定印刷時間−現在のページのプリントコマンド生成時間) ・・・(7)
(7)式において、想定印刷時間は、現在のページを印刷した場合のプリンタ115の最高(最短)印刷時間の想定値であり、その算出方法は、第2、第3の実施形態で説明したのと同じである。現在のページのプリントコマンド207を生成したのに要した時間は、ステップS1301でXPSデータを受信してから、ステップS1302でプリントコマンド207の生成が完了するまでの時間の実測値とする。これらの差によって求められるパラメータTpをページ単位で保存しておく。
本実施形態では、ステップS1302において、プリントコマンド生成部301は、プリントコマンド207を生成すると、そのプリントコマンド207をプリントコマンド保存部303に常に保存する。従って、プリントコマンド保存判定部302は、プリントコマンド207を保存したページ数Psaveに1を加算する(ステップS1304)。
次に、受信部300は、処理をしていない残りのページがあるか否かを判定する(ステップS1305)。この判定の結果、処理をしていない残りのページがない場合には、一部目のレンダーフィルター206の処理が終了する。
一方、処理をしていない残りのページがある場合、プリントコマンド保存判定部302は、次の処理を行う。すなわち、プリントコマンド保存判定部302は、プリントコマンド保存部303の空き容量に基づき、次のページのプリントコマンド207をプリントコマンド保存部303に保存できる否かを判定する(ステップS1306)。このステップS1306では、現在のページのプリントコマンド207のサイズ以上の空き容量があるか否かを判定したり、現在のページのプリントコマンド207のサイズよりも多少大きなサイズ以上の空き容量があるか否かを判定したりすることができる。
このようなステップS1306の判定の結果、次のページのプリントコマンド207をプリントコマンド保存部303に保存できる場合には、ステップS1301に戻り、次以降のページの処理を行う。
一方、次のページのプリントコマンド207をプリントコマンド保存部303に保存できない場合、プリントコマンド保存判定部302は、既に保存済みのプリントコマンド207のうち、不要なものを削除する処理を行った後、次以降のページの処理を行う。この不要なプリントコマンド207を削除する処理は、ステップS1307〜S1310で実行される。尚、この処理を、ステップS1302でプリントコマンド207の保存に失敗したタイミングで呼び出すようにしてもよい。
不要なプリントコマンド207を削除する処理として、まず、プリントコマンド保存判定部302は、保存済みプリントコマンドの207のうち、一番大きなパラメータTpに対応するページのプリントコマンド207を検索する(ステップS1307)。パラメータTpは、あるページを処理する場合に、プリンタ115の印刷処理に対し、プリントコマンド207の生成処理を先行して行うことが可能な時間を示す。従って、一番大きなパラメータTpに対応するページは、プリントコマンド207を生成するのに最も時間的な余裕があるページということになる。したがって、プリントコマンド保存判定部302は、検索したプリントコマンド207を削除して記憶制御を行う(ステップS1308)。
特定のページのプリントコマンド207を削除した場合、その前後のページのプリントコマンド207は、他のプリントコマンド207に比べ保存すべき優先度が高くなる。第1の実施形態で説明した通り、二部目以降の印刷処理では、プリントコマンド207の生成と転送とを並列して動作させる。したがって、出来るだけページ間隔が均等になるように、プリントコマンド207を保存したほうがよい。つまり、全ページのパラメータTpが等しい場合は、最終的にプリントコマンド207を保存するページ間隔は均等になっているのが好ましい。このため、プリントコマンド207を削除したページの前後のページでは、削除対象としての優先順位を下げる。
これを反映するため、プリントコマンド保存判定部302は、プリントコマンド207を削除したページの前後のページに対応するパラメータTpを修正する(ステップS1309)。パラメータTpを修正するページの範囲は、プリントコマンド207を削除したページの前後(Pall/Psave/2)ページとする。ここで、Pallは、ジョブの総ページ数を示す。Psaveは、プリントコマンド207を保存したページ数であるが、この計算を行っている時点でプリントコマンド保存部303は一杯であるので、保存可能なページ数でもある。(Pall/Psave)ページ間隔でプリントコマンド207を保存した場合に、ページ間隔が均等になるようにプリントコマンド207を保存できるということになる。そこで、本実施形態では、プリントコマンド207を削除したページの前後(Pall/Psave/2)ページに対応するパラメータTpを調整することで、ページ間隔が出来るだけ均等になるようにプリントコマンド207を削除するようにする。
ここで、プリントコマンド保存判定部302は、該当するパラメータTpの値を一定値減らす等の方法で調整を行う。ただし、パラメータTpの値の減らし方は、このようなものに限定されない。例えば、プリントコマンド207を削除したページを中心とした正規分布のように、そのページから離れるほど小さくなるような値をパラメータTpから減算してもよい。
最後に、プリントコマンド保存判定部302は、プリントコマンド207を1ページ分削除したので、プリントコマンド207を保存したページ数Psaveから1を減算する(ステップS1310)。
以上で、不要なプリントコマンド207を削除する処理は終了である。不要なプリントコマンド207を削除する処理(ステップS1306〜S1310)は、次のページのプリントコマンド207を保存することが可能になるまでを繰り返し行われる。
そして、残りのページが存在しなくなるまで、各ページのプリントコマンド207の保存と、不要なプリントコマンド207の削除とを繰り返す。最終的に削除されずに残ったページのプリントコマンド207が一部目の印刷処理で最終的に保存されるプリントコマンド207となる。
二部目以降の印刷処理は、図5に示す処理と同じようにして行うことができる。すなわち、プリントコマンド207が保存済みのページでは、そのプリントコマンド207を再利用してプリンタ115に送信し、プリントコマンド207が保存済みでないページでは、プリントコマンド207を再度生成してプリンタ115に送信する。
本実施形態では、第3の実施形態と同様に、一部目の印刷処理が終了した段階で、既にプリントコマンド保存部303の利用可能な容量を略使い切る形でプリントコマンド207を保存する形となる。そのため、本実施形態の基本動作の一例の概略は、第3の実施形態と同様に、図12に示したようになる。
本実施形態では、一部目の印刷処理が完了した時に、5ページのプリントコマンド207の保存が完了する形となる。実際に保存すると判断するページは、ステップS1309の調整値により変わるが、図12に示す通り、プリントコマンド207の生成負荷が高い5〜9ページ目で多めに、それ以外のページで少なめに、プリントコマンド207を保存するページであると判断する。図12に示す通り、二部目の印刷処理における“プリントコマンド207の生成処理時間”は、プリンタ115の最高(最短)印刷時間よりも短くなり、且つ全てのページにおいて印刷完了までにプリントコマンド207の生成が完了している。結果的に、二部目以降の印刷処理では、全てのページをプリンタ115の最高印刷時間で印刷することが可能である。
また、本実施形態では、プリントコマンド保存部303の記憶領域に保存できないと判断するまで、プリントコマンド207を保存し続ける。これにより、どれだけプリントコマンド207の生成時間に余裕があろうとも、可能な範囲でプリントコマンド207を保存することができる点が特徴の一つである。
尚、前述した各実施形態では、一度生成したプリントコマンド207を記憶領域に保存しておき、同一ページの印刷要求の際にそれを再利用するようにした。ここで、プリントコマンド207は、通常、プリンタ115が理解可能な描画命令を示す。しかしながら、保存する際のサイズや負荷分散の観点から、プリントコマンド207を生成する過程のデータを記憶領域に保存するようにしてもよい。この場合、記憶領域からデータを読み出した後、残りの処理を完了してプリントコマンド207を生成し、生成したプリントコマンド207をプリンタ115に供給することになる。
(本発明の他の実施形態)
前述した本発明の実施形態における印刷制御装置を構成する各手段、並びに印刷制御方法の各ステップは、コンピュータのRAMやROMなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
また、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図4、図5、図7、図9、図11、図13に示すフローチャートに対応したプログラム)を、システムあるいは装置に直接、あるいは遠隔から供給するものを含む。そして、そのシステムあるいは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
尚、前述した各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の第1の実施形態を示し、印刷システムのハードウェア構成の一例を示すブロック図である。 本発明の第1の実施形態を示し、印刷システムの機能的な構成の一例を示す図である。 本発明の第1の実施形態を示し、部単位の複数部印刷時におけるレイアウトフィルター及びレンダーフィルターの動作の概要の一例を説明する図である。 本発明の第1の実施形態を示し、部単位の複数部印刷を行う際のレンダーフィルターにおける一部目の処理の一例を説明するフローチャートである。 本発明の第1の実施形態を示し、部単位の複数部印刷を行う際のレンダーフィルターにおける二部目以降の処理の一例を説明するフローチャートである。 本発明の第1の実施形態を示し、印刷システムの動作の概略の具体例を説明する図である。 本発明の第2の実施形態を示し、部単位の複数部印刷を行う際のレンダーフィルターにおける一部目の処理の一例を説明するフローチャートである。 本発明の第2の実施形態を示し、ルックアップテーブルの一例を示す図である。 本発明の第2の実施形態を示し、部単位の複数部印刷を行う際のレンダーフィルターにおける二部目の処理の一例を説明するフローチャートである。 本発明の第2の実施形態を示し、印刷システムの動作の概略の具体例を説明する図である。 本発明の第3の実施形態を示し、部単位の複数部印刷を行う際のレンダーフィルターにおける一部目の処理の一例を説明するフローチャートである。 本発明の第3の実施形態を示し、印刷システムの動作の概略の具体例を説明する図である。 本発明の第4の実施形態を示し、部単位の複数部印刷を行う際のレンダーフィルターにおける一部目の処理の一例を説明するフローチャートである。
符号の説明
200 アプリケーション
203 XPSスプールファイル
204 フィルターパイプライン
205 レイアウトフィルター
206 レンダーフィルター
207 プリントコマンド
300 受信部
301 プリントコマンド生成部
302 プリントコマンド保存判定部
303 プリントコマンド保存部
304 プリントコマンド転送部

Claims (21)

  1. 記憶領域を有し、複数のページ及び複数部を指定する印刷要求に基づくプリンタでの印刷に用いるプリントコマンドを供給する印刷システムにおける印刷制御方法であって、
    前記印刷要求に基づきプリントコマンドを生成する生成工程と、
    前記プリンタにおけるページ単位の目安の印刷時間である想定印刷時間を取得する取得工程と、
    前記生成工程におけるページ単位のプリントコマンドの生成時間を測定する測定工程と、
    前記取得工程で取得した想定印刷時間と、前記測定工程で測定した生成時間とを用いて前記記憶領域に記憶すべき前記プリントコマンドをページ単位で決定する第1の決定工程と、
    前記第1の決定工程で決定されたページのプリントコマンドとは異なるページのプリントコマンドを、前記記憶領域に記憶すべきページのプリントコマンドとして決定する第2の決定工程と、
    前記第1の決定工程及び前記第2の決定工程で決定したページのプリントコマンドを前記記憶領域に記憶する記憶工程と、
    前記プリントコマンドを前記プリンタに対して供給する供給工程と
    前記記憶領域の利用可能な容量と当該記憶領域に記憶されているプリントコマンドのサイズと前記印刷要求に含まれるページ数を用いて、プリントコマンドの前記記憶領域への記憶の頻度を調整するための調整パラメータを求める工程とを有し、
    前記生成工程におけるプリントコマンドの生成と、前記供給工程におけるプリントコマンドのプリンタに対する供給を並行に処理し、
    前記第1の決定工程においては、前記想定印刷時間と、前記求められた調整パラメータにより調整された前記生成時間とを用いて前記記憶領域に記憶すべき前記プリントコマンドをページ単位で決定し、
    二部目のプリンタに対するプリントコマンドの供給において、前記記憶工程で記憶したページのプリントコマンドが存在する場合には前記生成工程における当該ページのプリントコマンドの生成を行わず、前記供給工程において当該記憶されたプリントコマンドをプリンタに対して供給することを特徴とする印刷制御方法。
  2. 前記記憶工程で記憶されるプリントコマンドのサイズの合計が、前記記憶領域においてプリントコマンドを記憶するための記憶容量以内に調整する調整工程を有することを特徴とする請求項1に記載の印刷制御方法。
  3. 前記調整工程においては、前記第1の決定工程及び前記第2の決定工程で決定されたページのプリントコマンドのサイズの合計が、前記記憶領域においてプリントコマンドを記憶するための記憶容量を越えた場合に、前記第1の決定工程で決定されたページのプリントコマンドを優先的に前記記憶領域に記憶されるように調整することを特徴とする請求項2に記載の印刷制御方法。
  4. 前記取得工程においては、プリンタでの印刷モードに基づき処理時間を返却するようなルックアップテーブルを参照して前記想定印刷時間を取得することを特徴とする請求項1乃至3のいずれか1項に記載の印刷制御方法。
  5. 前記取得工程においては、更にプリンタでの印刷における用紙サイズに基づき前記ルックアップテーブルを参照して前記想定印刷時間を取得することを特徴とする請求項4に記載の印刷制御方法。
  6. 前記取得工程においては、プリンタに対するプリントコマンドの供給の状況を元に前記想定印刷時間を取得することを特徴とする請求項1乃至3のいずれか1項に記載の印刷制御方法。
  7. 前記取得工程においては、プリンタから取得した情報を元に前記想定印刷時間を計算することを特徴とする請求項1乃至3のいずれか1項に記載の印刷制御方法。
  8. 前記第1の決定工程は、各ページに対する前記プリントコマンドの生成時間と前記想定印刷時間とに基づき、前記生成工程でのプリントコマンドの生成が間に合わずに前記供給工程におけるプリントコマンドの供給が行なわれないと判断されるページのプリントコマンドを記憶すべきとして決定することを特徴とする請求項1乃至7のいずれか1項に記載の印刷制御方法。
  9. 前記第2の決定工程は、前記第1の決定工程で決定されたページのプリントコマンドのサイズの合計が、前記記憶領域においてプリントコマンドを記憶するための記憶容量に満たなかった場合に、前記第1の決定工程で決定されたページのプリントコマンドとは異なるページのプリントコマンドを記憶すべきとして決定することを特徴とする請求項1に記載の印刷制御方法。
  10. 前記第2の決定工程は、前記第1の決定工程で決定されたページ以外のページのプリントコマンドを、予め定められたページ間隔で記憶すべきとして決定することを特徴とする請求項1に記載の印刷制御方法。
  11. 請求項1乃至1のいずれか1項に記載の印刷制御方法をコンピュータに実行させることを特徴とするコンピュータプログラム。
  12. 記憶領域を有し、複数のページ及び複数部を指定する印刷要求に基づくプリンタでの印刷に用いるプリントコマンドを供給する印刷制御装置であって、
    前記印刷要求に基づきプリントコマンドを生成する生成手段と、
    前記プリンタにおけるページ単位の目安の印刷時間である想定印刷時間を取得する取得手段と、
    前記生成手段によるページ単位のプリントコマンドの生成時間を測定する測定手段と、
    前記取得手段により取得した想定印刷時間と、前記測定手段により測定した生成時間とを用いて前記記憶領域に記憶すべき前記プリントコマンドをページ単位で決定する第1の決定手段と、
    前記第1の決定手段により決定されたページのプリントコマンドとは異なるページのプリントコマンドを、前記記憶領域に記憶すべきページのプリントコマンドとして決定する第2の決定手段と、
    前記第1の決定手段及び前記第2の決定手段により決定したページのプリントコマンドを前記記憶領域に記憶する記憶手段と、
    前記プリントコマンドを前記プリンタに対して供給する供給手段と
    前記記憶領域の利用可能な容量と当該記憶領域に記憶されているプリントコマンドのサイズと前記印刷要求に含まれるページ数を用いて、プリントコマンドの前記記憶領域への記憶の頻度を調整するための調整パラメータを求める手段とを有し、
    前記生成手段によるプリントコマンドの生成と、前記供給手段によるプリントコマンドのプリンタに対する供給を並行に処理し、
    前記第1の決定手段においては、前記想定印刷時間と、前記求められた調整パラメータにより調整された前記生成時間とを用いて前記記憶領域に記憶すべき前記プリントコマンドをページ単位で決定し、
    二部目のプリンタに対するプリントコマンドの供給において、前記記憶手段により記憶したページのプリントコマンドが存在する場合には前記生成手段による当該ページのプリントコマンドの生成を行わず、前記供給手段が当該記憶されたプリントコマンドをプリンタに対して供給することを特徴とする印刷制御装置。
  13. 前記記憶手段により記憶されるプリントコマンドのサイズの合計が、前記記憶領域においてプリントコマンドを記憶するための記憶容量以内に調整する調整手段を有することを特徴とする請求項1に記載の印刷制御装置。
  14. 前記調整手段は、前記第1の決定手段及び前記第2の決定手段により決定されたページのプリントコマンドのサイズの合計が、前記記憶領域においてプリントコマンドを記憶するための記憶容量を越えた場合に、前記第1の決定手段により決定されたページのプリントコマンドを優先的に前記記憶領域に記憶されるように調整することを特徴とする請求項1に記載の印刷制御装置。
  15. 前記取得手段は、プリンタでの印刷モードに基づき処理時間を返却するようなルックアップテーブルを参照して前記想定印刷時間を取得することを特徴とする請求項1乃至1のいずれか1項に記載の印刷制御装置。
  16. 前記取得手段は、更にプリンタでの印刷における用紙サイズに基づき前記ルックアップテーブルを参照して前記想定印刷時間を取得することを特徴とする請求項1に記載の印刷制御装置。
  17. 前記取得手段は、プリンタに対するプリントコマンドの供給の状況を元に前記想定印刷時間を取得することを特徴とする請求項1乃至1のいずれか1項に記載の印刷制御装置。
  18. 前記取得手段は、プリンタから取得した情報を元に前記想定印刷時間を計算することを特徴とする請求項1乃至1のいずれか1項に記載の印刷制御装置。
  19. 前記第1の決定手段は、各ページに対する前記プリントコマンドの生成時間と前記想定印刷時間とに基づき、前記生成手段でのプリントコマンドの生成が間に合わずに前記供給手段によるプリントコマンドの供給が行なわれないと判断されるページのプリントコマンドを記憶すべきとして決定することを特徴とする請求項1乃至1のいずれか1項に記載の印刷制御装置。
  20. 前記第2の決定手段は、前記第1の決定手段により決定されたページのプリントコマンドのサイズの合計が、前記記憶領域においてプリントコマンドを記憶するための記憶容量に満たなかった場合に、前記第1の決定手段により決定されたページのプリントコマンドとは異なるページのプリントコマンドを記憶すべきとして決定することを特徴とする請求項1に記載の印刷制御装置。
  21. 前記第2の決定手段は、前記第1の決定手段により決定されたページ以外のページのプリントコマンドを、予め定められたページ間隔で記憶すべきとして決定することを特徴とする請求項1に記載の印刷制御装置。
JP2008193992A 2008-07-28 2008-07-28 印刷制御装置、印刷制御方法、及びコンピュータプログラム Expired - Fee Related JP5171458B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008193992A JP5171458B2 (ja) 2008-07-28 2008-07-28 印刷制御装置、印刷制御方法、及びコンピュータプログラム
US12/505,917 US8564822B2 (en) 2008-07-28 2009-07-20 Printing control apparatus for determining print commands to be stored when printing plural copies of a document

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008193992A JP5171458B2 (ja) 2008-07-28 2008-07-28 印刷制御装置、印刷制御方法、及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2010033284A JP2010033284A (ja) 2010-02-12
JP5171458B2 true JP5171458B2 (ja) 2013-03-27

Family

ID=41568374

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008193992A Expired - Fee Related JP5171458B2 (ja) 2008-07-28 2008-07-28 印刷制御装置、印刷制御方法、及びコンピュータプログラム

Country Status (2)

Country Link
US (1) US8564822B2 (ja)
JP (1) JP5171458B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101432052B1 (ko) * 2008-11-24 2014-08-20 삼성전자주식회사 인쇄 제어 단말장치, 및 인쇄 제어 방법
US8427680B2 (en) * 2010-03-03 2013-04-23 Xerox Corporation Delayed printing from a computerized device
JP2012063951A (ja) 2010-09-15 2012-03-29 Ricoh Co Ltd 印刷制御装置、印刷制御方法およびそのプログラム
US9164715B2 (en) * 2013-03-15 2015-10-20 Konica Minolta Laboratory U.S.A., Inc. Method for managing a print job
JP6164912B2 (ja) * 2013-04-26 2017-07-19 キヤノン株式会社 データ処理装置、制御方法およびプログラム
JP2016016564A (ja) * 2014-07-07 2016-02-01 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
JP6365038B2 (ja) * 2014-07-10 2018-08-01 コニカミノルタ株式会社 画像形成装置及び画像形成システム並びに画像形成制御方法
DE102014111463B4 (de) * 2014-08-12 2017-02-09 Océ Printing Systems GmbH & Co. KG Verfahren und Vorrichtung zum automatischen Einfügen von Andruckbögen in laufende Druckapplikationen bei digitalen Drucksystemen
WO2021011001A1 (en) 2019-07-18 2021-01-21 Hewlett-Packard Development Company, L.P. Adaptive interpage delays

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3110905B2 (ja) 1992-12-28 2000-11-20 キヤノン株式会社 データ転送装置及び方法
JP3592428B2 (ja) * 1996-03-08 2004-11-24 株式会社リコー 本原稿読み取り装置
JPH1044524A (ja) * 1996-07-30 1998-02-17 Fuji Xerox Co Ltd データ作成装置
JPH11177788A (ja) * 1997-12-11 1999-07-02 Toshiba Corp 印刷制御方法および印刷装置
US6832187B1 (en) * 1999-05-10 2004-12-14 Hewlett-Packard Development Company, L.P. Methods of providing page protection in a digital printing system having multiple output devices
US7307750B2 (en) * 2002-02-01 2007-12-11 Ricoh Company, Ltd. Image forming apparatus, memory control apparatus and memory control method
US8310713B2 (en) * 2002-12-24 2012-11-13 Konica Minolta Business Technologies, Inc. Image forming device, image forming program, computer readable recording medium on which the program is recorded, and image forming method
US8264710B2 (en) * 2003-03-10 2012-09-11 Hewlett-Packard Development Company, L.P. Printing preparation
US7929160B2 (en) * 2003-03-10 2011-04-19 Hewlett-Packard Development Company, L.P. Page processing and print engine management
JP2004355068A (ja) * 2003-05-27 2004-12-16 Riso Kagaku Corp 画像形成システムおよび画像形成装置
US7847967B2 (en) * 2004-10-30 2010-12-07 Sharp Laboratories Of America, Inc. Adaptive de-spooling system for partial brute force collation
JP2006172257A (ja) * 2004-12-17 2006-06-29 Seiko Epson Corp 分散印刷システム、印刷要求装置、分散印刷制御装置、ネットワークプリンタおよび分散印刷制御プログラム、並びに分散印刷方法
JP2006180243A (ja) * 2004-12-22 2006-07-06 Fuji Photo Film Co Ltd データ移送システム
JP4455459B2 (ja) * 2005-09-02 2010-04-21 キヤノン株式会社 印刷システムと印刷装置及び印刷方法
JP4476909B2 (ja) * 2005-09-12 2010-06-09 シャープ株式会社 印刷装置、印刷処理方法、印刷処理プログラムおよび記録媒体
JP4736761B2 (ja) * 2005-12-05 2011-07-27 富士ゼロックス株式会社 印刷装置
JP4262724B2 (ja) * 2006-02-06 2009-05-13 富士フイルム株式会社 プリンタ・システムおよびその動作制御方法
JP4390287B2 (ja) * 2006-02-08 2009-12-24 キヤノン株式会社 印刷システム、及び、印刷装置及びその制御方法
JP4379424B2 (ja) * 2006-02-14 2009-12-09 コニカミノルタビジネステクノロジーズ株式会社 印刷方法および印刷装置
US8085426B2 (en) * 2006-11-22 2011-12-27 Sharp Laboratories Of America, Inc. Intelligent page buffer allocation
US20080231885A1 (en) * 2007-03-23 2008-09-25 Konica Minolta Systems Laboratory, Inc. Direct printing method using ram storage for spooled printer files

Also Published As

Publication number Publication date
US20100020356A1 (en) 2010-01-28
US8564822B2 (en) 2013-10-22
JP2010033284A (ja) 2010-02-12

Similar Documents

Publication Publication Date Title
JP5171458B2 (ja) 印刷制御装置、印刷制御方法、及びコンピュータプログラム
JP5408904B2 (ja) 情報処理装置、プレビュー方法、及びプログラム
JP5675047B2 (ja) 文書処理装置およびコンピュータプログラム
JP5072676B2 (ja) 情報処理装置、情報処理方法及び印刷システム
US8854638B2 (en) Variable printing control apparatus and control program
JP4857135B2 (ja) 情報処理装置、情報処理方法、プログラム、及び記憶媒体
JP2004126871A (ja) 印刷制御方法および装置
JP5100195B2 (ja) 情報処理装置及びジョブ管理方法
JP3757847B2 (ja) スプールファイル加工装置、プログラム及び記録媒体
US7961341B2 (en) Print system, print data supplying device, and method for supplying print data to printer
US20160078643A1 (en) Information processing apparatus, information processing method, and program
JP5084649B2 (ja) 情報処理装置及び情報処理方法及びプログラム
US8582135B2 (en) Image forming apparatus, control method therefor, and computer-readable storage medium
US20060294144A1 (en) Image forming apparatus and image forming method thereof
JP2019025801A (ja) 印刷システム、印刷装置とその制御方法、及びプログラム
JP2019086987A (ja) 画像形成装置、その制御方法、及びプログラム
JP6067039B2 (ja) 印刷に要する時間の予測値を求める画像処理装置、画像処理方法およびそのプログラム
KR20100045303A (ko) 화상형성장치 및 화상형성방법
JP5053908B2 (ja) 印刷管理装置、印刷管理方法、及びコンピュータプログラム
JP5244770B2 (ja) 画像形成装置
KR20120130068A (ko) 정보 처리 장치, 제어 방법 및 저장 매체
JP5623029B2 (ja) 印刷制御装置、印刷制御方法、およびプログラム
JP5677550B2 (ja) 情報処理装置、プレビュー方法、及びプログラム
JP2019072986A (ja) 画像形成装置、その制御方法、及びプログラム
CN115586876A (zh) 印刷***、印刷方法、信息处理装置以及计算机可读介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110727

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120828

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120829

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121026

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121127

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121225

R151 Written notification of patent or utility model registration

Ref document number: 5171458

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160111

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees