JP2022007430A - プリンタドライバ、画像形成装置、印刷データ作成方法及びプリンタ制御装置 - Google Patents

プリンタドライバ、画像形成装置、印刷データ作成方法及びプリンタ制御装置 Download PDF

Info

Publication number
JP2022007430A
JP2022007430A JP2020110407A JP2020110407A JP2022007430A JP 2022007430 A JP2022007430 A JP 2022007430A JP 2020110407 A JP2020110407 A JP 2020110407A JP 2020110407 A JP2020110407 A JP 2020110407A JP 2022007430 A JP2022007430 A JP 2022007430A
Authority
JP
Japan
Prior art keywords
command
print
character
area
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
Application number
JP2020110407A
Other languages
English (en)
Inventor
直樹 金井
Naoki Kanai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2020110407A priority Critical patent/JP2022007430A/ja
Publication of JP2022007430A publication Critical patent/JP2022007430A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Editing Of Facsimile Originals (AREA)
  • Record Information Processing For Printing (AREA)

Abstract

【課題】従来と比べてより効率よく印刷できるようにする。【解決手段】領域設定描画コマンドを、印刷解像度に合わせて対応する前記領域設定印刷コマンドに変換するとともに、文字描画コマンドを、前記印刷解像度に合わせて対応する文字印刷コマンドに変換し、変換された前記領域設定印刷コマンド及び前記文字印刷コマンドを含み、前記領域設定印刷コマンドにより設定される領域に前記文字印刷コマンドにより印刷される文字が収まるように設定した印刷データを作成する。【選択図】図5

Description

