JP6904204B2 - プリンタドライバおよび、情報処理装置 - Google Patents

プリンタドライバおよび、情報処理装置 Download PDF

Info

Publication number
JP6904204B2
JP6904204B2 JP2017188347A JP2017188347A JP6904204B2 JP 6904204 B2 JP6904204 B2 JP 6904204B2 JP 2017188347 A JP2017188347 A JP 2017188347A JP 2017188347 A JP2017188347 A JP 2017188347A JP 6904204 B2 JP6904204 B2 JP 6904204B2
Authority
JP
Japan
Prior art keywords
page
print job
printer
image data
operating system
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.)
Active
Application number
JP2017188347A
Other languages
English (en)
Other versions
JP2019066912A (ja
Inventor
仁人 細溝
仁人 細溝
希如 村田
希如 村田
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.)
Brother Industries Ltd
Original Assignee
Brother Industries 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 Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2017188347A priority Critical patent/JP6904204B2/ja
Priority to EP18180510.2A priority patent/EP3462300B1/en
Priority to US16/021,435 priority patent/US10459672B2/en
Publication of JP2019066912A publication Critical patent/JP2019066912A/ja
Application granted granted Critical
Publication of JP6904204B2 publication Critical patent/JP6904204B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1284Local printer device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1211Improving printing performance
    • G06F3/1215Improving printing performance achieving increased printing speed, i.e. reducing the time between printing start and printing end
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1208Improving or facilitating administration, e.g. print management resulting in improved quality of the output result, e.g. print layout, colours, workflows, print preview
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1211Improving printing performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1218Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources
    • G06F3/1219Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources with regard to consumables, e.g. ink, toner, paper
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/125Page layout or assigning input pages onto output media, e.g. imposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server

Description

