(57)【要約】      （修正有）【課題】ＯＳ標準の印刷プログラムが組み込まれた情報処理装置において、その印刷プログラムに対して印刷指示が行われた場合であっても、早期に印刷を完了させることが可能なサポートプログラム、情報処理装置及び印刷方法を提供する。【解決手段】ＰＣ１に組み込まれた補助プログラム４２は、ＯＳにあらかじめ組み込まれた汎用印刷プログラム４１に対して印刷指示があった場合に、印刷パラメータあるいは印刷対象となった画像を示すデータに基づいて、複数のプリンタに分散して印刷する分散条件を満たしているか否かを判断し、分散条件を満たしていると判断した場合には、印刷ジョブの印刷量のうち一部を、汎用印刷プログラム４１が用いるポートである第１ポートからプリンタ２に送信し、残りを第２ポートからプリンタ３に送信するための処理を実行する。【選択図】図３
2020129221.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置のコンピュータによって実行可能であり、前記情報処理装置と接続するプリンタに対応するサポートプログラムであって、
前記コンピュータに、
前記情報処理装置のオペレーティングシステムにあらかじめ組み込まれた汎用印刷プログラムに対して、画像の印刷を前記プリンタに行わせる印刷指示があった場合に、前記印刷指示によって示される印刷パラメータあるいは前記印刷指示にて印刷対象となった画像を示すデータに基づいて、複数のプリンタに分散して印刷する分散条件を満たしているか否かを判断する判断処理と、
前記印刷指示にて示される印刷ジョブの印刷量のうち一部を、前記汎用印刷プログラムが用いるポートである第１ポートから前記プリンタに送信し、前記印刷ジョブの印刷量のうち残りを、前記第１ポートとは異なる第２ポートから前記プリンタと異なる別のプリンタに送信するための処理である分散処理と、
を含むポート処理を実行させ、
前記ポート処理では、
前記判断処理にて前記分散条件を満たしていると判断した場合には前記分散処理を実行し、前記判断処理にて前記分散条件を満たしていないと判断した場合には前記分散処理を実行しない、
ことを特徴とするサポートプログラム。
【請求項２】
請求項１に記載するサポートプログラムにおいて、
前記分散処理では、
前記印刷指示にて示される印刷ジョブの印刷量のうち一部を、前記サポートプログラムによって、前記第１ポートから前記プリンタに送信し、
さらに前記印刷ジョブの印刷量のうち残りを、前記サポートプログラムによって、前記第２ポートから前記別のプリンタに送信する、
を実行させる、
ことを特徴とするサポートプログラム。
【請求項３】
請求項１に記載するサポートプログラムにおいて、
前記分散処理では、
前記印刷指示にて示される印刷ジョブの印刷量のうち一部を、前記サポートプログラムによって、前記第１ポートから前記プリンタに送信し、
さらに前記印刷ジョブの印刷量のうち残りを前記第２ポートから前記別のプリンタに送信する新たな印刷ジョブを生成し、前記新たな印刷ジョブを前記オペレーティングシステムに引き渡すジョブ生成処理を実行し、前記オペレーティングシステムに引き渡された前記新たな印刷ジョブは、前記第２ポートから前記別のプリンタに送信される、
ことを特徴とするサポートプログラム。
【請求項４】
請求項３に記載するサポートプログラムにおいて、
前記ジョブ生成処理では、
前記汎用印刷プログラムに対して、画像の印刷を前記別のプリンタに行わせる前記新たな印刷ジョブを生成し、前記汎用印刷プログラムは、前記別のプリンタのモデルに対応する別のサポートプログラムを動作させ、前記別のサポートプログラムによって、前記ジョブ生成処理にて生成された前記新たな印刷ジョブを、前記第２ポートによって前記別のプリンタに送信する、
ことを特徴とするサポートプログラム。
【請求項５】
請求項１から請求項４のいずれか１つに記載するサポートプログラムにおいて、
前記コンピュータに、
前記サポートプログラムによる印刷ジョブの送信中にエラーを検知した場合に、前記情報処理装置の表示デバイスにエラーを示す情報を表示させるエラー処理を実行させる、
ことを特徴とするサポートプログラム。
【請求項６】
請求項１から請求項５に記載するサポートプログラムにおいて、
前記コンピュータに、
前記印刷指示があったことに基づいて前記汎用印刷プログラムが印刷データを生成した後に、前記ポート処理を実行させる、
ことを特徴とするサポートプログラム。
【請求項７】
請求項１から請求項５に記載するサポートプログラムにおいて、
前記コンピュータに、
前記印刷指示があったことに基づいて前記汎用印刷プログラムが印刷データを生成する前に、前記ポート処理を実行させる、
ことを特徴とするサポートプログラム。
【請求項８】
請求項１から請求項５に記載するサポートプログラムにおいて、
前記コンピュータに、
前記印刷指示があったことに基づいて前記汎用印刷プログラムが印刷データを生成する前に、前記判断処理を実行させ、
さらに前記分散条件には、
前記印刷指示による印刷対象となる画像を分割する第１分散条件と、前記印刷指示による印刷対象となる前記画像を分割しない第２分散条件とがあり、
さらに前記コンピュータに、
前記第１分散条件を満たしている場合は、前記汎用印刷プログラムが印刷データを生成する前に、前記分散処理を実行させ、前記第２分散条件を満たしている場合は、前記汎用印刷プログラムが前記印刷データを生成した後に、前記分散処理を実行させる、
ことを特徴とするサポートプログラム。
【請求項９】
請求項８に記載するサポートプログラムにおいて、
前記判断処理では、
前記印刷指示にて示される印刷ジョブに同じ画像を複数部数印刷する設定がなされている場合、前記第２分散条件を満たすと判断し、
前記分散処理では、
前記印刷ジョブの印刷量を、部数で分ける、
ことを特徴とするサポートプログラム。
【請求項１０】
請求項１から請求項９のいずれか１つに記載するサポートプログラムにおいて、
前記コンピュータに、
前記判断処理にて前記分散条件を満たしていると判断し、前記印刷ジョブを前記汎用印刷プログラムから送信させない前記分散処理を実行させる場合に、前記印刷指示に基づく印刷ジョブを終了させる第１終了通知を前記汎用印刷プログラムに入力する第１通知処理を実行させ、前記汎用印刷プログラムは、前記第１終了通知を受け付けた場合に、前記印刷指示に基づく印刷ジョブを終了する、
ことを特徴とするサポートプログラム。
【請求項１１】
請求項１０に記載するサポートプログラムにおいて、
前記コンピュータに、
前記印刷指示に基づく印刷ジョブをキャンセルするキャンセル条件を満たした場合に、第２終了通知を入力する前記汎用印刷プログラムに第２通知処理を実行させ、前記汎用印刷プログラムは、前記第２終了通知を受け付けた場合に、前記印刷指示に基づく前記印刷ジョブをキャンセルし、前記第２終了通知は、前記第１終了通知とは異なる通知である、
ことを特徴とするサポートプログラム。
【請求項１２】
請求項１から請求項１１のいずれか１つに記載するサポートプログラムにおいて、
前記判断処理では、
前記印刷指示によって示される前記印刷パラメータに特定のパラメータが設定されていることを、前記分散条件とする、
ことを特徴とするサポートプログラム。
【請求項１３】
請求項１２に記載するサポートプログラムにおいて、
前記印刷パラメータには、ページ数が含まれ、
前記特定のパラメータは、所定値よりも大きいページ数である、
ことを特徴とするサポートプログラム。
【請求項１４】
請求項１３に記載するサポートプログラムにおいて、
前記印刷パラメータには、印刷の部数が含まれ、
前記特定のパラメータは、２以上の閾値よりも大きい部数である、
ことを特徴とするサポートプログラム。
【請求項１５】
コンピュータとメモリとを備える情報処理装置であって、
前記情報処理装置には、前記情報処理装置と接続するプリンタに対応するサポートプログラムが組み込まれ、
前記情報処理装置のオペレーティングシステムは、あらかじめ組み込まれたプログラムである汎用印刷プログラムを有しており、
前記コンピュータは、
前記汎用印刷プログラムに対して、画像の印刷を前記プリンタに行わせる印刷指示があった場合に、前記サポートプログラムによって、前記印刷指示によって示される印刷パラメータあるいは前記印刷指示にて印刷対象となった画像を示すデータに基づいて、複数のプリンタに分散して印刷する分散条件を満たしているか否かを判断する判断処理と、
前記印刷指示にて示される印刷ジョブの印刷量のうち一部を、前記汎用印刷プログラムが用いるポートである第１ポートから前記プリンタに送信し、前記印刷ジョブの印刷量のうち残りを、前記第１ポートとは異なる第２ポートから前記プリンタと異なる別のプリンタに送信するための処理である分散処理と、
を含むポート処理を実行させ、
前記ポート処理では、
前記判断処理にて前記分散条件を満たしていると判断した場合には前記分散処理を実行し、前記判断処理にて前記分散条件を満たしていないと判断した場合には前記分散処理を実行しない、
ことを特徴とする情報処理装置。
【請求項１６】
情報処理装置にプリンタが接続され、
前記情報処理装置には、前記プリンタに対応するサポートプログラムが組み込まれ、
前記情報処理装置のオペレーティングシステムは、あらかじめ組み込まれたプログラムである汎用印刷プログラムを有しており、
前記情報処理装置で生成された印刷データに基づく印刷を、前記プリンタに実行させる印刷方法において、
前記汎用印刷プログラムに対して、画像の印刷を前記プリンタに行わせる印刷指示があった場合に、前記サポートプログラムによって、前記印刷指示によって示される印刷パラメータあるいは前記印刷指示にて印刷対象となった画像を示すデータに基づいて、複数のプリンタに分散して印刷する分散条件を満たしているか否かを判断する判断ステップと、
前記印刷指示にて示される印刷ジョブの印刷量のうち一部を、前記汎用印刷プログラムが用いるポートである第１ポートから前記プリンタに送信し、前記印刷ジョブの印刷量のうち残りを、前記第１ポートとは異なる第２ポートから前記プリンタと異なる別のプリンタに送信するための処理である分散ステップと、
を含むポートステップを含み、
前記ポートステップでは、
前記判断ステップにて前記分散条件を満たしていると判断した場合には前記分散ステップに移行し、前記判断ステップにて前記分散条件を満たしていないと判断した場合には前記分散ステップに移行しない、
ことを特徴とする印刷方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に開示される技術分野は、プリンタの制御をサポートするサポートプログラム、情報処理装置、および印刷方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータ等の情報処理装置からプリンタを制御する技術として、情報処理装置にプリンタドライバをインストールし、プリンタドライバによって印刷データを生成し、その印刷データをプリンタに送信する構成が広く知られている（例えば、特許文献１）。プリンタドライバは、プリンタのメーカから提供され、そのプリンタが有する各種の機能に対応しており、そのプリンタを十分に利用することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−１３４７１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、前述したプリンタドライバを利用せず、オペレーティングシステム（ＯＳ）に標準に組み込まれている印刷プログラムによってプリンタを制御する技術が実用化されている。この技術では、ＯＳがプリンタを検知するとＯＳ標準の印刷プログラムとの関連付けを行い、以後、そのプリンタに対する印刷指示を受け付けた場合に、プリンタドライバを用いずに、ＯＳ標準の印刷プログラムによる印刷が可能になる。
【０００５】
しかしながら、ＯＳ標準の印刷プログラムによる印刷では、あらかじめ決められた印刷プログラムがサポートするポートを用いて印刷データを送信し、プリンタにおいてあらかじめ決められたアルゴリズムに従って印刷を行うことになるが、必ずしもプリンタに最適な処理を行っているとは言えない。そのため、印刷完了に時間がかかる場合がある。
【０００６】
本明細書は、ＯＳ標準の印刷プログラムが組み込まれた情報処理装置において、その印刷プログラムに対して印刷指示が行われた場合であっても、早期に印刷を完了させることが可能な技術を開示する。
【課題を解決するための手段】
【０００７】
上述した課題の解決を目的としてなされたサポートプログラムは、情報処理装置のコンピュータによって実行可能であり、前記情報処理装置と接続するプリンタに対応するサポートプログラムであって、前記コンピュータに、前記情報処理装置のオペレーティングシステムにあらかじめ組み込まれた汎用印刷プログラムに対して、画像の印刷を前記プリンタに行わせる印刷指示があった場合に、前記印刷指示によって示される印刷パラメータあるいは前記印刷指示にて印刷対象となった画像を示すデータに基づいて、複数のプリンタに分散して印刷する分散条件を満たしているか否かを判断する判断処理と、前記印刷指示にて示される印刷ジョブの印刷量のうち一部を、前記汎用印刷プログラムが用いるポートである第１ポートから前記プリンタに送信し、前記印刷ジョブの印刷量のうち残りを、前記第１ポートとは異なる第２ポートから前記プリンタと異なる別のプリンタに送信するための処理である分散処理と、を含むポート処理を実行させ、前記ポート処理では、前記判断処理にて前記分散条件を満たしていると判断した場合には前記分散処理を実行し、前記判断処理にて前記分散条件を満たしていないと判断した場合には前記分散処理を実行しない、ことを特徴としている。
【０００８】
上述したサポートプログラムによれば、印刷パラメータに基づいて印刷を分散させる分散条件を設け、その条件を満たしている場合に印刷ジョブを分割し、分割された印刷ジョブの１つを第２ポートを利用して別のプリンタに一部の印刷を行わせる。これにより、早期の印刷完了が期待できる。
【０００９】
上記装置の機能を実現するための制御方法、コンピュータプログラム、および当該コンピュータプログラムを格納するコンピュータにて読取可能な記憶媒体も、新規で有用である。
【発明の効果】
【００１０】
本明細書に開示される技術によれば、ＯＳ標準の印刷プログラムが組み込まれた情報処理装置において、その印刷プログラムに対して印刷指示が行われた場合であっても、早期に印刷を完了させることが可能な技術が実現される。
【図面の簡単な説明】
【００１１】
【図１】印刷システムの電気的構成を示すブロック図である。
【図２】印刷システムによる印刷動作の順序の例を示すシーケンス図である。
【図３】第１の形態における分散印刷の概要を示す説明図である。
【図４】分散条件の例を示す図である。
【図５】第１の形態における補助プログラムの処理の手順を示すフローチャートである。
【図６】第２の形態における分散印刷の手順を示すシーケンス図である。
【図７】第２の形態における分散印刷の新たな補助プログラムを動作させた際の手順を示すシーケンス図である。
【発明を実施するための形態】
【００１２】
以下、実施の形態のプログラムを利用する印刷システムについて、添付図面を参照しつつ詳細に説明する。本形態は、パーソナルコンピュータ（以下、「ＰＣ」とする）とプリンタとを含む印刷システムを具体化した実施の形態を開示するものである。
【００１３】
第１の形態のプログラムが実行される印刷システムの構成の例を、図１に示す。図１に示すシステムには、ＰＣ１と、プリンタ２と、プリンタ３と、が含まれる。ＰＣ１は、情報処理装置の一例である。プリンタ２およびプリンタ３は、印刷機能を有する装置であり、ローカル通信またはネットワーク通信を介して、ＰＣ１と通信可能である。
【００１４】
ＰＣ１は、例えば、図１に示すように、コントローラ１０と、ユーザインタフェース（以下、「ＵＩ」とする）２０と、通信インタフェース（以下、「通信ＩＦ」とする）３０と、を備えている。ＵＩ２０及び通信ＩＦ３０は、コントローラ１０に電気的に接続されている。
【００１５】
ＵＩ２０は、各種の表示を行い、ユーザの指示入力を受け付けるハードウェアを含む。ＵＩ２０は、表示機能と入力受付機能との両方の機能を有するタッチパネルであっても良いし、表示機能を有するディスプレイと入力受付機能を有するキーボードやマウス等との組合せであっても良い。
【００１６】
通信ＩＦ３０は、プリンタ２やプリンタ３との通信を行うためのハードウェアや、インターネットへのアクセスを行うためのハードウェアを含む。通信ＩＦ３０は、通信方式の異なる複数のインタフェースを含んでいても良い。通信方式としては、例えば、ネットワーク通信、ＵＳＢ通信がある。また、有線通信であっても無線通信であってもよい。
【００１７】
コントローラ１０は、ＣＰＵ１１と、メモリ１２と、を含む。ＣＰＵ１１は、コンピュータの一例である。メモリ１２は、ＲＯＭと、ＲＡＭと、不揮発性メモリと、を含み、各種のアプリケーションプログラム（以下、「アプリ」とする）などのプログラムや各種のデータなどを記憶する。なお、本明細書では、メモリの詳細を区別しない。ＣＰＵ１１は、メモリ１２から読み出したプログラムに従って、また、ユーザの指示に基づいて、各種の処理を実行する。なお、図１中のコントローラ１０は、ＰＣ１の制御に利用されるハードウェアやソフトウェアを纏めた総称であって、実際にＰＣ１に存在する単一のハードウェアを表すとは限らない。
【００１８】
メモリ１２の一例は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体である。ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体には、上記の例の他に、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の記録媒体も含まれる。また、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙな媒体は、ｔａｎｇｉｂｌｅな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、ｎｏｎ−ｔｒａｎｓｉｔｏｒｙなコンピュータが読み取り可能なストレージ媒体には含まれない。
【００１９】
メモリ１２には、例えば、図１に示すように、汎用印刷プログラム４１を含むオペレーティングシステム（以下、「ＯＳ」とする）２１と、補助プログラム４２と、編集アプリ４３と、が記憶されている。補助プログラム４２は、サポートプログラムの一例である。補助プログラム４２は、例えば、マイクロソフト社が公開した仕様に基づいてプリンタベンダによって作成された、ハードウェアサポートアプリ（略称、ＨＳＡ）である。ＯＳ２１は、例えば、マイクロソフトウィンドウズ（登録商標）、ＭａｃＯＳ（登録商標）、Ｌｉｎｕｘ（登録商標）である。なお、メモリ１２には、図示したもの以外にも、接続されているプリンタの情報を含む各種のデータや、ブラウザ等の各種のプログラムが記憶されている。
【００２０】
汎用印刷プログラム４１は、ＰＣ１からプリンタ２等の各種のプリンタで印刷を実行させるためのアプリであり、ＯＳ２１にあらかじめ組み込まれているＯＳ標準の印刷プログラムである。本形態の汎用印刷プログラム４１は、印刷対象の画像データに基づいて、プリンタが対応可能な印刷データを生成するプログラムである。
【００２１】
汎用印刷プログラム４１は、各プリンタのベンダによって提供される複数種類のモデルのプリンタに適用可能な汎用のアプリであり、各モデルに共通する動作を各プリンタに行わせるプログラムである。あるいは、汎用印刷プログラム４１は、ＯＳ２１にあらかじめ組み込むために、各プリンタのベンダによってＯＳ２１のベンダに提供されるプログラム、例えば、ＯＳ２１にあらかじめ組み込むために提供されるプリンタドライバの一種であっても良い。
【００２２】
補助プログラム４２は、汎用印刷プログラム４１の起動に付随してＯＳ２１からの指示に基づいて処理を実行するプログラムであり、対象のハードウェアの制御をサポートするアプリである。補助プログラム４２は、例えば、汎用印刷プログラム４１から起動される。補助プログラム４２は、プリンタ２等のベンダによってプリンタのタイプごとに用意されるプログラムである。例えば、インクジェットプリンタ用の補助プログラム４２やレーザプリンタ用の補助プログラム４２が用意される。プリンタのタイプごとに限らず、プリンタのモデルごとやプリンタのモデルのシリーズごとに用意される補助プログラム４２が有っても良い。
【００２３】
プリンタのベンダは、ＯＳ２１のベンダが指定する手順に従って、補助プログラム４２をＯＳ２１のベンダが提供するプラットフォームに登録する。ＯＳ２１は、ＰＣ１に新たにプリンタ２が接続され、そのプリンタ２に対応する補助プログラム４２がプラットフォームに登録されている場合には、当該補助プログラム４２を補助プログラム４２が格納されているサーバからダウンロードしてＰＣ１に組み込む。
【００２４】
そして、ＯＳ２１は、組み込んだ補助プログラム４２の識別情報を新たに接続されたプリンタのプリンタ情報に対応付けて、メモリ１２に記憶させる。複数のモデルのプリンタが接続されているＰＣ１では、各モデルのタイプに対応するそれぞれの補助プログラムが組み込まれ、各プリンタと各補助プログラムとを対応付ける情報がメモリ１２に記憶される。つまり、メモリ１２には、ＰＣ１に接続されている各プリンタのプリンタ情報として、当該プリンタのモデル情報やアクセス情報とともに、対応する補助プログラム４２の情報が記憶される。
【００２５】
編集アプリ４３は、例えば、画像データや文書データの作成や編集を行うためのアプリである。編集アプリ４３は、例えば、マイクロソフト  ワード（登録商標）、パワーポイント（登録商標）である。また、プリンタ２やプリンタ３のベンダから提供されるアプリであってもよい。編集アプリ４３は、プリンタ２に所定の動作を行わせる指示を含むユーザ操作を受け付ける。具体的には、編集アプリ４３は、ＵＩ２０を介して、例えば、プリンタ２に印刷を実行させる印刷指示を受け付ける。
【００２６】
なお、実施の形態における処理およびフローチャートの各処理ステップは、基本的に、補助プログラム４２などのプログラムに記述された命令に従ったＣＰＵ１１の処理を示す。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「取得」、「受付」、「制御」等の処理は、ＣＰＵ１１の処理を表している。ＣＰＵ１１による処理は、ＯＳ２１のＡＰＩを用いたハードウェア制御も含む。本明細書では、ＯＳ２１の詳細な記載を省略して各プログラムの動作を説明する。すなわち、以下の説明において、「プログラムＢがハードウェアＣを制御する」という趣旨の記載は、「プログラムＢがＯＳ２１のＡＰＩを用いてハードウェアＣを制御する」ことを指してもよい。また、プログラムに記述された命令に従ったＣＰＵ１１の処理を、省略した文言で記載することがある。例えば、「ＣＰＵ１１が行う」のようにプログラムを省略して記載することがある。また、プログラムに記述された命令に従ったＣＰＵ１１の処理を、「プログラムＡが行う」のようにＣＰＵを省略した文言で記載することがある。
【００２７】
なお、「取得」は要求を必須とはしない概念で用いる。すなわち、ＣＰＵ１１が要求することなくデータを受信するという処理も、「ＣＰＵ１１がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。また、「要求する」、「指示する」とは、要求していることを示す情報や、指示していることを示す情報を相手に出力することを示す概念である。また、要求していることを示す情報や指示していることを示す情報のことを、単に、「要求」、「指示」とも記載する。
【００２８】
また、ＣＰＵ１１による、情報Ａは事柄Ｂであることを示しているか否かを判断する処理を、「情報Ａから、事柄Ｂであるか否かを判断する」のように概念的に記載することがある。ＣＰＵ１１による、情報Ａが事柄Ｂであることを示しているか、事柄Ｃであることを示しているか、を判断する処理を、「情報Ａから、事柄Ｂであるか事柄Ｃであるかを判断する」のように概念的に記載することがある。
【００２９】
次に、第１の形態の補助プログラム４２の構成、および補助プログラム４２の動作を含む印刷手順の一例について、図２のシーケンス図を参照して説明する。補助プログラム４２は、編集アプリ４３等を介して、補助プログラム４２に対応するプリンタが指定された状態で汎用印刷プログラム４１を使用して印刷する印刷指示を受け付けた場合に、汎用印刷プログラム４１から実行指示されるプログラムである。以下では、ＰＣ１がＵＩ２０を介して、例えば、編集アプリ４３にて、印刷対象の画像データが指定された状態で、汎用印刷プログラム４１を介してのプリンタ２での印刷実行の指示を受け付けた場合であって、プリンタ２のモデルのタイプに対応する補助プログラム４２がＰＣ１に組み込まれている場合について説明する。
【００３０】
まず、編集アプリ４３は、ＵＩ２０を介して、印刷対象の画像の指定と、印刷実行の指示入力を受け付ける（矢印Ａ）。編集アプリ４３が表示した画像は、印刷対象の画像の例である。編集アプリ４３は、例えば、編集アプリ４３にて編集された文書や、編集アプリ４３にて読み込んだ写真などを画像として表示する。そして、印刷指示を受け付けた編集アプリ４３は、受け付けた印刷指示の内容を示す印刷実行通知をＯＳ２１に渡す。なお、図２では、ＯＳ２１の動作を省略して示している。
【００３１】
ＯＳ２１は、汎用印刷プログラム４１を使用する印刷実行通知を受け付けた場合、汎用印刷プログラム４１を実行させ、汎用印刷プログラム４１に印刷実行通知を渡す（矢印Ｂ）。汎用印刷プログラム４１は、印刷実行通知にて、印刷指示に含まれる各種の情報、例えば、印刷させるプリンタを示す情報、アプリにて設定された印刷パラメータを示す情報、印刷対象となる画像データを示す情報、印刷を指示したユーザを識別する情報を、取得できる。なお、後述するように、これらの情報は、補助プログラム４２でも使用される。
【００３２】
汎用印刷プログラム４１は、印刷実行通知を受け付けると、プリンタ用のデータである印刷データを生成する（矢印Ｃ）。汎用印刷プログラム４１は、印刷データを生成するにあたって、種々の処理を実行する。
【００３３】
具体的に、汎用印刷プログラム４１は、印刷実行通知に含まれる画像データの形式を中間画像データの形式に変換することで中間画像データを生成し、中間画像データを含む印刷ジョブを生成する（矢印Ｃ）。編集アプリ４３に含まれる画像データは種々のタイプのものであり、汎用印刷プログラム４１は、受け取った画像データを、印刷データの生成に適した中間画像データに変換する。なお、印刷実行通知に含まれる画像データが印刷データの生成に適したデータであれば、中間画像データの生成を省略し、そのまま中間画像データとしても良い。中間画像データは、例えば、ＸＰＳデータである。
【００３４】
さらに、汎用印刷プログラム４１は、印刷実行通知に含まれる情報に基づいて、印刷を実行させる装置として指定されているプリンタを特定する。汎用印刷プログラム４１は、例えば、プリンタ２が指定されている場合、メモリ１２に記憶されているプリンタ情報に含まれるプリンタのモデル情報に基づいて、プリンタ２のモデルを特定する。そして、印刷指示にて指定されたプリンタであるプリンタ２に対応する補助プログラム４２がメモリ１２に記憶されていることから、汎用印刷プログラム４１による印刷データの生成を開始する前に、汎用印刷プログラム４１は、補助プログラム４２の処理の実行命令を出力し、補助プログラム４２を動作させることが可能である。この場合、補助プログラム４２への実行命令が汎用印刷プログラム４１から出力される。
【００３５】
補助プログラム４２は複数の処理が実行可能である。例えば、中間画像データを生成した後、印刷データの生成開始前に、印刷パラメータを編集する処理や、中間画像データの画像を編集する処理を行ってもよい。例えば、印刷パラメータを編集する場合、補助プログラム４２は、例えば、印刷パラメータを読み出し、読み出した印刷パラメータに関する設定画面をＵＩ２０に表示させ、編集アプリ４３にて設定された印刷パラメータの変更や、編集アプリ４３では受け付けていない印刷パラメータの設定を受け付ける。さらに、補助プログラム４２は、設定画面にて受け付けた内容で，印刷ジョブの印刷パラメータを編集する。補助プログラム４２は、印刷ジョブの印刷パラメータに上書きすることで編集しても良いし、汎用印刷プログラム４１に印刷パラメータを提供することで、汎用印刷プログラム４１を介して印刷パラメータを編集しても良い。また、中間画像データの画像を編集する場合、例えば、印刷パラメータの設定に応じた加工を中間画像データの画像に施す。画像の加工としては、例えば画像の集約や分割、画像の拡大や縮小、ウォータマーク等の画像の合成が該当する。補助プログラム４２は、各処理を終了する際、終了通知を汎用印刷プログラム４１に通知する。汎用印刷プログラム４１はその終了通知を受け付けると、編集内容を反映する。
【００３６】
本形態では、汎用印刷プログラム４１は、中間画像データを生成した後、必要に応じて補助プログラム４２を動作させ、その後、その中間画像データに基づいて印刷データを生成する。汎用印刷プログラム４１によって生成される印刷データは、各種のプリンタにて印刷に使用できる形式の印刷データである。印刷データは、例えば、ＰＷＧＲａｓｔｅｒデータやＰＤＦデータである。
【００３７】
印刷データの生成の終了後、汎用印刷プログラム４１は、補助プログラム４２の印刷データ編集処理に対する実行命令を出力する（矢印Ｄ）。印刷データ編集処理の実行命令には、印刷パラメータと印刷データとが付される。
【００３８】
汎用印刷プログラム４１からの実行命令を受け付けた補助プログラム４２は、印刷データ編集処理を開始する（矢印Ｅ）。印刷データ編集処理は、汎用印刷プログラム４１による印刷データの生成が完了した後に実行される処理である。補助プログラム４２は、印刷データ編集処理の実行命令にて、印刷パラメータやプリンタの情報に加え、生成が終了している印刷データも汎用印刷プログラム４１から取得できる。
【００３９】
補助プログラム４２は、印刷データ編集処理として、例えば、印刷データの編集を行う。補助プログラム４２は、例えば、プリンタ２に特有な機能を実行させるためのコマンドを印刷データに付加する。プリンタ２に特有な機能としては、例えば、トナーセーブ設定、フィニッシャの設定、がある。プリンタ２が自身でウォータマークやヘッダ／フッタ等を画像に付加できる機能を有している場合、印刷データ編集処理では、これらの機能を実行させるコマンドを印刷データに付加しても良い。
【００４０】
その後、補助プログラム４２は、分散印刷を行うか否かの分散判定を行う（矢印Ｆ）。第１の形態の印刷システムでは、汎用印刷プログラム４１に対して、画像の印刷をプリンタ２に行わせる印刷指示を入力した場合に、汎用印刷プログラム４１からプリンタ２に印刷データを送信するのではなく、補助プログラム４２から直接プリンタ２に印刷データを送信することができる。このように、汎用印刷プログラム４１に代わって補助プログラム４２によって行う印刷データの送信を「代替送信」とする。さらに、印刷ジョブの印刷量を分割し、印刷ジョブの印刷量のうち一部をプリンタ２に送信し、残りを、代替送信を利用して別のプリンタ（本形態ではプリンタ３）に送信する。この１つの印刷ジョブを分割して複数のプリンタに分散して印刷させる印刷を「分散印刷」とする。なお、補助プログラム４２による送信であっても、汎用印刷プログラム４１による送信であっても、実際にはＯＳ２１による通信制御を介して行われるが、ＯＳ２１の通信制御は省略して説明する。
【００４１】
分散印刷を行う場合であっても、図３に示すように、編集アプリ４３から汎用印刷プログラム４１に対して印刷実行通知が入力され、汎用印刷プログラム４１が補助プログラム４２に対して実行命令を出力することで、補助プログラム４２を動作させる。補助プログラム４２は、汎用印刷プログラム４１から印刷パラメータおよび印刷データを取得し、１つの印刷ジョブを２つの印刷ジョブに分割する。
【００４２】
また、第１の形態の印刷システムでは、各分割印刷ジョブを送信する経路として、第１ポートから第１分割印刷ジョブを送信する第１経路Ｘ１と、第２ポートから第２分割印刷ジョブを送信する第２経路Ｘ２と、の少なくとも２つの経路をサポートしており、代替送信を行う場合、ポートを選択することによって、各分割印刷ジョブを送信する経路が決定される。
【００４３】
補助プログラム４２によって選択されるポートは、第１ポートを、汎用印刷プログラム４１がプリンタとの通信に用いるポートとし、例えばＩＰＰ（Internet Printing Protocol）で通信するように設定されたポートとする。一方、第２ポートを、汎用印刷プログラム４１が用いないポートであって、印刷に汎用的に用いられているポートとし、例えばＴＣＰやＵＤＰにおけるポート９１００を用いたＲＡＷ印刷に用いるように設定されたポートとする。なお、本形態で示したポートは、一例であって、他のポートを利用してもよい。例えば、第２ポートとして、他のネットワークのポートや、ネットワークのポート以外のポート、例えばＵＳＢのポートや、無線通信のポートを利用してもよい。
【００４４】
プリンタ２は、第１ポートから送信される第１分割印刷ジョブを受信した場合、第１画像形成プログラム２０１によって、その受信した第１分割印刷ジョブの印刷データに基づく画像処理を行う。また、プリンタ３は、第２ポートから送信される第２分割印刷ジョブを受信した場合、第２画像形成プログラム２０２によって、その受信した第２分割印刷ジョブの印刷ジョブの印刷データに基づく画像処理を行う。第１画像形成プログラム２０１および第２画像形成プログラム２０２は、それぞれ対応するポートから送信される印刷データに基づく画像処理を行うプログラムであり、それぞれの印刷データに適したアルゴリズムに従った処理を行う。
【００４５】
第１の形態では、分散印刷を行うか否かの分散判定を、汎用印刷プログラム４１から受け取った印刷パラメータあるいは印刷データに基づいて、所定の分散条件を満たしているか否かによって行う。分散条件の例を図４に示す。例えば、本形態では、図４（Ａ）に示すように、印刷部数が設定されており、その部数が１０部よりも大きいことを、分散条件に適用できる。印刷部数が大きい場合は、印刷部数が小さい場合と比較して印刷完了に時間がかかる。そのため、分散印刷を行うことで印刷完了の早期化が期待できる。以下、印刷部数を「部数」とする。なお、閾値となる部数は一例であり、１０部に限るものではない。
【００４６】
部数は、印刷パラメータに含まれている場合と、ジョブヘッダ等の中間画像データの先頭領域に含まれている場合と、ページヘッダ等の中間画像データの各ページの先頭領域に含まれている場合と、印刷データの先頭領域に含まれている場合と、印刷データの各ページの先頭領域に含まれている場合と、がある。
【００４７】
そのため、部数の取得タイミングは、部数がどこに含まれているかによって異なる。印刷パラメータに含まれている場合、補助プログラム４２が印刷パラメータを最初に取得できるタイミング、すなわち補助プログラム４２が汎用印刷プログラム４１から呼び出された直後のタイミングであっても、部数を取得できる。中間画像データの先頭領域に含まれている場合、汎用印刷プログラム４１が中間画像データを生成した後のタイミングで取得できる。印刷データに含まれている場合、汎用印刷プログラム４１が印刷データを生成した後のタイミングで取得できる。
【００４８】
なお、部数に基づく印刷ジョブの分割は、全ページ分の印刷データが生成された後に実施可能になる。そのため、部数に基づく分散判定のタイミングは、補助プログラム４２が印刷パラメータを最初に取得したタイミングでもよいし、汎用印刷プログラム４１が中間画像データを生成したタイミングでもよいし、汎用印刷プログラム４１が印刷データを生成したタイミングでもよい。
【００４９】
分散条件としては、他にも幾つか適用可能であり、例えば図４（Ｂ）に示すように、各分割印刷ジョブの印刷量を、プリンタの台数に応じて均等に割り当ててもよい。すなわち、分割数は２に限るものではなく、例えばＰＣ１にプリンタが３台接続されている場合には、分割数を３にしてもよい。また、図４（Ｃ）に示すように、プリンタの能力に応じて割り当ててもよい。例えば、プリンタ２よりもプリンタ３の処理速度の方が早い場合、プリンタ３の方がプリンタ２よりも印刷量が多くなるように分割するとよい。
【００５０】
また、分散判定は、前述したような部数に基づく判定の他、例えば図４（Ｄ）に示すように、印刷パラメータとして分散印刷の実行可否が設定されている場合には、その設定に従って行ってもよい。また、補助プログラム４２の設定として、分散印刷の実行可否を補助プログラム４２が使用可能なメモリ領域に記憶しておいてもよく、その記憶されている設定に従って行ってもよい。分散印刷の実行可否の設定に基づく分散判定のタイミングは、印刷パラメータ内の部数に基づく分散判定の場合と同じで良い。
【００５１】
また、印刷ページ数に基づく分散条件を設けてもよい。例えば図４（Ｅ）に示すように、印刷ページ数が１００ページ以上であることを、分散条件に適用できる。印刷ページ数が大きい場合は、印刷ページ数が小さい場合と比較して印刷完了に時間がかかる。そのため、分散印刷を行うことで印刷完了の早期化が期待できる。なお、閾値となるページ数は一例であり、１００ページに限るものではない。両面印刷を行う場合は、閾値となるページ数をその半分とする。また、印刷ページ数は、印刷パラメータに、Ｎページ分を１枚のシートに印刷する集約が設定されている場合、汎用印刷プログラム４１によるその集約に関する中間画像データの加工が終わった後に実際のページ数が確定する。そのため、印刷ページ数に基づく分散判定のタイミングは、中間画像データの加工が終わった後でもよいし、中間画像データの生成後から印刷データの生成前の間であってもよいし、印刷データの生成後であってもよい。
【００５２】
図４に示した分散条件を少なくとも１つ適用することで分散印刷を行うか否かを判定できる。なお、複数の分散条件を組み合わせてもよく、その場合は条件ごとに優先度を設けることで、分散印刷を行うか否かを判定できる。
【００５３】
分散印刷を行うと判定した場合、補助プログラム４２は、編集アプリ４３によって印刷指示された印刷ジョブを分割元の印刷ジョブとして、第１分割印刷ジョブと第２分割印刷ジョブとの２つの分割印刷ジョブを生成する。分割元の印刷ジョブの印刷量を部数で分割した場合、第１分割印刷ジョブと第２分割印刷ジョブとは同じ印刷データになり、第１分割印刷ジョブの部数と第２分割印刷ジョブの部数の合計が分割元の印刷ジョブの部数となる。つまり、第１分割印刷ジョブの印刷量と第２分割印刷ジョブの印刷量の合計が分割元の印刷ジョブの印刷量となる。
【００５４】
その後、補助プログラム４２は、汎用印刷プログラム４１を用いずに、第１ポートから第１分割印刷ジョブをプリンタ２に送信する（矢印Ｍ１）。第１分割印刷ジョブを受信したプリンタ２は、第１画像形成プログラム２０１によって画像処理を行い、受信した第１分割印刷ジョブの印刷データによって示される画像の印刷を行う（矢印Ｏ１）。プリンタ２は、分割元の印刷ジョブで指定されていたプリンタであり、第１ポートからはその分割元の印刷ジョブで指定されていたプリンタに第１分割印刷ジョブが送信される。
【００５５】
また、補助プログラム４２は、汎用印刷プログラム４１を用いずに、第２ポートから第２分割印刷ジョブをプリンタ３に送信する（矢印Ｎ１）。第２分割印刷ジョブを受信したプリンタ３は、第２画像形成プログラム２０２によって画像処理を行い、受信した第２分割印刷ジョブの印刷データに示される画像の印刷を行う（矢印Ｏ２）。プリンタ３は、分割元の印刷ジョブで指定されていないプリンタであり、第２ポートからはその分割元の印刷ジョブで指定されていないプリンタに第２分割印刷ジョブが送信される。
【００５６】
なお、第２ポートから第２分割印刷ジョブの印刷データを送信する際、補助プログラム４２は、第２画像形成プログラム２０２用のコマンドを印刷データに付加してもよいし、第２画像形成プログラム２０２用に印刷データを最適化してもよい。これらの印刷データの編集は、分散判定の前に行ってもよいし、後に行ってもよい。
【００５７】
また、補助プログラム４２から直接各分割印刷ジョブがプリンタ２に送信されるため、補助プログラム４２から汎用印刷プログラム４１に対して完了通知が入力される（矢印Ｇ１）。完了通知が入力された汎用印刷プログラム４１は、その完了通知に応じた完了処理を行う（矢印Ｐ１）。具体的には、汎用印刷プログラム４１は、編集アプリ４３から入力された印刷実行通知に基づく分割元の印刷ジョブを終了させる。このとき、汎用印刷プログラム４１は、終了させる印刷ジョブが正常に終了したことを示す情報をその印刷ジョブの履歴としてメモリ１２に残す。また、分散印刷を行ったことを示す情報を履歴として残してもよい。分散印刷を行ったことを示す情報としては、例えば印刷ジョブの送信先のプリンタの情報や送信に用いたポートの情報が含まれるとよい。
【００５８】
なお、補助プログラム４２は、印刷ジョブをキャンセルするキャンセル通知を、汎用印刷プログラム４１に対して入力することもできる。例えば、印刷パラメータの編集を受け付ける設定画面から印刷ジョブのキャンセルを受け付けることができ、補助プログラム４２からキャンセル通知を汎用印刷プログラム４１に入力することができる。また、中間画像データの編集に失敗した場合にも、補助プログラム４２からキャンセル通知を汎用印刷プログラム４１に入力することができる。キャンセル通知が入力された汎用印刷プログラム４１は、完了通知のときと同様に、印刷ジョブを終了させる。ただし、キャンセル通知が入力された場合は、完了通知の場合と異なり、キャンセルされたことを示す情報をその印刷ジョブの履歴としてメモリ１２に残す。つまり、代替送信によって印刷データの送信が行われた場合、補助プログラム４２から汎用印刷プログラム４１に対して、印刷ジョブを終了させる通知として、キャンセル通知とは異なる完了通知が入力される。完了通知は、第１終了通知の一例であり、キャンセル通知は、第２終了通知の一例である。
【００５９】
分散印刷を行わないと判定した場合、補助プログラム４２は、印刷データ編集処理の終了を示す終了通知を汎用印刷プログラム４１に返して処理を終了する。汎用印刷プログラム４１は、補助プログラム４２から終了通知を受け取ったことに応じて、プリンタ２に対して印刷命令を送信する。これにより、印刷命令を受信したプリンタ２では、印刷命令に付された印刷データに従って、印刷データの画像の印刷が実行される。
【００６０】
なお、補助プログラム４２における分散印刷の方法は、プリンタのモデルによって異なる場合がある。例えば、メモリ容量が小さい低価格帯のプリンタの場合、汎用印刷プログラム４１にて生成された１部用の印刷データを取得し、その印刷データを分散先のプリンタごとに部数だけ繰り返し送信する。一方、メモリ容量が大きい高価格帯のプリンタの場合、汎用印刷プログラム４１にて生成された１部用の印刷データを取得した後、その印刷データに分散先のプリンタごとに部数を示すコマンドを付加する編集を行い、編集後の印刷データを各プリンタに送信する。コマンドを付加する方法としては、例えば印刷データの先頭領域に含ませてもよいし、各ページの先頭領域に含ませてもよい。また、複数のモデルに対応する補助プログラム４２の場合、プリンタのモデルに応じて、上述した分散方法を使い分けてもよい。なお、分散印刷の方法の使い分けについて、部数を例に説明したが、例えば印刷ページ数であっても部数と同様に、プリンタのモデルごとに上述した分散方法を使い分けることができる。
【００６１】
次に、前述した分散印刷を行う場合の、補助プログラム４２の印刷データ編集処理の手順について、図５のフローチャートを参照しつつ説明する。印刷データ編集処理は、印刷指示に基づいて汎用印刷プログラム４１から印刷データ編集処理の実行命令を受け付けたことを契機に、ＰＣ１のＣＰＵ１１にて実行される。なお、印刷データ編集処理は、ポート処理の一例である。
【００６２】
印刷データ編集処理では、ＣＰＵ１１は、実行命令に対応する印刷パラメータおよび印刷データを取得する（Ｓ０１）。その後、ＣＰＵ１１は、取得した印刷データの編集を行う（Ｓ０２）。例えばＳ０２では、プリンタ２に特有な機能を実行させるためのコマンドを印刷データに付加する。プリンタ２に特有な機能としては、例えば、両面印刷設定、トナーセーブ設定、フィニッシャの設定、がある。プリンタ２が自身でウォータマークやヘッダ／フッタ等を画像に付加できる機能や、集約や拡縮等の画像サイズを変更する機能を有している場合、Ｓ０２では、これらの機能を実行させるコマンドを印刷データに付加しても良い。なお、印刷パラメータによっては、Ｓ０２の処理を行わなくてもよい。Ｓ０２は、図２の矢印Ｅに相当する。
【００６３】
また、ＣＰＵ１１は、汎用印刷プログラム４１から受け取った印刷パラメータあるいは印刷データに基づいて、分散判定を行う（Ｓ０３）。Ｓ０２の処理とＳ０３の処理とは逆順であっても同時であってもよい。Ｓ０３は、図２の矢印Ｆに相当する。分散判定には、前述した分散条件が用いられる。そして、Ｓ０３での判定の結果、分散印刷を行うか否かを判断する（Ｓ０４）。Ｓ０３およびＳ０４は、判断処理の一例である。
【００６４】
分散印刷を行うと判断した場合（Ｓ０４：ＹＥＳ）、ＣＰＵ１１は、印刷パラメータおよび印刷データに基づいて、第１分割印刷ジョブおよび第２分割印刷ジョブを生成する（Ｓ１１）。具体的に補助プログラム４２は、図４に示したような、分散条件と印刷量の分配割合とを関連付けたテーブル５１を有しており、Ｓ１１ではそのテーブル５１を読み出す。そして、そのテーブル５１に従って、汎用印刷プログラム４１から渡された印刷ジョブを分割する。例えば、分散条件として図４（Ａ）を用いる場合、部数が１０部以上であれば分散印刷を行うと判断し、第１ポートを利用する第１分割印刷ジョブについては、印刷量を分割元の印刷ジョブの５０％とし、第２ポートを利用する第２分割印刷ジョブについても、印刷量を分割元の印刷ジョブの５０％とする。例えば、印刷パラメータにおいて複数の部数が設定されている場合あるいは印刷データの先頭領域に複数の部数を指定するコマンドが設定されている場合には、その部数を第１の部数と第２の部数に各５０％となるように分割し、第１分割印刷ジョブの先頭領域には第１の部数を指定するコマンドを含め、第２分割印刷ジョブの先頭領域には第２の部数を指定するコマンドを含める。あるいは、プリンタがメモリを十分に備えておらず、複数の部数が指定されたコマンドを受けても動作できない場合、補助プログラム４２は部数を指定するコマンドを用いず、印刷データをそれぞれのプリンタに、対応する複数部数分繰り返し送信する。どの分散条件を用いるかは補助プログラム４２にあらかじめ決められていてもよいし、ユーザに選択させてもよい。
【００６５】
そして、ＣＰＵ１１は、汎用印刷プログラム４１に処理を戻す前に、補助プログラム４２の処理として、第１ポートから第１分割印刷ジョブをプリンタ２に送信する（Ｓ１２）。また、ＣＰＵ１１は、汎用印刷プログラム４１に処理を戻す前に、補助プログラム４２の処理として、第２ポートから第２分割印刷ジョブをプリンタ３に送信する（Ｓ１３）。Ｓ１２とＳ１３とは逆順であっても同時であってもよい。Ｓ１２およびＳ１３は、分散処理の一例である。
【００６６】
また、ＣＰＵ１１は、完了通知を汎用印刷プログラム４１に入力する（Ｓ１４）。Ｓ１４の処理とＳ１２およびＳ１３の処理とは逆順であっても同時であってもよい。完了通知は、第１終了通知の一例であり、Ｓ２２は、第１通知処理の一例である。
【００６７】
一方、分散印刷を行わないと判断した場合（Ｓ０４：ＮＯ）、ＣＰＵ１１は、印刷データ編集処理が正常終了したこと示す終了通知を汎用印刷プログラム４１に入力し（Ｓ２１）、本処理を終了する。この場合、汎用印刷プログラム４１は、Ｓ０２にて編集された印刷データを、プリンタ２に送信する。
【００６８】
また、Ｓ１４の後、ＣＰＵ１１は、第１分割印刷ジョブおよび第２分割印刷ジョブの送信が完了したか否かを判断する（Ｓ３１）。両分割印刷ジョブの送信が完了していない場合（Ｓ３１：ＮＯ）、ＣＰＵ１１は、第１分割印刷ジョブあるいは第２分割印刷ジョブの送信中のエラーを検知したか否かを判断する（Ｓ３２）。エラーを検知していない場合（Ｓ３２：ＮＯ）、Ｓ３１に処理を戻し、両分割印刷ジョブの送信完了と送信中のエラーとのいずれかが検知されるまで処理を繰り返す。
【００６９】
第１分割印刷ジョブあるいは第２分割印刷ジョブの送信中にエラーを検知した場合（Ｓ３２：ＹＥＳ）、ＣＰＵ１１は、エラーを示すメッセージをＵＩ２０に表示させる（Ｓ３３）。補助プログラム４２によって、エラーメッセージを表示することで、ユーザがエラーを認識できる。Ｓ３３は、エラー処理の一例である。Ｓ３３の後、あるいは印刷データの送信が完了した場合（Ｓ３１：ＹＥＳ）、本処理を終了する。
【００７０】
なお、ＯＳ２１は、プリンタとポートとに関連付けられたプリントキューを有している。例えば、第１の形態では、１台のプリンタ２に対して、プリンタ２と第１ポートとに関連付けられたプリントキューと、プリンタ２と第２ポートとに関連付けられたプリントキューと、の２つのプリントキューを有している。ＯＳ２１は、各プリントキューに登録された印刷ジョブを順次にプリンタに送信する機能を有している。そこで、第１分割印刷ジョブや第２分割印刷ジョブを、汎用印刷プログラム４１を介さずに直接補助プログラム４２から各プリントキューに登録することで、ＯＳ２１によって自動的に送信してもらってもよい。
【００７１】
続いて、第２の形態について説明する。第２の形態では、分散判定を印刷データの生成前に行い、さらに分割印刷ジョブの第２ポートからのを、分散判定を行った補助プログラム４２以外のプログラムによって行う。この点、分散判定を印刷データの生成後に行い、第２ポートからの印刷ジョブの送信も、分散判定を行った補助プログラム４２によって行う第１の形態と異なる。
【００７２】
第２の形態において分散印刷を行う場合の手順について、図６を参照して説明する。なお、図６中、図２と同じ処理については同じ符号を付している。また、汎用印刷プログラム４１が印刷実行通知を受け付ける（矢印Ｂ）までの処理は、実施の形態と同じであり、説明を省略する。
【００７３】
汎用印刷プログラム４１は、印刷実行通知を受け付けると、印刷データを生成する前に、印刷パラメータの編集を行う編集処理を補助プログラム４２に実行させる実行命令を出力する（矢印Ｃ１）。汎用印刷プログラム４１からの実行命令を受け付けた補助プログラム４２は、編集処理として、印刷パラメータ等の編集を行い（矢印Ｊ１）、その後、分散判定を行う（矢印Ｊ２）。
【００７４】
第２の形態では、分散判定を、図４（Ｆ）に示す分散条件に基づいて行う。分散印刷を行うと判定した場合、補助プログラム４２は、編集アプリ４３によって印刷指示された印刷ジョブを分割元の印刷ジョブとして、全ての画像データを取得する前から、その印刷量の一部に対応する画像データを分割する（矢印Ｊ３）。すなわち、１００ページ目までの画像データと、１００ページ目以降からの画像データとに分割する。なお、画像データを中間画像データに変換した後に分割してもよい。また、画像データを分割した後に中間画像データに変換してもよい。分散印刷を行わないと判定した場合は、説明を省略する。
【００７５】
その後、補助プログラム４２は、汎用印刷プログラム４１に対して、分割された一方の画像データの画像の印刷を行うための印刷実行通知を渡す（矢印Ｋ）。つまり、補助プログラム４２から汎用印刷プログラム４１に対して、新たな印刷実行通知が入力される。このとき、印刷実行通知には、印刷パラメータおよび分割された一方の画像データが付される。また、第２ポートを示すポート情報および送信先となるプリンタ３を示すプリンタ情報が付される。印刷実行通知を受け取った汎用印刷プログラム４１の処理については、後述する。
【００７６】
分散判定を行った補助プログラム４２は、汎用印刷プログラム４１に対して印刷実行通知を渡した後も処理を継続し、分割された他方の画像データを中間画像データに変換した後に編集し（矢印Ｊ４）、編集処理の終了を示す終了通知を汎用印刷プログラム４１に返して処理を終了する（矢印Ｉ）。この終了通知には、編集後の中間画像データの他、第１ポートを示すポート情報および送信先となるプリンタ２を示すプリンタ情報も付される。
【００７７】
汎用印刷プログラム４１は、補助プログラム４２から終了通知を受け取ったことに応じて、印刷データを生成する（矢印Ｃ）。このとき生成される印刷データは、先に分割された他方の中間印刷データに対応する印刷データである。そして、印刷データの生成後、この印刷データに基づく印刷データ編集処理を行うための実行命令を出力する（矢印Ｄ１）。この実行命令には、終了通知に付されたポート情報およびプリンタ情報も付される。
【００７８】
その後、補助プログラム４２は、印刷データの編集を行う（矢印Ｅ）。その後、補助プログラム４２は、実行命令にポート情報が付されていたことを条件として、編集後の印刷データの画像を印刷する印刷ジョブ、すなわち分割元の印刷ジョブのうち一部の印刷を行う印刷ジョブである第１分割印刷ジョブを生成し、汎用印刷プログラム４１を用いずに、ポート情報によって示される第１ポートからプリンタ情報によって示されるプリンタ２に、第１分割印刷ジョブを送信する（矢印Ｍ２）。第１分割印刷ジョブを受信したプリンタ２は、受信した第１分割印刷ジョブの印刷データによって示される画像の印刷を行う（矢印Ｏ１）。
【００７９】
また、補助プログラム４２から汎用印刷プログラム４１に対して完了通知が入力される（矢印Ｇ２）。完了通知が入力された汎用印刷プログラム４１は、その完了通知に応じた完了処理を行う（矢印Ｐ２）。
【００８０】
一方、印刷実行通知を受け取った汎用印刷プログラム４１は、先に分割された一方の画像データについての各種の実行命令を行う。図７は、汎用印刷プログラム４１が補助プログラム４２から、ポート番号が付された印刷実行通知を受け取ったことに応じて行われる処理の手順を示している。
【００８１】
汎用印刷プログラム４１は、ポート番号が付された印刷実行通知を受け取ると（矢印Ｋ）、印刷実行通知に付された印刷パラメータおよび画像データに基づいて、印刷データを生成する（矢印Ｃ）。そして、この印刷データに基づく印刷データ編集処理を行うための実行命令を出力する（矢印Ｄ２）。この実行命令には、印刷実行通知に付されたポート番号およびプリンタ情報が付される。このとき、プリンタ３とプリンタ２に対応する補助プログラム４２が異なれば、汎用印刷プログラム４１は、プリンタ３のモデルに対応する補助プログラム４２を動作させることになる。
【００８２】
その後、汎用印刷プログラム４１からの実行命令を受け付けた補助プログラム４２は、印刷データの編集を行う（矢印Ｅ）。その後、補助プログラム４２は、実行命令にポート情報あるいはプリンタ情報が付されていたことを条件として、編集後の印刷データの画像を印刷する印刷ジョブ、すなわち分割元の印刷ジョブのうち一部の印刷を行う印刷ジョブである第２分割印刷ジョブを生成し、汎用印刷プログラム４１を用いずに、そのポート情報によって示される第２ポートからプリンタ情報によって示されるプリンタ３に、第２分割印刷ジョブを送信する（矢印Ｎ２）。第２分割印刷ジョブを受信したプリンタ３は、受信した分割印刷ジョブの印刷データに示される画像の印刷を行う（矢印Ｏ２）。
【００８３】
また、補助プログラム４２から汎用印刷プログラム４１に対して完了通知が入力される（矢印Ｇ３）。完了通知が入力された汎用印刷プログラム４１は、その完了通知に応じた完了処理を行う（矢印Ｐ３）。
【００８４】
第２の形態では、図６の矢印Ｊ３に示したように、印刷データの生成完了前から早期に印刷ジョブの一部を分割し、矢印Ｋ以降の処理、すなわち分割印刷ジョブの送信のための制御を開始することから、第１の形態と比較してより早期にプリンタでの印刷開始が期待できる。例えば、印刷ページが１５０ページの印刷ジョブの場合、１００ページ目までの画像データを取得していれば１５０ページ全部の画像データを取得するまで待つことなくその１００ページ目までの分割印刷ジョブを作成して印刷命令を送信することができる。つまり、前述した第１の形態では、印刷データを生成した後での分割であり、印刷部数での分割のような画像データを分割できないような分割条件を用いているため、１５０ページ分の画像データを取得するまで印刷ジョブの分割を待つ必要が有る。従って、第２の形態と比較して、分散印刷ジョブの印刷開始が遅れる。一方、第１の形態では図２の矢印Ｃで示した印刷データの生成処理が１回で済むが、第２の形態では、図６の矢印Ｃで示した印刷データの生成処理と図７の矢印Ｃで示した印刷データの生成処理との、２回の印刷データの生成処理を行うことになる。そのため、第１の形態では、第２の形態と比較して、処理がシンプルになる。
【００８５】
また、第２の形態では、図７の矢印Ｄ２において、プリンタ３用の補助プログラム４２を動作させることから、プリンタ２に対応する補助プログラム４２とプリンタ３に対応する補助プログラム４２とが異なる場合に、異なる補助プログラム４２を動作させることができる。そのため、補助プログラム４２が異なるプリンタに対しても分割印刷ジョブを送信可能になる。
【００８６】
なお、第２ポートから分割印刷データを送信する際、補助プログラム４２によって新たに生成した分割印刷ジョブであって第２ポートから送信される分割印刷ジョブを、汎用印刷プログラム４１を介さずに直接補助プログラムからプリントキューに登録することで、ＯＳ２１によって自動的に送信してもらってもよい。
【００８７】
また、第２の形態では、新たな印刷実行通知によって送信される第２分割印刷ジョブを第２ポートからとし、元の印刷実行通知によって送信される第１分割印刷ジョブを第１ポートからとしているが、新たな印刷実行通知によって送信される第２分割印刷ジョブを第１ポートからとし、元の印刷実行通知によって送信される第１分割印刷ジョブを第２ポートからとしてもよい。
【００８８】
また、第２の形態では、新たな印刷実行通知によって送信される第２分割印刷ジョブをプリンタ３に送信し、元の印刷実行通知によって送信される第１分割印刷ジョブをプリンタ２に送信しているが、新たな印刷実行通知によって送信される第２分割印刷ジョブをプリンタ２に送信し、元の印刷実行通知によって送信される第１分割印刷ジョブをプリンタ３に送信してもよい。
【００８９】
次に、第３の形態について説明する。第３の形態では、どの分散条件を満たしたかによって、印刷データの生成前に分割印刷ジョブを生成するか、印刷データの生成後に分割印刷ジョブを生成するかを分ける。
【００９０】
分散条件には、前述したように、例えば印刷ページ数に基づく条件のように、印刷対象となる画像を分割できる分散条件と、印刷部数のように、印刷対象となる画像を分割できない分散条件がある。ここでいう「印刷対象となる画像」とは、印刷ジョブが複数のページで構成される場合は全ページ分の画像を意味し、例えば１５０ページ分の画像の印刷ジョブであれば１５０ページ分の画像を意味する。１５０ページ分の画像の印刷ジョブの場合、印刷ページ数に基づく分散条件では、例えば、前半１００ページ分の画像と後半５０ページ分の画像とに分割できる。そのため、印刷ページ数に基づく分散条件は、印刷対象となる画像を分割できる分散条件であり、第１分散条件の一例である。一方、印刷部数に基づく分散条件では、１０ページ分の画像を一纏まりとして分割する必要がある。そのため、印刷部数に基づく分散条件は、印刷対象となる画像を分割できない分散条件であり、第２分散条件の一例である。
【００９１】
前述したように、印刷データの生成前に分割印刷ジョブを生成する第２の形態と、印刷データの生成後に分割印刷データを生成する第１の形態とでは、それぞれ利点が異なる。そこで、第３の形態では、先ず第２の形態と同様に図６の矢印Ｊ２において分散判定を行い、印刷ページ数に基づく分散条件によって分散印刷が可能と判定した場合、すなわち印刷ページ数のような中間画像データを分割できる分散条件を満たした場合には、矢印Ｊ３以降の処理を実施する。一方、中間画像データを分割できる分散条件を満たしていない場合には、図６の矢印Ｊ３や矢印Ｋの処理は実行せず、第１の形態と同じ制御によって図２の矢印Ｆにおいて分散判定を行い、印刷部数に基づく分散条件によって分散印刷が可能と判定した場合、すなわち印刷部数のような中間画像データを分割できない分散条件を満たした場合には、矢印Ｍ１以降の処理を実施する。これにより、印刷データを生成する前の図６の矢印Ｊ２のタイミングで分割できる場合には、そのタイミングで分割して分割印刷ジョブの早期開始を図り、そのタイミングで分割できない場合であっても、図２の矢印Ｆのタイミングで分割できる場合には、そのタイミングで分割することで、分散印刷の実行機会を増やすことができる。
【００９２】
以上詳細に説明したように実施の形態による補助プログラム４２によれば、印刷パラメータに基づいて印刷を分散させる分散条件を設け、その条件を満たしている場合に印刷ジョブを分割し、分割された印刷ジョブである分割印刷ジョブの１つを第２ポートを利用して別のプリンタに一部の印刷を行わせる。これにより、分散印刷が行われることになり、早期の印刷完了が期待できる。
【００９３】
さらに、実施の形態の補助プログラム４２によれば、汎用印刷プログラム４１から印刷データを送信しない場合、印刷ジョブを終了させるための完了通知を汎用印刷プログラム４１に入力している。そのため、汎用印刷プログラム４１によって送信待ちとなっている状態が解除され、プリンタ２への印刷データの二重送信を回避できる。
【００９４】
なお、本明細書に開示される実施の形態は単なる例示にすぎず、本発明を何ら限定するものではない。したがって本明細書に開示される技術は当然に、その要旨を逸脱しない範囲内で種々の改良、変形が可能である。例えば、ＰＣ１に接続されるプリンタは、プリンタ単能機に限らず、複合機、複写機、ＦＡＸ装置、等印刷機能を有する装置であればよい。また、ＰＣ１に接続されるプリンタは、図示の例に限らず、１台でも良いし、３台以上でもよい。
【００９５】
また、本形態で、汎用印刷プログラム４１の処理として説明した各処理の一部は、ＯＳ２１の処理であっても良い。また、汎用印刷プログラム４１が用いる第１ポートは、ＯＳ２１や他のプログラムで用いてもよい。
【００９６】
また、印刷パラメータ決定処理を実行するモジュールは、補助プログラム４２に限らず、汎用印刷プログラム４１を用いた印刷を行う際に、ＯＳ２１または汎用印刷プログラム４１から指示を受け付けるプログラムであればよい。例えば、マイクロソフト社が仕様公開した印刷ワークフローアプリ（Print workflow）でも良い。
【００９７】
また、実施の形態では、汎用印刷プログラム４１から補助プログラム４２の実行命令が出力されることで、補助プログラム４２が実行されるとしているが、補助プログラム４２の実行条件はこれに限らない。例えば、ＯＳ２１から直接実行されても良く、または、常駐される補助プログラム４２であっても良い。常駐される場合には、補助プログラム４２は、実行命令を受けて前述した動作を行うとすれば良い。
【００９８】
また、実施の形態に開示されている任意のフローチャートにおいて、任意の複数のステップにおける複数の処理は、処理内容に矛盾が生じない範囲で、任意に実行順序を変更できる、または並列に実行できる。
【００９９】
また、実施の形態に開示されている処理は、単一のＣＰＵ、複数のＣＰＵ、ＡＳＩＣなどのハードウェア、またはそれらの組み合わせで実行されてもよい。また、実施の形態に開示されている処理は、その処理を実行するためのプログラムを記録した記録媒体、または方法等の種々の態様で実現することができる。
【符号の説明】
【０１００】
１  ＰＣ
２  プリンタ
１１  ＣＰＵ
１２  メモリ
２０  ＵＩ
２１  ＯＳ
４１  汎用印刷プログラム
４２  補助プログラム
【図１】
2020129221.tif 000003
【図２】
2020129221.tif 000004
【図３】
2020129221.tif 000005
【図４】
2020129221.tif 000006
【図５】
2020129221.tif 000007
【図６】
2020129221.tif 000008
【図７】
2020129221.tif 000009