以下、図面を参照して、本発明の実施形態を詳細に説明する。
本発明は、特に、印刷制御装置に関するものである。
図1は、本発明の一実施形態を示す印刷制御装置を適用可能な印刷システムの構成例を説明するブロック図である。
図1において、3000はホストコンピュータである。このホストコンピュータ3000において、1はCPUで、ROM3のプログラム用ROMあるいは外部メモリ11に記憶されたCPU1の制御プログラムであるオペレーティングシステムプログラム(以下OS),印刷関連モジュール(OS内に含まれるものもある)等をRAM2上で実行して、システムバス4に接続される各デバイスを総括的に制御する。
また、CPU1は、ROM3のプログラム用ROMあるいは外部メモリ11に記憶された文書処理プログラム等のアプリケーションプログラムに基づいて図形、イメージ、文字、表(表計算等を含む)等が混在した文書処理を実行する。
また、CPU1は、ROM3のプログラム用ROMあるいは外部メモリ11に記憶された印刷関連モジュール(グラフィックエンジン,プリンタドライバ,プリントサブシステム)等をRAM2上で実行して、文書処理プログラムから出力された印刷要求に基づく印刷ジョブをプリンタ1500に出力することができる。
これらの処理の場合、制御の主体は、ハードウェア上はCPU1である。一方、ソフトウェア上の制御の主体は、アプリケーションプログラム及びプリンタへの印刷指示機能を備えた印刷関連モジュール(グラフィックエンジン,プリンタドライバ,プリントサブシステム)等である。よって、以下、実施形態の説明において、処理の主体として、アプリケーションプログラム,グラフィックエンジン,プリンタドライバ,プリントサブシステムを用いるが、ハードウェア的には、アプリケーションプログラム,グラフィックエンジン,プリンタドライバ,プリントサブシステムを実行するCPU1が実際の処理を実行していることとなる。
ROM3のフォント用ROMあるいは外部メモリ11には上記文書処理の際に使用するフォントデータ等を記憶し、ROM3のデータ用ROMあるいは外部メモリ11には上記文書処理等を行う際に使用する各種データ(例えば、ディレクトリ情報、プリンタドライバテーブル等)を記憶する。
RAM2は、CPU1の主メモリ、ワークエリア等として機能する。5はキーボードコントローラ(KBC)で、キーボード(KB)9や不図示のポインティングデバイスからのキー入力を制御する。6はCRTコントローラ(CRTC)で、CRTディスプレイ(CRT)10の表示を制御する。7はディスクコントローラ(DKC)で、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタへの印刷指示を行うプログラム等を記憶するハードディスク(HD)、フロッピー(登録商標)ディスク(FD)等の外部メモリ11とのアクセスを制御する。
8はプリンタコントローラ(PRTC)で、所定の双方向性インタフェース(インタフェース)21を介してプリンタ1500に接続されて、プリンタ1500との通信制御処理を実行する。なお、CPU1は、例えばRAM2上に設定された表示情報RAMへのアウトラインフォントの展開(ラスタライズ)処理を実行し、CRT10上でのWYSIWYGを可能としている。また、CPU1は、CRT10上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。
プリンタ1500において、12はプリンタCPUで、ROM13のプログラム用ROMに記憶された制御プログラム等あるいは外部メモリ14に記憶された制御プログラム等に基づいてシステムバス15に接続される印刷部(プリンタエンジン)17に出力情報としての画像信号を出力する。また、このROM13のプログラム用ROMには、CPU12の制御プログラム等を記憶する。ROM13のフォント用ROMには上記出力情報を生成する際に使用するフォントデータ等を記憶し、ROM13のデータ用ROMにはハードディスク等の外部メモリ14がないプリンタの場合には、ホストコンピュータ上で利用される情報等を記憶している。
CPU12は入力部18を介してホストコンピュータとの通信処理が可能となっており、プリンタ内の情報等をホストコンピュータ3000に通知可能に構成されている。19は前記CPU12の主メモリ、ワークエリア等として機能するRAM(プリンタ内蔵RAM)で、図示しない増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。なお、RAM19は、出力情報展開領域、環境データ格納領域、NVRAM等に用いられる。
前述したハードディスク(HD)、ICカード等の外部メモリ14は、ディスクコントローラ(DKC)20によりアクセスを制御される。外部メモリ14は、オプションとして接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。また、1501は操作パネルで、操作のためのスイッチおよびLED表示器等が配されている。
また、前述した外部メモリ14は1個に限らず、少なくとも1個以上備え、内蔵フォントに加えてオプションフォントカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。さらに、図示しないNVRAMを有し、操作パネル1501からのプリンタモード設定情報を記憶するようにしてもよい。
なお、本実施形態のプリンタ1500は、印刷部数と丁合い印刷を指定した印刷ジョブデータを受信した場合に、プリンタ1500側で、前記印刷ジョブデータに設定された印刷部数の丁合い印刷処理もしくは複数の排紙トレイを使って文書単位の仕分け印刷処理を実行可能なプリンタである。
図2は、図1に示したホストコンピュータ3000からプリンタ1500に印刷ジョブデータを送信する際の流れを示した主要な機能ブロック図である。
ホストコンピュータ3000におけるアプリケーションプログラム(以下、アプリケーション)201、グラフィックエンジン202、プリンタドライバ203及びプリントサブシステム204は、それぞれ図1に示した外部メモリ11に保存されたファイルとして存在し、実行される際に、OSやそのモジュールを利用するモジュールによってRAM2にロードされ実行されるプログラムモジュールである。
なお、アプリケーション201及びプリンタドライバ203は、外部メモリ11のFDや不図示のCD−ROMあるいは後述するネットワークを経由して外部メモリ11のハードディスク(HD)に追加可能になっている。
外部メモリ11に保存されているアプリケーション201は、CPU1によってRAM2にロードされて実行される。このアプリケーション201からプリンタ1500に対して印刷を行わせる際には、同様にCPU1によってRAM2にロードされて実行されるグラフィックエンジン202を利用して出力(描画)を行う。
グラフィックエンジン202は、印刷装置毎に用意されたプリンタドライバ203を起動する(これにより、プリンタドライバ203は、CPU1によって外部メモリ11からRAM2にロードさせて実行される)。グラフィックエンジン202は、このプリンタドライバ203を用いて、アプリケーション201の出力をプリンタ記述言語(PDL)によるプリンタ制御命令に変換する。
プリンタドライバ203により変換されたプリンタ制御コマンドは、プリントサブシステム204を経てインタフェース21経由でプリンタ1500に出力される仕組みとなっている。
なお、このプリントサブシステム204は、OSによって起動されて、CPU1によって外部メモリ11からRAM2にロードされて実行されるものであり、印刷ジョブのスケジューリング、プリンタとのホストコンピュータと接続制御やプリンタのステータスの管理を行っている。
なお、プリンタドライバ203は、前述した、アプリケーションから指示された印字や描画命令の出力に対しプリンタ制御コマンドを生成しプリント出力に反映されるようプリンタに指示するだけでなく、プリンタドライバ203やプリンタ1500本体が持つ機能を制御するための設定を行う機能(ユーザインタフェース(〔背景技術〕の欄で示した図21のUI))と、その設定を記憶する機能、プリンタドライバ203やプリンタ1500本体が持つ能力をアプリケーションやOSに情報提供する機能、上記ユーザインタフェースで設定された機能がプリンタの有する機能の場合にプリンタ制御命令を生成する機能、また、ユーザインタフェースで設定された機能がプリンタドライバ独自で行う機能の場合にその機能を実現する機能等を有する。
なお、図1では、ホストコンピュータ3000とプリンタ1500がインタフェース21を介して直接接続される構成について説明したが、図3に示すようにネットワークを介して接続されるように構成してもよい。
図3は、図1に示したホストコンピュータ3000,プリンタ1500を適用可能な印刷システムの一例を示すシステム構成図である。
図3において、301はネットワークであり、複数のクライアントコンピュータとしてのホストコンピュータ3000,プリンタ1500,プリントサーバコンピュータ4000が接続されている。
この場合、ホストコンピュータ3000のPRTC8はネットワークインタフェースカード(NIC)の機能を有するものとする。
プリンタ1500は、セントロニクスやUSB等のローカルインタフェース302を介してプリントサーバコンピュータ4000と接続されて該プリントサーバコンピュータ4000を介してネットワーク3000に接続される形態であっても、ネットワーク3000に直接接続される形態であってもよい。なお、ネットワーク301に直接接続されているプリンタ1500の入力部18は、ネットワークインタフェースカード(NIC)の機能を有するものとする。
上記プリントサーバコンピュータ4000を介してネットワーク301に接続されるプリンタ1500に各クライアントとしてのホストコンピュータ3000から印刷ジョブを送信する場合、まず各ホストコンピュータ3000は、プリントサブシステム204を介して、プリントサーバコンピュータ4000へ印刷ジョブを送信する。そして、プリントサーバコンピュータ4000は、各ホストコンピュータ3000から送信されてきた印刷ジョブを、不図示のプリントサーバコンピュータ4000上のプリントサブシステムを介して、プリンタ1500へ送信する。これにより、各ホストコンピュータ3000は、プリントサーバコンピュータ4000を介して印刷ジョブをプリンタ1500へ送信することができる。
また、ネットワーク301に直接接続されるプリンタ1500に各ホストコンピュータ3000から印刷ジョブを送信する場合、各ホストコンピュータ3000は、プリントサブシステム204を介して、ネットワーク301に直接接続されるプリンタ1500へ印刷ジョブを送信する。
なお、本実施形態のプリンタドライバ203は、アプリケーションプログラムにより生成される印刷要求データに基づいて複数部数の丁合い印刷処理もしくは複数の排紙トレイを使って文書単位の仕分け印刷処理を実行可能なプリンタ1500に送信するための印刷ジョブデータを生成可能なプリンタドライバである。
次に、図4のタイミングチャートを用いて、本発明の印刷制御装置における基本的な処理の流れについて説明する。
図4は、本発明の印刷制御装置における印刷を行う場合の基本的な処理の流れを示すステータス図であり、特に、図2に示したアプリケーション201,グラフィックエンジン202,プリンタドライバ203の処理に対応する。なお、図2と同一のものには同一の符号を付してある。
図2に示したように、アプリケーション201は、プリンタドライバ203と直接やり取りを行うのではなく、OSの持つグラフィックエンジン202を介して行うため、アプリケーション201自体は、実際にはグラフィックエンジン202とやり取りを行う。グラフィックエンジン202はアプリケーション201から指示を受け、プリンタドライバ203に対して指示を行う。
まず、アプリケーション201は、丁合い印刷のON/OFFや部数設定などの印刷のための設定をRAM2に確保されたメモリを介してグラフィックエンジン202に通知し、プリンタドライバ203は、グラフィックエンジン202より、その印刷設定とその印刷設定を元にプリンタドライバ203が印刷処理を行う上で必要な情報を格納する新たにRAM2上に確保されたメモリ領域の初期化要求を受信する(S601)。これにより、プリンタドライバ203は、そのプリンタドライバ203が印刷処理を行うために必要な情報(プリンタドライバ情報)を保持するメモリ領域を確保し、印刷設定に従ってそのメモリ領域を初期化する。
プリンタドライバ203は、プリンタドライバ203が参照する情報メモリの初期化処理要求の受信により必要な処理を完了すると、ステップS601で受信した印刷設定に応じたプリンタドライバ203の印刷能力をグラフィックエンジン202に通知する。アプリケーション201は、グラフィックエンジン202より、最終的にプリンタ1500に送信される印刷ジョブとその印刷ジョブに反映する印刷設定とを関連付けるために必要なハンドル値を取得する(S602)。
次に、アプリケーション201が、印刷の開始要求をグラフィックエンジン202に行うと、プリンタドライバ203は、グラフィックエンジン202より印刷開始要求を受信する(S603)。これにより、プリンタドライバ203は、プリンタ記述言語の生成処理を開始し、まず、プリンタ1500が印刷開始に必要なプリンタ命令を生成する。ただし、プリンタ1500が印刷開始に必要なプリンタ命令を生成処理は、最初のページ(1ページ目)の印刷処理が開始された時点(アプリケーションからの最初のページの描画指示を受信した時点)であっても良い。
アプリケーション201は、文字やイメージ等描画オブジェクトの描画を実現するための描画指示をグラフィックエンジン202に対して行う。プリンタドライバ203は、その描画指示をグラフィックエンジン202より受信する(S604)。これにより、プリンタドライバ203は、指定された描画オブジェクトや改ページをプリンタ1500からの出力結果に反映させるためのプリンタ命令を生成する。なお、印刷するページ数はアプリケーション201からの指定に因る。
次に、アプリケーション201が、印刷の終了要求をグラフィックエンジン202に行うと、プリンタドライバ203は、グラフィックエンジン202より印刷終了要求を受信する(S605)。これにより、プリンタドライバ203は、プリンタ1500が印刷終了に必要なプリンタ命令を生成し、プリンタ記述言語の生成処理を終了する。
次に、アプリケーション201は、ステップS602で取得したハンドル値の破棄要求をグラフィックエンジン202に通知し、プリンタドライバ203は、グラフィックエンジン202より、プリンタドライバ203が印刷処理を行う上で必要な情報を格納するメモリ領域にある情報(プリンタドライバ情報)の破棄要求を受信する(S606)。これにより、プリンタドライバ203は、上記プリンタドライバ情報の破棄処理を行う。
以上示した、ステップS603〜S605の処理により、プリンタ1500へ送信するための1つのジョブが生成されることになる。
次に、図5,図6のフローチャートを参照して、丁合い印刷のために印刷ジョブを部数分分割するような印刷要求を行うアプリケーション201の基本的な処理について説明する。
図5は、図1に示したホストコンピュータ3000上で実行される丁合い印刷のために印刷ジョブを部数分分割するような印刷要求を行うアプリケーション201の丁合い印刷処理手順の一例を示すフローチャートである。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるアプリケーション201をRAM2上で実行することにより実現される。以下、処理の主体を、CPU1により実行されるアプリケーション201として説明する。また、図中S701〜S707は各ステップを示す。
まず、通常、図22に示したアプリケーションの設定画面にあるような丁合い印刷の設定のためのコントロール502をマウス等によるユーザ指示により有効にし、また、部数の設定のためのコントロール501において、印刷する部数の設定もユーザ指示により行う。
このようなアプリケーションの設定が行われ、印刷指示がアプリケーション201に入力されると(S701)、アプリケーション201は、印刷を行う上で必要な設定をグラフィックエンジン202に通知しハンドル値を取得する。その際、グラフィックエンジン202に通知する部数情報を1部にする(S702)。
次に、アプリケーション201は、印刷処理を開始するための印刷開始要求をグラフィックエンジン202に対して行う(S703)。
続いて、アプリケーション201上で作成・編集された図形,イメージ,文字,表等の描画オブジェクトやページ構成を印刷結果に反映するための指示をグラフィックエンジン202に対して行う(S704)。
次に、アプリケーション201は、印刷処理を終了するための印刷終了要求をグラフィックエンジン202に対して行う(S705)。この処理後、プリンタドラバ203では、通常、1つのジョブが生成されることになる。
そして、アプリケーション201は、ステップS703〜S705の処理回数がステップS701で設定された部数回行われたか(指定部数分印刷を行ったか)判断し(S706)、未だステップS701で設定された部数回に満たないと判断した場合には、ステップS703に戻り、ステップS703〜S706にて同じ処理を繰り返す。
一方、ステップS706で、アプリケーション201は、ステップS703〜S705の処理回数がステップS701で設定された部数回行われたと判断した場合には、ステップS702で取得したハンドルの破棄要求をグラフィックエンジン202に対して行い(S707)、本フローチャートの処理を終了する。
つまり、アプリケーション201は、図4で示したステップS603〜S605の処理を、ステップS701で設定された部数回繰り返すことで、例えば、3ページの文書を3部丁合い印刷したい場合には、[1−2−3],[1−2−3],[1−2−3](数字はページ数を表し、[ ]は1つのジョブを表す)といった3つの印刷ジョブがプリンタドライバ203で生成されることになるので、プリンタ1500にて、丁合い印刷が実現されることになる。
以上示したように、アプリケーション201は、指定部数の丁合い印刷を行うために1部の印刷を行うための印刷要求データ(本実施形態では、アプリケーション201で発行される、「印刷開始要求」で始まり「印刷終了要求」で終了する(「印刷開始要求」と「印刷終了要求」の間に、描画要求,改ページ要求等を含む)1ジョブのデータを印刷要求データと称する)を前記指定部数分生成するアプリケーションプログラムである。
上述したようなアプリケーション201の処理に対し、プリンタドライバ203が行う本実施形態の印刷ジョブデータ変換処理の一例を以下に詳細に説明する。
まず、アプリケーション201がグラフィックエンジン202を介してプリンタドライバ203に行う印刷要求に対して、プリンタドライバ203が生成する印刷ジョブを保存する処理と、アプリケーション201が実現しようとしている部数をカウントする処理とを図6のフローチャートを用いて説明する。
図6は、本発明の印刷制御装置における第1の制御処理手順の一例を示すフローチャートであり、図1に示したホストコンピュータ3000上で実行されるプリンタドライバ203による部数をカウントする処理と印刷ジョブを保存する処理に対応する。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるプリンタドライバ203をRAM2上で実行することにより実現される。また、図中S801〜S810は各ステップを示す。
前述したように、まずアプリケーション201がグラフィックエンジン202に対して、印刷設定の通知を行うと、プリンタドライバ203は、グラフィックエンジン202から送信される印刷設定を受信する(S801)。この印刷設定は、RAM2に確保されたメモリ領域に設定されて受け渡され、例えば、印刷部数、印刷サイズ、用紙の向きといった情報を含んでいる。
次に、アプリケーション201が丁合い印刷実現のために印刷ジョブを分割するような印刷要求を行う場合には、印刷設定の部数情報を1部に設定してくるので、プリンタドライバ203は、ステップS801で受信した印刷設定の印刷部数の情報が1部かどうかを判断し(S802)、1部であると判断した場合には、本実施形態の印刷ジョブデータ変換処理(ステップS804〜S810の処理)を実行する。なお、本実施形態の印刷ジョブデータ変換処理を実行するかどうかの判断は、ステップS802の1部であるか否かの判断のみに限られるものではなく、指定部数の丁合い印刷を行うために1部の印刷を行うための印刷要求を前記指定部数分生成するアプリケーションを外部メモリ11に登録しておき、アプリケーション201が登録しているアプリケーションかどうかの判断や、プリンタドライバ203が用意するUIの設定に本実施形態の印刷ジョブデータ変換処理を有効にする設定を設け、その設定が有効にされているかどうかの判断の何れか、もしくは、各判断を組み合わせた判断をステップS802の判断条件に加えて、より厳密に判断するように構成してもよい。
一方、ステップS802で、ステップS801で受信した印刷設定の印刷部数の情報が1部でないと判断した場合には、本実施形態の印刷ジョブデータ変換処理を実行しないと判断して、通常プリンタドライバが行っている通りの印刷処理を行う(S803)。
次に、ステップS804において、プリンタドライバ203は、ステップS801で受信した印刷設定を元に、プリンタドライバ203が印刷処理を行う上で必要な情報を格納するメモリ領域を初期化する。このメモリ領域には、印刷部数をカウントしておく部数カウンタ(CP)が存在し、この部数カウンタは「0」で初期化しておく。
次に、アプリケーション201が、ステップS801で設定された印刷設定を元に、実際に印刷処理を開始する印刷開始要求をグラフィックエンジン202に対して行うと、プリンタドライバ203は、グラフィックエンジン202より印刷開始要求を受信する(S805)。なお、図6内には示していないが、プリンタドライバ203は、印刷開始要求の受信に続いて描画要求(改ページ要求)等をグラフィックエンジン202より受信するものである。
次に、プリンタドライバ203は、部数カウンタ(CP)が「0」か否かを判断して印刷ジョブの保存処理を行うかどうかを判断する。なお、部数カウンタ(CP)が「0」である場合には、未だ1部分の印刷ジョブの保存が完了していないことを表し、また、部数カウンタ(CP)が「0」でない場合には、既に1部分の印刷ジョブの保存は完了していることを表す。
ステップS806で、プリンタドライバ203が、部数カウンタ(CP)が「0」であると判断した場合には、未だ1部分の印刷ジョブの保存を行っていないため、1部分の印刷ジョブの保存が完了するまで、後述の図7に示す印刷ジョブの保存処理を実行し(S807)、ステップS808に進む。
一方、ステップS806で、プリンタドライバ203が、部数カウンタ(CP)が「0」でないと判断した場合には、1部分の印刷ジョブの保存は完了しているため、印刷ジョブの保存処理は実行せず、そのまま、ステップS808に進む。
次に、アプリケーション201が1ジョブ分の印刷処理を終えてグラフィックエンジン202に対して印刷終了要求を行うと、プリンタドライバ203は、グラフィックエンジン202より、印刷終了要求を受信する(S808)。
プリンタドライバ203は、ステップS808で印刷終了要求を受信すると、部数カウンタ(CP)に「1」を加算する(S809)。なお、アプリケーション201は、印刷部数分、印刷開始要求から印刷終了要求までの印刷要求を繰り返すため、繰り返された回数、つまり、アプリケーション201が実現しようとしている部数が最終的に部数カウンタ(CP)に設定されることになる。
なお、図6内には示していないが、プリンタドライバ203は、ステップS808で印刷終了要求を受信した際にも、印刷ジョブを終了させるために必要となるプリンタ記述言語の生成処理を行い、部数カウンタ(CP)を加算する前の値が「0」であれば、該プリンタ記述言語を保存中の印刷ジョブに追加し、印刷ジョブの保存を完了することになる。
次に、ステップS810において、プリンタドライバ203は、グラフィックスエンジン202から印刷開始要求を受信したか判断し、印刷開始要求を受信したと判断した場合には、ステップS806の処理に戻り、ステップS806〜S810の処理を繰り返す。
一方、ステップS810で、プリンタドライバ203が、グラフィックエンジン202から印刷開始要求を受信しない場合には、印刷処理は終了となるため、本フローチャートの処理を終了する。
以上説明したように、本実施形態のプリンタドライバ203は、アプリケーション201により印刷要求データ発行前に発行される印刷設定情報を受信(S801に相当)してから、前記アプリケーション201により前記印刷要求データ発行後に発行される前記印刷設定情報の破棄要求を受信(S810のYesに相当)するまでの間、前記アプリケーション201により連続して生成される1部の印刷を行うための前記印刷要求データ(S805(S810)〜S808に相当)をRAM2内に保持される部数カウンタ(CP)をカウントアップすることによりカウントし(S809に相当)、前記いずれか1つの印刷要求データに対応する印刷ジョブデータのみを生成保存する(S807に相当)ものである。
以下、プリンタドライバ203が、まだ1部分の印刷ジョブが保存されていない場合、ステップS807において、プリンタドライバ203は、印刷開始要求を受信した時点から印刷終了要求を受信して印刷終了処理を完了するまでの間、生成したプリンタ記述言語を保存していくことになる。そのステップS807の印刷ジョブの保存処理を図7のフローチャートを用いて説明する。
図7は、本発明の印刷制御装置における第2の制御処理手順の一例を示すフローチャートであり、図6のステップS807に示した印刷ジョブの保存処理に対応する。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるプリンタドライバ203をRAM2上で実行することにより実現される。また、図中S901〜S902は各ステップを示す。
まず、プリンタドライバ203は、アプリケーション201からグラフィックエンジン202を介してプリンタドライバ203に順次送られる印刷要求に基づいて、該各印刷要求をプリンタ1500による印刷出力結果に反映させるためのプリンタ記述言語を通常の印刷処理時と同様に生成する(S901)。
プリンタドライバ203は、最初に生成したプリンタ記述言語を外部メモリに保存し、2回目以降、生成したプリンタ記述言語をその保存データに追加保存していくことで(S902)、最終的には、図8に示すようなプリンタ記述言語群によって1つの印刷ジョブとして形成されることになる。
なお、図7には示していないが、ステップS901,S902の処理は、ステップS808で、印刷終了要求を受信するまで繰り返し実行されるものとする。
より具体的に示すと、プリンタドライバ203は、ジョブの開始命令をプリンタ記述言語で生成し、外部メモリに保存し、次に、RAM2のメモリ領域に格納される印刷設定情報等に基づいて、丁合い印刷指定命令(この時点では不定),部数設定命令(この時点では「1部」),用紙サイズ(及び用紙向き)の指定命令等をプリンタ記述言語で生成し、外部メモリに保存し、次に、図形、イメージ、文字、表等の描画命令、改ページ命令をプリンタ記述言語で生成して外部メモリに保存する処理をページ数だけ繰り返し行い、グラフィックエンジン202から印刷終了要求を受信すると、最後に、ジョブの終了命令をプリンタ記述言語で生成し、外部メモリに保存する。
図8は、図1に示したプリンタドライバ203が生成する印刷ジョブデータのデータ構造の一例を示す模式図である。
図8に示すように、印刷ジョブデータは、丁合い印刷指定命令,部数設定命令,用紙サイズの指定命令,図形、イメージ、文字、表等の描画命令、改ページ命令、ジョブの終了命令等を含んでいる。
続いて、アプリケーション201は、指定部数分の印刷要求を完了すると、前述した取得しておいた印刷のために必要なハンドルの破棄要求をグラフィックエンジン202に対して行う(図5のステップS707に相当)。つまり、この時点で、アプリケーションは印刷要求が全て終了していることになり、プリンタドライバ203側では、部数のカウントと印刷ジョブの保存は完了しているので、プリンタドライバ203は、プリンタ1500へ印刷ジョブを送信する処理を実行することができる。以下、図9を用いて、プリンタドライバ203が保存した印刷ジョブをプリンタ1500に送信するための処理を説明する。
図9は、本発明の印刷制御装置における第3の制御処理手順の一例を示すフローチャートであり、プリンタドライバ203による印刷ジョブの送信処理に対応する。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるプリンタドライバ203をRAM2上で実行することにより実現される。また、図中S1101〜S1106は各ステップを示す。
まず、プリンタドライバ203は、アプリケーション201がグラフィックエンジン202に対してハンドルの破棄要求を行うと、プリンタドライバ203は、プリンタドライバ203が印刷処理を行う上で必要な情報を格納するメモリ領域のプリンタドライバ情報を破棄するための要求をグラフィックエンジン202より受信する(S1101)。
次に、プリンタドライバ203は、ステップS1101でプリンタドライバ情報破棄要求を受信した際、図7に示した印刷ジョブ保存処理により1部分の保存が完了した印刷ジョブデータをプリンタドライバ203がRAM2に確保したメモリ領域に読み込む(S1102)。
次に、プリンタドライバ203は、読み込んだ印刷ジョブデータの変換処理(詳細は後述する図10に示す)を行う(S1103)。
次に、プリンタドライバ203は、変更した印刷ジョブデータをプリントサブシステム204を介してプリンタ1500へ送信する処理を実行する。(S1104)
次に、印刷ジョブのプリンタ1500への送信が完了すれば、図9で示した印刷ジョブ保存処理において保存しておいた印刷ジョブデータは不要になるため、プリンタドライバ203は、保存しておいた印刷ジョブデータを破棄する。(S1105)
次に、プリンタドライバ203は、プリンタドライバ203が印刷処理を行う上で必要な情報を格納するメモリ領域のプリンタドライバ情報の破棄処理を行い(S1106)、本フローチャートの処理を終了する。
また、丁合い印刷を、1つの印刷ジョブで実現するためには、プリンタの制御コマンドにて、丁合い印刷を指定するための命令(丁合い印刷指定命令)を「ON」にすることと、部数を設定する命令(部数設定命令)にて出力する部数情報の設定を行う必要がある。そこで、以下に図10を参照して、図7のステップS807で説明した1部分の保存が完了した印刷ジョブを丁合い印刷を実現するための印刷ジョブに変換する処理について説明する。
図10は、本発明の印刷制御装置における第4の制御処理手順の一例を示すフローチャートであり、図9のステップS1103に示した印刷ジョブデータ変換処理に対応する。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるプリンタドライバ203をRAM2上で実行することにより実現される。また、図中S1201〜S1207は各ステップを示す。
図8で示した印刷ジョブデータは、プリンタ記述言語と呼ばれる印刷対象となるプリンタが解釈できるような決められた文法の命令群の集合である。そこでまず、プリンタドライバ203は、印刷ジョブデータの命令群の中から、部数を設定する命令(部数設定命令)を見つけ出すための検索を行う(S1201)。次に、検索した命令が部数を設定する命令(部数設定命令)かどうか確認する(S1202)。
ステップS1202で、プリンタドライバ203は、検索した命令が部数を設定する命令(部数設定命令)であると判断した場合には、その命令で指定する部数情報を、図6のステップS809の処理によりカウントしていた部数カウンタ(CP)の値に変更する(S1203)。
次に、プリンタドライバ203は、検索完了した(丁合い印刷を指定するための命令(丁合い印刷指定命令)の検索が既に終わっている)か否かを判断し(S1204)、検索完了したと判断した場合には、そのまま本フローチャートの処理を終了する。
一方、ステップS1204で、プリンタドライバ203が、検索完了していないと判断した場合には、ステップS1201の処理に戻る。
一方、ステップS1202で、プリンタドライバ203が、検索した命令が部数を設定する命令(部数設定命令)でないと判断した場合には、プリンタドライバ203は、検索した命令が丁合い印刷を指定するための命令(丁合い印刷指定命令)かどうか確認する(S1205)。
ステップS1205で、プリンタドライバ203は、検索した命令が丁合い印刷を指定するための命令(丁合い印刷指定命令)であると判断した場合には、丁合い印刷をプリンタで行うためのモードが有効になるように、丁合い印刷を指定するための命令(丁合い印刷指定命令)を「ON」に変更する(S1206)。
次に、プリンタドライバ203は、検索完了した(部数を設定する命令(部数設定命令)の検索が既に終わっている)か否かを判断し(S1207)、検索完了したと判断した場合には、そのまま本フローチャートの処理を終了する。
一方、プリンタドライバ203が、検索完了していないと判断した場合には、ステップS1201の処理に戻る。
一方、ステップS1205で、プリンタドライバ203が、検索した命令が丁合い印刷を指定するための命令(丁合い印刷指定命令)でないと判断した場合には、ステップS1201の処理に戻る。
なお、部数設定命令と丁合い印刷指定命令の検索順序はどちらが先でも良いことはいうまでもない。
以上説明したように、本実施形態のプリタンドライバ203は、受信したいずれかの印刷要求データから生成された印刷ジョブデータ内の部数設定命令を検索し、該検索されたにカウント値(CPの値)を設定するとともに、前記印刷ジョブデータ内の丁合い指示情報を検索し、該検索された丁合い印刷指示命令に丁合い印刷指示を有効とする情報(ON)を設定するように前記印刷ジョブデータを変更するものである。
従って、例えば、3ページのデータを3部印刷する場合に、アプリケーション201の処理によって[(1部)1−2−3],[(1部)1−2−3],[(1部)1−2−3](数字は、ページ数を表し、[ ]は1つのジョブを表し、また、( )は印刷ジョブ中に指定される部数を表す)のように、3つのジョブに分割されるような印刷要求データが発行されたとしても、プリンタドライバ203が該3つのジョブに分割されようとしている印刷要求から、[(丁合い印刷ON,3部)1−2−3]のような1つの印刷ジョブデータを生成するので、従来、アプリケーションから3つのジョブに分割して発行される印刷要求から生成される3つの印刷ジョブデータ([(1部)1−2−3],[(1部)1−2−3],[(1部)1−2−3])と、同じ部数の出力結果をプリンタ1500から得ることができる。
ところで、図4のステップS601で示したアプリケーション201が通知する印刷設定は、常に印刷処理中同じものが使われるわけではなく、アプリケーション201は印刷開始要求後に、例えば、1ページ目はA4用紙で、2ページ目の時点では、A3用紙に変更したい場合など印刷設定を変更したい場合、印刷しようとしている任意のページが変わるタイミングで変更することが可能となっている。
例えば、1ページ目の用紙サイズがA4、2ページ目の用紙サイズがA3、3ページ目の用紙サイズがB4の場合、1(A4)−2(A3)−3(B4)といった印刷ジョブが発行される(数字はページ数を表し、( )は用紙サイズを表す)。
このように、アプリケーション201が印刷設定を変更した場合、プリンタドライバ203が印刷処理を行うために必要なプリンタドライバ情報を保持するメモリ領域も更新されることになる。
以下、図11のフローチャートを用いて、アプリケーション201が印刷設定の変更要求をグラフィックエンジン202に対して行った場合のプリンタドライバ203の基本的な処理(印刷処理を行うために必要なプリンタドライバ情報を保持するメモリ領域を更新する処理)について説明する。
図11は、本発明の印刷制御装置における第5の制御処理手順の一例を示すフローチャートであり、アプリケーション201が印刷設定の変更要求をグラフィックエンジン202に対して行った場合のプリンタドライバ203の基本的な処理(印刷処理を行うために必要なプリンタドライバ情報を保持するメモリ領域を更新する処理)に対応する。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるプリンタドライバ203をRAM2上で実行することにより実現される。また、図中S1301〜S1306は各ステップを示す。
図12は、アプリケーション201が印刷設定を変更する場合の処理の流れを示すステータス図である。
以下、図11のフローチャートの処理に沿って説明する。
アプリケーション201がページの変わるタイミングで印刷設定を変更しようとした場合には、アプリケーション201は、変更する印刷設定の通知と印刷設定変更要求をグラフィックエンジン202に対して行う。これにより、プリンタドライバ203は、グラフィックエンジン202から送信される、変更する印刷設定の通知とプリンタドライバ初期化要求を受信する(図11のS1301,図12のステップS1405)。
次に、プリンタドライバ203は、設定変更後の印刷処理を行うために必要なRAM2上の確保されたメモリ領域(メモリ1)のプリンタドライバ情報の初期化を行い(図11のS1302)、設定変更後の印刷設定に応じたプリンタドライバ203の印刷能力をグラフィックエンジン202に通知する。(図12のS1406)
次に、グラフィックエンジン202が、それまで印刷に使用していた印刷のために必要なプリンタドライバ情報を保持しているメモリ領域(メモリ2)中の必要なプリンタドライバ情報をメモリ1に引き継ぐことができるタイミング(メモリ引継ぎ要求)を発行すると、プリンタドライバ203は、該メモリ引継ぎ要求をグラフィックエンジン202より受信する(図11のS1303,図12のステップS1407)。なお、上記メモリ1とメモリ2は同じフォーマットの情報領域を持つ。
以後の印刷処理では、メモリ2のプリンタドライバ情報は参照されなくなるため、グラフィックエンジン202から、プリンタドライバ203がそれまで印刷に使用していた印刷のために必要なプリンタドライバ情報を保持しているメモリ2のプリンタドライバ情報破棄要求が発行されると、プリンタドライバ203は、該プリンタドライバ情報破棄要求をグラフィックエンジン202より受信する(図11のS1305,図12のステップS1408)。
次に、プリンタドライバ203は、メモリ2のプリンタドライバ情報の破棄処理を実行し(S1306)、本フローチャートの処理を終了する。
つまり、アプリケーション201が印刷設定を変更する場合、図4で示したアプリケーション201,グラフィックエンジン202,プリンタドライバ203のステート図は、図12に示すようになる。その説明は、前述の図4と図12の説明と同様であるため詳細な説明は割愛する。
図9で示したように、プリンタドライバ203としては、プリンタドライバ203が印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域のプリンタドライバ情報を破棄するための要求をグラフィックエンジン203より受信した時点で保存しておいたジョブのプリンタ1500への送信処理を行うことになるが、上述した通り、アプリケーション201が印刷途中で印刷設定を変更しようとした場合にも、プリンタドライバ203は、メモリ領域のプリンタドライバ情報の破棄要求を受信してしまう。そのため、図9に示した処理のままでは、印刷ジョブの保存が完了していなくても印刷ジョブのプリンタ1500への送信処理を行おうとしてしまうため、印刷ジョブの送信処理を行わないように制御する必要がある。
つまり、プリンタドライバ203は、プリンタドライバ情報の破棄要求を受信したとき、それが、アプリケーション201の印刷設定変更要求によるものだった場合には、印刷ジョブのプリンタ1500への送信処理に実行しないように制御する必要がある。
以下、図13のフローチャートを用いて、アプリケーション201が印刷開始要求後、ページが変わるタイミングで、印刷設定の変更要求を行った場合のプリンタドライバ203による処理について説明する。
図13は、本発明の印刷制御装置における第6の制御処理手順の一例を示すフローチャートであり、アプリケーション201が印刷開始要求後、ページが変わるタイミングで印刷設定の変更要求を行った場合のプリンタドライバ203による処理に対応する。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるプリンタドライバ203をRAM2上で実行することにより実現される。また、図中S1501〜S1511は各ステップを示す。なお、図9のS1102〜S1105と、図13のS1508〜S1511とは同様のため、その説明は省略する。
アプリケーション201がグラフィックエンジン202に対して、印刷設定の変更要求を行った場合、プリンタドライバ203は、グラフィックエンジン202より変更対象の印刷設定を受信する(S1501)。
次に、プリンタドライバ203は、印刷設定を受信した際にプリンタドライバ203が印刷処理を行う上で必要なプリンタドライバ情報を格納するRAM2上に確保されたメモリ領域(メモリ1)を初期化する。メモリ1は、1部分の印刷ジョブを保存しているかどうかを判断するフラグ(SR1)を持ち、プリンタドライバ203は、SR1を「OFF」で初期化しておく(S1502)。
次に、プリンタドライバ203は、グラフィックエンジン202より、新たに印刷処理に使われるのに必要なプリンタドライバ情報を格納するメモリ領域(メモリ1)と、これまで印刷処理に使われていたプリンタドライバ情報を格納していたRAM2上に確保されているメモリ領域(メモリ2)を渡され、メモリ2からメモリ1へ必要なプリンタドライバ情報を引き継ぐための引継ぎ要求を受信する(S1503)。
次に、プリンタドライバ203は、メモリ2が持つ保存フラグ(SR2)をメモリ1が持つ保存フラグ(SR1)にコピーする。つまり、それまでの印刷処理において、1部分に印刷ジョブが保存されていれば、SR2には「ON」が設定されており、そのプリンタドライバ情報が以後の印刷処理に使われるSR1に引き継がれる。次に、SR2の設定は「OFF」にしておくように制御する。更に、メモリ2が持っていた部数カウンタCP2の値もメモリ1が持つ部数カウンタCP1にコピーしておく(S1504)。
次に、プリンタドライバ203は、グラフィックエンジン202より、それまでの印刷処理に使われていたメモリ2のプリンタドライバ情報の破棄要求を受信する(S1505)。
次に、プリンタドライバ203は、メモリ2が持つSR2の値を確認し(S1506)、メモリ2が持つSR2に「ON」が設定されている(SR2に「OFF」が設定されていない)と判断した場合には、保存した印刷ジョブをプリンタ1500への送信する処理(S1508〜S1511)を行うが、ここでの説明では、ステップS1504にて、SR2は「OFF」に設定されているため送信処理は行われず(ステップS1507に移行するため)、1部分の保存ジョブは維持されたままにできる。
次に、プリンタドライバ203は、メモリ2のプリンタドライバ情報破棄処理を行う(S1507)。
以下、図14のフローチャートを用いて、図6の処理に図13での処理を考慮した場合の処理について説明する。
図14は、本発明の印刷制御装置における第7の制御処理手順の一例を示すフローチャートであり、アプリケーション201が印刷開始要求後に、ページが変わるタイミングで印刷設定の変更要求を行うことを考慮したプリンタドライバ203による処理に対応する。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるプリンタドライバ203をRAM2上で実行することにより実現される。また、図中S1601〜S1615は各ステップを示す。なお、図6のステップS801〜S803と図14のステップS1601〜S1603とは同様のため、その説明は省略する。
プリンタドライバ203は、グラフィックエンジン202から印刷設定を受信した際、プリンタドライバが印刷処理を行う上で必要なプリンタドライバ情報を格納するRAM2上に確保されたメモリ領域を初期化する。このメモリ領域には、印刷部数をカウントしておく部数カウンタ(CP)が存在し、プリンタドライバ203は、この部数カウンタ(CP)を「0」で初期化しておく。また、同メモリ領域には1部分のジョブを保存したかどうかを判断する保存フラグ(SR)が存在し、プリンタドライバ203は、この保存フラグ(SR)を「OFF」で初期化しておく(S1604)。
次のステップS1605については、図6のステップS805と同様のため、その説明は省略する。
次に、プリンタドライバ203は、グラフィックエンジン202より、印刷開始要求を受信した場合、これから1部分のジョブの保存を開始するか、もしくは既に1部分のジョブは保存されているかを示すため、保存フラグ(SR)にONを設定し(S1606)、プリンタドライバ203は、1ページ分の印刷処理を開始する(S1607)。
続いてのステップS1608,S1609については、図6のステップS806,S807と同様のため、その説明は省略するが、ステップS1609では、1ページ分の印刷ジョブの保存処理のみを行うものとする。
ステップS1610において、プリンタドライバ203は、1ページ分の印刷処理を終了する。
アプリケーション201が印刷設定の変更要求をグラフィックエンジン202に対して行った場合、プリンタドライバ203は、グラフィックエンジン202より、変更対象の印刷設定を受信することになるため、ステップS1611において、プリンタドライバ203は、変更対象の印刷設定を受信したか否かを判断する。
ステップS1611で、プリンタドライバ203が、変更対象の印刷設定を受信したと判断した場合には、プリンタドライバ203は、印刷設定変更後の印刷処理を行う上で必要なプリンタドライバ情報を格納するRAM2上に確保されたメモリ領域(メモリ1)を初期化する。この時、ステップS1604と同様に、プリンタドライバ203は、このメモリ1に存在する部数カウンタ(CP<NEW>)は「0」で初期化するる。また、プリンタドライバ203は、同メモリ1に存在する保存フラグ((SR<NEW>)も「OFF」で初期化する(S1612)。
次に、プリンタドライバ203は、グラフィックエンジン202より、新たに印刷処理に使われるのに必要なプリンタドライバ情報を格納するメモリ領域(メモリ1)と、これまで印刷処理に使われていたプリンタドライバ情報を格納していたメモリ領域(メモリ2)を渡され、メモリ2からメモリ1へ必要なプリンタドライバ情報を引き継ぐための要求をグラフィックエンジン202より受信する(S1613)。
そして、プリンタドライバ203は、これまで印刷処理に使われていたプリンタドライバ情報を格納していたメモリ領域(メモリ2)が持つ保存フラグ(SR)をプリンタドライバが印刷設定変更後の印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域(メモリ1)が持つ保存フラグ(SR<NEW>)にコピーする。また、プリンタドライバ203は、保存フラグSRの設定を「OFF」にしておく。更に、後にメモリ2のプリンタドライバ情報は参照できなくなるため、プリンタドライバ203は、メモリ2が持っていた部数カウンタ(CP)の値もメモリ1が持つ部数カウンタ(CP<NEW>)にコピーしておく(S1614)。
次に、プリンタドライバ203は、グラフィックエンジン202より、これまで印刷処理に使われていたプリンタドライバ情報を格納していたメモリ領域(メモリ2)のプリンタドライバ情報を破棄するための要求(現在のプリンタドライバ情報破棄要求)を受信すると(S1615)、続いて、プリンタドライバ203は、これまで印刷処理に使われていたプリンタドライバ情報を格納していたメモリ領域(メモリ2)のプリンタドライバ情報を破棄するための処理(後述する図16に示すプリンタドライバ情報破棄処理)を実行し(S1616)、ステップS1617に移行する。なお、メモリ2のプリンタドライバ情報破棄後は、メモリ1が印刷処理を行う際に参照されることになるため、新たに印刷処理に使われるのに必要なプリンタドライバ情報を格納するメモリ領域(メモリ1)の部数カウンタ(CP<NEW>)や保存フラグ(SR<NEW>)は、印刷処理中に参照される部数カウンタ(CP)や保存カウンタ(SR)として扱われることになる。
次に、プリンタドライバ203は、印刷終了要求を受信したか否かを判断し(S1617)、受信していないと判断した場合(即ち、アプリケーション201が次のページの印刷処理を実施する場合)には、プリンタドライバ203は、次のページの印刷処理を行うため、ステップS1607に戻り、次のページを印刷するための処理を繰り返す。
一方、ステップS1617で、プリンタドライバ203が、印刷終了要求を受信したと判断した場合には、印刷終了するための処理(ステップS1618,S1619)を実行する。なお、図14内には示していないが、プリンタドライバ203は、ステップS1617において印刷終了要求を受信した際にも、印刷ジョブを終了させるために必要となるプリンタ記述言語の生成処理を行い、部数カウンタ(CP)が「0」であれば、該プリンタ記述言語を保存中の印刷ジョブに追加し、印刷ジョブの保存を完了することになる。ここで、ステップS1618,S1619については、図6のステップS809,S810と同様のため、その説明は省略する。
次に、図9の処理に図13での処理を考慮した場合の処理を図15で示すフローチャートを用いて説明する。
図15は、本発明の印刷制御装置における第8の制御処理手順の一例を示すフローチャートであり、アプリケーションによりハンドルの破棄要求が発生され、プリンタドライバ203がプリンタドライバ情報破棄要求を受信した場合の、アプリケーション201が印刷設定の変更要求を行うことを考慮した、プリンタドライバの処理に対応する。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるプリンタドライバ203をRAM2上で実行することにより実現される。また、図中S1701〜S1702は各ステップを示す。
まず、アプリケーション201がグラフィックエンジン202に対してハンドルの破棄要求を行うと、プリンタドライバ203は、プリンタドライバ203が印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域のプリンタドライバ情報を破棄するための要求をグラフィックエンジン202より受信する(S1701)。
次に、プリンタドライバ203は、これまで印刷処理に使われていたプリンタドライバ情報を格納していたメモリ領域のプリンタドライバ情報を破棄するための処理(後述する図16で示すプリンタドライバ情報破棄処理)を実施し(S1702)、本フローチャートの処理を終了する。
図16は、本発明の印刷制御装置における第9の制御処理手順の一例を示すフローチャートであり、図14のステップS1616,図15のステップS1702に示したプリンタドライバ情報破棄処理に対応する。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるプリンタドライバ203をRAM2上で実行することにより実現される。また、図中S1801〜S1806は各ステップを示す。
まず、プリンタドライバ203は、プリンタドライバ203が印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域に保持する保存フラグ(SR)に「ON」が設定されているか否かを判断し(S1801)、「ON」に設定されていない(「OFF」に設定されていると判断した場合には、アプリケーション201から印刷処理が継続中であることを表すため、ステップS1806に処理を移行し、プリンタドライバ203は、印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域のプリンタドライバ情報の破棄処理のみを行い、本フローチャートの処理を終了する。
一方、ステップS1801で、プリンタドライバ203が、プリンタドライバ203が印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域に保持する保存フラグ(SR)に「ON」が設定されていると判断した場合には、アプリケーション201の印刷要求が全て終わっていることになるので、プリンタドライバ203は、1部分の印刷ジョブをプリンタに送信するための処理を実行することになり、図14のステップS1609で示した1部分の保存が完了した印刷ジョブを、プリンタドライバ203が確保したメモリ領域に読み込む(S1802)。
続く、ステップS1803〜S1806の処理は、図9のステップS1103〜S1106と同様であるので、その説明は省略する。
従って、アプリケーション201が印刷開始要求後に印刷設定を変更する場合にも、保存フラグ(SR)の判断により、プリンタドライバ203は、印刷ジョブの保存中にはプリンタ1500への印刷ジョブの送信処理を行わずに、アプリケーション201からの印刷処理が全て完了し、印刷ジョブが完成した段階で適切にプリンタ1500への印刷ジョブの送信処理を行うことができる。
以上説明したように、本実施形態のプリントドライバ203は、印刷要求データの終了(図14のS1617でYes相当)前にプリンタドライバ破棄要求を受信した場合(図14のS1615に相当)には、印刷ジョブデータの送信(図16)は行わず、前記印刷要求データの終了後に前記破棄要求を受信するまで(図14のS1619がNoになるまで)、前記印刷要求データのカウントを続行する(図14のステップS1606〜S1619を繰り返す)ものである。
以上、実施形態例を詳述したが、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、LAN,WAN等のネットワークを介して接続がなされ処理が行われるシステムであっても本発明を適用できることはいうまでもない。
また、本発明は、丁合い印刷に関するものであるが、例え、印刷しようとしているアプリケーションの文書データが1ページだけで構成されるものであっても適用できることはいうまでもない。
〔他の実施形態〕
上述の図10で示した印刷ジョブの変換処理において、図7で示した印刷ジョブを保存する時点では、図6又は図14に示した処理が実行されているため、プリンタドライバ203は、プリンタに丁合い印刷を指示することは分かっている。
そのため、この印刷ジョブを保存する時点で、丁合い印刷を指示する命令を「ON」にして印刷ジョブデータを生成しておいてもよい。より具体的に示すと、プリンタドライバ203は、RAM2のメモリ領域に格納される印刷設定情報等に基づいて、丁合い印刷指定命令,部数設定命令,用紙サイズ(及び用紙向き)の指定命令等をプリンタ記述言語で生成する際に、丁合い印刷指定命令を「ON」として生成するようにする。この場合、図10に示したフローチャートは、図17のフローで示すように、印刷ジョブに変換するために必要なプリンタ記述言語による印刷ジョブの変更処理は、部数を設定する命令を変更する処理だけとなる。その場合の処理を図17のフローチャートを用いて説明する。
図17は、本発明の印刷制御装置における第10の制御処理手順の一例を示すフローチャートであり、図14のステップS1616,図15のステップS1702に示したプリンタドライバ情報破棄処理に対応する。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるプリンタドライバ203をRAM2上で実行することにより実現される。また、図中S1901〜S1903は各ステップを示す。
まず、プリンタドライバ203は、印刷ジョブデータの命令群の中から、部数を設定する命令(部数設定命令)を見つけ出すための検索を行う(S1901)。次に、検索した命令が部数を設定する命令(部数設定命令)かどうか確認する(S1902)。
ステップS1902で、プリンタドライバ203は、検索した命令が部数を設定する命令(部数設定命令)であると判断した場合には、その命令で指定する部数情報を、図6のステップS809又は図14のステップS1608の処理によりカウントしていた部数カウンタ(CP)の値に変更し(S1903)、本フローチャートの処理を終了する。
一方、ステップS1902で、プリンタドライバ203が、検索した命令が部数を設定する命令(部数設定命令)でないと判断した場合には、ステップS1901の処理に戻り、検索処理を繰り返す。
さらに、図10や図17で示した印刷ジョブデータ変換処理において、検索処理を行わず、図7で示した印刷ジョブを保存していく過程で、部数を設定する命令(部数設定命令)や丁合い印刷を指示する命令(丁合い印刷指定命令)を保存する際に、保存ジョブの先頭からのオフセット等、その命令を保存した位置を、プリンタドライバ203が印刷処理を行う上で必要なプリンタドライバ情報を格納するメモリ領域に記憶しておき、図9のステップS1103又は、図13のステップS1509、図16のステップS1803の印刷ジョブデータ変換処理時に、上記記憶した位置(部数設定命令保存位置,丁合い印刷指示命令保存位置)にあるプリンタ記述言語(部数設定命令,丁合い印刷指示命令)を直接変更するように構成してもよい。その場合、図7で示す印刷ジョブの保存処理のフローは、以下、図18に示すフローチャートの処理となる。
図18は、本発明の印刷制御装置における第11の制御処理手順の一例を示すフローチャートであり、図6のステップS807,図14のステップS1609に示した印刷ジョブの保存処理に対応する。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるプリンタドライバ203をRAM2上で実行することにより実現される。また、図中S2001〜S2006は各ステップを示す。
ステップS2001,S2002は、図7で示したステップS901,S902と同様であるため、その説明は省略する。
次に、プリンタドライバ203は、ステップS2002で保存したプリンタ記述言語が、部数を設定する命令(部数設定命令)だったか否かを確認し(S2003)、部数を設定する命令(部数設定命令)だったと判断した場合には、プリンタドライバ203は、その命令を保存しているジョブのどの位置に保存したかの情報を、部数設定命令位置として、プリンタドライバ203が印刷処理を行う上で必要な情報を格納するメモリ領域に設定する(S2004)。
一方、ステップS2003で、プリンタドライバ203は、ステップS2002で保存したプリンタ記述言語が、部数を設定する命令(部数設定命令)でなかったと判断した場合には、プリンタドライバ203は、ステップS2002で保存したプリンタ記述言語が、丁合い印刷を指示する命令(丁合い印刷指示命令)だったか否かを確認する(S2005)。
ステップS2005で、プリンタドライバ203が、ステップS2002で保存したプリンタ記述言語が、丁合い印刷を指示する命令(丁合い印刷指示命令)だったと判断した場合には、プリンタドライバ203は、その命令を保存しているジョブのどの位置に保存したかの情報を丁合い印刷指示命令位置として、格納するメモリ領域に設定する(S2006)。
一方、ステップS2005で、プリンタドライバ203が、ステップS2002で保存したプリンタ記述言語が、丁合い印刷を指示する命令(丁合い印刷指示命令)でなかったと判断した場合には、丁合い印刷指示命令位置の記憶は行わない。
従って、プリンタドライバ203は、印刷ジョブデータの変換処理時には、プリンタドライバ203が印刷処理を行う上で必要な情報を格納するメモリ領域を参照し、そこに設定された位置情報を元に、部数設定命令と丁合い印刷指示命令に対応するプリンタ記述言語を置き換えればよいだけとなる。
以上説明したように、本実施形態のプリンタドライバ203は、印刷ジョブデータの生成時に、前記印刷ジョブデータ内の部数設定命令位置,丁合い印刷指示命令位置とをRAM2内の印刷処理を行う上で必要な情報を格納するメモリ領域に記憶しておき、該記憶される前記印刷ジョブデータ内の部数設定命令位置,丁合い印刷指示命令位置に、部数カウンタ(CP)のカウント値,丁合い印刷指示を有効にする情報を設定するように前記印刷ジョブデータを変更するものである。
また、図17で示したように、印刷ジョブを保存する時点で、丁合い印刷を指示する命令を「ON」として発行しておく場合においては、部数設定命令の位置情報のみを記憶しておき、印刷ジョブデータの変換処理時には、プリンタドライバ203が印刷処理を行う上で必要な情報を格納するメモリ領域を参照し、そこに設定された位置情報を元に、部数設定命令に対応するプリンタ記述言語を置き換えればよいことはいうまでもない。
また、プリンタドライバ203は、図7に示した印刷ジョブを保存していく過程で、部数設定命令や丁合い印刷指定命令を保存せず、図10で示した印刷ジョブデータ変換処理、プリンタ1500が丁合い印刷を実現するために必要な箇所に該プリンタ記述言語を追加するように構成してもよい。
また、図7で示した処理により保存される印刷ジョブは、1部分のみとしたが、プリンタドライバ203は、図6のステップS806や図14のステップS1608の判断を行わず、常に、図6のステップS807や図14のステップS1609の処理を行うようにし、全部数のジョブを個々に保存し、その中から1つだけを選択して印刷ジョブデータの変換処理を施した上で、プリンタ1500への送信処理を行うように構成してもよい。つまり、プリンタドライバ203は、印刷開始要求を受信した場合、常に、新たに保存ジョブを作成していくことで、最終的には部数分の保存ジョブが作成されることになる。その場合、図6で示したフローチャートの処理は、図19に示すフローチャートの処理となる。
図19は、本発明の印刷制御装置における第12の制御処理手順の一例を示すフローチャートであり、図1に示したホストコンピュータ3000上で実行されるプリンタドライバ203による部数をカウントする処理と印刷ジョブを保存する処理に対応する。なお、このフローチャートの処理は、図1に示したホストコンピュータ3000のCPU1が外部メモリ11に記憶されるプリンタドライバ203をRAM2上で実行することにより実現される。また、図中S801〜S805,S807,S808,S810は各ステップを示す。
各ステップS801〜S805,S807,S808,S810は、図6と同様のため、その説明は割愛する。
図19のフローチャートの処理により、保存ジョブの量が増えることにより、スループットの低下が予想されるが、丁合い印刷実現のために、それぞれのジョブは同一のはずであり、それぞれのジョブが同一に作成できたかどうかの確認を厳密に行うことが可能である。
また、その場合、図6のステップS809で示すように印刷終了要求の受信回数を部数カウンタ(CP)によりカウントアップすることにより保存したジョブ数をカウントするステップを設けてもよいが、部数カウンタ(CP)の参照は行わず、図10のステップS1203や図17のステップS1903において、部数を設定する命令の部数情報を変換する時点で、保存された印刷ジョブの保存数を確認(カウント)し、その確認した印刷ジョブの保存数で印刷ジョブデータ変換を行ってもよい。
また、図19のフローチャートは、図6のフローの変形として説明したが、図14のフローについても同様に変形して実行することが可能である。
即ち、プリンタドライバ203は、図14のステップS1608の判断を行わず、常に、図14のステップS1609の処理を行うようにし、全部数のジョブを個々に保存し、その中から1つだけを選択して印刷ジョブデータの変換処理を施した上で、プリンタ1500への送信処理を行うように構成する。
なお、上記実施形態では、プリンタ1500が、印刷部数と丁合い印刷を指定した印刷ジョブデータを受信した場合に、プリンタ1500側で、前記印刷ジョブデータに設定された印刷部数の丁合い印刷処理もしくは印刷部数分の排紙トレイを使って文書単位の仕分け印刷処理を実行可能なプリンタである場合について説明したが、本実施形態のプリンタドライバ203は、プリンタの機能情報をプリンタから取得し(又は、予めプリンタドライバの詳細情報に設定しておき、該詳細情報から取得し)、該プリンタがプリンタ側で前記丁合い印刷処理,前記仕分け印刷処理のいずれも実行できないプリンタであると判断した場合には、指定部数の丁合い印刷を行うために1部の印刷を行うための印刷要求を前記指定部数分生成するアプリケーションプログラムにより連続して生成される前記印刷要求データを受信した場合でも、印刷ジョブデータのカウント,変換は行わず、各印刷要求データ毎に印刷ジョブデータを生成し、指定印刷部数分の印刷ジョブデータをプリンタに送信するように構成してもよい。
これにより、前記丁合い印刷機能や前記仕分け印刷機能がオプション機能となっているプリンタにおいて、該オプション機能が搭載されていないプリンタにも適用可能とすることができ、後付けで前記丁合い印刷機能や前記仕分け印刷機能のオプションを搭載した後も、同一のプリンタドライバにより、該プリンタ側の丁合い印刷機能や仕分け印刷機能を用いた丁合い印刷を行うことができる。
なお、図3に示したプリントサーバコンピュータ4000に上述したプリンタドライバ203と同等の機能を備えるように構成してもよい。
詳細には、従来のプリンタドライバにより、指定部数の丁合い印刷を行うために1部の印刷を行うための印刷要求を前記指定部数分生成するアプリケーションプログラムにより連続して生成される前記印刷要求データから各印刷要求データ毎に生成され送信される前記指定部数分の印刷ジョブデータを、プリントサーバコンピュータ4000が受信した場合に、該プリントサーバコンピュータ4000は、該受信した前記指定部数分の印刷ジョブデータをカウントし、いずれか1つの印刷ジョブデータを選択し、該選択した印刷ジョブデータの部数設定命令に前記カウント値を変更設定するとともに、前記印刷ジョブデータの丁合い印刷指示命令として丁合い印刷指示を有効とする情報(ON)を変更設定するように前記いずれかの印刷ジョブデータを変更し、該変更した印刷ジョブデータのみを、プリントサーバコンピュータ4000のプリントサブシステムを介してプリントサーバコンピュータ4000にローカル接続されるプリンタ1500に送信するように構成してもよい。
なお、上記各実施形態及び各変形例のいずれか又は全てを合わせた構成も全て本発明に含まれるものである。
以上、各実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
以上説明したように、丁合い印刷機能もしくは、複数の排紙トレイを使って文書単位の仕分け印刷を機能として有するプリンタと、そのプリンタに接続されたパーソナルコンピュータ等の情報処理装置からなるシステムにおいて、アプリケーションが丁合い印刷を実現するために、同じ内容の印刷ジョブが複数分割されるような印刷要求を行ってくる場合に、アプリケーションが丁合い印刷のために、部数分生成しようとしている印刷ジョブ数を判断し、生成しようとしている部数分の印刷ジョブの中から1部分の印刷ジョブを取り出して保存し、1ジョブで丁合い印刷を実現するために、前記保存した印刷ジョブの部数設定情報を、アプリケーションが部数分生成しようといていた印刷ジョブ数に変更設定し、プリンタで丁合い印刷を実行するために、前記保存した印刷ジョブの丁合い印刷指示情報を、プリンタに丁合い印刷を指示する情報に変更設定して、指定部数を丁合い印刷する1つの印刷ジョブデータとしてプリンタに送信することを可能にすることにより、指定部数の丁合い印刷指示を、部数分のジョブに分割して丁合い印刷を実現しようとするアプリケーションの仕様に関わらず、プリンタの有する丁合い印刷機能を用いて前記指定部数の丁合い印刷を実行することができ、指定部数の丁合い印刷を実現するために1部に設定された同じ内容の印刷ジョブが複数に分割されてプリンタに送信されてしまうことに起因する従来の各種問題点を解決することができる。
従って、丁合い印刷のために部数分の印刷ジョブが分けられるようなアプリケーションプログラムからの印刷要求に対し、1ジョブでその部数の丁合い印刷を実現することができる等の効果を奏する。
以下、図20に示すメモリマップを参照して本発明に係る印刷制御装置であるホストコンピュータ3000等の情報処理装置で読み取り可能なデータ処理プログラムの構成について説明する。
図20は、本発明に係る印刷制御装置であるホストコンピュータ3000等の情報処理装置で読み取り(読み出し)可能な各種データ処理プログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報,作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
本実施形態における図6,図7,図9,図10,図11,図13,図14,図15,図16,図17,図18,図19に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD−ROMやフラッシュメモリやFD等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。