JP2020129221A - サポートプログラム、情報処理装置、および印刷方法 - Google Patents

サポートプログラム、情報処理装置、および印刷方法 Download PDF

Info

Publication number
JP2020129221A
JP2020129221A JP2019020972A JP2019020972A JP2020129221A JP 2020129221 A JP2020129221 A JP 2020129221A JP 2019020972 A JP2019020972 A JP 2019020972A JP 2019020972 A JP2019020972 A JP 2019020972A JP 2020129221 A JP2020129221 A JP 2020129221A
Authority
JP
Japan
Prior art keywords
print
program
printer
port
general
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.)
Granted
Application number
JP2019020972A
Other languages
English (en)
Other versions
JP7259373B2 (ja
Inventor
明弘 國松
Akihiro Kunimatsu
明弘 國松
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 JP2019020972A priority Critical patent/JP7259373B2/ja
Priority to US16/774,049 priority patent/US11086578B2/en
Publication of JP2020129221A publication Critical patent/JP2020129221A/ja
Application granted granted Critical
Publication of JP7259373B2 publication Critical patent/JP7259373B2/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/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1224Client or server resources management
    • G06F3/1228Printing driverless or using generic drivers
    • 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/121Facilitating exception or error detection and recovery, e.g. fault, media or consumables depleted
    • 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/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • G06F3/1232Transmitting printer device capabilities, e.g. upon request or periodically
    • 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/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • G06F3/1234Errors handling and recovery, e.g. reprinting
    • 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/1241Dividing a job according to job requirements, e.g. black/white and colour pages, covers and body of books, tabs
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

【課題】OS標準の印刷プログラムが組み込まれた情報処理装置において、その印刷プログラムに対して印刷指示が行われた場合であっても、早期に印刷を完了させることが可能なサポートプログラム、情報処理装置及び印刷方法を提供する。【解決手段】PC1に組み込まれた補助プログラム42は、OSにあらかじめ組み込まれた汎用印刷プログラム41に対して印刷指示があった場合に、印刷パラメータあるいは印刷対象となった画像を示すデータに基づいて、複数のプリンタに分散して印刷する分散条件を満たしているか否かを判断し、分散条件を満たしていると判断した場合には、印刷ジョブの印刷量のうち一部を、汎用印刷プログラム41が用いるポートである第1ポートからプリンタ2に送信し、残りを第2ポートからプリンタ3に送信するための処理を実行する。【選択図】図3

Description

本明細書に開示される技術分野は、プリンタの制御をサポートするサポートプログラム、情報処理装置、および印刷方法に関する。
パーソナルコンピュータ等の情報処理装置からプリンタを制御する技術として、情報処理装置にプリンタドライバをインストールし、プリンタドライバによって印刷データを生成し、その印刷データをプリンタに送信する構成が広く知られている(例えば、特許文献1)。プリンタドライバは、プリンタのメーカから提供され、そのプリンタが有する各種の機能に対応しており、そのプリンタを十分に利用することができる。
特開2017−134718号公報
近年、前述したプリンタドライバを利用せず、オペレーティングシステム(OS)に標準に組み込まれている印刷プログラムによってプリンタを制御する技術が実用化されている。この技術では、OSがプリンタを検知するとOS標準の印刷プログラムとの関連付けを行い、以後、そのプリンタに対する印刷指示を受け付けた場合に、プリンタドライバを用いずに、OS標準の印刷プログラムによる印刷が可能になる。
しかしながら、OS標準の印刷プログラムによる印刷では、あらかじめ決められた印刷プログラムがサポートするポートを用いて印刷データを送信し、プリンタにおいてあらかじめ決められたアルゴリズムに従って印刷を行うことになるが、必ずしもプリンタに最適な処理を行っているとは言えない。そのため、印刷完了に時間がかかる場合がある。
本明細書は、OS標準の印刷プログラムが組み込まれた情報処理装置において、その印刷プログラムに対して印刷指示が行われた場合であっても、早期に印刷を完了させることが可能な技術を開示する。
上述した課題の解決を目的としてなされたサポートプログラムは、情報処理装置のコンピュータによって実行可能であり、前記情報処理装置と接続するプリンタに対応するサポートプログラムであって、前記コンピュータに、前記情報処理装置のオペレーティングシステムにあらかじめ組み込まれた汎用印刷プログラムに対して、画像の印刷を前記プリンタに行わせる印刷指示があった場合に、前記印刷指示によって示される印刷パラメータあるいは前記印刷指示にて印刷対象となった画像を示すデータに基づいて、複数のプリンタに分散して印刷する分散条件を満たしているか否かを判断する判断処理と、前記印刷指示にて示される印刷ジョブの印刷量のうち一部を、前記汎用印刷プログラムが用いるポートである第1ポートから前記プリンタに送信し、前記印刷ジョブの印刷量のうち残りを、前記第1ポートとは異なる第2ポートから前記プリンタと異なる別のプリンタに送信するための処理である分散処理と、を含むポート処理を実行させ、前記ポート処理では、前記判断処理にて前記分散条件を満たしていると判断した場合には前記分散処理を実行し、前記判断処理にて前記分散条件を満たしていないと判断した場合には前記分散処理を実行しない、ことを特徴としている。
上述したサポートプログラムによれば、印刷パラメータに基づいて印刷を分散させる分散条件を設け、その条件を満たしている場合に印刷ジョブを分割し、分割された印刷ジョブの1つを第2ポートを利用して別のプリンタに一部の印刷を行わせる。これにより、早期の印刷完了が期待できる。
上記装置の機能を実現するための制御方法、コンピュータプログラム、および当該コンピュータプログラムを格納するコンピュータにて読取可能な記憶媒体も、新規で有用である。
本明細書に開示される技術によれば、OS標準の印刷プログラムが組み込まれた情報処理装置において、その印刷プログラムに対して印刷指示が行われた場合であっても、早期に印刷を完了させることが可能な技術が実現される。
印刷システムの電気的構成を示すブロック図である。 印刷システムによる印刷動作の順序の例を示すシーケンス図である。 第1の形態における分散印刷の概要を示す説明図である。 分散条件の例を示す図である。 第1の形態における補助プログラムの処理の手順を示すフローチャートである。 第2の形態における分散印刷の手順を示すシーケンス図である。 第2の形態における分散印刷の新たな補助プログラムを動作させた際の手順を示すシーケンス図である。
以下、実施の形態のプログラムを利用する印刷システムについて、添付図面を参照しつつ詳細に説明する。本形態は、パーソナルコンピュータ(以下、「PC」とする)とプリンタとを含む印刷システムを具体化した実施の形態を開示するものである。
第1の形態のプログラムが実行される印刷システムの構成の例を、図1に示す。図1に示すシステムには、PC1と、プリンタ2と、プリンタ3と、が含まれる。PC1は、情報処理装置の一例である。プリンタ2およびプリンタ3は、印刷機能を有する装置であり、ローカル通信またはネットワーク通信を介して、PC1と通信可能である。
PC1は、例えば、図1に示すように、コントローラ10と、ユーザインタフェース(以下、「UI」とする)20と、通信インタフェース(以下、「通信IF」とする)30と、を備えている。UI20及び通信IF30は、コントローラ10に電気的に接続されている。
UI20は、各種の表示を行い、ユーザの指示入力を受け付けるハードウェアを含む。UI20は、表示機能と入力受付機能との両方の機能を有するタッチパネルであっても良いし、表示機能を有するディスプレイと入力受付機能を有するキーボードやマウス等との組合せであっても良い。
通信IF30は、プリンタ2やプリンタ3との通信を行うためのハードウェアや、インターネットへのアクセスを行うためのハードウェアを含む。通信IF30は、通信方式の異なる複数のインタフェースを含んでいても良い。通信方式としては、例えば、ネットワーク通信、USB通信がある。また、有線通信であっても無線通信であってもよい。
コントローラ10は、CPU11と、メモリ12と、を含む。CPU11は、コンピュータの一例である。メモリ12は、ROMと、RAMと、不揮発性メモリと、を含み、各種のアプリケーションプログラム(以下、「アプリ」とする)などのプログラムや各種のデータなどを記憶する。なお、本明細書では、メモリの詳細を区別しない。CPU11は、メモリ12から読み出したプログラムに従って、また、ユーザの指示に基づいて、各種の処理を実行する。なお、図1中のコントローラ10は、PC1の制御に利用されるハードウェアやソフトウェアを纏めた総称であって、実際にPC1に存在する単一のハードウェアを表すとは限らない。
メモリ12の一例は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、non−transitoryな媒体である。non−transitoryな媒体には、上記の例の他に、CD−ROM、DVD−ROM等の記録媒体も含まれる。また、non−transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non−transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。
メモリ12には、例えば、図1に示すように、汎用印刷プログラム41を含むオペレーティングシステム(以下、「OS」とする)21と、補助プログラム42と、編集アプリ43と、が記憶されている。補助プログラム42は、サポートプログラムの一例である。補助プログラム42は、例えば、マイクロソフト社が公開した仕様に基づいてプリンタベンダによって作成された、ハードウェアサポートアプリ(略称、HSA)である。OS21は、例えば、マイクロソフトウィンドウズ(登録商標)、MacOS(登録商標)、Linux(登録商標)である。なお、メモリ12には、図示したもの以外にも、接続されているプリンタの情報を含む各種のデータや、ブラウザ等の各種のプログラムが記憶されている。
汎用印刷プログラム41は、PC1からプリンタ2等の各種のプリンタで印刷を実行させるためのアプリであり、OS21にあらかじめ組み込まれているOS標準の印刷プログラムである。本形態の汎用印刷プログラム41は、印刷対象の画像データに基づいて、プリンタが対応可能な印刷データを生成するプログラムである。
汎用印刷プログラム41は、各プリンタのベンダによって提供される複数種類のモデルのプリンタに適用可能な汎用のアプリであり、各モデルに共通する動作を各プリンタに行わせるプログラムである。あるいは、汎用印刷プログラム41は、OS21にあらかじめ組み込むために、各プリンタのベンダによってOS21のベンダに提供されるプログラム、例えば、OS21にあらかじめ組み込むために提供されるプリンタドライバの一種であっても良い。
補助プログラム42は、汎用印刷プログラム41の起動に付随してOS21からの指示に基づいて処理を実行するプログラムであり、対象のハードウェアの制御をサポートするアプリである。補助プログラム42は、例えば、汎用印刷プログラム41から起動される。補助プログラム42は、プリンタ2等のベンダによってプリンタのタイプごとに用意されるプログラムである。例えば、インクジェットプリンタ用の補助プログラム42やレーザプリンタ用の補助プログラム42が用意される。プリンタのタイプごとに限らず、プリンタのモデルごとやプリンタのモデルのシリーズごとに用意される補助プログラム42が有っても良い。
プリンタのベンダは、OS21のベンダが指定する手順に従って、補助プログラム42をOS21のベンダが提供するプラットフォームに登録する。OS21は、PC1に新たにプリンタ2が接続され、そのプリンタ2に対応する補助プログラム42がプラットフォームに登録されている場合には、当該補助プログラム42を補助プログラム42が格納されているサーバからダウンロードしてPC1に組み込む。
そして、OS21は、組み込んだ補助プログラム42の識別情報を新たに接続されたプリンタのプリンタ情報に対応付けて、メモリ12に記憶させる。複数のモデルのプリンタが接続されているPC1では、各モデルのタイプに対応するそれぞれの補助プログラムが組み込まれ、各プリンタと各補助プログラムとを対応付ける情報がメモリ12に記憶される。つまり、メモリ12には、PC1に接続されている各プリンタのプリンタ情報として、当該プリンタのモデル情報やアクセス情報とともに、対応する補助プログラム42の情報が記憶される。
編集アプリ43は、例えば、画像データや文書データの作成や編集を行うためのアプリである。編集アプリ43は、例えば、マイクロソフト ワード(登録商標)、パワーポイント(登録商標)である。また、プリンタ2やプリンタ3のベンダから提供されるアプリであってもよい。編集アプリ43は、プリンタ2に所定の動作を行わせる指示を含むユーザ操作を受け付ける。具体的には、編集アプリ43は、UI20を介して、例えば、プリンタ2に印刷を実行させる印刷指示を受け付ける。
なお、実施の形態における処理およびフローチャートの各処理ステップは、基本的に、補助プログラム42などのプログラムに記述された命令に従ったCPU11の処理を示す。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「取得」、「受付」、「制御」等の処理は、CPU11の処理を表している。CPU11による処理は、OS21のAPIを用いたハードウェア制御も含む。本明細書では、OS21の詳細な記載を省略して各プログラムの動作を説明する。すなわち、以下の説明において、「プログラムBがハードウェアCを制御する」という趣旨の記載は、「プログラムBがOS21のAPIを用いてハードウェアCを制御する」ことを指してもよい。また、プログラムに記述された命令に従ったCPU11の処理を、省略した文言で記載することがある。例えば、「CPU11が行う」のようにプログラムを省略して記載することがある。また、プログラムに記述された命令に従ったCPU11の処理を、「プログラムAが行う」のようにCPUを省略した文言で記載することがある。
なお、「取得」は要求を必須とはしない概念で用いる。すなわち、CPU11が要求することなくデータを受信するという処理も、「CPU11がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「要求する」、「指示する」とは、要求していることを示す情報や、指示していることを示す情報を相手に出力することを示す概念である。また、要求していることを示す情報や指示していることを示す情報のことを、単に、「要求」、「指示」とも記載する。
また、CPU11による、情報Aは事柄Bであることを示しているか否かを判断する処理を、「情報Aから、事柄Bであるか否かを判断する」のように概念的に記載することがある。CPU11による、情報Aが事柄Bであることを示しているか、事柄Cであることを示しているか、を判断する処理を、「情報Aから、事柄Bであるか事柄Cであるかを判断する」のように概念的に記載することがある。
次に、第1の形態の補助プログラム42の構成、および補助プログラム42の動作を含む印刷手順の一例について、図2のシーケンス図を参照して説明する。補助プログラム42は、編集アプリ43等を介して、補助プログラム42に対応するプリンタが指定された状態で汎用印刷プログラム41を使用して印刷する印刷指示を受け付けた場合に、汎用印刷プログラム41から実行指示されるプログラムである。以下では、PC1がUI20を介して、例えば、編集アプリ43にて、印刷対象の画像データが指定された状態で、汎用印刷プログラム41を介してのプリンタ2での印刷実行の指示を受け付けた場合であって、プリンタ2のモデルのタイプに対応する補助プログラム42がPC1に組み込まれている場合について説明する。
まず、編集アプリ43は、UI20を介して、印刷対象の画像の指定と、印刷実行の指示入力を受け付ける(矢印A)。編集アプリ43が表示した画像は、印刷対象の画像の例である。編集アプリ43は、例えば、編集アプリ43にて編集された文書や、編集アプリ43にて読み込んだ写真などを画像として表示する。そして、印刷指示を受け付けた編集アプリ43は、受け付けた印刷指示の内容を示す印刷実行通知をOS21に渡す。なお、図2では、OS21の動作を省略して示している。
OS21は、汎用印刷プログラム41を使用する印刷実行通知を受け付けた場合、汎用印刷プログラム41を実行させ、汎用印刷プログラム41に印刷実行通知を渡す(矢印B)。汎用印刷プログラム41は、印刷実行通知にて、印刷指示に含まれる各種の情報、例えば、印刷させるプリンタを示す情報、アプリにて設定された印刷パラメータを示す情報、印刷対象となる画像データを示す情報、印刷を指示したユーザを識別する情報を、取得できる。なお、後述するように、これらの情報は、補助プログラム42でも使用される。
汎用印刷プログラム41は、印刷実行通知を受け付けると、プリンタ用のデータである印刷データを生成する(矢印C)。汎用印刷プログラム41は、印刷データを生成するにあたって、種々の処理を実行する。
具体的に、汎用印刷プログラム41は、印刷実行通知に含まれる画像データの形式を中間画像データの形式に変換することで中間画像データを生成し、中間画像データを含む印刷ジョブを生成する(矢印C)。編集アプリ43に含まれる画像データは種々のタイプのものであり、汎用印刷プログラム41は、受け取った画像データを、印刷データの生成に適した中間画像データに変換する。なお、印刷実行通知に含まれる画像データが印刷データの生成に適したデータであれば、中間画像データの生成を省略し、そのまま中間画像データとしても良い。中間画像データは、例えば、XPSデータである。
さらに、汎用印刷プログラム41は、印刷実行通知に含まれる情報に基づいて、印刷を実行させる装置として指定されているプリンタを特定する。汎用印刷プログラム41は、例えば、プリンタ2が指定されている場合、メモリ12に記憶されているプリンタ情報に含まれるプリンタのモデル情報に基づいて、プリンタ2のモデルを特定する。そして、印刷指示にて指定されたプリンタであるプリンタ2に対応する補助プログラム42がメモリ12に記憶されていることから、汎用印刷プログラム41による印刷データの生成を開始する前に、汎用印刷プログラム41は、補助プログラム42の処理の実行命令を出力し、補助プログラム42を動作させることが可能である。この場合、補助プログラム42への実行命令が汎用印刷プログラム41から出力される。
補助プログラム42は複数の処理が実行可能である。例えば、中間画像データを生成した後、印刷データの生成開始前に、印刷パラメータを編集する処理や、中間画像データの画像を編集する処理を行ってもよい。例えば、印刷パラメータを編集する場合、補助プログラム42は、例えば、印刷パラメータを読み出し、読み出した印刷パラメータに関する設定画面をUI20に表示させ、編集アプリ43にて設定された印刷パラメータの変更や、編集アプリ43では受け付けていない印刷パラメータの設定を受け付ける。さらに、補助プログラム42は、設定画面にて受け付けた内容で,印刷ジョブの印刷パラメータを編集する。補助プログラム42は、印刷ジョブの印刷パラメータに上書きすることで編集しても良いし、汎用印刷プログラム41に印刷パラメータを提供することで、汎用印刷プログラム41を介して印刷パラメータを編集しても良い。また、中間画像データの画像を編集する場合、例えば、印刷パラメータの設定に応じた加工を中間画像データの画像に施す。画像の加工としては、例えば画像の集約や分割、画像の拡大や縮小、ウォータマーク等の画像の合成が該当する。補助プログラム42は、各処理を終了する際、終了通知を汎用印刷プログラム41に通知する。汎用印刷プログラム41はその終了通知を受け付けると、編集内容を反映する。
本形態では、汎用印刷プログラム41は、中間画像データを生成した後、必要に応じて補助プログラム42を動作させ、その後、その中間画像データに基づいて印刷データを生成する。汎用印刷プログラム41によって生成される印刷データは、各種のプリンタにて印刷に使用できる形式の印刷データである。印刷データは、例えば、PWGRasterデータやPDFデータである。
印刷データの生成の終了後、汎用印刷プログラム41は、補助プログラム42の印刷データ編集処理に対する実行命令を出力する(矢印D)。印刷データ編集処理の実行命令には、印刷パラメータと印刷データとが付される。
汎用印刷プログラム41からの実行命令を受け付けた補助プログラム42は、印刷データ編集処理を開始する(矢印E)。印刷データ編集処理は、汎用印刷プログラム41による印刷データの生成が完了した後に実行される処理である。補助プログラム42は、印刷データ編集処理の実行命令にて、印刷パラメータやプリンタの情報に加え、生成が終了している印刷データも汎用印刷プログラム41から取得できる。
補助プログラム42は、印刷データ編集処理として、例えば、印刷データの編集を行う。補助プログラム42は、例えば、プリンタ2に特有な機能を実行させるためのコマンドを印刷データに付加する。プリンタ2に特有な機能としては、例えば、トナーセーブ設定、フィニッシャの設定、がある。プリンタ2が自身でウォータマークやヘッダ/フッタ等を画像に付加できる機能を有している場合、印刷データ編集処理では、これらの機能を実行させるコマンドを印刷データに付加しても良い。
その後、補助プログラム42は、分散印刷を行うか否かの分散判定を行う(矢印F)。第1の形態の印刷システムでは、汎用印刷プログラム41に対して、画像の印刷をプリンタ2に行わせる印刷指示を入力した場合に、汎用印刷プログラム41からプリンタ2に印刷データを送信するのではなく、補助プログラム42から直接プリンタ2に印刷データを送信することができる。このように、汎用印刷プログラム41に代わって補助プログラム42によって行う印刷データの送信を「代替送信」とする。さらに、印刷ジョブの印刷量を分割し、印刷ジョブの印刷量のうち一部をプリンタ2に送信し、残りを、代替送信を利用して別のプリンタ(本形態ではプリンタ3)に送信する。この1つの印刷ジョブを分割して複数のプリンタに分散して印刷させる印刷を「分散印刷」とする。なお、補助プログラム42による送信であっても、汎用印刷プログラム41による送信であっても、実際にはOS21による通信制御を介して行われるが、OS21の通信制御は省略して説明する。
分散印刷を行う場合であっても、図3に示すように、編集アプリ43から汎用印刷プログラム41に対して印刷実行通知が入力され、汎用印刷プログラム41が補助プログラム42に対して実行命令を出力することで、補助プログラム42を動作させる。補助プログラム42は、汎用印刷プログラム41から印刷パラメータおよび印刷データを取得し、1つの印刷ジョブを2つの印刷ジョブに分割する。
また、第1の形態の印刷システムでは、各分割印刷ジョブを送信する経路として、第1ポートから第1分割印刷ジョブを送信する第1経路X1と、第2ポートから第2分割印刷ジョブを送信する第2経路X2と、の少なくとも2つの経路をサポートしており、代替送信を行う場合、ポートを選択することによって、各分割印刷ジョブを送信する経路が決定される。
補助プログラム42によって選択されるポートは、第1ポートを、汎用印刷プログラム41がプリンタとの通信に用いるポートとし、例えばIPP(Internet Printing Protocol)で通信するように設定されたポートとする。一方、第2ポートを、汎用印刷プログラム41が用いないポートであって、印刷に汎用的に用いられているポートとし、例えばTCPやUDPにおけるポート9100を用いたRAW印刷に用いるように設定されたポートとする。なお、本形態で示したポートは、一例であって、他のポートを利用してもよい。例えば、第2ポートとして、他のネットワークのポートや、ネットワークのポート以外のポート、例えばUSBのポートや、無線通信のポートを利用してもよい。
プリンタ2は、第1ポートから送信される第1分割印刷ジョブを受信した場合、第1画像形成プログラム201によって、その受信した第1分割印刷ジョブの印刷データに基づく画像処理を行う。また、プリンタ3は、第2ポートから送信される第2分割印刷ジョブを受信した場合、第2画像形成プログラム202によって、その受信した第2分割印刷ジョブの印刷ジョブの印刷データに基づく画像処理を行う。第1画像形成プログラム201および第2画像形成プログラム202は、それぞれ対応するポートから送信される印刷データに基づく画像処理を行うプログラムであり、それぞれの印刷データに適したアルゴリズムに従った処理を行う。
第1の形態では、分散印刷を行うか否かの分散判定を、汎用印刷プログラム41から受け取った印刷パラメータあるいは印刷データに基づいて、所定の分散条件を満たしているか否かによって行う。分散条件の例を図4に示す。例えば、本形態では、図4(A)に示すように、印刷部数が設定されており、その部数が10部よりも大きいことを、分散条件に適用できる。印刷部数が大きい場合は、印刷部数が小さい場合と比較して印刷完了に時間がかかる。そのため、分散印刷を行うことで印刷完了の早期化が期待できる。以下、印刷部数を「部数」とする。なお、閾値となる部数は一例であり、10部に限るものではない。
部数は、印刷パラメータに含まれている場合と、ジョブヘッダ等の中間画像データの先頭領域に含まれている場合と、ページヘッダ等の中間画像データの各ページの先頭領域に含まれている場合と、印刷データの先頭領域に含まれている場合と、印刷データの各ページの先頭領域に含まれている場合と、がある。
そのため、部数の取得タイミングは、部数がどこに含まれているかによって異なる。印刷パラメータに含まれている場合、補助プログラム42が印刷パラメータを最初に取得できるタイミング、すなわち補助プログラム42が汎用印刷プログラム41から呼び出された直後のタイミングであっても、部数を取得できる。中間画像データの先頭領域に含まれている場合、汎用印刷プログラム41が中間画像データを生成した後のタイミングで取得できる。印刷データに含まれている場合、汎用印刷プログラム41が印刷データを生成した後のタイミングで取得できる。
なお、部数に基づく印刷ジョブの分割は、全ページ分の印刷データが生成された後に実施可能になる。そのため、部数に基づく分散判定のタイミングは、補助プログラム42が印刷パラメータを最初に取得したタイミングでもよいし、汎用印刷プログラム41が中間画像データを生成したタイミングでもよいし、汎用印刷プログラム41が印刷データを生成したタイミングでもよい。
分散条件としては、他にも幾つか適用可能であり、例えば図4(B)に示すように、各分割印刷ジョブの印刷量を、プリンタの台数に応じて均等に割り当ててもよい。すなわち、分割数は2に限るものではなく、例えばPC1にプリンタが3台接続されている場合には、分割数を3にしてもよい。また、図4(C)に示すように、プリンタの能力に応じて割り当ててもよい。例えば、プリンタ2よりもプリンタ3の処理速度の方が早い場合、プリンタ3の方がプリンタ2よりも印刷量が多くなるように分割するとよい。
また、分散判定は、前述したような部数に基づく判定の他、例えば図4(D)に示すように、印刷パラメータとして分散印刷の実行可否が設定されている場合には、その設定に従って行ってもよい。また、補助プログラム42の設定として、分散印刷の実行可否を補助プログラム42が使用可能なメモリ領域に記憶しておいてもよく、その記憶されている設定に従って行ってもよい。分散印刷の実行可否の設定に基づく分散判定のタイミングは、印刷パラメータ内の部数に基づく分散判定の場合と同じで良い。
また、印刷ページ数に基づく分散条件を設けてもよい。例えば図4(E)に示すように、印刷ページ数が100ページ以上であることを、分散条件に適用できる。印刷ページ数が大きい場合は、印刷ページ数が小さい場合と比較して印刷完了に時間がかかる。そのため、分散印刷を行うことで印刷完了の早期化が期待できる。なお、閾値となるページ数は一例であり、100ページに限るものではない。両面印刷を行う場合は、閾値となるページ数をその半分とする。また、印刷ページ数は、印刷パラメータに、Nページ分を1枚のシートに印刷する集約が設定されている場合、汎用印刷プログラム41によるその集約に関する中間画像データの加工が終わった後に実際のページ数が確定する。そのため、印刷ページ数に基づく分散判定のタイミングは、中間画像データの加工が終わった後でもよいし、中間画像データの生成後から印刷データの生成前の間であってもよいし、印刷データの生成後であってもよい。
図4に示した分散条件を少なくとも1つ適用することで分散印刷を行うか否かを判定できる。なお、複数の分散条件を組み合わせてもよく、その場合は条件ごとに優先度を設けることで、分散印刷を行うか否かを判定できる。
分散印刷を行うと判定した場合、補助プログラム42は、編集アプリ43によって印刷指示された印刷ジョブを分割元の印刷ジョブとして、第1分割印刷ジョブと第2分割印刷ジョブとの2つの分割印刷ジョブを生成する。分割元の印刷ジョブの印刷量を部数で分割した場合、第1分割印刷ジョブと第2分割印刷ジョブとは同じ印刷データになり、第1分割印刷ジョブの部数と第2分割印刷ジョブの部数の合計が分割元の印刷ジョブの部数となる。つまり、第1分割印刷ジョブの印刷量と第2分割印刷ジョブの印刷量の合計が分割元の印刷ジョブの印刷量となる。
その後、補助プログラム42は、汎用印刷プログラム41を用いずに、第1ポートから第1分割印刷ジョブをプリンタ2に送信する(矢印M1)。第1分割印刷ジョブを受信したプリンタ2は、第1画像形成プログラム201によって画像処理を行い、受信した第1分割印刷ジョブの印刷データによって示される画像の印刷を行う(矢印O1)。プリンタ2は、分割元の印刷ジョブで指定されていたプリンタであり、第1ポートからはその分割元の印刷ジョブで指定されていたプリンタに第1分割印刷ジョブが送信される。
また、補助プログラム42は、汎用印刷プログラム41を用いずに、第2ポートから第2分割印刷ジョブをプリンタ3に送信する(矢印N1)。第2分割印刷ジョブを受信したプリンタ3は、第2画像形成プログラム202によって画像処理を行い、受信した第2分割印刷ジョブの印刷データに示される画像の印刷を行う(矢印O2)。プリンタ3は、分割元の印刷ジョブで指定されていないプリンタであり、第2ポートからはその分割元の印刷ジョブで指定されていないプリンタに第2分割印刷ジョブが送信される。
なお、第2ポートから第2分割印刷ジョブの印刷データを送信する際、補助プログラム42は、第2画像形成プログラム202用のコマンドを印刷データに付加してもよいし、第2画像形成プログラム202用に印刷データを最適化してもよい。これらの印刷データの編集は、分散判定の前に行ってもよいし、後に行ってもよい。
また、補助プログラム42から直接各分割印刷ジョブがプリンタ2に送信されるため、補助プログラム42から汎用印刷プログラム41に対して完了通知が入力される(矢印G1)。完了通知が入力された汎用印刷プログラム41は、その完了通知に応じた完了処理を行う(矢印P1)。具体的には、汎用印刷プログラム41は、編集アプリ43から入力された印刷実行通知に基づく分割元の印刷ジョブを終了させる。このとき、汎用印刷プログラム41は、終了させる印刷ジョブが正常に終了したことを示す情報をその印刷ジョブの履歴としてメモリ12に残す。また、分散印刷を行ったことを示す情報を履歴として残してもよい。分散印刷を行ったことを示す情報としては、例えば印刷ジョブの送信先のプリンタの情報や送信に用いたポートの情報が含まれるとよい。
なお、補助プログラム42は、印刷ジョブをキャンセルするキャンセル通知を、汎用印刷プログラム41に対して入力することもできる。例えば、印刷パラメータの編集を受け付ける設定画面から印刷ジョブのキャンセルを受け付けることができ、補助プログラム42からキャンセル通知を汎用印刷プログラム41に入力することができる。また、中間画像データの編集に失敗した場合にも、補助プログラム42からキャンセル通知を汎用印刷プログラム41に入力することができる。キャンセル通知が入力された汎用印刷プログラム41は、完了通知のときと同様に、印刷ジョブを終了させる。ただし、キャンセル通知が入力された場合は、完了通知の場合と異なり、キャンセルされたことを示す情報をその印刷ジョブの履歴としてメモリ12に残す。つまり、代替送信によって印刷データの送信が行われた場合、補助プログラム42から汎用印刷プログラム41に対して、印刷ジョブを終了させる通知として、キャンセル通知とは異なる完了通知が入力される。完了通知は、第1終了通知の一例であり、キャンセル通知は、第2終了通知の一例である。
分散印刷を行わないと判定した場合、補助プログラム42は、印刷データ編集処理の終了を示す終了通知を汎用印刷プログラム41に返して処理を終了する。汎用印刷プログラム41は、補助プログラム42から終了通知を受け取ったことに応じて、プリンタ2に対して印刷命令を送信する。これにより、印刷命令を受信したプリンタ2では、印刷命令に付された印刷データに従って、印刷データの画像の印刷が実行される。
なお、補助プログラム42における分散印刷の方法は、プリンタのモデルによって異なる場合がある。例えば、メモリ容量が小さい低価格帯のプリンタの場合、汎用印刷プログラム41にて生成された1部用の印刷データを取得し、その印刷データを分散先のプリンタごとに部数だけ繰り返し送信する。一方、メモリ容量が大きい高価格帯のプリンタの場合、汎用印刷プログラム41にて生成された1部用の印刷データを取得した後、その印刷データに分散先のプリンタごとに部数を示すコマンドを付加する編集を行い、編集後の印刷データを各プリンタに送信する。コマンドを付加する方法としては、例えば印刷データの先頭領域に含ませてもよいし、各ページの先頭領域に含ませてもよい。また、複数のモデルに対応する補助プログラム42の場合、プリンタのモデルに応じて、上述した分散方法を使い分けてもよい。なお、分散印刷の方法の使い分けについて、部数を例に説明したが、例えば印刷ページ数であっても部数と同様に、プリンタのモデルごとに上述した分散方法を使い分けることができる。
次に、前述した分散印刷を行う場合の、補助プログラム42の印刷データ編集処理の手順について、図5のフローチャートを参照しつつ説明する。印刷データ編集処理は、印刷指示に基づいて汎用印刷プログラム41から印刷データ編集処理の実行命令を受け付けたことを契機に、PC1のCPU11にて実行される。なお、印刷データ編集処理は、ポート処理の一例である。
印刷データ編集処理では、CPU11は、実行命令に対応する印刷パラメータおよび印刷データを取得する(S01)。その後、CPU11は、取得した印刷データの編集を行う(S02)。例えばS02では、プリンタ2に特有な機能を実行させるためのコマンドを印刷データに付加する。プリンタ2に特有な機能としては、例えば、両面印刷設定、トナーセーブ設定、フィニッシャの設定、がある。プリンタ2が自身でウォータマークやヘッダ/フッタ等を画像に付加できる機能や、集約や拡縮等の画像サイズを変更する機能を有している場合、S02では、これらの機能を実行させるコマンドを印刷データに付加しても良い。なお、印刷パラメータによっては、S02の処理を行わなくてもよい。S02は、図2の矢印Eに相当する。
また、CPU11は、汎用印刷プログラム41から受け取った印刷パラメータあるいは印刷データに基づいて、分散判定を行う(S03)。S02の処理とS03の処理とは逆順であっても同時であってもよい。S03は、図2の矢印Fに相当する。分散判定には、前述した分散条件が用いられる。そして、S03での判定の結果、分散印刷を行うか否かを判断する(S04)。S03およびS04は、判断処理の一例である。
分散印刷を行うと判断した場合(S04:YES)、CPU11は、印刷パラメータおよび印刷データに基づいて、第1分割印刷ジョブおよび第2分割印刷ジョブを生成する(S11)。具体的に補助プログラム42は、図4に示したような、分散条件と印刷量の分配割合とを関連付けたテーブル51を有しており、S11ではそのテーブル51を読み出す。そして、そのテーブル51に従って、汎用印刷プログラム41から渡された印刷ジョブを分割する。例えば、分散条件として図4(A)を用いる場合、部数が10部以上であれば分散印刷を行うと判断し、第1ポートを利用する第1分割印刷ジョブについては、印刷量を分割元の印刷ジョブの50%とし、第2ポートを利用する第2分割印刷ジョブについても、印刷量を分割元の印刷ジョブの50%とする。例えば、印刷パラメータにおいて複数の部数が設定されている場合あるいは印刷データの先頭領域に複数の部数を指定するコマンドが設定されている場合には、その部数を第1の部数と第2の部数に各50%となるように分割し、第1分割印刷ジョブの先頭領域には第1の部数を指定するコマンドを含め、第2分割印刷ジョブの先頭領域には第2の部数を指定するコマンドを含める。あるいは、プリンタがメモリを十分に備えておらず、複数の部数が指定されたコマンドを受けても動作できない場合、補助プログラム42は部数を指定するコマンドを用いず、印刷データをそれぞれのプリンタに、対応する複数部数分繰り返し送信する。どの分散条件を用いるかは補助プログラム42にあらかじめ決められていてもよいし、ユーザに選択させてもよい。
そして、CPU11は、汎用印刷プログラム41に処理を戻す前に、補助プログラム42の処理として、第1ポートから第1分割印刷ジョブをプリンタ2に送信する(S12)。また、CPU11は、汎用印刷プログラム41に処理を戻す前に、補助プログラム42の処理として、第2ポートから第2分割印刷ジョブをプリンタ3に送信する(S13)。S12とS13とは逆順であっても同時であってもよい。S12およびS13は、分散処理の一例である。
また、CPU11は、完了通知を汎用印刷プログラム41に入力する(S14)。S14の処理とS12およびS13の処理とは逆順であっても同時であってもよい。完了通知は、第1終了通知の一例であり、S22は、第1通知処理の一例である。
一方、分散印刷を行わないと判断した場合(S04:NO)、CPU11は、印刷データ編集処理が正常終了したこと示す終了通知を汎用印刷プログラム41に入力し(S21)、本処理を終了する。この場合、汎用印刷プログラム41は、S02にて編集された印刷データを、プリンタ2に送信する。
また、S14の後、CPU11は、第1分割印刷ジョブおよび第2分割印刷ジョブの送信が完了したか否かを判断する(S31)。両分割印刷ジョブの送信が完了していない場合(S31:NO)、CPU11は、第1分割印刷ジョブあるいは第2分割印刷ジョブの送信中のエラーを検知したか否かを判断する(S32)。エラーを検知していない場合(S32:NO)、S31に処理を戻し、両分割印刷ジョブの送信完了と送信中のエラーとのいずれかが検知されるまで処理を繰り返す。
第1分割印刷ジョブあるいは第2分割印刷ジョブの送信中にエラーを検知した場合(S32:YES)、CPU11は、エラーを示すメッセージをUI20に表示させる(S33)。補助プログラム42によって、エラーメッセージを表示することで、ユーザがエラーを認識できる。S33は、エラー処理の一例である。S33の後、あるいは印刷データの送信が完了した場合(S31:YES)、本処理を終了する。
なお、OS21は、プリンタとポートとに関連付けられたプリントキューを有している。例えば、第1の形態では、1台のプリンタ2に対して、プリンタ2と第1ポートとに関連付けられたプリントキューと、プリンタ2と第2ポートとに関連付けられたプリントキューと、の2つのプリントキューを有している。OS21は、各プリントキューに登録された印刷ジョブを順次にプリンタに送信する機能を有している。そこで、第1分割印刷ジョブや第2分割印刷ジョブを、汎用印刷プログラム41を介さずに直接補助プログラム42から各プリントキューに登録することで、OS21によって自動的に送信してもらってもよい。
続いて、第2の形態について説明する。第2の形態では、分散判定を印刷データの生成前に行い、さらに分割印刷ジョブの第2ポートからのを、分散判定を行った補助プログラム42以外のプログラムによって行う。この点、分散判定を印刷データの生成後に行い、第2ポートからの印刷ジョブの送信も、分散判定を行った補助プログラム42によって行う第1の形態と異なる。
第2の形態において分散印刷を行う場合の手順について、図6を参照して説明する。なお、図6中、図2と同じ処理については同じ符号を付している。また、汎用印刷プログラム41が印刷実行通知を受け付ける(矢印B)までの処理は、実施の形態と同じであり、説明を省略する。
汎用印刷プログラム41は、印刷実行通知を受け付けると、印刷データを生成する前に、印刷パラメータの編集を行う編集処理を補助プログラム42に実行させる実行命令を出力する(矢印C1)。汎用印刷プログラム41からの実行命令を受け付けた補助プログラム42は、編集処理として、印刷パラメータ等の編集を行い(矢印J1)、その後、分散判定を行う(矢印J2)。
第2の形態では、分散判定を、図4(F)に示す分散条件に基づいて行う。分散印刷を行うと判定した場合、補助プログラム42は、編集アプリ43によって印刷指示された印刷ジョブを分割元の印刷ジョブとして、全ての画像データを取得する前から、その印刷量の一部に対応する画像データを分割する(矢印J3)。すなわち、100ページ目までの画像データと、100ページ目以降からの画像データとに分割する。なお、画像データを中間画像データに変換した後に分割してもよい。また、画像データを分割した後に中間画像データに変換してもよい。分散印刷を行わないと判定した場合は、説明を省略する。
その後、補助プログラム42は、汎用印刷プログラム41に対して、分割された一方の画像データの画像の印刷を行うための印刷実行通知を渡す(矢印K)。つまり、補助プログラム42から汎用印刷プログラム41に対して、新たな印刷実行通知が入力される。このとき、印刷実行通知には、印刷パラメータおよび分割された一方の画像データが付される。また、第2ポートを示すポート情報および送信先となるプリンタ3を示すプリンタ情報が付される。印刷実行通知を受け取った汎用印刷プログラム41の処理については、後述する。
分散判定を行った補助プログラム42は、汎用印刷プログラム41に対して印刷実行通知を渡した後も処理を継続し、分割された他方の画像データを中間画像データに変換した後に編集し(矢印J4)、編集処理の終了を示す終了通知を汎用印刷プログラム41に返して処理を終了する(矢印I)。この終了通知には、編集後の中間画像データの他、第1ポートを示すポート情報および送信先となるプリンタ2を示すプリンタ情報も付される。
汎用印刷プログラム41は、補助プログラム42から終了通知を受け取ったことに応じて、印刷データを生成する(矢印C)。このとき生成される印刷データは、先に分割された他方の中間印刷データに対応する印刷データである。そして、印刷データの生成後、この印刷データに基づく印刷データ編集処理を行うための実行命令を出力する(矢印D1)。この実行命令には、終了通知に付されたポート情報およびプリンタ情報も付される。
その後、補助プログラム42は、印刷データの編集を行う(矢印E)。その後、補助プログラム42は、実行命令にポート情報が付されていたことを条件として、編集後の印刷データの画像を印刷する印刷ジョブ、すなわち分割元の印刷ジョブのうち一部の印刷を行う印刷ジョブである第1分割印刷ジョブを生成し、汎用印刷プログラム41を用いずに、ポート情報によって示される第1ポートからプリンタ情報によって示されるプリンタ2に、第1分割印刷ジョブを送信する(矢印M2)。第1分割印刷ジョブを受信したプリンタ2は、受信した第1分割印刷ジョブの印刷データによって示される画像の印刷を行う(矢印O1)。
また、補助プログラム42から汎用印刷プログラム41に対して完了通知が入力される(矢印G2)。完了通知が入力された汎用印刷プログラム41は、その完了通知に応じた完了処理を行う(矢印P2)。
一方、印刷実行通知を受け取った汎用印刷プログラム41は、先に分割された一方の画像データについての各種の実行命令を行う。図7は、汎用印刷プログラム41が補助プログラム42から、ポート番号が付された印刷実行通知を受け取ったことに応じて行われる処理の手順を示している。
汎用印刷プログラム41は、ポート番号が付された印刷実行通知を受け取ると(矢印K)、印刷実行通知に付された印刷パラメータおよび画像データに基づいて、印刷データを生成する(矢印C)。そして、この印刷データに基づく印刷データ編集処理を行うための実行命令を出力する(矢印D2)。この実行命令には、印刷実行通知に付されたポート番号およびプリンタ情報が付される。このとき、プリンタ3とプリンタ2に対応する補助プログラム42が異なれば、汎用印刷プログラム41は、プリンタ3のモデルに対応する補助プログラム42を動作させることになる。
その後、汎用印刷プログラム41からの実行命令を受け付けた補助プログラム42は、印刷データの編集を行う(矢印E)。その後、補助プログラム42は、実行命令にポート情報あるいはプリンタ情報が付されていたことを条件として、編集後の印刷データの画像を印刷する印刷ジョブ、すなわち分割元の印刷ジョブのうち一部の印刷を行う印刷ジョブである第2分割印刷ジョブを生成し、汎用印刷プログラム41を用いずに、そのポート情報によって示される第2ポートからプリンタ情報によって示されるプリンタ3に、第2分割印刷ジョブを送信する(矢印N2)。第2分割印刷ジョブを受信したプリンタ3は、受信した分割印刷ジョブの印刷データに示される画像の印刷を行う(矢印O2)。
また、補助プログラム42から汎用印刷プログラム41に対して完了通知が入力される(矢印G3)。完了通知が入力された汎用印刷プログラム41は、その完了通知に応じた完了処理を行う(矢印P3)。
第2の形態では、図6の矢印J3に示したように、印刷データの生成完了前から早期に印刷ジョブの一部を分割し、矢印K以降の処理、すなわち分割印刷ジョブの送信のための制御を開始することから、第1の形態と比較してより早期にプリンタでの印刷開始が期待できる。例えば、印刷ページが150ページの印刷ジョブの場合、100ページ目までの画像データを取得していれば150ページ全部の画像データを取得するまで待つことなくその100ページ目までの分割印刷ジョブを作成して印刷命令を送信することができる。つまり、前述した第1の形態では、印刷データを生成した後での分割であり、印刷部数での分割のような画像データを分割できないような分割条件を用いているため、150ページ分の画像データを取得するまで印刷ジョブの分割を待つ必要が有る。従って、第2の形態と比較して、分散印刷ジョブの印刷開始が遅れる。一方、第1の形態では図2の矢印Cで示した印刷データの生成処理が1回で済むが、第2の形態では、図6の矢印Cで示した印刷データの生成処理と図7の矢印Cで示した印刷データの生成処理との、2回の印刷データの生成処理を行うことになる。そのため、第1の形態では、第2の形態と比較して、処理がシンプルになる。
また、第2の形態では、図7の矢印D2において、プリンタ3用の補助プログラム42を動作させることから、プリンタ2に対応する補助プログラム42とプリンタ3に対応する補助プログラム42とが異なる場合に、異なる補助プログラム42を動作させることができる。そのため、補助プログラム42が異なるプリンタに対しても分割印刷ジョブを送信可能になる。
なお、第2ポートから分割印刷データを送信する際、補助プログラム42によって新たに生成した分割印刷ジョブであって第2ポートから送信される分割印刷ジョブを、汎用印刷プログラム41を介さずに直接補助プログラムからプリントキューに登録することで、OS21によって自動的に送信してもらってもよい。
また、第2の形態では、新たな印刷実行通知によって送信される第2分割印刷ジョブを第2ポートからとし、元の印刷実行通知によって送信される第1分割印刷ジョブを第1ポートからとしているが、新たな印刷実行通知によって送信される第2分割印刷ジョブを第1ポートからとし、元の印刷実行通知によって送信される第1分割印刷ジョブを第2ポートからとしてもよい。
また、第2の形態では、新たな印刷実行通知によって送信される第2分割印刷ジョブをプリンタ3に送信し、元の印刷実行通知によって送信される第1分割印刷ジョブをプリンタ2に送信しているが、新たな印刷実行通知によって送信される第2分割印刷ジョブをプリンタ2に送信し、元の印刷実行通知によって送信される第1分割印刷ジョブをプリンタ3に送信してもよい。
次に、第3の形態について説明する。第3の形態では、どの分散条件を満たしたかによって、印刷データの生成前に分割印刷ジョブを生成するか、印刷データの生成後に分割印刷ジョブを生成するかを分ける。
分散条件には、前述したように、例えば印刷ページ数に基づく条件のように、印刷対象となる画像を分割できる分散条件と、印刷部数のように、印刷対象となる画像を分割できない分散条件がある。ここでいう「印刷対象となる画像」とは、印刷ジョブが複数のページで構成される場合は全ページ分の画像を意味し、例えば150ページ分の画像の印刷ジョブであれば150ページ分の画像を意味する。150ページ分の画像の印刷ジョブの場合、印刷ページ数に基づく分散条件では、例えば、前半100ページ分の画像と後半50ページ分の画像とに分割できる。そのため、印刷ページ数に基づく分散条件は、印刷対象となる画像を分割できる分散条件であり、第1分散条件の一例である。一方、印刷部数に基づく分散条件では、10ページ分の画像を一纏まりとして分割する必要がある。そのため、印刷部数に基づく分散条件は、印刷対象となる画像を分割できない分散条件であり、第2分散条件の一例である。
前述したように、印刷データの生成前に分割印刷ジョブを生成する第2の形態と、印刷データの生成後に分割印刷データを生成する第1の形態とでは、それぞれ利点が異なる。そこで、第3の形態では、先ず第2の形態と同様に図6の矢印J2において分散判定を行い、印刷ページ数に基づく分散条件によって分散印刷が可能と判定した場合、すなわち印刷ページ数のような中間画像データを分割できる分散条件を満たした場合には、矢印J3以降の処理を実施する。一方、中間画像データを分割できる分散条件を満たしていない場合には、図6の矢印J3や矢印Kの処理は実行せず、第1の形態と同じ制御によって図2の矢印Fにおいて分散判定を行い、印刷部数に基づく分散条件によって分散印刷が可能と判定した場合、すなわち印刷部数のような中間画像データを分割できない分散条件を満たした場合には、矢印M1以降の処理を実施する。これにより、印刷データを生成する前の図6の矢印J2のタイミングで分割できる場合には、そのタイミングで分割して分割印刷ジョブの早期開始を図り、そのタイミングで分割できない場合であっても、図2の矢印Fのタイミングで分割できる場合には、そのタイミングで分割することで、分散印刷の実行機会を増やすことができる。
以上詳細に説明したように実施の形態による補助プログラム42によれば、印刷パラメータに基づいて印刷を分散させる分散条件を設け、その条件を満たしている場合に印刷ジョブを分割し、分割された印刷ジョブである分割印刷ジョブの1つを第2ポートを利用して別のプリンタに一部の印刷を行わせる。これにより、分散印刷が行われることになり、早期の印刷完了が期待できる。
さらに、実施の形態の補助プログラム42によれば、汎用印刷プログラム41から印刷データを送信しない場合、印刷ジョブを終了させるための完了通知を汎用印刷プログラム41に入力している。そのため、汎用印刷プログラム41によって送信待ちとなっている状態が解除され、プリンタ2への印刷データの二重送信を回避できる。
なお、本明細書に開示される実施の形態は単なる例示にすぎず、本発明を何ら限定するものではない。したがって本明細書に開示される技術は当然に、その要旨を逸脱しない範囲内で種々の改良、変形が可能である。例えば、PC1に接続されるプリンタは、プリンタ単能機に限らず、複合機、複写機、FAX装置、等印刷機能を有する装置であればよい。また、PC1に接続されるプリンタは、図示の例に限らず、1台でも良いし、3台以上でもよい。
また、本形態で、汎用印刷プログラム41の処理として説明した各処理の一部は、OS21の処理であっても良い。また、汎用印刷プログラム41が用いる第1ポートは、OS21や他のプログラムで用いてもよい。
また、印刷パラメータ決定処理を実行するモジュールは、補助プログラム42に限らず、汎用印刷プログラム41を用いた印刷を行う際に、OS21または汎用印刷プログラム41から指示を受け付けるプログラムであればよい。例えば、マイクロソフト社が仕様公開した印刷ワークフローアプリ(Print workflow)でも良い。
また、実施の形態では、汎用印刷プログラム41から補助プログラム42の実行命令が出力されることで、補助プログラム42が実行されるとしているが、補助プログラム42の実行条件はこれに限らない。例えば、OS21から直接実行されても良く、または、常駐される補助プログラム42であっても良い。常駐される場合には、補助プログラム42は、実行命令を受けて前述した動作を行うとすれば良い。
また、実施の形態に開示されている任意のフローチャートにおいて、任意の複数のステップにおける複数の処理は、処理内容に矛盾が生じない範囲で、任意に実行順序を変更できる、または並列に実行できる。
また、実施の形態に開示されている処理は、単一のCPU、複数のCPU、ASICなどのハードウェア、またはそれらの組み合わせで実行されてもよい。また、実施の形態に開示されている処理は、その処理を実行するためのプログラムを記録した記録媒体、または方法等の種々の態様で実現することができる。
1 PC
2 プリンタ
11 CPU
12 メモリ
20 UI
21 OS
41 汎用印刷プログラム
42 補助プログラム

Claims (16)

  1. 情報処理装置のコンピュータによって実行可能であり、前記情報処理装置と接続するプリンタに対応するサポートプログラムであって、
    前記コンピュータに、
    前記情報処理装置のオペレーティングシステムにあらかじめ組み込まれた汎用印刷プログラムに対して、画像の印刷を前記プリンタに行わせる印刷指示があった場合に、前記印刷指示によって示される印刷パラメータあるいは前記印刷指示にて印刷対象となった画像を示すデータに基づいて、複数のプリンタに分散して印刷する分散条件を満たしているか否かを判断する判断処理と、
    前記印刷指示にて示される印刷ジョブの印刷量のうち一部を、前記汎用印刷プログラムが用いるポートである第1ポートから前記プリンタに送信し、前記印刷ジョブの印刷量のうち残りを、前記第1ポートとは異なる第2ポートから前記プリンタと異なる別のプリンタに送信するための処理である分散処理と、
    を含むポート処理を実行させ、
    前記ポート処理では、
    前記判断処理にて前記分散条件を満たしていると判断した場合には前記分散処理を実行し、前記判断処理にて前記分散条件を満たしていないと判断した場合には前記分散処理を実行しない、
    ことを特徴とするサポートプログラム。
  2. 請求項1に記載するサポートプログラムにおいて、
    前記分散処理では、
    前記印刷指示にて示される印刷ジョブの印刷量のうち一部を、前記サポートプログラムによって、前記第1ポートから前記プリンタに送信し、
    さらに前記印刷ジョブの印刷量のうち残りを、前記サポートプログラムによって、前記第2ポートから前記別のプリンタに送信する、
    を実行させる、
    ことを特徴とするサポートプログラム。
  3. 請求項1に記載するサポートプログラムにおいて、
    前記分散処理では、
    前記印刷指示にて示される印刷ジョブの印刷量のうち一部を、前記サポートプログラムによって、前記第1ポートから前記プリンタに送信し、
    さらに前記印刷ジョブの印刷量のうち残りを前記第2ポートから前記別のプリンタに送信する新たな印刷ジョブを生成し、前記新たな印刷ジョブを前記オペレーティングシステムに引き渡すジョブ生成処理を実行し、前記オペレーティングシステムに引き渡された前記新たな印刷ジョブは、前記第2ポートから前記別のプリンタに送信される、
    ことを特徴とするサポートプログラム。
  4. 請求項3に記載するサポートプログラムにおいて、
    前記ジョブ生成処理では、
    前記汎用印刷プログラムに対して、画像の印刷を前記別のプリンタに行わせる前記新たな印刷ジョブを生成し、前記汎用印刷プログラムは、前記別のプリンタのモデルに対応する別のサポートプログラムを動作させ、前記別のサポートプログラムによって、前記ジョブ生成処理にて生成された前記新たな印刷ジョブを、前記第2ポートによって前記別のプリンタに送信する、
    ことを特徴とするサポートプログラム。
  5. 請求項1から請求項4のいずれか1つに記載するサポートプログラムにおいて、
    前記コンピュータに、
    前記サポートプログラムによる印刷ジョブの送信中にエラーを検知した場合に、前記情報処理装置の表示デバイスにエラーを示す情報を表示させるエラー処理を実行させる、
    ことを特徴とするサポートプログラム。
  6. 請求項1から請求項5に記載するサポートプログラムにおいて、
    前記コンピュータに、
    前記印刷指示があったことに基づいて前記汎用印刷プログラムが印刷データを生成した後に、前記ポート処理を実行させる、
    ことを特徴とするサポートプログラム。
  7. 請求項1から請求項5に記載するサポートプログラムにおいて、
    前記コンピュータに、
    前記印刷指示があったことに基づいて前記汎用印刷プログラムが印刷データを生成する前に、前記ポート処理を実行させる、
    ことを特徴とするサポートプログラム。
  8. 請求項1から請求項5に記載するサポートプログラムにおいて、
    前記コンピュータに、
    前記印刷指示があったことに基づいて前記汎用印刷プログラムが印刷データを生成する前に、前記判断処理を実行させ、
    さらに前記分散条件には、
    前記印刷指示による印刷対象となる画像を分割する第1分散条件と、前記印刷指示による印刷対象となる前記画像を分割しない第2分散条件とがあり、
    さらに前記コンピュータに、
    前記第1分散条件を満たしている場合は、前記汎用印刷プログラムが印刷データを生成する前に、前記分散処理を実行させ、前記第2分散条件を満たしている場合は、前記汎用印刷プログラムが前記印刷データを生成した後に、前記分散処理を実行させる、
    ことを特徴とするサポートプログラム。
  9. 請求項8に記載するサポートプログラムにおいて、
    前記判断処理では、
    前記印刷指示にて示される印刷ジョブに同じ画像を複数部数印刷する設定がなされている場合、前記第2分散条件を満たすと判断し、
    前記分散処理では、
    前記印刷ジョブの印刷量を、部数で分ける、
    ことを特徴とするサポートプログラム。
  10. 請求項1から請求項9のいずれか1つに記載するサポートプログラムにおいて、
    前記コンピュータに、
    前記判断処理にて前記分散条件を満たしていると判断し、前記印刷ジョブを前記汎用印刷プログラムから送信させない前記分散処理を実行させる場合に、前記印刷指示に基づく印刷ジョブを終了させる第1終了通知を前記汎用印刷プログラムに入力する第1通知処理を実行させ、前記汎用印刷プログラムは、前記第1終了通知を受け付けた場合に、前記印刷指示に基づく印刷ジョブを終了する、
    ことを特徴とするサポートプログラム。
  11. 請求項10に記載するサポートプログラムにおいて、
    前記コンピュータに、
    前記印刷指示に基づく印刷ジョブをキャンセルするキャンセル条件を満たした場合に、第2終了通知を入力する前記汎用印刷プログラムに第2通知処理を実行させ、前記汎用印刷プログラムは、前記第2終了通知を受け付けた場合に、前記印刷指示に基づく前記印刷ジョブをキャンセルし、前記第2終了通知は、前記第1終了通知とは異なる通知である、
    ことを特徴とするサポートプログラム。
  12. 請求項1から請求項11のいずれか1つに記載するサポートプログラムにおいて、
    前記判断処理では、
    前記印刷指示によって示される前記印刷パラメータに特定のパラメータが設定されていることを、前記分散条件とする、
    ことを特徴とするサポートプログラム。
  13. 請求項12に記載するサポートプログラムにおいて、
    前記印刷パラメータには、ページ数が含まれ、
    前記特定のパラメータは、所定値よりも大きいページ数である、
    ことを特徴とするサポートプログラム。
  14. 請求項13に記載するサポートプログラムにおいて、
    前記印刷パラメータには、印刷の部数が含まれ、
    前記特定のパラメータは、2以上の閾値よりも大きい部数である、
    ことを特徴とするサポートプログラム。
  15. コンピュータとメモリとを備える情報処理装置であって、
    前記情報処理装置には、前記情報処理装置と接続するプリンタに対応するサポートプログラムが組み込まれ、
    前記情報処理装置のオペレーティングシステムは、あらかじめ組み込まれたプログラムである汎用印刷プログラムを有しており、
    前記コンピュータは、
    前記汎用印刷プログラムに対して、画像の印刷を前記プリンタに行わせる印刷指示があった場合に、前記サポートプログラムによって、前記印刷指示によって示される印刷パラメータあるいは前記印刷指示にて印刷対象となった画像を示すデータに基づいて、複数のプリンタに分散して印刷する分散条件を満たしているか否かを判断する判断処理と、
    前記印刷指示にて示される印刷ジョブの印刷量のうち一部を、前記汎用印刷プログラムが用いるポートである第1ポートから前記プリンタに送信し、前記印刷ジョブの印刷量のうち残りを、前記第1ポートとは異なる第2ポートから前記プリンタと異なる別のプリンタに送信するための処理である分散処理と、
    を含むポート処理を実行させ、
    前記ポート処理では、
    前記判断処理にて前記分散条件を満たしていると判断した場合には前記分散処理を実行し、前記判断処理にて前記分散条件を満たしていないと判断した場合には前記分散処理を実行しない、
    ことを特徴とする情報処理装置。
  16. 情報処理装置にプリンタが接続され、
    前記情報処理装置には、前記プリンタに対応するサポートプログラムが組み込まれ、
    前記情報処理装置のオペレーティングシステムは、あらかじめ組み込まれたプログラムである汎用印刷プログラムを有しており、
    前記情報処理装置で生成された印刷データに基づく印刷を、前記プリンタに実行させる印刷方法において、
    前記汎用印刷プログラムに対して、画像の印刷を前記プリンタに行わせる印刷指示があった場合に、前記サポートプログラムによって、前記印刷指示によって示される印刷パラメータあるいは前記印刷指示にて印刷対象となった画像を示すデータに基づいて、複数のプリンタに分散して印刷する分散条件を満たしているか否かを判断する判断ステップと、
    前記印刷指示にて示される印刷ジョブの印刷量のうち一部を、前記汎用印刷プログラムが用いるポートである第1ポートから前記プリンタに送信し、前記印刷ジョブの印刷量のうち残りを、前記第1ポートとは異なる第2ポートから前記プリンタと異なる別のプリンタに送信するための処理である分散ステップと、
    を含むポートステップを含み、
    前記ポートステップでは、
    前記判断ステップにて前記分散条件を満たしていると判断した場合には前記分散ステップに移行し、前記判断ステップにて前記分散条件を満たしていないと判断した場合には前記分散ステップに移行しない、
    ことを特徴とする印刷方法。
JP2019020972A 2019-02-07 2019-02-07 サポートプログラム、情報処理装置、および印刷方法 Active JP7259373B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019020972A JP7259373B2 (ja) 2019-02-07 2019-02-07 サポートプログラム、情報処理装置、および印刷方法
US16/774,049 US11086578B2 (en) 2019-02-07 2020-01-28 Non-transitory computer-readable recording medium, information processing apparatus and printing method for selective distributed printing by a plurality of printers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019020972A JP7259373B2 (ja) 2019-02-07 2019-02-07 サポートプログラム、情報処理装置、および印刷方法

Publications (2)

Publication Number Publication Date
JP2020129221A true JP2020129221A (ja) 2020-08-27
JP7259373B2 JP7259373B2 (ja) 2023-04-18

Family

ID=71944829

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019020972A Active JP7259373B2 (ja) 2019-02-07 2019-02-07 サポートプログラム、情報処理装置、および印刷方法

Country Status (2)

Country Link
US (1) US11086578B2 (ja)
JP (1) JP7259373B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023145003A (ja) * 2022-03-28 2023-10-11 ブラザー工業株式会社 サポートプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012058846A (ja) * 2010-09-06 2012-03-22 Seiko Epson Corp 出力先を分散するための印刷データ処理プログラム、印刷データ処理装置、及び、印刷データ処理方法
JP2018025961A (ja) * 2016-08-10 2018-02-15 京セラドキュメントソリューションズ株式会社 画像形成システム、画像形成方法及び情報処理装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7061635B1 (en) * 1999-10-05 2006-06-13 Canon Kabushiki Kaisha Information processing apparatus, distributed printing method, and storage medium
JP2009175529A (ja) * 2008-01-25 2009-08-06 Sharp Corp 画像形成装置
US8693012B2 (en) * 2008-09-04 2014-04-08 Xerox Corporation Run cost optimization for multi-engine printing system
JP6372075B2 (ja) * 2013-12-20 2018-08-15 株式会社リコー 情報処理装置、情報処理方法及びプログラム
JP6631278B2 (ja) 2016-01-29 2020-01-15 ブラザー工業株式会社 ドライバプログラム、及びドライバプログラムとプリンタとのセット

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012058846A (ja) * 2010-09-06 2012-03-22 Seiko Epson Corp 出力先を分散するための印刷データ処理プログラム、印刷データ処理装置、及び、印刷データ処理方法
JP2018025961A (ja) * 2016-08-10 2018-02-15 京セラドキュメントソリューションズ株式会社 画像形成システム、画像形成方法及び情報処理装置

Also Published As

Publication number Publication date
US20200257479A1 (en) 2020-08-13
US11086578B2 (en) 2021-08-10
JP7259373B2 (ja) 2023-04-18

Similar Documents

Publication Publication Date Title
JP7405217B2 (ja) サポートプログラム、情報処理装置、および印刷方法
JP7293684B2 (ja) サポートプログラム、情報処理装置、および印刷方法
JP7172672B2 (ja) アプリケーションプログラム、情報処理装置、および印刷方法
JP7517506B2 (ja) サポートプログラム、情報処理装置、および印刷方法
JP7435697B2 (ja) サポートプログラム、情報処理装置、および印刷方法
WO2021065126A1 (ja) サポートプログラム、情報処理装置、および印刷方法
JP7259373B2 (ja) サポートプログラム、情報処理装置、および印刷方法
US11064088B2 (en) Non-transitory computer-readable recording medium, information processing apparatus and printing method
US11604613B2 (en) Support program for driverless general-purpose print program, information processing device, and printing method for aggregate printing
WO2021230349A1 (ja) サポートプログラム、情報処理装置、プログラムセット、および、印刷方法
JP7200632B2 (ja) 印刷システム、プリンタ、およびサポートプログラム
WO2022163430A1 (ja) サポートプログラム
WO2022163428A1 (ja) サポートプログラム
JP2012181695A (ja) 情報処理装置、プリントシステム、制御方法、及び、プログラム
JP2021179912A (ja) サポートプログラム、情報処理装置、および印刷方法
JP2021179913A (ja) サポートプログラム、プログラムセット、情報処理装置、および印刷方法
JP2020047094A (ja) 印刷指示装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221208

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: 20230307

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230320

R150 Certificate of patent or registration of utility model

Ref document number: 7259373

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150