説明

プリンタ、プリンタの制御方法及びドライバ

【課題】ホストコンピュータに搭載されるアプリケーションプログラムやプリンタドライバを変更せずとも、用紙幅が小さな用紙に、印字体裁を保った視認性の良い印刷を実施できるプリンタを提供すること。
【解決手段】ホストコンピュータ3から送信された印刷データ5に基づき印刷するプリンタ1の制御方法であって、少なくとも1ページ分の印刷範囲が設定し印刷範囲に印刷データを展開するステップS13と、印刷範囲に展開された1ページ分の印刷データに、所定値以上連続した空白データが含まれているか否かを判定し、含まれている場合には連続した空白データを削除して縮小印刷データ51を生成するステップS15,ステップS16と、縮小印刷データ51に基づき印刷するステップ17と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ホストコンピュータから送信された印刷データに基づき印刷するプリンタ、プリンタの制御方法及びドライバに関する。
【背景技術】
【0002】
近年、各種の販売店では、レジ打ち作業を軽減するとともに、仕入・棚卸と販売実績を結びつけた在庫管理・発注管理の精度向上を計ることを目的として、POSシステムを導入している店舗が多くなっている。
このPOSシステムでは、例えば、販売店の会計場所に設置されているPOS用のレジスター(POS端末)に、顧客が購入する商品に付与されているバーコードを読み取らせると、その商品の販売情報(商品名、数量、販売金額、販売合計金額、販売時刻など)が記録される一方で、その商品の販売金額等を記載したレシートが発行されるようになっている。
【0003】
通常、POS端末が読み取った商品の販売情報は、POS端末からホストコンピュータに通知され、ホストコンピュータ側で分析されて、在庫管理・発注管理等に利用される。
また、POSシステムでは、POS端末から商品の販売情報を受けたホストコンピュータが、その販売情報を所定の印刷用紙幅に収まるように配置したレシート印刷データを生成し、生成したレシート印刷データをプリンタに出力することで、レシートの発行を行う。
ホストコンピュータには、POS端末から受けた商品の販売情報に基づいて販売情報に含まれる各種のデータの配置を指定したレシート印刷データを生成するレシート印刷用のアプリケーションプログラムと、このアプリケーションプログラムが生成したレシート印刷データをプリンタに出力するプリンタドライバとが、搭載されている。
【0004】
また、レシート印刷データには、通常、販売店舗名、店舗の連絡先、販売日時、販売した商品名、販売数量、商品毎の販売金額、販売合計金額、店舗の広告用の文章などのデータが含まれる。レシート印刷データを生成するアプリケーションプログラムやプリンタドライバは、レシート印刷データを構成する各種データを、データ種毎に体裁を整えて配置設定をする。
【0005】
近年では、印刷用紙の節約を目的として、ホストコンピュータに搭載されるアプリケーションプログラムやプリンタドライバを改良して、例えば印刷する文字のフォントサイズを縮小することにより、印刷幅を短縮した縮小印刷データを生成して、より小さな用紙幅の印刷用紙への印刷を実現する技術が各種提案されている(下記特許文献1〜6参照)。
【0006】
【特許文献1】特開平05−24301号公報
【特許文献2】特開平08−132703号公報
【特許文献3】特開平09−286143号公報
【特許文献4】特開2004−42406号公報
【特許文献5】特開2006−48520号公報
【特許文献6】特開2000−25297号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
従来のPOSシステムで使用されるプリンタは、収容する用紙幅が固定である場合が多い。このため、用紙の節約等のためにレシート用紙を用紙幅が小さなものに変更するには、プリンタ自体を、その用紙幅に対応するプリンタに置き換える必要がある。そして、プリンタを置き換えた場合には、変更された用紙幅に対応したレシート印刷データをホストコンピュータがプリンタに出力できるように、ホストコンピュータ側に搭載するアプリケーションプログラムやプリンタドライバの変更を行う必要がある。このため、ホストコンピュータへの新しいプログラムの導入等の保守作業に手間がかかる場合がある。
【0008】
印刷する文字のフォントサイズを単純に一律に縮小して、変更された用紙幅に収まるよう縮小した印刷データを生成することは、比較的容易に実現できるが、このような対応では、例えば、レシートに印刷される文字サイズが小さくなり過ぎて、レシートに記載される購入商品や購入数量や金額等の各種情報の視認性が低下する虞がある。
【0009】
本発明の目的は上記課題を解決するためになされたものであって、プリンタを小さな用紙幅の機種に変更した場合に、ホストコンピュータに搭載されるアプリケーションプログラムやプリンタドライバを変更せずとも、用紙幅が小さな用紙に、印字体裁を保った視認性の良い印刷を実施でき、小さな用紙幅の用紙の採用による用紙の節約を実現できるプリンタ、プリンタの制御方法及び動作制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
上記課題を解決することのできる本発明は、ホストコンピュータから送信された印刷データに基づき印刷するプリンタであって、
前記印刷データから実印刷データを展開して記憶部に記憶するデータ展開部と、
前記記憶部に記憶された前記実印刷データに、所定値以上連続した空白データ(印刷しないドットに該当するデータ)が含まれているか否かを判定し、含まれている場合には前記連続した空白データを削除して所定の印刷範囲内に前記実印刷データを生成する制御部と、
前記実印刷データに基づき印刷する印刷実行部と、を有することを特徴とする。
【0011】
上記構成によれば、ホストコンピュータから送信された印刷データは、プリンタ側のデータ展開部によって展開された後記憶される。このとき、所定値以上連続した空白データが含まれている場合はこれらの空白データが削除される。例えばPOSシステム等において、用紙幅の狭い紙に変更した場合やプリンタを小さな用紙幅の機種に変更した場合に、ホストコンピュータに搭載されるアプリケーションプログラムやプリンタドライバを変更せずとも、プリンタ側だけで、連続する空白データを削除して用紙幅が小さな用紙に印刷することができる。この場合、実印刷データとは実際にプリンタのヘッドで印刷するドットに展開したデータである。
したがって、プリンタや用紙の変更時に、ホストコンピュータ側のアプリケーションプログラムやプリンタドライバを変更しなければならないという不便を回避でき、プリンタの導入時における取り扱い性を向上させることができる。さらに、用紙やプリンタの変更による小幅の用紙の採用によって、用紙の節約を実現することができる。
【0012】
また、本発明のプリンタにおいて、前記制御部は、前記印刷データのデータ属性を抽出し、前記データ属性に基づき前記印刷範囲を、前記空白データを削除する削除対象領域と非削除領域とに区別し、前記削除対象領域に含まれる前記空白データのみを削除することを特徴とする。
【0013】
例えばレシートの先頭に印刷されるロゴなどの画像データから空白データを削除すると、本来のロゴとは異なる印刷結果が出力される虞がある。また、バーコードのような画像データから空白データを削除すると、本来のバーコードの規格から外れたコードとなったり、異なるコードとして読み取られ虞がある。上記構成によれば、印刷範囲を削除対象領域と非削除領域とに区別し、ロゴやバーコードなどのデータ属性を持つ非削除領域からは空白データを削除しないよう構成することができる。したがって、空白データを削除することになじまないデータが展開される領域を非削除領域として区別することで、上述したような期待する印刷結果と異なるものが出力されることを防止することができる。
【0014】
また、本発明のプリンタにおいて、前記制御部は、前記削除対象領域のうち、空白データが第1の方向に所定値以上連続した空白データを削除する第1の削除、及び空白データが前記第1の方向と直行する第2の方向に所定値以上連続した空白データを削除する第2の削除の少なくとも一方を実行することを特徴とする。
【0015】
上記構成によれば、第1の削除と第2の削除を実行することができる。したがって、第1の方向を印刷媒体の幅方向とすれば、第1の削除によって小さな用紙幅の用紙の採用による用紙の節約を実現できる。さらに、第2の削除によって印刷媒体の長さ方向にも用紙を節約することができる。
【0016】
また、本発明のプリンタにおいて、前記実印刷データが文字データから展開されたものを含み、前記第2の方向は前記文字データの行方向に相当するものである場合、前記制御部は、前記第2の削除を実行するときは、前記文字データが複数行連続して展開されているものを含む連続文字領域と、前記連続文字領域以外の領域とで、削除する空白データの割合を変えることを特徴とする。
【0017】
上記構成によれば、連続文字領域と、連続文字領域以外の領域とで、削除する空白データ行数の割合を変えることができる。例えば、連続文字領域における展開された文字データ間の空白データと、改行が連続する連続文字領域以外の領域における展開された空白データと、で空白データ行数の削除割合を変えることによって、展開された文字データ同士が重なってしまうことを防止することができる。さらに、実印刷データのレイアウトが変更されることを防止することができる。一律に同じ割合で空白データ数を削除する場合と比較して、削除を実行する前の実印刷データにより近い印刷体裁を保った印刷結果を出力することができる。
【0018】
また、本発明のプリンタにおいて、前記実印刷データが、前記印刷範囲を所定の区域に区切る区切りデータから展開されたものを含む場合、前記制御部は、前記削除対象領域内に前記区切りデータから展開されたものが含まれるときは、前記空白データ及び前記空白データと隣接する前記区切りデータから展開された実印刷データを削除することを特徴とする。
【0019】
印刷範囲を区切る区切りデータとして、例えば “−”ハイフンが含まれている場合は、連続する“−”ハイフンのせいで空白データが所定値以上連続しないことになる。このため、削除を効果的に実行できない場合が発生する。しかしながら、上記構成によれば、区切りデータが含まれている場合であっても、空白データのみならずそれと隣接する展開された区切りデータも削除することができる。このため、小さな用紙幅の用紙の採用による用紙の節約を実現できるとともに、印刷データにより近い印刷体裁を保った印刷結果を出力することができる。
【0020】
また、本発明のプリンタにおいて、前記実印刷データが、前記印刷範囲を所定の区域に区切る区切りデータから展開されたものを含む場合、前記制御部は、前記削除対象領域内に前記区切りデータから展開されたものが含まれるときは、前記削除対象領域を前記区切りデータから展開された実印刷データに応じて複数の分割領域に分割し、前記分割領域毎に削除を実行することを特徴とする。
【0021】
上記構成によれば、削除対象領域を区切る区切りデータとして、例えば“−”ハイフンが含まれている場合は、連続する“−”ハイフンのせいで空白データが所定値以上連続しないことになる。このため、削除を効果的に実行できない場合が発生する。しかしながら、上記構成によれば、区切りデータが含まれている場合であっても、展開された区切りデータに応じて分割された分割領域毎に削除を実行することで、より効果的に空白データを削減できる。したがって、区切りデータが含まれている場合であっても小さな用紙幅の用紙の採用による用紙の節約を実現できる。
【0022】
また、本発明のプリンタにおいて、前記制御部は、前記空白データを削除した後、前記実印刷データの印刷位置を再配置することを特徴とする。
【0023】
上記構成によれば、削除した後は実印刷データの再配置を行うため、小さな用紙幅の用紙の採用による用紙の節約を実現できるとともに、削除する前の実印刷データにより近い印刷体裁を保った印刷結果を出力することができる。
【0024】
また、上記課題を解決することのできる本発明は、ホストコンピュータから送信された印刷データに基づき印刷するプリンタの制御方法であって、
前記印刷データから実印刷データを展開して記憶するステップと、
前記記憶された実印刷データに、所定値以上連続した空白データが含まれているか否かを判定し、含まれている場合には前記連続した空白データを削除して所定の印刷範囲内に前記実印刷データを生成するステップと、
前記実印刷データに基づき印刷するステップと、を有することを特徴とする。
【0025】
上記構成によれば、プリンタを小さな用紙幅の機種に変更した場合に、ホストコンピュータに搭載されるアプリケーションプログラムやプリンタドライバを変更せずとも、プリンタ側において、各ステップを実施させるだけで、用紙幅が小さな用紙に印刷することが可能になる。したがって、プリンタの導入時に、ホストコンピュータ側のアプリケーションプログラムやプリンタドライバを変更しなければならないという不便を回避でき、プリンタの導入時における取り扱い性を向上させることができる。そして、プリンタの変更による小幅の用紙の採用によって、用紙の節約を実現することができる。
【0026】
また、上記課題を解決することのできる本発明のドライバは、プリンタに接続されるコンピュータに搭載されるもので、前記コンピュータ上のアプリケーションソフトから渡される印刷データを展開し記憶するステップと、
前記記憶された実印刷データに、所定値以上連続した空白データが含まれているか否かを判定し、含まれている場合には前記連続した空白データを削除して所定の印刷範囲内に前記実印刷データを生成するステップと、
前記実印刷データをプリンタへ送信するステップと、を実行させることを特徴とする。
【0027】
上記構成によれば、ドライバをホストコンピュータに搭載することによって、ホストコンピュータ上のアプリケーションプログラムを変更せずとも、各ステップを実施させて、用紙幅が小さな用紙に印刷することが可能になる。
したがって、プリンタの導入時に、ホストコンピュータ側のアプリケーションプログラムを変更しなければならないという不便を回避でき、プリンタの導入時における取り扱い性を向上させることができる。そして、上記ドライバを提供できるプリンタを採用することによって、用紙の節約を実現することができる。
【発明を実施するための最良の形態】
【0028】
以下、本発明に係るプリンタ、およびそのプリンタの制御方法及びドライバの実施形態について、図面を参照して詳細に説明する。
図1は本発明に係るプリンタの一実施の形態の構成を示すブロック図、図2(a)はホストコンピュータから送信されたレシート印刷データの構成図、図2(b)は本実施形態のプリンタが生成した縮小印刷データの構成図、図3は本実施形態のプリンタにおける縮小印刷データの生成処理を説明するためのフローチャートである。
【0029】
図1に示したプリンタ1は、POSシステムにおいてレシートの発行を行うプリンタで、ホストコンピュータ3から送信された印刷データ5(図2(a)参照)に基づき印刷処理を実行する。なお、本実施形態のホストコンピュータ3は、POSシステムにおけるPOS端末の機能を含めた構成となっている。
【0030】
印刷データ5は、ホストコンピュータ3にインストールされているレシート印刷用のアプリケーションプログラム7が、POS端末から送信された販売商品情報に基づいて作成したレシート印刷データで、ホストコンピュータ3にインストールされているプリンタドライバ9を介してプリンタ1に送信される。
【0031】
レシート印刷データである印刷データ5には、図2(a)に示すように、販売店情報欄D1(非削除領域)、商品情報欄D2(削除対象領域)、バーコード欄D3(非削除領域)が上方から順に配列されている。これらの各情報欄に記載されるデータ種(データ属性)は、次の通りである。
【0032】
販売店情報欄D1には、販売店のロゴ等の画像データが、バーコード欄D3にはバーコードデータが印刷される。なお、画像データやバーコードデータは、印刷時にホストコンピュータ3から送信してもよいし、プリンタ1の不図示の記憶手段に予め保持しておきその都度読み出すよう構成してもよい。
商品情報欄D2には、販売日時情報、商品名、販売金額、合計金額等が印刷される。
【0033】
本実施形態のプリンタ1は、ホストコンピュータ1から送信された80mm幅対応の印刷データ5を、図2(b)に示すような58mm幅に変換した縮小印刷データ51(実印刷データ)を生成し印刷する。その際プリンタ1は、印刷データ5に所定値以上連続した空白データが含まれているか否かを判定し、含まれている場合には連続した空白データを削除することによって縮小印刷データ51を生成する。
【0034】
プリンタ1は、ホストコンピュータ3からプリンタドライバ9を介して送信された印刷データ5を、通信インタフェース11を介して受信して、受信バッファ13に格納する。
このプリンタ1には、印刷データ5を予め設定した縮小幅に縮小した縮小印刷データ51(図2(b)参照)に変換する主制御部15と、縮小印刷データ51に基づいて印刷ヘッド17を作動させて印刷処理を実行する印刷実行部19とが備えられている。印刷実行部19は、プリンタ1による一連の処理の中で、後述する主制御部15が生成する縮小印刷データ51に基づいて印刷処理を実行する。
【0035】
プリントバッファ14は、レシート1ページ分の印刷データ5を展開できる容量を備えている。ここでは、少なくとも印刷データ5を展開できる容量を備えており、プリントバッファ14内に設定されたレシート1ページ分の印刷範囲のうち指定された位置に印刷データ5が展開される。このように、受信バッファ13に一時的に格納された印刷データ5はプリントバッファ13に順次展開される。
【0036】
印刷データ5から縮小印刷データ51を生成する処理は、主制御部1515が行う。主制御部15は、プリンタ内のプログラム格納部21に格納されている動作制御プログラム22に基づいて、印刷データ5を処理する。具体的には、印刷データ5に含まれる各データのデータ属性を抽出し、その配列等を解析して、印刷データ5の各情報欄D1,D2,D3のいずれの欄に記載されるデータであるかを判別する。
【0037】
商品情報欄D2に含まれるデータであるか否かを判定する方法としては、販売店舗情報欄D1に印刷される画像データあるいは画像データの読み出しを指示するコマンドを読み出した後に、ASCIIコードの数字0x31〜0x39(数字の0〜9)、金額記号の0x24($)又は0x2F(¥)あるいは小数点記号の0x2E(.)など(データ属性)で構成されている文字列を読み出した場合は、数量や金額の文字列とみなし、商品情報欄D2の開始として判別することができる。
また、上記ASCIIコードなどで構成される文字列を読み出して展開した後に、バーコードデータあるいはバーコード読み出しを指示するコマンドを読み出した場合は、バーコードフォントとみなし、商品情報欄D2の終了として判別することができる。
【0038】
このように、主制御部15は、プリントバッファ14に展開される印刷データのデータ属性を抽出し、そのデータ属性に基づき印刷範囲を、空白データを削除する削除対象領域(商品情報欄D2)と非削除領域(販売店舗情報欄D1,バーコード欄D3)とに区別する。そして、削除対象領域(商品情報欄D2)に含まれる空白データを削除し、縮小印刷データ51を生成する。
なお、空白データを削除する処理としては、空白データ列がレシートの幅方向に連続した空白データを削除する横方向削除処理(第2の削除)と、空白データ行がレシートの長さ方向に連続した空白データを削除する縦方向削除処理(第1の削除)とがある。
【0039】
削除値保持部25には、空白データの削除値が格納されている。具体的には、横方向削除処理の際に、空白データ列がs列以上連続する場合に削除する空白データ列数r、縦方向削除処理の際に、空白データ行がn行以上あるいはn'行以上連続する場合に削除する空白データ行数mあるいはm'、がそれぞれ格納されている。
本実施形態では、それぞれの値は、例えば次のような関係を有している。
(s>r,r≧2)
(n>m,m≧2)、(n'>m',m'≧4)
なお、s,r,n,n',m,m'の値はそれぞれコマンドによって書き換えることが可能である。
【0040】
図3は、プリンタ1が行う空白データを削除して縮小印刷データを生成する処理の流れを説明するためのフローチャートである。
受信バッファ13に印刷データ5が格納されると、データ展開部15aが印刷データ5を取り出してコードやコマンド等を解析し、プリントバッファ14に展開するイメージデータを作成する(ステップS11,ステップS12)。作成したイメージデータはプリントバッファ14に格納される(ステップS13)。
【0041】
具体的には、ロゴを構成する画像データを受信した場合は、プリントバッファ14に設定されている印刷範囲において指定された印刷位置に、画像データをそのまま展開する。また、文字コードや数字コードのようなコードを受信した場合は、コードに対応する文字列、数字列を読み出し、イメージデータに変換してプリントバッファ14に展開する。
なお、プリンタ1側に予め保持している画像データを展開するよう指示するコマンドを受信した場合は、プリンタ1が保持している画像データを読み出し、イメージデータに変換してプリントバッファ14に展開する。
【0042】
プリントバッファ14にレシート1ページ分のイメージデータを展開すると(ステップS14:Yes)、展開したイメージデータに対して縦方向削除処理及び横方向削除処理を実行する(ステップS15,ステップS16)。縦方向削除処理及び横方向削除処理によって縮小されたイメージデータすなわち縮小印刷データ51に基づき、印刷実行部19が印刷ヘッド17を駆動させて58mm幅のレシート用紙に印刷する(ステップS17)。
なお、縦方向削除処理(ステップS15)と横方向削除処理(ステップS16)の実行順序は、逆であってもよい。
【0043】
[縦方向削除処理について]
次に、図3のステップS15の縦方向削除処理について図4及び図5を参照して詳細に説明する。図4は、縦方向削除処理の流れを説明するためのフローチャートであり、図5(a)は、削除対象領域(商品情報欄D2)において縦方向削除処理を実行する前のイメージ、(b)は削除対象領域において縦方向削除処理を実行した後のイメージを模式的に示した図である。
【0044】
<空白データ行の検出処理>
まず、図5に示す座標において、i=0をセットすると(ステップS21)、i=0行が文字領域、すなわち削除対象領域D2にあるかを判定する(ステップS22:Yes,ステップS23)。i=0行が削除対象領域D2にない場合は、iを1プラスして(ステップS24)次のデータ行について判定する。
i=0行が削除対象領域D2にある場合は(ステップS23:Yes)、削除対象領域D2のi=0行におけるj=0からj=Jまで空白データを探索する。j=0をセットすると(ステップS25,ステップS26)、イメージデータimg(i,j)=(0,0)は空白データか否かを判定する(ステップS27)。空白データではない場合は(ステップS27:No)iを1プラスして(ステップS24)次のデータを探索する。空白データであった場合は(ステップS27:Yes)、i=0行目の空白行位置情報として記録し(ステップS28)、jを1プラスして(ステップS29)次のデータ、すなわちimg(0,1)が空白データか否かを判定する。
【0045】
すなわち、img(0,0)からimg(0,J)まで空白データが連続した場合は、i=0行を空白データ行として記録する。例えば、空白データ行にはフラグをたてておく。
img(0,0)からimg(0,J)まで空白データが連続しなかった場合は、i=0行を空白データ行として記録せずに、iを1プラスしてi=1行目の空白データの探索を行う。つまり、img(1,0)からimg(1,J)まで空白データが連続するかを探索する。上記処理をi=I行まで繰り返し実行し、空白行位置情報を取得する。
【0046】
<連続空白データ行の削除処理>
上記処理をi=I行まで実行すると(ステップS22:No)、連続する空白データ行の削除処理を行う。i=0をセットすると(ステップS31)、ステップS28で記録した空白行位置情報に基づきi=0行が空白データ行か否かを判定する(ステップS33)。空白データ行と判定した場合は(ステップS33:Yes)、連続空白データ行(L)としてカウントする。iを1プラスして(ステップS35)次のi=1行が空白データ行か否かを再び判定する(ステップS33)。以降、空白データ行が続く限りステップS33,ステップS34,ステップS35を繰り返し実行する。
【0047】
ステップS33で空白データ行ではないと判定すると(ステップS33:No)、ステップS34でカウントした連続空白データ行(L)がn行以上連続するかを判定する(ステップS36)。nの値は、削除値保持部25に予め格納されている値である。連続空白データ行(L)がn行以上連続しない場合は(ステップS36:No)、空白データ行の削除処理を実行せずにiに1をプラスし、ステップS32からステップS36の処理を繰り返し実行する。
【0048】
連続空白データ行(L)がn行以上連続する場合は(ステップS36:Yes)、さらに連続空白データ行(L)がn'行以上連続するかを判定する(ステップS38)。n'の値は、削除値保持部25に予め格納されている値である。連続空白データ行(L)がn'以上連続しない場合は(ステップS38:No)、イメージデータimg(i,j)に含まれている連続空白データ行(L)から(L−m)行だけ空白データ行を削除する(ステップS39)。一方、連続空白データ行(L)がn'以上連続する場合は(ステップS38:No)、イメージデータimg(i,j)に含まれている連続空白データ行(L)から(L−m')行だけ空白データ行を削除する(ステップS40)。
【0049】
すなわち、連続空白データ行(L)がn'以上連続しなかった場合、その連続空白データ行(L)は連続文字領域C1あるいはC2(図5(a)参照)に含まれる行であり、少なくともm行の空白データ行を残すよう処理する。
一方、連続空白データ行(L)がn'以上連続した場合、その連続空白データ行(L)は連続空白行領域E(図5(a)参照)に含まれる行であり、少なくともm'行の空白データ行を残すよう処理する。例えば2行以上連続した改行が連続空白領域Eに該当する。
【0050】
本実施形態では、縦方向削除処理を実行する場合は、文字データが複数行連続する連続文字領域C1,C2と、連続文字領域以外の連続空白領域Eと、によって、削除する空白データ行数の割合を変えるよう設定されている。すなわち、連続空白領域Eはレシートのレイアウトを決定する重要な要素であるため、連続文字領域C1,C2での削除率(m/L)と連続空白領域Eでの削除率(m'/L)とが異なる割合となるようにしている。具体的には、文字が重なることを防ぐ為に、連続文字領域C1,C2ではm=2行以上、連続空白領域Eではm'=4行以上の連続した空白データ行を設けるようにする。
図4のフローにしたがって空白データ行を削除した結果を図5(b)に示す。連続文字領域C1あるいはC2において行データ同士の空白データ行が削除されて、文字データが密接して印刷されるが、連続空白領域Eを含めレイアウトをほぼ保った状態で印刷することができる。
【0051】
[横方向削除処理について]
次に、図3のステップS16の横方向削除処理について図6及び図7を参照して詳細に説明する。図6は、横方向削除処理の流れを説明するためのフローチャートであり、図7(a)は、削除対象領域(商品情報欄D2)において横方向削除処理を実行する前のイメージ、(b)は削除対象領域において横方向削除処理を実行した後のイメージを模式的に示した図である。
【0052】
<空白データ列の検出処理>
図7に示す座標において、j=0をセットし(ステップS51,ステップS52:Yes)、i=0をセットする(ステップS53)。i=0が文字領域すなわち削除対象領域D2にあり、且つ区切り文字領域F1,F2以外にあるかを判定する(ステップS54:Yes,ステップS55)。i=0行が削除対象領域D2にない場合は(ステップS55:No)、iを1プラスして(ステップS56)次のデータを探索する。
i=0が削除対象領域D2にあり、且つ区切り文字領域F1,F2以外にある場合は(ステップS55:Yes)、イメージデータimg(i,j)=(0,0)が空白データか否かを判定する(ステップS57)。空白データではない場合は(ステップS57:No)、jを1プラスして(ステップS58)次のデータを探索する。空白データであった場合は(ステップS57:Yes)、j=0列目の空白列位置情報として記録し(ステップS59)、iを1プラスして(ステップS56)次のデータ、すなわちimg(1,0)を探索する。
【0053】
すなわち、img(0,0)からimg(I,0)まで空白データが連続した場合は、j=0列を空白データ行として記録する。例えば、空白データ列にはフラグをたてておく。
img(0,0)からimg(I,0)まで空白データが連続しなかった場合は、j=0列を空白データ行として記録せずに、jを1プラスしてj=1列目の空白データの探索を行う。つまり、img(0,1)からimg(I,1)まで空白データが連続するかを探索する。
【0054】
一方、ステップS55で、i=0行が削除対象領域D2にないか、あるいは区切り文字領域F1,F2にある場合は(ステップS55:No)、iを1プラスして次の行の空白データの探索を行う。このように、区切り文字領域F1,F2にある場合は、空白データの探索を行うことなく、次の行の探索を行う。これは、区切り文字領域F1,F2を空白データの探索対象に含めてしまうと、複数列に亘って連続する空白データ列を検出できないため、空白データ列の削除処理を効果的に行うことができない。このため、本実施形態では、区切り文字領域F1,F2における空白データの探索処理を省略している。
【0055】
<連続空白データ列の削除処理>
上記処理をj=J列まで実行すると(ステップS52:No)、連続する空白データ列の削除処理を行う。j=0をセットすると(ステップS61)、ステップS59で記録した空白列位置情報に基づきj=0列が空白データ列か否かを判定する(ステップS63)。空白データ列と判定した場合は(ステップS63:Yes)、連続空白データ列(c)としてカウントする(ステップS64)。jを1プラスして(ステップS65)次のj=1列が空白データ列か否かを再び判定する(ステップS63)。以降、空白データ列が続く限りステップS63,ステップS64,ステップS65を繰り返し実行する。
【0056】
ステップS63で空白データ列ではないと判定すると(ステップS63:No)、ステップS64でカウントした連続空白データ列(c)がs列以上連続するかを判定する(ステップS66)。sの値は、削除値保持部25に予め格納されている値である。連続空白データ列(c)がs列以上連続しない場合は(ステップS66:No)、空白データ列の削除処理を実行せずにjに1をプラスし、ステップS62からステップS66の処理を繰り返し実行する。
【0057】
連続空白データ列(c)がs列以上連続する場合は(ステップS66:Yes)、イメージデータimg(i,j)に含まれている連続空白データ列(c)から(c−r)行だけ空白データ列を削除する(ステップS67)。このとき、r行分の空白データ列を削除するだけでなく、削除するr行分の空白データ列と隣接する区切りデータ列も含めて削除する。具体的には、図7(a)に示すように、空白データ列c1〜c6を削除するだけでなく、空白データ列c1〜c6と隣接する区切りデータ列F3〜F6も空白データ列に含めて削除する。
【0058】
このように、本実施形態によれば、縦方向削除処理のみならず横方向削除処理を実行することができる。したがって、横方向削除処理によって小さな用紙幅の用紙の採用による用紙の節約を実現できる。さらに、縦方向削除処理によってレシートの長さ方向にも用紙を節約することができる。
【0059】
[横方向削除処理の変形例について]
次に、図3のステップS16の横方向削除処理の変形例について図8及び図9を参照して詳細に説明する。図8(a)は、削除対象領域(商品情報欄D2)において横方向削除処理を実行する前のイメージ、(b)は削除対象領域において横方向削除処理を実行した後のイメージを模式的に示した図であり、図9は、図8(b)の各ブロックを基準線に合わせて再配置した場合のイメージを模式的に示した図である。
【0060】
削除対象領域D2を横方向に区切る区切りデータを含む区切り文字領域F1,F2がある場合で、横方向削除処理を実行する際には、削除対象領域D2を区切り文字領域F1,F2に応じて複数の分割領域B1〜B3に分割し、分割領域B1,B2,B3毎に横方向削除処理を実行する。
すなわち、図6のステップS51〜ステップS59を繰り返し実行して、空白列位置情報を記録し、記録した空白列位置情報に基づき削除対象領域D2を複数の分割領域B1〜B3に分割し、分割領域B1,B2,B3に含まれる削除対象分割領域b1,b2,b3を割り出す。そして、削除対象分割領域b1,b2,b3について、図6のステップS61〜ステップS68を繰り返し実行することによって、空白データの削除処理を行う。
【0061】
なお、削除する空白データ列(r)は、分割領域B1,B2,B3毎に異なる値であっても、同じ値であってもよい。
分割領域B1,B2,B3毎に異なる値の空白データ列(r)を削除対象分割領域b1,b2,b3から削除した場合は、図8(b)に示すように各分割領域B1,B2,B3間でレイアウトが崩れてしまう。このような場合は、図8(b)及び図9に示すように、文字データを含む分割領域b4〜b8のうち、最も右側に位置する分割領域b6の右端に合わせた基準線Xを設け、基準線Xに揃うように各分割領域b4〜b8を再配置する。すなわち、図9に示すように分割領域b4の右端が基準線Xに揃うよう分割領域b4を右側に移動させ、分割領域b8の右端が基準線Xに揃うよう分割領域b8を右側に移動させる。なお、基準線Xより右側にはみ出した余りの区切りデータ“−”は、印刷対象としない。
【0062】
例えば、削除対象領域D2を横方向に区切る区切りデータとして、“−”ハイフンが連続して展開されている場合は、連続する“−”ハイフンのせいで空白データ列が所定値以上連続しない。このため、横方向削除処理を効果的に実行できない。しかしながら、上記変形例によれば、区切り文字領域F1,F2が含まれている場合であっても、区切り文字領域F1,F2に応じて分割された分割領域B1,B2,B3毎に横方向削除処理を実行することができる。したがって、区切りデータが含まれている場合であっても小さな用紙幅の用紙の採用による用紙の節約をより効果的に実現できる。
【0063】
なお、本実施形態ではプリンタ1が備える動作制御プログラム22を実行することによって縮小印刷データ51を生成する方法を説明したが、ホストコンピュータ3側のプリンタドライバ9が縮小印刷データ51を生成するよう構成することもできる。これによって、ホストコンピュータ3上のアプリケーションプログラムを変更せずとも、各ステップを実施させて、用紙幅が小さな用紙に印刷することが可能になる。したがって、ホストコンピュータ3側のアプリケーションプログラム7を変更しなければならないという不便を回避でき、プリンタの導入時における取り扱い性を向上させることができる。そして、プリンタドライバ9を提供できるプリンタを採用することによって、用紙の節約を実現することができる。
【図面の簡単な説明】
【0064】
【図1】本発明に係るプリンタの一実施の形態の構成を示すブロック図である。
【図2】(a)はホストコンピュータから送信されたレシート印刷データの構成図、(b)は本実施形態のプリンタが生成した縮小印刷データの構成図である。
【図3】本実施形態のプリンタにおける縮小印刷データの生成処理を説明するためのフローチャートである。
【図4】縦方向削除処理の流れを説明するためのフローチャートである。
【図5】(a)は、削除対象領域において縦方向削除処理を実行する前のイメージ、(b)は削除対象領域において縦方向削除処理を実行した後のイメージを模式的に示した図である。
【図6】横方向削除処理の流れを説明するためのフローチャートである。
【図7】(a)は、削除対象領域において横方向削除処理を実行する前のイメージ、(b)は削除対象領域において横方向削除処理を実行した後のイメージを模式的に示した図である。
【図8】(a)は、削除対象領域において横方向削除処理を実行する前のイメージ、(b)は削除対象領域において横方向削除処理を実行した後のイメージを模式的に示した図である。
【図9】図8(b)の各ブロックを基準線に合わせて再配置した場合のイメージを模式的に示した図である。
【符号の説明】
【0065】
1:プリンタ、3:ホストコンピュータ、5:印刷データ、7:アプリケーションプログラム、9:プリンタドライバ、13:受信バッファ、14:プリントバッファ、15:主制御部、15a:データ展開部、17:印字ヘッド、19:印刷実行部、21:プログラム格納部、22:動作制御プログラム、25:削除値保持部、51:縮小印刷データ(実印刷データ)、D1,Ds1:販売店情報欄、D2,Ds2:商品情報欄、D3,Ds3:バーコード欄、B1〜B3:分割領域、b1〜b3:削除対象分割領域。

【特許請求の範囲】
【請求項1】
ホストコンピュータから送信された印刷データに基づき印刷するプリンタであって、
前記印刷データから実印刷データを展開して記憶部に記憶するデータ展開部と、
前記記憶部に記憶された前記実印刷データに、所定値以上連続した空白データが含まれているか否かを判定し、含まれている場合には前記連続した空白データを削除して所定の印刷範囲内に前記実印刷データを生成する制御部と、
前記実印刷データに基づき印刷する印刷実行部と、を有することを特徴とするプリンタ。
【請求項2】
前記制御部は、前記印刷データのデータ属性を抽出し、前記データ属性に基づき前記印刷範囲を、前記空白データを削除する削除対象領域と非削除領域とに区別し、前記削除対象領域に含まれる前記空白データのみを削除することを特徴とする請求項1に記載のプリンタ。
【請求項3】
前記制御部は、前記削除対象領域のうち、空白データが第1の方向に所定値以上連続した空白データを削除する第1の削除、及び空白データが前記第1の方向と直行する第2の方向に所定値以上連続した空白データを削除する第2の削除の少なくとも一方を実行すること特徴とする請求項1または2に記載のプリンタ。
【請求項4】
前記実印刷データが文字データから展開されたものを含み、前記第2の方向は前記文字データの行方向に相当するものである場合、
前記制御部は、前記第2の削除を実行するときは、前記文字データが複数行連続して展開されているものを含む連続文字領域と、前記連続文字領域以外の領域とで、削除する空白データの割合を変えることを特徴とする請求項3に記載のプリンタ。
【請求項5】
前記実印刷データが、前記印刷範囲を所定の区域に区切る区切りデータから展開されたものを含む場合、
前記制御部は、前記削除対象領域内に前記区切りデータから展開されたものが含まれるときは、前記空白データ及び前記空白データと隣接する前記区切りデータから展開された実印刷データを削除することを特徴とする請求項3または4に記載のプリンタ。
【請求項6】
前記実印刷データが、前記印刷範囲を所定の区域に区切る区切りデータから展開されたものを含む場合、
前記制御部は、前記削除対象領域内に前記区切りデータから展開されたものが含まれるときは、前記削除対象領域を前記区切りデータから展開された実印刷データに応じて複数の分割領域に分割し、前記分割領域毎に削除することを特徴とする請求項3または4に記載のプリンタ。
【請求項7】
前記制御部は、前記空白データを削除した後、前記実印刷データの印刷位置を再配置することを特徴とする請求項6に記載のプリンタ。
【請求項8】
ホストコンピュータから送信された印刷データに基づき印刷するプリンタの制御方法であって、
前記印刷データから実印刷データを展開して記憶するステップと、
前記記憶された実印刷データに、所定値以上連続した空白データが含まれているか否かを判定し、含まれている場合には前記連続した空白データを削除して所定の印刷範囲内に前記実印刷データを生成するステップと、
前記実印刷データに基づき印刷するステップと、を有することを特徴とするプリンタの制御方法。
【請求項9】
プリンタに接続されるコンピュータに搭載されるもので、
前記コンピュータ上のアプリケーションソフトから渡される印刷データから実印刷データを展開し記憶するステップと、
前記記憶された実印刷データに、所定値以上連続した空白データが含まれているか否かを判定し、含まれている場合には前記連続した空白データを削除して所定の印刷範囲内に前記実印刷データを生成するステップと、
前記実印刷データをプリンタへ送信するステップと、を実行させることを特徴とするドライバ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2010−17933(P2010−17933A)
【公開日】平成22年1月28日(2010.1.28)
【国際特許分類】
【出願番号】特願2008−180185(P2008−180185)
【出願日】平成20年7月10日(2008.7.10)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】