本発明は、情報処理装置のコンピュータが読み取り可能なプリンタドライバ等に関する。
プリンタには、片面印刷と両面印刷とを選択的に実行可能なものがあり、そのようなプリンタのプリンタドライバは、片面印刷を指定する片面指定コマンドと、両面面印刷を指定する両面指定コマンドとの何れかをプリンタに送信する。下記特許文献には、そのようなプリンタドライバの一例が記載されている。
特開2011−44152号公報
1ページ以上の画像により構成されるドキュメントが印刷される際に、印刷対象のドキュメントを構成する画像の総ページ数が1ページである場合には、印刷設定が両面印刷に設定されていても、片面印刷を実行することが好ましい。そこで、印刷設定が両面印刷に設定されており、印刷対象のドキュメントを構成する画像の総ページ数が1ページである場合に片面印刷を実行することを課題とする。
上記課題を解決するために、実施例に開示するプリンタドライバは、プリンタと通信可能な通信インタフェースを備える情報処理装置のコンピュータが読み取り可能な前記プリンタのプリンタドライバであって、前記情報処理装置にインストールされているオペレーティングシステムは、1ページ以上の画像により構成されるドキュメントの印刷ジョブであり且つ1ページ毎に区切られた印刷ジョブを前記プリンタドライバに出力するように構成され、前記オペレーティングシステムは、前記印刷ジョブの各ページの開始を示すページ開始情報を前記プリンタドライバに出力し且つ、前記印刷ジョブの終了を示すジョブ終了情報を前記プリンタドライバに出力するように構成され、前記オペレーティングシステムは、前記印刷ジョブを、両面印刷であることを指定する両面指定情報と片面印刷であることを指定する片面指定情報との何れかに関連した態様で前記プリンタドライバに出力するように構成されており、前記コンピュータを、前記オペレーティングシステムにより出力された前記印刷ジョブが、前記両面指定情報と関連づいている場合に、前記印刷ジョブの1ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときには、前記1ページ目に対応するページ開始コマンドを前記プリンタに送信せず、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときに、前記1ページ目に対応するページ開始コマンドを両面印刷であることを指定する両面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信し、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けることなく、前記ジョブ終了情報を前記オペレーティングシステムから受け付けた場合に、前記1ページ目に対応するページ開始コマンドを片面印刷であることを指定する片面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信する、送信手段として機能させることを特徴とする。
実施例に開示するプリンタドライバは、1ページ目の開始を示すページ開始情報をオペレーティングシステムから受け付けたときに、1ページ目に対応するページ開始コマンドをプリンタに送信せず、2ページ目の開始を示すページ開始情報をオペレーティングシステムから受け付けたときに、1ページ目に対応するページ開始コマンドを両面指定コマンドに関連した態様でプリンタに送信する。一方、プリンタドライバは、2ページ目の開始を示すページ開始情報をオペレーティングシステムから受け付けることなく、印刷ジョブの終了を示すジョブ終了情報をオペレーティングシステムから受け付けた場合に、1ページ目に対応するページ開始コマンドを片面指定コマンドに関連した態様でプリンタに送信する。これにより、印刷設定が両面印刷に設定されており、印刷対象のドキュメントを構成する画像の総ページ数が1ページである場合に片面印刷を実行することができる。
プリンタシステム1のブロック図である。 従来プリンタドライバ100とOS28Aとの作動シーケンスを示す図である。 プリンタドライバ26とOS28との作動シーケンスを示す図である。 DrvEnableSurfaceサブルーチンとDrvNextBandサブルーチンとを示す図である。 DrvStartPageサブルーチンを示す図である。 DrvSendPageサブルーチンを示す図である。 DrvEndPageサブルーチンを示す図である。 DrvEndDocサブルーチンを示す図である。
<プリンタシステムの構成>
図1は、本実施形態に係るプリンタシステム1のブロック図である。図1に示すプリンタシステム1は、PC(情報処理装置の一例)10、プリンタ50を備える。PC10は、CPU(コンピュータ及びコントローラの一例)12、メモリ14、LCD16、入力I/F18、ネットワークI/F(通信インタフェースの一例)20を主に備えている。これらの構成要素は、バス22を介して互いに通信可能とされている。
PC10及びプリンタ50は、ネットワークI/F20及びネットワーク52を通じて通信可能となっている。通信の方式としては、例えば、有線LAN、USB、Wi−Fi(登録商標)やBluetooth(登録商標)を採用できる。なお、プリンタ50は、片面印刷と両面印刷とを選択的に実行可能なデバイスである。また、プリンタ50は、印刷用紙の印刷面を上に向けて排出するフェイスアップ排出のプリンタである。
CPU12は、メモリ14内のアプリケーション24、プリンタドライバ26、OS28に従って処理を実行する。アプリケーション24は、例えば、文章コンテンツを作成するワープロソフト、表計算コンテンツを作成する表計算ソフト、プレゼンテーションコンテンツを作成するプレゼンテーションソフトなどの、コンテンツを作成するプログラムである。アプリケーション24が作成したコンテンツは、アプリケーションがOS28に印刷を指示することにより、PC10に接続されたプリンタで印刷される。アプリケーション24がOS28にコンテンツの印刷を指示するとき、アプリケーション24はOS28に、コンテンツを示すコンテンツデータを、OS28が解釈できる形式で出力する。アプリケーション24がOS28に出力するコンテンツデータを、本実施例では、画像データの一種として記載する。プリンタドライバ26は、プリンタ50のデバイスドライバであり、プリンタ50の作動を制御する。OS28は、アプリケーション24、プリンタドライバ26に利用される基本的な機能を提供するプログラムである。OS28は、例えば、Windows(登録商標)、MacOS(登録商標)、Linux(登録商標)、Android(登録商標)、iOS(登録商標)等のオペレーティングシステムである。なお、以下の説明では、プリンタドライバ26等を実行するCPU12のことを、単にプログラム名でも記載する場合がある。例えば、「プリンタドライバ26が」という記載は、「プリンタドライバ26を実行するCPU12が」ということを意味する場合がある。
また、メモリ14は、データ記憶領域34を備える。データ記憶領域34は、プリンタドライバ26等の実行に必要なデータなどを記憶する領域である。なお、メモリ14は、RAM、ROM、フラッシュメモリ、HDD、CPU12が備えるバッファなどが組み合わされて構成されている。
メモリ14は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、non−transitoryな媒体である。non−transitoryな媒体には、上記の例の他に、CD−ROM、DVD−ROM等の記録媒体も含まれる。また、non−transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non−transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。
LCD16は、PC10の各種機能を表示する。入力I/F18は、キーボード,マウス等を含み、ユーザ操作を入力するためのインタフェースである。
<プリンタシステム1による印刷処理>
近年の省資源化の潮流に従って、印刷設定として両面印刷と片面印刷とを選択可能なプリンタにおいて、両面印刷がデフォルトで設定されることが望まれている。しかしながら、印刷設定として両面印刷がデフォルトで設定されていると、総ページ数が1ページの画像のドキュメントの印刷時、つまり、ユーザが印刷設定を変更していない場合は、1ページの画像のみの印刷時に、プリンタにおいて、両面印刷設定での印刷処理が実行される。
両面印刷設定での印刷処理では、プリンタの種類によっては、一方の面への印刷が完了した後に、他方の面への印刷処理の準備として、印刷用紙がスイッチバックされる。このため、総ページ数が1ページの画像のドキュメントの印刷処理時に、両面印刷設定での印刷処理が実行されると、無駄に印刷用紙のスイッチバックが実行される。このような無駄なスイッチバックの実行により、総ページ数が1ページの画像のドキュメントの印刷が完了していても、印刷用紙がプリンタから排出されず、FPOT(印刷ボタンが押されてから印刷用紙が排出されるまでの所要時間)が長くなる。また、無駄なスイッチバックの実行により、プリンタの種類によっては、無駄な振動,騒音等が発生する。また、無駄なスイッチバックの実行により、プリンタの種類によっては、印刷用紙の排出がページの途中で止まり、スイッチバックされたのち、その印刷用紙が排出するため、プリンタのユーザに不信を感じさせることになるかもしれない。
さらに言えば、両面印刷設定での印刷処理では、一方の面に印刷された画像が他方の面に透けることを防止するべく、印刷用紙へのインクの吐出量が制限される。このため、両面印刷設定で印刷された画像の画質は、片面印刷設定で印刷された画像の画質より低い傾向にある。このため、1ページの画像のみの印刷時に、両面印刷に設定されている場合であっても、片面印刷設定で印刷されることが好ましい。
しかしながら、1ページ以上の画像により構成されるドキュメントの印刷時には、1ページ毎に区切られた印刷ジョブが、ページ順に、OS28からプリンタドライバに出力されている。そして、印刷設定が両面印刷に設定されている場合に、従来のプリンタドライバの処理では、プリンタドライバが、1ページ毎に区切られた印刷ジョブを受け付けるごとに、両面印刷に対応する態様の画像データを作成する。このため、従来のプリンタドライバでは、印刷設定が両面印刷に設定されている場合に、総ページ数が1ページの画像のドキュメントに対して、片面印刷設定での印刷処理を行うことはできない。以下に、従来のプリンタドライバ(以下、「従来プリンタドライバ」と記載する)100の処理について、図2に示すシーケンス図を用いて説明する。なお、従来プリンタドライバ100は、不図示のPC10Aにインストールされており、PC10Aは、従来プリンタドライバ100以外はPC10と同様の構成を持っている。このPC10Aの構成は、PC10の構成に「A」をつけた参照符号で表す。
なお、本明細書では、基本的に、プログラムに記述された命令に従ったCPU12の処理を示す。すなわち、以下の説明における「判断」「抽出」「選択」「算出」「決定」「特定」「取得」「受付」「制御」「設定」等の処理は、CPU12の処理を表している。CPU12による処理は、OS28を介したハードウェア制御も含む。なお、「取得」は要求を必須とはしない概念で用いる。すなわち、CPU12が要求することなくデータを受信するという処理も、「CPU12がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「命令」「応答」「要求」等の処理は、「命令」「応答」「要求」等を示す情報を通信することにより行われる。また、「命令」「応答」「要求」等の文言を、「命令」「応答」「要求」等を示す情報そのものという意味で記載してもよい。
まず、PC10Aの入力I/F18を介した操作入力に従って、アプリケーション24Aがプリンタ50による印刷処理を目的として、1ページ以上の画像により構成されるドキュメントの画像データを作成する。この際、ユーザは、入力I/F18Aへの操作により、印刷条件として、両面印刷と片面印刷との何れかを選択的に設定する。また、ユーザが両面印刷と片面印刷との何れかを選択的に設定しなければ、デフォルト設定に従って、両面印刷に設定される。そして、アプリケーション24Aは、画像データを作成すると、作成した画像データと、設定された印刷条件(以下、「設定情報」と記載する)とを、OS28Aに出力する。なお、設定情報には、両面印刷と片面印刷との何れに設定されているかを示す情報だけでなく、印刷用紙のサイズを示す情報,解像度を示す情報なども含まれている。
OS28Aは、画像データを受け付けると、従来プリンタドライバ100の関数DrvStartDocを呼び出す(S100)。この関数DrvStartDocは、印刷ジョブの開始を示す関数である。次に、OS28Aは、従来プリンタドライバ100の関数DrvStartPageを呼び出す(S102)。この関数DrvStartPageは、印刷ジョブの各ページの開始を示す関数であり、関数DrvStartPageには、設定情報が関連付けられている。OS28Aは、設定情報を関連付けてプリンタドライバの各関数を呼び出す。例えば、OS28Aは、両面印刷に設定されていること示す情報(以下、「両面設定情報」と記載する)(両面指定情報の一例)と、片面印刷に設定されていること示す情報(以下、「片面設定情報」と記載する)(片面指定情報の一例)との何れかを、設定情報として、関数DrvStartPageの引数に含め、関数DrvStartPageを呼び出している。
また、関数DrvStartPageの引数には、送信される印刷ジョブが何ページ目であるかを示す情報(以下、「ページ情報」と記載する)も含まれる。印刷ジョブは、上述したように、1ページ以上の画像により構成されるドキュメントの印刷ジョブであり、1ページ毎に区切られて、ページ順に従来プリンタドライバ100に出力される。このため、例えば、1ページ目の印刷ジョブが送信される際に、その印刷ジョブが1ページ目の印刷ジョブであることを示す情報が、ページ情報として、関数DrvStartPageの引数に含まれる。
そして、従来プリンタドライバ100は、関数DrvStartPageが呼び出されると、ジョブ開始コマンドをプリンタ50に送信する(S104)。ジョブ開始コマンドは、ドキュメントの印刷ジョブの開始を示すコマンドである。次に、従来プリンタドライバ100は、ページ開始コマンドをプリンタ50に送信する(S106)。ページ開始コマンドは、ドキュメントを構成する1ページ以上の画像の各ページの印刷ジョブの開始を示すコマンドである。このため、従来プリンタドライバ100は、関数DrvStartPageに含まれるページ情報が示すページを指定して、ページ開始コマンドをプリンタ50に送信する。つまり、例えば、1ページ目の印刷ジョブを示す情報が、ページ情報として関数DrvStartPageに含まれている場合に、従来プリンタドライバ100は、1ページ目を指定して、ページ開始コマンドをプリンタ50に送信する。
さらに、ページ開始コマンドは、関数DrvStartPageに含められている設定情報に応じたコマンドを含む態様で、プリンタ50に送信される。つまり、関数DrvStartPageに含められている設定情報が両面設定情報である場合に、従来プリンタドライバ100は、両面印刷を指定するコマンド(以下、「両面指定コマンド」)を含む態様でページ開始コマンドを、プリンタ50に送信する。また、関数DrvStartPageに含められている設定情報が片面設定情報である場合に、従来プリンタドライバ100は、片面印刷を指定するコマンド(以下、「片面指定コマンド」)を含む態様でページ開始コマンドを、プリンタ50に送信する。
これにより、ページ開始コマンドを受信したプリンタ50では、ページ開始コマンドに含まれる両面指定コマンド若しくは、片面指定コマンドに応じて、各ページの印刷条件が設定される。つまり、プリンタ50が両面指定コマンドを含むページ開始コマンドを受信した場合に、各ページの印刷条件が両面印刷に設定され、プリンタ50が片面指定コマンドを含むページ開始コマンドを受信した場合に、各ページの印刷条件が片面印刷に設定される。
次に、OS28Aは、従来プリンタドライバ100の関数DrvSendPageを呼び出す(S108)。この関数DrvSendPageは、画像データの送信を示す関数であり、関数DrvSendPageの引数には、1ページ分の画像の画像データが含まれている。なお、OS28Aは、上述したように、1ページ毎に区切られた印刷ジョブを、ページ順にプリンタドライバに出力するため、OS28Aは、最初に、1ページ目の画像の画像データを含む関数DrvSendPageを呼び出す。そして、従来プリンタドライバ100は、関数DrvSendPageに含まれる画像データに基づいて印刷用の画像データを作成する(S110)。この際、従来プリンタドライバ100は、先に呼び出されている関数DrvStartPageに含められている設定情報が両面設定情報である場合に、両面印刷に対応する態様の画像データ(以下、「両面印刷用画像データ」と記載する)を作成する。一方、従来プリンタドライバ100は、先に呼び出されている関数DrvStartPageに含められている設定情報が片面設定情報である場合に、片面印刷に対応する態様の画像データ(以下、「片面印刷用画像データ」と記載する)を作成する。
そして、従来プリンタドライバ100は、印刷用画像データを作成すると、作成した印刷用画像データをプリンタ50に送信する(S112)。これにより、プリンタ50は、受信した印刷用画像データに基づく印刷処理を実行する。なお、プリンタ50では、先に受信しているページ開始コマンドに含まれる両面指定コマンド若しくは、片面指定コマンドに応じて、印刷条件が設定されているため、その設定に従って、印刷処理が実行される。つまり、例えば、プリンタ50が両面印刷用画像データを受信した場合には、印刷条件が両面印刷に設定されているため、両面印刷用画像データに基づく画像が、印刷用紙の一方の面に印刷され、その一方の面への画像の印刷が完了すると、印刷用紙のスイッチバックが実行される。
次に、OS28Aは、従来プリンタドライバ100の関数DrvEndPageを呼び出す(S114)。関数DrvEndPageは、印刷ジョブの各ページの終了を示す関数である。そして、従来プリンタドライバは、関数DrvEndPageが呼び出されると、ページ終了コマンドをプリンタ50に送信する(S116)。ページ終了コマンドは、ドキュメントを構成する1ページ以上の画像の各ページの印刷ジョブの終了を示すコマンドである。
次に、OS28Aは、アプリケーション24Aから受け付けたドキュメントの全ページの画像データを、従来プリンタドライバ100に出力したか否かを判断する(S118)。つまり、OS28Aは、全ページの画像データを、関数DrvSendPageに含めて呼び出したか否かを判断する。そして、ドキュメントの全ページの画像データが出力されていない場合(S118:NO)に、S102〜S116の処理が実行される。これにより、ドキュメントを構成する画像が複数ページある場合に、2ページ目以降の印刷処理が実行される。
また、ドキュメントの全ページの画像データが出力されている場合(S118:YES)に、OS28は、従来プリンタドライバ100の関数DrvEndDocを呼び出す(S120)。この関数DrvEndDocは、印刷ジョブの終了を示す関数である。そして、従来プリンタドライバ100は、ジョブ終了コマンドをプリンタ50に送信する(S122)。ジョブ終了コマンドは、ドキュメントの印刷ジョブの終了を示すコマンドである。これにより、従来プリンタドライバ100での処理が完了する。
このような従来プリンタドライバ100の処理において、例えば、ドキュメントが1ページの画像のみにより構成されており、そのドキュメントの印刷条件が両面印刷に設定されている場合に、1ページ目の画像の両面印刷用画像データがプリンタ50に送信され、プリンタ50において、その両面印刷用画像データに基づいて、両面印刷が実行された後に、関数DrvEndDocが呼び出される。つまり、従来プリンタドライバ100の処理では、1ページ目の画像が両面印刷で実行された後に、印刷ジョブの終了が認識される。このように、1ページ目の画像が両面印刷で実行された後に、ドキュメントを構成する画像の総ページ数が1ページであることが認識されるため、印刷設定が両面印刷に設定されている場合に、総ページ数が1ページの画像のドキュメントに対して、片面印刷設定での印刷処理を行うことはできない。また、1ページ目の画像が両面印刷で実行されるため、1ページ目の画像が印刷用紙の一方の面に印刷された後に、スイッチバックが実行されるため、画像が印刷された面が下を向いた状態で、印刷用紙がプリンタ50から排出される。つまり、プリンタ50は、フェイスアップ排出のプリンタであるにも関わらず、印刷面が下を向いた状態で印刷用紙が排出されるため、ユーザが違和感を抱く虞がある。
そこで、本実施例のプリンタドライバ26による処理では、ドキュメントを構成する画像の総ページ数が、2ページ以上であると特定された後に、1ページ目のページ開始コマンドのプリンタ50への送信,1ページ目の印刷用画像データの作成等が、実行される。以下に、プリンタドライバ26の処理について、図3に示すシーケンス図を用いて説明する。
OS28は、アプリケーション24から画像データを受け付けると、プリンタドライバ26の関数DrvEnableSurfaceを呼び出す(S200)。プリンタドライバ26の関数DrvEnableSurfaceに、設定情報が関連付けられている。なお、関数DrvEnableSurface以外の関数にも、設定情報が関連付けられている。そして、プリンタドライバ26は、関数DrvEnableSurfaceが呼び出されると、DrvEnableSurfaceサブルーチンを実行する(S201)。
DrvEnableSurfaceサブルーチンでは、図4(A)に示すように、プリンタドライバ26が、印刷ジョブが両面印刷に設定されているか否かを判断する(S250)。つまり、プリンタドライバ26は、関数DrvEnableSurfaceに含まれる設定情報が、両面設定情報を含んでいるか否かを判断する。この際、関数DrvEnableSurfaceに含まれる設定情報が、両面設定情報を含んでいない場合、つまり、片面設定情報を含んでいる場合に、プリンタドライバ26は、印刷ジョブが片面印刷に設定されており、両面印刷に設定されていないと判断する(S250:NO)。そして、印刷ジョブが片面印刷に設定されていると判断された場合に、プリンタドライバ26は、バンディングを実行するか否かを判断する(S252)。バンディングとは、1ページ分の画像を印刷する際に、1ページ分の画像を複数のバンド(ブロック)に分割し、1のバンド毎に印刷用画像データを作成し、1のバンド毎に印刷を行う手法である。
プリンタドライバ26は、関数DrvEnableSurfaceに含まれる設定情報に基づいて、バンディングを実行するか否かを判断する。例えば、関数DrvEnableSurfaceに含まれる設定情報に、1ページ分の画像を複数のバンドに分割することに適さない設定に関する情報が含まれている場合に、プリンタドライバ26はバンディングを実行しないと判断する。また、プリンタドライバ26は、関数DrvEnableSurfaceに含まれる設定情報だけでなく、プリンタ50のメモリの空き容量に基づいて、バンディングを実行するか否かを判断する。詳しくは、プリンタドライバ26は、プリンタ50と通信し、プリンタ50の空き容量を取得する。そして、取得したプリンタ50の空き容量が、1ページ分の画像の画像データに相当するデータ量より少ない場合に、バンディングを実行すると判断する。一方、取得したプリンタ50の空き容量が、1ページ分の画像の画像データに相当するデータ量より多い場合に、バンディングを実行しないと判断する。
上記手法によりバンディングを実行するか否が判断され、バンディングを実行すると判断されると、プリンタドライバ26は、1バンド分の画像データのサーフェスを生成する(S254)。つまり、1バンド分の画像データを記憶可能な領域を、データ記憶領域34に確保し、その領域を指定可能な情報(以下、「メモリ情報」と記載する)を作成する。続いて、プリンタドライバ26は、バンディング設定を行う(S256)。つまり、プリンタドライバ26は、バンディングを実行することを示す情報(以下、「バンディング情報」と記載する)を生成する。そして、DrvEnableSurfaceサブルーチンが終了する。
また、S250で、関数DrvEnableSurfaceに含まれる設定情報が、両面設定情報を含んでいる場合に、プリンタドライバ26は、印刷ジョブが両面印刷に設定されていると判断(S250:YES)し、S258の処理を実行する。また、S252で、プリンタドライバ26がバンディングを実行しないと判断した場合(S252:NO)にも、S258の処理を実行する。S258では、プリンタドライバ26は、1ページ分の画像データのサーフェスを生成する(S258)。つまり、1ページ分の画像データを記憶可能な領域を、データ記憶領域34に確保し、その領域を指定可能なメモリ情報を作成する。そして、DrvEnableSurfaceサブルーチンが終了する。
このように、DrvEnableSurfaceサブルーチンでは、バンディングが設定されるが、印刷ジョブが片面印刷に設定されている場合にのみ、バンディングが設定され、印刷ジョブが両面印刷に設定されている場合に、バンディングは設定されない。そして、DrvEnableSurfaceサブルーチンが終了すると、プリンタドライバ26は、図3に示すように、メモリ情報をOS28に出力する(S202)。この際、バンディング情報が作成されていれば、プリンタドライバ26は、バンディング情報もOS28に出力する。なお、プリンタドライバ26の各サブルーチンが終了したときに、プリンタドライバ26は、OS28が呼び出した関数が終了したことを示す情報を、OS28に出力する。
次に、プリンタドライバ26の関数DrvStartDoc(ジョブ開始情報の一例)を呼び出す(S204)。プリンタドライバ26は、関数DrvStartDocが呼び出されると関数DrvStartDocが終了したことを示す情報を、OS28に出力する。続いて、OS28は、プリンタドライバ26の関数DrvStartPage(ページ開始情報の一例)を呼び出す(S208)。なお、先に説明したように、従来プリンタドライバ100の関数DrvStartPageには、設定情報とページ情報とが含まれていたが、プリンタドライバ26の関数DrvStartPageには、設定情報は含まれておらず、ページ情報が含まれている。そして、プリンタドライバ26は、関数DrvStartPageが呼び出されると、DrvStartPageサブルーチンを実行する(S210)。
DrvStartPageサブルーチンでは、図5に示すように、プリンタドライバ26が、印刷ジョブが両面印刷に設定されているか否かを判断する(S270)。なお、S270の判断手法は、S250の判断手法と同じであるため、説明を省略する。そして、印刷ジョブが片面印刷に設定されている場合(S270:NO)に、プリンタドライバ26は、ジョブ開始コマンドをプリンタ50に送信する(S272)。そして、プリンタドライバ26は、ページ開始コマンドをプリンタ50に送信する(S274)。なお、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が示すページを指定して、ページ開始コマンドをプリンタ50に送信する。
さらに、ページ開始コマンドには、設定情報に応じたコマンドが含められるため、S274で送信されるページ開始コマンドには、片面指定コマンドが含められている。つまり、S270で判断されているように、印刷ジョブが片面印刷に設定されているため、ページ開始コマンドに、片面印刷を指定する片面指定コマンドが含められている。そして、DrvStartPageサブルーチンが終了する。なお、以降の説明では、印刷ジョブが片面印刷に設定されている場合について説明する。
また、OS28は、図3に示すように、関数DrvStartPageを呼び出した後に、バンディングが設定されているか否かを判断する(S212)。つまり、OS28は、S206でバンディング情報を受け付けているか否かを判断する。そして、OS28は、バンディング情報を受け付けている場合に、バンディングが設定されていると判断し、バンディング情報を受け付けていない場合に、バンディングが設定されていないと判断する。
この際、OS28は、バンディングが設定されていると判断すると(S212:YES)、プリンタドライバ26の関数DrvNextBandを呼び出す(S214)。なお、関数DrvNextBandには、引数として、1バンド分の画像データが含まれている。そして、プリンタドライバ26は、関数DrvNextBandが呼び出されると、DrvNextBandサブルーチンを実行する(S216)。
DrvNextBandサブルーチンでは、プリンタドライバ26は、図4(B)に示すように、印刷用の画像データを作成する(S300)。この際、プリンタドライバ26は、関数DrvNextBandに含まれる1バンド分の画像データに基づいて印刷用の画像データを作成する。なお、印刷ジョブが片面印刷に設定されている場合にのみ、バンディングが設定されるため、S300において、プリンタドライバ26は、片面印刷用画像データを作成する。そして、プリンタドライバ26は、作成した1バンド分の片面印刷用画像データをプリンタ50に送信する(S302)。これにより、DrvNextBandサブルーチンが終了する。
なお、プリンタ50は、受信した印刷用画像データに基づく印刷処理を実行する。つまり、プリンタ50では、S274で送信されたページ開始コマンドに含まれる片面指定コマンドに応じて印刷条件が設定されているため、プリンタ50は、受信した印刷用画像データに基づいて、片面印刷処理を実行し、1バンド分の画像を印刷する。
また、OS28は、図3に示すように、関数DrvNextBandを呼び出すと、1ページ分の画像データをプリンタドライバ26に出力したか否かを判断する(S218)。つまり、OS28は、1ページ分の画像を複数のバンドに分割し、それら複数のバンドの画像の画像データを、全て、関数DrvNextBandに含めて呼び出したか否かを判断する。そして、1ページ分の画像データが出力されていない場合(S214:NO)に、S214,S216の処理が繰り返されることで、1ページ分の画像データがプリンタドライバ26に出力される。これにより、S218で、1ページ分の画像データが出力されたと判断される(S218:YES)。そして、S220に進む。
また、S212で、バンディングが設定されていないと判断されると(S212:NO)、OS28は、プリンタドライバ26の関数DrvSendPageを呼び出す(S230)。なお、関数DrvSendPageには、引数として、1ページ分の画像データが含まれている。そして、プリンタドライバ26は、関数DrvSendPageが呼び出されると、DrvSendPageサブルーチンを実行する(S232)。
DrvSendPageサブルーチンでは、プリンタドライバ26は、図6に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S350)。なお、S350の判断手法は、S250の判断手法と同じであるため、説明を省略する。そして、この説明は、印刷ジョブが片面印刷に設定されている場合の説明であるため、印刷ジョブが片面印刷に設定されていると判断される(S350:NO)。次に、プリンタドライバ26は、関数DrvSendPageに含まれる1ページ分の画像データに基づいて印刷用の画像データを作成する(S352)。なお、S350で判断されているように、印刷ジョブが片面印刷に設定されているため、プリンタドライバ26は、片面印刷用画像データを作成する。そして、プリンタドライバ26は、作成した1ページ分の片面印刷用画像データをプリンタ50に送信する(S354)。これにより、DrvSendPageサブルーチンが終了し、図3に示すように、S220に進む。
なお、プリンタ50は、受信した印刷用画像データに基づく印刷処理を実行する。つまり、プリンタ50では、S274で送信されたページ開始コマンドに含まれる片面指定コマンドに応じて印刷条件が設定されているため、プリンタ50は、受信した印刷用画像データに基づいて、片面印刷処理を実行し、1ページ分の画像を印刷する。
また、S218で1ページ分の画像データが出力されたと判断された場合(S218:YES)、若しくは、S232のDrvSendPageサブルーチンが終了した場合に、OS28は、プリンタドライバ26の関数DrvEndPageを呼び出す(S220)。プリンタドライバ26は、関数DrvEndPageが呼び出されると、DrvEndPageサブルーチンを実行する(S222)。
DrvEndPageサブルーチンでは、プリンタドライバ26は、図7に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S310)。なお、S310の判断手法は、S250の判断手法と同じであるため、説明を省略する。そして、この説明は、印刷ジョブが片面印刷に設定されている場合の説明であるため、印刷ジョブが片面印刷に設定されていると判断される(S310:NO)。そして、プリンタドライバ26は、ページ終了コマンドをプリンタ50に送信する(S312)。これにより、DrvEndPageサブルーチンが終了する。
また、OS28は、図3に示すように、関数DrvEndPageを呼び出した後に、アプリケーション24から受け付けたドキュメントの全ページの画像データを、プリンタドライバ26に出力したか否かを判断する(S224)。つまり、OS28は、全ページの画像データを、関数DrvNextBand若しくは、関数DrvSendPageに含めて呼び出したか否かを判断する。そして、ドキュメントの全ページの画像データが出力されていない場合(S224:NO)に、S208〜S222、若しくは、S208〜S212,S230,S232,S220,S222の処理が繰り返し実行される。これにより、ドキュメントを構成する画像が複数ページある場合に、2ページ目以降の印刷処理が繰り返し実行され、S224で、ドキュメントの全ページ分の画像データが出力されたと判断される(S224:YES)。
そして、OS28は、ドキュメントの全ページ分の画像データが出力されたと判断すると、プリンタドライバ26の関数DrvEndDoc(ジョブ終了情報の一例)を呼び出す(S226)。プリンタドライバ26は、関数DrvEndDocが呼び出されると、DrvEndDocサブルーチンを実行する(S228)。
DrvEndDocサブルーチンでは、プリンタドライバ26は、図8に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S320)。なお、S320の判断手法は、S250の判断手法と同じであるため、説明を省略する。そして、この説明は、印刷ジョブが片面印刷に設定されている場合の説明であるため、印刷ジョブが片面印刷に設定されていると判断される(S320:NO)。そして、プリンタドライバ26は、ジョブ終了コマンドをプリンタ50に送信し(S322)、DrvEndDocサブルーチンが終了する。これにより、印刷ジョブが片面印刷に設定されている場合のプリンタドライバ26での処理が完了する。
次に、印刷ジョブが両面印刷に設定されている場合でのプリンタドライバ26のS210以降の処理、つまり、DrvStartPageサブルーチン以降の処理について説明する。DrvStartPageサブルーチンでは、プリンタドライバ26は、図5に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S270)。ここでの説明は、印刷ジョブが両面印刷に設定されている場合の説明であるため、印刷ジョブが両面印刷に設定されていると判断される(S270:YES)。
次に、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が2ページ目を示しているか否かを判断する(S276)。この説明では、印刷ジョブが両面印刷に設定されている場合の説明において、初めてプリンタドライバ26の関数DrvStartPageが呼び出されているため、関数DrvStartPageに含まれるページ情報は1ページ目を示している。このため、関数DrvStartPageに含まれるページ情報が2ページ目を示していないと判断される(S276:NO)。
次に、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が3ページ目以降を示しているか否かを判断する(S278)。ここでも、関数DrvStartPageに含まれるページ情報は1ページ目を示しているため、関数DrvStartPageに含まれるページ情報は3ページ目以降を示していないと判断される(S278:NO)。これにより、DrvStartPageサブルーチンが終了する。つまり、1ページ目のページ情報を含む関数DrvStartPageが呼び出された場合に、従来プリンタドライバ100は、ジョブ開始コマンドと、1ページ目を指定したページ開始コマンドをプリンタ50に送信したが、プリンタドライバ26は、ジョブ開始コマンドも、1ページ目を指定したページ開始コマンドも、プリンタ50に送信しない。
次に、OS28は、図3に示すように、関数DrvStartPageを呼び出した後に、バンディングが設定されているか否かを判断するが(S212)、上述したように、印刷ジョブが両面印刷に設定されている場合に、バンディングは設定されない。このため、バンディングが設定されていないと判断される(S212:NO)。そして、OS28は、プリンタドライバ26の関数DrvSendPageを呼び出す(S230)。プリンタドライバ26は、関数DrvSendPageが呼び出されると、DrvSendPageサブルーチンを実行する(S232)。
DrvSendPageサブルーチンでは、プリンタドライバ26は、図6に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S350)。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される(S350:YES)。次に、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が2ページ目を示しているか否かを判断する(S356)。ここでも、関数DrvStartPageに含まれるページ情報は1ページ目を示しているため、関数DrvStartPageに含まれるページ情報は2ページを示していないと判断される(S356:NO)。そして、プリンタドライバ26は、1ページ目の画像データをデータ記憶領域34に保存する(S358)。これにより、DrvSendPageサブルーチンが終了する。
つまり、関数DrvSendPageには、1ページ分の画像データが含まれており、この説明では、印刷ジョブが両面印刷に設定されている場合の説明において、初めてプリンタドライバ26の関数DrvSendPageが呼び出されている。このため、関数DrvSendPageに1ページ目の画像データ含まれており、プリンタドライバ26は、その1ページ目の画像データをデータ記憶領域34に保存する。これにより、DrvStartPageサブルーチンが終了する。つまり、1ページ目の画像データを含む関数DrvSendPageが呼び出された場合に、従来プリンタドライバ100は、1ページ目の印刷用画像データを作成し、その印刷用画像データをプリンタ50に送信したが、プリンタドライバ26は、1ページ目の画像データをデータ記憶領域34に記憶し、印刷用画像データの作成及び、画像データのプリンタ50への送信を実行しない。
また、OS28は、図3に示すように、関数DrvSendPageを呼び出した後に、プリンタドライバ26の関数DrvEndPageを呼び出す(S220)。プリンタドライバ26は、関数DrvEndPageが呼び出されると、DrvEndPageサブルーチンを実行する(S222)。DrvEndPageサブルーチンでは、プリンタドライバ26は、図7に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S310)。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される(S310:YES)。
次に、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が2ページ目を示しているか否かを判断する(S314)。ここでも、関数DrvStartPageに含まれるページ情報は1ページ目を示しているため、関数DrvStartPageに含まれるページ情報は2ページを示していないと判断される(S314:NO)。これにより、DrvStartPageサブルーチンが終了する。
また、OS28は、図3に示すように、関数DrvEndPageを呼び出した後に、アプリケーション24から受け付けたドキュメントの全ページの画像データを、プリンタドライバ26に出力したか否かを判断する(S224)。つまり、OS28は、全ページの画像データを、関数DrvSendPageに含めて呼び出したか否かを判断する。この際、例えば、OS28がアプリケーション24から受け付けたドキュメントが2ページ以上の画像を含んでいる場合に、上記説明で、OS28は、1ページ目の画像データを含む関数DrvSendPageしか呼び出していない。このため、S224で、OS28は、アプリケーション24から受け付けたドキュメントの全ページの画像データを、プリンタドライバ26に出力していないと判断する(S224:NO)。
そして、全ページの画像データが出力されていない場合(S224:NO)に、OS28は、2ページ目を示すページ情報を含む関数DrvStartPageを呼び出す(S208)。そして、プリンタドライバ26は、関数DrvStartPageが呼び出されると、DrvStartPageサブルーチンを実行する(S210)。DrvStartPageサブルーチンでは、プリンタドライバ26は、図5に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S270)。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される(S270:YES)。
次に、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が2ページ目を示しているか否かを判断する(S276)。この際、上述したように、関数DrvStartPageに2ページ目を示すページ情報が含まれているため、関数DrvStartPageに含まれるページ情報が2ページ目を示していると判断される(S276:YES)。
次に、プリンタドライバ26は、ジョブ開始コマンドをプリンタ50に送信する(S280)。続いて、プリンタドライバ26は、1ページ目に対応するページ開始コマンドをプリンタ50に送信する(S282)。また、ページ開始コマンドには、関数DrvEnableSurfaceに含まれる設定情報に応じたコマンドが含められるため、S282で送信されるページ開始コマンドには、両面指定コマンドが含められている。つまり、従来プリンタドライバ100は、1ページ目を示すページ情報を含む関数DrvStartPageが呼び出された場合に、ジョブ開始コマンド及び、1ページ目に対応するページ開始コマンドをプリンタ50に送信するが、プリンタドライバは、2ページ目を示すページ情報を含む関数DrvStartPageが呼び出された場合に、ジョブ開始コマンド及び、1ページ目に対応するページ開始コマンドをプリンタ50に送信する。
また、プリンタドライバ26は、1ページ目に対応するページ開始コマンドをプリンタ50に送信すると、1ページ目の画像の印刷用画像データを作成する(S284)。なお、1ページ目の画像の画像データは、データ記憶領域34に保存されているため、プリンタドライバ26は、データ記憶領域34に保存されている1ページ目の画像データに基づいて、印刷用画像データを作成する。この際、印刷ジョブは両面印刷に設定されているため、プリンタドライバ26は、両面印刷用画像データを作成する。そして、プリンタドライバ26は、作成した1ページ分の両面印刷用画像データをプリンタ50に送信する(S286)。つまり、従来プリンタドライバ100は、1ページ目の関数DrvSendPageが呼び出された場合に、1ページ目の印刷用画像データを作成し、プリンタ50に送信するが、プリンタドライバは、2ページ目の関数DrvStartPageが呼び出された場合に、1ページ目の印刷用画像データを作成し、プリンタ50に送信する。
また、プリンタドライバ26は、1ページ目の印刷用画像データをプリンタ50に送信すると、1ページ目に対応するページ終了コマンドをプリンタ50に送信する(S288)。そして、プリンタドライバ26は、2ページ目に対応するページ開始コマンドをプリンタ50に送信する(S290)。これにより、DrvStartPageサブルーチンが終了する。
また、OS28は、図3に示すように、関数DrvStartPageを呼び出した後に、バンディングが設定されているか否かを判断するが(S212)、上述したように、印刷ジョブが両面印刷に設定されている場合に、バンディングは設定されない。このため、バンディングが設定されていないと判断される(S212:NO)。そして、OS28は、プリンタドライバ26の関数DrvSendPageを呼び出す(S230)。プリンタドライバ26は、関数DrvSendPageが呼び出されると、DrvSendPageサブルーチンを実行する(S232)。
DrvSendPageサブルーチンでは、プリンタドライバ26は、図6に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S350)。そして、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される(S350:YES)。次に、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が2ページ目以降を示しているか否かを判断する(S356)。そして、2ページ目を示すページ情報を含む関数DrvStartPageが、既に呼び出されているため、関数DrvStartPageに含まれるページ情報は2ページ目以降を示していると判断される(S356:YES)。
そして、プリンタドライバ26は、印刷用画像データを作成する(S360)。この際、プリンタドライバ26は、関数DrvSendPageに含まれる画像データ、つまり、2ページ目の画像の画像データに基づいて印刷用の画像データを作成する。なお、印刷ジョブは両面印刷に設定されているため、プリンタドライバ26は、両面印刷用画像データを作成する。そして、プリンタドライバ26は、作成した2ページ目の両面印刷用画像データをプリンタ50に送信する(S362)。これにより、DrvSendPageサブルーチンが終了する。
また、OS28は、図3に示すように、関数DrvSendPageを呼び出した後に、プリンタドライバ26の関数DrvEndPageを呼び出す(S220)。プリンタドライバ26は、関数DrvEndPageが呼び出されると、DrvEndPageサブルーチンを実行する(S222)。DrvEndPageサブルーチンでは、プリンタドライバ26は、図7に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S310)。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される(S310:YES)。
次に、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が2ページ目以降を示しているか否かを判断する(S314)。この際、2ページ目を示すページ情報を含む関数DrvStartPageが、既に呼び出されているため、関数DrvStartPageに含まれるページ情報は2ページ以降を示していると判断される(S314:YES)。そして、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が示すページつまり、2ページ目に対応するページ終了コマンドをプリンタ50に送信する(S312)。これにより、DrvEndPageサブルーチンが終了する。
また、OS28は、図3に示すように、関数DrvEndPageを呼び出した後に、アプリケーション24から受け付けたドキュメントの全ページの画像データを、プリンタドライバ26に出力したか否かを判断する(S224)。この際、例えば、OS28がアプリケーション24から受け付けたドキュメントが3ページ以上の画像を含んでいる場合に、上記説明で、OS28は、1ページ目の画像データを含む関数DrvSendPageおよび、2ページ目の画像データを含む関数DrvSendPageしか呼び出していない。このため、S224で、OS28は、アプリケーション24から受け付けたドキュメントの全ページの画像データを、プリンタドライバ26に出力していないと判断する(S224:NO)。
そして、OS28は、3ページ目を示すページ情報を含む関数DrvStartPageを呼び出す(S208)。この際、プリンタドライバ26は、DrvStartPageサブルーチンを実行する(S210)。DrvStartPageサブルーチンでは、プリンタドライバ26は、図5に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S270)。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される(S270:YES)。
次に、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が2ページ目を示しているか否かを判断する(S276)。この際、上述したように、関数DrvStartPageに3ページ目を示すページ情報が含まれているため、関数DrvStartPageに含まれるページ情報が2ページ目を示していると判断されない(S276:NO)。続いて、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が3ページ目以降を示しているか否かを判断する(S278)。この際、上述したように、関数DrvStartPageに3ページ目を示すページ情報が含まれているため、関数DrvStartPageに含まれるページ情報が3ページ目以降を示していると判断される(S278:YES)。そして、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が示すページ、つまり、3ページ目に対応するページ開始コマンドをプリンタ50に送信する(S292)。これにより、DrvStartPageサブルーチンが終了する。
なお、DrvStartPageサブルーチンが終了した後に、プリンタドライバ26及び、OS28は、図3に示すように、S212,S230,S232,S220,S222の処理を実行するが、これらの処理は、先に説明した処理と同様の処理であるため、説明を省略する。
そして、OS28は、S222の処理、つまり、関数DrvEndPageを呼び出した後に、アプリケーション24から受け付けたドキュメントの全ページの画像データを、プリンタドライバ26に出力したか否かを判断する(S224)。この際、例えば、OS28がアプリケーション24から受け付けたドキュメントが4ページ以上の画像を含んでいる場合に、OS28は、全ページの画像データを、プリンタドライバ26に出力していないと判断し(S224:NO)、OS28は、ドキュメントの全ページの画像データをプリンタドライバ26に出力するまで、S208〜S212,S230,S232,S220,S222の処理を繰り返し実行する。そして、OS28が、ドキュメントの全ページの画像データをプリンタドライバ26に出力すると、S224で、全ページの画像データを、プリンタドライバ26に出力したと判断する(S224:YES)。
続いて、OS28は、プリンタドライバ26の関数DrvEndDocを呼び出す(S226)。プリンタドライバ26は、関数DrvEndDocが呼び出されると、DrvEndDocサブルーチンを実行する(S228)。DrvEndDocサブルーチンでは、プリンタドライバ26は、図8に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S320)。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される(S320:YES)。次に、OS28は、ドキュメントを構成する画像の総ページ数が1ページであるか否かを判断する(S324)。
上記説明において、2ページ目以降のページ情報を含む関数DrvStartPageが呼び出されているため、プリンタドライバ26は、ドキュメントを構成する画像の総ページ数が1ページ以上であると判断する(S324:NO)。そして、プリンタドライバ26は、ジョブ終了コマンドをプリンタ50に送信し(S322)、DrvEndDocサブルーチンが終了する。これにより、印刷ジョブが両面印刷に設定されており、印刷対象のドキュメントを構成する画像の総ページ数が2ページ以上である場合のプリンタドライバ26での処理が完了する。
次に、印刷ジョブが両面印刷に設定されており、印刷対象のドキュメントを構成する画像の総ページ数が1ページである場合の処理について説明する。ちなみに、印刷ジョブが両面印刷に設定されており、印刷対象のドキュメントを構成する画像の総ページ数が1ページである場合には、1ページ目の関数DrvStartPageが呼び出された際に、プリンタドライバ26は、DrvStartPageサブルーチンにおいて、ジョブ開始コマンドおよび、1ページ目に対応するページ開始コマンドをプリンタ50に送信していない。また、1ページ目の関数DrvSendPageが呼び出された際に、プリンタドライバ26は、DrvSendPageサブルーチンにおいて、1ページ目の画像データをデータ記憶領域34に記憶させており、1ページ目の印刷用画像データの作成及び、印刷用画像データのプリンタ50への送信を行っていない。
このような前提において、OS28は、図3に示すように、1ページ目の関数DrvSendPageを呼び出した後に、プリンタドライバ26の関数DrvEndPageを呼び出す(S220)。プリンタドライバ26は、関数DrvEndPageが呼び出されると、DrvEndPageサブルーチンを実行する(S222)。DrvEndPageサブルーチンでは、プリンタドライバ26は、図7に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S310)。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される(S310:YES)。
次に、プリンタドライバ26は、関数DrvStartPageに含まれるページ情報が2ページ目以降を示しているか否かを判断する(S314)。この説明では、1ページ目の関数DrvStartPageが呼び出されているが、2ページ目の関数DrvStartPageは呼び出されていないため、関数DrvStartPageに含まれるページ情報は、1ページ目を示しており、2ページ目以降を示していないと判断される(S314:NO)。そして、プリンタドライバ26は、ページ終了コマンドをプリンタ50に送信することなく、DrvEndPageサブルーチンが終了する。
また、OS28は、図3に示すように、関数DrvEndPageを呼び出した後に、アプリケーション24から受け付けたドキュメントの全ページの画像データを、プリンタドライバ26に出力したか否かを判断する(S224)。この説明では、ドキュメントを構成する画像の総ページ数が1ページであり、1ページ目の画像データを含む関数DrvSendPageが既に呼び出されているため、OS28は、アプリケーション24から受け付けたドキュメントの全ページの画像データを、プリンタドライバ26に出力していると判断する(S224:YES)。
そして、OS28は、プリンタドライバ26の関数DrvEndDocを呼び出す(S226)。プリンタドライバ26は、関数DrvEndDocが呼び出されると、DrvEndDocサブルーチンを実行する(S228)。DrvEndDocサブルーチンでは、プリンタドライバ26は、図8に示すように、印刷ジョブが両面印刷に設定されているか否かを判断する(S320)。この際、印刷ジョブが両面印刷に設定されているため、印刷ジョブが両面印刷に設定されていると判断される(S320:YES)。次に、OS28は、ドキュメントを構成する画像の総ページ数が1ページであるか否かを判断する(S324)。この説明では、ドキュメントを構成する画像の総ページ数が1ページであり、1ページ目の画像データを含む関数DrvSendPageは呼び出されているが、2ページ目の画像データを含む関数DrvSendPageが呼び出されていない状態で、関数DrvEndDocが呼び出されているため、OS28は、ドキュメントを構成する画像の総ページ数が1ページであると判断する(S324:YES)。
そして、プリンタドライバ26は、ジョブ開始コマンドをプリンタ50に送信する(S326)。続いて、プリンタドライバ26は、1ページ目に対応するページ開始コマンドをプリンタ50に送信する(S328)。なお、設定情報が両面印刷に設定されているが、ドキュメントを構成する画像の総ページ数が1ページであるため、プリンタドライバ26は、片面指定コマンドを含めたページ開始コマンドをプリンタ50に送信する。次に、プリンタドライバ26は、1ページ目の画像の印刷用画像データを作成する(S330)。なお、1ページ目の画像の画像データは、DrvSendPageサブルーチンでデータ記憶領域34に保存されているため、プリンタドライバ26は、データ記憶領域34に保存されている1ページ目の画像データに基づいて、印刷用画像データを作成する。この際、印刷ジョブが両面印刷に設定されているが、ドキュメントを構成する画像の総ページ数が1ページであるため、プリンタドライバ26は、片面印刷用画像データを作成する。そして、プリンタドライバ26は、作成した1ページ目の片面印刷用画像データをプリンタ50に送信する(S332)。続いて、プリンタドライバ26は、1ページ目に対応するページ終了コマンドをプリンタ50に送信する(S334)。そして、プリンタドライバ26は、ジョブ終了コマンドをプリンタ50に送信する(S322)。これにより、DrvEndDocサブルーチンが終了する。
このように、プリンタドライバ26での処理では、設定情報が両面印刷に設定されている際に、1ページ目の関数DrvStartPage及び、1ページ目の関数DrvSendPageが呼び出された場合に、プリンタドライバ26は、ジョブ開始コマンド、及び1ページ目に対応するページ開始コマンドのプリンタ50への送信と、1ページ目の印刷用画像データの作成と、1ページ目の印刷用画像データのプリンタ50への送信を行っていない。そして、1ページ目の関数DrvSendPageが呼び出された後に、2ページ目の関数DrvSendPageが呼び出されず、関数DrvEndDocが呼び出された場合に、プリンタドライバ26は、ジョブ開始コマンド、及び1ページ目に対応するページ開始コマンドのプリンタ50への送信と、1ページ目の印刷用画像データの作成と、1ページ目の印刷用画像データのプリンタ50への送信とを行う。
この際、プリンタドライバ26は、片面指定コマンドを含めたページ開始コマンドのプリンタ50への送信と、片面印刷用画像データの作成と、片面印刷用画像データのプリンタ50への送信とを行う。つまり、プリンタドライバ26は、ドキュメントを構成する画像の総ページ数が1ページである場合に、片面指定コマンドを含めたページ開始コマンドのプリンタ50への送信と、片面印刷用画像データの作成と、片面印刷用画像データのプリンタ50への送信とを行う。これにより、設定情報が両面印刷に設定されている場合であっても、総ページ数が1ページの画像のドキュメントに対して、片面印刷設定での印刷処理を行うことができる。また、総ページ数が1ページの画像が片面印刷で実行されるため、1ページ目の画像が印刷用紙の一方の面に印刷された後に、スイッチバックは実行されず、画像が印刷された面が上を向いた状態で、印刷用紙がプリンタ50から排出される。これにより、従来プリンタドライバ100が用いられた場合のように、印刷面が下を向いた状態で印刷用紙が排出されることを防止できる。
一方、1ページ目の関数DrvSendPageが呼び出された後に、2ページ目の関数DrvStartPageが呼び出された場合に、プリンタドライバ26は、ジョブ開始コマンド、及び1ページ目に対応するページ開始コマンドのプリンタ50への送信と、1ページ目の印刷用画像データの作成と、1ページ目の印刷用画像データのプリンタ50への送信とを行う。この際、プリンタドライバ26は、両面指定コマンドを含めたページ開始コマンドのプリンタ50への送信と、両面印刷用画像データの作成と、両面印刷用画像データのプリンタ50への送信とを行う。つまり、プリンタドライバ26は、2ページ目の印刷ジョブがあると認識した後に、両面指定コマンドを含めたページ開始コマンドのプリンタ50への送信と、両面印刷用画像データの作成と、両面印刷用画像データのプリンタ50への送信とを行う。これにより、総ページ数が2ページ以上の画像のドキュメントに対して、設定条件に従って、両面印刷設定での印刷処理を行うことができる。
また、設定情報が両面印刷に設定されており、ドキュメントを構成する画像の総ページ数が2ページ以上ある場合において、2ページ目以降の関数DrvStartPageが呼び出されると、プリンタドライバ26は、当該ページに対応するページ開始コマンドをプリンタ50に送信し、2ページ目以降の関数DrvSendPageが呼び出されると、プリンタドライバ26は、当該ページに対応する印刷用画像データを作成し、印刷用画像データをプリンタ50に送信する。これにより、プリンタドライバ26は、2ページ目以降の両面印刷処理時において、呼び出された関数に応じた処理をレスポンス良く実行することができる。
また、設定情報が片面印刷に設定されている場合において、ページ毎に関数DrvStartPageが呼び出されると、プリンタドライバ26は、当該ページに対応するページ開始コマンドをプリンタ50に送信し、ページ毎に関数DrvSendPageが呼び出されると、プリンタドライバ26は、当該ページに対応する印刷用画像データを作成し、印刷用画像データをプリンタ50に送信する。これにより、片面印刷処理時において、プリンタドライバ26は、呼び出された関数に応じた処理をレスポンス良く実行することができる。
また、設定情報が片面印刷に設定されている場合には、設定条件,プリンタ50のメモリなどの条件が満たされた場合に、バンディングが実行される。バンディングでは、プリンタドライバ26が、1ページ分の画像データの受け付けを待つことなく、1ページのうちの1バンド分の画像データを受け付けることで、その1バンド分の画像データに基づいて印刷用画像データを作成し、その1バンド分の印刷用画像データをプリンタ50に送信する。これにより、プリンタ50での印刷処理の開始が速くなり、FPOTを短くすることが可能となる。
一方、設定情報が両面印刷に設定されている場合には、バンディングは実行されない。これは、プリンタドライバ26での両面印刷処理時には、バンディングを実行することで、FPOTが長くなる虞があるためである。詳しくは、バンディングが実行される場合に、関数DrvNextBandが複数回、呼び出され、バンディングが実行されない場合に、関数DrvSendPageが1回、呼び出される。また、プリンタドライバ26での両面印刷処理時において、1ページ目の関数DrvSendPageが呼び出されても、1ページ目の印刷用画像データは、プリンタ50に送信されず、2ページ目の関数DrvSendPageが呼び出された場合、若しくは、2ページ目の関数DrvSendPageが呼び出されず、関数DrvEndDocが呼び出された場合に、1ページ目の印刷用画像データが、プリンタ50に送信される。このため、バンディングが実行されない場合に、1ページ目の関数DrvSendPageが1回呼び出された後に、2ページ目の関数DrvSendPageの呼び出し、若しくは、関数DrvEndDocの呼び出しに伴って、1ページ目の印刷用画像データが、プリンタ50に送信される。一方、バンディングが実行される場合に、1ページ目の関数DrvNextBandが複数回呼び出された後に、2ページ目の関数DrvSendPageの呼び出し、若しくは、関数DrvEndDocの呼び出しに伴って、1ページ目の印刷用画像データが、プリンタ50に送信される。つまり、1ページ目の印刷用画像データが、プリンタ50に送信されるためには、バンディングが実行される場合に、関数DrvNextBandが複数回呼び出される必要があり、バンディングが実行されない場合に、関数DrvSendPageの呼び出しは1回でよい。このため、プリンタドライバ26での両面印刷処理時には、バンディングを実行することで、FPOTが長くなる虞がある。そこで、プリンタドライバ26では、設定情報が両面印刷に設定されている場合に、バンディングは実行されず、FPOTの短縮が図られている。
また、上述したように、プリンタドライバ26での処理では、印刷設定が両面印刷に設定されているが、OS28から1ページ分の画像データしかプリンタドライバ26に出力されなかったら、その1ページ分の画像に対して、片面印刷処理が実行される。ただし、ドキュメントを構成する画像の総ページ数が奇数である場合に、最終ページの画像は、印刷用紙の一方の面に印刷され、その印刷用紙の他方の面に、画像は印刷されないが、この最終ページの画像に対して、両面印刷処理が実行される。つまり、最終ページの画像に対して、片面印刷処理は実行されない。これは、最終ページの画像に対して、片面印刷処理が実行されると、最終ページの1つ前のページの画像までは両面印刷用の画質なのに、最終ページの画像だけ片面印刷用の画質になり、違和感が発生するためである。このように、ドキュメントを構成する画像の総ページ数が奇数である場合において、全てのページの画像に対して両面印刷処理を実行することで、上記違和感の発生を防止できる。
さらに言えば、例えば3ページ目が最終ページの場合に、本実施形態では、3ページ目の画像が両面印刷設定で印刷されるため、3ページ目の画像が印刷された後に、スイッチバックされ、3ページ目の画像の印刷面が下を向いた状態で、印刷用紙が排出される。また、3ページ目の画像が印刷された印刷用紙は、1ページ目の画像と2ページ目の画像とが両面に印刷された印刷用紙の上に排出される。なお、1ページ目の画像と2ページ目の画像とが両面に印刷された印刷用紙は、1ページ目の印刷画像を下に向け、2ページ目の印刷画像を上に向けた状態で排出される。つまり、1枚目に排出された印刷用紙の下面に、1ページ目の画像が印刷され、その印刷用紙の上面に、2ページ目の画像が印刷され、2枚目に排出された印刷用紙の下面に、3ページ目の画像が印刷されている。そして、2枚目に排出された上面は白紙となる。これにより、3ページ分の画像が冊子のように連続し、自然である。
一方、3ページ目の画像が片面印刷設定で印刷されると、3ページ目の画像が印刷された後に、スイッチバックされず、3ページ目の画像の印刷面が上を向いた状態で、印刷用紙が排出される。このため、1枚目に排出された印刷用紙の下面に、1ページ目の画像が印刷され、その印刷用紙の上面に、2ページ目の画像が印刷され、2枚目に排出された印刷用紙の上面に、3ページ目の画像が印刷されている。そして、2枚目に排出された印刷用紙の下面は白紙となる。これにより、2枚の印刷用紙を冊子のように見た場合、2ページ目と3ページ目との間に白紙が存在するように感じるため、不自然である。このことからも、最終ページの画像に対して、両面印刷処理を実行することが好ましい。
なお、S282、S328を実行するCPU12は、送信手段の一例である。S284,S300,S330,S352,S360を実行するCPU12は、作成手段の一例である。S358を実行するCPU12は、記憶制御手段の一例である。
<実施例の効果>
上記した実施形態によれば、以下の効果を奏する。
プリンタドライバ26は、設定情報が両面印刷に設定されている場合に、1ページ目の画像データを含む関数DrvSendPageが呼び出された後に、2ページ目の関数DrvStartPageが呼び出されることを条件として、1ページ目の画像の印刷用画像データを作成する。これにより、ドキュメントを構成する画像の総ページ数が2ページ以上であることが解ってから、印刷用画像データを作成することができる。
プリンタドライバ26は、設定情報が両面印刷に設定されている場合に、1ページ目の画像データを含む関数DrvSendPageが呼び出されると、その1ページ目の画像データをデータ記憶領域34に保存する。そして、2ページ目の関数DrvStartPageが呼び出されることを条件として、1ページ目の画像の印刷用画像データを作成する。これにより、1ページ目の画像データを消去することなく、1ページ目の画像データに基づく画像を印刷できる。
プリンタドライバ26は、設定情報が両面印刷に設定されている場合に、2ページ目の画像データを含む関数DrvSendPageが呼び出された後に、3ページ目の関数DrvStartPageが呼び出される前に、2ページ目の画像の印刷用画像データを作成する。これにより、2ページ目の印刷用画像データを早期に作成し、2ページ目の画像の印刷処理を早期に実行できる。
プリンタドライバ26は、設定情報が両面印刷に設定されており、両面指定コマンドを含むページ開始コマンドをプリンタ50に送信している場合に、1ページ目の画像データを含む関数DrvSendPageが呼び出された後に、2ページ目の関数DrvStartPageが呼び出されることを条件として、1ページ目の画像の両面印刷用画像データを作成する。一方、プリンタドライバ26は、設定情報が両面印刷に設定されているが、片面指定コマンドを含むページ開始コマンドをプリンタ50に送信している場合に、1ページ目の画像データを含む関数DrvSendPageが呼び出された後に、2ページ目の関数DrvStartPageが呼び出されなくても、1ページ目の画像の片面印刷用画像データを作成する。これにより、プリンタドライバ26は、指定コマンドに応じた印刷用画像データを作成できる。
プリンタドライバ26は、設定情報が両面印刷に設定されている場合に、2ページ目以降の画像の画像データを含む関数DrvSendPageが呼び出された際に、その関数DrvSendPageに含まれる画像データが、奇数ページの画像データか、偶数ページの画像データかに係らず、その画像データに基づいて両面印刷用画像データを作成する。これにより、最終ページの1つ前のページの画像までは両面印刷用の画質なのに、最終ページの画像だけ片面印刷用の画質になることを防止できる。
プリンタドライバ26は、設定情報が片面印刷に設定されている場合に、1ページ目の関数DrvStartPageが呼び出された際に、1ページ目に対応するページ開始コマンドをプリンタ50に送信し、1ページ目の関数DrvSendPageが呼び出された際に、2ページ目の関数DrvStartPageが呼び出されなくても、1ページ目の印刷用画像データを作成する。これにより、片面印刷処理を早期に実行できる。
プリンタドライバ26は、両面指定コマンド、若しくは、片面指定コマンドをページ開始コマンドに含めて、プリンタ50に送信する。これにより、設定情報が両面印刷と片面印刷との何れに設定されているかを、プリンタ50に適切に通知できる。
プリンタドライバ26は、設定情報が片面印刷に設定されている場合に、バンディング情報をOS28に出力するが、設定情報が両面印刷に設定されている場合に、バンディング情報をOS28に出力しない。つまり、設定情報が片面印刷に設定されている場合にのみ、バンディングが実行され、設定情報が両面印刷に設定されている場合には、バンディングが実行されない。これにより、両面印刷処理時におけるFPOTの短縮を図ることができる。
なお、本発明は、上記実施形態に限定されるものではなく、当業者の知識に基づいて種々の変更、改良を施した種々の態様で実施することが可能である。具体的には、例えば、上記実施形態では、プリンタドライバ26は、両面指定コマンド、若しくは、片面指定コマンドをページ開始コマンドに含めて、プリンタ50に送信しているが、両面指定コマンド、若しくは、片面指定コマンドをジョブ開始コマンドに含めて、プリンタ50に送信してもよい。
また、上記実施形態では、プリンタドライバ26は、1ページ目の関数DrvStartPageが呼び出された以降に、ジョブ開始コマンドをプリンタ50に送信しているが、関数DrvStartDocが呼び出された際に、ジョブ開始コマンドをプリンタ50に送信してもよい。つまり、DrvStartDocサブルーチン実行時に、プリンタドライバ26は、ジョブ開始コマンドをプリンタ50に送信してもよい。ただし、この場合には、ジョブ開始コマンドに、両面指定コマンド、若しくは、片面指定コマンドを含めてはいけない。
また、上記実施形態では、CPU12によって図3乃至図8に示す処理が実行される例を説明したが、これら処理は、CPU12に限らず、ASICや他の論理集積回路により実行されてもよいし、これら処理が、CPU等やASIC、他の論理集積回路が協働することにより実行されてもよい。
10:PC、12:CPU、20:ネットワークI/F、26:プリンタドライバ、28:OS、50:プリンタ