本発明は、プリンタドライバ、画像形成装置、印刷データ作成方法及びプリンタ制御装置に関するものである。
図形や文字を扱うアプリケーションでは、図形としての枠(以下、図形枠と呼ぶ)の中に文字(ここでは1文字以上の文字列とする)を入力した書類(以下、アプリケーションデータとも呼ぶ)を作成する場合がある。例えば、表を構成する図形枠としてのセルの中に文字列を入力したり、フローチャートを構成する図形枠としてのブロックの中に文字列を入力したりする場合がある。
このようなアプリケーションでは、図形枠からはみ出した文字列が画面上に表示されないように、クリッピング処理を行う場合がある。具体的に、クリッピング処理では、図形枠と同位置、同サイズで非表示の切り取り枠(これをクリッピングパスと呼ぶ)を設定し、このクリッピングパスの内側の領域をクリッピング領域に設定する。そしてクリッピング処理では、このクリッピング領域から文字列の一部がはみ出している場合に、文字列全体を切り取って画面上に表示しないようにする、もしくは文字列全体のうちのクリッピング領域からはみ出している一部のみを切り取って画面上に表示しないようにする。このクリッピング処理に代表されるように、図形枠などの画像とは別に各種領域を設定する技術については、例えば特許文献1に開示されている。
アプリケーションの使用者は、図形枠の中に文字列を入力している際に、クリッピング処理により文字列が消えたり欠けたりすることで、図形枠から文字列がはみ出していることを認識でき、文字列が消えたり欠けたりしないように図形枠の大きさや文字列の大きさを調整しながらアプリケーションデータを作成することができる。この為、通常、アプリケーションでは、図形枠の中に文字列が収まるように調整されたアプリケーションデータが作成される。
このようにして作成されるアプリケーションデータは、コンピュータのオペレーティングシステム(OS)の描画コマンド(画面に描画する為のコマンド)群で形成されている。
このアプリケーションデータを、例えば、コンピュータと接続された画像形成装置としてのプリンタで印刷する場合、まずアプリケーションが、コンピュータにインストールされたプリンタドライバに対し、アプリケーションデータの印刷を指示する。プリンタドライバは、アプリケーションからの指示に従い、アプリケーションデータを形成する描画コマンド群の1つ1つの描画コマンドを順番に受け付けて、プリンタ側で解釈可能な印刷コマンドに変換していき、得られた印刷コマンド群を印刷データ(印刷ジョブ)としてプリンタに送信する。
尚、一般的に、コンピュータ側の画面解像度とプリンタ側の印刷解像度は異なる為、プリンタドライバは、画面解像度で指定される描画コマンドを、印刷解像度で指定される印刷コマンドに変換するようになっている。
例えば、図形枠の中に文字列が収まるように調整されたアプリケーションデータを印刷する場合、プリンタドライバは、画面解像度で図形枠の内側をクリッピング領域として設定する為の描画コマンドを、印刷解像度で図形枠の内側をクリッピング領域として設定する為の印刷コマンド変換し、さらに画面解像度で図形枠の内側に文字列を描画する為の描画コマンドを、印刷解像度で図形枠の内側に文字列を描画する為の印刷コマンドに変換するようになっている。
つまり、プリンタドライバは、アプリケーションデータを形成する描画コマンドに基づいて、画面解像度に合わせた文字描画処理及びクリッピング処理を、印刷解像度に合わせてラスタライズさせる為の印刷コマンドを生成するようになっている。
特開2018-67080号公報
ところで、図形枠の中に文字列が収まるように調整されたアプリケーションデータは、画面上で調整された結果であり、このアプリケーションデータをもとにプリンタドライバが、アプリケーションデータの文字描画処理及びクリッピング処理を印刷解像度で再現すると、画面解像度と印刷解像度が異なる為に、クリッピング領域に対する文字の大きさ、文字間のカーニングスペースの大きさなどが、画面上に表示したときと印刷したときとで変わってしまう場合がある。
この為、図形枠の中に文字列が収まるように画面上で調整されたアプリケーションデータを、プリンタドライバを介してプリンタで印刷してみると、印刷媒体上では図形枠の中に文字列が収まらずに(つまりクリッピング領域から文字列がはみ出して)文字列が消えたり欠けたりする場合があった。
このように、印刷媒体上で図形枠の中に文字列が収まらずに文字列が消えたり欠けたりした場合、この印刷に使用した印刷媒体やトナーなどの消耗品が無駄になってしまう。さらにこの場合、使用者は、アプリケーション上で、図形枠の大きさをより大きくしたり、文字列の大きさをより小さくしたりして、再度調整しなければならず、効率よく印刷することができなかった。
本発明は以上の点を考慮したものであり、従来と比べてより効率よく印刷することが可能なプリンタドライバ、画像形成装置、印刷データ作成方法を提案しようとするものである。
本発明のプリンタドライバは、コンピュータに、アプリケーションデータをもとに、プリンタで印刷する為の印刷データを作成させるプリンタドライバであり、前記アプリケーションデータには、領域を設定する為の領域設定描画コマンドと、文字を描画する為の文字描画コマンドとが含まれ、前記印刷データには、前記領域設定描画コマンドに対応する領域設定印刷コマンドと、前記文字描画コマンドに対応する文字印刷コマンドとが含まれ、前記領域設定描画コマンドを、前記プリンタの印刷解像度に合わせて対応する前記領域設定印刷コマンドに変換するとともに、前記文字描画コマンドを、前記印刷解像度に合わせて対応する前記文字印刷コマンドに変換するコマンド変換処理と、前記コマンド変換処理により変換された前記領域設定印刷コマンド及び前記文字印刷コマンドを含み、前記領域設定印刷コマンドにより設定される領域に前記文字印刷コマンドにより印刷される文字が収まるように設定した前記印刷データを作成する印刷データ作成処理とを前記コンピュータに実行させる。
また本発明の画像形成装置は、アプリケーションデータをもとに、印刷する為の印刷データを作成する画像形成装置であり、前記アプリケーションデータには、領域を設定する為の領域設定描画コマンドと、文字を描画する為の文字描画コマンドとが含まれ、前記印刷データには、前記領域設定描画コマンドに対応する領域設定印刷コマンドと、前記文字描画コマンドに対応する文字印刷コマンドとが含まれ、前記領域設定描画コマンドを、印刷解像度に合わせて対応する前記領域設定印刷コマンドに変換するとともに、前記文字描画コマンドを、前記印刷解像度に合わせて対応する前記文字印刷コマンドに変換するコマンド変換部と、前記コマンド変換部により変換された前記領域設定印刷コマンド及び前記文字印刷コマンドを含み、前記領域設定印刷コマンドにより設定される領域に前記文字印刷コマンドにより印刷される文字が収まるように設定した前記印刷データを作成する印刷データ作成部と、前記印刷データ作成部により作成された印刷データに基づいて印刷する印刷部とを備える。
さらに本発明の印刷データ作成方法は、領域を設定する為の領域設定描画コマンドと、文字を描画する為の文字描画コマンドとを含んだアプリケーションデータをもとに、前記領域設定描画コマンドに対応する領域設定印刷コマンドと、前記文字描画コマンドに対応する文字印刷コマンドとを含んだ印刷データを作成する印刷データ作成方法であり、前記領域設定描画コマンドを、印刷解像度に合わせて対応する前記領域設定印刷コマンドに変換するとともに、前記文字描画コマンドを、前記印刷解像度に合わせて対応する前記文字印刷コマンドに変換するコマンド変換ステップと、前記コマンド変換ステップにより変換された前記領域設定印刷コマンド及び前記文字印刷コマンドを含み、前記領域設定印刷コマンドにより設定される領域に前記文字印刷コマンドにより印刷される文字が収まるように設定した前記印刷データを作成する印刷データ作成ステップとを備える。
さらに本発明のプリンタ制御装置は、アプリケーションデータをもとに、プリンタで印刷する為の印刷データを作成するプリンタ制御装置であり、前記アプリケーションデータには、領域を設定する為の領域設定描画コマンドと、文字を描画する為の文字描画コマンドとが含まれ、前記印刷データには、前記領域設定描画コマンドに対応する領域設定印刷コマンドと、前記文字描画コマンドに対応する文字印刷コマンドとが含まれ、前記領域設定描画コマンドを、前記プリンタの印刷解像度に合わせて対応する前記領域設定印刷コマンドに変換するとともに、前記文字描画コマンドを、前記印刷解像度に合わせて対応する前記文字印刷コマンドに変換するコマンド変換部と、前記コマンド変換部により変換された前記領域設定印刷コマンド及び前記文字印刷コマンドを含み、前記領域設定印刷コマンドにより設定される領域に前記文字印刷コマンドにより印刷される文字が収まるように設定した前記印刷データを作成する印刷データ作成部とを備える。
このように、プリンタ側の印刷解像度に合わせて、領域設定印刷コマンドにより設定される領域に文字印刷コマンドにより印刷される文字が収まるように設定した印刷データを作成することにより、印刷媒体上で、領域から文字がはみ出してしまうこと(つまり図形枠から文字列がはみ出してしまうこと)を防ぐことができる。これにより、アプリケーションデータを調整したり、再印刷したりする必要がなくなり、アプリケーションデータを効率よく印刷することができる。
本発明は、従来と比べてより効率よく印刷することが可能なプリンタドライバ、画像形成装置、印刷データ作成方法及びプリンタ制御装置を実現できる。
第1の実施の形態による印刷システムの構成を示す図である。 第1の実施の形態によるアプリケーションデータの表示例、プレビュー画像、及び印刷結果を示す図である。 第1の実施の形態によるクリッピング方法を示す図である。 第1の実施の形態による印刷ダイアログの例を示す斜視図である。 第1の実施の形態によるプリンタドライバの処理の流れを示すフローチャートである。 第1の実施の形態による印刷データの例を示す図である。 第1の実施の形態による文字列(枠内部のテキスト)とクリッピング領域の位置関係を示す図である。 第1の実施の形態による複数行の文字列を1つのブロックにまとめた様子を示す図である。 第2の実施の形態による印刷システムの構成を示す図である。
以下、発明を実施するための形態(以下、これを実施の形態と呼ぶ)について、図面を用いて詳細に説明する。
[1.第1の実施の形態]
[1-1.印刷システムの全体構成]
図1に、第1の実施の形態による印刷システム1の全体構成を示す。この図1に示すように、印刷システム1は、ホストコンピュータ100と、ホストコンピュータ100と通信接続された画像形成装置及びプリンタとしての印刷装置200とで構成されている。ホストコンピュータ100には、ユーザからの入力用にキーボード101とマウス102が接続されている。またホストコンピュータ100には、モニタ画面表示用にディスプレイ103が接続されている。
このホストコンピュータ100は、オペレーティングシステム(OS)104と、アプリケーション105と、デバイスドライバ106と、プリンタドライバ107とを備えている。尚、ホストコンピュータ100は、図示しないCPU、ROM、RAM、記憶デバイス、各種インタフェースを有するハードウェア構成を有していて、記憶デバイスにプログラムとしてのオペレーティングシステム104、アプリケーション105、デバイスドライバ106及びプリンタドライバ107がインストールされている。ホストコンピュータ100は、これらのプログラムをCPUが記憶デバイスから読み出し、読み出したプログラムをCPUが実行することにより、各プログラムの機能を実現するようになっている。
オペレーティングシステム104は、ホストコンピュータ100の基本動作を司るソフトウェアである。アプリケーション105は、例えば、ワープロソフト、作図ソフト、表計算ソフトなどであり、作成した書類(アプリケーションデータ)をディスプレイ103の画面上に表示したり、印刷装置200に印刷させたりする為のソフトウェアである。デバイスドライバ106は、図示しないインタフェースを介して接続されたキーボード101、マウス102、ディスプレイ103を動作させる為のソフトウェアである。
またアプリケーション105は、図形枠の中に文字列を入力したアプリケーションデータを作成して、画面上に表示させたり、印刷させたりする機能を有していて、例えば、表を構成するセルの中に文字列(テキスト)を入力したり、フローチャートを構成するブロックの中に文字列を入力したりしたアプリケーションデータを作成できるようになっている。
さらにアプリケーション105は、図形枠からはみ出した文字列が画面上に表示されないようにする為のクリッピング機能を有している。このクリッピング機能では、図形枠と同位置、同サイズで非表示の切り取り枠(クリッピングパス)を設定し、このクリッピングパスの内側の領域をクリッピング領域に設定する。そしてクリッピング領域から文字列の一部がはみ出している場合に、文字列全体を切り取って画面上に表示しないようにする(このことを文字抜けと呼ぶ)、もしくは文字列全体のうちのクリッピング領域からはみ出している一部のみを切り取って画面上に表示しないようにする(このことを文字欠けと呼ぶ)。このアプリケーション105によって作成されるアプリケーションデータは、オペレーティングシステム104の描画コマンド群(描画コマンドを実行順に並べたもの)によって形成されている。
アプリケーションデータをディスプレイ103の画面上に表示させる場合、アプリケーション105は、アプリケーションデータの描画コマンド群をディスプレイ103に対して実行する。デバイスドライバ106は、オペレーティングシステム104を介してディスプレイ103に対して実行された描画コマンド群を受け取り、当該描画コマンド群をもとに、アプリケーションデータを、ディスプレイ103の画面解像度のビットマップデータに展開(ラスタライズ)してディスプレイ103に表示させるようになっている。
またアプリケーションデータを印刷させる場合、アプリケーション105は、アプリケーションデータの描画コマンド群を印刷装置200に対して実行する。プリンタドライバ107は、オペレーティングシステム104を介して、印刷装置200に対して実行された描画コマンド群を受け取り、当該描画コマンド群の1つ1つの描画コマンドを、印刷装置200で解釈可能な印刷コマンドに変換していき、得られた印刷コマンド群(印刷コマンドを実行順に並べたもの)を印刷データ(印刷ジョブ)として印刷装置200に送信する。これにより、印刷装置200側で、印刷データをもとにアプリケーションデータが印刷されるようになっている。
尚、本実施の形態では、ディスプレイ103の画面解像度と印刷装置200の印刷解像度が異なる為、プリンタドライバ107は、画面解像度で指定される描画コマンドを、印刷解像度で指定される印刷コマンドに変換するようになっている。
さらにアプリケーション105は、オペレーティングシステム104及びプリンタドライバ107を介して、アプリケーションデータの描画コマンド群を印刷解像度に基づく描画コマンド群に変換してディスプレイ103に対して実行することで、アプリケーションデータを印刷装置200で印刷したときの印刷結果を疑似的に示す印刷プレビュー画像をディスプレイ103に表示させることができるようにもなっている。
ここで、プリンタドライバ107についてさらに詳しく説明する。プリンタドライバ107は、コマンド変換部110と、クリッピング領域抽出部111と、領域内文字判定部112と、文字判定部113と、縮小率計算部114と、描画スケール変換部115と、通信部116と、スプール部117と、表示部118とを有している。尚、クリッピング領域抽出部111と、領域内文字判定部112と、文字判定部113と、縮小率計算部114と、描画スケール変換部115と、スプール部117を、まとめて印刷データ作成部120と呼ぶ。
プリンタドライバ107は、まず表示部118によって、アプリケーションデータの印刷をユーザが指示する為の印刷ダイアログをディスプレイ103に表示させる。この印刷ダイアログ上で印刷が指示されると、プリンタドライバ107は、オペレーティングシステム104によって、アプリケーションデータを形成する描画コマンド群の1つ1つに対応する描画関数がコールされる。
プリンタドライバ107のコマンド変換部110は、描画関数のコールに応じて、アプリケーションデータの描画コマンド群の1つ1つの描画コマンドを順番に、印刷解像度で指定される印刷コマンドに変換していくコマンド変換処理を実行する。具体的には、コマンド変換部110は、例えば、アプリケーションデータに含まれるクリッピング領域を設定する為の描画コマンドを、印刷解像度でクリッピング領域を設定する為の印刷コマンドに変換し、アプリケーションデータに含まれる文字列を描画する為の描画コマンドを、印刷解像度で文字を描画(印刷)する為の印刷コマンドに変換する。
クリッピング領域抽出部111は、コマンド変換部110により変換された印刷コマンドが、上述したクリッピング領域を設定する為の印刷コマンドである場合に、当該印刷コマンドから、クリッピング領域に関する情報(クリッピング領域の位置、サイズなどであり、以下、クリッピング領域情報と呼ぶ)を取得する。
領域内文字判定部112は、コマンド変換部110により変換された印刷コマンドが、1文字以上の文字で構成される文字列を描画(つまり印刷)する為の印刷コマンドである場合に、当該文字列が、クリッピング領域の内側に配置するよう意図された文字列であるか否かを判定する領域内文字判定処理を実行する(判定方法については後述する)。そして領域内文字判定部112は、クリッピング領域の内側に配置するよう意図された文字列であると判定した場合に、当該文字列を描画する為の印刷コマンドを、スプール部117に一時的に格納する。さらに領域内文字判定部112は、コマンド変換部110により変換された印刷コマンドが、クリッピング領域の内側に配置するよう意図された文字列を描画する為の印刷コマンドから、他の印刷コマンドに移った時点で、クリッピング領域の内側に配置するよう意図された文字列の終了を判定するようにもなっている。
文字判定部113は、領域内文字判定部112により判定されたクリッピング領域の内側に配置するよう意図された文字列に関する情報(具体的には印刷コマンドから取得される文字列の位置、サイズなどであり、以下、文字列情報と呼ぶ)と、クリッピング領域抽出部111により取得されたクリッピング領域情報(クリッピング領域の位置、サイズなど)とをもとに、クリッピング領域の内側に配置するよう意図された文字列が、当該クリッピング領域からはみ出すことで文字抜け又は文字欠けが発生するか否かを判定する文字判定処理を実行する。
縮小率計算部114は、文字判定部113により文字抜け又は文字欠けが発生すると判定された場合に、クリッピング領域情報に含まれるクリッピング領域のサイズと、文字列情報に含まれる文字列のサイズとをもとに、クリッピング領域の内側に当該文字列が収まるように当該文字列のサイズを縮小する為の縮小率を算出する縮小率計算処理を実行する。
描画スケール変換部115は、領域内文字判定部112により、クリッピング領域の内側に配置するよう意図された文字列が終了したと判定されると、スプール部117に格納している、当該文字列を描画する為の印刷コマンドの直前に、縮小率計算部114により計算された縮小率で当該文字列を縮小する為の印刷コマンドを追加するとともに、当該文字列を描画する為の印刷コマンドの直後に、当該文字列の縮小率を元に戻す為の印刷コマンドを追加する描画スケール変換処理を実行する。つまり、これらの印刷コマンドは、クリッピング領域の内側に配置するよう意図された文字列を、クリッピング領域の内側に収まるように縮小して印刷する為の印刷コマンドとなる。
通信部116は、コマンド変換部110から直接送られてくる印刷コマンド、及びスプール部117に格納されている印刷コマンドを、印刷データ(印刷ジョブ)として印刷装置200に送信する。ホストコンピュータ100の構成は以上のようになっている。
一方で、印刷装置200は、通信部201と、印刷制御部202と、ラスタライズ部203と、印刷部204とを備えている。通信部201は、ホストコンピュータ100から送られてくる印刷データ(印刷ジョブ)を受信する。印刷制御部202は、印刷データに含まれている印刷コマンドを順に解釈して、ラスタライズ部203に送る。ラスタライズ部203は、印刷コマンドをもとに、印刷データを、印刷解像度のビットマップデータに展開(ラスタライズ)する。印刷部204は、ラスタライズ部203によりラスタライズされたビットマップデータを印刷する。印刷装置200の構成は以上のようになっている。
[1-2.印刷システムの動作]
次に、印刷システム1によるアプリケーションデータを印刷するときの動作について説明する。尚、印刷システム1の動作のうち、印刷装置200の動作については一般的である為、ここでは、主にホストコンピュータ100の動作について説明する。
まず図2(A)に、ホストコンピュータ100のアプリケーション105によって作成されるアプリケーションデータAdの一例を示す。尚、図2(A)は、画面上に表示されたアプリケーションデータAdを示している。このアプリケーションデータAdは、横長長方形の図形枠Sfを描画する為の描画コマンドと、この図形枠Sfの内側に2行分の文字列Txを描画する為の描画コマンドと、図形枠Sfから文字列Txがはみ出した場合に、はみ出した部分が表示されないように、図形枠Sfの内側をクリッピング領域Caに設定する描画コマンドなどで形成されている。尚、ここでは説明を簡単にする為、図形枠Sf及びクリッピング領域Caを四角形状としているが、他の形状であっても構わない。
アプリケーション105がこのようなアプリケーションデータAdを、デバイスドライバ106を介してディスプレイ103に表示させる際には、ラスタオペレーションと呼ばれる画像の重ね合わせ処理を用いて、クリッピング領域Caからはみ出した部分をクリップするようになっている。具体的には、デバイスドライバ106は、アプリケーションデータAdの描画コマンド群をもとに、図3に示すように、画面解像度でクリッピング領域Ca内の全てをONビット(つまり「1」)としてラスタライズした画像Pcと、画面解像度で文字列Tx(枠内部のテキスト)をラスタライズした画像Ptとを、AND演算子で重ね合わせることで、クリッピング領域Caからはみ出した部分がクリッピングされた画像Poを得、これをディスプレイ103に表示することで、クリッピングを実現している。
ユーザは、このようにして画面上に表示されたアプリケーションデータAdを見て、図形枠Sfの中に入力した文字列Txが、クリッピングにより文字抜け又は文字欠けしている場合に、図形枠Sfから文字列Txがはみ出していると認識し、文字抜け又は文字欠けが発生しないように図形枠Sfの大きさや文字列Txの大きさを調整する。
そしてユーザは、アプリケーション105上でアプリケーションデータAdの印刷を選択する。これに応じて、プリンタドライバ107が、アプリケーションデータAdの描画コマンド群を印刷コマンド群に変換して印刷データを作成し、これを印刷装置200に送信することで、アプリケーションデータAdが印刷される。
ところで、上述したように、ディスプレイ103と印刷装置200とでは、解像度が異なることから、画面解像度で指定されるアプリケーションデータAdの描画コマンドを、単純に、印刷解像度で指定される印刷コマンドに変換しただけだと、クリッピング領域Caに対する文字列Txの大きさ、文字間のカーニングスペースの大きさ、改行位置などが変わってしまい、印刷時に、図形枠Sfから文字列Txがはみ出して文字抜け又は文字欠けが発生する可能性が出てくる。
このことは、アプリケーションデータAdの印刷結果を印刷解像度に基づいて疑似的に示す印刷プレビュー画像でも同じことが言える。ここで、図2(B)に、印刷プレビュー画像として表示されるアプリケーションデータAdの例を示す。この図2(B)に示すように、印刷プレビュー画像では、図2(A)に示す画面表示のときと比較して、クリッピング領域Caに対する文字列Txの大きさ、文字間のカーニングスペースの大きさ、改行位置などが変わってしまい、この結果、図形枠Sfから2行目の文字列Txの下端部がはみ出して文字欠けが発生している。
つまり、ユーザは、アプリケーションデータAdの印刷プレビュー画像を見ることで、印刷時に図形枠Sfから文字列Txがはみ出して文字欠けが発生することを前もって認識でき、図形枠Sfや文字列Txの大きさを調整することで、文字欠けの発生を防ぐことができる。
しかしながら、一般的に、ディスプレイ103に表示される印刷プレビュー画像は印刷媒体よりも小さく、またディスプレイ103の画面解像度は印刷装置200の印刷解像度よりも粗い為、印刷プレビュー画像で印刷結果を正確に確認することは難しい。この為、ユーザが、印刷プレビュー画像上で、文字抜け、文字欠けを見落としてしまう場合も十分有り得る。また印刷プレビュー画像上で、文字抜け、文字欠けを見付けたとしても、図形枠Sfや文字列Txの大きさの調整と、印刷プレビューの確認を繰り返し行うのは効率的とは言い難い。
そこで、本実施の形態のホストコンピュータ100では、プリンタドライバ107が、アプリケーションデータAdの印刷データを作成する際に、図形枠Sfの中に収まるように(つまりクリッピング領域Caの中に収まるように)文字列Txを縮小する印刷コマンドなどを追加することで、印刷時に図形枠Sfから文字列Txがはみ出して文字抜け、文字欠けが発生することを防ぐようになっている。以下、このプリンタドライバ107の動作を中心に説明する。
ユーザは、アプリケーションデータAdを印刷装置200に印刷させる為に、アプリケーション105上で印刷を選択する。印刷が選択されるとアプリケーション105は、オペレーティングシステム104を介してプリンタドライバ107の表示部118を呼び出して図4に示す印刷ダイアログ300をディスプレイ103に表示させる。
印刷ダイアログ300には、アプリケーションデータAdの印刷を実行する為のOKボタンBt1、及び印刷をキャンセルする為のキャンセルボタンBt2などが設けられている。さらにこの印刷ダイアログ300に、図形枠Sfの中に文字列Txが収まるように文字列Txを縮小する機能(文字縮小機能と呼ぶ)を利用するか否かを選択する為のチェックボックスCbを設け、文字縮小機能を利用するか否かをユーザに選択させるようにしてもよい。尚、本実施の形態では、文字縮小機能を利用する場合についてのみ説明する。
この印刷ダイアログ300のOKボタンBt1が押下操作されると、アプリケーション105は、オペレーティングシステム104に対して、アプリケーションデータAdに対する印刷指示を出す。ここで、プリンタドライバ107は、オペレーティングシステム104によってアプリケーションデータAdの描画コマンド群の1つ1つの描画コマンドに対応する描画関数がコールされ、アプリケーションデータAdの描画コマンド群の1つ1つの描画コマンドを、コールされた描画関数に基づいて、印刷解像度に合わせた印刷コマンドに変換し、印刷データ(印刷ジョブ)として印刷装置200に送信する。
このようにアプリケーションデータAdの描画コマンド群の1つ1つの描画コマンドを印刷コマンドに変換し、印刷データとして印刷装置200に送信するときのプリンタドライバ107の処理の流れを、図5のフローチャートに示す。
まずステップSP1において、プリンタドライバ107は、オペレーティングシステム104を介して、アプリケーションデータAdの描画コマンド群に含まれている描画コマンドを1つ受け取り、この描画コマンドがジョブの終端(つまりアプリケーションデータAdの終端)を示しているか否かをコマンド変換部110で判定する。
ここで、描画コマンドがジョブの終端を示している場合、このことは、アプリケーションデータAdの印刷コマンドへの変換が完了していることを意味する。この場合、プリンタドライバ107は、ステップSP1で肯定結果を得て処理を終了する。
これに対して、描画コマンドがジョブの終端を示していない場合、このことは、アプリケーションデータAdの印刷コマンドへの変換がまだ完了していないことを意味する。この場合、プリンタドライバ107は、ステップSP1で否定結果を得て、ステップSP2に移る。
ステップSP2において、プリンタドライバ107は、オペレーティングシステム104によって、ステップSP1で受け取った描画コマンドに対応する描画関数がコールされる。つづくステップSP3において、プリンタドライバ107のコマンド変換部110は、描画関数のコールに基づいて、ステップSP1で受け取った描画コマンドを印刷コマンドに変換する。
つづくステップSP4において、プリンタドライバ107のコマンド変換部110は、ステップSP3で変換した印刷コマンドが、クリッピング領域を設定する為の印刷コマンドであるか否かを判定する。
ここで、クリッピング領域を設定する為の印刷コマンドである場合、プリンタドライバ107は、ステップSP4で肯定結果を得て、ステップSP5に移る。ステップSP5において、プリンタドライバ107のクリッピング領域抽出部111は、クリッピング領域を設定する為の印刷コマンドから、クリッピング領域情報を取得する。さらに詳しく説明すると、クリッピング領域を設定する為の印刷コマンドは、図6に示す印刷コマンドCm1のように、クリッピング領域の形状(四角形を意味する「rectclip」)と、印刷解像度で指定される書き出し位置のxy座標(「1162 656」)と、x方向及びy方向のサイズ(「2145 187.5」)を含んでいる。クリッピング領域抽出部111は、このような印刷コマンドCm1を、クリッピング領域を設定する為の印刷コマンドと判定して、この印刷コマンドCm1からクリッピング領域の形状と位置とサイズを、クリッピング領域情報として取得する。尚、図6は、印刷コマンド群で形成される印刷データPdの一例である。
このとき、クリッピング領域抽出部111は、図7(A)に模式図を示すように、四角形のクリッピング領域Caの図中左下角のxy座標(X1、Y1)と、図中右上角のxy座標(X2、Y2)を、クリッピング領域情報として取得するようになっている。このうち、左下角のxy座標(X1、Y1)は、クリッピング領域を設定する為の印刷コマンド(例えば印刷コマンドCm1)に含まれているクリッピング領域の書き出し位置のxy座標であり、右上角のxy座標(X2、Y2)は、当該印刷コマンドに含まれている情報から算出したxy座標である。
図5に戻り、クリッピング領域を設定する為の印刷コマンドからクリッピング領域情報を取得した後、プリンタドライバ107は、ステップSP14に移り、通信部116によって当該印刷コマンドを印刷データ(印刷ジョブ)として印刷装置200に送信し、再びステップSP1に戻る。
一方、ステップSP3で変換した印刷コマンド(つまり現在受け付けている印刷コマンド)が、クリッピング領域を設定する為の印刷コマンドでない場合、プリンタドライバ107は、ステップSP4で否定結果を得て、ステップSP6に移る。ステップSP6において、プリンタドライバ107の領域内文字判定部112は、現在受け付けている印刷コマンドが、クリッピング領域抽出部111により抽出されたクリッピング領域Caの内側に配置するよう意図された文字列を描画(つまり印刷)する為の印刷コマンドであるか否かを判定する。
具体的には、領域内文字判定部112は、印刷コマンドが文字列を描画する印刷コマンドであり、且つこの印刷コマンドにより描画される文字列の少なくとも一部が、クリッピング領域の内側に位置している場合に、この印刷コマンドをクリッピング領域の内側に配置するよう意図された文字列を描画する為の印刷コマンドであると判定する。
さらに詳しく説明すると、文字列を描画する為の印刷コマンドは、図6に示す印刷コマンドCm2のように、フォントの種別(「Courier」)及びサイズ(「92」)と、文字列の書き出し位置のxy座標(「1162 823」)と、文字列(「ABCDEF…」)と、カーニングスペースのサイズ(「55 55 55…」)とを含んでいる。尚、図6は、印刷コマンドCm2により1行目の文字列を描画し、つづく印刷コマンドCm3により2行目の文字列を描画する例であり、印刷コマンドCm3については、印刷コマンドCm2と同じフォントの種別及びサイズで文字列を描画する為、フォントの種別及びサイズが省略されている。ここでは、印刷コマンドCm2、Cm3により1行ずつ文字列を描画するようになっているが、これに限らず、可能であれば、1つの印刷コマンドで2行分の文字列を描画するようになっていてもよい。
領域内文字判定部112は、文字列を描画する為の印刷コマンドに含まれる情報をもとに、図7(A)、(B)に模式図を示すように、文字列Txを囲う外枠の内側の領域(これを文字列領域と呼ぶ)Taの情報(位置、サイズなど)を取得して、この情報を文字列Txに関する文字列情報とする。尚、図7(A)は、印刷コマンドCm2により描画される1行目の文字列Txの文字列領域Taを示し、図7(B)は、印刷コマンドCm3により描画される2行目の文字列Txの文字列領域Taを示している。
このとき、領域内文字判定部112は、四角形の文字列領域Taの図中左下角のxy座標(図7(A)ではx1、y1、図7(B)ではx3、y3)と、図中右上角のxy座標(図7(A)ではx2、y2、図7(B)ではx4、y4)を、文字列情報として取得するようになっている。このうち、左下角のxy座標は、文字列を描画する為の印刷コマンドに含まれている文字列Txの書き出し位置のxy座標であり、右上角のxy座標は、当該印刷コマンドに含まれている情報から算出したxy座標である。尚、図7(A)、(B)は、図中左下にxy座標の原点が設定された例である。
そして、領域内文字判定部112は、この文字列情報と、クリッピング領域抽出部111から取得したクリッピング領域情報とを用いて、クリッピング領域Caと文字列領域Taとが重なるか否かを判定し、重なる場合に、文字列領域Ta内の文字列Txがクリッピング領域Caの内側に配置するよう意図された文字列であると判定する。
例えば、図7(A)に示すように、1行目の文字列を描画する為の印刷コマンドCm2の場合、文字列領域Taの全体がクリッピング領域Caと重なる為、クリッピング領域Caの内側に配置するよう意図された文字列を描画する印刷コマンドであると判定される。また図7(B)に示すように、2行目の文字列を描画する為の印刷コマンドCm3の場合も、文字列領域Taの一部がクリッピング領域Caと重なる為、クリッピング領域Caの内側に配置するよう意図された文字列を描画する印刷コマンドであると判定される。
このように、本実施の形態では、文字列の少なくとも一部が、クリッピング領域の内側に位置している場合に、この文字列が、クリッピング領域の内側に配置するよう意図された文字列であると判定するようにした。これに限らず、例えば、図6に示す印刷コマンドCm2、Cm3のように、クリッピング領域Caの内側に複数行の文字列Txが配置されるような場合に、1行目の文字列Txについては、少なくとも一部分がクリッピング領域Caの内側に位置していれば、この文字列Txがクリッピング領域Caの内側に配置するよう意図された文字列であると判定する一方で、2行目以降の文字列Txについては、少なくとも一部分が、クリッピング領域の内側に位置していて、且つ1行目とフォントの種類及びサイズが一致していれば、この文字列がクリッピング領域の内側に配置するよう意図された文字列であると判定するようにしてもよい。この理由は、1つのクリッピング領域の内側に配置するよう意図された1まとまりの文字列は、行ごとにフォントの種類及びサイズが変わることはないと想定される為である。さらに2行目以降の文字列については、1行目と書き出し位置のx座標が一致していることを、判定の条件に追加してもよい。
図5に戻り、上述のステップSP6で、領域内文字判定部112により、現在受け付けている印刷コマンドが、クリッピング領域の内側に配置するよう意図された文字列を描画する為の印刷コマンドであると判定された場合、プリンタドライバ107は、このステップSP6で肯定結果を得て、ステップSP7に移る。ステップSP7において、プリンタドライバ107の領域内文字判定部112は、現在受け付けている印刷コマンドを、スプール部117に一時的に格納する。このスプール部117には、クリッピング領域Caの内側に配置するよう意図された文字列を描画する為の印刷コマンド(例えば印刷コマンドCm2、Cm3)が順に格納されていくようになっている。
つづくステップSP8において、プリンタドライバ107の文字判定部113は、ステップSP7でスプール部117に格納した印刷コマンド(つまり現在受け付けている印刷コマンド)により描画される文字列に関する文字列情報を領域内文字判定部112から取得するとともに、ステップSP4で抽出されたクリッピング領域に関するクリッピング領域情報をクリッピング領域抽出部111から取得する。尚、図7(A)、(B)を用いて上述したように、文字列情報には、印刷コマンドにより描画される文字列Txを囲う文字列領域Taの左下角のxy座標(x1、y1またはx3、y3)と右上角のxy座標(x2、y2またはx4、y4)が含まれ、クリッピング領域情報には、クリッピング領域Caの左下角のxy座標(X1、Y1)と右上角のxy座標(X2、Y2)が含まれている。
つづくステップSP9において、プリンタドライバ107の文字判定部113は、文字列情報とクリッピング情報とをもとに、当該文字列情報に対応する文字列(つまりクリッピング領域の内側に配置するよう意図された文字列)が、当該クリッピング情報に対応するクリッピング領域からはみ出して文字抜け、文字欠けが発生するか否かを判定する。
具体的には、文字判定部113は、文字列領域Ta(図7(A)、(B))の左下角のx座標とy座標が、それぞれクリッピング領域Caの左下角のx座標とy座標より大きく、且つ文字列領域Taの右上角のx座標とy座標が、それぞれクリッピング領域Caの右上角のx座標とy座標より小さい場合に、文字列Txがクリッピング領域Caからはみ出さず文字抜け、文字欠けが発生しないと判定し、それ以外の場合には、文字列Txがクリッピング領域Caからはみ出して文字抜け、文字欠けが発生すると判定する。
例えば、図7(A)に示すように、印刷コマンドCm2により描画される1行目の文字列Txの場合、x1>X1、y1>Y1、x2<X2、y2<Y2となる為、文字抜け、文字欠けが発生しないと判定される。また図7(B)に示すように、印刷コマンドCm3により描画される2行目の文字列Txの場合、y3<Y1となる為、文字抜け、文字欠けが発生すると判定される。
図5に戻り、文字判定部113により文字抜け、文字欠けが発生しないと判定された場合、プリンタドライバ107は、このステップSP9で否定結果を得て、次の描画関数のコールを受け付ける為、ステップSP1に戻る。これに対して、文字判定部113により文字抜け、文字欠けが発生すると判定された場合、プリンタドライバ107は、このステップSP9で肯定結果を得て、ステップSP10に移る。
尚、文字判定部113は、例えば1行目の文字列について文字抜け、文字欠けが発生すると判定した場合、2行目以降の文字列については、クリッピング領域からはみ出しているか否かに関係なく、文字抜け、文字欠けありと判定するようになっている。つまり、いずれかの行で文字抜け、文字欠けが発生すると判定した場合、文字判定部113は、それ以降の行については、文字抜け、文字欠けありと判定するようになっている。これは、クリッピング領域の内側に配置するよう意図された複数行の文字列をひとまとめにして文字抜け、文字欠けを判定する為である。
ステップSP10において、プリンタドライバ107の縮小率計算部114は、クリッピング領域の内側に文字列が収まるように、当該文字列を縮小する為の縮小率を計算する。具体的には、縮小率計算部114は、スプール部117に格納されている文字コマンドにより描画される文字列(つまりクリッピング領域の内側に配置するよう意図された文字列)を同一ブロックの文字列としてひとまとめにし、同一ブロックの文字列全体が、クリッピング領域の内側に収まるように、同一ブロックの文字列全体の縮小率を計算する。
例えば、スプール部117に、1行目の文字列を描画する為の印刷コマンドCm2と、2行目の文字列を描画する為の印刷コマンドCm3が格納されている場合、縮小率計算部114は、図8に示すように、1行目の文字列領域Taと2行目の文字列領域Taを囲う1つのブロックBkによって、1行目の文字列領域Taと2行目の文字列領域Taをひとまとめにし、このブロックBk全体が、クリッピング領域Caの内側に収まるように、ブロックBkのサイズと、クリッピング領域のサイズとをもとに、縮小率を計算する。
ここで、図8に示す例では、ブロックBkの左下角のxy座標は、2行目の文字列領域Taの左下角のxy座標(x3、y3)となり、右上角のxy座標は、1行目の文字列領域Taの右上角のxy座標(x2、y2)となる。さらにこの場合、2行目の文字列領域Taがy方向にはみ出していることから、ブロックBkをy方向に縮小すればよいことがわかる。
従って、この場合、縮小率計算部114は、クリッピング領域Caのy方向のサイズ(Y2-Y1)をブロックBkのy方向のサイズ(y2-y3)で除算することにより、ブロックBkのy方向の縮小率Ryを計算する。つまり、このときの縮小率RyはY2-Y1/y2-y3となる。
尚、ここでは、クリッピング領域Caから2行目の文字列Txがy方向にはみ出していることから、y方向の縮小率のみを計算するようにしたが、クリッピング領域Caから文字列Txがx方向とy方向の両方にはみ出している場合も有り得る。この場合、x方向の縮小率とy方向の縮小率をそれぞれ計算するようにしてもよい。またこれに限らず、文字列Txの縦横比率が変化しないように、x方向の縮小率とy方向の縮小率のうちの小さい方の縮小率を、大きい方の縮小率に合わせるようしてもよい。
このようにして、縮小率計算部114により、ブロックBkの縮小率(つまりクリッピング領域の内側に配置するよう意図された文字列の縮小率)を計算した後、プリンタドライバ107は、次の印刷コマンドを判定する為に、図5に示すステップSP1に戻る。
尚、ステップSP6~SP10の処理は、クリッピング領域の内側に配置するよう意図された各行の文字列を描画する為の印刷コマンドごとに実行されるようになっている。この為、縮小率計算部114は、その都度、ブロックBkの縮小率を計算して、最新の縮小率を保持するようになっていて、最終的に、クリッピング領域の内側に配置するよう意図された全ての行の文字列をひとまとめにしたブロックBkがクリッピング領域の内側に収まる縮小率を保持することになる。
一方、上述のステップSP6で、現在受け付けている印刷コマンドが、図6に示す印刷コマンドCm4もしくは印刷コマンドCm5などであり、領域内文字判定部112によりクリッピング領域の内側に配置するよう意図された文字列を描画する為の印刷コマンドではないと判定された場合、プリンタドライバ107は、このステップSP6で否定結果を得て、ステップSP11に移る。尚、図6に示す印刷コマンドCm4は、クリッピング領域と同位置、同サイズで図形枠を描画する印刷コマンドであり、印刷コマンドCm5は印刷出力を行う為の印刷コマンドである。
ステップSP11において、プリンタドライバ107の領域内文字判定部112は、クリッピング領域の内側に配置するよう意図された文字列が終了したか否か(つまりクリッピング領域の内側に配置するよう意図された文字列を描画する為の印刷コマンドを受け付け終えたか否か)を判定する。ここで、領域内文字判定部112は、スプール部117に印刷コマンドが残っていなければ、クリッピング領域の内側に配置するよう意図された文字列が終了したタイミングではないと判定する。この場合、プリンタドライバ107は、ステップSP11で否定結果を得て、ステップSP14に移る。
一方、領域内文字判定部112は、スプール部117に印刷コマンドが残っていれば、クリッピング領域の内側に配置するよう意図された文字列が終了したタイミングであると判定する。この場合、プリンタドライバ107は、ステップSP11で肯定結果を得て、ステップSP12に移る。
ステップSP12において、プリンタドライバ107の描画スケール変換部115は、縮小率計算部114から縮小率を取得して、スプール部117に格納してある印刷コマンド群(クリッピング領域Caの内側に配置するよう意図された文字列Txを描画する為の例えば印刷コマンドCm2、Cm3)の1つ前に、クリッピング領域Caの内側に配置するよう意図された文字列Txを、縮小率計算部114から取得した縮小率で縮小する為の印刷コマンドを追加する。
具体的には、図6に示すように、1行目の文字列Txを描画する為の印刷コマンドCm2の直前に、文字列Txを縮小する為の印刷コマンド(縮小印刷コマンド)Ac1を追加する。尚、この印刷コマンドAc1は、例えば、印刷解像度のxy座標系を、原点を基準にx方向とy方向に縮小する為の印刷コマンドであり、図6の例では、x方向に1.0倍(つまり縮小せず)y方向に0.8倍縮小することを示している。
また描画スケール変換部115は、この印刷コマンドAc1の1つ前に、縮小前のxy座標系を保持する(つまり元の縮小率を保持する)為の印刷コマンドAc2を追加する。さらに描画スケール変換部115は、最終行となる2行目の文字列Txを描画する印刷コマンドCm2の直後に、xy座標系を、印刷コマンドAc2で保持した縮小前のxy座標系に戻す為の印刷コマンドAc3を追加する。この時点で、スプール部117には、例えば、図6に示す印刷コマンドAc1、Ac2、Cm2、Cm3、Ac3が格納されていることになる。
このような印刷コマンドAc1、Ac2、Ac3を追加することにより、印刷コマンドCm2により描画される文字列Txと、印刷コマンドCm3により描画される文字列Txとが、印刷コマンドCm1により設定されるクリッピング領域Caの内側に収まるように縮小されることになる。
ところで、印刷コマンドAc1により、xy座標系をx方向及びy方向に縮小しただけだと、クリッピング領域の内側に配置するよう意図された文字列全体のサイズをクリッピング領域のサイズよりも小さくできる一方で、文字列の位置が、クリッピング領域の内側から外れてしまう場合がある。この為、描画スケール変換部115は、例えば、最終行の文字列の縮小後の書き出し位置が、クリッピング領域の書き出し位置(例えば図8に示すX1、Y1)に揃うように(もしくは近接するように)最終行の文字列を描画する為の印刷コマンド(例えば印刷コマンドCm3)の書き出し位置を調整するとともに、これに合わせて、他の行の文字列を描画する印刷コマンド(例えば印刷コマンドCm2)の書き出し位置を調整するようになっている。こうすることで、描画スケール変換部115は、クリッピング領域に収まるサイズに縮小した文字列を、クリッピング領域の内側に確実に配置することができる。
図5に戻り、つづくステップSP13において、プリンタドライバ107は、スプール部117に格納してある印刷コマンドを通信部116によって印刷ジョブ(印刷データ)として印刷装置200に送信し、ステップSP14に移る。この時点で、図6に示すように、印刷コマンドCm1、Ad1、Ad2、Cm2、Cm3、Ad3を含んだ印刷データPd(つまりクリッピング領域Caの内側に文字列Txが収まるように設定した印刷データPd)が印刷装置200に送信されたことになる。ステップSP14において、プリンタドライバ107は、例えばステップSP11で否定結果を得ている場合に、現在受け付けている印刷コマンドを通信部116によって印刷ジョブ(印刷データ)として印刷装置200に送信し、再びステップSP1に戻る。プリンタドライバ107の処理の流れは、以上のようになっている。
ここで、図2(C)に、プリンタドライバ107から送信されてくる印刷ジョブ(印刷データ)をもとに印刷装置200が印刷媒体Pに印刷した結果を示す。上述したように、プリンタドライバ107から送信されてくる印刷ジョブには、図形枠Sfの中に収まるように(つまりクリッピング領域Caの中に収まるように)文字列Txを縮小する為の印刷コマンドなどが追加されていることにより、図2(C)に示す印刷結果では、図形枠Sfの中に文字列Tx全体が収まっている。
[1-3.まとめと効果]
ここまで説明したように、第1の実施の形態では、コンピュータとしてのホストコンピュータ100に、アプリケーションデータをもとに、プリンタで印刷する為の印刷データを作成させるプリンタドライバ107をインストールし、このプリンタドライバ107によって、アプリケーションデータに含まれる、クリッピング領域を設定する為の描画コマンド(領域設定描画コマンド)、及び文字列を描画する為の描画コマンド(文字描画コマンド)を、印刷装置200側の印刷解像度に合わせて、クリッピング領域を設定する為の印刷コマンド(領域設定印刷コマンド)、及び文字列を印刷(描画)する為の印刷コマンド(文字印刷コマンド)に変換するコマンド変換処理(図5のステップSP2、SP3の処理)と、クリッピング領域を設定する為の印刷コマンド、及び文字を印刷する為の印刷コマンドを含み、印刷コマンドにより設定されるクリッピング領域の内側に、印刷コマンドにより印刷される文字列が収まるように設定(つまりクリッピング領域の内側に文字列が収まるように文字列を縮小)した印刷データを作成する印刷データ作成処理(図5のステップSP4~SP14の処理)とをホストコンピュータ100に実行させるようにした。
別の言い方をすると、第1の実施の形態では、プリンタ制御装置としてのホストコンピュータ100に、プリンタドライバ107により実現される機能として、アプリケーションデータに含まれる、クリッピング領域を設定する為の描画コマンド(領域設定描画コマンド)、及び文字列を描画する為の描画コマンド(文字描画コマンド)を、印刷装置200側の印刷解像度に合わせて、クリッピング領域を設定する為の印刷コマンド(領域設定印刷コマンド)、及び文字列を印刷(描画)する為の印刷コマンド(文字印刷コマンド)に変換するコマンド変換部110と、クリッピング領域を設定する為の印刷コマンド、及び文字を印刷する為の印刷コマンドを含み、印刷コマンドにより設定されるクリッピング領域の内側に、印刷コマンドにより印刷される文字列が収まるように設定(つまりクリッピング領域の内側に文字列が収まるように文字列を縮小)した印刷データを作成する印刷データ作成部120(クリッピング領域抽出部111、領域内文字判定部112、文字判定部113、縮小率計算部114、描画スケール変換部115、スプール部117)とを設けた。
このように、プリンタドライバ107の印刷データ作成部120が、印刷装置200側の印刷解像度に合わせて、印刷コマンドにより設定されるクリッピング領域に印刷コマンドにより印刷される文字列が収まるように設定した印刷データを作成することにより、印刷媒体上で、クリッピング領域から文字列がはみ出してしまうこと(つまり図形枠から文字列がはみ出してしまうこと)を防ぐことができる。これにより、本実施の形態では、アプリケーションデータを調整したり、再印刷したりする必要がなくなり、アプリケーションデータを効率よく印刷することができる。
またこのように、プリンタドライバ107側で、自動的に、印刷解像度に合わせて、クリッピング領域に文字列が収まるように設定した印刷データを作成するようにしたことにより、例えば、ユーザが、ディスプレイ103の画面上でアプリケーションデータAdを作成した際に、クリッピング領域から文字列がはみ出していることを見落としてしまった場合でも、印刷装置200側では、クリッピング領域に文字列が収まった印刷結果を出力することができる。
さらにプリンタドライバ107は、印刷データ作成部120の領域内文字判定部112により、少なくとも一部分がクリッピング領域の内側に位置する文字列をクリッピング領域の内側に配置するよう意図された文字列と判定し、そのうえで、印刷データ作成部120の文字判定部113によりクリッピング領域の内側に配置するよう意図された文字列がクリッピング領域からはみ出していると判定した場合に、印刷データ作成部120の縮小率計算部114により、クリッピング領域の内側に配置するよう意図された文字列全体をひとまとめにし、ひとまとめにした文字列全体が、クリッピング領域の内側に収まるように、ひとまとめにした文字列全体の縮小率を計算するようにした。
別の言い方をすると、印刷データ作成部120の縮小率計算部114は、クリッピング領域の内側に配置するよう意図された文字列が複数行で構成される場合に、複数行の文字列をひとまとめにして、ひとまとめにした文字列全体が、クリッピング領域の内側に収まるように、ひとまとめにした文字列全体の縮小率を計算するようにした。これにより、例えばクリッピング領域の内側に配置するよう意図された複数行の文字列のうちの1行のみがクリッピング領域からはみ出すような場合に、はみ出している行のみを縮小するのではなく、複数行の文字列全体を縮小するので、アプリケーションデータ上で設定されたクリッピング領域内の文字レイアウトを極力維持した状態で、クリッピング領域に収まるように文字列を縮小することができる。
[2.第2の実施の形態]
次に、第2の実施の形態について説明する。この第2の実施の形態は、プリンタドライバ107の機能を、印刷装置200にも持たせた実施の形態であり、ホストコンピュータ100からアプリケーションデータを印刷装置200に送信して、印刷装置200側でアプリケーションデータを印刷解像度に合わせた印刷データに変換して印刷するようになっている。
[2-1.印刷システムの全体構成]
図9に、第2の実施の形態による印刷システム1xの全体構成を示す。この図9に示すように、印刷システム1xは、ホストコンピュータ100xとホストコンピュータ100xと通信接続された印刷装置200xとで構成されている。尚、図9では、図1に示す印刷システム1と同一の部分に同一符号を付してあり、印刷システム1と同一の部分については適宜説明を省略する。
ホストコンピュータ100xは、ホストコンピュータ100の構成に、ダイレクトプリントアプリケーション400を追加した構成となっている。ダイレクトプリントアプリケーション400は、アプリケーション105からオペレーティングシステム104を介して、印刷装置200x側で解釈可能な形式のアプリケーションデータを受け取り、このアプリケーションデータをそのまま印刷装置200xに送信する。
印刷装置200xは、図1に示す印刷装置200に、プリンタドライバ107の印刷データ作成部120(クリッピング領域抽出部111、領域内文字判定部112、文字判定部113、縮小率計算部114、描画スケール変換部115、スプール部117)と同等の印刷データ作成部500を追加した構成となっている。
印刷装置200xは、ホストコンピュータ100xから送られてくる、印刷装置200x側で解釈可能なアプリケーションデータを通信部201で受信すると、印刷制御部202が、このアプリケーションデータに含まれている描画コマンドを順に解釈して、ラスタライズ部203に送る。このとき、ラスタライズ部203は、コマンド変換部110と同等に機能することにより、描画コマンドを、印刷解像度の印刷コマンドに変換して、印刷データ作成部500に送る。
印刷データ作成部500は、印刷データ作成部120と同等に機能することにより、印刷コマンドにより設定されるクリッピング領域の内側に、印刷コマンドにより描画される文字列が収まるように設定(つまりクリッピング領域の内側に文字列が収まるように文字列を縮小)した印刷データを作成する。印刷制御部202は、印刷データ作成部500により作成された印刷データに含まれる印刷コマンドを順にラスタライズ部203に送り、ラスタライズ部203が、印刷コマンドをもとに、印刷データを、印刷解像度のビットマップデータに展開(ラスタライズ)する。印刷部204は、ラスタライズ部203によりラスタライズされたビットマップデータを印刷する。印刷装置200xの構成は以上のようになっている。
[2-2.まとめと効果]
ここまで説明したように、第2の実施の形態では、プリンタドライバ107の機能を、印刷装置200に持たせ、印刷装置200側で、ホストコンピュータ100xから送られてくるアプリケーションデータの描画コマンドを、印刷解像度に合わせた印刷コマンドに変換し、印刷コマンドにより設定されるクリッピング領域の内側に、印刷コマンドにより描画される文字列が収まるように設定(つまりクリッピング領域の内側に文字列が収まるように文字列を縮小)した印刷データを作成するようにした。
こうすることで、第2の実施の形態では、例えば、ホストコンピュータ100xがプリンタドライバ107を有していない場合でも、第1の実施の形態と同様、印刷媒体上で、クリッピング領域から文字列がはみ出してしまうこと(つまり図形枠から文字列がはみ出してしまうこと)を防ぐことができる。
[3.他の実施の形態]
[3-1.他の実施の形態1]
尚、上述した第1の実施の形態では、クリッピング領域の内側に配置するよう意図された文字列がクリッピング領域からはみ出す場合に、クリッピング領域の内側に文字列が収まるように文字列を縮小するようにした。これに限らず、クリッピング領域の内側に文字列が収まるようにクリッピング領域を拡大するようにしてもよい。この場合、プリンタドライバ107の縮小率計算部114が、クリッピング領域のサイズと、クリッピング領域の内側に配置するよう意図された文字列をひとまとめにしたブロックBkのサイズとをもとにクリッピング領域の拡大率を計算し、描画スケール変換部115が、縮小率計算部114により計算された拡大率でクリッピング領域を拡大させる為の印刷コマンド(拡大印刷コマンド)と、拡大率を元に戻す為の印刷コマンドを、クリッピング領域を設定する為の印刷コマンドの前後に追加するようにすればよい。尚、このようにクリッピング領域を拡大する場合、クリッピング領域とともにクリッピング領域が設定された図形枠も拡大するようにすればよい。第2の実施の形態についても同様である。
[3-2.他の実施の形態2]
また上述した第1の実施の形態では、本発明を、印刷装置200に対応するプリンタドライバ107に適用したが、これに限らず、例えば、印刷装置200と同等の機能を有する複合機に対応するドライバなどに適用してもよい。またこれに限らず、アプリケーションデータを形成する描画コマンド群を、印刷解像度に合わせた印刷コマンドに変換して印刷データを作成し、この印刷データによる印刷結果を画面上で確認するようなソフトウェアに適用してもよい。
さらに上述した第2の実施の形態では、本発明を、画像形成装置としての印刷装置200xに適用したが、これに限らず、印刷装置200xと同等の機能を有する複合機に適用してもよい。
[3-3.他の実施の形態3]
さらに上述した第1の実施の形態では、印刷解像度のxy座標系を縮小する印刷コマンド(例えば図6に示す印刷コマンドAc1)を、クリッピング領域内に配置するよう意図された文字列を描画する為の印刷コマンド(例えば印刷コマンドCm2)の直前に追加することにより、クリッピング領域の内側に収まるように文字列を縮小するようにした。
これに限らず、例えば、図6に示す印刷コマンドCm2、Cm3では、文字列を構成する各文字のフォントのサイズを規定することができるので、印刷コマンドCm2、Cm3で規定されるフォントのサイズを小さくすることで、クリッピング領域の内側に収まるように文字列を縮小するようにしてもよい。第2の実施の形態についても同様である。
[3-4.他の実施の形態4]
さらに上述した第1の実施の形態では、クリッピング領域の内側に配置するよう意図された文字列を、クリッピング領域の内側に収まるように縮小するようにしたが、これに限らず、例えば、クリッピング領域が設定されていない図形枠の内側の領域に配置するよう意図された文字列を、当該図形枠の内側の領域に収まるように縮小するようにしてもよい。こうすることで、クリッピング領域が設定されていない場合でも、図形枠から文字列がはみ出している画像が印刷されてしまうことを防ぐことができる。
[3-5.他の実施の形態5]
さらに本発明は、上述した各実施の形態に限定されるものではない。すなわち本発明は、上述した各実施の形態の一部または全部を任意に組み合わせた実施の形態や、一部を抽出した実施の形態にもその適用範囲が及ぶものである。
本発明は、例えば、プリンタドライバや印刷装置などで広く利用することができる。
1、1x……印刷システム、100、100x……ホストコンピュータ、104……オペレーティングシステム、105……アプリケーション、107……プリンタドライバ、110……コマンド変換部、111……クリッピング領域抽出部、112……領域内文字判定部、113……文字判定部、114……縮小率計算部、115……描画スケール変換部、116……通信部、117……スプール部、118……表示部、120、500……印刷データ作成部、400……ダイレクトアプリケーション、Ad……アプリケーションデータ、Ac、Cm……印刷コマンド、Bk……ブロック、Ca……クリッピング領域、P……印刷媒体、Pd……印刷データ、Tx……文字列。

