以下、適宜図面を参照して本発明の実施形態について説明する。なお、以下に説明される実施形態は本発明の一例にすぎず、本発明の要旨を変更しない範囲で、本発明の実施形態を適宜変更できる。例えば、後述する各処理の実行順序は、本発明の要旨を変更しない範囲で、適宜変更することができる。
本実施形態に係る印刷システムは、例えば、図1(A)に示されるプリンタ10と、図2(A)に示される情報処理端末50とを備える。プリンタ10及び情報処理端末50は、例えば、通信ネットワークを通じて相互に通信可能に構成されている。通信ネットワークの具体例は特に限定されないが、例えば、有線LAN、無線LAN、或いはUSBケーブル等であってもよい。また、情報処理端末50は、例えば図3(A)に示されるように、複数のプリンタ10A、10Bと通信可能であってもよい。
メーカは、例えば、図1(A)に示されるプリンタ10と、情報処理端末50にインストール可能なドライバプログラム66とからなる印刷システムをユーザに提供する。そして、ドライバプログラム66がユーザによって情報処理端末50にインストールされる。ドライバプログラム66は、例えば、プリンタ10に同梱されたCD−ROM等の形式で提供されてもよいし、メーカのWEBサイトを通じてダウンロード可能にされてもよい。
プリンタ10は、図1(A)に示されるように、電源部11と、動作部20と、ディスプレイ23と、入力I/F24と、通信I/F25と、制御部30とを主に備える。プリンタ10を構成する各構成要素は、通信バスを通じて相互に接続されている。本実施形態では、インクジェット方式のプリンタ10の例を説明するが、プリンタ10の印刷方式はインクジェット方式に限定されず、電子写真方式などの公知の方式であってもよい。なお、図3(A)に示されるプリンタ10A、10Bの基本的な構成は、図1(A)に示されるプリンタ10と同様であってもよい。
電源部11は、電源プラグを通じて外部電源から供給された電力を、プリンタ10の各構成要素に供給する。より詳細には、電源部11は、外部電源から取得した電力を、動作部20に駆動電力(例えば、24V)として出力し、制御部30に制御電力(例えば、5V)として出力する。また、図示は省略するが、電源部11は、ディスプレイ23、入力I/F24、及び通信I/F25にも電力を供給している。
また、電源部11は、制御部30から出力される電源信号に基づいて、駆動状態と休眠状態とに切り替えが可能である。より詳細には、制御部30は、HIGHレベルの電源信号(例えば、5V)を出力することによって、電源部11を休眠状態から駆動状態に切り替える。また、制御部30は、LOWレベルの電源信号(例えば、0V)を出力することによって、電源部11を駆動状態から休眠状態に切り替える。
駆動状態とは、動作部20に駆動電力を出力している状態である。換言すれば、駆動状態とは、動作部20が動作可能な状態である。休眠状態とは、動作部20に駆動電力を出力していない状態である。換言すれば、休眠状態とは、動作部20が動作不能な状態である。一方、電源部11は、駆動状態であるか休眠状態であるかに拘わらず、制御部30に制御電力を出力している。また、図示は省略するが、入力I/F24は、電源部11が駆動状態であるか休眠状態であるかに拘わらず、ユーザ操作に応じた操作信号を出力することができる。また、通信I/F25は、電源部11が駆動状態であるか休眠状態であるかに拘わらず、外部装置から情報を受信することができる。
動作部20は、制御部30の指示に従って印刷動作及び印刷前動作を実行する。印刷動作は、シートに画像を印刷する動作である。印刷前動作は、印刷動作で所定品質の画像をシートに印刷するために、印刷動作に先立って実行される動作である。印刷動作及び印刷前動作の詳細は、後述する。動作部20は、図1(A)に示されるように、搬送部21と、吐出部22とを主に備える。
搬送部21は、不図示の給送トレイに支持されたシートを搬送方向に搬送する。搬送部21は、例えば、不図示のモータの駆動力が伝達されて回転する複数のローラによって構成される。モータによって回転されるローラは、給送トレイに支持されたシートを吐出部22に対面する位置まで搬送し、吐出部22によって画像が印刷されたシートをプリンタ10の外部に排出する。プリンタ10は、複数の給送トレイを備えることができる。
吐出部22は、搬送部21によって搬送されたシートに対面し得る位置において、搬送方向と直交する主走査方向に移動する。吐出部22は、不図示のモータの駆動力が伝達されることによって、主走査方向に移動する。吐出部22の下面には、複数のノズルが形成されたノズル面が形成されている。吐出部22は、ノズルからインク滴を吐出する。
吐出部22が主走査方向に移動する過程で吐出したインクがシートに着弾することによって、シートに画像が印刷される。吐出部22が主走査方向の一方から他方に移動する過程において、吐出部22から吐出されたインクが着弾し得るシート上の領域を「印刷領域」と表記する。シートは、複数の印刷領域に区画される。そして、吐出部22は、後述する印刷動作において、複数の印刷領域それぞれに対して順番に画像を印刷する。
ディスプレイ23は、液晶ディスプレイ、有機ELディスプレイ等であり、各種情報を表示する表示面を備える。
入力I/F24は、ユーザによる入力操作を受け付けるユーザインタフェースである。具体的には、入力I/F24はボタンを有しており、押下されたボタンに対応づけられた各種の操作信号をCPU31へ出力する。さらに、入力I/F24は、ディスプレイ23の表示面に重畳された膜状のタッチセンサを有していてもよい。ディスプレイ23の表示面に表示されたオブジェクトを指定する操作、文字列或いは数字列を入力する操作は、ユーザ操作の一例である。「オブジェクト」とは、例えば、ディスプレイ23に表示された文字列、アイコン、ボタン、リンク等である。
タッチセンサとして実現される入力I/F24は、ユーザがタッチした表示面上の位置を示す位置情報を出力する。なお、本明細書中における「タッチ」とは、入力媒体を表示面に接触させる操作全般を含む。また、入力媒体が表示面に触れていなくても、表示面との間の距離がごく僅かな位置まで入力媒体を近接させる「ホバー」或いは「フローティングタッチ」を、前述の「タッチ」の概念に含めてもよい。さらに入力媒体とは、ユーザの指であってもよいし、タッチペン等であってもよい。ディスプレイ53に表示されたアイコンの位置のタップするユーザ操作は、当該アイコンを指定する指定操作の一例である。
通信I/F25は、通信ネットワークを通じて外部装置と通信可能な第2通信インタフェースの一例である。すなわち、プリンタ10は、通信I/F25を通じて外部装置に各種情報を出力し、通信I/F25を通じて外部装置から各種情報を受信する。通信I/F25は、例えば、Wi−Fi(Wi-Fi Allianceの登録商標)に従った通信手順で無線信号を送受信するものであってもよいし、LANケーブル或いはUSBケーブルが接続されるインタフェースであってもよい。
制御部30は、プリンタ10の全体動作を制御するものである。制御部30は、図1(A)に示されるように、CPU31、ROM32、RAM33、EEPROM34、ASIC35を主とするマイクロコンピュータである。ROM32、RAM33、EEPROM34は、装置メモリの一例である。
ROM32には、CPU31がプリンタ10の動作を制御するためのプログラムが格納される。RAM33は、CPU31がプログラムを実行する際に用いる各種データを一時的に記録する記憶領域又は作業領域として使用される。EEPROM34には、電源オフ後も保持すべき設定やフラグ等が格納される。CPU31は、プログラムをROM32から読み出して実行することにより、プリンタ10の動作を制御する。ASIC35には、搬送部21と、吐出部22と、ディスプレイ23と、入力I/F24と、通信I/F25とが接続されている。ASIC35は、CPU31の指示に従ってプリンタ10の各構成要素を動作させる。
ROM32、RAM33、EEPROM34は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、non−transitoryな媒体である。non−transitoryな媒体には、上記の例の他に、CD−ROM、DVD−ROM等の記録媒体も含まれる。また、non−transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non−transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。後述する情報処理端末50のメモリ62についても同様である。
EEPROM34は、例えば図1(B)に示されるように、認証情報リストを記憶することができる。認証情報リストは、1以上の認証情報レコードを記憶することができる。認証情報レコードは、第2認証情報と、閾値情報と、枚数情報とを含む。制御部30は、入力I/F24を通じて入力された認証情報レコードを、或いは通信I/F25を通じて外部装置から受信した認証情報レコードを、認証情報リストに登録する。
第2認証情報は、プリンタ10に印刷動作を実行させる権限を有することを示す情報である。第2認証情報は、例えば、情報処理端末50にログインするためのユーザIDであってもよいし、情報処理端末50のユーザによって設定された任意の文字列であってもよい。閾値情報は、対応する第2認証情報と同一の第1認証情報を含む印刷指示情報に従って印刷可能なシートの枚数の上限値(以下、「閾値枚数」と表記する。)を示す情報である。枚数情報は、対応する第2認証情報と同一の第1認証情報を含む印刷指示情報に従って画像を印刷したシートの累積枚数を示す情報である。すなわち、図1(B)の一行目の認証情報レコードは、第1認証情報“abc”を含む印刷指示情報に従って1000枚のシートに画像を印刷可能であり、且つ現時点で325枚のシートに画像を印刷したことを示す。
ASIC35は、モータへ駆動信号を出力する。モータが回転すると、搬送部21はシートを搬送し、吐出部22は主走査方向に移動する。ASIC35は、ピエゾ素子等の駆動素子へ駆動信号を出力する。駆動素子が振動すると、吐出部22はノズルからインク滴を吐出する。ASIC35は、ディスプレイ23へ画像信号を出力し、ディスプレイ23に画面を表示させる。ASIC35は、入力I/F24から出力される操作信号を取得する。ASIC35は、通信I/F25を通じて外部装置から情報を受信し、通信I/F25を通じて外部装置に情報を送信する。
情報処理端末50は、図2(A)に示されるように、ディスプレイ53と、入力I/F54と、通信I/F55と、CPU61と、メモリ62と、通信バス63とを主に備える。情報処理端末50に含まれるディスプレイ53、入力I/F54、通信I/F55、CPU61は、プリンタ10に含まれるディスプレイ23、入力I/F24、通信I/F25、CPU31と同様の構成であるので、説明は省略する。通信I/F55は第1通信インタフェースの一例であり、メモリ62は端末メモリの一例である。
情報処理端末50は、例えば、携帯電話、スマートフォン、タブレット端末、或いはPC等であってもよい。情報処理端末50は、コンピュータの一例である。情報処理端末50の入力I/F54は、例えば、マウス及びキーボードの組み合わせであってもよい。この場合において、ディスプレイ53に表示されたアイコンの位置にマウスポインタを移動させてクリックするユーザ操作は、当該アイコンを指定する指定操作の一例である。
メモリ62は、例えば、RAM、ROM、EEPROM、HDD、情報処理端末50に着脱されるUSBメモリ等の可搬記憶媒体、CPU61が備えるバッファ等、或いはそれらの組み合わせによって構成される。メモリ62は、プログラム記憶領域62Aと、データ記憶領域62Bとを有する。領域62Aには、OS64と、編集プログラム65と、ドライバプログラム66とがインストールされている。領域62Aに記憶される各プログラムは、単一のプログラムであってもよいし、複数のプログラムの集合体であってもよい。領域62Bには、各プログラムの実行に必要なデータ或いは情報が記憶される。
本実施形態では、Windows(Microsoft Corporationの登録商標) Operating SystemをOS64の具体例として説明するが、OS64の具体例はこれに限定されず、例えば、Android(Google inc.の登録商標) OS、iOS(Cisco Systems,Inc.の登録商標)等であってもよい。
編集プログラム65は、ユーザ操作に従ってコンテンツデータを編集するプログラムである。編集プログラム65は、例えば図9(A)に示されるように、指定されたコンテンツデータで示される画像をディスプレイ53に表示させ、コンテンツデータの編集を指示するユーザ操作を入力I/F54を通じて受け付け、受け付けたユーザ操作に従ってコンテンツデータを編集する。コンテンツデータの形式は、例えば、テキスト形式、画像形式、スプレッドシート形式、プレゼンテーション形式等が挙げられる。コンテンツデータは、1以上のページデータを含んでもよい。ページデータは、1枚のシートに印刷されるコンテンツを示すデータである。
ドライバプログラム66は、OS64から受け付けた印刷指示に従って、プリンタ10に印刷動作を実行させるためのプログラムである。本実施形態に係るドライバプログラム66は、図5及び図6に示されるように、第1モジュールの一例であるUIモジュール66Aと、第2モジュールの一例であるレンダリングモジュール66Bとを含む。但し、ドライバプログラム66は、単一のモジュールで構成されていてもよいし、他のモジュールをさらに含んでもよい。ドライバプログラム66は、単一のモデルのプリンタ10に対してのみ印刷動作を指示可能であってもよいし、複数のモデルのプリンタ10に対して印刷動作を指示可能であってもよい。
ドライバプログラム66には、OS64によって指定された複数の関数が定義されている。そして、ドライバプログラム66は、複数の関数がOS64によって所定の順序で呼び出されることによって、プリンタ10に印刷動作を実行させることができる。本実施形態に係る印刷指示は、例えば、定数“DOCUMENTEVENT_STARTDOC”を引数として、UIモジュール66Aに定義された第1関数“DrvDocumentEvent()”がOS64によって呼び出されたことを指す。
領域62Bは、図2(A)に示されるように、第1領域62Cと、第2領域62Dとを含む。第1領域62Cは、例えば、OS64に関する基本情報、或いはドライバプログラムの設定情報のデータベースである所謂レジストリである。第1領域62Cに記憶された情報の参照手順は、OS64によって規定されている。そして、OS64は、参照手順に従って参照された情報の正しさを保証し、参照手順に従わずに参照された情報の正しさを保証しない。これに対して、第2領域62Dに記憶された情報は、前述のような参照手順を踏むことなく、任意のタイミングで参照することができる。以下、「プログラムが領域62Bに情報を記憶させる」と表記した場合、原則として当該情報が第2領域62Dに記憶されるものとする。第1領域62Cに記憶された情報の参照手順の例を、以下に説明する。
一例として、編集プログラム65は、第2領域62Dに所定のメモリ領域を確保する。そして、編集プログラム65は、確保したメモリ領域の先頭アドレスを示す第1ポインタ“DEVMODE”を引数として、OS64に定義された読出関数を呼び出す。OS64は、第1ポインタ“DEVMODE”で示されるメモリ領域に、第1領域62Cに記憶された情報をコピーする。これにより、編集プログラム65は、第1ポインタ“DEVMODE”で示されるメモリ領域に第1領域62Cからコピーされた情報を、読み出し或いは編集できるようになる。
他の例として、ドライバプログラム66には、OS64によって規定された関数(例えば、第1関数“DrvDocumentEvent()”)が定義されている。OS64は、定数“DOCUMENTEVENT_FIRST”と、第2ポインタとを引数として、第1関数を呼び出す。第2ポインタは、第1領域62Cに記憶された情報が記憶されたメモリ領域の先頭アドレス、或いは第1領域62Cから第2領域62Dにコピーされた情報が記憶されたメモリ領域の先頭アドレスを示す。そして、ドライバプログラム66は、第2ポインタで示されるメモリ領域に記憶された情報を、第1領域62Cに記憶された情報として、読み出し或いは編集することができる。本実施形態において、定数“DOCUMENTEVENT_FIRST”及び第2ポインタを引数として指定して第1関数が実行されることを、第1領域62Cに記憶された情報の参照を許可する参照指示と表記することがある。
第1領域62Cは、例えば図2(B)に示されるように、条件情報を記憶している。条件情報は、プリンタ10に実行させる印刷動作の実行条件を示すための情報である。本実施形態に係る条件情報は、サイズ情報と、色情報、トレイ情報と、シート情報と、余白情報と、第1認証情報とを含む。但し、条件情報の具体例は、図2(B)に示される例に限定されない。例えば、第1認証情報は、条件情報に含まれていなくてもよい。
条件情報は、ドライバプログラム66がインストールされたタイミングで第1領域62Cに記憶される。また、ドライバプログラム66は、第1領域62Cに記憶された条件情報をユーザの指示に従って変更することができる。より詳細には、ドライバプログラム66は、OS64からの参照指示に従って第1領域62Cから条件情報を読み出し、読み出した条件情報をディスプレイ53に表示させる。次に、ドライバプログラム66は、条件情報を変更するユーザ操作を入力I/F54を通じて受け付けたことに応じて、第1領域62Cに記憶された条件情報を変更後の条件情報で上書きする。
条件情報は、パブリック情報と、プライベート情報とを含む。パブリック情報は、情報処理端末50にインストールされた他のプログラム(例えば、編集プログラム65)も編集可能な情報である。プライベート情報は、情報処理端末50にインストールされた他のプログラムが編集不能な情報である。換言すれば、プライベート情報は、ドライバプログラム66によってのみ編集が可能な情報である。図2(B)の例において、サイズ情報及び色情報はパブリック情報であり、トレイ情報、シート情報、余白情報、及び第1認証情報はプライベート情報である。
サイズ情報は、印刷動作に用いるシートのサイズ(例えば、“A4”、“B5”等)を示す。色情報は、印刷動作に用いるインクの色(例えば、“カラー”、“モノクロ”等)を示す。トレイ情報は、プリンタ10が備える複数の給送トレイのうちの1つ(例えば、“トレイ1”、“トレイ2”等)を示す。シート情報は、印刷動作に用いるシートの種類(例えば、“普通紙”、“光沢紙”等)を示す。余白情報は、印刷動作において、シートの外縁に所定の幅の余白を設けるか否か(例えば、“縁あり”、“縁無し”等)を示す。第1認証情報は、プリンタ10に印刷動作を実行させる権限を有することを示す情報であって、例えば、入力I/F54を通じて設定される。
なお、パブリック情報のデータ構造はOS64によって定義されているが、図2(B)には代表的な項目のみが図示されている。一方、プライベート情報のデータ構造は、プリンタ10毎或いはドライバプログラム66毎に異なってもよい。以下、パブリック情報で示される実行条件を「パブリック条件」と表記し、プライベート情報で示される実行条件を「プライベート条件」と表記することがある。
また、領域62Bは、図3(A)に示されるように、1以上のキュー領域67A、67B、67Cを含む。キュー領域67A〜67Cは、プリンタ10A、10Bに送信すべき情報が記憶されるメモリ領域である。キュー領域67A〜67Cは、プリンタ10A、10Bを特定する所謂プリンタポートに対応付けられている。すなわち、キュー領域67A、67Bには、プリンタ10Aに送信すべき情報が記憶される。また、キュー領域67Cには、プリンタ10Bに送信すべき情報が記憶される。また、ドライバプログラム66には、例えば、情報を記憶させるべきキュー領域67A〜67Cが、関数の引数としてOS64から指定される。以下、ドライバプログラム66に対して指定されたキュー領域67A〜67Cを、「指定キュー」と表記することがある。
キュー領域67A〜67Cには、各種動作の実行をプリンタ10A、10Bに指示するための情報が記憶される。より詳細には、キュー領域67A〜67Cには、図3(B)に示される印刷指示情報、図3(C)に示される準備指示情報、及び不図示のステータス送信指示情報等が記憶される。印刷指示情報は、印刷動作の実行を指示するための情報であって、認証指示情報、給送指示情報、頭出し指示情報、搬送指示情報、吐出指示情報、及び排出指示情報等を含む。準備指示情報は、印刷前動作の実行を指示するための情報である。不図示のステータス送信指示情報は、プリンタ10A、10Bの状態を示すステータス情報の送信を指示するための情報である。但し、キュー領域67A〜67Cに記憶される情報の具体例は、これらに限定されない。
キュー領域67Aは、OS64が通信I/F55を通じてプリンタ10Aに送信する情報が、送信順を特定して記憶される領域である。換言すれば、OS64は、キュー領域67Aに指示情報が記憶されているか否かを所定のタイミングでチェックする。そして、OS64は、キュー領域67Aに指示情報が記憶されていると判断したことに応じて、当該指示情報を予め定められた送信順序で、通信I/F55を通じてプリンタ10に送信し、送信した指示情報をキュー領域67Aから削除する。キュー領域67B、67Cについても同様である。
より詳細には、キュー領域67Aに記憶される指示情報には、図3(B)及び図3(C)に示されるように、ジョブIDが付加される。ジョブIDは、キュー領域67A内において、連続して送信すべき指示情報を特定するための情報である。すなわち、複数の指示情報に同一のジョブIDが付加される場合がある。OS64は、同一のジョブIDが付加された複数の指示情報を、キュー領域67Aに記憶された順に送信する。また、OS64は、異なるジョブIDが付加された指示情報を、当該ジョブIDの生成順に送信する。
OS64は、例えば図3(B)に示されるキュー領域67Aにおいて、まず、ジョブID“コンテンツデータA”が付加された搬送指示情報、吐出指示情報、及び排出指示情報をこの順に送信する。次に、OS64は、ジョブID“コンテンツデータB”が付加された給送指示情報、及び頭出し指示情報をこの順に送信する。このとき、ジョブID“コンテンツデータB”が付加された給送指示情報が、ジョブID“コンテンツデータA”が付加された排出指示情報より先にキュー領域67Aに書き込まれていたとしても、排出指示情報が先に送信される。すなわち、同一のジョブIDが付加された複数の指示情報が書き込み順に連続して送信される。
[システムの動作]
図4〜図8を参照して、本実施形態に係るシステムの動作を説明する。
本明細書のフローチャートは、基本的に、プログラムに記述された命令に従ったCPU31、61の処理を示す。すなわち、以下の説明における「判断」、「抽出」、「選択」、「制御」等の処理は、CPU31、61の処理を表している。CPU61による処理は、OS64を介したハードウェア制御も含む。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。
なお、図4〜図8、特に図5及び図6には、本発明において特に重要な処理を図示し、各処理の間に実行される他の処理の図示を省略している。より詳細には、OS64は、図5及び図6に図示されている関数の他に、不図示の関数を呼び出してもよい。また、以下の説明では、各関数の呼び出し時に指定される引数のうち、代表的な引数のみを説明しているが、他の引数が指定されていてもよい。さらに、以下の説明では、呼び出された各関数に定義された処理のうち、本発明において特に重要な処理を説明し、それ以外の処理の説明を省略している場合がある。
まず、情報処理端末50の編集プログラム65は、図9(A)に示される編集画面をディスプレイ53に表示させる。編集画面は、読出指示アイコン111と、記憶指示アイコン112と、印刷指示アイコン113と、編集画像114とを含む。そして、編集プログラム65は、編集画面に対するユーザ操作を、入力I/F54を通じて受け付ける。
読出指示アイコン111は、領域62Bに記憶されたコンテンツデータを読み出す指示に対応する。記憶指示アイコン112は、編集画像114を示すコンテンツデータを領域62Bに記憶させる指示に対応する。印刷指示アイコン113は、コンテンツデータに対する印刷動作を実行させる指示に対応する。編集画像114は、コンテンツデータに含まれるページデータで示される画像である。本実施形態に係る編集プログラム65は、編集画像114の長手方向がディスプレイ53の上下方向に沿うように、編集画像114を編集画面に表示させている。
編集プログラム65は、読出指示アイコン111を指定するユーザ操作を入力I/F54を通じて受け付けたことに応じて、読み出し可能な形式のコンテンツデータの一覧をディスプレイ53に表示させる。次に、編集プログラム65は、入力I/F54を通じて指定されたコンテンツデータを領域62Bから読み出す。そして、編集プログラム65は、読み出したコンテンツデータで示される編集画像114をディスプレイ53に表示させる。編集プログラム65は、編集画像114の編集を指示するユーザ操作を入力I/F54を通じて受け付けたことに応じて、コンテンツデータを編集する。編集プログラム65は、記憶指示アイコン112を指定するユーザ操作を入力I/F54を通じて受け付けたことに応じて、編集されたコンテンツデータを領域62Bに記憶させる。
編集プログラム65は、印刷指示アイコン113を指定するユーザ操作を入力I/F54を通じて受け付けたことに応じて、編集中のコンテンツデータを識別するデータIDを、領域62Bに一時記憶させる。以下、ここで一時記憶されたデータIDを「指定データID」と表記し、指定データIDで識別されるコンテンツデータを「指定コンテンツデータ」と表記する。本実施形態では、指定データID“コンテンツデータC”が一時記憶されたものとする。そして、編集プログラム65は、印刷指示処理を実行する。印刷指示処理は、指定コンテンツデータに対する印刷動作をプリンタ10に指示するための処理である。図4を参照して、印刷指示処理の詳細を説明する。
[印刷指示処理]
まず、編集プログラム65は、条件情報を記憶させるのに必要なメモリ領域を領域62Bの第2領域62Dに確保する。また、編集プログラム65は、確保したメモリ領域の先頭アドレスを示す第1ポインタ“DEVMODE”を引数として指定して、OS64に定義された読出関数を呼び出す。これにより、第1領域62Cに記憶された条件情報が、第1ポインタ“DEVMODE”で示されるメモリ領域に、OS64によってコピーされる。以下、第2領域62Dに確保されたメモリ領域に記憶される条件情報を「編集条件情報」と表記する。
次に、編集プログラム65は、図10に示される標準設定画面をディスプレイ53に表示させる(S11)。標準設定画面は、プルダウンメニュー121と、ラジオボタン122、123、124、125と、[OK]アイコン126と、[キャンセル]アイコン127とを含む。そして、編集プログラム65は、標準設定画面に対するユーザ操作を、入力I/F54を通じて受け付ける(S12)。
プルダウンメニュー121は、印刷動作を実行させるプリンタ10を指定する指示に対応する。ラジオボタン122、123は、サイズ情報に設定され得る設定値“A4”、“B5”に対応する。ラジオボタン124、125は、色情報に設定され得る設定値“カラー”、“モノクロ”に対応する。最初に表示される標準設定画面において、ラジオボタン122〜125の状態は、編集条件情報に設定された設定値に対応する。[OK]アイコン126は、編集条件情報で示される実行条件に従って、指定コンテンツデータに対する印刷動作をプリンタ10に実行させる指示に対応する。[キャンセル]アイコン127は、印刷指示処理を終了させる指示に対応する。
編集プログラム65は、プルダウンメニュー121に対するユーザ操作を入力I/F54を通じて受け付けたことに応じて、指定されたプリンタ10を識別するプリンタID(以下、「指定プリンタID」と表記する。)を領域62Bに一時記憶させる。本実施形態では、プリンタID“MFP−A”で識別されるプリンタ10Aが指定されたものとする。また、編集プログラム65は、ラジオボタン122〜125に対するユーザ操作を入力I/F54を通じて受け付けたことに応じて(S12:設定変更)、指定されたラジオボタン122〜125に対応する設定値で編集条件情報を更新する(S13)。
そして、編集プログラム65は、当該ユーザ操作を反映させた標準設定画面をディスプレイ53に表示させる(S11)。すなわち、編集プログラム65は、印刷動作を実行させるプリンタ10の指定と、編集条件情報に含まれるパブリック情報の変更とを、標準設定画面を通じて受け付けることができる。一方、編集プログラム65は、編集条件情報に含まれるプライベート情報の変更を受け付けることができない。
編集プログラム65は、[OK]アイコン126の指定を入力I/F54を通じて受け付けたことに応じて(S12:[OK]アイコン)、StartDoc処理を実行する(S14)。一方図示は省略するが、編集プログラム65は、[キャンセル]アイコン127の指定を入力I/F54を通じて受け付けたことに応じて、印刷指示処理を終了する。StartDoc処理は、プリンタ10に印刷動作を実行させるための前処理である。図5を参照して、StartDoc処理の詳細を説明する。
[StartDoc処理]
まず、編集プログラム65は、OS64に定義された関数“StartDoc()”を呼び出す(S21)。以下、ステップSxxで呼び出される関数を「関数Sxx」と表記することがある。編集プログラム65は、指定データID“コンテンツデータC”と、指定プリンタID”MFP−A”と、第1ポインタとを、関数S21の引数として指定する。OS64は、関数S21が呼び出されたことに応じて、ドライバプログラム66に定義された各種関数を所定の順序で呼び出す。また、ドライバプログラム66は、OS64によって呼び出された関数に定義された処理を実行する。これらの処理の詳細は省略する。
関数S21が呼び出されたOS64は、第1関数“DrvDocumentEvent()”を呼び出す(S22)。OS64は、定数“DOCUMENTEVENT_FIRST”と、第2ポインタとを、関数S22の引数として指定する。第2ポインタは、例えば、条件情報が記憶されている第1領域62Cの先頭アドレス、或いはOS64が第1領域62Cから読み出した条件情報が記憶されたメモリ領域の先頭アドレスを示す情報である。
次に、UIモジュール66Aは、関数S22が呼び出されたことに応じて、第2ポインタで示されるメモリ領域に記憶された条件情報を読み出し、読み出した条件情報を第2領域62Dに記憶させ(S23)、関数S22を終了する(S24)。すなわち、UIモジュール66Aは、ステップS23において、第1領域62Cから読み出された条件情報を第2領域62Dに記憶させる。ドライバプログラム66が実行するステップS22の処理は参照受付処理の一例であり、ステップS23の処理は記憶処理の一例である。
以下、ステップS23で第2領域62Dに記憶された条件情報を「退避条件情報」と表記する。ここで、編集条件情報と退避条件情報とは、プライベート情報は同一であり、パブリック情報は異なる可能性がある。より詳細には、ステップS13で編集条件情報が更新されている場合、編集条件情報と退避条件情報とでパブリック情報は異なる。
また、関数S21が呼び出されたOS64は、第1関数“DrvDocumentEvent()”を呼び出す(S25)。OS64は、定数“DOCUMENTEVENT_STARTDOCDOC”を、関数S25の引数として指定する。ステップS25の処理は、ステップS22の処理より後に実行される。次に、関数S25が呼び出されたUIモジュール66Aは、準備指示処理を実行する(S26)。準備指示処理は、印刷前動作の実行をプリンタ10に指示する処理である。UIモジュール66Aが実行するステップS25の処理は、OS64から印刷指示を受け付ける印刷指示受付処理の一例である。図7(A)を参照して、準備指示処理の詳細を説明する。
なお、プリンタ10に対する印刷前動作の実行指示は、プリンタ10に印刷指示情報を送信することが確実な場合に行われることが望ましい。そして、標準設定画面の[OK]アイコン126が指定された後は、入力I/F54を通じたユーザの指示を必要とせずに、プリンタ10に印刷指示情報が送信される。すなわち、[OK]アイコン126の指定は、プリンタ10に印刷動作の実行を指示するユーザの意思表示と捉えることができる。そこで、UIモジュール66Aは、標準設定画面の[OK]アイコン126が指定された後に、準備指示処理を実行するのが望ましい。
より詳細には、編集プログラム65は、標準設定画面の[OK]アイコン126の指定を入力I/F54を通じて受け付けたことに応じて(S12:OKアイコン)、関数S21を呼び出す。OS64は、関数S21が呼び出された場合以外のタイミング(例えば、プリンタドライバの情報を参照するタイミング)でも、UIモジュール66Aに定義された関数を呼び出すことがある。しかしながら、OS64が関数S25を呼び出すのは、関数S21が呼び出された場合のみである。そこで、本実施形態に係るUIモジュール66Aは、関数S21が呼び出されたことに応じて、準備指示処理を実行する。
[準備指示処理]
図7(A)に示されるように、まず、UIモジュール66Aは、プリンタ10Aに対する指定キューであるキュー領域67Aに特定指示情報が記憶されているか否かを判断する(S61)。指定キューは、OS64によって呼び出される関数の引数として指定される。また、UIモジュール66Aは、プリンタ10Aに送信すべき情報が書き込まれる他のキュー領域67Bに特定指示情報が記憶されているか否かを判断する(S62)。なお、UIモジュール66Aは、ドライバプログラム66以外のプログラムがキュー領域67A、67Bに書き込んだ情報も、ステップS61、S62の判断の対象とする。
特定指示情報とは、プリンタ10の動作部20を動作させる指示を示す指示情報である。本実施形態に係る特定指示情報は、準備指示情報或いは印刷指示情報を含み、ステータス送信指示情報を含まない。すなわち、特定指示情報は、後述するステップS45、S48、S53、S64の処理が、ドライバプログラム66或いは他のプログラムによって実行されることによって、キュー領域67A〜67Cに書き込まれる。
次に、UIモジュール66Aは、キュー領域67A、67Bの両方に特定指示情報が記憶されていないと判断したことに応じて(S61:No&S62:No)、第2領域62Dに記憶させた退避条件情報から第1認証情報“abc”を読み出す(S63)。そして、UIモジュール66Aは、ステップS63で読み出した第1認証情報“abc”を含む準備指示情報を、通信I/F55を通じてプリンタ10Aに送信する(S64)。ステップS63の処理は取得処理の一例であり、ステップS64の処理は準備指示処理の一例である。
より詳細には、UIモジュール66Aは、ステップS64において、生成識別情報の一例であるジョブID“__準備__”を生成する。なお、UIモジュール66Aは、指定データIDとなり得る文字列と重複しないように、ジョブIDを生成する。指定データIDは、後述するステップS29において、ジョブIDとして用いられるからである。そして、UIモジュール66Aは、図3(C)に示されるように、生成したジョブID“__準備__”を付加した準備指示情報を、キュー領域67Aに記憶させる(S64)。キュー領域67Aに記憶された準備指示情報は、OS64によってプリンタ10Aに送信される。
一方、UIモジュール66Aは、キュー領域67A、67Bの少なくとも一方に特定指示情報が記憶されていると判断したことに応じて(S61:Yes/S62:Yes)、ステップS63、S64の処理を実行することなく、準備指示処理を終了する。すなわち、UIモジュール66Aは、ステップS61、S62において、印刷前動作の開始を準備指示情報によって指示するか否かを判断する。換言すれば、UIモジュール66Aは、後述する印刷指示情報に先立って、準備指示情報を送信するか否かを判断する。
図5に戻って、UIモジュール66Aは、関数S25を終了する(S27)。次に、OS64は、関数S25が終了したことに応じて(S27)、レンダリングモジュール66Bに定義された第2関数“DrvStartDoc()”を呼び出す(S28)。OS64は、関数S21の引数として指定された指定データID“コンテンツデータC”及び第1ポインタを、関数S28の引数として指定する。
次に、レンダリングモジュール66Bは、関数S28が呼び出されたことに応じて、引数として指定された指定データID“コンテンツデータC”をジョブIDとする印刷ジョブを、指定キューであるキュー領域67Aに生成して(S29)、関数S28を終了する(S30)。後述するステップS45、S48、S53でキュー領域67Aに書き込まれる各種指示情報には、ジョブID“コンテンツデータC”が付加される。但し、ジョブID“コンテンツデータC”で識別される印刷ジョブは、この時点では指示情報を含んでいない。関数S28の引数として指定される指定データIDは、OS64によって指定された指定識別情報の一例である。
次に、OS64は、関数S28が終了したことに応じて(S30)、第1関数“DrvDocumentEvent()”を呼び出す(S31)。OS64は、定数“DOCUMENTEVENT_STARTDOCPOST”を、関数S31の引数として指定する。次に、UIモジュール66Aは、関数S31が呼び出されたことに応じて、指示解除処理を実行する(S32)。図7(B)を参照して、指示解除処理の詳細を説明する。
UIモジュール66Aは、ステップS64で一時記憶させたジョブID“__準備__”が付加された指示情報がキュー領域67Aに記憶されているか否かを判断する(S66)。ジョブID“__準備__”が付加された指示情報とは、すなわち、準備指示情報を指す。また、ステップS66でYesと判断される場合とは、例えば、通信I/F55が通信ネットワークに接続されていない場合、プリンタ10Aの電源がOFFされている場合などである。
そして、UIモジュール66Aは、キュー領域67Aに準備指示情報が記憶されていると判断したことに応じて(S66:Yes)、当該準備指示情報をキュー領域67Aから削除する(S67)。一方、UIモジュール66Aは、キュー領域67Aに準備指示情報が記憶されていないと判断したことに応じて(S66:No)、ステップS67の処理を実行することなく、指示解除処理を終了する。ステップS66の処理は第2判断処理の一例であり、ステップS67の処理は削除処理の一例である。
図5に戻って、UIモジュール66Aは、関数S31を終了する(S33)。また、OS64は、関数S31が終了したことに応じて(S33)、関数S21を終了する(S34)。これにより、StartDoc処理が終了される。関数S21の次に図4に戻って、編集プログラム65は、StartPage処理を実行する(S15)。StartPage処理は、印刷指示情報を生成する処理である。StartPage処理は、指定コンテンツデータに含まれるページデータ毎に実行される。StartPage処理の処理対象となるページデータは、例えば、編集プログラム65によって関数の引数として指定される。図6を参照して、StartPage処理の詳細を説明する。
[StartPage処理]
編集プログラム65は、OS64に定義された関数“StartPage()”を呼び出す(S41)。次に、OS64は、第1関数“DrvDocumentEvent()”を呼び出す(S42)。OS64は、定数“DOCUMENTEVENT_STARTPAGE”を、関数S42の引数として指定する。次に、UIモジュール66Aは、所定の処理を実行して関数S42を終了する(S43)。
次に、OS64は、関数S42が終了したことに応じて(S43)、レンダリングモジュール66Bに定義された関数“DrvStartPage()”を呼び出す(S44)。次に、レンダリングモジュール66Bは、関数S44が呼び出されたことに応じて、ヘッダ指示情報を生成し、生成したヘッダ指示情報をキュー領域67Aに記憶させる(S45)。ヘッダ指示情報は、1枚のシートに画像を印刷する一連の動作において、シートに画像を印刷する前に実行すべき動作を指示するための印刷指示情報である。本実施形態に係るヘッダ指示情報は、認証指示情報、給送指示情報、及び頭出し指示情報である。
認証指示情報は、印刷指示情報の送信元である情報処理端末50が印刷動作の実行を指示する権限を有するか否かの判断を指示するための情報である。認証指示情報は、準備指示情報に含めた第1認証情報と同一の第1認証情報“abc”を含む。より詳細には、編集プログラム65は、編集条件情報から第1認証情報を読み出し、読み出した第1認証情報を含む認証指示情報を、キュー領域67Aに記憶させる。給送指示情報は、編集条件情報のトレイ情報で示される給送トレイから搬送部21にシートを給送させるための情報である。頭出し指示情報は、給送されたシートの最初の印刷領域が吐出部22に対面する位置まで、当該シートを搬送部21に搬送させるための情報である。
そして、レンダリングモジュール66Bは、関数S44を終了する(S46)。次に、OS64は、関数S44が終了したことに応じて(S46)、関数S41を終了する(S47)。次に、編集プログラム65は、関数S41が終了したことに応じて(S47)、OS64に定義された描画関数を呼び出す。また、OS64は、編集プログラム65によって描画関数が呼び出されたことに応じて、レンダリングモジュール66Bに定義された描画関数を呼び出す。
そして、複数の描画関数が所定の順序で実行されることによって、レンダリングモジュール66Bは、ページデータから印刷データを生成する。印刷データは、例えば、ページデータをラスタライズしたラスタデータである。また、レンダリングモジュール66Bは、印刷データに対する印刷動作を実行させるための印刷指示情報を生成し、生成した印刷指示情報をキュー領域67Aに記憶させる(S48)。ステップS48では、後述するように、吐出指示情報及び搬送指示情報が生成される。
吐出指示情報は、吐出部22に対面されたシートの印刷領域に対して画像を印刷するために、吐出部22によるインクの吐出タイミングを示すための情報である。搬送指示情報は、次に画像を印刷する印刷領域が吐出部22に対面する位置まで、搬送部21にシートを搬送させるための情報である。ステップS48において印刷データを生成する処理は、生成処理の一例である。以下、レンダリングモジュール66Bが吐出指示情報及び搬送指示情報を生成する処理の詳細を説明する。
まず、レンダリングモジュール66Bは、ステップS28以降の所定のタイミングにおいて、ラスタライズの対象として受け渡されるデータの単位を示す単位情報を、OS64に通知する。単位情報には、例えば、ページデータの単位での受け渡しを指示する“ページ”、或いはバンドデータの単位での受け渡しを指示する“バンド”が設定される。バンドデータは、ページデータの一部のデータである。より詳細には、ページデータは、長手方向に隣接する複数のバンドデータに区画される。また、バンドデータで示される画像は、後述するパスデータで示される画像より面積が大きい。
レンダリングモジュール66Bは、例えば、編集条件情報のサイズ情報に特定サイズ(例えば、A4)が設定されていることに応じて、単位情報“ページ”をOS64に通知する。特定サイズのシートは、プリンタ10の搬送部21によって、当該シートの短手方向を搬送方向に一致させた状態で搬送される。また、特定サイズのシートには、当該シートの長手方向に沿って移動するプリンタ10の吐出部22によって、画像が印刷される。
一方、レンダリングモジュール66Bは、例えば、編集条件情報のサイズ情報に非特定サイズ(例えば、A4以外)が設定されていることに応じて、単位情報“バンド”をOS64に通知する。非特定サイズのシートは、プリンタ10の搬送部21によって、当該シートの長手方向を搬送方向に一致させた状態で搬送される。また、非特定サイズのシートには、当該シートの短手方向に沿って移動するプリンタ10の吐出部22によって、画像が印刷される。
なお、単位情報は、例えば、OS64によって呼び出された関数の戻り値として通知されてもよい。また、特定サイズは、例えば、プリンタ10A、10B毎に異なっていてもよい。プリンタ10A、10B毎の特定サイズは、ドライバプログラム66のソースコードに記述されていてもよいし、ドライバプログラム66がプリンタ10A、10Bに問い合わせてもよい。
単位情報“ページ”を取得したOS64は、ステップS48において、ページデータを、レンダリングモジュール66Bに引き渡す。レンダリングモジュール66Bは、OS64から引き渡されたページデータ全体をラスタライズしてラスタデータを生成する。次に、レンダリングモジュール66Bは、領域62Bに展開されたラスタデータを、領域62B内で90°回転させる。次に、レンダリングモジュール66Bは、印刷領域の1つに印刷する画像を示すパスデータを、90°回転されたラスタデータから抽出する。そして、レンダリングモジュール66Bは、抽出したパスデータそれぞれに基づいて吐出指示情報及び搬送指示情報を生成し、生成した吐出指示情報及び搬送指示情報を順番にキュー領域67Aに書き込む。レンダリングモジュール66Bは、パスデータの抽出、吐出指示情報及び搬送指示情報の生成、生成した情報のキュー領域67Aへの書き込みを、ページデータに含まれる全てのパスデータに対して連続して実行する。
一方、単位情報“バンド”を取得したOS64は、ステップS48において、ページデータに含まれる複数のバンドデータのうちの1つを、レンダリングモジュール66Bに引き渡す。レンダリングモジュール66Bは、OS64から引き渡されたバンドデータ全体をラスタライズしてラスタデータを生成する。次に、レンダリングモジュール66Bは、ラスタデータに基づいて吐出指示情報及び搬送指示情報を生成し、生成した吐出指示情報及び搬送指示情報をキュー領域67Aに書き込む。そして、ページデータを構成する全てのバンドデータに対して、前述の処理が繰り返し実行される。
すなわち、単位情報“ページ”の場合において、最初の吐出指示情報がキュー領域67Aに書き込まれるのは、ページデータ全体がラスタデータに変換され、且つ領域62B内でラスタデータが90°回転された後になる。一方、単位情報“バンド”の場合において、最初の吐出指示情報がキュー領域67Aに書き込まれるのは、ページデータの一部であるバンドデータ全体がラスタデータに変換された後になる。すなわち、[OK]アイコン126が指定されてから最初の吐出指示情報がキュー領域67Aに書き込まれるまでの時間は、単位情報“ページ”の場合が単位情報“バンド”の場合より長くなる。
次に、編集プログラム65は、指定されたページデータに対するステップS48の処理が終了したことに応じて、OS64に定義された関数“EndPage()”を呼び出す(S49)。次に、OS64は、第1関数“DrvDocumentEvent()”を呼び出す(S50)。OS64は、定数“DOCUMENTEVENT_ENDPAGE”を、関数S50の引数として指定する。次に、UIモジュール66Aは、所定の処理を実行して関数S50を終了する(S51)。
次に、OS64は、関数S50が終了したことに応じて(S51)、レンダリングモジュール66Bに定義された関数“DrvEndPage()”を呼び出す(S52)。次に、レンダリングモジュール66Bは、関数S52が呼び出されたことに応じて、排出指示情報を生成し、生成した排出指示情報をキュー領域67Aに記憶させる(S53)。排出指示情報は、画像が印刷されたシートを搬送部21に排出させるための情報である。
図6に示されるStartPage処理によってキュー領域67Aに書き込まれた複数の印刷指示情報は、OS64によって書き込み順にプリンタ10Aに送信される。典型的には、OS64は、認証指示情報、給送指示情報、頭出し指示情報、吐出指示情報、搬送指示情報、吐出指示情報、・・・、排出指示情報を、通信I/F55を通じてプリンタ10Aにこの順で送信する。ステップS45の処理、ステップS48で印刷指示情報をキュー領域67Aに記憶させる処理、ステップS53の処理は、通信I/F55を通じてプリンタ10に印刷指示情報を送信する印刷指示処理の一例である。
そして、レンダリングモジュール66Bは、関数S52を終了する(S54)。次に、OS64は、関数S52が終了したことに応じて(S54)、関数S49を終了する(S55)。これにより、StartPage処理が終了される。次に図4に戻って、編集プログラム65は、指定コンテンツデータに含まれる全てのページデータに対してStartPage処理を実行したか否かを判断する(S16)。そして、編集プログラム65は、StartPage処理を実行していないページデータが存在すると判断したことに応じて(S16:Yes)、当該ページデータに対するStartPage処理を実行する(S15)。
そして、編集プログラム65は、全てのページデータに対するStartPage処理が終了したと判断したことに応じて(S16:No)、EndDoc処理を実行する(S17)。EndDoc処理は、プリンタ10に印刷動作を実行させた後の後処理である。EndDoc処理は、OS64に定義された関数“EndDoc()”が編集プログラム65によって呼び出されたことによって開始される周知の処理なので、詳細の説明は省略する。
[印刷処理]
次に、図8を参照して、プリンタ10によって実行される印刷処理を説明する。プリンタ10は、通信I/F25を通じて情報処理端末50から準備指示情報或いは印刷指示情報を受信したことに応じて、印刷処理を実行する。以下の各処理は、ROM32に記憶されているプログラムをCPU31が読み出して実行してもよいし、制御部30に搭載されたハードウェア回路によって実現されてもよい。
プリンタ10の制御部30は、通信I/F25を通じて情報処理端末50から準備指示情報を受信する(S71:準備指示)。ステップS71で準備指示情報を受信する処理は、第1受信処理の一例である。そして、制御部30は、準備指示情報を受信したことに応じて(S71:準備指示)、当該準備指示情報の送信元の情報処理端末50が印刷動作の実行を指示する権限を有するか否かを判断する(S72)。ステップS72の処理は、第1判断処理の一例である。
より詳細には、制御部30は、受信した準備指示情報に含まれる第1認証情報“abc”と同一の第2認証情報を含む認証情報レコードが、認証情報リストに登録されているか否かを判断する。次に、制御部30は、第2認証情報“abc”を含む認証情報レコードが登録されていると判断したことに応じて、当該認証情報レコードの累積枚数と閾値枚数とを比較する。そして、制御部30は、累積枚数が閾値未満と判断したことに応じて、情報処理端末50が印刷動作の実行を指示する権限を有すると判断する。一方、制御部30は、第2認証情報“abc”を含む認証情報レコードが登録されていないと判断したことに応じて、或いは累積枚数が閾値枚数に達していると判断したことに応じて、情報処理端末50が印刷動作の実行を指示する権限を有しないと判断する。
そして、制御部30は、情報処理端末50が印刷動作の実行を指示する権限を有しないと判断したことに応じて(S72:No)、ステップS73〜S76の処理をスキップする。一方、制御部30は、情報処理端末50が印刷動作の実行を指示する権限を有すると判断したことに応じて(S72:Yes)、電源部11が休眠状態か否かを判断する(S73)。制御部30は、例えば、電源部11の現在の状態を示すフラグ情報をRAM33或いはEEPROM34に記憶させておき、当該フラグ情報に基づいてステップS73の判断を行ってもよい。但し、ステップS73の判断の方法は、前述の例に限定されない。
次に、制御部30は、電源部11が休眠状態だと判断したことに応じて(S73:Yes)、電源部11を休眠状態から駆動状態に切り替える(S74)。より詳細には、制御部30は、HIGHレベルの電源信号を電源部11に出力する。ステップS74の処理は、切替処理の一例である。一方、制御部30は、電源部11が駆動状態だと判断したことに応じて(S73:No)、ステップS74の処理をスキップする。ステップS73の処理は状態判断処理の一例であり、ステップS74の処理は切替処理の一例である。
次に、制御部30は、準備指示情報を受信したことをディスプレイ23を通じて報知する(S75)。制御部30は、例えば、ディスプレイ23のバックライトを所定の時間だけ点灯させればよい。ステップS75の処理は、報知処理の一例である。ディスプレイ23は、報知部の一例である。但し、報知処理の具体例はこれに限定されず、不図示のLEDランプを点灯させてもよいし、不図示のスピーカーに報知音を出力させてもよい。
次に、制御部30は、動作部20に印刷前動作を実行させる(S76)。印刷前動作は、印刷動作で所定品質の画像をシートに印刷するために、プリンタ10が実行すべき動作である。印刷前動作は、例えば、ノズル面を覆うキャップを吐出部22から離間させるアンキャップ処理、シートが通過する領域外において吐出部22にインクを吐出させるフラッシング処理、電源部11の電源電圧を目標電圧に昇圧する昇圧処理等のうちの一部又は全部を含む。ステップS76の処理は、印刷前処理の一例である。
また、制御部30は、複数の印刷前動作それぞれに対応するフラグ情報を、RAM33或いはEEPROM34に記憶させておく。全てのフラグ情報には、印刷前処理の開始時点において、印刷前動作が終了していないことに対応する第2値“OFF”が設定されている。そして、制御部30は、印刷前動作の1つが終了したことに応じて、印刷前動作が終了したことに対応する第1値“ON”を、終了した印刷前動作に対応するフラグ情報に設定する。
次に、制御部30は、通信I/F25を通じて情報処理端末50から印刷指示情報を受信する(S71:印刷指示)。すなわち、制御部30は、認証指示情報、給送指示情報、頭出し指示情報、吐出指示情報、搬送指示情報、吐出指示情報、・・・、排出指示情報を、通信I/F25を通じて情報処理端末50からこの順に受信する。ステップS71で印刷指示情報を受信する処理は、第2受信処理の一例である。
次に、制御部30は、認証指示情報を受信したことに応じて(S71:印刷指示)、当該認証指示情報の送信元の情報処理端末50が印刷動作の実行を指示する権限を有するか否かを判断する(S77)。ステップS77の処理は、第2判断処理の一例であって、ステップS72と同様であってもよい。そして、制御部30は、情報処理端末50が印刷動作の実行を指示する権限を有しないと判断したことに応じて(S77:No)、ステップS78〜S83の処理をスキップする。
一方、制御部30は、情報処理端末50が印刷動作の実行を指示する権限を有すると判断したことに応じて(S77:Yes)、印刷前処理が終了したか否かを判断する(S78)。より詳細には、制御部30は、印刷前動作に対応付けられた全てのフラグ情報に第1値“ON”が設定されていることに応じて、印刷前処理が終了したと判断する(S78:Yes)。一方、制御部30は、印刷前動作に対応付けられた少なくとも1つのフラグ情報に第2値“OFF”が設定されていることに応じて、印刷前処理が終了していないと判断する(S78:No)。
準備指示情報と印刷指示情報との受信間隔は、例えば、ステップS48の処理量、通信ネットワークの状態等によって変動する。すなわち、準備指示情報をトリガにして開始された印刷前処理は、印刷指示情報を受信した時点で終了していない可能性がある。そこで、制御部30は、印刷前処理が終了していないと判断したことに応じて(S78:No)、印刷前処理が終了するまで後続の処理の実行を待機する。そして、制御部30は、印刷前処理が終了したと判断したことに応じて(S78:Yes)、受信した印刷指示情報に従った印刷動作を動作部20に実行させる(S79〜S83)。ステップS79〜S83の処理は、印刷処理の一例である。
まず、制御部30は、受信した給送指示情報に従った給送処理と、頭出し指示情報に従った頭出し処理とを実行する(S79)。すなわち、制御部30は、給送指示情報に示される給送トレイに収容されたシートを搬送部21に給送させる。次に、制御部30は、給送処理で給送されたシートを、頭出し指示情報に示される位置まで搬送部21に搬送させる。なお、これらの処理は、印刷前処理で実行されてもよい。
次に、制御部30は、受信した吐出指示情報に従った吐出処理を実行する(S80)。すなわち、制御部30は、主走査方向の一方から他方に吐出部22を移動させると共に、吐出指示情報に示される吐出タイミングで吐出部22にインクを吐出させる。次に、制御部30は、シートの全ての印刷領域に画像を印刷したか否かを判断する(S81)。換言すれば、制御部30は、直近のステップS80で用いた吐出指示情報の次に搬送指示情報及び排出指示情報のどちらを受信したかを判断する。
次に、制御部30は、シートの全ての印刷領域に画像を印刷していないと判断したことに応じて(S81:No)、受信した搬送指示情報に従った搬送処理を実行する(S82)。すなわち、制御部30は、搬送指示情報に示される搬送量だけ搬送部21にシートを搬送させる。制御部30は、シートの全ての印刷領域に画像を印刷するまで(S81:No)、ステップS80〜S82の処理を繰り返し実行する。
そして、制御部30は、シートの全ての印刷領域に画像を印刷したと判断したことに応じて(S81:Yes)、受信した排出指示情報に従った排出処理を実行する(S83)。すなわち、制御部30は、画像が印刷されたシートを搬送部21にプリンタ10の外部へ排出させる。なお、指定コンテンツデータに複数のページデータが含まれる場合、ステップS79〜S83の処理が繰り返し実行される。これにより、ステップS48で生成された印刷データで示される画像、換言すれば、指定コンテンツデータで示される画像がシートに印刷される。
[本実施形態の作用効果]
上記の実施形態によれば、情報処理端末50は第1認証情報を含む準備指示情報を送信し、準備指示情報を受信したプリンタ10は第1認証情報と第2認証情報とが一致したことに応じて、動作部20に印刷前動作を実行させる。このように、印刷動作を実行させる権限があることを確認してから印刷前動作を実行させることにより、不要な印刷前動作の実行を抑制することができる。また、準備指示情報に従ってプリンタ10が印刷前動作を実行している間に、情報処理端末50で印刷データが生成されるので、印刷動作の実行指示が入力されてから最初のシートがプリンタから排出されるまでの所要時間であるFPOTを短縮することができる。
また、上記の実施形態のように、第1認証情報をプライベート情報として条件情報に含め、且つ第1領域62Cに記憶されていた条件情報を第2領域62Dに退避させておくことにより、適切な第1認証情報をプリンタ10に送信することができる。但し、第1認証情報の取得方法は、前述の例に限定されない。例えば、UIモジュール66Aは、ステップS63において、情報処理端末50にログインしているユーザのユーザIDを、第1認証情報としてOS64から取得してもよい。より詳細には、UIモジュール66Aは、OS64が提供するAPIを呼び出し、当該APIの戻り値として第1認証情報を取得してもよい。
また、上記の実施形態によれば、認証情報の比較に加えて、累積枚数と閾値枚数との比較を行うので、不要な印刷前動作の実行がさらに抑制される。さらに、上記の実施形態によれば、印刷前動作及び印刷動作それぞれの実行タイミングで権限の有無を判断するので、準備指示情報を受信してから印刷指示情報を受信するまでの状態を、プリンタで管理する必要がなくなる。
また図示は省略するが、プリンタ10のEEPROM34は、認証フラグを記憶していてもよい。認証フラグは、ステップS72、S77の処理を実行するか否かを示すフラグ情報の一例である。認証フラグには、ステップS72、S77の処理を実行する指示に対応する第1値“ON”、或いはステップS72、S77の処理を実行しない指示に対応する第2値“OFF”が設定される。また、制御部30は、準備指示情報及び認証指示情報を受信したことに応じて、認証フラグの設定値を判断してもよい。そして、制御部30は、認証フラグに第1値“ON”が設定されていると判断したことに応じて、ステップS72、S77の処理を実行してもよい。一方、制御部は、認証フラグに第2値“OFF”が設定されていると判断したことに応じて、ステップS72、S77の処理をスキップしてもよい。
また、上記の実施形態によれば、準備指示情報を送信するか否かを関数S25が呼び出されたタイミングで判断するので、不要な印刷前動作をプリンタ10に実行させることがない。すなわち、印刷前動作の実行を適切なタイミングでプリンタ10に指示することができる。さらに、キュー領域に特定指示情報が既に書き込まれている場合、当該特定指示情報に従ってプリンタ10の動作部20が動作する。そこで上記の実施形態のように、このような場合には準備指示処理をスキップすることにより、不要な印刷前動作をプリンタ10に実行させることがない。さらに、指定キューのみならず、プリンタ10に送信すべき指示情報が書き込まれる全てのキュー領域を確認することによって、不要な印刷前動作の実行をさらに有効に抑制できる。
一方、準備指示情報と印刷指示情報との送信間隔が短い場合、準備指示情報によって印刷前動作を先行開始させるメリットが小さくなる。そこで上記の実施形態のように、印刷ジョブが生成されたにも拘わらず、準備指示情報が未だキュー領域に残っている場合には、準備指示情報をキュー領域から削除することによって、プリンタ10と情報処理端末50との通信量を削減することができる。
また、特定サイズのシートに対してプリンタ10に画像を印刷させる場合、指定コンテンツデータの長手方向及び短手方向を反転させてから印刷データを生成するので、非特定サイズのシートに対してプリンタ10に画像を印刷させる場合と比較して、生成処理に時間がかかる。そこで上記構成のように、情報処理端末50による生成処理と、プリンタ10による印刷前処理とを並行して実行することにより、FPOTを短縮することができる。さらに上記構成のように、情報処理端末50による生成処理と、プリンタ10による切替処理とを並行して実行することにより、FPOTをさらに短縮することができる。
また、上記の実施形態によれば、プリンタ10が準備指示情報を受信したことが報知部を通じて報知される。その結果、印刷動作の実行を指示したユーザに、プリンタ10が動作を開始したことを認識させることができる。
また、上記の実施形態のプリンタ10及び情報処理端末50において、ROM32或いはメモリ62に記憶された各種プログラムがCPU31、61によって実行されることによって、本発明の制御部が実行する各処理が実現される例を説明した。しかしながら、制御部の構成はこれに限定されず、その一部又は全部を集積回路等のハードウェアで実現してもよい。
さらに、本発明は、プリンタ10及び情報処理端末50として実現できるだけでなく、プリンタ10及び情報処理端末50に処理を実行させるプログラムとして実現してもよい。そして、当該プログラムは、non−transitoryな記録媒体に記録されて提供されてもよい。non−transitoryな記録媒体は、CD−ROM、DVD−ROM等の他、通信ネットワークを通じてプリンタ10及び情報処理端末50に接続可能なサーバに搭載された記憶部を含んでもよい。そして、サーバの記憶部に記憶されたプログラムは、当該プログラムを示す情報或いは信号として、インターネット等の通信ネットワークを通じて配信されてもよい。