Claims (11)

  1. プリンタと通信可能な通信インタフェースを備える情報処理装置のコンピュータが読み取り可能な前記プリンタのプリンタドライバであって、
    前記情報処理装置にインストールされているオペレーティングシステムは、1ページ以上の画像により構成されるドキュメントの印刷ジョブであり且つ1ページ毎に区切られた印刷ジョブを前記プリンタドライバに出力するように構成され、
    前記オペレーティングシステムは、前記印刷ジョブの各ページの開始を示すページ開始情報を前記プリンタドライバに出力し且つ、前記印刷ジョブの終了を示すジョブ終了情報を前記プリンタドライバに出力するように構成され、
    前記オペレーティングシステムは、前記印刷ジョブを、両面印刷であることを指定する両面指定情報と片面印刷であることを指定する片面指定情報との何れかに関連した態様で前記プリンタドライバに出力するように構成されており、
    前記コンピュータを、
    前記オペレーティングシステムにより出力された前記印刷ジョブが、前記両面指定情報と関連づいている場合に、
    前記印刷ジョブの1ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときには、前記1ページ目に対応するページ開始コマンドを前記プリンタに送信せず、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときに、前記1ページ目に対応するページ開始コマンドを両面印刷であることを指定する両面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信し、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けることなく、前記ジョブ終了情報を前記オペレーティングシステムから受け付けたときに、前記1ページ目に対応するページ開始コマンドを片面印刷であることを指定する片面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信する、送信手段として機能させることを特徴とするプリンタドライバ。
  2. 前記オペレーティングシステムは、1ページ毎に区切られた印刷ジョブに、当該ページの画像の画像データを含めて前記プリンタドライバに出力するように構成され、
    前記コンピュータを、
    1ページ毎に区切られた印刷ジョブに含まれる当該ページの画像の画像データを前記オペレーティングシステムから受け付けた場合に、当該画像データに基づいて印刷用画像データを作成する作成手段として機能させ、
    前記送信手段が、前記1ページ目に対応するページ開始コマンドを前記両面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信している場合に、
    前記作成手段は、
    1ページ目の印刷ジョブに含まれる1ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたことを条件として、前記1ページ目の画像の画像データに基づいて印刷用画像データを作成することを特徴とする請求項1に記載のプリンタドライバ。
  3. 前記コンピュータを、
    1ページ目の印刷ジョブに含まれる1ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記1ページ目の画像の画像データを、前記情報処理装置のメモリに記憶させる記憶制御手段として機能させ、
    前記作成手段は、
    1ページ目の印刷ジョブに含まれる1ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたことを条件として、前記メモリに記憶されている1ページ目の画像の画像データに基づいて印刷用画像データを作成することを特徴とする請求項2に記載のプリンタドライバ。
  4. 前記作成手段は、
    2ページ目の印刷ジョブに含まれる2ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記印刷ジョブの3ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けなくても、前記2ページ目の画像の画像データに基づいて印刷用画像データを作成することを特徴とする請求項2または3に記載のプリンタドライバ。
  5. 前記送信手段が、前記1ページ目に対応するページ開始コマンドを前記両面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信している場合に、
    前記作成手段は、
    1ページ目の印刷ジョブに含まれる1ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたことを条件として、前記1ページ目の画像の画像データに基づいて両面印刷に対応する態様の画像データである両面印刷用画像データを作成し、
    前記送信手段が、前記1ページ目に対応するページ開始コマンドを前記片面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信している場合に、
    前記作成手段は、
    1ページ目の印刷ジョブに含まれる1ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けなくても、前記1ページ目の画像の画像データに基づいて片面印刷に対応する態様の画像データである片面印刷用画像データを作成することを特徴とする請求項2乃至4の何れか1項に記載のプリンタドライバ。
  6. 前記送信手段が、前記1ページ目に対応するページ開始コマンドを前記両面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信している場合に、
    前記作成手段は、
    2ページ目以降の印刷ジョブに含まれる2ページ目以降の画像の画像データを前記オペレーティングシステムから受け付けた場合に、受付けた2ページ目以降の画像の画像データが、奇数ページの画像データか、偶数ページの画像データかに係らず、受付けた2ページ目以降の画像の画像データに基づいて前記両面印刷用画像データを作成することを特徴とする請求項5に記載のプリンタドライバ。
  7. 前記オペレーティングシステムにより出力された前記印刷ジョブが、前記片面指定情報と関連づいている場合に、
    前記送信手段は、
    前記印刷ジョブの1ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときに、前記1ページ目に対応するページ開始コマンドを前記プリンタに送信し、
    前記作成手段は、
    1ページ目の印刷ジョブに含まれる1ページ目の画像の画像データを前記オペレーティングシステムから受け付けた場合に、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けなくても、前記1ページ目の画像の画像データに基づいて印刷用画像データを作成することを特徴とする請求項2乃至6の何れか1項に記載のプリンタドライバ。
  8. 前記送信手段は、
    前記オペレーティングシステムにより出力された前記印刷ジョブが、前記両面指定情報と関連づいている場合に、
    前記印刷ジョブの1ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときには、前記1ページ目に対応するページ開始コマンドを前記プリンタに送信せず、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときに、前記両面指定コマンドを含む態様で前記1ページ目に対応するページ開始コマンドを前記通信インタフェースを介して前記プリンタに送信し、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けることなく、前記ジョブ終了情報を前記オペレーティングシステムから受け付けたときに、前記片面指定コマンドを含む態様で前記1ページ目に対応するページ開始コマンドを前記通信インタフェースを介して前記プリンタに送信することを特徴とする請求項1乃至7の何れか1項に記載のプリンタドライバ。
  9. 前記オペレーティングシステムは、前記印刷ジョブの開始を示すジョブ開始情報を前記プリンタドライバに出力し、前記ジョブ開始情報を出力したのちに、前記ページ開始情報を前記プリンタドライバに出力するように構成され、
    前記送信手段は、
    前記オペレーティングシステムにより出力された前記印刷ジョブが、前記両面指定情報と関連づいている場合に、
    前記ジョブ開始情報を前記オペレーティングシステムから受け付けた後に、前記印刷ジョブの1ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときには、前記印刷ジョブに対応するジョブ開始コマンドと、前記1ページ目に対応するページ開始コマンドとを前記プリンタに送信せず、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときに、前記両面指定コマンドを含む態様で前記ジョブ開始コマンドを前記通信インタフェースを介して前記プリンタに送信した後に、前記1ページ目に対応するページ開始コマンドを、前記通信インタフェースを介して前記プリンタに送信し、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けることなく、前記ジョブ終了情報を前記オペレーティングシステムから受け付けたときに、前記片面指定コマンドを含む態様で前記ジョブ開始コマンドを前記通信インタフェースを介して前記プリンタに送信した後に、前記1ページ目に対応するページ開始コマンドを前記通信インタフェースを介して前記プリンタに送信し、前記プリンタに送信することを特徴とする請求項1乃至7の何れか1項に記載のプリンタドライバ。
  10. 前記コンピュータを、
    前記オペレーティングシステムにより出力された前記印刷ジョブに対してバンディングを実行するか否かを判断する判断手段と、
    前記判断手段によりバンディングを実行すると判断された場合に、バンディングの実行を示す情報を、前記オペレーティングシステムに出力する出力手段と、
    して機能させ、
    前記判断手段は、
    前記オペレーティングシステムにより出力された前記印刷ジョブが、前記片面指定情報と関連づいている場合に、前記印刷ジョブに対してバンディングを実行するか否かを判断し、
    前記オペレーティングシステムにより出力された前記印刷ジョブが、前記両面指定情報と関連づいている場合に、前記印刷ジョブに対してバンディングを実行するか否かを判断しないことを特徴とする請求項1乃至9の何れか1項に記載のプリンタドライバ。
  11. プリンタと通信可能な通信インタフェースと、コントローラとを備え、オペレーティングシステムと、前記プリンタのプリンタドライバとがインストールされた情報処理装置であって、
    前記オペレーティングシステムは、1ページ以上の画像により構成されるドキュメントの印刷ジョブであり且つ1ページ毎に区切られた印刷ジョブを前記プリンタドライバに出力するように構成され、
    前記オペレーティングシステムは、前記印刷ジョブの各ページの開始を示すページ開始情報を前記プリンタドライバに出力し且つ、前記印刷ジョブの終了を示すジョブ終了情報を前記プリンタドライバに出力するように構成され、
    前記オペレーティングシステムは、前記印刷ジョブを、両面印刷であることを指定する両面指定情報と片面印刷であることを指定する片面指定情報との何れかに関連した態様で前記プリンタドライバに出力するように構成されており、
    前記コントローラは、前記プリンタドライバを読み取り実行することによって、
    前記オペレーティングシステムにより出力された前記印刷ジョブが、前記両面指定情報と関連づいている場合に、
    前記印刷ジョブの1ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときには、前記1ページ目に対応するページ開始コマンドを前記プリンタに送信せず、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けたときに、前記1ページ目に対応するページ開始コマンドを両面印刷であることを指定する両面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信し、前記印刷ジョブの2ページ目の開始を示すページ開始情報を前記オペレーティングシステムから受け付けることなく、前記ジョブ終了情報を前記オペレーティングシステムから受け付けたときに、前記1ページ目に対応するページ開始コマンドを片面印刷であることを指定する片面指定コマンドに関連した態様で、前記通信インタフェースを介して前記プリンタに送信する、送信手段として機能することを特徴とする情報処理装置。