Claims (9)

  1. コンピュータに、アプリケーションデータをもとに、プリンタで印刷する為の印刷データを作成させるプリンタドライバであり、
    前記アプリケーションデータには、領域を設定する為の領域設定描画コマンドと、文字を描画する為の文字描画コマンドとが含まれ、前記印刷データには、前記領域設定描画コマンドに対応する領域設定印刷コマンドと、前記文字描画コマンドに対応する文字印刷コマンドとが含まれ、
    前記領域設定描画コマンドを、前記プリンタの印刷解像度に合わせて対応する前記領域設定印刷コマンドに変換するとともに、前記文字描画コマンドを、前記印刷解像度に合わせて対応する前記文字印刷コマンドに変換するコマンド変換処理と、
    前記コマンド変換処理により変換された前記領域設定印刷コマンド及び前記文字印刷コマンドを含み、前記領域設定印刷コマンドにより設定される領域に前記文字印刷コマンドにより印刷される文字が収まるように設定した前記印刷データを作成する印刷データ作成処理と を前記コンピュータに実行させるプリンタドライバ。
  2. 前記領域は、当該領域から文字がはみ出している場合に、当該文字全体を消去もしくは当該文字全体のうち前記領域からはみ出している部分を消去する為のクリッピング領域であり、
    前記領域設定描画コマンド及び前記領域設定印刷コマンドは、前記クリッピング領域を設定する為のコマンドである 請求項1に記載のプリンタドライバ。
  3. 前記印刷データ作成処理は、
    前記領域設定印刷コマンドにより設定される領域に前記文字印刷コマンドにより印刷される文字が収まるように当該文字を縮小する為の縮小印刷コマンドを追加した前記印刷データを作成する処理である 請求項1又は2に記載のプリンタドライバ。
  4. 前記印刷データ作成処理において、
    前記領域設定印刷コマンドにより設定される領域と、前記文字印刷コマンドにより印刷される文字の位置関係をもとに、前記文字印刷コマンドにより印刷される文字が前記領域設定印刷コマンドにより設定される領域の内側に配置するよう意図されたものであるか否かを判定する領域内文字判定処理と、
    前記領域内文字判定処理によって、前記文字印刷コマンドにより印刷される文字が前記領域設定印刷コマンドにより設定される領域の内側に配置するよう意図されたものであると判定された場合に、当該文字が当該領域からはみ出すか否かを判定する文字判定処理と、
    前記文字判定処理によって、前記文字印刷コマンドにより印刷される文字が前記領域設定印刷コマンドにより設定される領域からはみ出すと判定された場合に、当該文字が当該領域に収まるように当該文字を縮小する縮小率を計算する縮小率計算処理と、
    前記縮小率計算処理によって計算された縮小率で、前記文字印刷コマンドにより印刷される文字を縮小する為の前記縮小印刷コマンドを作成する描画スケール変換処理と を前記コンピュータに実行させる請求項3に記載のプリンタドライバ。
  5. 前記領域設定印刷コマンドにより設定される領域の内側に配置するよう意図された文字が複数行の文字列である場合、
    前記文字判定処理として、
    各行の文字列ごとに、前記領域設定印刷コマンドにより設定される領域からはみ出すか否かを判定する処理を前記コンピュータに実行させ、
    前記縮小率計算処理として、
    前記文字判定処理によって、少なくとも1行の文字列が前記領域設定印刷コマンドにより設定される領域からはみ出すと判定された場合、前記複数行の文字列をひとまとめにし、ひとまとめにした当該文字列全体が前記領域設定印刷コマンドにより設定される領域に収まるように、ひとまとめにした当該文字列全体を縮小する縮小率を計算する処理を前記コンピュータに実行させ、
    前記描画スケール変換処理として、
    前記縮小率計算処理によって計算された縮小率で、ひとまとめにした前記文字列全体を縮小する為の前記縮小印刷コマンドを作成する処理を前記コンピュータに実行させる 請求項4に記載のプリンタドライバ。
  6. 前記印刷データ作成処理は、
    前記領域設定印刷コマンドにより設定される領域に前記文字印刷コマンドにより印刷される文字が収まるように当該領域を拡大する為の拡大印刷コマンドを追加した前記印刷データを作成する処理である 請求項1又は2に記載のプリンタドライバ。
  7. アプリケーションデータをもとに、印刷する為の印刷データを作成する画像形成装置であり、
    前記アプリケーションデータには、領域を設定する為の領域設定描画コマンドと、文字を描画する為の文字描画コマンドとが含まれ、前記印刷データには、前記領域設定描画コマンドに対応する領域設定印刷コマンドと、前記文字描画コマンドに対応する文字印刷コマンドとが含まれ、
    前記領域設定描画コマンドを、印刷解像度に合わせて対応する前記領域設定印刷コマンドに変換するとともに、前記文字描画コマンドを、前記印刷解像度に合わせて対応する前記文字印刷コマンドに変換するコマンド変換部と、
    前記コマンド変換部により変換された前記領域設定印刷コマンド及び前記文字印刷コマンドを含み、前記領域設定印刷コマンドにより設定される領域に前記文字印刷コマンドにより印刷される文字が収まるように設定した前記印刷データを作成する印刷データ作成部と
    前記印刷データ作成部により作成された印刷データに基づいて印刷する印刷部と を備えることを特徴とする画像形成装置。
  8. 領域を設定する為の領域設定描画コマンドと、文字を描画する為の文字描画コマンドとを含んだアプリケーションデータをもとに、前記領域設定描画コマンドに対応する領域設定印刷コマンドと、前記文字描画コマンドに対応する文字印刷コマンドとを含んだ印刷データを作成する印刷データ作成方法であり、
    前記領域設定描画コマンドを、印刷解像度に合わせて対応する前記領域設定印刷コマンドに変換するとともに、前記文字描画コマンドを、前記印刷解像度に合わせて対応する前記文字印刷コマンドに変換するコマンド変換ステップと、
    前記コマンド変換ステップにより変換された前記領域設定印刷コマンド及び前記文字印刷コマンドを含み、前記領域設定印刷コマンドにより設定される領域に前記文字印刷コマンドにより印刷される文字が収まるように設定した前記印刷データを作成する印刷データ作成ステップと を備えることを特徴とする印刷データ作成方法。
  9. アプリケーションデータをもとに、プリンタで印刷する為の印刷データを作成するプリンタ制御装置であり、
    前記アプリケーションデータには、領域を設定する為の領域設定描画コマンドと、文字を描画する為の文字描画コマンドとが含まれ、前記印刷データには、前記領域設定描画コマンドに対応する領域設定印刷コマンドと、前記文字描画コマンドに対応する文字印刷コマンドとが含まれ、
    前記領域設定描画コマンドを、前記プリンタの印刷解像度に合わせて対応する前記領域設定印刷コマンドに変換するとともに、前記文字描画コマンドを、前記印刷解像度に合わせて対応する前記文字印刷コマンドに変換するコマンド変換部と、
    前記コマンド変換部により変換された前記領域設定印刷コマンド及び前記文字印刷コマンドを含み、前記領域設定印刷コマンドにより設定される領域に前記文字印刷コマンドにより印刷される文字が収まるように設定した前記印刷データを作成する印刷データ作成部と を備えることを特徴とするプリンタ制御装置。
