JP2023048503A - プリンタ - Google Patents
プリンタ Download PDFInfo
- Publication number
- JP2023048503A JP2023048503A JP2021157852A JP2021157852A JP2023048503A JP 2023048503 A JP2023048503 A JP 2023048503A JP 2021157852 A JP2021157852 A JP 2021157852A JP 2021157852 A JP2021157852 A JP 2021157852A JP 2023048503 A JP2023048503 A JP 2023048503A
- Authority
- JP
- Japan
- Prior art keywords
- raster
- area
- data
- management
- printing
- 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.)
- Pending
Links
Images
Landscapes
- Record Information Processing For Printing (AREA)
- Storing Facsimile Image Data (AREA)
Abstract
【課題】コレート印刷が可能なプリンタであって、ページ数が多い画像データに対するコレート印刷を行う場合であっても、メモリフルにならずに処理を継続できる可能性を高める技術を提供すること。【解決手段】プリンタ1は、取得したPDLデータをラスタライズしてラスタデータをラスタ領域51に記憶し、1つのラスタ領域51に1つの管理領域41を割り当てる。プリンタ1は、コレート印刷ではない場合、ラスタデータを読み出して印刷した後、管理領域41に記憶されているデータを消去し、ラスタデータをラスタ領域51から消去し、コレート印刷の場合、1部目の印刷が終了しても管理領域41に記憶されているデータやラスタデータを消去しない。プリンタ1は、ラスタデータを記憶する際、データが記憶されていない管理領域41が無くコレート印刷の場合、新たな管理領域41をメモリ12に確保し、新たな管理領域41に新たなラスタ領域51を割り当てる。【選択図】図8
Description
本明細書に開示される技術分野は、複数ページ分の画像データに基づく部単位の印刷が可能なプリンタに関する。
従来、複数ページ分の画像データに基づく部単位の印刷である、いわゆるコレート印刷(あるいはソート印刷、丁合印刷)と呼ばれる印刷が可能なプリンタが実用化されている。例えば特許文献1には、コレート印刷が可能なプリンタであって、中間データに展開してメモリに記憶する途中にメモリフルが発生した場合に、それまで記憶した中間データに基づくコレート印刷を行った後、印刷済みの中間データをメモリから消去し、残りの中間データをメモリに記憶して処理を継続することで、できるだけコレート印刷に近づける構成が開示されている。
特許文献1に開示されているように、コレート印刷の場合、プリンタでは、複数ページ分の画像データをメモリに記憶する必要があり、メモリフルによって処理の継続が困難になるという問題がある。特許文献1では、メモリフルが発生した段階で印刷を開始することでメモリを解放して処理を継続させているが、この場合、途中のページまでのコレート印刷になり、ユーザの所望する印刷順序にはならない。そのため、コレート印刷を継続させるための処理には、改善の余地がある。
本明細書は、コレート印刷が可能なプリンタであって、ページ数が多い画像データに対するコレート印刷を行う場合であっても、メモリフルにならずに処理を継続できる可能性を高める技術を開示する。
この課題の解決を目的としてなされたプリンタは、メモリを備えるプリンタであって、前記プリンタは、印刷対象の画像を示す画像データを取得し、取得された前記画像データをラスタライズしてラスタデータを生成し、生成された前記ラスタデータを一定サイズのブロック単位で前記メモリに記憶し、さらに前記プリンタは、前記ラスタデータの前記メモリへの記憶に先立って所定数の管理領域を前記メモリに確保し、さらに前記ラスタデータの記憶用に複数のラスタ領域を前記メモリに確保し、1つの前記ラスタ領域に対して1つの前記管理領域を割り当て、1ブロック分の前記ラスタデータを前記ラスタ領域の1つに記憶する場合に、その1つの前記ラスタ領域に前記1ブロック分の前記ラスタデータが記憶されていることを示す管理データを、その1つの前記ラスタ領域に割り当てられた前記管理領域に記憶し、さらに前記プリンタは、前記管理データによって前記ラスタ領域を特定し、特定された前記ラスタ領域に記憶されている1ブロック分の前記ラスタデータを読み出し、読み出された前記ラスタデータに示される画像を印刷し、さらに前記プリンタは、部単位での印刷が指定されていない場合、読み出された前記ラスタデータに示される画像の印刷が完了した後、第1管理領域に記憶されている前記管理データを消去し、第1ラスタデータを第1ラスタ領域から消去し、前記第1ラスタデータは、印刷された前記ラスタデータであり、前記第1ラスタ領域は、印刷のために前記第1ラスタデータが読み出された前記ラスタ領域であり、前記第1管理領域は、前記第1ラスタ領域に割り当てられた前記管理領域であり、部単位での印刷が指定されている場合、読み出された前記ラスタデータに示される画像の1部目の印刷が完了しても、前記管理データおよび前記ラスタデータを消去せず、前記管理データおよび前記ラスタデータを2部目以降の印刷に利用し、指定された部数の印刷が完了した後、前記第1管理領域に記憶されている前記管理データを消去し、前記第1ラスタデータを前記第1ラスタ領域から消去し、さらに前記プリンタは、生成された前記ラスタデータを前記ラスタ領域に記憶する処理において、前記管理データが記憶されていない前記管理領域を特定し、特定された前記管理領域が割り当てられた前記ラスタ領域に、生成された前記ラスタデータを記憶し、前記管理データが記憶されていない前記管理領域が無く、かつ部単位での印刷が指定されていない場合、複数の前記管理領域に記憶される前記管理データのいずれかの消去を待ち、前記管理データが消去された場合に、前記管理データが消去された前記管理領域が割り当てられた前記ラスタ領域に、生成された前記ラスタデータを記憶し、前記管理データが記憶されていない前記管理領域が無く、かつ部単位での印刷が指定されている場合、新たな前記管理領域を前記メモリに確保し、新たな前記管理領域にも、新たな前記ラスタ領域を割り当て、新たな前記管理領域が割り当てられた新たな前記ラスタ領域に、生成された前記ラスタデータを記憶する、ことを特徴としている。
本明細書に開示されるプリンタは、管理領域とラスタ領域とをメモリに確保し、部単位の印刷では、指定された部数の印刷が完了するまでラスタデータをラスタ領域に保持し続ける。そして、所定数の管理領域を全て使っている場合には、プリンタは、新たな管理領域を確保し、その新たな管理領域によって新たに割り当てられたラスタ領域にラスタデータを記憶する。これにより、管理領域が不足することで処理を継続できない状況の発生を低減でき、部単位の印刷の処理を継続できる可能性が高まる。
上記プリンタの機能を実現するための制御方法、コンピュータプログラム、および当該コンピュータプログラムを格納するコンピュータにて読取可能な記憶媒体も、新規で有用である。
本明細書に開示される技術によれば、コレート印刷が可能なプリンタであって、ページ数が多い画像データに対するコレート印刷を行う場合であっても、メモリフルにならずに処理を継続できる可能性を高める技術が実現される。
以下、本実施の形態にかかるプリンタについて、添付図面を参照しつつ詳細に説明する。本形態は、コレート印刷が可能なプリンタを開示するものである。
本形態のプリンタ1は、図1に示すように、CPU11と、メモリ12と、を含むコントローラ10を備えている。また、プリンタ1は、ユーザインタフェース(以下、「ユーザIF」とする)13と、通信インタフェース(以下、「通信IF」とする)14と、印刷エンジン15と、を備え、これらがコントローラ10に電気的に接続されている。
CPU11は、メモリ12から読み出したプログラムに従って、また、ユーザの操作に基づいて、各種の処理を実行する。なお、図1中のコントローラ10は、プリンタ1の制御に利用されるハードウェアやソフトウェアを纏めた総称であって、実際にプリンタ1に存在する単一のハードウェアを表すとは限らない。
本形態のプリンタ1のメモリ12には、各種のプログラムや各種のデータが記憶されている。メモリ12は、各種の処理が実行される際の作業領域としても利用される。CPU11が備えるバッファも、メモリの一例である。メモリ12に記憶されるプログラムやデータについての詳細は、後述する。
メモリ12の一例は、プリンタ1に内蔵されるROM、RAM、HDD等に限らず、CPU11が読み取り可能かつ書き込み可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、non-transitoryな媒体である。non-transitoryな媒体には、上記の例の他に、CD-ROM、DVD-ROM等の記憶媒体も含まれる。また、non-transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non-transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。
ユーザIF13は、例えば、タッチパネルであり、ユーザに情報を報知するための画面を表示するハードウェアと、ユーザによる操作を受け付けるハードウェアと、を含む。ユーザIF13は、表示部と操作ボタンとの組み合わせであっても良い。
通信IF14は、パーソナルコンピュータ(以下、「PC」とする)3等の外部デバイスと通信を行うためのハードウェアを含む。通信IF14の通信規格は、イーサネット(登録商標)、Wi-Fi(登録商標)、USBなどである。プリンタ1は、複数の通信規格に対応する複数の通信IF14を備えていてもよい。
印刷エンジン15は、シート等の印刷媒体に画像を印刷するための構成を含む。印刷エンジン15の画像形成方式は、例えば、電子写真方式である。本形態のプリンタ1は、カラー印刷が可能であっても良いし、モノクロ印刷のみを行う構成であっても良い。
本形態のプリンタ1は、例えば、図1に示すように、PC3と接続され、PC3から画像データを含む印刷ジョブを受信する。PC3は、例えば、図1に示すように、プリンタ1に対応するプリンタドライバ31を備えている。プリンタドライバ31は、ユーザの指示に基づいて、プリンタ1に印刷させるための印刷ジョブを生成するプログラムである。また、PC3は、プリンタドライバ31の機能を利用してプリンタ1に印刷を実行させるためのアプリケーションプログラムを備えている。
例えば、図2に示すように、PC3のプリンタドライバ31にて生成されてプリンタ1に渡される印刷ジョブ200は、印刷に関するパラメータを示すPJLデータ201、203と、印刷対象の画像を示す画像データであるPDLデータ202と、を含む。PDLデータ202は、例えば、PCLXL、PDF等の形式のデータである。PDLデータは、画像データの一例である。なお、プリンタ1での印刷対象となる画像データは、PC3等から送信される印刷ジョブに限らず、スキャナ、クラウドサーバ、USBメモリ等から取得したPDLデータであっても良い。
次に、プリンタ1の動作について、シーケンス図およびフローチャートを参照して説明する。なお、以下の処理は、基本的に、プログラムに記述された命令に従ったCPU11の処理を示す。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「取得」、「受付」、「制御」等の処理は、CPU11の処理を表している。CPUによる処理は、OSのAPIを用いたハードウェア制御も含む。本明細書では、OSの記載を省略して各プログラムの動作を説明する。すなわち、以下の説明において、「プログラムBがハードウェアCを制御する」という趣旨の記載は、「プログラムBがOSのAPIを用いてハードウェアCを制御する」ことを指してもよい。また、プログラムに記述された命令に従ったCPU11の処理を、省略した文言で記載することがある。例えば、「CPU11が行う」のように記載することがある。また、プログラムに記述された命令に従ったCPU11の処理を、「プログラムAが行う」のようにCPUを省略した文言で記載することがある。
なお、「取得」は要求を必須とはしない概念で用いる。すなわち、CPU11が要求することなくデータを受信するという処理も、「CPUがデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「要求する」、「指示する」とは、要求していることを示す情報や、指示していることを示す情報を相手に出力することを示す概念である。また、要求していることを示す情報や指示していることを示す情報のことを、単に、「要求」、「指示」とも記載する。
また、CPU11による、情報Aは事柄Bであることを示しているか否かを判断する処理を、「情報Aから、事柄Bであるか否かを判断する」のように概念的に記載することがある。CPU11による、情報Aが事柄Bであることを示しているか、事柄Cであることを示しているか、を判断する処理を、「情報Aから、事柄Bであるか事柄Cであるかを判断する」のように概念的に記載することがある。
本形態のプリンタ1は、印刷のための機能として、図3に示すように、ラスタデータ作成部21と、ラスタデータ管理部22と、システムメモリ管理部23と、エンジン制御部24と、ジョブ管理部25と、を備えている。これらの各部は、ソフトウェアで構成されていても良いし、ハードウェアで構成されていても良いし、ソフトウェアとハードウェアとの組み合わせであっても良い。また、各部は、それぞれ個別のプログラムであっても良いし、プログラムの一部であっても良いし、プログラム群であっても良い。
ラスタデータ作成部21は、PDLデータを含む印刷ジョブを受信した場合、PDLデータをラスタライズしてラスタデータを作成する。ラスタデータ作成部21は、カラー印刷の印刷ジョブであれば、RIP後のデータに色変換処理等を実行することでラスタデータを作成する。ラスタデータ作成部21は、モノクロ印刷の印刷ジョブであれば、RIP後のデータにディザ処理等を実行することでラスタデータを作成する。ラスタデータ作成部21は、起動時に、ラスタライズを行うためのメモリ領域の確保をシステムメモリ管理部23に要求する。
ラスタデータ管理部22は、ラスタデータ作成部21によって作成されるラスタデータを管理する。ラスタデータ管理部22は、例えば、ラスタデータの記憶に必要なメモリサイズを指定して、システムメモリ管理部23にメモリ領域の確保を要求する。
システムメモリ管理部23は、プリンタ1の各プログラムから、メモリに関する処理の要求を受け付け、要求に応じた処理を行う。メモリに関する処理としては、例えば、メモリ領域の確保、確保されているメモリ領域の解放、メモリへのデータの書き込み、メモリからのデータの読み出し、メモリからのデータの消去、がある。
システムメモリ管理部23は、メモリ領域の確保の要求を受け付けると、要求されたサイズのメモリを確保された領域として登録する。システムメモリ管理部23は、確保された領域として登録した場合、その領域に対して、確保を要求した要求元のプログラムからの書き込みや読み出しの要求を受け付けた場合には、要求に従った処理を行い、他のプログラムからの要求を受け付けても、要求に従った処理を実行しない。システムメモリ管理部23は、メモリ領域の確保に成功した場合、確保されたメモリ領域のアドレスとサイズを、確保を要求した要求元のプログラムに提供する。なお、要求元のプログラムは、確保されたメモリ領域への処理をシステムメモリ管理部23に要求する場合、提供されたアドレスを指定する。
ラスタデータ管理部22は、起動時に、所定サイズの領域の確保をシステムメモリ管理部23に要求し、印刷に利用する管理領域41(図1参照)を準備する。ラスタデータ管理部22は、確保されたメモリ領域のアドレスとサイズの情報をシステムメモリ管理部23から受け取った場合、システムメモリ管理部23に要求することで、その確保された領域を管理領域41とするための管理情報を書き込む。これにより、図1に示したように、所定数の管理領域41がメモリ12に確保される。なお、各管理領域41は、後述するように、その領域が使用中であるか否かを示す使用フラグを含む。ラスタデータ管理部22は、起動時に確保した各管理領域41に、「未使用」を示す使用フラグを書き込む。
管理領域41は、ラスタデータの記憶用の領域であるラスタ領域の情報を管理するための領域である。管理領域41は、いずれも同じデータサイズの領域であって、各種の印刷にて利用される領域であり、直ぐに利用できるようにあらかじめメモリ12に所定数確保され、後述するように、同じ領域が繰り返し使用される。メモリ12は、印刷の他、スキャンやUIで利用されるため、本形態のプリンタ1は、初めから多くの管理領域41を確保せず、起動時に、例えば、数千個の管理領域41を確保する。
エンジン制御部24は、作成されたラスタデータを印刷エンジン15に渡すことで、印刷を実行させる。なお、プリンタ1の起動時には、エンジン制御部24は、初期処理を行った後、指示待ちの状態となる。
本形態のプリンタ1は、PC3等からデータを受信した場合、受信したデータを図示しない入力バッファに記憶する。また、プリンタ1は、通信IF14の1つであるUSBメモリIFにUSBメモリが装着された場合、装着されたUSBメモリに記憶されているデータを読み込み、図示しない入力バッファに記憶する。
ジョブ管理部25は、入力バッファにデータが記憶されると、記憶されたデータを順に解析し、データの切れ目を見つけ、切れ目の次のデータが、どの形式のデータであるかを判断する。どの形式のデータであるかの判断には、そのデータが印刷ジョブであるか否かの判断も含まれる。ジョブ管理部25は、受信したデータを解析して印刷ジョブであると判断した場合、印刷ジョブにジョブIDを割り当て、割り当てたジョブIDをジョブリストに追記する。ジョブリストには、ジョブ管理部25によって追記された順に、ジョブIDが記憶される。なお、ジョブ管理部25は、例えば、プリンタ1の起動時に、システムメモリ管理部23に要求することで、ジョブリスト用のメモリ領域を確保する。
次に、印刷ジョブを受信した場合のプリンタ1の動作について、図4のシーケンス図を参照して説明する。プリンタ1がデータを受信し、受信したデータがPDLデータを含む印刷ジョブである場合、ラスタデータ作成部21にはジョブ管理部25からラスタライズ要求が渡される(P01)。プリンタ1は、例えば、図2に示した印刷ジョブ200を受信した場合、PJLデータ201を用いてPDLデータ202をラスタライズしてラスタデータを作成する。
ジョブ管理部25は、ジョブリストの順序に従って、ラスタデータ作成部21にラスタライズ要求を渡す。なお、ラスタライズ要求は、ジョブ管理部25に限らず、ジョブ管理部25からの指示に基づいて、別のプログラムモジュールがラスタデータ作成部21に渡しても良い。また、新たなジョブIDがジョブリストに追加されたことを検知した場合に、別のプログラムモジュールが、ラスタライズ要求をラスタデータ作成部21に渡すとしても良い。
ラスタデータ作成部21は、ラスタライズ要求を受け付けたジョブを順に解析し、ラスタデータを作成するための処理を開始する(P02)。なお、処理対象のジョブにコレート印刷の指示が含まれている場合、ラスタデータ作成部21は、コレート印刷を示す情報と、その印刷部数を示す情報である部数情報と、をメモリ12に記憶する。
コレート印刷は、複数ページの印刷物を複数部形成する場合の、部単位で出力する方式の印刷である。例えば、図2に示した印刷ジョブ200では、PJLデータ201に、3部のコレート印刷の指示を示す「SET QTY=3」コマンド210が含まれる。コマンド210は、部単位の印刷を示すコマンドの一例である。
なお、プリンタ1は、コレート印刷の指示をユーザIF13を介して受け付けても良い。プリンタ1は、例えば、プリンタ1に装着されたUSBメモリから印刷データを取得する場合、ユーザIF13にて印刷部数の指定を受け付ける。プリンタ1は、ユーザIF13を介して複数部数の指定を受け付けた場合、コレート印刷の指示をも受け付け可能である。また、コレート印刷の指示は、PDLデータ202のヘッダ部に書き込まれていても良い。
ラスタデータ作成部21は、処理対象の印刷ジョブが複数ページのジョブであれば、1ページから最終ページまで順にラスタライズする(loop:[最終ページまで])。ラスタデータ作成部21は、1ページ分のラスタデータの作成を開始して、ラスタデータ管理部22にページオープンを要求する(P03)。ラスタデータ作成部21は、ラスタライズを実行しつつ、P03の要求を行う。
ラスタデータ管理部22は、P03の要求を受けて、ページ管理用の情報をメモリ12に記憶し、そのページ管理用の情報を識別するページIDを生成する。ラスタデータ管理部22は、生成したページIDをラスタデータ作成部21に提供する(P04)。ラスタデータ作成部21は、取得したページIDをエンジン制御部24に通知する(P05)。これにより、ページIDは、ラスタデータ作成部21とラスタデータ管理部22とエンジン制御部24とによって共有される。
なお、ラスタデータ作成部21は、処理対象のジョブがコレート印刷の印刷ジョブである場合、P03の要求時に、コレート印刷を示す情報をラスタデータ管理部22に通知する。ラスタデータ管理部22は、コレート印刷を示す情報が通知された場合、ページ管理用の情報に、コレート印刷を示す情報と、オンを示す保持フラグを書き込む。ラスタデータ管理部22は、コレート印刷を示す情報が通知されていない場合、ページ管理用の情報に、オフを示す保持フラグを書き込む。なお、ラスタデータ作成部21は、P03の要求を行い、P04でのページIDの提供を受けてから、ページIDを指定してコレート印刷の通知を行っても良い。
保持フラグは、印刷後にそのページのラスタデータを消去するか否かを示す情報である。後述するように、エンジン制御部24は、保持フラグがオフであれば印刷後に印刷済みのラスタデータを消去し、保持フラグがオンであれば印刷後もラスタデータを消去しない。なお、本明細書での「消去」は、メモリが解放され、上書き可能な状態になればよく、メモリに書き込まれたデータが完全に消去される必要はない。
コレート印刷ではない印刷では、印刷後にはラスタデータが不要になるので、ラスタデータ管理部22は、保持フラグをオフにする。一方、コレート印刷では、1部目の印刷が完了した後、2部目以降の印刷時に1部目と同じラスタデータを利用すれば、スピーディな印刷ができる。そこで、印刷後もラスタデータをメモリ12に保持するために、ラスタデータ管理部22は、指定された部数の印刷が完了するまで保持フラグをオンとする。
ラスタデータ作成部21は、1ページ分のラスタデータの作成と記憶とが終わるまで(loop:[1ページ分])、以下のP11~P14の処理を実行する。ラスタデータ作成部21は、まず、メモリ確保処理を実行する(P11)。
P11にて実行されるメモリ確保処理の手順について、図5のフローチャートを参照して説明する。メモリ確保処理は、ラスタデータ作成部21とラスタデータ管理部22とに基づいて、PC1のCPU11にて実行される処理である。つまり、図5のフローチャートの処理には、ラスタデータ作成部21による処理とラスタデータ管理部22による処理とが含まれる。
メモリ確保処理では、CPU11は、利用可能な管理領域41が有るか否かを判断する(S101)。管理領域41は、例えば、図6に示すように、ラスタデータを記憶する領域であるラスタ領域51の情報を管理するための領域である。各管理領域41には、「ラスタ領域のアドレス」42と、「ラスタ領域のサイズ」43と、「使用フラグ」44と、が記憶される。「ラスタ領域のアドレス」42と「ラスタ領域のサイズ」43とは、管理データの一例である。「使用フラグ」44は、当該管理領域41が使用中であるか否かを示す情報である。
図6に示すように、1つの管理領域41Aは1つのラスタ領域51Aに割り当てられ、他の1つの管理領域41Bは他の1つのラスタ領域51Bに割り当てられる。割り当てられているラスタ領域51が無い場合、管理領域41は、管理データが記憶されていない状態、すなわち、新たなラスタ領域51に割り当て可能な状態となっており、「使用フラグ」44には、「未使用」を示す情報が記憶される。
管理領域41の利用状況は、ラスタデータ管理部22によって管理されており、ラスタデータ作成部21は、ラスタデータ管理部22に問い合わせることで、利用可能な管理領域41の有無の情報を取得できる。具体的には、ラスタデータ作成部21は、ラスタ領域の確保をラスタデータ管理部22に要求し、ラスタデータ管理部22は、使用フラグが「未使用」を示している管理領域41が有るか否かを判断する。
利用可能な管理領域41が有ると判断した場合(S101:YES)、CPU11は、利用可能な管理領域41の1つを選択し(S102)、その管理領域41に割り当てるラスタ領域51の確保を試行する(S103)。具体的には、ラスタデータ管理部22は、ラスタ領域51のサイズを指定して、システムメモリ管理部23にラスタ領域51の確保を要求する。システムメモリ管理部23は、ラスタ領域51の確保に成功した場合、成功を示す情報をラスタデータ管理部22に応答する。S103の後、CPU11は、1ブロック分のラスタデータを記憶可能な1つのラスタ領域51の確保に成功したか否かを判断する(S104)。
なお、ラスタ領域51は、メモリ確保処理(P11)の開始以前から確保されている領域ではなく、1ブロック分のラスタデータの作成前に、1ブロック分のラスタデータを記憶できる一定サイズの領域としてメモリ12に確保される。本形態のプリンタ1は、例えば、128kBのブロック単位でラスタ領域51を確保する。ラスタ領域51のサイズは、128kBに限らない。1ブロック分のラスタデータは、1つのラスタ領域51への記憶に適したサイズのデータである。S104以降の処理についての説明は、後述する。
一方、利用可能な管理領域41が無いと判断した場合(S101:NO)、CPU11は、処理中の印刷ジョブがコレート印刷の印刷ジョブであるか否かを判断する(S111)。全ての管理領域41の「使用フラグ」44に「使用中」を示す情報が記憶されている状態であれば、ラスタデータ管理部22は、ラスタデータ作成部21に、利用可能な管理領域41が無いことを示す情報を応答する。
ラスタデータ作成部21は、図4のP03にてラスタデータ管理部22に通知した情報、または、その通知を受けてラスタデータ管理部22によって書き込まれたページ管理用の情報を参照して、S111の判断を行う。コレート印刷ではないと判断した場合(S111:NO)、CPU11は、S101に戻って利用可能な管理領域41が有るか否かを再度確認する。コレート印刷でなければ、後述するように、印刷の完了したラスタデータは順に消去されることから、ラスタデータが消去されたラスタ領域51は解放され、そのラスタ領域51に割り当てられていた管理領域41は他のラスタ領域51に割り当て可能となる。従って、実行中であった他の印刷ジョブの印刷が、CPU11が再度確認するまでの間に完了しており、管理領域41のいずれかが利用可能になっている可能性がある。また、実行中であった他の印刷ジョブの印刷が、CPU11が再度確認するまでの間に完了しており、新たなラスタ領域51を確保できるようになっている可能性がある。
コレート印刷であると判断した場合(S111:YES)、CPU11は、管理領域41の追加確保を試行する(S112)。コレート印刷では、ページ管理用の情報にオンを示す保持フラグが書き込まれており、1部目の印刷が完了してもラスタデータがラスタ領域51に保持される。すなわち、そのラスタデータが記憶されているラスタ領域51は解放されない。そのラスタ領域51に割り当てられている管理領域41は、利用可能な状態に戻らない。
そこで、コレート印刷であって利用可能な管理領域41が無い場合、ラスタデータ作成部21は、管理領域41を追加するために、S112にて、一定数の管理領域41の確保をラスタデータ管理部22に要求する。一定数は、例えば、メモリ12の総容量に対して3%程度のサイズのメモリに、新たに確保できるラスタ領域51の個数である。一定数は、予め決定してメモリ12に記憶されている。なお、一定数は、起動時に確保する所定数と同数でもよいし、起動時に確保する所定数よりも小さい数であってもよいし、所定数よりも大きい数であってもよい。ラスタデータ管理部22は、ラスタデータ作成部21からの要求に基づいて、一定数の管理領域41に必要なサイズのメモリ領域の確保をシステムメモリ管理部23に要求する。
なお、ラスタデータ作成部21は、追加確保する管理領域41の数を指定する代わりに、管理領域41のために追加で確保するメモリ領域のサイズを指定しても良い。その場合、ラスタデータ管理部22の要求を受けて、システムメモリ管理部23は、確保された領域のサイズ内に記憶可能な管理情報の数を算出して、管理領域41の数を決定しても良い。
そして、CPU11は、追加確保に成功したか否かを判断する(S113)。システムメモリ管理部23から確保された領域のアドレスとサイズとが提供された場合、管理領域41の追加確保に成功したと判断し(S113:YES)、CPU11は、追加確保した領域に管理情報の書き込みを要求することで追加確保した領域を管理領域41とする(S114)。なお、ラスタデータ管理部22は、S114にて、追加確保した各管理領域41に、「未使用」を示す使用フラグを書き込む。S114の後、CPU11は、S102に進み、追加確保された管理領域41の1つを選択する。
S104以降の処理についての説明に戻る。1ブロック分のラスタデータを記憶可能な1つのラスタ領域51の確保に成功したら(S104:YES)、CPU11は、S102で選択された管理領域41と、S104で確保されたラスタ領域51とを紐付ける(S105)。具体的には、ラスタデータ管理部22は、S102で選択された管理領域41の「ラスタ領域のアドレス」42と「ラスタ領域のサイズ」43とに、確保されたラスタ領域51のアドレスを示す情報とサイズを示す情報とを書き込む。さらに、ラスタデータ管理部22は、S102で選択された管理領域41の「使用フラグ」44を「使用中」を示す情報に書き換え、S102で選択された管理領域41を示す情報を、ページ管理用の情報に登録する。
なお、S101では、ラスタデータ作成部21は、確保を要求するラスタ領域51のサイズを指定しても良い。その場合、ラスタデータ管理部22は、ラスタデータ作成部21から要求されたラスタ領域51のサイズに基づいて、必要な管理領域41の数を算出し、算出した数の管理領域41を選択できるか否かを判断しても良い。その場合、CPU11は、算出された数の管理領域41を選択できたら、選択できた各管理領域41にそれぞれラスタ領域51を紐付け、図4のシーケンス図の処理に戻る。一方、算出された数の管理領域41を選択できなかった場合、CPU11は、選択できた分の管理領域41にそれぞれラスタ領域51を紐付けた後、S101に戻るとしても良い。
S105の後、CPU11は、メモリ確保処理を終了して、図4のシーケンス図の処理に戻る。なお、メモリ確保処理の残りの部分、具体的には、ラスタ領域51の確保に失敗した場合(S104にてNOと判断した場合)や、管理領域41の追加確保に失敗した場合(S113にてNOと判断した場合)の処理については、後述する。
図4のシーケンス図の説明に戻る。メモリ確保処理によって、1つの管理領域41と1つのラスタ領域51とが紐付けできた場合、ラスタデータ作成部21は、ラスタデータを作成する(P12)。なお、ラスタデータ作成部21は、メモリ確保処理(P11)にて紐付けに成功した後にラスタデータの作成を開始する代わりに、メモリ確保処理(P11)の実行と並行して、ラスタデータを作成しても良い。
1ブロック分のラスタデータを作成したら、ラスタデータ作成部21は、ページIDを指定して、作成したラスタデータのラスタ領域51への記憶をラスタデータ管理部22に要求する(P13)。ラスタデータ管理部22は、システムメモリ管理部23を介して、1ブロック分のラスタデータを、紐付けされたラスタ領域51に記憶する。
具体的には、ラスタデータ作成部21の要求に応じて、ラスタデータ管理部22は、ページ管理用の情報を参照し、最後に登録された管理領域41から、ラスタ領域51のアドレスとサイズの情報を取得し、取得したアドレスとサイズの情報を指定して、ラスタデータの書き込みをシステムメモリ管理部23に要求する(P14)。これにより、ラスタデータがラスタ領域51に書き込まれる。ラスタデータの書き込みが成功すると、ラスタデータ管理部22は、書き込み成功をラスタデータ作成部21に通知する。
ラスタデータ作成部21は、解析中の印刷ジョブから、ページの最後を示すデータや、ジョブの最後を示すデータを検出する。ラスタデータ作成部21は、P13にて記憶を要求するデータがページの最後のデータであれば、ページの最後を示す情報をラスタデータ管理部22に通知する。また、ラスタデータ作成部21は、P13にて記憶を要求するデータがジョブの最後のデータであれば、ジョブの最後を示す情報をラスタデータ管理部22に通知する。
ラスタデータ管理部22とシステムメモリ管理部23とによって、1つ以上のラスタ領域51にラスタデータが記憶されたら、ラスタデータ作成部21は、ラスタデータを記憶したラスタ領域51の情報とページIDの情報とをエンジン制御部24に通知する(P15)。
エンジン制御部24は、P15にて通知されたラスタ領域51の情報に基づいて、ページIDを指定して、ラスタデータ管理部22にラスタデータの読み出しを要求する(P21)。エンジン制御部24による要求には、ページIDと該当ページのうちの要求されているラスタデータを示す情報とが含まれる。なお、エンジン制御部24は、該当ページのラスタデータを先頭から順に要求する。エンジン制御部24は、複数ブロック分のラスタデータを1度に要求しても良い。
エンジン制御部24の要求を受けて、ラスタデータ管理部22は、読み出しが要求されたラスタデータが記憶されている各ラスタ領域51の情報をエンジン制御部24に提供する。具体的には、ラスタデータ管理部22は、指定されたページIDに対応するページ管理用の情報を参照し、指定されているラスタデータに対応する管理領域41から、ラスタ領域51のアドレスとサイズを読み出して、エンジン制御部24に提供する。エンジン制御部24は、提供されたラスタ領域51のアドレスとサイズを指定して、システムメモリ管理部23にラスタデータの読み出しを要求し(P22)、ラスタデータを取得する。
なお、ラスタデータ管理部22は、指定されたページに設定されている保持フラグの情報もエンジン制御部24に提供する。また、前述したように、ラスタデータ作成部21からページの最後またはジョブの最後を示す情報が通知されている場合、ラスタデータ管理部22は、その情報もエンジン制御部24に提供する。ページの最後であることを示す情報を受け取った場合、つまり、ページの最後までの1ページ分のラスタデータを取得したら、エンジン制御部24は、印刷エンジン15を制御して、1ページ分のラスタデータに基づく印刷を実行させる(P23)。
エンジン制御部24は、読み出し可能なタイミングで、ラスタデータ管理部22にラスタデータの読み出しを要求する。エンジン制御部24が読み出しを要求するタイミングは、メモリ12に1ページ分のラスタデータが記憶されたらでも良いし、1ページ分に満たない1ブロック以上のラスタデータが記憶されたらでも良い。エンジン制御部24が印刷エンジン15に印刷を実行させるタイミングは、このタイミング以外でも良い。また、エンジン制御部24がページの最後であることを知るための構成は、これ以外でも良い。
なお、P23による印刷の実行中も、プリンタ1の各部は、次ページ以降のページについて、P11~P15を実行する。また、エンジン制御部24は、P15の通知を受けたことに応じて、P21~P23を実行する。
エンジン制御部24は、印刷が完了したページの保持フラグの情報をラスタデータ管理部22から受け取る。エンジン制御部24は、ページ管理用の情報に記憶されている保持フラグがオフであれば(alt:[保持フラグ=オフ])、ラスタデータが不要となったことから、ラスタ領域51の解放をラスタデータ管理部22に通知する(P25)。
ラスタデータ管理部22は、エンジン制御部24からP25の通知を受けた場合、不要になったラスタデータに対応する管理領域41を特定し、管理領域41から該当するラスタ領域51のアドレスとサイズとを取得する。取得したアドレスとサイズとを指定して、ラスタデータ管理部22は、システムメモリ管理部23に、ラスタ領域51として確保されていたメモリ領域の解放を要求する(P26)。システムメモリ管理部23は、要求に従って、メモリ領域を解放する。なお、メモリ領域が解放された後、プリンタ1の各プログラムから、そのメモリ領域へのデータの書き込みやメモリ領域の確保の要求を受け付けた場合、システムメモリ管理部23は、基本的に、その領域への書き込みや確保を実行する。
さらに、エンジン制御部24は、解放したラスタ領域51に割り当てられていた管理領域41が不要になったことをラスタデータ管理部22に通知し(P27)、ラスタデータ管理部22は、対象となる管理領域41の「使用フラグ」44を「未使用」を示す情報に書き換える。なお、この場合、ラスタデータ管理部22は、管理領域41を他のラスタ領域51に割り当て可能な状態とするのみであり、管理領域41を解放するわけではない。P25とP27の通知には、P21と同様に、ページIDとそのページの何番目のラスタデータであるかを示す情報とが含まれる。なお、エンジン制御部24は、P25の通知とP27の通知とを纏めた1つの通知としてラスタデータ管理部22に通知しても良い。
一方、ラスタデータ管理部22から受け取った情報が、保持フラグがオンであることを示す情報であれば、エンジン制御部24は、印刷に利用したラスタデータの消去を行わず、P23の印刷後、指示待ちの状態となる。また、ジョブの最後であることを示す情報を受け取った場合、エンジン制御部24は、印刷を実行させた後、印刷ジョブの最終ページまでの印刷が完了したことをラスタデータ作成部21に通知する。
P03~P27までの処理を、[最終ページまで]繰り返すことで、印刷ジョブの1ページから最終ページまでの印刷が終了する。コレート印刷の印刷ジョブでなければ、この印刷ジョブの印刷は終了であり、コレート印刷の印刷ジョブであれば、この印刷ジョブの1部目の印刷が終了したことになる。
図5に示したメモリ確保処理にて説明したように、コレート印刷ではない印刷ジョブの印刷時と、コレート印刷の印刷ジョブの1部目の印刷時とでは、利用される管理領域41やラスタ領域51の状況が異なる。そこで、それぞれの印刷ジョブの印刷時における管理領域41やラスタ領域51の利用状況を、図7と図8を参照して説明する。図7は、コレート印刷ではない印刷ジョブの印刷時の状況であり、図8は、コレート印刷の印刷ジョブの1部目の印刷時の状況である。
なお、図7と図8では、起動時に6つの管理領域41が確保され、3つのラスタ領域51に記憶される3ブロック分のラスタデータに基づいて、1ページ分の印刷が行われる例を示している。また、これらの図では、ラスタ領域51中に示す文字は、そのラスタ領域51に割り当てられている管理領域41中に示す文字との対応を示している。例えば、「A」で示す管理領域41は、「A」で示すラスタ領域51に割り当てられる。「A」で示す管理領域41は、第1管理領域の一例であり、「A」で示すラスタ領域51は、第1ラスタ領域の一例である。この場合、「A」で示すラスタ領域51に記憶されるラスタデータは、第1ラスタデータの一例である。
コレート印刷ではない印刷ジョブでも、コレート印刷の印刷ジョブの1部目の印刷時でも、メモリ領域を確保できる場合には(図5のS101にてYES、かつ、S104にてYES)、図7(1)と図8(1)とに示すように、各ラスタ領域51にはそれぞれ1つの管理領域41が割り当てられ(図5のS102)、それぞれ1つのラスタ領域51に1ブロック分のラスタデータが記憶される(図4のP13)。図7(1)と図8(1)とは、いずれも、5ブロック分のラスタデータ(「A」~「E」)が記憶された状態を示しており、いずれの例でも、3ブロック分のラスタデータ(「A」~「C」)を利用して1ページ目の印刷が実行される(図4のP23)。
コレート印刷ではない印刷ジョブでは、保持フラグがオフであり、印刷済みの3ブロック分のラスタ領域51が解放され(図4のP25)、そのラスタ領域51に割り当てられていた3つの管理領域41の管理データが消去される(図4のP27)。そして、「A」~「C」に割り当てられていた管理領域41は、他のラスタ領域51に割り当て可能となる。
図7(2)は、コレート印刷ではない印刷ジョブにて、6つの管理領域41がすべて利用された後、印刷後に管理データが消去され、割り当て可能となった管理領域41が、後続のラスタデータ(「G」~「H」)のラスタ領域51に割り当てられた状態を示している。なお、便宜上、7ブロック目以降のラスタ領域51を1~6ブロック目のラスタ領域51とは別に図示しているが、7ブロック目以降のラスタ領域51は、1~6ブロック目のいずれかと同じメモリ領域に確保されていても良い。すなわち、印刷完了後に解放された1ブロック目のラスタ領域51が、再度、7ブロック目のラスタ領域51として確保された場合でも、図7では、便宜上、別の領域として図示している。そして、3ブロック分のラスタデータ(「D」~「F」)を利用して2ページ目が印刷されると(図4のP23)、2ページ目のラスタデータが記憶されていた3ブロック分のラスタ領域51が解放されて(図4のP25)、そのラスタ領域51に割り当てられていた3つの管理領域41の管理データが消去される(図4のP27)。
図7(3)は、コレート印刷ではない印刷ジョブにて、2ページ目の印刷が終了した後、3ページ目のラスタデータ(「G」~「I」)が記憶されている状態を示している。3ページ目の印刷が終了すると(図4のP23)、図7(4)に示すように、すべてのラスタ領域51は解放され(図4のP25)、すべての管理領域41の管理データは消去される(図4のP27)。なお、起動時に確保された管理領域41は、管理データが消去されても、確保されたままの状態となる。
コレート印刷ではない印刷ジョブでは、あらかじめ確保した管理領域41の数を超えるブロック数のラスタデータが作成される場合でも、印刷の実行に従って管理領域41の管理データが消去されることから、プリンタ1は、管理領域41を再利用することで印刷を実行するための処理が可能である。
一方、コレート印刷の印刷ジョブでは、保持フラグがオンであり、図4のP25~P27の処理は実行されない。そのため、1部目の1ページ目が印刷されても、2部目以降の印刷のために1ページ目のラスタデータ「A」~「C」は消去されない。また、「A」~「C」の管理領域41に記憶されている管理データは消去されず、管理領域41を他のラスタ領域51に割り当てることはできない。
コレート印刷の印刷ジョブの処理では、プリンタ1は、例えば、図8(2)に示すように、起動時に確保した管理領域41を使用して、2ページ目以降のラスタデータを記憶できれば、2ページ目以降を印刷する(図4のP23)。コレート印刷の印刷ジョブの場合、プリンタ1は、2ページ目の印刷後も、1ページ目と同様に、ラスタデータを消去せず、管理領域41を解放しない。
コレート印刷の印刷ジョブでは、起動時に確保した管理領域41がすべて使用中であって、さらにラスタデータを記憶するために管理領域41が必要となる場合がある(図5のS101にてNO、かつ、S111にてYES)。その場合プリンタ1は、例えば、図8(2)に示すように、一定数の新たな管理領域41をメモリ12に追加確保する(図5のS114)。そして、プリンタ1は、例えば、図8(2)に示すように、7つめと8つめのブロックのラスタ領域51(「G」、「H」)を確保し(図5のS112)、追加確保した新たな管理領域41をそのラスタ領域51に割り当てる(図5のS105)。なお、新たな管理領域41の物理アドレス上の領域は、起動時に確保される管理領域41の近くでなくても良い。
また、図4の[1ページ分]や[最終ページまで]のループ中でP11のメモリ確保処理が繰り返し実行されることから、新たに追加確保した管理領域41もすべて使用した後、さらにラスタデータを記憶することが必要となる場合がある(図5のS101にてNO、かつ、S111にてYES)。その場合、プリンタ1は、図8(3)に示すように、一定数の新たな管理領域41をさらにメモリ12に追加確保して(図5のS112)、ラスタ領域51に割り当てる。3ページ目のラスタデータの作成が終了すれば、プリンタ1は、1部目の3ページ目を印刷する。3ページ目の印刷後も、プリンタ1は、ラスタデータを消去せず、管理領域41を解放しない。
このように、コレート印刷の印刷ジョブでは、印刷を実行しても管理領域41の管理データが消去されないことから、プリンタ1は、あらかじめ確保した管理領域41の数を超えるブロック数のラスタデータが作成される場合、管理領域41を追加で確保する。プリンタ1は、追加で確保した管理領域41を利用することで、コレート印刷の印刷ジョブの全てのページのラスタデータをメモリ12に記憶したままとすることができる。
図4のシーケンス図の処理の後に実行される処理の動作について、図9のシーケンス図を参照して説明する。ラスタデータ作成部21は、印刷ジョブの最終ページの印刷が完了したことを示す通知をエンジン制御部24から受け取ると、メモリ12に記憶させた部数情報を1減する(P31)。
そして、1減後の部数が1以上である間(loop:[部数≧1])、プリンタ1は、P32~P38の処理を繰り返す。具体的には、ラスタデータ作成部21は、2部目以降の印刷のために、1ページ目から順に最終ページまで、図4のP14と同様に、ページIDを指定してエンジン制御部24に印刷を通知する(P32)。
エンジン制御部24は、ラスタデータ作成部21からの通知を受けて、各ページの印刷を実行する(P33)。このとき、エンジン制御部24は、1部目の処理で作成されてラスタ領域51に記憶されているラスタデータを再度読み出して、印刷に利用する。コレート印刷の印刷ジョブであって、指定された部数が3部以上であれば、2部目の印刷が終了しても、保持フラグはオンのままであり、ラスタ領域51を解放せず、管理領域41の管理データは消去されない。そして、ラスタデータ作成部21は、さらに部数情報を1減する(P38)。
印刷(P33)と部数情報の1減(P38)とを繰り返すことで、残り部数を示す部数情報が1になると、ラスタデータ作成部21は、この印刷ジョブの各ページのページIDを指定して、保持フラグをオフとする指示をラスタデータ管理部22に通知する。ラスタデータ管理部22は、ラスタデータ作成部21の通知を受けて、ページ管理用の情報に記憶されている保持フラグをオフに書き換える。
その後、ラスタデータ作成部21は、エンジン制御部24に、最終部の全ページの印刷を指示する通知を行う(P32)。最終部の印刷後(P33)、保持フラグがオフとなっていることから、エンジン制御部24は、ラスタ領域51の解放をラスタデータ管理部22に通知する(P35)。ラスタデータ管理部22は、システムメモリ管理部23に、ラスタ領域51として確保されていたメモリ領域の解放を要求する(P36)。エンジン制御部24は、解放したラスタ領域51に割り当てられていた管理領域41が不要になったことをラスタデータ管理部22に通知する(P37)。P35~P37は、図4のP25~P27と同様の処理である。この結果、印刷済みのラスタ領域51が解放され、そのラスタ領域51に割り当てられていた管理領域41の管理データが消去される。
最終部の最終ページまでの印刷が終了すると(P33)、ラスタデータ作成部21が部数情報を更新すること(P38)で、部数情報が0となる。部数情報が0となったら、ラスタデータ作成部21は、この印刷ジョブの全ページのページIDを指定し、前述したメモリ確保処理のS112にて追加確保した管理領域41があれば、その管理領域41を解放するようラスタデータ管理部22に要求する(P41)。P41の要求を受けたラスタデータ管理部22は、システムメモリ管理部23に要求して、該当する管理領域41を解放する。
ラスタデータ作成部21は、印刷ジョブの印刷が全て終了すると、この印刷ジョブの全ページのページIDを指定し、ページクローズをラスタデータ管理部22に要求する(P42)。ラスタデータ管理部22は、指定されたページIDのページ管理用の情報をメモリ12から消去する。さらに、ラスタデータ作成部21は、ジョブ管理部25に要求して、ジョブリストから処理対象の印刷ジョブの情報を消去する(P43)。これにより、印刷ジョブの処理が終了する。
なお、コレート印刷ではない印刷ジョブでは、印刷部数は1部であって、P31にて部数情報が0となることから、ラスタデータ作成部21は、P32~P38の処理を実行しない。コレート印刷ではない印刷ジョブでは、部数情報は記憶されていなくても良い。部数情報が記憶されていない場合も、ラスタデータ作成部21は、P32~P38の処理を実行せずにP41に進む。ただし、コレート印刷ではない印刷ジョブでは、追加で確保した管理領域41が無いことから、ラスタデータ作成部21は、P41をスキップして、P42に進み、P42とP43の要求を行うことで、印刷ジョブの処理を終了する。
コレート印刷の印刷ジョブにおける2部目から最終部までの印刷時における管理領域41やラスタ領域51の利用状況を、図10を参照して説明する。プリンタ1は、コレート印刷の印刷ジョブの処理では、1部目の印刷が終了してもラスタデータを消去しない。従って、プリンタ1は、図10(1)に示すように、各ページのラスタデータをメモリ12に記憶しているので、記憶されているラスタデータを利用して、2部目以降の全ページの印刷を繰り返し実行できる。
そして、最終部の印刷が終了したら(図9のP33)、プリンタ1は、この印刷ジョブで利用したラスタ領域51を解放し(図9のP35)、ラスタ領域51に割り当てられていた管理領域41の管理データを消去し(図9のP37)、追加で確保した管理領域41を解放する(図9のP41)。これにより、図10(2)に示すように、メモリ12に確保されている管理領域41は、起動時に確保された個数のみとなる。また、起動時に確保された管理領域41は、コレート印刷ではない印刷ジョブの場合の図7(4)と同様に、管理データが記憶されていない状態となる。コレート印刷が完了した後、追加で確保した管理領域41を解放することで、必要以上のメモリを確保し続けることなく、メモリ資源を有効活用できる。
次に、図5に示したメモリ確保処理の残りの部分について説明する。以下の処理は、全てラスタデータ作成部21による処理である。
管理領域41の追加確保に成功しなかった場合(S113:NO)、または、1ブロック分のラスタデータを記憶可能な1つのラスタ領域51の確保に成功しなかった場合(S104:NO)CPU11は、処理対象の印刷ジョブがコレート印刷の印刷ジョブであって、かつ、ジョブリストの先頭であるか否かを判断する(S121)。コレート印刷の印刷ジョブであるか否かの判断は、S111と同じ判断である。また、ジョブリストの先頭であるか否かの判断は、ラスタデータ作成部21が、ジョブ管理部25に処理中の印刷ジョブのジョブIDとジョブリストとを要求し、提供されたジョブIDがジョブリストの先頭であるか否かを判断することで行う。
コレート印刷の印刷ジョブではない場合、前述したように、印刷が進むことでメモリ12が空き、管理領域41の選択やラスタ領域51の確保が可能になる。また、ジョブリストの先頭ではない場合、処理対象の印刷ジョブよりも前の印刷ジョブの処理が終了すれば、メモリ12に空きができる可能性が高い。
処理対象の印刷ジョブがコレート印刷の印刷ジョブではない、または、ジョブリストの先頭ではないと判断した場合(S121:NO)、CPU11は、S101に戻って、利用可能な管理領域41が有るか否かを再度確認する。処理対象に印刷ジョブがジョブリストの先頭ではなければ、実行中であった他の印刷ジョブの印刷が、CPU11が再度確認するまでの間に完了しており、管理領域41のいずれかが利用可能になっている可能性がある。また、実行中であった他の印刷ジョブの印刷が、CPU11が再度確認するまでの間に完了しており、新たなラスタ領域51を確保できるようになっている可能性がある。そのため、S121にてNOと判断した場合、CPU11は、S101に戻る。利用可能な管理領域41が有れば、CPU11は、S102にてその管理領域41を選択し、S103にて新たなラスタ領域51を確保するので、印刷を続行できる。
一方、処理対象の印刷ジョブがコレート印刷の印刷ジョブであり、かつ、ジョブリストの先頭であると判断した場合(S121:YES)、CPU11は、メモリフルを報知する(S125)。例えば、CPU11は、印刷を続行できないことを示すメッセージを、ユーザIF13に表示させる。さらに、CPU11は、この印刷ジョブの処理を終了させると決定して(S126)、メモリ確保処理を終了し、図4のシーケンス図の処理に戻る。
なお、S126にて印刷ジョブの処理を終了させると決定した場合、ラスタデータ作成部21は、部数情報が0になった場合と同様に、この印刷ジョブの処理のために確保した各種のメモリ領域の解放(図9のP35、P37)とページクローズ(図9のP42)とを要求し、印刷ジョブをジョブリストから消去する(図9のP43)。
処理対象の印刷ジョブがコレート印刷の印刷ジョブであり、かつ、ジョブリストの先頭である場合、処理対象の印刷ジョブによってメモリフルとなっている可能性が高い。この場合、処理の進行を待ってもメモリ12が空かない可能性が高いことから、プリンタ1は、処理対象の印刷ジョブをキャンセルし、メモリの負荷を軽減する。
以上、詳細に説明したように、本形態のプリンタ1は、コレート印刷の印刷ジョブの処理では、指定された部数の印刷が完了するまでラスタデータを保持し続ける。プリンタ1は、あらかじめ確保した管理領域41を全て使っている場合には、新たな管理領域41を確保し、その新たな管理領域41によって新たに割り当てられたラスタ領域51にラスタデータを記憶する。これにより、管理領域41が不足することで印刷ジョブの処理を継続できない状況の発生を低減でき、コレート印刷の処理を継続できる可能性が高まる。
管理領域41をあらかじめ多く確保しすぎると、他の処理で利用できるメモリ容量が少なくなり、他の処理の実行を制限してしまう可能性があるが、本形態のプリンタ1は、初めは所定数だけ確保しておき、不足した際に追加して確保するので、メモリフルを抑制しつつメモリ12を有効活用できる。また、本形態のプリンタ1は、新たな管理領域41をメモリ12に確保する際、一定数だけ確保し、足らなければ再度同じ一定数だけ確保するので、少しずつメモリを確保することになり、必要最小限のメモリが確保され、メモリの有効活用に資する。
なお、本実施の形態は単なる例示にすぎず、本発明を何ら限定するものではない。従って本明細書に開示される技術は当然に、その要旨を逸脱しない範囲内で種々の改良、変形が可能である。例えば、プリンタ1は、印刷単機能のものに限らず、複合機、複写機、FAX装置等、印刷機能を備えるものであれば適用可能である。また、プリンタ1に印刷ジョブを送信する装置は、PC3に限らず、スマートフォン、タブレットコンピュータ、サーバコンピュータでも良い。また、プリンタ1には、複数のPC等が接続されていても良い。
また、本形態では、メモリ確保処理のS112において、一定数の管理領域41の追加確保を試行するとしたが、追加確保する管理領域41の数は、固定数ではなくても良い。例えば、プリンタ1は、印刷ジョブのPDLデータのデータサイズに基づいて、追加確保する管理領域41の数を決定しても良い。または、プリンタ1は、その時点での空き領域のデータサイズに基づいて、確保可能なラスタ領域51の個数を決定し、決定したラスタ領域51の個数分の管理領域41を追加確保するとしても良い。
また、本形態では、コレート印刷の印刷ジョブの処理を終了したら、プリンタ1は、追加で確保した管理領域41を解放するとしたが、しなくても良い。例えば、プリンタ1は、一旦追加で確保した管理領域41を、プリンタ1が再起動されるまで確保し続けるとしても良い。また、本形態では、プリンタ1は、起動時に所定数の管理領域41を確保するとしたが、印刷ジョブを受け付けた後に確保しても良い。
また、本形態では、ラスタ領域51は、管理領域41の選択に成功した後に確保されるとしたが、予め所定数のラスタ領域51が確保されていても良い。ラスタ領域51は、ラスタデータのメモリ12への記憶に先立って確保されれば良く、例えば、PDLデータの取得時等に所定数確保されても良い。その場合、プリンタ1は、コレート印刷の印刷ジョブを処理中に、ラスタデータが記憶されていないラスタ領域51が無くなったら、新たなラスタ領域51をメモリ12に確保し、新たに確保したラスタ領域51にラスタデータを記憶するとしても良い。
また、実施の形態に開示されている任意のフローチャートにおいて、任意の複数のステップにおける複数の処理は、処理内容に矛盾が生じない範囲で、任意に実行順序を変更できる、または並列に実行できる。
また、実施の形態に開示されている処理は、単一のCPU、複数のCPU、ASICなどのハードウェア、またはそれらの組み合わせで実行されてもよい。また、実施の形態に開示されている処理は、その処理を実行するためのプログラムを記憶した記憶媒体、または方法等の種々の態様で実現することができる。
1 プリンタ
12 メモリ
13 ユーザIF
12 メモリ
13 ユーザIF
Claims (9)
- メモリを備えるプリンタであって、
前記プリンタは、
印刷対象の画像を示す画像データを取得し、取得された前記画像データをラスタライズしてラスタデータを生成し、生成された前記ラスタデータを一定サイズのブロック単位で前記メモリに記憶し、
さらに前記プリンタは、
前記ラスタデータの前記メモリへの記憶に先立って所定数の管理領域を前記メモリに確保し、さらに前記ラスタデータの記憶用に複数のラスタ領域を前記メモリに確保し、1つの前記ラスタ領域に対して1つの前記管理領域を割り当て、1ブロック分の前記ラスタデータを前記ラスタ領域の1つに記憶する場合に、その1つの前記ラスタ領域に前記1ブロック分の前記ラスタデータが記憶されていることを示す管理データを、その1つの前記ラスタ領域に割り当てられた前記管理領域に記憶し、
さらに前記プリンタは、
前記管理データによって前記ラスタ領域を特定し、特定された前記ラスタ領域に記憶されている1ブロック分の前記ラスタデータを読み出し、読み出された前記ラスタデータに示される画像を印刷し、
さらに前記プリンタは、
部単位での印刷が指定されていない場合、読み出された前記ラスタデータに示される画像の印刷が完了した後、第1管理領域に記憶されている前記管理データを消去し、第1ラスタデータを第1ラスタ領域から消去し、前記第1ラスタデータは、印刷された前記ラスタデータであり、前記第1ラスタ領域は、印刷のために前記第1ラスタデータが読み出された前記ラスタ領域であり、前記第1管理領域は、前記第1ラスタ領域に割り当てられた前記管理領域であり、
部単位での印刷が指定されている場合、読み出された前記ラスタデータに示される画像の1部目の印刷が完了しても、前記管理データおよび前記ラスタデータを消去せず、前記管理データおよび前記ラスタデータを2部目以降の印刷に利用し、指定された部数の印刷が完了した後、前記第1管理領域に記憶されている前記管理データを消去し、前記第1ラスタデータを前記第1ラスタ領域から消去し、
さらに前記プリンタは、
生成された前記ラスタデータを前記ラスタ領域に記憶する処理において、
前記管理データが記憶されていない前記管理領域を特定し、特定された前記管理領域が割り当てられた前記ラスタ領域に、生成された前記ラスタデータを記憶し、
前記管理データが記憶されていない前記管理領域が無く、かつ部単位での印刷が指定されていない場合、複数の前記管理領域に記憶される前記管理データのいずれかの消去を待ち、前記管理データが消去された場合に、前記管理データが消去された前記管理領域が割り当てられた前記ラスタ領域に、生成された前記ラスタデータを記憶し、
前記管理データが記憶されていない前記管理領域が無く、かつ部単位での印刷が指定されている場合、新たな前記管理領域を前記メモリに確保し、新たな前記管理領域にも、新たな前記ラスタ領域を割り当て、新たな前記管理領域が割り当てられた新たな前記ラスタ領域に、生成された前記ラスタデータを記憶する、
ことを特徴とするプリンタ。 - 請求項1に記載するプリンタにおいて、
前記プリンタは、
取得された前記画像データに、部単位の印刷を示すコマンドが含まれている場合に、部単位での印刷が指定されているとする、
ことを特徴とするプリンタ。 - 請求項1に記載するプリンタにおいて、
ユーザインタフェースを備え、
前記プリンタは、
前記ユーザインタフェースを介して、部単位の印刷が設定されていた場合に、部単位での印刷が指定されているとする、
ことを特徴とするプリンタ。 - 請求項1から請求項3のいずれか1つに記載するプリンタにおいて、
前記プリンタは、
新たな前記管理領域を前記メモリに確保した場合、新たな前記管理領域に割り当てられた前記ラスタ領域に記憶された前記ラスタデータに示される画像の、指定された部数の印刷が完了した後に、新たな前記管理領域を解放する、
ことを特徴とするプリンタ。 - 請求項1から請求項4のいずれか1つに記載するプリンタにおいて、
前記プリンタは、
起動時に、前記所定数の前記管理領域を前記メモリに確保し、
前記プリンタは、
生成された前記ラスタデータを前記ラスタ領域に記憶する前記処理において、前記管理データが記憶されていない前記管理領域が無く、かつ部単位での印刷が指定されている場合、起動時に確保された前記所定数の前記管理領域に加えて、新たな前記管理領域を前記メモリに確保し、新たな前記管理領域にも、新たな前記ラスタ領域を割り当て、新たな前記管理領域が割り当てられた新たな前記ラスタ領域に、生成された前記ラスタデータを記憶する、
ことを特徴とするプリンタ。 - 請求項1から請求項5のいずれか1つに記載するプリンタにおいて、
前記プリンタは、
生成された前記ラスタデータを前記ラスタ領域に記憶する前記処理において、前記管理データが記憶されていない前記管理領域が無く、かつ部単位での印刷が指定されている場合、一定数の新たな前記管理領域を前記メモリに確保し、新たな前記管理領域を前記メモリに確保した後、生成された前記ラスタデータを前記ラスタ領域に記憶する前記処理を実行し、再度、前記管理データが記憶されていない前記管理領域が無い場合、さらに前記一定数の新たな前記管理領域を前記メモリに確保し、新たな前記管理領域を前記メモリに確保した後、生成された前記ラスタデータを前記ラスタ領域に記憶する前記処理を実行する、
ことを特徴とするプリンタ。 - 請求項1から請求項6のいずれか1つに記載するプリンタにおいて、
前記プリンタは、
生成された前記ラスタデータを前記ラスタ領域に記憶する前記処理において、前記管理データが記憶されていない前記管理領域が無く、かつ部単位での印刷が指定されている場合に、新たな前記管理領域の確保を試行し、
新たな前記管理領域の確保に成功した場合、新たな前記管理領域にも、新たな前記ラスタ領域を割り当て、新たな前記管理領域が割り当てられた新たな前記ラスタ領域にも、生成された前記ラスタデータを記憶し、
新たな前記管理領域の確保に失敗した場合、取得された前記画像データよりも先に取得された画像データに基づく印刷ジョブを実行中であれば、前記先に取得された画像データに基づく印刷が完了することによって前記管理データが消去された後、前記管理データが消去された前記管理領域が割り当てられた前記ラスタ領域に、生成された前記ラスタデータを記憶し、取得された前記画像データよりも先に取得された画像データに基づく印刷ジョブを実行中でなければ、取得された前記画像データに基づく印刷ジョブをキャンセルする、
ことを特徴とするプリンタ。 - メモリを備えるプリンタであって、
前記プリンタは、
印刷対象の画像を示す画像データを取得し、取得された前記画像データをラスタライズしてラスタデータを生成し、生成された前記ラスタデータを一定サイズのブロック単位で前記メモリに記憶し、
さらに前記プリンタは、
前記ラスタデータの前記メモリへの記憶に先立って所定数のラスタ領域を前記メモリに確保し、1ブロック分の前記ラスタデータを前記ラスタ領域の1つに記憶し、
さらに前記プリンタは、
前記ラスタ領域に記憶されている1ブロック分の前記ラスタデータを読み出し、読み出された前記ラスタデータに示される画像を印刷し、
さらに前記プリンタは、
部単位での印刷が指定されていない場合、読み出された前記ラスタデータに示される画像の印刷が完了した後、第1ラスタデータを第1ラスタ領域から消去し、前記第1ラスタデータは、印刷された前記ラスタデータであり、前記第1ラスタ領域は、印刷のために前記第1ラスタデータが読み出された前記ラスタ領域であり、
部単位での印刷が指定されている場合、読み出された前記ラスタデータに示される画像の1部目の印刷が完了しても、前記ラスタデータを前記ラスタ領域から消去せず、前記ラスタデータを2部目以降の印刷に利用し、指定された部数の印刷が完了した後、前記第1ラスタデータを前記第1ラスタ領域から消去し、
さらに前記プリンタは、
生成された前記ラスタデータを前記ラスタ領域に記憶する処理において、
前記ラスタデータが記憶されていない前記ラスタ領域を特定し、特定された前記ラスタ領域に、生成された前記ラスタデータを記憶し、
前記ラスタデータが記憶されていない前記ラスタ領域が無く、かつ部単位での印刷が指定されていない場合、複数の前記ラスタ領域に記憶される前記ラスタデータのいずれかの消去を待ち、前記ラスタデータが消去された場合に、消去された前記ラスタデータが記憶されていた前記ラスタ領域に、生成された前記ラスタデータを記憶し、
前記ラスタデータが記憶されていない前記ラスタ領域が無く、かつ部単位での印刷が指定されている場合、新たな前記ラスタ領域を前記メモリに確保し、新たな前記ラスタ領域に、生成された前記ラスタデータを記憶する、
ことを特徴とするプリンタ。 - 請求項8に記載するプリンタにおいて、
前記プリンタは、
前記画像データの取得に基づいて、前記所定数の前記ラスタ領域を前記メモリに確保し、取得された前記画像データに基づく印刷ジョブが完了した場合に、確保された前記ラスタ領域を解放し、
前記プリンタは、
生成された前記ラスタデータを前記ラスタ領域に記憶する前記処理において、前記ラスタデータが記憶されていない前記ラスタ領域が無く、かつ部単位での印刷が指定されている場合、前記画像データの取得時に確保された前記所定数の前記ラスタ領域に加えて、新たな前記ラスタ領域を前記メモリに確保し、新たな前記ラスタ領域に、生成された前記ラスタデータを記憶する、
ことを特徴とするプリンタ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021157852A JP2023048503A (ja) | 2021-09-28 | 2021-09-28 | プリンタ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021157852A JP2023048503A (ja) | 2021-09-28 | 2021-09-28 | プリンタ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023048503A true JP2023048503A (ja) | 2023-04-07 |
Family
ID=85780141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021157852A Pending JP2023048503A (ja) | 2021-09-28 | 2021-09-28 | プリンタ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023048503A (ja) |
-
2021
- 2021-09-28 JP JP2021157852A patent/JP2023048503A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8054474B2 (en) | Image data producing apparatus, image forming apparatus and computer readable medium | |
US8159709B2 (en) | Method for canceling a print job submitted to a printer | |
JP6034555B2 (ja) | 印刷制御装置及びその制御方法 | |
US8189221B2 (en) | Image forming device for executing a designated process with priority without canceling a previously accepted process | |
US7315387B2 (en) | Print control method and apparatus, and print system | |
JP2019040528A (ja) | サーバ装置及びその制御方法、プログラム、並びに印刷システム | |
JP2012086449A (ja) | 画像形成装置、ジョブ管理方法、及びプログラム | |
US8582135B2 (en) | Image forming apparatus, control method therefor, and computer-readable storage medium | |
JP6748445B2 (ja) | 画像形成装置、画像形成装置の制御方法、および、プログラム | |
US9785871B2 (en) | Print control device and non-transitory computer readable medium | |
US20130194609A1 (en) | Printing apparatus and method of controlling the same | |
JP4368195B2 (ja) | 印刷装置および印刷制御方法 | |
US8665460B2 (en) | Print system, printing apparatus, printing method and printing program | |
JP3667043B2 (ja) | 情報処理システム、情報処理装置、及び印刷制御方法 | |
JP2023048503A (ja) | プリンタ | |
JP2000132347A (ja) | プリント方法及び該プリント方法を実施するプリンタ及び記憶媒体 | |
US20190012120A1 (en) | Image processing apparatus and image forming apparatus | |
JP7384031B2 (ja) | 印刷装置、制御方法、及び制御プログラム | |
JP2012155415A (ja) | 印刷システム | |
JP2012224035A (ja) | 印刷装置、印刷装置の制御方法、及びプログラム | |
JP2023050593A (ja) | プリンタ | |
JPH10289078A (ja) | 出力制御方法及び装置 | |
JP3583879B2 (ja) | プリンタ制御装置 | |
JP2012162041A (ja) | 画像形成装置、画像形成装置の制御方法及びプログラム | |
JP2023050596A (ja) | プリンタ |