JP2017188347A 2017-09-28 2017-09-28 プリンタドライバおよび、情報処理装置 Active JP6904204B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017188347A JP6904204B2 (ja) 2017-09-28 2017-09-28 プリンタドライバおよび、情報処理装置
EP18180510.2A EP3462300B1 (en) 2017-09-28 2018-06-28 Information processing apparatus, and non-transitory computer-readable medium storing instructions therefor
US16/021,435 US10459672B2 (en) 2017-09-28 2018-06-28 Information processing apparatus, and non-transitory computer-readable medium storing instructions therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017188347A JP6904204B2 (ja) 2017-09-28 2017-09-28 プリンタドライバおよび、情報処理装置

Publications (2)

Publication Number Publication Date
JP2019066912A JP2019066912A (ja) 2019-04-25
JP6904204B2 true JP6904204B2 (ja) 2021-07-14

Family

ID=62947923

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017188347A Active JP6904204B2 (ja) 2017-09-28 2017-09-28 プリンタドライバおよび、情報処理装置

Country Status (3)

Country Link
US (1) US10459672B2 (ja)
EP (1) EP3462300B1 (ja)
JP (1) JP6904204B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5282050A (en) 1988-10-31 1994-01-25 Canon Kabushiki Kaisha Dual-side recording apparatus
JP4560565B2 (ja) 1999-06-23 2010-10-13 キヤノン株式会社 情報処理装置、制御方法およびコンピュータ読み取り可能な制御プログラムを格納した記憶媒体
JP2001067347A (ja) 1999-06-23 2001-03-16 Canon Inc 情報処理装置、情報処理方法およびコンピュータ読み取り可能なプログラムを格納した記憶媒体
JP4250560B2 (ja) * 2004-05-19 2009-04-08 キヤノン株式会社 コンピュータ、情報処理方法、プログラム
JP2010273022A (ja) * 2009-05-20 2010-12-02 Canon Inc 画像形成装置及びその制御方法、並びにプログラム

