以下、プログラムを具体化した実施の形態について、添付図面を参照しつつ詳細に説明する。本形態は、印刷機能を有する装置であるプリンタに接続可能なパーソナルコンピュータ(以下、「PC」とする)にて実行されるプログラムを開示するものである。
本形態のPC1は、例えば、図1に示すように、プリンタ2と互いに通信可能に接続されている。PC1は、プリンタ2に各種の機能を行わせるための各種のアプリケーションプログラム(以下、「アプリ」とする)を実行可能な装置である。PC1は、情報処理装置の一例である。PC1に代えて、例えば、スマートフォン、タブレットコンピュータであっても良い。
PC1は、図1に示すように、CPU11と、メモリ14と、を含む制御部10を備えている。さらに、PC1は、通信インタフェース(以下、「通信IF」とする)16と、ユーザインタフェース(以下、「ユーザIF」とする)18と、を備え、これらが制御部10に電気的に接続されている。なお、図1中の制御部10は、PC1の制御に利用されるハードウェアやソフトウェアを纏めた総称であって、実際にPC1に存在する単一のハードウェアを表すとは限らない。
CPU11は、メモリ14から読み出したプログラムに従って、また、ユーザの操作に基づいて、各種の処理を実行する。CPU11は、コンピュータの一例である。メモリ14は、例えば、HDD、フラッシュメモリであり、各種のプログラム、画像データや文書データ等のデータ、各種設定を記憶する領域として利用される。CPU11が備えるバッファも、メモリの一例である。
メモリの一例は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、non-transitoryな媒体である。non-transitoryな媒体には、上記の例の他に、CD-ROM、DVD-ROM等の記録媒体も含まれる。また、non-transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non-transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。
通信IF16は、プリンタ2等の外部装置との通信を行うためのハードウェアを含む。通信IF16の通信方式は、無線でも有線でもよく、Wi-Fi(登録商標)、Bluetooth(登録商標)、USB、LAN等、どのような規格の方式でもよい。
ユーザIF18は、情報を画面に表示するハードウェアと、ユーザによる入力操作を受け付けるハードウェアと、を含む。ユーザIF18は、表示用のディスプレイと、キーボード、マウス等との組み合わせであっても良いし、表示機能と入力受付機能とを備えるタッチパネルであっても良い。ユーザIF18は、表示デバイスの一例である。
本形態のPC1のメモリ14には、図1に示すように、オペレーティングシステム(以下、「OS」とする)41と、印刷アプリ42と、プリンタドライバ43と、が組み込まれている。OS41は、例えば、Windows(登録商標)、macOS(登録商標)、iOS(登録商標)、Android(登録商標)、Linux(登録商標)である。プリンタドライバ43は、プログラムの一例である。
印刷アプリ42は、印刷に関する各種の指示を受け付けるプログラムである。印刷アプリ42は、例えば、印刷を行わせる装置の指定、印刷対象の画像の指定、印刷設定の編集指示、印刷実行の指示、を受け付ける。印刷アプリ42は、さらに、印刷対象の用紙の種類やサイズの指定、コピー部数の指定、両面印刷の指示等を受け付けてもよい。
プリンタドライバ43は、プリンタ2のモデルに対応するプログラムであり、プリンタ2と通信を行って、プリンタ2の動作を制御するプログラムである。プリンタドライバ43は、例えば、印刷アプリ42等にてプリンタ2が指定された状態で印刷実行の指示または印刷設定の編集指示を受け付けた場合、プリンタ2のプロパティ設定の指示を受け付けた場合、に起動される。
プリンタドライバ43は、プリンタ2での印刷に関する詳細な印刷設定の編集指示、例えば、給紙トレイや排紙トレイの選択、用紙種類や用紙サイズの選択、用紙サイズとしてユーザ定義サイズの登録、両面印刷の選択、を受け付ける。また、プリンタドライバ43は、OS41から印刷ジョブを受け付けた場合、印刷ジョブにて指定されている画像データに基づいて、印刷データを生成する。
プリンタ2は、少なくとも印刷機能と、PC1との通信を行う通信機能と、を有する装置である。プリンタ2の印刷機能にて印刷可能な用紙サイズの範囲には、プリンタ2のモデルごとに所定の制限がある。なお、以下では、用紙サイズのうち、プリンタ2での用紙の搬送方向のサイズを「用紙高さ」、用紙高さに直交する方向のサイズを「用紙幅」とする。また、用紙サイズの範囲は、用紙高さの範囲と用紙幅の範囲とを含み、プリンタ2は、用紙高さと用紙幅とのいずれもが範囲内である用紙への印刷が可能である。
本形態のプリンタ2は、両面印刷を行うための搬送機構を有している。両面印刷を実行する場合、プリンタ2は、その搬送機構を使用して、用紙の一面への印刷後、一面に印刷済みの用紙を排出する前に用紙の搬送方向を反転させ、両面印刷用の経路を介して搬送する。さらに、プリンタ2は、一面目と同じ印刷機能を使用して用紙の他面への印刷を行い、両面に印刷済みの用紙を機外へ排出する。プリンタ2の搬送機構にて用紙の搬送方向を適切に反転可能な用紙サイズの範囲、すなわち、プリンタ2にて両面印刷を実行可能な用紙サイズの範囲は、プリンタ2のモデルごとに予め設定されている。両面印刷を実行可能な用紙サイズの範囲は、片面印刷の場合よりも狭い場合が多い。
また、本形態のプリンタ2は、複数の給紙トレイを備え、その一部として着脱可能な給紙トレイの装着が可能である。以下では、装着可能な給紙トレイを「カスタムトレイ」とする。プリンタ2の各給紙トレイには、給紙トレイのタイプごとにそれぞれ給紙可能な用紙サイズの範囲が定められている。カスタムトレイから給紙可能な用紙サイズの範囲は、プリンタ2に固定されている給紙トレイである常設トレイから給紙可能な用紙サイズの範囲とは、異なる場合がある。カスタムトレイのタイプによっては、給紙可能な用紙サイズの範囲が常設トレイに比較して狭い場合がある。なお、プリンタ2は、複数の排紙トレイを備えていても良い。
本形態のプリンタ2では、プリンタ2のモデルと、両面印刷の実行の有無と、用紙の給紙元である給紙トレイの指定と、の組み合わせに応じて、適切に印刷可能な用紙サイズの範囲が異なる。本形態のプリンタドライバ43は、指定された印刷設定がプリンタ2での印刷が不可能な印刷設定である場合、その印刷設定を受け付けない。
続いて、本形態のプリンタドライバ43による処理について説明する。なお、以下の処理およびフローチャートの各処理ステップは、基本的に、各プログラムに記述された命令に従ったCPU11の処理を示す。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「取得」、「受付」、「制御」等の処理は、CPU11の処理を表している。CPU11による処理は、PC1のOS41のAPIを用いたハードウェア制御も含む。本明細書では、OS41の記載を省略して各プログラムの動作を説明する。すなわち、以下の説明において、「プログラムBがハードウェアCを制御する」という趣旨の記載は、「プログラムBがOS41のAPIを用いてハードウェアCを制御する」ことを指してもよい。また、プログラムに記述された命令に従ったCPU11の処理を、省略した文言で記載することがある。例えば、「CPU11が行う」、「プログラムが行う」のように記載することがある。
なお、「取得」は要求を必須とはしない概念で用いる。すなわち、CPU11が要求することなくデータを受信するという処理も、「CPU11がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「要求する」、「指示する」とは、要求していることを示す情報や、指示していることを示す情報を相手に出力することを示す概念である。また、要求していることを示す情報や指示していることを示す情報のことを、単に、「要求」、「指示」とも記載する。
また、CPU11による、情報Aは事柄Bであることを示しているか否かを判断する処理を、「情報Aから、事柄Bであるか否かを判断する」のように概念的に記載することがある。CPU11による、情報Aが事柄Bであることを示しているか、事柄Cであることを示しているか、を判断する処理を、「情報Aから、事柄Bであるか事柄Cであるかを判断する」のように概念的に記載することがある。
以下、本形態のプリンタドライバ43による印刷設定処理の手順について、図2のフローチャートを参照して説明する。印刷設定処理は、印刷アプリ42等のアプリにてプリンタ2が選択された状態で印刷設定の編集指示を受け付けたことにより、プリンタドライバ43が起動されたことを契機に、PC1のCPU11にて実行される。なお、プリンタドライバ43が予め起動されていれば、印刷設定の編集指示を受け付けたアプリが、プリンタドライバ43に印刷設定処理の実行開始を指示する。
CPU11は、まず、選択中の印刷設定を取得する(S101)。プリンタドライバ43の起動時に、CPU11は、メモリ14のプリンタドライバ43用の記憶領域に記憶されている印刷設定を読み出し、所定のデータ構造体に記憶させる。このデータ構造体は、印刷アプリ42等のアプリとプリンタドライバ43とが共用する領域であり、アプリとプリンタドライバ43とのいずれからも編集されることがある。データ構造体は、印刷アプリ42等のアプリの実行中に限って一時的に利用される領域であり、アプリの終了時には破棄される。S101では、CPU11は、このデータ構造体に記憶されている印刷設定を読み出す。以後の処理では、CPU11は、読み出した印刷設定を参照し,編集する。
一方、プリンタドライバ43用の記憶領域は、プリンタドライバ43がPC1にインストールされた際に設けられる領域であり、例えば、レジストリ、設定ファイルである。プリンタドライバ43用の記憶領域は、プリンタドライバ43や印刷アプリ42等のアプリの実行状況にかかわらず保持される領域であり、恒久的に使用される。プリンタドライバ43のインストール時には、プリンタドライバ43のインストーラ、OS41、インストール直後のプリンタドライバ43、などが、その記憶領域に各種の情報を記憶させる。プリンタドライバ43用の記憶領域に記憶される情報としては、例えば、印刷設定、モデル情報があり、インストール後に編集される情報もある。
印刷設定は、印刷をプリンタに指示するために用いられるパラメータである。モデル情報は、このプリンタドライバ43が印刷を指示するプリンタのモデルを示す情報である。プリンタドライバ43は、例えば同じ製品シリーズ内の複数のモデルに対応するプログラムであり、プリンタドライバ43のインストール時に、使用するプリンタ(本形態ではプリンタ2)のモデル情報が記憶される。プリンタドライバ43用の記憶領域に記憶される情報に基づいて、プリンタドライバ43は、制御対象のプリンタのモデルを認識できる。
そして、CPU11は、ユーザIF18に印刷設定画面を表示させ(S102)、その印刷設定画面に、S101にて取得した印刷設定を表示させる。印刷設定画面の例を図3に示す。図3の例に示す印刷設定画面51には、用紙サイズの選択欄511と、両面印刷の選択欄512と、給紙方法の選択欄513と、OKボタン514と、キャンセルボタン515と、が表示される。CPU11は、印刷設定画面51に表示させた各選択欄や各ボタンへの操作を受け付ける。
なお、プリンタドライバ43は、印刷設定として多数の項目の編集を受け付け可能である。そのため、印刷設定画面51には、図3に示すように、複数のタブが設けられており、CPU11は、指定されたタブの設定画面を表示させる。S102では、CPU11は、印刷設定画面51のうち、初期画面として、基本的な印刷設定の編集を受け付ける基本タブ画面51Aを表示させる。
そして、CPU11は、閾値決定処理を実行する(S103)。閾値決定処理は、選択中の印刷設定にて印刷可能な用紙サイズの範囲である閾値を決定する処理である。閾値決定処理の手順について、図4のフローチャートを参照して説明する。
閾値決定処理では、CPU11は、まず、プリンタ2のモデル情報及びトレイ情報を取得する(S201)。CPU11は、前述したように、プリンタドライバ43用の記憶領域に記憶される情報に基づいて、制御対象のプリンタであるプリンタ2のモデル情報を取得できる。CPU11は、S201にて取得したモデル情報に基づいて、プリンタ2のモデルに対応するモデル許容サイズ、両面許容サイズを取得する(S202)。
プリンタドライバ43用の記憶領域には、プリンタドライバ43が対応可能な複数のモデルのそれぞれについて、トレイ情報、モデル許容サイズ情報、両面許容サイズ情報、トレイ許容サイズ情報が記憶される。トレイ情報は、モデル情報によって示されるプリンタが備える給紙トレイ、及び装着可能なカスタムトレイの情報である。プリンタ2が用紙を1枚だけ差し込むことのできる差し込み口を備える場合、その差し込み口も給紙トレイの一種とする。
モデル許容サイズ情報は、各モデルのプリンタが片面印刷を行うことのできる用紙サイズの範囲を示す情報である。なお、用紙サイズの情報には、印刷可能な用紙サイズとして予めプリンタドライバ43が備える定型サイズの用紙名と、ユーザによって定義されて登録されたユーザ定義サイズの用紙の情報とがある。定型サイズの用紙名は、例えば、A4、10×15cm、A5、A6、Letter、Legal、A3、Ledger、である。ユーザ定義サイズの用紙の情報は、ユーザに定義された用紙名の情報と用紙サイズの情報との組である。
両面許容サイズ情報は、各モデルのプリンタが両面印刷を行うことのできる用紙サイズの範囲を示す情報である。また、トレイ許容サイズ情報は、各モデルのプリンタがカスタムトレイを使用して印刷できる用紙サイズの範囲を示す情報である。なお、両面印刷のできる用紙サイズの範囲とカスタムトレイを使用して印刷できる用紙サイズの範囲との大小関係は、プリンタのモデルごとに異なる場合もある。モデル情報に基づいて、各サイズを取得することにより、1つのプログラムで複数のモデルに対応できる。
モデル許容サイズと両面許容サイズとトレイ許容サイズとの例を、図5に示す。モデル許容サイズが最も範囲が広く、両面許容サイズとトレイ許容サイズとは、いずれも、モデル許容サイズの範囲内である。
なお、トレイ情報、モデル許容サイズ情報、両面許容サイズ情報、トレイ許容サイズ情報は、プリンタドライバ43用の記憶領域に限らず、プリンタドライバ43の実行コード内に含まれていても良いし、プリンタドライバ43用の記憶領域以外の領域に記憶されていても良い。例えば、CPU11は、各情報を外部サーバからダウンロードしても良い。印刷設定やモデル情報についてもプリンタドライバ43用の記憶領域以外から取得することも可能であるが、OS41の仕組みなどとの兼ね合いから、プリンタドライバ43用の記憶領域を用いることが無難である。
CPU11は、図4のS201にて取得した情報に基づいて、プリンタ2にカスタムトレイが装着されているか否かを判断する(S203)。カスタムトレイが装着されていると判断した場合(S203:YES)、CPU11は、装着されているカスタムトレイから給紙可能な用紙サイズであるトレイ許容サイズを取得し、仮の許容サイズとする(S204)。カスタムトレイが装着されていないと判断した場合(S203:NO)、CPU11は、モデル許容サイズを仮の許容サイズとする(S205)。
S204またはS205の後、CPU11は、選択中の印刷設定にて両面印刷が選択されているか否かを判断する(S206)。両面印刷が選択されていないと判断した場合(S206:NO)、CPU11は、S204またはS205にて決定した仮の許容サイズを、閾値に決定する(S209)。
一方、両面印刷が選択されていると判断した場合(S206:YES)、CPU11は、カスタムトレイが選択されているか否かを判断する(S210)。カスタムトレイが選択されていないと判断した場合(S210:NO)、CPU11は、両面許容サイズを閾値に決定する(S211)。カスタムトレイが選択されていると判断した場合(S210:YES)、CPU11は、両面許容サイズとトレイ許容サイズとの両方に含まれる範囲を閾値に決定する(S212)。
S212では、CPU11は、閾値の下限を、両面許容サイズの下限とトレイ許容サイズの下限との大きい方とし、閾値の上限を、両面許容サイズの上限とトレイ許容サイズの上限との小さい方とする。例えば、図5に示した例では、S212にて決定される閾値は、図中下部に示す範囲となる。具体的には、許容される用紙名は、「A4」と「Letter」であり、許容されるユーザ定義サイズは、用紙幅が128.9-215.9mmの範囲内で、かつ、用紙高さが209.5-297.4mmの範囲内のサイズである。
S209、S211、S212の何れかにて閾値を決定した後、CPU11は、閾値決定処理を終了して、印刷設定処理に戻る。S209、S211、S212の何れかにて決定される閾値は、特定範囲の一例である。
図3の印刷設定処理の説明に戻る。印刷設定処理では、S103の閾値決定処理の後、CPU11は、選択中の用紙サイズが閾値決定処理にて決定した閾値の範囲内に含まれるか否かを判断する(S104)。S104は、判断処理の一例である。例えば、図3に示した印刷設定画面51では、用紙サイズとして定型サイズの「A4」が選択中であり、前述した閾値決定処理のS209、S211、S212のいずれにて閾値が決定されたとしても、「A4」は、許容される用紙名に含まれる。
用紙サイズが閾値の範囲内に含まれると判断した場合(S104:YES)、CPU11は、表示中の印刷設定画面51への入力操作を受け付ける。CPU11は、印刷設定画面51にてOKボタン514への操作を受け付けたか否かを判断する(S105)。OKボタン514への操作を受け付けていないと判断した場合(S105:NO)、CPU11は、キャンセルボタン515への操作を受け付けたか否かを判断する(S106)。キャンセルボタン515への操作を受け付けていないと判断した場合(S106:NO)、CPU11は、印刷設定の変更操作を受け付けたか否かを判断する(S107)。印刷設定の変更操作も受け付けていないと判断した場合(S107:NO)、CPU11は、OKボタン514への操作、または、キャンセルボタン515への操作、または、印刷設定の変更操作のいずれかを受け付けるまで待機する。
印刷設定の変更操作を受け付けたと判断した場合(S107:YES)、CPU11は、受け付けた操作が用紙サイズの変更操作であるか、両面/片面の変更またはトレイ選択の操作であるか、それ以外の操作であるかを判断する(S108)。CPU11は、印刷設定の変更操作として、例えば、印刷設定画面51(図3参照)中の各選択欄511、512、513へのユーザの操作を受け付ける。CPU11は、操作を受け付けた欄にて選択可能な選択肢の一覧を表示させ、表示させた選択肢からの選択を受け付ける。
用紙サイズの選択欄511への操作を受け付けた場合、CPU11は、例えば、「A4」等の定型サイズの用紙名、登録済みのユーザ定義サイズの用紙名、ユーザ定義サイズの登録、の各選択肢を含む複数の選択肢をユーザIF18に表示させる。表示させた選択肢のいずれかを選択する操作を受け付けた場合、CPU11は、S108にて、用紙サイズの変更操作を受け付けたと判断する。
なお、ユーザ定義サイズの登録指示は、用紙サイズの選択欄511の選択肢に含まれる代わりに、用紙サイズの選択欄511とは別の項目として受け付けても良い。例えば、ユーザ定義サイズの登録指示を受け付ける単独の受け付けボタンが、印刷設定画面51に含まれていても良い。この場合、ユーザ定義サイズの登録指示を単独のボタンにて受け付けた場合にも、CPU11は、S108にて、用紙サイズの変更操作を受け付けたと判断する。
また、印刷設定画面51にて、例えば、両面印刷の選択欄512への操作を受け付けた場合、CPU11は、S108にて、両面/片面の変更の操作を受け付けたと判断する。両面印刷の選択欄512への操作を受け付けた場合、CPU11は、例えば、片面印刷、両面印刷、小冊子印刷の選択肢をユーザIF18に表示させて、いずれかの選択を受け付ける。小冊子印刷は、綴じるためにページ順を変更した印刷であり、両面印刷の一種である。
また、印刷設定画面51にて、例えば、給紙方法の選択欄513への操作を受け付けた場合、CPU11は、S108にて、トレイ選択の操作を受け付けたと判断する。給紙方法の選択欄513への操作を受け付けた場合、CPU11は、プリンタ2に装着されている各給紙トレイの情報を、選択肢としてユーザIF18に表示させて、いずれかの選択を受け付ける。例えば、プリンタ2にカスタムトレイが装着されていれば、カスタムトレイも選択肢として表示される。給紙方法の選択欄513に各選択肢が表示された印刷設定画面51は、トレイ選択画面の一例である。印刷設定の変更操作が給紙方法の選択欄513への操作である場合のS107は、トレイ選択処理の一例である。
また、印刷設定画面51への操作を受け付けた場合であっても、用紙サイズの選択欄511への操作でも、面印刷の選択欄512への操作でも、給紙方法の選択欄513への操作でもない操作であれば、CPU11は、S108にて、その他の操作を受け付けたと判断する。
用紙サイズの変更操作を受け付けたと判断した場合(S108:用紙サイズの変更)、CPU11は、用紙サイズ変更処理を実行する(S109)。用紙サイズ変更処理は、ユーザの操作に基づいて、プリンタ2に渡す用紙サイズを変更する処理である。
用紙サイズ変更処理の手順について、図7のフローチャートを参照して説明する。用紙サイズ変更処理では、CPU11は、まず、ユーザIF18に用紙サイズの選択肢の一覧を表示させ(S301)、表示させた各選択肢への選択指示を受け付ける。用紙サイズの選択肢には、例えば、「A4」等の各種の定型サイズ、登録済みのユーザ定義サイズ、ユーザ定義サイズの登録、が含まれる。用紙サイズの選択欄511、519に各選択肢が表示された印刷設定画面51は、用紙サイズ選択画面の一例である。S301は、用紙サイズ選択肢表示処理の一例である。
CPU11は、表示させた選択肢から、ユーザ定義サイズの登録指示を受け付けたか否かを判断する(S302)。ユーザ定義サイズの登録指示を受け付けていないと判断した場合(S302:NO)、CPU11は、登録済みのユーザ定義サイズの選択指示を受け付けたか否かを判断する(S303)。登録済みのユーザ定義サイズの選択指示を受け付けていないと判断した場合(S303:NO)、CPU11は、その他の用紙サイズの選択を受け付けたか否かを判断する(S304)。その他の用紙サイズの選択も受け付けていないと判断した場合(S304:NO)、CPU11は、いずれかの選択を受け付けるまで待機する。
ユーザ定義サイズの登録指示を受け付けたと判断した場合(S302:YES)、CPU11は、ユーザIF18に登録画面を表示させる(S305)。登録画面の例を図8に示す。図8に示す登録画面52には、例えば、用紙サイズ名の入力欄521、サイズの単位の選択欄522、用紙幅の入力欄523、用紙高さの入力欄524、OKボタン525、キャンセルボタン526、が表示される。なお、サイズの単位のデフォルトの設定は、OS41にて決定されている。登録画面52は、サイズ登録画面の一例であり、S305は、用紙サイズ受付処理の一例である。
用紙幅の入力欄523と用紙高さの入力欄524とには、サイズの単位の選択欄522にて選択中の単位による受け付け可能な数値範囲が表示され、いずれの欄も範囲外の数値は受け付けない。なお、用紙幅の入力欄523と用紙高さの入力欄524とにおける受け付け可能な数値範囲は、プリンタ2にて印刷可能な最大の範囲であるモデル許容サイズ、すなわち、常設トレイを使用した片面印刷を実行可能な用紙サイズの範囲である。
そして、CPU11は、表示中の登録画面にて、登録指示を受け付けたか否かを判断する(S306)。登録指示は、用紙幅の入力欄523と用紙高さの入力欄524との入力を受け付けた後のOKボタン525への操作によって受け付ける。登録指示を受け付けていないと判断した場合(S306:NO)、CPU11は、キャンセルボタン526への操作によってキャンセル指示を受け付けたか否かを判断する(S307)。
キャンセル指示も受け付けていないと判断した場合(S307:NO)、CPU11は、登録指示またはキャンセル指示を受け付けるまで待機する。キャンセル指示を受け付けたと判断した場合(S307:YES)、CPU11は、登録画面52の表示を中止して、S302に戻り、用紙サイズの選択肢の一覧表示中への選択指示を受け付ける。
一方、登録指示を受け付けたと判断した場合(S306:YES)、CPU11は、登録画面52に表示中の用紙サイズをユーザ定義サイズとして登録する(S308)。登録指示を受け付けた場合、CPU11は、表示中の用紙名と用紙サイズとの情報を、ユーザ定義サイズの用紙情報として、プリンタドライバ43用の記憶領域に記憶する。プリンタドライバ43用の記憶領域は、編集対象の印刷設定を一時的に記憶しているデータ構造体とは異なり、恒久的な領域である。登録されたユーザ定義サイズの情報は、印刷アプリ42等のアプリやプリンタドライバ43の次回以降の実行時にも参照可能であり、S301等で用紙サイズの選択肢の1つとして表示される。
S308の後、または、用紙サイズの選択肢から登録済みのユーザ定義サイズが選択されたと判断した場合(S303:YES)、CPU11は、編集中の印刷設定での用紙サイズを選択または登録されたユーザ定義サイズとする(S309)。なお、編集中の印刷設定での用紙サイズは、印刷設定画面51(図3参照)中の用紙サイズの選択欄511にて選択されている用紙サイズであり、印刷設定として決定された場合には、前述したデータ構造体に記憶される印刷設定中の用紙サイズとなる。
さらに、CPU11は、印刷設定にて片面印刷が選択されているか否かを判断する(S310)。片面印刷が選択されていると判断した場合(S310:YES)、CPU11は、S309にて決定した用紙サイズが、閾値決定処理のS202にて取得した両面許容サイズに含まれるか否かを判断する(S311)。そして、用紙サイズが両面許容サイズの範囲外であると判断した場合(S311:NO)、CPU11は、印刷設定画面51中の両面印刷の選択肢および小冊子印刷の選択肢をグレーアウトする(S312)。S312では、両面印刷の選択肢および小冊子印刷の選択を受け付けないようにすれば良く、例えば、それらの選択肢を表示させないとしても良いし、両面印刷の選択欄512自体をグレーアウトしても良い。
印刷設定が片面印刷であって、選択された用紙サイズが両面印刷を実行不可能なサイズであれば、予め両面印刷の選択肢を選択不能に表示させることで、実行不可能な設定が選択されることを予防できる。
また、用紙サイズの選択肢から、その他の用紙サイズの選択を受け付けたと判断した場合(S304:YES)、CPU11は、編集中の印刷設定での用紙サイズを選択されたサイズとする(S313)。S312またはS313の後、または、片面印刷ではないと判断した場合(S310:NO)、または、用紙サイズが両面許容サイズに含まれると判断した場合(S311:YES)、CPU11は、用紙サイズ変更処理を終了して、印刷設定処理に戻る。
なお、用紙サイズの変更操作は、印刷設定画面51(図3参照)中の用紙サイズの選択欄511への操作に限らない。印刷設定画面51には、図3に示したように、「基本」、「拡張」等の複数のタブが含まれ、CPU11は、タブへの操作も受け付ける。印刷設定画面51中で拡張タブが選択された場合、CPU11は、基本タブ画面51Aに含まれない印刷設定の編集を受け付ける拡張タブ画面を、ユーザIF18に表示させる。
拡張タブ画面の例を図6に示す。図6の例に示す拡張タブ画面51Bには、画像を拡大ないし縮小して印刷させる設定であるスケーリングの設定を受け付けるボタンが含まれる。拡張タブ画面51Bには、スケーリングの設定を受け付ける選択ボタンとして、例えば、「オフ」516、「用紙に合わせる」517、「フリー」518、の各ボタンが表示される。拡張タブ画面51Bは、スケーリング設定画面の一例であり、拡張タブ画面51B中で受け付けるスケーリングの設定は、スケーリングの実行有無の設定の一例である。印刷設定の変更操作が拡張タブ画面51B中の各ボタンへの操作である場合のS107は、スケーリング設定処理の一例である。
「オフ」516は、スケーリングを行わない設定を受け付けるボタンである。「オフ」516が選択された場合、CPU11は、画像の拡大も縮小も行わない。拡張タブ画面51Bにて「オフ」516が選択された場合、CPU11は、S108にて、用紙サイズの変更操作を受け付けていないと判断する。
「用紙に合わせる」517は、画像データのサイズを、用紙のサイズに合わせて、拡大または縮小する設定を受け付けるボタンである。スケーリングの設定として「用紙に合わせる」517が選択された場合、CPU11は、図6に示すように、用紙サイズの選択欄519にてさらに、プリンタ2にて印刷に使用する用紙サイズの選択を受け付ける。
用紙サイズの選択欄519への操作を受け付けると、CPU11は、基本タブ画面51Aの用紙サイズの選択欄511と同様の複数の選択肢をユーザIF18に表示させ、選択を受け付ける。用紙サイズの選択欄519に表示される用紙サイズの選択肢には、定型サイズの用紙名、登録済みのユーザ定義サイズの用紙名、の各選択肢が含まれる。用紙サイズの選択欄519にて受け付ける用紙サイズは、スケーリング用の用紙サイズの一例である。用紙サイズの選択欄519でもユーザ定義サイズの登録指示を受け付けても良い。
用紙サイズの選択欄519にて用紙サイズの選択を受け付けた場合、CPU11は、基本タブ画面51Aの用紙サイズの選択欄511における選択内容にかかわらず、用紙サイズの選択欄519で選択された用紙サイズを、印刷に使用する用紙の用紙サイズとしてプリンタ2に渡す。以下、スケーリング用の用紙サイズを、「スケーリング用紙サイズ」とする。スケーリング用紙サイズは、前述したデータ構造体に記憶される印刷設定に、例えば、「スケーリング用紙サイズ」として書き込まれる数値である。
例えば、画像データのサイズがA4であり、用紙サイズの選択欄519にて選択されたスケーリング用紙サイズがA5であれば、プリンタドライバ43は、印刷アプリ42等から印刷対象の画像としてA4サイズの画像の画像データを受け取り、画像を縮小した印刷データとA5サイズの用紙への印刷の指示とを含むコマンドをプリンタ2に渡す。用紙サイズの選択欄519への操作を受け付けた場合、CPU11は、S108にて、用紙サイズの変更操作を受け付けたと判断する。
「フリー」518は、受け付け可能な範囲内の数値によって、拡大または縮小の割合の設定を受け付けるボタンである。「フリー」518が選択された場合、プリンタ2に渡す用紙サイズは、基本タブ画面51Aの用紙サイズの選択欄511における選択内容のままである。拡張タブ画面51Bにて「フリー」518が選択された場合、CPU11は、S108にて、用紙サイズの変更操作を受け付けていないと判断する。
図3の印刷設定処理の説明に戻る。印刷設定処理では、S109の用紙サイズ変更処理にて用紙サイズが変更された後、CPU11は、S104に戻って、変更後の用紙サイズが閾値決定処理にて決定した閾値の範囲内に含まれるか否かを判断する。
また、受け付けた変更操作が、両面/片面の変更またはトレイ選択の操作であると判断した場合(S108:両面/片面、トレイ選択)、CPU11は、S103に戻って、閾値決定処理を実行する。両面/片面の設定やトレイが変更された場合、閾値が変わる可能性がある。そこで、変更後の設定での閾値を決定して、新たな閾値にて用紙サイズの範囲の判断を行う。2回目以降の閾値決定処理では、装着されているトレイが変更されていない場合には、S201~S205をスキップして、S206の判断から実行しても良い。
いずれかの設定の変更により、選択中の用紙サイズが閾値の範囲外となったと判断した場合(S104:NO)、CPU11は、警告メッセージをユーザIF18に表示させる(S110)。警告メッセージは、選択中の用紙サイズが印刷設定に対して不適切であることをユーザに警告するメッセージである。S110は、報知処理の一例である。
例えば、図5に示した例で両面かつカスタムトレイが選択されている場合、閾値は、許容される用紙名は、「A4」と「Letter」であり、許容される用紙サイズは、用紙幅が128.9-215.9mmの範囲内で、かつ、用紙高さが209.5-297.4mmの範囲内のサイズである。用紙サイズの変更操作によって、ユーザ定義サイズの用紙が選択された場合、ユーザ定義サイズの用紙の用紙名は、「A4」等の定型サイズの用紙名ではなく、許容される用紙名に含まれることはない。この場合、CPU11は、選択されたユーザ定義サイズの用紙サイズの数値が、前述した閾値決定処理にて決定された閾値の範囲内に含まれるか否かを判断する。例えば、用紙幅88.9mmの用紙や、用紙高さ430.6mmの用紙が選択されている場合、これらのサイズは閾値の範囲外であり、CPU11は、S104にてNOと判断する。一方、用紙幅が128.9mmで用紙高さが209.5mmの用紙は閾値の範囲内であり、CPU11は、S104にてYESと判断する。
警告メッセージの例を図9に示す。図9の例の警告メッセージ53には、選択中の給紙トレイの情報である「トレイ1」531、両面印刷が選択されていることを示す「両面印刷」532、許容される数値範囲533、数値の表記に用いる単位534、及び、OKボタン535が含まれる。単位534は、例えば、図8に示した登録画面52中のサイズの単位の選択欄522にて選択された単位、あるいは、デフォルトの単位である。数値範囲533は、選択中の印刷設定における閾値の上限及び下限を単位534の単位にて表記した数値である。警告メッセージ53として、トレイの選択と両面印刷の設定との組み合わせによって印刷可能な用紙サイズの範囲を報知するので、ユーザは印刷可能な用紙サイズを選択できる。
図3の印刷設定処理の説明に戻る。S110では、CPU11は、警告メッセージを表示させた後、図9に示したOKボタン535への操作を受け付けるまで待機する。その後、CPU11は、最後に受け付けた設定変更をキャンセルし、変更前の状態に戻す(S111)。S111は、排他処理の一例である。例えば、トレイの変更操作を受け付けたことで用紙サイズが許容範囲外となった場合、CPU11は、印刷設定を変更前のトレイに戻す。変更によって許容範囲外になった設定を元に戻すことで、表示中の印刷設定は許容範囲内の関係となる。
S111の後、または、受け付けた変更操作が、用紙サイズの変更、両面/片面の変更、トレイ選択のいずれでもないと判断した場合(S108:その他)、CPU11は、S105~S107の判断に戻り、いずれかの指示を受け付けるまで待機する。
そして、OKボタン514への操作を受け付けたと判断した場合(S105:YES)、CPU11は、表示中の印刷設定画面51の各設定を印刷設定として決定し(S112)、決定した印刷設定をデータ構造体に書き込んで、印刷設定処理を終了する。スケーリングが設定されている場合には、CPU11は、スケーリング用紙サイズもデータ構造体に書き込む。なお、CPU11は、S112にて決定した印刷設定をプリンタドライバ43用の記憶領域に記憶させても良い。
一方、キャンセルボタン515への操作を受け付けたと判断した場合(S106:YES)、CPU11は、表示中の印刷設定画面51にて受け付けた各設定をキャンセルし、印刷設定を起動時の設定に戻して(S113)、印刷設定処理を終了する。すなわち、CPU11は、編集された印刷設定をデータ構造体やプリンタドライバ43用の記憶領域に書き込まず、編集結果を破棄する。
なお、プリンタドライバ43は、印刷アプリ42等のアプリからの指示に限らず、例えば、OS41、プリンタドライバ43のメーカが提供する関連ツール、から印刷設定の編集指示を受け付けた場合にも、印刷設定処理を実行する。この場合、CPU11は、S112にて決定した印刷設定をプリンタドライバ43用の記憶領域に記憶させる。つまり、編集後の印刷設定は、恒久的なものとなる。なお、OS41または各種の関連ツールやアプリが、プリンタドライバ43用の記憶領域に編集後の印刷設定を記憶させても良い。
ここまで、印刷アプリ42等にて印刷設定の編集指示を受け付けた場合のプリンタドライバ43の動作について説明した。印刷アプリ42等のアプリからプリンタドライバ43が起動されたことにより、CPU11が印刷設定処理を実行した場合、S112またはS113の後に印刷設定処理を終了した後も、印刷アプリ42等が終了されるまで、データ構造体は保持される。印刷アプリ42等は、プリンタドライバ43による印刷設定処理の終了の通知を受け取った後、当該アプリにて受け付け可能な各種の指示を受け付ける。
印刷アプリ42等によっては、印刷設定として、ユーザ定義サイズの用紙サイズの指定、両面印刷の設定、トレイの選択を受け付ける場合もある。なお、印刷アプリ42等は、印刷対象の装置としてプリンタ2が選択された場合、プリンタドライバ43からプリンタ2の能力を取得し、その範囲内での印刷設定を受け付ける。印刷アプリ42等にて受け付け可能な用紙サイズの範囲は、プリンタ2での常設トレイを使用した片面印刷の範囲である場合が多い。そして、印刷アプリ42等は、印刷設定の編集指示を受け付けることなく、印刷の実行指示を受け付ける場合もある。印刷アプリ42等にてプリンタ2での印刷実行の指示を受け付けた場合にも、プリンタドライバ43は起動される。
次に、本形態のプリンタドライバ43による印刷処理の手順について、図10のフローチャートを参照して説明する。印刷処理は、印刷アプリ等にてプリンタ2での印刷実行の指示を受け付け、OS41からプリンタドライバ43に印刷ジョブが入力されたことを契機に、PC1のCPU11にて実行される。
印刷処理では、CPU11は、まず、印刷アプリ42等のアプリとプリンタドライバ43とで共用されるデータ構造体から印刷設定を取得する(S401)。なお、印刷アプリ42等のアプリでは、印刷設定の編集指示を受け付けることなく、つまり、前述した印刷設定処理を実行せずに印刷実行の指示を受け付ける場合がある。その場合でも、CPU11は、印刷設定処理の開始時と同様に、プリンタドライバ43用の記憶領域に記憶されている印刷設定を読み出してデータ構造体に記憶させ、S401では、そのデータ構造体から印刷設定を取得する。
そして、CPU11は、印刷設定にて、用紙サイズとしてユーザ定義サイズが指定されているか否かを判断する(S402)。スケーリング設定が有効とされている場合には、CPU11は、スケーリング用紙サイズがユーザ定義サイズであるか否かを判断する。
ユーザ定義サイズが指定されていると判断した場合(S402:YES)、CPU11は、前述した閾値決定処理(図4参照)を実行する(S403)。CPU11は、印刷設定にて指定されているユーザ定義サイズの用紙サイズが、トレイの選択や両面印刷の設定との組み合わせが許容範囲内となるサイズであるか否かを判断する(S404)。
許容範囲外であると判断した場合(S404:NO)、CPU11は、印刷設定を片面印刷に変更する(S405)。なお、CPU11は、例えば、片面印刷に変更することで用紙サイズが許容範囲内となる場合にS405を行う。また、トレイを変更することで用紙サイズが許容範囲内となる場合には、CPU11は、S405に代えて、トレイを変更しても良い。入力された印刷ジョブに設定されていた印刷設定をそのままプリンタ2に渡すことはせず、S405にて印刷設定を変更することで、CPU11は、プリンタ2にて印刷不可能な印刷指示をプリンタ2に送信しない。
なお、S405では、CPU11は、印刷設定を変更したことを示すメッセージを表示させても良いし、ユーザの承認を得た場合に印刷設定を変更するとしても良い。また、S405では、CPU11は、印刷設定を変更する代わりに、印刷設定が不適切であることを示すメッセージ,例えば、図9に示した警告メッセージ53を表示して、印刷処理を終了し、印刷しないとしても良い。ユーザ定義サイズの用紙が選択された場合に、用紙の搬送エラーを回避するために一律に両面印刷を実行できなくするのではなく、両面印刷可能な用紙サイズの範囲を表示することで、ユーザの利便性を高めることができる。
S405の後、または、許容範囲内であると判断した場合(S404:YES)、または、ユーザ定義サイズが選択されていないと判断した場合(S402:NO)、CPU11は、印刷ジョブにて指定されている画像データに基づいて印刷データを作成する(S406)。なお、印刷設定においてスケーリングの実行が指定されている場合、CPU11は、指定されたサイズの印刷物が作成されるように、スケーリング後の印刷データを作成する。さらに、CPU11は、作成した印刷データをプリンタ2に送信して(S407)、印刷処理を終了する。
以上、詳細に説明したように、本形態のプリンタドライバ43を備えるPC1は、編集指示を受け付けた印刷設定やOS41から入力された印刷ジョブの印刷設定に、ユーザ定義の用紙サイズと両面印刷の実行有とトレイの指定とが含まれる場合に、その組み合わせでの印刷が実行可能か否かによって、その印刷設定を受け付けるか否かを決定する。これにより、ユーザ定義の用紙サイズの際に一律に両面印刷を実行できなくする場合と比較して、ユーザ定義の用紙サイズであっても両面印刷が実行できる機会が増え、ユーザ定義の用紙サイズを用いる際の利便性が高まる。
さらに、本形態のプリンタドライバ43は、印刷設定画面51にて用紙サイズの設定やトレイの選択を受け付けた際や、登録画面52にてユーザ定義の用紙サイズの登録を受け付けた際に、用紙サイズと両面印刷の実行有とトレイの選択との組み合わせの可否を判断するので、不適切な設定を早期に回避できる。また、本形態のプリンタドライバ43は、印刷ジョブを受け付けた際にもユーザ定義の用紙サイズと両面印刷の実行有とトレイの選択との組み合わせの可否を判断するので、不適切な設定がプリンタ2に渡ることを回避できる。
さらに、本形態では、用紙サイズと両面印刷の実行有とトレイの選択との組み合わせが実行不可能な組み合わせであった場合、ユーザ定義の用紙サイズが選択される前の用紙サイズに戻す、または、両面印刷の実行有の設定を受け付けなくするので、不適切な設定を回避できる。
さらに、本形態では、用紙サイズと両面印刷の実行有とトレイの選択との組み合わせが実行不可能な組み合わせである場合、警告メッセージ53中に実行可能な用紙サイズの範囲を表示するので、適切な用紙サイズの入力が期待できる。
さらに、本形態では、スケーリングのオプションにも対応するので、ユーザ定義の用紙サイズを用いる際の利便性がより高まる。スケーリングの実行有無が変更されると、プリンタ2に渡す用紙サイズが変更される可能性があるため、スケーリングの実行有無が変更されるタイミングで判断し直すことで、不適切な設定をより早期に回避できる。
なお、本形態は単なる例示にすぎず、本発明を何ら限定するものではない。したがって本発明は当然に、その要旨を逸脱しない範囲内で種々の改良、変形が可能である。例えば、プリンタ2は、印刷単機能の装置に限らず、例えば、原稿読取機能やFAX送受信機能を備えている装置であっても良い。本形態は、プリンタ2に代えて、複合機、コピー機、FAX装置等に接続されるPC1にも適用可能である。また、PC1には、2台以上のプリンタが接続されていても良い。
また、各図に示した画面の構成は、いずれも一例であり、図示の例に限らない。例えば、印刷設定画面51の基本タブ画面51Aでは、用紙サイズと両面印刷と給紙トレイとの全ての選択を受け付けるとしたが、一部の選択は別の画面で受け付けてもよいし、それぞれ別の画面であっても良い。
また、例えば、プリンタ2には、排紙トレイによって排紙可能な用紙サイズに制限があっても良く、その場合、プリンタドライバ43は、指定された排紙トレイによる制限も加味して閾値を決定しても良い。CPU11は、例えば、排紙可能な用紙サイズを超える用紙サイズの設定を受け付けないとしても良い。
また、本形態では、用紙サイズの選択欄511、519への操作を受け付けた場合に、用紙サイズが許容範囲内であるか否かを判断するとしたが、用紙サイズの選択欄511、519への操作によって、登録済みのユーザ定義サイズの選択指示またはユーザ定義サイズの登録指示のいずれかを受け付けた場合のみ判断するとしても良い。あるいは、何らかの印刷設定の変更指示を受け付けた場合には、どの変更指示であっても、用紙サイズが許容範囲内であるか否かの判断を行うとしても良い。
また、本形態では、印刷設定の組み合わせが許容範囲外であると判断した場合、直前の変更を元に戻すとしたが、これに限らない。例えば、直前の変更をデフォルトに戻すとしても良いし、全ての変更を元に戻すとしてもよい。
また、本形態では、印刷設定の編集指示または印刷ジョブの入力を受け付けた場合に、印刷設定の組み合わせを判断するとしたが、例えば、印刷アプリ42等からの問い合わせに応じて、印刷可能な用紙サイズの範囲を応答する場合にも、他の印刷設定との組み合わせに応じて、応答する用紙サイズの範囲を決定しても良い。
また、本形態では、プリンタドライバ43の処理として説明したが、本発明のプログラムは、プリンタドライバに限らない。プリンタドライバに代えて汎用の印刷プログラムを備えるOSが搭載された、いわゆるドライバレスの構成を有するPCにも適用可能である。本発明は、例えば、汎用の印刷プログラムとは別にPCに組み込まれる印刷に関するプログラム、汎用の印刷プログラムと協働して印刷設定を受け付けるプログラム、にも適用可能である。
また、各実施の形態に開示されている任意のフローチャートにおいて、任意の複数のステップにおける複数の処理は、処理内容に矛盾が生じない範囲で、任意に実行順序を変更できる、または並列に実行できる。
また、各実施の形態に開示されている処理は、単一のCPU、複数のCPU、ASICなどのハードウェア、またはそれらの組合せで実行されてもよい。また、実施の形態に開示されている処理は、その処理を実行するためのプログラムを記録した記録媒体、または方法等の種々の態様で実現することができる。