以下、本発明の実施の形態について図面を参照しながら詳細に説明する。
図1は本発明の実施の形態における印刷装置の概略構成図、図4は本発明の実施の形態における印刷装置の機能構成を示すブロック図である。
図1において、10は印刷装置であり、インクジェット方式、インパクト・ドット方式、電子写真方式、熱転写方式等の各種の画像形成方式を利用して、テープ、リボン等の帯状の長尺の媒体21に印刷を行うことが可能な装置であれば、いかなる種類の印刷装置であってもよく、さらに、モノクロ印刷装置であってもよいし、カラー印刷装置であってもよい。なお、本実施の形態においては、前記印刷装置10が感熱方式のモノクロ印刷装置である場合について説明する。
前記媒体21は、図1に示されるように、あらかじめ芯(しん)21bの周囲に巻付けられたロール21aの状態で用意され、前記芯21bを中心にして回転可能となるように、印刷装置10に装着される。そして、媒体21は、プラテンローラ22によって搬送されることにより、ロール12aから繰り出される。本実施の形態においては、前記媒体21が長尺の感熱紙であるものとして説明する。
また、前記印刷装置10には、前記媒体21の搬送路に沿って、媒体検出器としての媒体センサ19、印刷部としての印刷ヘッド11、媒体搬送装置としてのプラテンローラ22、及び、媒体切断機としてのカッタ12が配設されている。
前記媒体センサ19は、媒体21の有無を検出するとともに、ブラックマーク又は用紙間ギャップを検出するセンサである。そして、前記印刷ヘッド11は、媒体21に印刷を行うヘッドであり、例えば、媒体21側の面には、電圧が印加されることによって発熱する発熱素子が媒体21の搬送方向に対して直交する方向(媒体21の幅方向)に複数個並べて配設され、各発熱素子が選択的に発熱することにより、感熱紙である媒体21に所望の印刷パターンの印刷を行う。
また、前記プラテンローラ22は、媒体21の搬送路を挟んで印刷ヘッド11に対向するように配設され、前記媒体21を印刷ヘッド11の媒体21側の面に押し付ける。さらに、前記プラテンローラ22は、駆動源としての媒体搬送モータ13によって駆動されて正逆方向に回転し、前記媒体21を前後方向(図1における左右方向)に所望の長さだけ搬送する。そして、前記カッタ12は、図示されない駆動源によって駆動される可動刃であって媒体21の幅方向に延在する可動刃を備え、該可動刃が作動することによって、前記媒体21を所望の長さで切断する。
さらに、前記印刷装置10は、CPU、MPU等の演算手段、磁気ディスク、半導体メモリ等の記憶手段、通信インターフェイス等を備え、各部の動作を制御するための図示されない制御装置を備える。
そして、該制御装置は、機能の観点から、図4に示されるように、データ受信部15、主制御部16、データ記録部17、及び、機構制御部14を有する。
前記データ受信部15は、図示されないIEEE1284回線、RS−232c回線、USB回線等の通信回線を介して上位装置から送信された制御コマンド、印刷コマンド等を含むデータを受信するための通信制御を実施する。そして、前記データ受信部15は、上位装置からデ−タを受信後、受信したデータを前記データ記録部17が備える図示されない受信バッファに格納する。
また、前記主制御部16は、前記データ受信部15が受信した制御コマンド、印刷コマンド等を含むデータをデコードすることによって、印刷データか否かの区別、印刷データの種類、印刷データサイズ等の情報を取得する。そして、受信したデータが印刷データの場合、コマンド情報に基づいて印刷ヘッド11に合わせたドットパターンに展開したビットマップデータ(以降、「印刷ドットデータ」と称する。)を生成し、印刷を実施するために、図示されない印刷バッファに格納し、印刷起動をかける。また、受信したデータが、印刷装置10の設定変更を要する印刷速度設定、印刷濃度設定等のコマンドである場合、前記主制御部16は、印刷装置10の設定変更を行う。さらに、前記主制御部16は、データ記録部17にデータの記録及び読み込みを行い、前記機構制御部14への指示等を実施する。なお、前記データ記録部17に格納された印刷ドットデータがある場合、前記主制御部16は、機構制御部14へ印刷指示を行う。
また、前記主制御部16は、重複印刷パターン生成部16a、重複印刷領域算出部16b及び重複印刷制御判定部16cを備える。該重複印刷制御判定部16cは、カッタ12によって媒体21を切断するときに、次の印刷ドットデータのドットパターンが印刷ヘッド11の位置を跨(また)いでいるか否かに基づいて、ホワイトラインの発生するドットパターンであるか否かを判定する。そして、前記重複印刷領域算出部16bは、重複印刷制御判定部16cがホワイトラインが発生するドットパターンであるか否かを判定するために必要なホワイトライン発生位置等の情報を算出する。また、前記重複印刷パターン生成部16aは、重複印刷制御判定部16cが 重複印刷を実施すると判断した場合に、重複印刷を実施するドットパターンを生成する。そして、前記重複印刷領域算出部16bは、ホワイトライン発生位置から所定距離分を重複印刷領域とし、重複印刷開始位置及び重複印刷終了位置(ホワイトライン発生位置) を算出する。また、前記重複印刷パターン生成部16aは、印刷データの種類並びに印刷ドット及び該印刷ドットの周囲の印刷ドットのドットパターンに基づいて、重複印刷の印刷ドットのサイズを縮小する補正をかけ、重複印刷するドットパターンを生成する。
さらに、前記データ記録部17は、印刷装置10の各種設定を保存するとともに、一時的な印刷データ等を格納する機能を発揮する。そして、前記データ記録部17は、第1分割印刷ドットデータ記録部17a、第2分割印刷ドットデータ記録部17b及び重複印刷補正領域記録部17cを備える。前記重複印刷制御判定部16cが重複印刷を実施すると判定した場合、前記主制御部16が受信データをデコードして生成した印刷ドットデータのうち、媒体21を切断する前に印刷される印刷ドットデータが第1分割印刷ドットデータ記録部17aに記録され、媒体21を切断した後に印刷される印刷ドットデータが第2分割印刷ドットデータ記録部17bに記録される。また、重複印刷開始位置、重複印刷終了位置等の重複印刷領域に関するデータは、重複印刷補正領域記録部17cに記録される。
さらに、前記機構制御部14は、印刷ヘッド駆動制御部14a、カッタ駆動制御部14b及び媒体搬送モータ駆動制御部14cを備える。前記印刷ヘッド駆動制御部14aは、印刷ヘッド11の各発熱素子に印加される電圧を制御する。また、前記カッタ駆動制御部14bは、カッタ12の動作を制御し、可動刃を作動させる。さらに、前記媒体搬送モータ駆動制御部14cは、前記媒体搬送モータ13の動作を制御し、媒体21の搬送を制御する。
なお、前記主制御部16に接続された検出回路18は、媒体21のロール21aが装着されている否か、印刷装置10の図示されないカバーがオープンであるか否か等を検出するとともに、媒体センサ19の出力に基づいて、媒体21の有無、及び、ブラックマーク又は用紙間ギャップを検出する。
そして、本実施の形態における印刷装置10は、カッタ12が媒体21を切断する場合、媒体21の切断時に印刷ヘッド11が印刷データの印刷開始位置と印刷終了位置との間で印刷を中断するときには、主制御部16が重複印刷領域を設定し、プラテンローラ22が重複印刷領域分だけ媒体21を逆方向に搬送した後、印刷ヘッド11が印刷データの印刷を再開するとともにプラテンローラ22が媒体21の搬送を再開して重複印刷領域に重複印刷を実施し、主制御部16は、印刷データのタイプ並びに重複印刷領域における印刷ドット及び当該印刷ドットの周囲の印刷ドットのドットパターンに基づいて、重複印刷領域における印刷ドットのサイズを補正する。したがって、印刷が行われた媒体21を切断する場合であっても、ホワイトラインやブラックラインが発生することなく、高品質の印刷を行うことができる。
次に、前記構成の印刷装置10の動作について説明する。まず、主制御部16が実施する印刷制御処理について説明する。なお、該印刷制御処理は、前半と後半とに区別することができるので、最初に、印刷制御処理の前半について説明する。
図5は本発明の実施の形態における印刷制御処理の前半の動作を説明するフローチャートである。
印刷制御処理の前半が開始されると、まず、ステップS1で、主制御部16は、受信データがあるか否かを判定する。具体的には、データ受信部15が受信したデータがデータ記録部17の受信バッファにあるか否かを判定する。
そして、受信データがある場合、該受信データが印刷装置10の設定変更を要する印刷速度設定、印刷濃度設定等のコマンドであるか、バーコード、キャラクタ(文字)、その他イメージ等の印刷データであるか等を判定してデコードするために、ステップS2で、主制御部16は、受信データのデコード処理を実施する。データ受信部15が受信したデータが速度変更等の設定を変更するようなデータであった場合、主制御部16は印刷装置10の設定の変更を実施し、受信したデータがバーコード、キャラクタ、その他イメージ等の印刷データである場合、主制御部16は、印刷データの種類や印刷方向など印刷ドットデータ作成のための情報を取得する。
なお、受信データがない場合、ステップS1で、主制御部16は、受信データがあるか否かの判定を繰り返す。
続いて、ステップS3で、主制御部16は、印刷データがあるか否かを判定する。具体的には、デコードしたデータが印刷データであるか否かを判定する。そして、印刷データがない場合、ステップS1で、主制御部16は、受信データがあるか否かの判定を繰り返す。
また、印刷データがある場合、ステップS4で、主制御部16は、重複印刷制御判定処理を実施する。具体的には、重複印刷制御判定部16cが、前記印刷データが媒体21を切断するときに印刷ヘッド11の位置であるヘッド位置を跨ぐデータであって、ホワイトラインが発生する可能性があるデータであるか否かを判定し、重複印刷制御を実施するか否かを判定する。そして、重複印刷制御を実施する場合にはフラグをONにし、重複印刷制御を実施しない場合にはフラグをOFFにする。
続いて、ステップS5で、主制御部16は、印刷データに基づいて印刷ドットデータを生成する。
続いて、ステップS6で、主制御部16は、重複印刷制御がONであるか否かを判定する。具体的には、重複印刷制御判定処理においてON又はOFFにされたフラグに基づいて、重複印刷制御を実施するか否かを判定する。
そして、重複印刷制御がONでない場合、すなわち、フラグがOFFであって重複印刷制御を実施しないと判定された場合、ステップS7で、主制御部16は、印刷ドットデータの分割を実施しない通常の印刷制御を実施するために、印刷ドットデータをデータ記録部17の図示されない印刷バッファへ格納し、ステップS11で、印刷起動をかけて、印刷制御処理の前半を終了する。
また、重複印刷制御がONである場合、すなわち、フラグがONであって重複印刷制御を実施すると判定された場合、ステップS8で、主制御部16は、重複印刷パターン生成処理を実施する。印刷ドットデータが、媒体21を切断するときに印刷ヘッド11の位置であるヘッド位置を跨ぐデータである場合、印刷を一時中断して媒体21を切断するために位置ズレが発生し、位置ズレが発生した状態で印刷を再開するとホワイトラインが発生してしまう。そこで、印刷データが媒体21を切断するときに印刷ヘッド11の位置であるヘッド位置を跨ぐデータであると判定された場合、重複印刷を実施するために、主制御部16は、重複印刷パターン生成処理を実施する。重複印刷パターン生成処理を実施することによって、印刷ドットデータは、媒体21の切断前に印刷する部分のデータと媒体21の切断後に印刷する部分のデータとに分割され、媒体21の切断後に印刷する部分のデータの重複印刷を行う領域に対しての印刷パターンが生成される。
続いて、ステップS9で、主制御部16は、分割印刷データ(切断前)を印刷バッファに格納する。具体的には、分割された印刷ドットデータであって媒体21の切断前に印刷する部分のデータをデータ記録部17の第1分割印刷ドットデータ記録部17aに記録する。
また、ステップS10で、主制御部16は、分割印刷データ(切断後)を印刷バッファに格納する。具体的には、分割された印刷ドットデータであって媒体21の切断後に印刷する部分のデータをデータ記録部17の第2分割印刷ドットデータ記録部17bに記録する。
そして、ステップS11で、主制御部16は、印刷起動をかけて、印刷制御処理の前半を終了する。
次に、フローチャートについて説明する。
ステップS1 受信データがあるか否かを判定する。受信データがある場合はステップ2に進み、受信データがない場合は判定を繰り返し行う。
ステップS2 受信データのデコード処理を実施する。
ステップS3 印刷データがあるか否かを判定する。印刷データがある場合はステップS4に進み、印刷データがない場合はステップS1に戻る。
ステップS4 重複印刷制御判定処理を実施する。
ステップS5 印刷ドットデータを生成する。
ステップS6 重複印刷制御がONであるか否かを判定する。重複印刷制御がONである場合はステップS8に進み、重複印刷制御がONでない場合はステップS7に進む。
ステップS7 印刷ドットデータを印刷バッファへ格納する。
ステップS8 重複印刷パターン生成処理を実施する。
ステップS9 分割印刷データ(切断前)を印刷バッファに格納する。
ステップS10 分割印刷データ(切断後)を印刷バッファに格納する。
ステップS11 印刷起動をかけて、印刷制御処理の前半を終了する。
次に、印刷制御処理の後半について説明する。印刷制御処理の後半は、印刷ドットデータが印刷バッファに格納され、印刷起動がかけられた後に実施される制御であって、印刷バッファに格納された印刷ドットデータを1ラインずつ媒体21に印刷し、該媒体21を所定の位置で切断する動作を制御するための処理である。なお、前記ラインは、媒体21の搬送方向に対して直交する方向(媒体21の幅方向)に延在する印刷ドットのラインであって、印刷ヘッド11に配設された発熱素子のラインに対応する。
図6は本発明の実施の形態における印刷制御処理の後半の動作を説明するフローチャートである。
印刷制御処理の後半が開始されると、まず、ステップS21で、主制御部16は、印刷バッファにデータがあるか否かを判定する。具体的には、印刷ドットデータがデータ記録部17の印刷バッファにあるか否かを判定する。
そして、データがある場合、主制御部16は、ステップS22で、1ライン分のデータを取得し、ステップS23で、1ライン分の印刷を実施させる。具体的には、印刷ヘッド11の1ライン分に対応する印刷ドットデータを印刷バッファから取得し、印刷ヘッド駆動制御部14aに指令して印刷ヘッド11を作動させ、1ライン分に対応する印刷ドットデータを媒体21に印刷させる。
なお、印刷バッファにデータがない場合、ステップS21で、主制御部16は、印刷バッファにデータがあるか否かの判定を繰り返す。
続いて、ステップS24で、主制御部16は、最終ラインのデータであるか否かを判定する。具体的には、データを取得して印刷を実施させた1ラインが最終ラインであるか否かを判定する。そして、最終ラインのデータでない場合、ステップS22で、主制御部16は、再度、1ライン分のデータを取得し、以降の動作を繰り返す。
また、最終ラインのデータである場合、ステップS25で、主制御部16は、重複印刷制御がONであるか否かを判定する。具体的には、重複印刷制御判定処理においてON又はOFFにされたフラグに基づいて、重複印刷制御を実施するか否かを判定する。
そして、重複印刷制御がONでない場合、すなわち、フラグがOFFであって重複印刷制御を実施しないと判定された場合、主制御部16は、ステップS26で、カッタ位置まで媒体21を搬送させ、ステップS27で、該媒体21を切断させる。具体的には、媒体搬送モータ駆動制御部14cに指令して媒体搬送モータ13を作動させ、媒体21における切断予定位置がカッタ12の可動刃に対応する位置としてのカッタ位置に到達するまで媒体21を搬送させる。そして、カッタ駆動制御部14bに指令してカッタ12の可動刃を作動させ、前記媒体21の切断予定位置を切断させる。
続いて、ステップS28で、主制御部16は、印刷開始位置まで媒体21を搬送させる。具体的には、媒体搬送モータ駆動制御部14cに指令して媒体搬送モータ13を作動させ、媒体21における印刷開始位置が印刷ヘッド11が印刷を行う位置としてのヘッド位置に到達するまで媒体21を搬送させる。
最後に、ステップS32で、主制御部16は、次の印刷ドットデータがあるか否かを判定する。すなわち、次の印刷ドットデータが印刷バッファにあるか否かを判定する。そして、主制御部16は、次の印刷ドットデータがない場合には印刷制御処理の後半を終了し、次の印刷ドットデータがある場合には、ステップS22で、再度、1ライン分のデータを取得し、以降の動作を繰り返す。
なお、重複印刷制御がONであるか否かを判定してONである場合、すなわち、フラグがONであって重複印刷制御を実施すると判定された場合、ステップS29で、主制御部16は、分割印刷データ(切断前)を印刷させる。具体的には、媒体搬送モータ駆動制御部14cに指令して媒体搬送モータ13を作動させ、媒体21における切断予定位置がカッタ12の可動刃に対応する位置としてのカッタ位置に到達するまで媒体21を搬送させる際に、分割された印刷ドットデータであって媒体21の切断前に印刷する部分のデータをデータ記録部17の第1分割印刷ドットデータ記録部17aから取得し、印刷ヘッド駆動制御部14aに指令して印刷ヘッド11を作動させ、分割された印刷ドットデータを媒体21に印刷させる。
続いて、ステップS30で、主制御部16は、媒体21を切断させる。具体的には、カッタ駆動制御部14bに指令してカッタ12の可動刃を作動させ、前記媒体21の切断予定位置を切断させる。
続いて、ステップS31で、主制御部16は、重複印刷領域分、媒体21を逆方向に搬送させる。具体的には、媒体搬送モータ駆動制御部14cに指令して媒体搬送モータ13を作動させ、媒体21において重複印刷領域に相当する距離だけ媒体21を逆方向に搬送させる。
最後に、ステップS32で、主制御部16は、次の印刷ドットデータがあるか否かを判定する。すなわち、次の印刷ドットデータが印刷バッファにあるか否かを判定する。分割印刷データ(切断前)を印刷させた場合には、分割された印刷ドットデータであって媒体21の切断後に印刷する部分のデータがデータ記録部17の第2分割印刷ドットデータ記録部17bに残っているので、主制御部16は、次の印刷ドットデータがある、と判定する。そして、主制御部16は、分割された印刷ドットデータであって媒体21の切断後に印刷する部分のデータを取得して印刷させる。
次に、フローチャートについて説明する。
ステップS21 印刷バッファにデータがあるか否かを判定する。印刷バッファにデータがある場合はステップS22に進み、印刷バッファにデータがない場合は判定を繰り返し行う。
ステップS22 1ライン分のデータを取得する。
ステップS23 1ライン分の印刷を実施させる。
ステップS24 最終ラインのデータであるか否かを判定する。最終ラインのデータである場合はステップS25に進み、最終ラインのデータでない場合はステップS22に戻る。
ステップS25 重複印刷制御がONであるか否かを判定する。重複印刷制御がONである場合はステップ29に進み、重複印刷制御がONでない場合はステップS26に進む。
ステップS26 カッタ位置まで媒体21を搬送させる。
ステップS27 媒体21を切断させる。
ステップS28 印刷開始位置まで媒体21を搬送させる。
ステップS29 分割印刷データ(切断前)を印刷させる。
ステップS30 媒体21を切断させる。
ステップS31 重複印刷領域分、媒体21を逆方向に搬送させる。
ステップS32 次の印刷ドットデータがあるか否かを判定する。次の印刷ドットデータがある場合はステップS22に戻り、次の印刷ドットデータがない場合は印刷制御処理の後半を終了する。
次に、受信データのデコード処理のサブルーチンについて説明する。
図7は本発明の実施の形態における受信データのデコード処理のサブルーチンを示すフローチャートである。
受信データのデコード処理は、データ受信部15が受信したデータが印刷速度、印刷濃度等の印刷装置10の設定を変更するコマンドであるか、又は、バーコード、キャラクタ等の印刷データであるかを判定し、印刷データである場合に、コマンド情報に基づいて印刷ドットデータを生成するための情報(例えば、バーコードの場合、バーコードの種類、印刷方向、バー幅、バー比率な等の情報)を取得する処理である。当該処理において、主制御部16は、データ受信部15が受信したデータを解析する。そして、データ受信部15が受信したデータが印刷データであれば、主制御部16は、図5及び6に示されるような印刷制御処理を実施する。なお、データ受信部15が受信したデータが印刷データでなければ、印刷動作は発生しないので、印刷制御処理は実施されない。
受信データのデコード処理が開始されると、ステップS2−1で、主制御部16は、まず、印刷データであるか否かを判定する。具体的には、データ記録部17の受信バッファにあるデータ受信部15が受信したデータが印刷データであるか否かを判定する。
そして、印刷データでない場合、ステップS2−2で、主制御部16は、余白設定であるか否かを判定する。具体的には、データ受信部15が受信したデータが余白設定に関するデータであるか否かを判定する。なお、余白とは、カッタ12によって媒体21を切断する場合、切断された媒体21の先端から次の印刷データの印刷開始位置までの媒体21上の範囲である。
ここで、余白設定でない場合、ステップS2−5で、主制御部16は、各種デコード処理を実施し、受信データのデコード処理を終了する。また、余白設定である場合、主制御部16は、ステップS2−3で、余白位置を設定し、ステップS2−4で、重複印刷領域算出処理を実施して、受信データのデコード処理を終了する。重複印刷領域算出処理では、重複印刷の判定を実施する際に必要な情報であるホワイトライン発生位置(重複印刷終了位置)を算出する。また、ホワイトライン発生位置に基づいて算出することができるので、重複印刷開始位置も算出する。各種印刷データの印刷開始位置が相対位置で指定されている場合、印刷可能領域の先頭位置からヘッド位置までの距離の情報に基づいて判定するため、あらかじめ余白設定が変更されたときに算出する。
また、印刷データであるか否かを判定して印刷データである場合、ステップS2−6で、主制御部16は、バーコードであるか否かを判定する。すなわち、印刷データがバーコードの印刷データであるか否かを判定する。
そして、バーコードの印刷データである場合、主制御部16は、ステップS2−7で、ナローバー幅を取得し、ステップS2−8で、バーコードサイズを取得し、ステップS2−9で、印刷方向設定を取得し、ステップS2−10で、印刷開始位置を取得し、ステップS2−11で、通常のバーコードデータデコード処理を実施して、受信データのデコード処理を終了する。
また、バーコードであるか否かを判定してバーコードでない場合、ステップS2−12で、主制御部16は、その他イメージデータであるか否かを判定する。すなわち、印刷データがその他イメージデータであるか否かを判定する。
そして、その他イメージデータでない場合、キャラクタの印刷データであると考えられるので、主制御部16は、ステップS2−13で、キャラクタ印刷サイズを取得し、ステップS2−14で、印刷開始位置を取得し、ステップS2−15で、印刷方向設定を取得し、ステップS2−16で、通常のキャラクタデータデコード処理を実施して、受信データのデコード処理を終了する。
また、その他イメージデータである場合、主制御部16は、ステップS2−17で、その他イメージサイズを取得し、ステップS2−18で、印刷開始位置を取得し、ステップS2−19で、通常のその他イメージデータデコード処理を実施して、受信データのデコード処理を終了する。
本実施の形態における受信データのデコード処理では、受信データの通常のコマンドデコード処理に加えて、重複印刷の実施判定に必要な情報を取得している。
次に、フローチャートについて説明する。
ステップS2−1 印刷データであるか否かを判定する。印刷データである場合はステップS2−6に進み、印刷データでない場合はステップS2−2に進む。
ステップS2−2 余白設定であるか否かを判定する。余白設定である場合はステップS2−3に進み、余白設定でない場合はステップS2−5に進む。
ステップS2−3 余白位置を設定する。
ステップS2−4 重複印刷領域算出処理を実施して、受信データのデコード処理を終了する。
ステップS2−5 各種デコード処理を実施し、受信データのデコード処理を終了する。
ステップS2−6 バーコードであるか否かを判定する。バーコードである場合はステップS2−7に進み、バーコードでない場合はステップS2−12に進む。
ステップS2−7 ナローバー幅を取得する。
ステップS2−8 バーコードサイズを取得する。
ステップS2−9 印刷方向設定を取得する。
ステップS2−10 印刷開始位置を取得する。
ステップS2−11 バーコードデータデコード処理を実施して、受信データのデコード処理を終了する。
ステップS2−12 その他イメージデータであるか否かを判定する。その他イメージデータである場合はステップS2−17に進み、その他イメージデータでない場合はステップS2−13に進む。
ステップS2−13 キャラクタ印刷サイズを取得する。
ステップS2−14 印刷開始位置を取得する。
ステップS2−15 印刷方向設定を取得する。
ステップS2−16 キャラクタデータデコード処理を実施して、受信データのデコード処理を終了する。
ステップS2−17 その他イメージサイズを取得する。
ステップS2−18 印刷開始位置を取得する。
ステップS2−19 その他イメージデータデコード処理を実施して、受信データのデコード処理を終了する。
次に、重複印刷領域算出処理のサブルーチンについて説明する。
図8は本発明の実施の形態におけるホワイトライン発生位置の算出方法を説明する図、図9は本発明の実施の形態におけるホワイトライン発生領域を説明する図、図10は本発明の実施の形態における重複印刷領域を説明する図、図11は本発明の実施の形態における論理的な座標を説明する図、図12は本発明の実施の形態における重複印刷領域算出処理のサブルーチンを示すフローチャートである。
本実施の形態においては、相対位置で指定される印刷データがホワイトラインの発生する可能性があるデータであるか否かを判定するために、ホワイトライン発生位置を算出する。また、ホワイトライン発生位置に基づいて、あらかじめ重複印刷を開始する位置、すなわち、重複印刷開始位置も算出する。
ホワイトラインは、媒体21を切断するカッタ12の動作である切断動作によって位置ズレが発生した箇所で発生する。したがって、ホワイトラインは、図8及び10に示されるように、媒体21を切断する時点での印刷ヘッド11の位置であるヘッド位置において発生する。
なお、図8の上段部分は、図1における上方から観た場合の媒体21、印刷ヘッド11及びカッタ12の位置関係を模式的に示した図であり、線Aはヘッド位置を示し、線Bはカッタ12可動刃の位置であるカッタ位置を示している。また、図8の下段部分は、図1における上方から観た場合の媒体21、ヘッド位置、カッタ位置及び印刷データが印刷される範囲の位置関係を模式的に示した図である。さらに、図10及び11も、図8の下段部分と同様である。なお、図9は、ホワイトライン発生領域(図における左右方向は媒体21の搬送方向)、印刷速度の変化、及び、印刷ヘッド11の発熱素子の温度、すなわち、ヘッド温度の変化の関係を示した図である。
図8に示されるように、カッタ位置からホワイトライン発生位置までの距離は、カッタ位置からヘッド位置までの距離としてのカットマージンに等しい。なお、印刷データの先頭からヘッド位置までの距離は、カットマージンから余白設定量(カッタ位置から印刷データの先頭までの距離)を減算した距離に等しい。そして、図11に示されるように、カッタ位置から余白設定量だけ印刷ヘッド11寄りにシフトした位置が論理原点の位置となる。そのため、カットマージンから論理原点の位置までの距離、すなわち、余白設定量を減算することで、ホワイトライン発生位置を算出することができる。
また、図9に示されるように、ホワイトライン発生領域は、媒体21の切断による位置ズレ量、印刷速度の減速時において最後に印刷ヘッド11の発熱素子に電圧を印加してから停止するまでのパルス数分、及び、温度低下等により加速開始から発色するまでのパルス数分となる。なお、印刷ヘッド11の機種等によって多少異なるが、印刷速度の減速時において最後に印刷ヘッド11の発熱素子に電圧を印加してから停止するまでのパルス数、及び、発色するまでのパルス数は変動が少ないので、ホワイトライン発生領域を所定量としてもよい。また、印刷装置10の使用環境の温度情報を取得することができる場合、前記温度情報を考慮に入れてホワイトライン発生領域を算出することもできる。ホワイトライン発生領域を重複印刷領域として適用することによって、確実にホワイトラインの発生を防ぐことができる。したがって、重複印刷開始位置は、ホワイトライン発生位置からホワイトライン発生領域の距離を減算した位置となる。
重複印刷領域算出処理が開始されると、主制御部16の重複印刷領域算出部16bは、まず、ステップS2−4−1で、余白設定量を取得し、ステップS2−4−2で、カットマージン量を取得する。
続いて、ステップS2−4−3で、重複印刷領域算出部16bは、ホワイトライン発生位置(重複印刷終了位置)を算出する。具体的には、カットマージン量から余白設定量を減算した値をホワイトライン発生位置とする。そして、ステップS2−4−4で、重複印刷領域算出部16bは、ホワイトライン発生位置を保存する。具体的には、算出したホワイトライン発生位置をデータ記録部17に格納して保存する。
続いて、ステップS2−4−5で、重複印刷領域算出部16bは、重複印刷開始位置を算出する。具体的には、ホワイトライン発生位置からホワイトライン発生領域(重複印刷領域)を減算した値を重複印刷開始位置とする。そして、ステップS2−4−6で、重複印刷領域算出部16bは、重複印刷開始位置を保存して、重複印刷領域算出処理を終了する。具体的には、算出した重複印刷開始位置をデータ記録部17に格納して保存する。
次に、フローチャートについて説明する。
ステップS2−4−1 余白設定量を取得する。
ステップS2−4−2 カットマージン量を取得する。
ステップS2−4−3 ホワイトライン発生位置(重複印刷終了位置)を算出する。カットマージン量から余白設定量を減算した値をホワイトライン発生位置とする。
ステップS2−4−4 ホワイトライン発生位置を保存する。
ステップS2−4−5 重複印刷開始位置を算出する。ホワイトライン発生位置からホワイトライン発生領域(重複印刷領域)を減算した値を重複印刷開始位置とする。
ステップS2−4−6 重複印刷開始位置を保存して、重複印刷領域算出処理を終了する。
次に、重複印刷制御判定処理のサブルーチンについて説明する。
図13は本発明の実施の形態における重複印刷制御判定処理のサブルーチンを示すフローチャートである。
本実施の形態においては、受信データのデコード処理において取得した印刷データの印刷開始位置等の情報、及び、重複印刷領域算出処理において算出したホワイトライン発生位置に基づいて、重複印刷を実施するか否かを判定する。重複印刷を実施するか否かの判定は、印刷データがヘッド位置を跨ぐか否かに応じて行われるので、ホワイトライン発生位置(重複印刷終了位置)が印刷データの印刷開始位置と印刷終了位置との間にあるか否かを確認する必要がある。
重複印刷制御判定処理が開始されると、ステップS4−1で、主制御部16の重複印刷制御判定部16cは、まず、印刷データがバーコードであるか否かを判定する。すなわち、印刷データがバーコードの印刷データであるか否かを判定する。
そして、バーコードの印刷データである場合、縦印刷か否かで印刷データのサイズが異なるため、ステップS4−2で、重複印刷制御判定部16cは、印刷方向が縦であるか否かを判定する。
印刷方向が縦でない場合、すなわち、横方向に印刷する場合、ステップS4−3で、重複印刷制御判定部16cは、印刷データの印刷終了位置としてのバーコード印刷終了位置を算出する。横方向に印刷する場合には、媒体21の搬送方向に関する印刷データのサイズがバーコードの高さとなるので、バーコード印刷終了位置は、印刷データの印刷開始位置としてのバーコード印刷開始位置にバーコードの高さを加算した位置となる。
また、印刷方向が縦であるか否かを判定して縦である場合、重複印刷制御判定部16cは、ステップS4−4で、ナローバー幅及びバーコードのデータからバーコード幅を算出し、ステップS4−5で、バーコード印刷終了位置を算出する。縦方向に印刷する場合、媒体21の搬送方向に関する印刷データのサイズは、バーコードの幅方向のサイズとなる。そのため、重複印刷制御判定部16cは、ナローバー幅及びバーコードのデータからバーコード幅を算出した後、バーコード印刷開始位置にバーコードの幅を加算した値を、バーコード印刷終了位置として算出する。
続いて、ステップS4−11で、重複印刷制御判定部16cは、ホワイトライン発生位置が印刷データの印刷開始位置と印刷終了位置との間にあるか否かを判定する。具体的には、印刷データの印刷開始位置の値がホワイトライン発生位置の値より小さく、かつ、ホワイトライン発生位置の値が印刷データの印刷終了位置の値より小さい、という条件が満足されているか否かを判定する。
そして、重複印刷制御判定部16cは、ステップS4−13で、前記条件が満足されている場合には重複印刷制御を実施するフラグをONにし、ステップS4−12で、前記条件が満足されていない場合には重複印刷制御を実施するフラグをOFFにして、重複印刷制御判定処理を終了する。
また、印刷データがバーコードであるか否かを判定してバーコードでない場合、ステップS4−6で、重複印刷制御判定部16cは、その他イメージデータであるか否かを判定する。すなわち、印刷データがその他イメージデータの印刷データであるか否かを判定する。
そして、その他イメージデータである場合、ステップS4−7で、重複印刷制御判定部16cは、印刷終了位置を算出する。具体的には、印刷データの印刷開始位置としてのその他イメージ印刷開始位置にその他イメージサイズを加算した値を、印刷データの印刷終了位置として算出する。
続いて、重複印刷制御判定部16cは、ステップS4−11で、ホワイトライン発生位置が印刷データの印刷開始位置と印刷終了位置との間にあるか否かを判定し、ステップS4−12又はS4−13で、重複印刷制御を実施するフラグをON又はOFFにして、重複印刷制御判定処理を終了する。
また、その他イメージデータであるか否かを判定してその他イメージデータでない場合、すなわち、キャラクタデータである場合、縦印刷か否かで印刷データのサイズが異なるため、ステップS4−8で、重複印刷制御判定部16cは、印刷方向が縦であるか否かを判定する。
印刷方向が縦でない場合、すなわち、横方向に印刷する場合、ステップS4−9で、重複印刷制御判定部16cは、印刷データの印刷終了位置を算出する。具体的には、印刷終了位置は、印刷データの印刷開始位置としてのキャラクタ印刷開始位置にキャラクタの高さを加算した値となる。
また、印刷方向が縦である場合、ステップS4−10で、重複印刷制御判定部16cは、印刷データの印刷開始位置としてのキャラクタ印刷開始位置にキャラクタの幅を加算した値を印刷データの印刷終了位置として算出する。
続いて、重複印刷制御判定部16cは、ステップS4−11で、ホワイトライン発生位置が印刷データの印刷開始位置と印刷終了位置との間にあるか否かを判定し、ステップS4−12又はS4−13で、重複印刷制御を実施するフラグをON又はOFFにして、重複印刷制御判定処理を終了する。
次に、フローチャートについて説明する。
ステップS4−1 印刷データがバーコードであるか否かを判定する。印刷データがバーコードである場合はステップS4−2に進み、印刷データがバーコードでない場合はステップS4−6に進む。
ステップS4−2 印刷方向が縦であるか否かを判定する。印刷方向が縦である場合はステップS4−4に進み、印刷方向が縦でない場合はステップS4−3に進む。
ステップS4−3 バーコード印刷終了位置を算出する。バーコード印刷終了位置は、バーコード印刷開始位置にバーコードの高さを加算した位置となる。
ステップS4−4 ナローバー幅及びバーコードのデータからバーコード幅を算出する。
ステップS4−5 バーコード印刷終了位置を算出する。バーコード印刷開始位置にバーコードの幅を加算した値を、バーコード印刷終了位置として算出する。
ステップS4−6 その他イメージデータであるか否かを判定する。その他イメージデータである場合はステップS4−7に進み、その他イメージデータでない場合はステップS4−8に進む。
ステップS4−7 印刷終了位置を算出する。その他イメージ印刷開始位置にその他イメージサイズを加算した値を、印刷データの印刷終了位置として算出する。
ステップS4−8 印刷方向が縦であるか否かを判定する。印刷方向が縦である場合はステップS4−10に進み、印刷方向が縦でない場合はステップS4−9に進む。
ステップS4−9 印刷終了位置を算出する。印刷終了位置は、キャラクタ印刷開始位置にキャラクタの高さを加算した値となる。
ステップS4−10 キャラクタ印刷開始位置にキャラクタの幅を加算した値を印刷終了位置として算出する。
ステップS4−11 ホワイトライン発生位置が印刷開始位置と印刷終了位置との間にあるか否かを判定する。ホワイトライン発生位置が印刷開始位置と印刷終了位置との間にある場合はステップS4−13に進み、ホワイトライン発生位置が印刷開始位置と印刷終了位置との間にない場合はステップS4−12に進む。
ステップS4−12 重複印刷制御を実施するフラグをOFFにして、重複印刷制御判定処理を終了する。
ステップS4−13 重複印刷制御を実施するフラグをONにして、重複印刷制御判定処理を終了する。
次に、重複印刷パターン生成処理のサブルーチンについて説明する。
図14は本発明の実施の形態における重複印刷パターン生成処理のサブルーチンを示すフローチャートである。
本実施の形態においては、媒体21の切断前及び切断後に媒体21に印刷ドットデータの分割及び重複印刷を実施する領域についての印刷パターンの生成を、印刷データのタイプに応じて行う。
重複印刷パターン生成処理が開始されると、ステップS8−1で、主制御部16の重複印刷パターン生成部16aは、まず、イメージ先頭からホワイトライン発生位置までの印刷ドットデータを切断前の印刷ドットデータとして抽出する。具体的には、媒体21の切断前に行われる印刷では印刷ドットデータを変更しないので、該印刷ドットデータの前端からホワイトライン発生位置までの印刷ドットデータを切断前の印刷ドットデータとして抽出する。そして、ステップS8−2で、重複印刷パターン生成部16aは、抽出した切断前の印刷ドットデータをデータ記録部17に保存する。
続いて、切断後の印刷ドットデータを生成するために、ステップS8−3で、重複印刷パターン生成部16aは、重複印刷領域と次の1ライン分の印刷ドットデータを抽出する。つまり、隣接したドットデータを用いて補正を実施するため、重複印刷領域の印刷ドットデータに加えて、次の1ライン分の印刷ドットデータを抽出する。
続いて、ステップS8−4で、重複印刷パターン生成部16aは、重複印刷領域内の印刷データタイプを判定する。具体的には、重複印刷領域における印刷ドットデータが、キャラクタデータ、バーコードデータ、又は、その他イメージデータのいずれであるかを判定する。
そして、重複印刷パターン生成部16aは、キャラクタデータの場合にはステップS8−5でキャラクタ重複印刷パターン生成処理を実施し、バーコードデータの場合にはステップS8−7でバーコード重複印刷パターン生成処理を実施し、その他イメージデータの場合にはステップS8−6でイメージ重複印刷パターン生成処理を実施する。
続いて、ステップS8−8で、重複印刷パターン生成部16aは、生成した重複パターンに残りの印刷データを付加し、切断後、印刷ドットデータとして保存する。具体的には、キャラクタ重複印刷パターン生成処理、バーコード重複印刷パターン生成処理又はその他イメージ重複印刷パターン生成処理を実施して生成した重複パターンに、ホワイトライン発生位置から印刷ドットデータの後端までの印刷ドットデータを加えたデータを切断前の印刷ドットデータとしてデータ記録部17に保存する。
そして、媒体21の切断後に逆方向に媒体21が搬送されるので、ステップS8−9で、重複印刷パターン生成部16aは、重複印刷領域分を切断後の逆方向の媒体搬送量に設定して、すなわち、重複印刷する領域の量を媒体21を逆方向に搬送する量として設定して、重複印刷パターン生成処理を終了する。
次に、フローチャートについて説明する。
ステップS8−1 イメージ先頭からホワイトライン発生位置までの印刷ドットデータを切断前の印刷ドットデータとして抽出する。
ステップS8−2 切断前の印刷ドットデータをデータ記録部17に保存する。
ステップS8−3 重複印刷領域と次の1ライン分の印刷ドットデータを抽出する。
ステップS8−4 重複印刷領域内の印刷データタイプを判定する。印刷ドットデータがキャラクタデータである場合はステップS8−5に進み、印刷ドットデータがバーコードデータである場合はステップS8−7に進み、印刷ドットデータがその他イメージデータである場合はステップS8−6に進む。
ステップS8−5 キャラクタ重複印刷パターン生成処理を実施する。
ステップS8−6 その他イメージ重複印刷パターン生成処理を実施する。
ステップS8−7 バーコード重複印刷パターン生成処理を実施する。
ステップS8−8 生成した重複パターンに残りの印刷データを付加し、切断後、印刷ドットデータとして保存する。
ステップS8−9 重複印刷領域分を切断後の逆方向の媒体搬送量に設定して、重複印刷パターン生成処理を終了する。
次に、キャラクタ重複印刷パターン生成処理のサブルーチンについて説明する。
図15は本発明の実施の形態における印刷ドットデータ中の当該ドットとそれに隣接する隣接ドットの位置関係を説明する図、図16は本発明の実施の形態におけるキャラクタデータの重複印刷パターンを説明する図、図17は本発明の実施の形態におけるキャラクタデータの重複印刷の結果を説明する図、図18は本発明の実施の形態におけるキャラクタ重複印刷パターン生成処理のサブルーチンを示すフローチャートである。
キャラクタのデータの場合には、その他イメージデータのような階調データがないので、印刷ドットの有無のみで表現される。また、文字全体としての形が認識できれば可読することができるので、同じ印刷データを重ねても目立ちにくい。そのため、重複する印刷パターンが同じ形となるように、媒体搬送方向に同位置となる次のラインの隣接ドットのみを参照して補正を実施する。
前述のように、印刷ドットデータは、ドットパターンに展開された印刷データであって、注目すべき1つの印刷ドットである当該ドットの周囲には、図15に示されるように、8つの隣接ドットが存在する。また、前述のように、印刷ドットデータは、媒体21の搬送に合わせて1ラインずつ媒体21に印刷されるので、当該ドットよりも媒体21の搬送方向前方に隣接して前の印刷ラインが形成され、当該ドットよりも媒体21の搬送方向後方に隣接して次の印刷ラインが形成される。さらに、各印刷ドットは、印刷ヘッド11に配設された対応する発熱素子の発熱によって形成されるので、各発熱素子に印加される電圧を減少させて各発熱素子の温度を低下させることによって、各印刷ドットの大きさ、すなわち、ドットサイズを減少させることができる。
図16には、キャラクタデータの重複印刷パターンを決定する例が示されている。当該ドットの次のラインにおける隣接ドット(番号が2番の隣接ドット)が印刷される場合には、媒体21を切断するために位置ズレが発生しても、印刷ドットが繋がるだけなので、補正をせず、当該ドットのドットサイズを減少させることなく、印刷を行う。また、次のラインにおける隣接ドットが印刷されない場合には、補正をして、当該ドットのドットサイズを減少させて印刷を行うが、重複印刷の最終行にあるのか否かに応じて、当該ドットの縮小率を変更する。重複印刷の最終行でないときは、媒体21の切断前に印刷した印刷データに位置ズレが発生せず、空白部分を単に埋めてしまうこととなるため、当該ドットの縮小率を大きくする(例えば、ドットサイズが50〔%〕となるように縮小する。)。一方、重複印刷の最終行であるときは、位置ズレがホワイトラインとなってしまうため、印刷ドットが大きくなりすぎない程度に、当該ドットの縮小率を小さくする(例えば、ドットサイズが75〔%〕となるように縮小する。)。
キャラクタ重複印刷パターン生成処理が開始されると、ステップS8−5−1で、重複印刷パターン生成部16aは、まず、1ライン分のデータを取得する。具体的には、重複印刷領域における印刷ドットデータの1ラインに対応するデータを、重複印刷領域の最初のラインから順次、取得する。
続いて、ステップS8−5−2で、重複印刷パターン生成部16aは、1ドット分のデータを取得する。具体的には、取得した1ラインの中の1ドットに対応するデータを、ラインの端のドットから順次、当該ドットのデータとして取得する。
続いて、ステップS8−5−3で、重複印刷パターン生成部16aは、隣接する次のラインの1ドット分のデータを取得する。具体的には、当該ドットの次のラインにおける隣接ドットのデータを取得する。
続いて、ステップS8−5−4で、重複印刷パターン生成部16aは、隣接ドットが空白ドットであるか否かを判定する。具体的には、当該ドットの次のラインにおける隣接ドットが印刷されない空白ドットであるか否かを判定する。
そして、空白ドットでない場合、すなわち、次のラインにおける隣接ドットが印刷される場合、ステップS8−5−5で、重複印刷パターン生成部16aは、ドットサイズを変更しない。具体的には、当該ドットのドットサイズを減少させないようにする。
また、空白ドットである場合、すなわち、次のラインにおける隣接ドットが印刷されない場合、ステップS8−5−6で、重複印刷パターン生成部16aは、当該ドットが重複印刷領域の最終ラインのドットであるか否かを判定する。すなわち、当該ドットが重複印刷の最終行に位置するものであるか否かを判定する。そして、最終ラインのドットでない場合、重複印刷パターン生成部16aは、ステップS8−5−7で、ドットサイズを50〔%〕に変更する。すなわち、当該ドットのドットサイズが50〔%〕となるように当該ドットの縮小率を決定する。一方、最終ラインのドットである場合、重複印刷パターン生成部16aは、ステップS8−5−8で、ドットサイズを75〔%〕に変更する。すなわち、当該ドットのドットサイズが75〔%〕となるように当該ドットの縮小率を決定する。
続いて、ステップS8−5−9で、重複印刷パターン生成部16aは、ライン端のドットデータであるか否かを判定する。すなわち、当該ドットが、データを取得した1ラインの端に位置するドットであるか否かを判定する。
そして、ライン端のドットデータでない場合、ステップS8−5−2で、重複印刷パターン生成部16aは、再度、1ドット分のデータを取得して以降の動作を繰り返す。
また、ステップS8−5−10で、ライン端のドットデータである場合、重複印刷パターン生成部16aは、重複印刷領域の最終ラインであるか否かを判定する。すなわち、データを取得したラインが重複印刷領域の最終のラインであるか否かを判定する。
そして、最終ラインでない場合、ステップS8−5−1で、重複印刷パターン生成部16aは、再度、1ライン分のデータを取得して以降の動作を繰り返す。
また、最終ラインである場合、重複印刷領域のすべてのドットについて、必要な場合には、補正を実施したことになるので、重複印刷パターン生成部16aは、キャラクタ重複印刷パターン生成処理を終了する。
このように、キャラクタ重複印刷パターン生成処理を実施することによって、図17に示されるような印刷結果を得ることができる。図17に示されるのは、キャラクタとしてアルファベットのAを印刷した例である。従来技術では、Aという文字の空白部分が、ドットによって埋められて、狭くなっている。これに対し、本実施の形態においては、ドットサイズを縮小しているので、Aという文字の空白部分が、あまり埋められておらず、狭くなっていないことが分かる。
次に、フローチャートについて説明する。
ステップS8−5−1 1ライン分のデータを取得する。
ステップS8−5−2 1ドット分のデータを取得する。
ステップS8−5−3 隣接する次のラインの1ドット分のデータを取得する。
ステップS8−5−4 隣接ドットが空白ドットであるか否かを判定する。隣接ドットが空白ドットである場合はステップS8−5−6に進み、隣接ドットが空白ドットでない場合はステップS8−5−5に進む。
ステップS8−5−5 ドットサイズを変更しない。
ステップS8−5−6 当該ドットが重複印刷領域の最終ラインのドットであるか否かを判定する。当該ドットが重複印刷領域の最終ラインのドットである場合はステップS8−5−8に進み、当該ドットが重複印刷領域の最終ラインのドットでない場合はステップS8−5−7に進む。
ステップS8−5−7 ドットサイズを50〔%〕に変更する。
ステップS8−5−8 ドットサイズを75〔%〕に変更する。
ステップS8−5−9 ライン端のドットデータであるか否かを判定する。ライン端のドットデータである場合はステップS8−5−10に進み、ライン端のドットデータでない場合はステップS8−5−2に戻る。
ステップS8−5−10 重複印刷領域の最終ラインであるか否かを判定する。重複印刷領域の最終ラインである場合はキャラクタ重複印刷パターン生成処理を終了し、重複印刷領域の最終ラインでない場合はステップS8−5−1に戻る。
次に、その他イメージ重複印刷パターン生成処理のサブルーチンについて説明する。
図19は本発明の実施の形態におけるその他イメージデータの重複印刷パターンを説明する図、図20は本発明の実施の形態におけるその他イメージデータの重複印刷の結果を説明する第1の図、図21は本発明の実施の形態におけるその他イメージデータの重複印刷の結果を説明する第2の図、図22は本発明の実施の形態におけるその他イメージ重複印刷パターン生成処理のサブルーチンを示すフローチャートである。
その他イメージデータの場合、階調が含まれているので、ドットサイズが変化したり、ドットが間引きされているようなドットパターンになったりすることがある。例えば、図3に示される従来技術の例のように、同じドットパターンの重複印刷を行うと、空白スペースが埋まって、階調が崩れてしまう可能性がある。そのため、図19に示されるように、当該ドットの次のラインにおける3つのドット(番号が1〜3番の隣接ドット)を参照して補正を実施する。
具体的には、2番の隣接ドットが印刷される場合、2番の隣接ドット及び当該ドットのドットサイズが等しいときには補正を実施しないが、2番の隣接ドット及び当該ドットのドットサイズが異なるときには、小さい方のドットサイズに合わせるように、補正を実施する。
また、2番の隣接ドットが印刷されない場合、1番の隣接ドット及び3番の隣接ドットの印刷のうちで印刷されるドットの数に応じて、補正を切り替える。つまり、1番の隣接ドット及び3番の隣接ドットがいずれも印刷されないときには、キャラクタ重複印刷パターン生成処理と同様の補正を実施する。また、1番の隣接ドット及び3番の隣接ドットの一方が印刷され他方が印刷されないときには、結果が太くなり過ぎないように当該ドットを縮小する。さらに、1番の隣接ドット及び3番の隣接ドットがいずれも印刷されるときには、重複印刷の最終行にあるのか否かに応じて、当該ドットの縮小率を変更する。重複印刷の最終行にないときには、空白を埋めるようになってしまうので、重複印刷の最終行にあるときよりも、当該ドットのドットサイズを小さくする。
その他イメージ重複印刷パターン生成処理が開始されると、ステップS8−6−1で、重複印刷パターン生成部16aは、まず、1ライン分のデータを取得する。具体的には、重複印刷領域における印刷ドットデータの1ラインに対応するデータを、重複印刷領域の最初のラインから順次、取得する。
続いて、ステップS8−6−2で、重複印刷パターン生成部16aは、1ドット分のデータを取得する。具体的には、取得した1ラインの中の1ドットに対応するデータを、ラインの端のドットから順次、当該ドットのデータとして取得する。
続いて、ステップS8−6−3で、重複印刷パターン生成部16aは、隣接する次のラインの3ドット分のデータを取得する。具体的には、当該ドットの次のラインにおける1〜3番の隣接ドットのデータを取得する。
続いて、ステップS8−6−4で、重複印刷パターン生成部16aは、媒体搬送方向に隣接しているドットが空白ドットであるか否かを判定する。具体的には、当該ドットの次のラインにおける2番の隣接ドットが印刷されない空白ドットであるか否かを判定する。
そして、空白ドットでない場合、すなわち、次のラインにおける2番の隣接ドットが印刷される場合、ステップS8−6−5で、重複印刷パターン生成部16aは、隣接ドットのサイズが当該ドットよりも小さいか否かを判定する。すなわち、次のラインにおける2番の隣接ドットのドットサイズが当該ドットのドットサイズより小さいか否かを判定する。
ここで、隣接ドットのサイズが当該ドットよりも小さくない場合、ステップS8−6−6で、重複印刷パターン生成部16aは、ドットサイズを変更しない。具体的には、当該ドットのドットサイズを減少させないようにする。一方、隣接ドットのサイズが当該ドットよりも小さい場合、ステップS8−6−7で、重複印刷パターン生成部16aは、隣接ドットと同サイズに変更する。具体的には、当該ドットのドットサイズを減少させ、隣接ドットのドットサイズに等しくする。
なお、媒体搬送方向に隣接しているドットが空白ドットであるか否かを判定して空白ドットである場合、ステップS8−6−8で、重複印刷パターン生成部16aは、残りの隣接ドットの印刷数を判定する。具体的には、次のラインにおける2番の隣接ドットが印刷されない場合、当該ドットの次のラインにおける1番及び3番の隣接ドットのうちで印刷されるドットの数を判定する。
そして、印刷数が2である場合、ステップS8−6−9で、重複印刷パターン生成部16aは、重複印刷最終ラインであるか否かを判定する。すなわち、当該ドットが重複印刷の最終行に位置するものであるか否かを判定する。そして、重複印刷最終ラインでない場合、ステップS8−6−10で、重複印刷パターン生成部16aは、ドットサイズを30〔%〕に変更する。すなわち、当該ドットのドットサイズが30〔%〕となるように当該ドットの縮小率を決定する。一方、重複印刷最終ラインである場合、ステップS8−6−11で、重複印刷パターン生成部16aは、ドットサイズを50〔%〕に変更する。すなわち、当該ドットのドットサイズが50〔%〕となるように当該ドットの縮小率を決定する。
また、残りの隣接ドットの印刷数を判定して印刷数が1である場合、ステップS8−6−12で、重複印刷パターン生成部16aは、ドットサイズを50〔%〕に変更する。すなわち、当該ドットのドットサイズが50〔%〕となるように当該ドットの縮小率を決定する。
さらに、残りの隣接ドットの印刷数を判定して印刷数が0である場合、ステップS8−6−13で、重複印刷パターン生成部16aは、重複印刷最終ラインであるか否かを判定する。すなわち、当該ドットが重複印刷の最終行に位置するものであるか否かを判定する。そして、重複印刷最終ラインでない場合、ステップS8−6−14で、重複印刷パターン生成部16aは、ドットサイズを50〔%〕に変更する。すなわち、当該ドットのドットサイズが50〔%〕となるように当該ドットの縮小率を決定する。一方、重複印刷最終ラインである場合、ステップS8−6−15で、重複印刷パターン生成部16aは、ドットサイズを75〔%〕に変更する。すなわち、当該ドットのドットサイズが75〔%〕となるように当該ドットの縮小率を決定する。
続いて、ステップS8−6−16で、重複印刷パターン生成部16aは、ライン端のドットデータであるか否かを判定する。すなわち、当該ドットが、データを取得した1ラインの端に位置するドットであるか否かを判定する。
そして、ライン端のドットデータでない場合、ステップS8−6−2で、重複印刷パターン生成部16aは、再度、1ドット分のデータを取得して以降の動作を繰り返す。
また、ライン端のドットデータである場合、ステップS8−6−17で、重複印刷パターン生成部16aは、重複印刷領域の最終ラインであるか否かを判定する。すなわち、データを取得したラインが重複印刷領域の最終のラインであるか否かを判定する。
そして、最終ラインでない場合、ステップS8−6−1で、重複印刷パターン生成部16aは、再度、1ライン分のデータを取得して以降の動作を繰り返す。
また、最終ラインである場合、重複印刷領域のすべてのドットについて、必要な場合には、補正を実施したことになるので、重複印刷パターン生成部16aは、その他イメージ重複印刷パターン生成処理を終了する。
このように、その他イメージ重複印刷パターン生成処理を実施することによって、図20及び21に示されるような印刷結果を得ることができる。図20に示される例では、多少印刷が太くなるものの、ドットサイズが縮小されているので、空白が目立ちすぎず、かつ、印刷が太くなりすぎず、全体として目立たなくなっている。また、図21に示される例では、位置ズレが発生したときに、空白部分が埋まってしまって完全に1ラインとなってしまわないようにするためにドットサイズが縮小されているので、グラデーションのようにぼかすことができ、目立ちにくくなっている。
次に、フローチャートについて説明する。
ステップS8−6−1 1ライン分のデータを取得する。
ステップS8−6−2 1ドット分のデータを取得する。
ステップS8−6−3 隣接する次のラインの3ドット分のデータを取得する。
ステップS8−6−4 媒体搬送方向に隣接しているドットが空白ドットであるか否かを判定する。媒体搬送方向に隣接しているドットが空白ドットである場合はステップS8−6−8に進み、媒体搬送方向に隣接しているドットが空白ドットでない場合はステップS8−6−5に進む。
ステップS8−6−5 隣接ドットのサイズが当該ドットよりも小さいか否かを判定する。隣接ドットのサイズが当該ドットよりも小さい場合はステップS8−6−7に進み、隣接ドットのサイズが当該ドットよりも小さくない場合はステップS8−6−6に進む。
ステップS8−6−6 ドットサイズを変更しない。
ステップS8−6−7 隣接ドットと同サイズに変更する。
ステップS8−6−8 残りの隣接ドットの印刷数を判定する。残りの隣接ドットの印刷数が2である場合はステップS8−6−9に進み、残りの隣接ドットの印刷数が1である場合はステップS8−6−12に進み、残りの隣接ドットの印刷数が0である場合はステップS8−6−13に進む。
ステップS8−6−9 重複印刷最終ラインであるか否かを判定する。重複印刷最終ラインである場合はステップS8−6−11に進み、重複印刷最終ラインでない場合はステップS8−6−10に進む。
ステップS8−6−10 ドットサイズを30〔%〕に変更する。
ステップS8−6−11 ドットサイズを50〔%〕に変更する。
ステップS8−6−12 ドットサイズを50〔%〕に変更する。
ステップS8−6−13 重複印刷最終ラインであるか否かを判定する。重複印刷最終ラインである場合はステップS8−6−15に進み、重複印刷最終ラインでない場合はステップS8−6−14に進む。
ステップS8−6−14 ドットサイズを50〔%〕に変更する。
ステップS8−6−15 ドットサイズを75〔%〕に変更する。
ステップS8−6−16 ライン端のドットデータであるか否かを判定する。ライン端のドットデータである場合はステップS8−6−17に進み、ライン端のドットデータでない場合はステップS8−6−2に戻る。
ステップS8−6−17 重複印刷領域の最終ラインであるか否かを判定する。重複印刷領域の最終ラインである場合はその他イメージ重複印刷パターン生成処理を終了し、重複印刷領域の最終ラインでない場合はステップS8−6−1に戻る。
次に、バーコード重複印刷パターン生成処理のサブルーチンについて説明する。
図23は本発明の実施の形態におけるバーコードデータの重複印刷パターンを説明する図、図24は本発明の実施の形態におけるバーコードデータの重複印刷の結果を説明する第1の図、図25は本発明の実施の形態におけるバーコードデータの重複印刷の結果を説明する第2の図、図26は本発明の実施の形態におけるバーコード重複印刷パターン生成処理のサブルーチンを示すフローチャートである。
バーコードも、キャラクタと同様に、階調がないので、印刷ドットの有無のみで表現される。また、バーコードは、印刷方向によっては、連続するドットとなる。図23に示されれるように、印刷方向が横の場合、媒体搬送方向にドットが続くので、補正の必要がない。一方、印刷方向が縦の場合、媒体搬送方向にバーが並ぶ形状となるので、空白ドットを埋めてしまうときや、空白ドットが広がってしまうときがある。
バーコードの場合、ナローバーの幅とワイドバーの幅との比率が決まっており、この比率が大きくずれるとバーコードが読めなくなってしまう。ナローバーの幅とワイドバーの幅との比率は、バーサイズが2種類の場合、1:2〜3であり、バーサイズが4種類の場合、1:2:3:4である。そこで、本実施の形態においては、ナローバーのサイズによって補正量を決定する。
図23に示されるように、ナローバー幅のサイズが大きくなればなるほどマージンが大きくなるので、ナローバー幅のサイズに応じてドットの縮小率を決定する。例えば、ナローバー幅が1ドットである場合、ワイドバー幅は2〜3ドットとなるが、ナローバー幅が5ドットである場合、ワイドバー幅は10〜15ドットとなる。したがって、ナローバー幅が5ドットである場合には、位置ズレによって1ドット分太くなっても影響が少ないが、ナローバー幅が1ドットの場合には、位置ズレによって1ドット分太くなると、ナローバーがワイドバーとして認識されてしまう恐れがある。
バーコード重複印刷パターン生成処理が開始されると、ステップS8−7−1で、重複印刷パターン生成部16aは、まず、1ライン分のデータを取得する。具体的には、重複印刷領域における印刷ドットデータの1ラインに対応するデータを、重複印刷領域の最初のラインから順次、取得する。
続いて、ステップS8−7−2で、重複印刷パターン生成部16aは、1ドット分のデータを取得する。具体的には、取得した1ラインの中の1ドットに対応するデータを、ラインの端のドットから順次、当該ドットのデータとして取得する。
続いて、ステップS8−7−3で、重複印刷パターン生成部16aは、隣接する次のラインの1ドット分のデータを取得する。具体的には、当該ドットの次のラインにおける隣接ドットのデータを取得する。
続いて、ステップS8−7−4で、重複印刷パターン生成部16aは、縦印刷であるか否かを判定する。具体的には、バーコードの各バーが媒体21の幅方向に延在するようにバーコードを印刷する縦印刷であるか、又は、バーコードの各バーが媒体21の搬送方向に延在するようにバーコードを印刷する横印刷であるかを判定する。
そして、縦印刷でない場合、すなわち、横印刷である場合、ステップS8−7−5で、重複印刷パターン生成部16aは、ドットサイズを変更しない。具体的には、当該ドットのドットサイズを減少させないようにする。
また、縦印刷である場合、ステップS8−7−6で、重複印刷パターン生成部16aは、隣接ドットが空白ドットであるか否かを判定する。具体的には、当該ドットの次のラインにおける隣接ドットが印刷されない空白ドットであるか否かを判定する。そして、空白ドットでない場合、すなわち、次のラインにおける隣接ドットが印刷される場合、ステップS8−7−5で、重複印刷パターン生成部16aは、ドットサイズを変更しない。また、空白ドットである場合、すなわち、次のラインにおける隣接ドットが印刷されない場合、ステップS8−7−7で、重複印刷パターン生成部16aは、ナローバー幅が1ドットであるか否かを判定する。ここで、ナローバー幅が1ドットでない場合、ステップS8−7−8で、重複印刷パターン生成部16aは、ナローバー幅を判定する。具体的には、ナローバー幅が2ドット、3ドット又は4ドットのいずれであるかを判定する。
そして、ナローバー幅が4ドットである場合、ステップS8−7−5で、重複印刷パターン生成部16aは、ドットサイズを変更しない。また、ナローバー幅が3ドットである場合、ステップS8−7−9で、重複印刷パターン生成部16aは、ドットサイズを90〔%〕に変更する。すなわち、当該ドットのドットサイズが90〔%〕となるように当該ドットの縮小率を決定する。さらに、ナローバー幅が2ドットである場合、ステップS8−7−10で、重複印刷パターン生成部16aは、ドットサイズを70〔%〕に変更する。すなわち、当該ドットのドットサイズが70〔%〕となるように当該ドットの縮小率を決定する。
なお、ナローバー幅が1ドットであるか否かを判定して1ドットである場合、ステップS8−7−11で、重複印刷パターン生成部16aは、ドットサイズを50〔%〕に変更する。すなわち、当該ドットのドットサイズが50〔%〕となるように当該ドットの縮小率を決定する。
続いて、重複印刷パターン生成部16aは、ステップS8−7−12で、ライン端のドットデータであるか否かを判定する。すなわち、当該ドットが、データを取得した1ラインの端に位置するドットであるか否かを判定する。
そして、ライン端のドットデータでない場合、ステップS8−7−2で、重複印刷パターン生成部16aは、再度、1ドット分のデータを取得して以降の動作を繰り返す。
また、ライン端のドットデータである場合、ステップS8−7−13で、重複印刷パターン生成部16aは、重複印刷領域の最終ラインであるか否かを判定する。すなわち、データを取得したラインが重複印刷領域の最終のラインであるか否かを判定する。
そして、最終ラインでない場合、ステップS8−7−1で、重複印刷パターン生成部16aは、再度、1ライン分のデータを取得して以降の動作を繰り返す。
また、最終ラインである場合、重複印刷領域のすべてのドットについて、必要な場合には、補正を実施したことになるので、重複印刷パターン生成部16aは、バーコード重複印刷パターン生成処理を終了する。
このように、バーコード重複印刷パターン生成処理を実施することによって、図24及び25に示されるような印刷結果を得ることができる。図24に示される例は、バーコードの各バーが媒体21の搬送方向に延在するようにバーコードを印刷する横印刷の例であって、印刷ドットが媒体21の搬送方向に連続するので、位置ズレによって印刷ドットが重複して印刷されても問題がない。また、図25に示される例は、バーコードの各バーが媒体21の幅方向に延在するようにバーコードを印刷する縦印刷の例である。この場合、位置ズレが発生することによって、空白バー及び黒バーが多少太くなるが、ドットサイズが小さくされているので、太くなる量が空白バー及び黒バーに分散されるので、極端に太くなったり極端に狭くなったりすることが防止される。
次に、フローチャートについて説明する。
ステップS8−7−1 1ライン分のデータを取得する。
ステップS8−7−2 1ドット分のデータを取得する。
ステップS8−7−3 隣接する次のラインの1ドット分のデータを取得する。
ステップS8−7−4 縦印刷であるか否かを判定する。縦印刷である場合はステップS8−7−6に進み、縦印刷でない場合はステップS8−7−5に進む。
ステップS8−7−5 ドットサイズを変更しない。
ステップS8−7−6 隣接ドットが空白ドットであるか否かを判定する。隣接ドットが空白ドットである場合はステップS8−7−7に進み、隣接ドットが空白ドットでない場合はステップS8−7−5に戻る。
ステップS8−7−7 ナローバー幅が1ドットであるか否かを判定する。ナローバー幅が1ドットである場合はステップS8−7−11に進み、ナローバー幅が1ドットでない場合はステップS8−7−8に進む。
ステップS8−7−8 重複印刷パターン生成部16aは、ナローバー幅を判定する。ナローバー幅が4ドットである場合はステップS8−7−5に戻り、ナローバー幅が3ドットである場合はステップS8−7−9に進み、ナローバー幅が2ドットである場合はステップS8−7−10に進む。
ステップS8−7−9 ドットサイズを90〔%〕に変更する。
ステップS8−7−10 ドットサイズを70〔%〕に変更する。
ステップS8−7−11 ドットサイズを50〔%〕に変更する。
ステップS8−7−12 ライン端のドットデータであるか否かを判定する。ライン端のドットデータである場合はステップS8−7−13に進み、ライン端のドットデータでない場合はステップS8−7−2に戻る。
ステップS8−7−13 重複印刷領域の最終ラインであるか否かを判定する。重複印刷領域の最終ラインである場合はバーコード重複印刷パターン生成処理を終了し、重複印刷領域の最終ラインでない場合はステップS8−7−1に戻る。
このように、本実施の形態においては、重複印刷を実施することによって、媒体21の切断時の印刷の中断に起因するホワイトラインの発生を防止するとともに、重複印刷領域では、印刷データのタイプ並びに各ドット及びその隣接ドットのパターンに応じてドットサイズを補正することによって、特に、その他イメージデータの印刷のような階調印刷において重複印刷領域で空白が埋まることにより発生する黒ライン等を防止することにより、印刷品質を向上させることができる。
なお、本実施の形態においては、ドットの縮小率を数値で設定した例について説明したが、ドットサイズの縮小率はこれに限定されるものではない。さらに、あらかじめロゴ等を登録する領域を設けている場合、ロゴ等の登録時点で重複印刷が必要かを判定し、重複印刷パターンを生成してもよい。
また、本発明は前記実施の形態に限定されるものではなく、本発明の趣旨に基づいて種々変形させることが可能であり、それらを本発明の範囲から排除するものではない。