JP2020110407A 2020-06-26 2020-06-26 プリンタドライバ、画像形成装置、印刷データ作成方法及びプリンタ制御装置 Pending JP2022007430A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020110407A JP2022007430A (ja) 2020-06-26 2020-06-26 プリンタドライバ、画像形成装置、印刷データ作成方法及びプリンタ制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020110407A JP2022007430A (ja) 2020-06-26 2020-06-26 プリンタドライバ、画像形成装置、印刷データ作成方法及びプリンタ制御装置

Publications (1)

Publication Number Publication Date
JP2022007430A true JP2022007430A (ja) 2022-01-13

Family

ID=80110431

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020110407A Pending JP2022007430A (ja) 2020-06-26 2020-06-26 プリンタドライバ、画像形成装置、印刷データ作成方法及びプリンタ制御装置

Country Status (1)

Country Link
JP (1) JP2022007430A (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003080791A (ja) * 2001-09-13 2003-03-19 Fuji Xerox Co Ltd プリンタ制御装置及びプリンタ制御方法
JP2005199656A (ja) * 2004-01-19 2005-07-28 Seiko Epson Corp 印刷制御装置、印刷制御方法、印刷制御プログラムおよび印刷装置
JP2005234966A (ja) * 2004-02-20 2005-09-02 Canon Inc 印刷解像度変換装置
JP2013016049A (ja) * 2011-07-05 2013-01-24 Konica Minolta Business Technologies Inc 画像処理装置、画像形成装置、及び、プログラム
JP2017001324A (ja) * 2015-06-12 2017-01-05 理想科学工業株式会社 印刷制御装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003080791A (ja) * 2001-09-13 2003-03-19 Fuji Xerox Co Ltd プリンタ制御装置及びプリンタ制御方法
JP2005199656A (ja) * 2004-01-19 2005-07-28 Seiko Epson Corp 印刷制御装置、印刷制御方法、印刷制御プログラムおよび印刷装置
JP2005234966A (ja) * 2004-02-20 2005-09-02 Canon Inc 印刷解像度変換装置
JP2013016049A (ja) * 2011-07-05 2013-01-24 Konica Minolta Business Technologies Inc 画像処理装置、画像形成装置、及び、プログラム
JP2017001324A (ja) * 2015-06-12 2017-01-05 理想科学工業株式会社 印刷制御装置

Similar Documents

Publication Publication Date Title
US6285461B1 (en) Image output system having preview function and method of displaying preview image in image output system
JP4966533B2 (ja) 印刷システム、印刷方法、印刷プログラムおよび記録媒体
JP5691455B2 (ja) 印刷プログラム、情報処理装置および記録媒体
JP5528081B2 (ja) 情報処理装置の制御方法、情報処理装置、及び、プログラム
US10583670B2 (en) Method for displaying objects based on display resolution, information processing apparatus for implementing method, and computer-readable medium storing instructions therefor
JP5479049B2 (ja) 文書処理装置
JP2022007430A (ja) プリンタドライバ、画像形成装置、印刷データ作成方法及びプリンタ制御装置
JP3085036B2 (ja) 画像出力装置
JP2007025845A (ja) プリンタの制御方法およびプログラム
US9632737B2 (en) Information processing device, and method and medium for the same
JP2005301888A (ja) 情報処理装置およびプリンタドライバ
JP5609161B2 (ja) 情報処理装置及びプログラム
JP2017097463A (ja) 印刷制御システム、印刷制御装置およびプログラム
JP3051496B2 (ja) 文書処理方法及びその装置
JP2000099750A (ja) 画像処理装置及び画像処理方法
JP5560934B2 (ja) プリンタドライバ
JPH03112267A (ja) 印刷装置
JP3653927B2 (ja) 出力制御システム、出力制御方法、出力制御プログラムを記録した記録媒体、出力制御システムに用いるデータ生成装置、出力制御システムに用いるデータ変換装置、データ変換制御方法及びデータ変換制御プログラムを記録した記録媒体
JP4368652B2 (ja) 印刷処理方法及び装置
JPH07114541A (ja) 文書作成装置と背景パターン作成方法
JP4506371B2 (ja) 画像形成方法及び画像形成装置
US7595898B2 (en) Print control apparatus, printer apparatus, information processing apparatus, and program product
JP2019192087A (ja) 情報処理装置、プログラム、情報処理方法
JP3040624B2 (ja) パターン発生装置
JP2971547B2 (ja) 文書処理装置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20210621

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240206

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20240730