Also Published As

Publication number Publication date
EP3462300B1 (en) 2021-11-10
US20190095160A1 (en) 2019-03-28
US10459672B2 (en) 2019-10-29
JP2019066912A (ja) 2019-04-25
EP3462300A1 (en) 2019-04-03

Similar Documents

Publication Publication Date Title
JP5887926B2 (ja) 印刷制御装置およびプログラム
JP2018147259A (ja) 情報処理装置、プログラム、記憶媒体、情報処理方法
JP2004126871A (ja) 印刷制御方法および装置
US9747061B2 (en) Recording medium that stores printing program for instructing image forming apparatus of print job based on variable print data
JP2005084898A (ja) 印刷データ加工システム、および該システム用のプログラム
JP2017024297A (ja) 印刷装置とその制御方法、及びプログラム
JP6904204B2 (ja) プリンタドライバおよび、情報処理装置
JP5577766B2 (ja) 印刷制御装置および印刷制御プログラム
JP6384259B2 (ja) 画像処理装置、画像形成装置、画像処理方法、およびプログラム
JP7259373B2 (ja) サポートプログラム、情報処理装置、および印刷方法
JP5232728B2 (ja) 画像形成装置
JP2004188865A (ja) 画像形成装置およびプログラム
JP2009226834A (ja) 印刷装置、および印刷装置の印刷方法
JP6939342B2 (ja) プリンタドライバおよび、情報処理装置
JP7363037B2 (ja) プリンタ及びコンピュータプログラム
US11216230B2 (en) Job transmission device, job processing device, program, and job transmission method performed by job transmission device
US8228533B2 (en) Image processing system, image processing method, computer readable medium, and computer data signal
JP7152879B2 (ja) 情報処理装置及びその制御方法およびプログラム
JP2012168750A (ja) 印刷制御プログラム、情報処理装置、記録媒体、印刷システム及び印刷装置
JP6881194B2 (ja) プリンタドライバおよび、情報処理装置
JP2011059906A (ja) 印刷システム、印刷制御方法、印刷制御プログラム及び記録媒体
JP2005321886A (ja) プリント支援モジュール、ポートモニタ、記録媒体及びプリントジョブ発行方法
JP2015069360A (ja) プログラムおよび情報処理装置
JP2022070514A (ja) 印刷装置、プログラム、および情報処理装置
JP2001209517A (ja) 制御プログラムを記録した媒体、制御装置および制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200331

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210311

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210525

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210607

R150 Certificate of patent or registration of utility model

Ref document number: 6904204

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150