(57)【要約】【課題】複数部数の画像形成結果を出力するために同一の画像データが複数回送信されるプリンタドライバにおいて、指定通りの画像形成結果を出力すること【解決手段】画像形成出力の対象となるページごとの画像データを取得し、取得したページごとの画像データの数に基づいて、出力結果の１部当たりの出力ページ数の候補である候補ページ数を算出し、取得したページごとの画像データを、候補ページ数分の前記画像データをページ順に配列したグループに分割し、分割された各グループの画像データのグループ間の対応するページ同士での比較結果に基づき、画像形成出力の対象となるページごとの画像データが複数部のデータを含むことを判定し、判定結果に基づいて、画像形成装置による画像形成出力を制御することを特徴とする。【選択図】図８
2016021137.tif 000002
【特許請求の範囲】
【請求項１】
画像形成装置を駆動させる駆動用プログラムであって、
画像形成出力の対象となるページごとの画像データを取得するステップと、
取得した前記ページごとの画像データの数に基づいて、出力結果の１部当たりの出力ページ数の候補である候補ページ数を算出するステップと、
取得した前記ページごとの画像データを、算出された前記候補ページ数分の前記画像データをページ順に配列したグループに分割するステップと、
分割された各グループの画像データのグループ間の対応するページ同士での比較結果に基づき、前記画像形成出力の対象となるページごとの画像データが複数部のデータを含むことを判定するステップと、
前記判定結果に基づいて、前記画像形成装置による画像形成出力を制御するステップと
を情報処理装置に実行させることを特徴とする駆動用プログラム。
【請求項２】
前記候補ページ数を算出するステップにおいて、前記ページごとの画像データの数の約数を、前記候補ページ数として算出する
ことを特徴とする請求項１に記載の駆動用プログラム。
【請求項３】
分割された各グループの画像データがグループ間の対応するページ同士で異なると判定された場合に、前記判定結果に基づき、他の前記候補ページ数のうち分割された各グループの画像データがグループ間の対応するページ同士で異なると判定される候補ページ数を除外するステップ
を前記情報処理装置に実行させることを特徴とする請求項１又は２に記載の駆動用プログラム。
【請求項４】
前記画像形成出力を制御するステップにおいて、前記画像形成出力の対象となるページごとの画像データが複数部のデータを含むと判定した場合に、前記候補ページ数を、出力結果の１部当たりの出力ページ数として算出し、算出された前記１部当たりの出力ページ数に基づいて、前記画像形成装置による画像形成出力を制御する
ことを特徴とする請求項１〜３のいずれか１項に記載の駆動用プログラム。
【請求項５】
前記画像形成出力を制御するステップにおいて、前記１部当たりの出力ページ数が取得した前記画像データの数よりも小さい場合に、前記１部当たりの出力ページ数及び前記画像データに基づいて画像形成結果として出力する部数である出力部数を算出し、前記画像データの先頭ページから前記１部当たりの出力ページ数分の画像データに基づいて、算出された前記出力部数の画像形成結果を出力させる
ことを特徴とする請求項４に記載の駆動用プログラム。
【請求項６】
前記画像形成出力を制御するステップにおいて、前記１部当たりの出力ページ数が取得した前記画像データの数よりも小さい場合に、取得した前記画像データのすべてに基づいて、画像形成結果として出力する部数である出力部数を１部として画像形成結果を出力させる
ことを特徴とする請求項４に記載の駆動用プログラム。
【請求項７】
前記画像形成出力を制御するステップにおいて、出力される画像形成結果に対して各部ごとに行われる処理に関する設定情報を無効にする
ことを特徴とする請求項６に記載の駆動用プログラム。
【請求項８】
画像形成装置を駆動させる駆動用プログラムによる画像形成装置の駆動方法であって、
画像形成出力の対象となるページごとの画像データを取得し、
取得した前記ページごとの画像データの数に基づいて、出力結果の１部当たりの出力ページ数の候補である候補ページ数を算出し、
取得した前記ページごとの画像データを、前記候補ページ数分の前記画像データをページ順に配列したグループに分割し、
分割された各グループの画像データのグループ間の対応するページ同士での比較結果に基づき、前記画像形成出力の対象となるページごとの画像データが複数部のデータを含むことを判定し、
前記判定結果に基づいて、前記画像形成装置による画像形成出力を制御する
ことを特徴とする画像形成装置の駆動方法。
【請求項９】
画像形成装置を利用可能な情報処理装置であって、
前記画像形成装置を駆動させる駆動用プログラムを有し、
前記駆動用プログラムは、
画像形成出力の対象となるページごとの画像データを取得する画像データ取得部と、
前記画像形成出力の対象となるページごとの画像データが複数部のデータを含むか否かを判定する判定部と、
前記判定結果に基づいて、前記画像形成装置による画像形成出力を制御する出力制御部と
を含み、
前記判定部は、
取得した前記ページごとの画像データの数に基づいて、出力結果の１部当たりの出力ページ数の候補である候補ページ数を算出し、
取得した前記ページごとの画像データを、前記候補ページ数分の前記画像データをページ順に配列したグループに分割し、
分割された各グループの画像データのグループ間の対応するページ同士での比較結果に基づき、前記画像形成出力の対象となるページごとの画像データが複数部のデータを含むことを判定する
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、駆動用プログラム、画像形成装置の駆動方法及び情報処理装置に関し、特に、複数部数の画像形成結果を出力するために同一の画像データが複数回送信される駆動用プログラムによる画像形成装置の駆動処理に関する。
【背景技術】
【０００２】
近年、情報の電子化が推進される傾向にあり、電子化された情報の出力に用いられるプリンタやファクシミリ及び書類の電子化に用いるスキャナ等の画像処理装置は欠かせない機器となっている。このような画像処理装置は、撮像機能、画像形成機能及び通信機能等を備えることにより、プリンタ、ファクシミリ、スキャナ、複写機として利用可能なＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ：複合機）として構成されることが多い。
【０００３】
このような画像処理装置のうち、電子化された書類の出力に用いられる印刷装置においては、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置において生成された印刷ジョブに基づいて印刷出力を実行するプリンタが一般的に利用されている。そして、プリンタに入力する印刷ジョブを生成するための機能を実現するソフトウェア・プログラムとして、それぞれのプリンタの機能に対応したプリンタドライバを情報処理装置にインストールすることが一般的である。
【０００４】
このようなプリンタドライバにおいて、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）等を介してソート機能を設定することにより、１つの文書を複数部印刷する際にページ順に１部ずつ並べ替えて印刷することができる。また、印刷ジョブを生成する情報処理装置にインストールされたアプリケーションプログラム（以降、「アプリケーション」とする）がソート機能を有する場合がある。アプリケーションのソート機能は、印刷対象となる文書の先頭ページから最終ページまでの画像データを印刷部数分繰り返しプリンタドライバに送信することにより実現される。
【０００５】
このようなアプリケーションが提供するソート機能が設定されている場合、プリンタドライバは、印刷部数分繰り返し送信された先頭ページから最終ページまでの画像データを印刷部数が１部の印刷物として印刷処理を行うため、両面印刷や後処理（ステープル処理等）が行われる場合、指定通りの出力結果とならない場合がある。例えば、１部が３ページで構成される文書を２部印刷する場合、アプリケーションのソート機能により６ページ分の画像データがプリンタドライバに送信される。このように、１部を構成する文書の最終ページが奇数ページである場合に両面印刷が設定されていると、１部目の３ページ目の裏面に２部目の１ページ目（アプリケーションのソート機能によれば４ページ目）が印刷されてしまう。また、印刷部数が１部の印刷物として印刷処理が行われるため、６ページ分の印刷物がまとめてステープルされてしまう。
【０００６】
また、このようなアプリケーションが提供するソート機能とプリンタドライバにおけるソート機能との両方が設定されている場合、上述した問題の他、アプリケーションのソート機能により生成された印刷対象の画像データに対して、さらにプリンタドライバにおけるソート機能に従って処理されるので、ユーザが意図した通りに印刷されない場合がある。例えば、１部が３ページで構成される文書を２部印刷する場合、アプリケーションのソート機能により、６ページ分の画像データがプリンタドライバに送信されるが、プリンタドライバにおいては６ページ分の画像データが１部の文書と判断されて、１２ページ分の画像データが出力される。
【０００７】
このように、アプリケーションが提供するソート機能が設定されている場合、出力される印刷物が指定されたページ数や部数とならず、指定通りの印刷結果とならない場合がある。
【０００８】
このような問題を解決することを目的として、プリンタドライバにおいて、アプリケーションから送信された１ページ目の画像データと２ページ目以降の画像データとを比較して、同一の画像データが検出された場合にアプリケーションにおいてソート機能が設定されていると判定し、１ページ目の画像データと同一の画像データを含む以降のページを削除することが提案されている（例えば、特許文献１を参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に開示された技術では、１つの文書を構成するページ数を誤って判断する場合がある。例えば、１部が５ページで構成される文書において、１ページ目の画像データと４ページ目の画像データとが同一である場合、４ページ目以降が１ページ目の繰り返しと判断され、４ページ目以降の画像データが削除される。そのため、特許文献１に開示された技術では、依然として指定通りの印刷結果とならない場合がある。
【００１０】
本発明は、このような課題を解決するためになされたものであり、複数部数の画像形成結果を出力するために同一の画像データが複数回送信されるプリンタドライバにおいて、指定通りの画像形成結果を出力することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明の一態様は、画像形成装置を駆動させる駆動用プログラムであって、画像形成出力の対象となるページごとの画像データを取得するステップと、取得した前記ページごとの画像データの数に基づいて、出力結果の１部当たりの出力ページ数の候補である候補ページ数を算出するステップと、取得した前記ページごとの画像データを、算出された前記候補ページ数分の前記画像データをページ順に配列したグループに分割するステップと、分割された各グループの画像データのグループ間の対応するページ同士での比較結果に基づき、前記画像形成出力の対象となるページごとの画像データが複数部のデータを含むことを判定するステップと、前記判定結果に基づいて、前記画像形成装置による画像形成出力を制御するステップとを情報処理装置に実行させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、複数部数の画像形成結果を出力するために同一の画像データが複数回送信されるプリンタドライバにおいて、指定通りの画像形成結果を出力することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態に係る印刷システムの機能構成を示すブロック図である。
【図２】本発明の実施形態に係る情報処理装置のハードウェア構成を示す図である。
【図３】本発明の実施形態に係るクライアント端末の機能構成を示す図である。
【図４】本発明の実施形態に係るＵＩ部においてソート機能が設定された場合にグラフィック部が取得する印刷データの構成例を示す図である。
【図５】本発明の実施形態に係るアプリケーションにおいてソート機能が設定された場合にグラフィック部が取得する印刷データの構成例を示す図である。
【図６】本発明の実施形態に係るＵＩ部及びアプリケーションにおいてソート機能が設定された場合にグラフィック部が取得する印刷データの構成例を示す図である。
【図７】本発明の実施形態に係るグラフィック部の機能構成を示すブロック図である。
【図８】本発明の実施形態に係るソート判定部による処理動作を示すフローチャートである。
【図９】本発明の実施形態に係るページごとの描画データを例示する図である。
【図１０】本発明の実施形態に係るページごとの描画データから構成される配列パターンにおける比較態様の例を示す図である。
【図１１】本発明の実施形態に係るページごとの描画データから構成される配列パターンにおける比較態様の例を示す図である。
【図１２】本発明の実施形態に係るページごとの描画データから構成される配列パターンにおける比較態様の例を示す図である。
【図１３】本発明の実施形態に係る描画データ削除部及び印刷データ更新部の処理動作を示すフローチャートである。
【図１４】本発明の実施形態に係るソート判定部による処理動作のフローチャートを例示する図である。
【図１５】本発明の実施形態に係るページごとの描画データの一部を例示する図である。
【図１６】本発明の実施形態に係る描画データが同一であるページ間を線で結んだ模式図を例示する図である。
【図１７】本発明の実施形態に係るページごとの描画データの一部を例示する図である。
【図１８】本発明の実施形態に係る描画データが同一であるページ間を線で結んだ模式図を例示する図である。
【図１９】本発明の実施形態に係るページごとの描画データの一部を例示する図である。
【図２０】本発明の実施形態に係る描画データを最大公約数分でグループ化した図である。
【図２１】本発明の実施形態に係るページごとの描画データを例示する図である。
【図２２】本発明の実施形態に係るページごとの描画データから構成される配列パターンにおける比較態様の例を示す図である。
【図２３】本発明の実施形態に係るページごとの描画データから構成される配列パターンにおける比較態様の例を示す図である。
【図２４】本発明の実施形態に係るページごとの描画データから構成される配列パターンにおける比較態様の例を示す図である。
【図２５】本発明の実施形態に係る描画データ削除部及び印刷データ更新部の処理動作を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、プリンタドライバがインストールされた情報処理装置であるＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）と、プリンタドライバによって生成される印刷ジョブに従って印刷出力を実行する印刷装置であるプリンタとを含む印刷システムを例として説明する。なお、印刷装置はプリンタでなくとも良く、ＰＣにインストールされたプリンタドライバによって生成される印刷ジョブに基づいて画像形成出力を実行する装置であればよい。
【００１５】
図１は、本実施形態に係る印刷システムの機能構成を示すブロック図である。図１に示すように、本実施形態に係る印刷システムはｎ台のクライアント端末１−１〜１−ｎ（ｎは１以上の整数。以降、総じて「クライアント端末１」とする）及び画像形成装置２を含み、クライアント端末１及び画像形成装置２は、ネットワークを介して接続されている。
【００１６】
クライアント端末１は、ユーザが操作する端末であって画像形成装置２を利用可能な情報処理端末であり、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置によって実現される。本実施形態に係るクライアント端末１は、インストールされたプリンタドライバの機能により印刷ジョブを生成し、ネットワークを介して画像形成装置２に送信することにより、画像形成装置２に画像形成出力を実行させる。
【００１７】
画像形成装置２は、撮像機能、画像形成機能及び通信機能等を備えることにより、プリンタ、ファクシミリ、スキャナ、複写機として利用可能なＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ：複合機）である。本実施形態に係る画像形成装置２は、クライアント端末１にインストールされて動作するプリンタドライバによって生成された画像形成出力命令である印刷ジョブに基づき、画像形成出力を実行する機能を有する。
【００１８】
次に、本実施形態に係るクライアント端末１及び画像形成装置２等の情報処理装置のハードウェア構成について図２を参照して説明する。なお、画像形成装置２は、図２に示すハードウェア構成に加えて、スキャナ、プリンタ等を実現するためのエンジンを備える。
【００１９】
図２に示すように、本実施形態に係る情報処理装置は、一般的なサーバやＰＣ等と同様の構成を含む。即ち、本実施形態に係る情報処理装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）４０及びＩ／Ｆ５０がバス８０を介して接続されている。また、Ｉ／Ｆ５０にはＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）６０及び操作部７０が接続されている。
【００２０】
ＣＰＵ１０は演算手段であり、情報処理装置全体の動作を制御する。ＲＡＭ２０は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、ＣＰＵ１０が情報を処理する際の作業領域として用いられる。ＲＯＭ３０は、読み出し専用の不揮発性記憶媒体であり、ファームウェア等のプログラムが格納されている。ＨＤＤ４０は、情報の読み書きが可能な不揮発性の記憶媒体であり、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や各種の制御プログラム、アプリケーション・プログラム等が格納される。
【００２１】
Ｉ／Ｆ５０は、バス８０と各種のハードウェアやネットワーク等を接続し制御する。ＬＣＤ６０は、ユーザが情報処理装置の状態を確認するための視覚的ユーザインタフェースである。操作部７０は、キーボードやマウス等、ユーザが情報処理装置に情報を入力するためのユーザインタフェースである。
【００２２】
このようなハードウェア構成において、ＲＯＭ３０やＨＤＤ４０若しくは図示しない光学ディスク等の記憶媒体に格納されたプログラムがＲＡＭ２０に読み出され、ＣＰＵ１０がＲＡＭ２０にロードされたプログラムに従って演算を行うことにより、ソフトウェア制御部が構成される。このようにして構成されたソフトウェア制御部と、ハードウェアとの組み合わせによって、本実施形態に係るクライアント端末１及び画像形成装置２の機能を実現する機能ブロックが構成される。
【００２３】
次に、本実施形態に係るクライアント端末１の機能について説明する。図３は、本実施形態に係るクライアント端末１の機能構成を示すブロック図である。クライアント端末１においては、インストールされたアプリケーション１０１がＯＳ（Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ）上で動作することにより、文書作成や画像編集等の機能を提供し、ユーザの操作に応じて、印刷出力するべき画像の元となる情報を提供する。
【００２４】
アプリケーション１０１は、ユーザの操作に応じてプリンタドライバ１１０のＵＩ（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）部１１１を起動し、ＵＩ部１１１のＧＵＩ（Ｇｒａｐｈｉｃａｌ  ＵＩ）を介して設定される印刷出力の設定情報（以降、「印刷設定情報」とする）をＤＥＶＭＯＤＥ構造体と呼ばれる情報形式で取得する。
【００２５】
そして、アプリケーション１０１若しくはアプリケーション１０１によって起動されたＵＩ部１１１に対してユーザの操作により印刷実行命令が入力されると、アプリケーション１０１は、ＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）１０２を起動し、ＵＩ部１１１を介して設定されたＤＥＶＭＯＤＥ構造体及び出力するべき画像の情報を印刷データとして受け渡す。
【００２６】
ＧＤＩ１０２は、一般的に基本ソフトであるＯＳに組み込まれた描画エンジンである。ＧＤＩ１０２は、ＤＤＩ（Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ）を介してプリンタドライバ１１０のグラフィック部１１２を起動し、処理を受け渡す。
【００２７】
プリンタドライバ１１０のグラフィック部１１２は、ＧＤＩ１０２によってＯＳの内部命令として出力された描画データを、印刷出力を実行させる対象の画像形成装置２が処理可能なデータ形式であるＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）形式のデータに変換する。ＰＤＬ形式のデータは、画像形成装置２に印刷を実行させるための印刷制御情報である。グラフィック部１１２は、ＰＤＬ形式に変換したデータを順次スプーラー１０３に受け渡す。
【００２８】
また、グラフィック部１１２は、画像形成装置２に画像形成出力を実行させる際の設定データを、ＵＩ部１１１を介して設定されたＤＥＶＭＯＤＥ構造体に基づいて生成する。この設定データは、例えばＰＪＬ（Ｐｒｉｎｔｅｒ  Ｊｏｂ  Ｌａｎｇｕａｇｅ）形式のデータが用いられる。
【００２９】
スプーラー１０３は、グラフィック部１１２によって生成されたＰＤＬ形式のデータ及びＰＪＬ形式のデータを、スプールファイル１０４として記憶媒体に一次的に記憶させる。これにより、プリンタドライバ１１０においてグラフィック部１１２がＰＤＬデータ及びＰＪＬデータを生成した後、画像形成装置２がＰＤＬデータ及びＰＪＬデータを受け付けることが出来ない状態であったとしても、プリンタドライバ１１０は生成したＰＤＬデータ及びＰＪＬデータをスプーラー１０３に渡して次の処理にすぐに移ることができるため、処理を効率化することができる。
【００３０】
スプールファイル１０４として記憶媒体に記憶されたデータは、プリンタプロセッサ１０５によって再度スプーラー１０３に受け渡され、ポートモニタ１０６により、ネットワークを介して画像形成装置２に送信される。すなわち、プリンタドライバ１１０は、画像形成装置２を駆動させる駆動用プログラムである。
【００３１】
本実施形態に係るクライアント端末１は、ＵＩ部１１１及びアプリケーション１０１においてソート機能が設定可能である。ソート機能を設定することにより、１つの文書を複数部印刷する際にページ順に１部ずつ並べ替えて印刷することができる。ここで、ＵＩ部１１１においてソート機能が設定された場合にグラフィック部１１２が取得する印刷データの構成例及びアプリケーション１０１においてソート機能が設定された場合にグラフィック部１１２が取得する印刷データの構成例を説明する。
【００３２】
図４は、ＵＩ部１１１においてソート機能が設定された場合にグラフィック部１１２が取得する印刷データの構成例を示す図である。印刷データは、印刷設定情報及びページごとの描画データを含む。印刷設定情報は、例えば、印刷部数、ソート設定の有無、両面設定の有無、ステープル設定の有無を含む。
【００３３】
図４に示すように、例えば、３ページで構成される文書を３部印刷する場合、印刷設定情報の印刷部数が「３部」、ソートが「あり」であり、１ページ目、２ページ目、３ページ目の各描画データが印刷データに含まれる。グラフィック部１１２が図４に示した印刷データを取得し、上述したＰＤＬ及びＰＪＬ形式のデータに変換してネットワークを介して画像形成装置２に送信することにより、１ページから３ページまで順に並べられた印刷物が３部印刷される。
【００３４】
図５は、アプリケーション１０１においてソート機能が設定された場合にグラフィック部１１２が取得する印刷データの構成例を示す図である。図５に示すように、例えば、３ページで構成される文書を３部印刷する場合、印刷設定情報の印刷部数が「１部」、ソートが「なし」であるが、１ページ目、２ページ目、３ページ目の順に部数分繰り返し並べた描画データが印刷データに含まれる。すなわち、図５に示した印刷データにおいては、４ページ目及び７ページ目の描画データは１ページ目と同一であり、５ページ目及び８ページ目の描画データは２ページ目と同一であり、６ページ目及び９ページ目の描画データは３ページ目と同一である。
【００３５】
グラフィック部１１２が図５に示した印刷データを取得し、上述したＰＤＬ及びＰＪＬ形式のデータに変換してネットワークを介して画像形成装置２に送信することにより、１ページから９ページまで順に並べられた印刷物が１部印刷される。すなわち、ＵＩ部１１１においてソート機能が設定された場合と同様に、１ページ目から３ページ目まで順に並べられた印刷物が３部印刷される。
【００３６】
しかしながら、このようなアプリケーション１０１のソート機能が設定されている場合、プリンタドライバ１１０は、本来は１ページ目から３ページ目まで順に並べられた印刷物を３部印刷する処理を、１ページ目から９ページ目まで順に並べられた印刷物を１部印刷する処理として実行する。そのため、ＵＩ部１１１において印刷設定情報の両面設定が「あり」と設定されている場合や、ステープル設定が「あり」と設定されている場合、指定通りの出力結果とならない場合がある。
【００３７】
例えば、１部が３ページで構成される文書の場合、両面印刷が設定されていると、９ページ分が１部の印刷物として印刷処理される場合、１部目の最終ページである３ページ目の裏面に２部目の先頭ページである１ページ目が印刷されてしまう。また、９ページ分の印刷物が１部の印刷物として印刷処理されるので、９ページ分のすべての印刷物がまとめてステープルされてしまう。
【００３８】
また、ＵＩ部１１１及びアプリケーション１０１の両方においてソート機能が設定されている場合、グラフィック部１１２が取得する印刷データは、例えば、図６に示すように、ソート機能が設定されたアプリケーション１０１により出力された１ページから９ページまでの描画データを含み、ソート機能が設定されたＵＩ部１１１を介して設定された印刷設定情報を含む。この場合、１ページ目から９ページ目まで順に並べられた印刷物が３部印刷されることになり、ユーザが意図する印刷結果とはならない。
【００３９】
本発明の実施形態に係る要旨は、アプリケーション１０１においてソート機能が設定されている場合に、指定通りの印刷結果を出力することにある。以下、本実施形態に係る構成として、本実施形態に係るプリンタドライバ１１０のグラフィック部１１２の機能構成を説明する。
【００４０】
図７は、本実施形態に係るグラフィック部１１２の機能構成を例示するブロック図である。図７に示すように、グラフィック部１１２は、印刷データ取得部１２１、描画データ記憶部１２２、ソート判定部１２３、描画データ削除部１２４及び印刷データ更新部１２５を含む。
【００４１】
印刷データ取得部１２１は、アプリケーション１０１又はアプリケーション１０１によって起動されたＵＩ部１１１により起動されたＧＤＩ１０２から受け渡された印刷データを取得する。また、印刷データ取得部１２１は、取得した印刷データに含まれる図４等に示したページごとの描画データを、描画データ記憶部１２２に記憶させる。すなわち、印刷データ取得部１２１は、ページごとの描画データとして画像形成出力の対象となるページごとの画像データを取得する画像データ取得部として機能する。
【００４２】
描画データ記憶部１２２は、印刷データ取得部１２１により取得された描画データを記憶させる記憶媒体である。描画データ記憶部１２２においては、各描画データを、例えば配列に格納し、各描画データのページ順が保持されるように記憶される。
【００４３】
ソート判定部１２３は、描画データ記憶部１２２に記憶されているページごとの描画データを参照して、アプリケーション１０１のソート機能が設定されているか否かを判定する。すなわち、ソート判定部１２３は、描画データ記憶部１２２に記憶されているページごとの描画データが複数部のデータを含むか否かを判定する判定部として機能する。また、ソート判定部１２３は、アプリケーション１０１のソート機能が設定されていると判定した場合、印刷物の１部当たりの出力ページ数及び出力すべき印刷部数（出力部数）を算出する。ソート判定部１２３による処理の詳細は後述する。
【００４４】
描画データ削除部１２４は、ソート判定部１２３の判定結果に基づいて描画データ記憶部１２２に記憶されている描画データから不要な描画データを削除する。不要な描画データは、アプリケーション１０１のソート機能が設定された場合に印刷データに含まれる同一の重複した描画データ（例えば、図５に示した印刷データに含まれる描画データの場合、４ページ目から９ページ目の描画データ）である。描画データ削除部１２４の処理の詳細は後述する。
【００４５】
印刷データ更新部１２５は、ソート判定部１２３による判定結果及び描画データ記憶部１２２に記憶されている描画データに基づいて、印刷データ取得部１２１により取得された印刷データに含まれる情報を更新して、スプーラー１０３に対して出力する。すなわち、印刷データ更新部１２５は、画像形成装置２による画像形成出力を制御する出力制御部として機能する。印刷データ更新部１２５の処理の詳細は後述する。
【００４６】
次に、ソート判定部１２３による処理の詳細を説明する。図８は、ソート判定部１２３による処理動作のフローチャートを例示する図である。図８に示すように、ソート判定部１２３は、描画データ記憶部１２２に記憶されているページごとの画像データの総数を印刷ページ数として取得する（Ｓ８０１）。
【００４７】
印刷ページ数を取得したソート判定部１２３は、印刷ページ数が１ページの場合（Ｓ８０２／ＮＯ）、アプリケーション１０１のソート機能は設定されていないと判定し（Ｓ８０９）、処理を終了する。一方、ソート判定部１２３は、印刷ページ数が２ページ以上の場合（Ｓ８０２／ＹＥＳ）、出力結果の１部当たりの出力ページ数の候補である候補ページ数を算出する（Ｓ８０３）。
【００４８】
例えば、取得した印刷ページ数が２０ページである場合、候補ページ数は、１ページ、２ページ、４ページ、５ページ、１０ページ、２０ページとなる。すなわち、１部当たりの出力ページ数が１ページの場合は２０部、２ページの場合は１０部、４ページの場合は５部、５ページの場合は４部、１０ページの場合は２部、２０ページの場合は１部となる。これ以外のページ数（例えば、３ページ）は、印刷ページ数２０ページで割り切れず、１部当たりのページ数の候補とはならない。すなわち、候補ページ数は、印刷ページ数の約数である。
【００４９】
候補ページ数を算出したソート判定部１２３は、算出した候補ページ数のうち最小の候補ページ数を取得する（Ｓ８０４）。最小の候補ページ数を取得したソート判定部１２３は、描画データ記憶部１２２に記憶されている描画データからページ順に、取得した最小の候補ページ数分取得する（Ｓ８０５）。
【００５０】
図９は、描画データ記憶部１２２に記憶されているページごとの描画データを例示する図である。図９に示すように、２０ページ分の描画データがページ順に記憶されており、“０１”〜“２０”はページ番号を示す。また、図９に示した描画データのアルファベットが同一の描画データは同一の描画データを示すものとする。以降、各描画データを区別する場合、「描画データＡ」、「描画データＢ」・・・と記述する。
【００５１】
図９に示した描画データの場合、ソート判定部１２３は、まず、候補ページ数を「１ページ」として、１ページ目の描画データＡを取得する。すなわち、１部が１ページの描画データＡから構成される配列パターンである。
【００５２】
最小の候補ページ数分の描画データを取得したソート判定部１２３は、取得した描画データのページ以降の描画データの配列パターンと、取得した描画データから構成される配列パターンとを比較して、同一であるか否かを判定する（Ｓ８０６）。
【００５３】
図１０は、１ページの描画データＡから構成される配列パターンにおける比較態様を例示する図である。図１０に示すように、候補ページ数分取得された描画データを斜線で示す。図１０に示すように、１ページ目の描画データＡと２ページ目の描画データＢとは異なる。すなわち、ソート判定部１２３は、図１０に示した比較態様においては、配列パターンが異なると判定する（Ｓ８０６／ＮＯ）。
【００５４】
配列パターンが異なると判定したソート判定部１２３は、Ｓ８０３の処理において算出された候補ページ数のうち、次に小さい候補ページ数（以降、「次候補ページ数」を取得する（Ｓ８０７）。次候補ページ数を取得したソート判定部１２３は、取得した次候補ページ数がＳ８０１の処理において取得した印刷ページ数と等しいか否かを判定する（Ｓ８０８）。
【００５５】
印刷ページ数と等しい場合（Ｓ８０８／ＹＥＳ）、ソート判定部１２３は、１部当たりのページ数が印刷ページ数である印刷物が１部印刷されるので、アプリケーション１０１のソート機能は設定されていないと判定し（Ｓ８０９）、処理を終了する。なお、Ｓ８０３の処理において、算出されたページ数のうち印刷ページ数と等しいページ数を候補ページ数として含めない場合、Ｓ８０８の処理は省略される。
【００５６】
印刷ページ数と異なる場合（Ｓ８０８／ＮＯ）、ソート判定部１２３は、描画データ記憶部１２２に記憶されている描画データからページ順に、次候補ページ数分取得する（Ｓ８０５）。例えば、図９に示した描画データの場合、ソート判定部１２３は、候補ページ数を「２ページ」として、１ページ目の描画データＡ及び２ページ目の描画データＢを取得する。すなわち、１部が２ページの描画データＡ、描画データＢの順に並べられた配列パターンである。
【００５７】
図１１は、２ページで構成される描画データＡ、描画データＢの順に並べられた配列パターンにおける比較態様を例示する図である。図１１に示すように、候補ページ数分取得された描画データを斜線で示す。図１１に示すように、１ページ目の描画データＡと３ページ目の描画データＣとは異なる。すなわち、ソート判定部１２３は、図１１に示した比較態様においては、配列パターンが異なると判定する（Ｓ８０６／ＮＯ）。
【００５８】
同様に、ソート判定部１２３は、次に小さい候補ページ数である「４ページ」の配列パターンにおいても、以降のページの配列パターンが異なると判定する（Ｓ８０６／ＮＯ）。
【００５９】
次に、ソート判定部１２３は、図９に示した描画データにおいて、次に小さい候補ページ数を「５ページ」として、１部が５ページの描画データＡ、描画データＢ、描画データＣ、描画データＤ、描画データＥの順に並べられた描画データを取得する（Ｓ８０５）。
【００６０】
図１２は、５ページで構成される配列パターンにおける比較態様を例示する図である。図１２に示すように、候補ページ数分取得された描画データを斜線で示す。図１２に示すように、５ページ分の描画データで構成される６ページ目以降の配列パターン、すなわち、ドットでハッチングされた６ページ目から１０ページ目、１１ページ目から１５ページ目、１６ページ目から２０ページ目の描画データから構成される３つの配列パターンすべてが、１ページ目から５ページ目までの描画データの配列パターンと一致する（Ｓ８０６／ＹＥＳ）。
【００６１】
このように、ソート判定部１２３は、取得した描画データのページ以降の描画データの配列パターンと、取得した描画データから構成される配列パターンとが一致する場合（Ｓ８０６／ＹＥＳ）、アプリケーション１０１のソート機能が設定されていると判定し、一致した配列パターンを構成するページ数を１部当たりの出力ページ数として算出する（Ｓ８１０）。例えば、図９に示した描画データにおいては、１部当たりの出力ページ数が５ページである。
【００６２】
すなわち、ソート判定部１２３は、取得したページごとの描画データ（画像データ）を、候補ページ数分の描画データをページ順に配列したグループに分割し、分割された各グループの画像データのグループ間の対応するページ同士での比較結果に基づき、ページごとの画像データが複数部のデータを含むことを判定する。
【００６３】
なお、Ｓ８０１において取得された印刷ページ数及び算出された１部当たりの出力ページ数から印刷部数を算出することができる。例えば、図９に示した描画データにおいては、印刷ページ数が２０ページであり１部当たりの出力ページ数が５ページであるので、印刷部数は４部である。
【００６４】
次に、描画データ削除部１２４及び印刷データ更新部１２５の処理の詳細を説明する。図１３は、描画データ削除部１２４及び印刷データ更新部１２５の処理動作を例示するフローチャートである。図１３に示すように、ソート判定部１２３によりアプリケーション１０１のソート機能が設定されていないと判定された場合（Ｓ１３０１／ＮＯ）、処理を終了する。すなわち、描画データ削除部１２４は描画データの削除処理を行わず、印刷データ更新部１２５は、印刷データ取得部１２１から取得した印刷データの更新処理を行うことなく、そのままスプーラー１０３に対して出力する。
【００６５】
一方、アプリケーション１０１のソート機能が設定されていると判定された（以降、「アプリソートあり」と記述する）場合（Ｓ１３０１／ＹＥＳ）、描画データ削除部１２４は、描画データ記憶部１２２に記憶されている描画データの中から不要な描画データを削除する（Ｓ１３０２）。
【００６６】
具体的には、描画データ削除部１２４は、ソート判定部１２３がアプリソートありと判定した場合に算出した１部当たりの出力ページ数を取得する。そして、描画データ削除部１２４は、描画データ記憶部１２２に記憶されている先頭ページから１部当たりの出力ページ数分の描画データ以外の描画データを不要な描画データとして削除する。
【００６７】
例えば、図９に示した描画データの場合、図１２に示すように１部当たりの出力ページ数は５ページなので、描画データ削除部１２４は、６ページ目以降の描画データを１ページ目から５ページ目までの描画データと重複する不要な描画データとして削除する。重複する描画データの配列パターンが存在するのは、アプリソートにより１ページ目から５ページ目までの描画データを複数部数（図９に示した態様においては４部）印刷するために１ページ目から５ページ目までの描画データがプリンタドライバ１１０に対して複数回送信されたためである。
【００６８】
そして、印刷データ更新部１２５は、ＵＩ部１１１を介してソート機能が設定されているか否かを判定する（Ｓ１３０３）。具体的には、印刷データ更新部１２５は、印刷データ取得部１２１から取得した印刷データに含まれる印刷設定情報のソート設定の有無が「ソートあり」になっている場合、ＵＩ部１１１を介してソート機能が設定されていると判定する。
【００６９】
ＵＩ部１１１を介してソート機能が設定されていると判定された場合（Ｓ１３０３／ＹＥＳ）、印刷データ更新部１２５は、印刷データ取得部１２１から取得した印刷データに含まれる描画データを、描画データ記憶部１２２に記憶されている描画データを用いて更新する（Ｓ１３０６）。例えば、印刷データ取得部１２１から取得した印刷データに図９に示した１ページ目から２０ページ目までの描画データが含まれる場合、印刷データ更新部１２５は、描画データ削除部１２４により削除されなかった１ページ目から５ページ目までの描画データを用いて、印刷データに含まれる描画データを更新する。
【００７０】
これにより、印刷データ更新部１２５は、印刷部数及びソート設定の有無等の印刷設定情報についてはＵＩ部１１１を介して設定されている情報をそのまま使用し、１部を構成するページごとの描画データを使用した印刷データに更新することになる。そのため、アプリソートにより重複した描画データを複数部数印刷することなく、指定通りの印刷結果を出力することが可能になる。
【００７１】
一方、ＵＩ部１１１を介してソート機能が設定されていないと判定された場合（Ｓ１３０３／ＮＯ）、印刷データ更新部１２５は、ソート判定部１２３がアプリソートありと判定した場合に算出した印刷部数を取得する。アプリソートありの場合であって（Ｓ１３０１／ＹＥＳ）、ＵＩ部でソート機能が設定されていないときは（Ｓ１３０３／ＮＯ）、図５に示すように、印刷データ取得部１２１が取得した印刷データに含まれる印刷設定情報の印刷部数は「１部」、ソート設定の有無は「なし」である。
【００７２】
そこで、印刷データ更新部１２５は、取得した印刷データに含まれる印刷設定情報の印刷部数をソート判定部１２３から取得した印刷部数に更新し（Ｓ１３０４）、ソート設定の有無を「あり」に更新する（Ｓ１３０５）。例えば、図９に示した描画データの場合、印刷部数は「４部」に更新される。
【００７３】
また、印刷データ更新部１２５は、取得した印刷データに含まれる描画データを、描画データ記憶部１２２に記憶されている描画データを用いて更新する（Ｓ１３０６）。これにより、印刷データ更新部１２５は、アプリソートにより送信された描画データに基づいて算出された印刷部数を用いて印刷設定情報を設定し、１部を構成するページごとの描画データを使用した印刷データに更新することになる。そのため、指定通りの印刷結果を出力することが可能になる。
【００７４】
なお、Ｓ１３０２の処理とＳ１３０４の処理とＳ１３０５の処理とは前後関係に制約はないため、逆の順序で実行されてもよいし並列して実行されてもよい。また、Ｓ１３０２の処理が行われた後であれば、Ｓ１３０４の処理、Ｓ１３０５の処理、Ｓ１３０６の処理は逆の順序で実行されてもよいし並列して実行されてもよい。
【００７５】
以上説明したように、本実施形態においては、プリンタドライバ１１０が印刷データに含まれるページごとの描画データの数に基づいて１部当たりの出力ページ数の候補を算出し、印刷データに含まれるページごとの描画データを、候補となる出力ページ数に基づくページごとの描画データの配列パターンに分割し、各配列パターンが互いに一致すると判定された場合に、アプリケーション１０１のソート機能が設定されていると判定する。その際に、プリンタドライバ１１０は、１部当たりの出力ページ数を算出し、算出した出力ページ数に基づいて印刷部数を算出する。
【００７６】
そして、プリンタドライバ１１０は、アプリケーション１０１のソート機能が設定されたことにより同じ配列パターンの描画データが部数分並べられて印刷部数が１部とされた印刷データを、１部分の描画データのみを含み、指定された印刷部数が設定された印刷データに更新する。そのため、アプリケーション１０１のソート機能により繰り返し並べられた同一の描画データを１部として複数部数印刷されることがない。また、両面印刷や後処理が行われる場合に、１部目の最終ページの裏側に２部目の先頭ページが印刷されることや、すべての印刷物がまとめてステープルされることもない。したがって、アプリケーション１０１のソート機能が設定されている場合においても、指定通りの画像形成結果（印刷結果）を出力することが可能になる。
【００７７】
なお、上記実施形態においては、候補となる出力ページ数の小さい順に配列パターンの比較処理を行う場合を例として説明した。この際、候補となる出力ページ数すべてを順に比較処理するのではなく、比較結果に応じて比較処理を行う候補ページ数をスキップしてもよい。
【００７８】
図１４は、比較結果に応じて比較処理を行う候補ページ数をスキップする場合のソート判定部１２３による処理動作のフローチャートを例示する図である。図１４に示したフローチャートは、図８に示したＳ８０７の処理であり、配列パターンの比較結果に応じて次に比較処理を行う候補ページ数をスキップする動作が含まれる。
【００７９】
図１５は、描画データ記憶部１２２に記憶されているページごとの描画データの一部を例示する図である。以降、図１５に示した描画データを例として説明する。
【００８０】
図１４に示すように、ソート判定部１２３は、現在の候補ページ数Ｐｃを取得する（Ｓ１４０１）。現在の候補ページ数Ｐｃは、図８に示したＳ８０６の処理において配列パターンが一致しないと判定された候補ページ数である。図１５に示した描画データにおいては、例えば、現在の候補ページ数Ｐｃは「３」であるが、１部が３ページの配列パターンにおいて、１〜３ページ目及び４〜６ページ目の配列パターンと７〜９ページ目の配列パターンとが異なる。
【００８１】
現在の候補ページ数Ｐｃを取得したソート判定部１２３は、現在の候補ページＰｃにおいて最後に一致したパターンの最後のページ数Ｑ１を取得する。例えば、図１５に示した描画データにおいては、最後に一致したパターンが４〜６ページであるので、最後のページ数Ｑ１は「６」である。
【００８２】
ページ数Ｑ１を取得したソート判定部１２３は、次候補ページ数Ｐｎを取得する（Ｓ１４０３）。例えば、図１５に示した描画データにおいては、次候補ページ数Ｐｎは「４」である。なお、Ｓ１４０１〜Ｓ１４０３の処理は、前後関係の制約がなく、異なる順序で実行されてもよいし同時に実行されてもよい。
【００８３】
ページ数Ｑ１及び次候補ページ数Ｐｎを取得したソート判定部１２３は、ＰｎがＱ１よりも大きいか否かを判定する（Ｓ１４０４）。ＰｎがＱ１以下である場合（Ｓ１４０４／ＮＯ）は、次候補ページ数は現在の候補ページ数の配列パターンの繰り返しの一部に含まれるので、次候補ページ数の配列パターンにはある程度の規則性があると予測される。この規則性では現在の候補ページ数の配列パターンと同様に一致しないと判定される可能性があり、次候補ページ数での比較処理をスキップしてもよい場合がある。一方、ＰｎがＱ１よりも大きい場合（Ｓ１４０４／ＹＥＳ）は、次候補ページ数の配列パターンに現在の候補ページ数の配列パターンに基づく規則性があるかは予測できないため、次候補ページ数で配列パターンの比較処理を行う必要がある。
【００８４】
ソート判定部１２３は、ＰｎがＱ１よりも大きい場合、（Ｓ１４０４／ＹＥＳ）、次候補ページ数Ｐｎをスキップすることなく、図８に示したＳ８０８の処理に進み、以降の処理を行う。一方、ソート判定部１２３は、ＰｎがＱ１以下である場合（Ｓ１４０４／ＮＯ）、ＰｃとＰｎとの最大公約数（ＧＣＤ：Ｇｒｅａｔｅｓｔ  Ｃｏｍｍｏｎ  Ｄｉｖｉｓｏｒ）を取得する（Ｓ１４０５）。例えば、図１５に示した描画データにおいては、Ｐｎ（＝４）がＱ１（＝６）以下であるので、Ｐｃ（＝３）とＰｎ（＝４）とのＧＣＤ（＝１）を取得する。
【００８５】
ＧＣＤを取得したソート判定部１２３は、ＧＣＤがＰｃと等しいか否かを判定する（Ｓ１４０６）。ＧＣＤがＰｃと等しい場合（Ｓ１４０６／ＹＥＳ）、次候補ページ数Ｐｎが現在の候補ページ数Ｐｃの倍数であることを意味する。Ｐｃでの配列パターンが一致しなかった以上、Ｐｃの倍数であるＰｎでの配列パターンも一致することはないので、このような次候補ページ数での比較処理はスキップしてもよい。
【００８６】
ソート判定部１２３は、ＧＣＤがＰｃと等しい場合（Ｓ１４０６／ＹＥＳ）、次候補ページ数Ｐｎをスキップし、その次に小さい候補ページ数をＰｎとして新たに取得し（Ｓ１４０３）、以降の処理を繰り返す。一方、ソート判定部１２３は、ＧＣＤがＰｃと等しくない場合（Ｓ１４０６／ＮＯ）、ＰｎからＱ２を引いた値がＧＣＤよりも大きいか否かを判定する（Ｓ１４０７）。例えば、図１５に示した描画データにおいては、ＧＣＤ（＝１）がＰｃ（＝３）と等しくないので、Ｓ１４０７の処理を行う。
【００８７】
Ｑ２は、Ｐｃにおいて最後から２番目に一致したパターンの最後のページ数である。例えば、図１５に示した描画データにおいては、最後から２番目に一致したパターンが１〜３ページであるので、最後のページ数Ｑ２は「３」である。
【００８８】
ＰｎからＱ２を引いた値がＧＣＤよりも大きい場合（Ｓ１４０７／ＹＥＳ）、次候補ページ数Ｐｎをスキップすることなく、図８に示したＳ８０８の処理に進み、以降の処理を行う。一方、ＰｎからＱ２を引いた値がＧＣＤ以下である場合（Ｓ１４０７／ＮＯ）、次候補ページ数Ｐｎをスキップし、その次に小さい候補ページ数をＰｎとして新たに取得し（Ｓ１４０３）、以降の処理を繰り返す。例えば図１５に示した描画データにおいては、Ｐｎ−Ｑ２（＝１）はＧＣＤ（＝１）以下であるので、Ｐｎ（＝４）での比較処理はスキップされる。
【００８９】
以下、Ｓ１４０７の処理により次候補ページ数Ｐｎをスキップするか否かを判定する理由を説明する。例えば、Ｐｃ＝３、Ｐｎ＝４、Ｑ１＝６である場合を例として説明する。Ｐｃ＝３、Ｑ１＝６であることから、ｉページ目の描画データ（例えば、「描画データＡ」や「描画データＢ」）をＰ［ｉ］とすると、Ｐ［１］＝Ｐ［４］、Ｐ［２］＝Ｐ［５］、Ｐ［３］＝Ｐ［６］の関係が成立する。
【００９０】
また、仮にＰｎ＝４の配列パターンが一致すると、Ｐ［１］＝Ｐ［５］、Ｐ［２］＝Ｐ［６］の関係が成立する。したがって、Ｐ［１］＝Ｐ［４］＝Ｐ［５］＝Ｐ［２］＝Ｐ［６］＝Ｐ［３］の関係が成り立ち、１ページ目から６ページ目の描画データはすべて同一となる。
【００９１】
一方、Ｐｃ＝３の場合に、７〜９ページ目で配列パターンが一致しなかったことから、７〜９ページ目には、１〜６ページ目の描画データとは異なる描画データが含まれる。そのため、１ページ目から６ページ目の描画データがすべて同一になる次候補ページ数Ｐｎにおいても、７ページ目以降の配列パターンと一致することはないので、このような次候補ページ数Ｐｎはスキップされてもよい。
【００９２】
次候補ページ数Ｐｎでの配列パターンが一致すると仮定した場合にページ数Ｑ１までの描画データがすべて同一となる場合、次候補ページ数Ｐｎはスキップされる。図１６は、描画データが同一であるページ間を線で結んだ模式図を例示する図である。図１６（ａ）に示すように、Ｐｃ＝３の配列パターンがページ数Ｑ１＝６まで一致した場合、１、４ページ、２、５ページ、３、６ページがそれぞれ線で結ばれる。
【００９３】
このような場合において、ページ数Ｑ１までの描画データがすべて同一となるのは、図１６（ｂ）に示すように、Ｐｎの配列パターンにおいて、１、５ページ及び２、６ページがそれぞれ線で結ばれる場合である。図１６（ａ）及び図１６（ｂ）を合わせると、１〜６ページが一本の線で結ばれる、すなわちすべての描画データが同一となる。
【００９４】
Ｐｃ及びＰｎは互いに素なので、図１６（ａ）に示した線と図１６（ｂ）に示した線とが重複することはない。したがって、図１６（ｂ）に示した線の本数が（Ｐｃ−１）本以上であれば、１〜６ページが一本の線で結ばれる。すなわち、以下の式（１）が成立する。
【００９５】
Ｐｃ−１≦Ｐｃ＊ｊ−Ｐｎ      ・・・（１）
【００９６】
なお、ｊはＰｃの配列パターンで最後に一致したパターンの順番を示す。すなわち、Ｐｃ＝３で最後に一致したパターンが４〜６ページの配列パターンである場合ｊ＝２であり、Ｐｃ＊ｊ＝Ｑ１である。そして、式（１）を変形すると、以下の式（２）となる。
【００９７】
Ｐｎ−Ｐｃ＊（ｊ−１）≦１      ・・・（２）
【００９８】
Ｐｃ＊（ｊ−１）は、Ｐｃの配列パターンで最後から２番目に一致したパターンの順序であるので、Ｑ２である。また、右辺の「１」はＧＣＤである。そして、式（２）が成立しない、すなわち、以下の式（３）の場合、Ｐｎの配列パターンはスキップされないので、Ｐｎの配列パターンが比較処理される。
【００９９】
Ｐｎ−Ｑ２＞ＧＣＤ      ・・・（３）
【０１００】
なお、図１６に示した例においては、ページ数Ｑ１が「６」すなわちｊ＝２である場合を例として説明したが、ｊ＝３以降であっても同様に成立する。
【０１０１】
図１７は、図１５に示した描画データとは異なる配列の描画データを例示する図である。図１７に示す描画データにおいては、Ｐｃ＝３、Ｐｎ＝５、Ｑ１＝６とする。ソート判定部１２３は、図１７に示した描画データにおいては、Ｐｎ−Ｑ２（＝２）＞ＧＣＤ（＝１）が成立するので、Ｐｎ＝５での配列パターンの比較処理を行う。
【０１０２】
図１８は、描画データが同一であるページ間を線で結んだ模式図を例示する図である。図１８（ａ）に示すように、Ｐｃ＝３の配列パターンがページ数Ｑ１＝６まで一致した場合、図１６（ａ）に示した場合と同様に、１、４ページ、２、５ページ、３、６ページがそれぞれ線で結ばれる。
【０１０３】
Ｐｎ＝５で配列パターンが一致すると仮定した場合、図１８（ｂ）に示すように、１、６ページが線で結ばれる。図１８（ａ）、（ｂ）に示した線から、１、３、４、６ページが同一ページであり、２、５ページが同一ページである。そのため、Ｐｃ＝３の配列パターンが７〜９ページ目で一致しなかった場合に、Ｐｎ＝５の配列パターンが７ページ目以降の配列パターンと一致するか否かは不明であるので、Ｐｎの配列パターンで比較処理を行う必要がある。
【０１０４】
なお、図１８に示した例においては、ページ数Ｑ１が「６」すなわちｊ＝２である場合を例として説明したが、ｊ＝３以降であっても同様に成立する。
【０１０５】
また、図１５及び図１７においては、ＧＣＤが１である場合を例として説明した。次に、ＧＣＤが１より大きいであってもＳ１４０７における上記式（３）の関係が成立することを説明する。図１９は、描画データ記憶部１２２に記憶されているページごとの画像データの一部を例示する図である。図１９に示す描画データにおいては、Ｐｃ＝６、Ｐｎ＝８、Ｑ１＝１２とする。
【０１０６】
ソート判定部１２３は、図１９に示す描画データにおいては、Ｐｎ（＝８）がＱ１（＝１２）以下であるので（Ｓ１４０４／ＮＯ）、Ｐｃ（＝６）とＰｎ（＝８）とのＧＣＤ（＝２）を取得する。ソート判定部１２３は、ＧＣＤ（＝２）がＰｃ（＝６）と等しくないので（Ｓ１４０６／ＮＯ）、Ｓ１４０７の処理に進む。ソート判定部１２３は、Ｐｎ−Ｑ２（＝２）がＧＣＤ（＝２）以下であるので（Ｓ１４０７／ＮＯ）、Ｐｎはスキップされる。
【０１０７】
ＧＣＤが１よりも大きい場合、Ｐｃ及びＰｎはともにＧＣＤで割り切れるので、描画データをＧＣＤ分でグループ化することができる。図２０は、図１９に示した描画データをＧＣＤ（＝２）分でグループ化した図である。図２０に示すように、描画データをＧＣＤ分でグループ化すると、グループ化後のＰｃはＰｃ／ＧＣＤ（＝３）であり、ＰｎはＰｎ／ＧＣＤ（＝４）となり、図１５に示した描画データの配列と同様に処理することが可能になる。
【０１０８】
次に、図１４に示したソート判定動作を含む例を説明する。図２１は、描画データ記憶部１２２に記憶されているページごとの描画データを例示する図である。図２１に示した描画データの印刷ページ数は、図９に示した描画データと同様２０ページなので、候補ページ数は、１、２、４、５、１０、２０ページである。
【０１０９】
図２２は、１ページの描画データＡから構成される配列パターンにおける比較態様を例示する図である。図２２に示すように、１ページ目の描画データＡと、２ページ目及び３ページ目の描画データＡとは同一であるが、４ページ目の描画データＢとは異なる。すなわち、ソート判定部１２３は、図２１に示した比較態様においては、配列パターンが異なると判定する（Ｓ８０６／ＮＯ）。
【０１１０】
配列パターンが異なると判定したソート判定部１２３は、次候補ページ数を取得する（Ｓ８０７）。その際に、図１４に示した処理が開始される。次候補ページ数Ｐｎ＝２は、Ｑ１＝３以下なので（Ｓ１４０４／ＮＯ）、ソート判定部１２３は、Ｐｃ（＝１）とＰｎ（＝２）とのＧＣＤ（＝１）を取得する（Ｓ１４０５）。
【０１１１】
ＧＣＤ（＝１）がＰｃ（＝１）と等しいので（Ｓ１４０６／ＹＥＳ）、ソート判定部１２３は、Ｐｎ＝２をスキップして、次に小さい候補ページ数をＰｎ＝４として取得する（Ｓ１４０３）。Ｐｎ＝４はＱ１＝３より大きいので（Ｓ１４０４／ＹＥＳ）、ソート判定部１２３は、Ｐｎ＝４を次候補ページ数として取得し（Ｓ８０７）、以降の処理に進む。
【０１１２】
候補ページ数の「４ページ」は印刷ページ数と異なるので（Ｓ８０８／ＮＯ）、ソート判定部１２３は、１部が４ページの描画データＡ、描画データＡ、描画データＡ、描画データＢの順に並べられた描画データを取得する（Ｓ８０５）。
【０１１３】
図２３は、４ページで構成される配列パターンにおける比較態様を例示する図である。図２３に示すように、候補ページ数分取得された描画データを斜線で示す。図２３に示すように、ドットでハッチングされた５ページ目から８ページ目の描画データの配列パターンは、１ページ目から４ページ目までの描画データの配列パターンと一致するが、９ページ目から１２ページ目の描画データの配列パターンは１ページ目から４ページ目までの描画データの配列パターンと異なる（Ｓ８０６／ＮＯ）。
【０１１４】
配列パターンが異なると判定したソート判定部１２３は、次候補ページ数を取得する（Ｓ８０７）。その際に、図１４に示した処理が開始される。次候補ページ数Ｐｎ＝５は、Ｑ１＝８以下なので（Ｓ１４０４／ＮＯ）、ソート判定部１２３は、Ｐｃ（＝４）とＰｎ（＝５）とのＧＣＤ（＝１）を取得する（Ｓ１４０５）。
【０１１５】
ＧＣＤ（＝１）がＰｃ（＝４）と等しくなく（Ｓ１４０６／ＮＯ）、ソート判定部１２３は、Ｐｎ−Ｑ２（＝１）がＧＣＤ（＝１）以下なので（Ｓ１４０７／ＮＯ）、Ｐｎ＝５をスキップして、次に小さい候補ページ数をＰｎ＝１０として取得する（Ｓ１４０３）。Ｐｎ＝１０はＱ１＝８より大きいので（Ｓ１４０４／ＹＥＳ）、ソート判定部１２３は、Ｐｎ＝１０を次候補ページ数として取得し（Ｓ８０７）、以降の処理に進む。
【０１１６】
候補ページ数の「１０ページ」は印刷ページ数と異なるので（Ｓ８０８／ＮＯ）、ソート判定部１２３は、１部が１０ページの描画データＡ、描画データＡ、・・・・、描画データＢ、描画データＡ、描画データＡ順に並べられた描画データを取得する（Ｓ８０５）。
【０１１７】
図２４は、１０ページで構成される配列パターンにおける比較態様を例示する図である。図２４に示すように、候補ページ数分取得された描画データを斜線で示す。図２４に示すように、１０ページ目の描画データＡと２０ページ目の描画データＣとが異なるので、１１ページ目から２０ページ目までの描画データの配列パターンは、１ページ目から１０ページ目の描画データの配列パターンと異なる（Ｓ８０６／ＮＯ）。
【０１１８】
配列パターンが異なると判定したソート判定部１２３は、次候補ページ数を取得する（Ｓ８０７）。その際に、図１４に示した処理が開始される。次候補ページ数Ｐｎ＝２０は、Ｑ１＝１０よりも大きいので（Ｓ１４０４／ＹＥＳ）、ソート判定部１２３は、Ｐｎ＝２０を次候補ページ数として取得し（Ｓ８０７）、以降の処理に進む。
【０１１９】
候補ページ数の「２０ページ」は印刷ページ数と等しいので（Ｓ８０８／ＹＥＳ）、ソート判定部１２３は、アプリケーション１０１のソート機能は設定されていないと判定し（Ｓ８０９）、処理を終了する。
【０１２０】
このような構成により、現在の候補ページ数の比較結果に基づき次に小さな候補ページ数の配列パターンが一致する可能性がないと判定された場合に、その候補ページ数を除外して比較処理をスキップすることができるので、１部当たりのページ数を効率よく算出することが可能になる。
【０１２１】
また、上記実施形態においては、アプリソートがある場合、描画データ削除部１２４が不要な描画データを削除する場合を例として説明した。すなわち、アプリケーション１０１及びＵＩ部１１１の両方においてソート機能が設定されている場合は、アプリケーション１０１のソート機能の設定を無効にする構成である。その他、アプリケーション１０１及びＵＩ部１１１の両方においてソート機能が設定されている場合に、どちらの設定を無効にするかを選択できるようにしてもよい。
【０１２２】
図２５は、このような実施形態における描画データ削除部１２４及び印刷データ更新部１２５の処理動作を例示するフローチャートである。図２５に示すように、ソート判定部１２３によりアプリケーション１０１のソート機能が設定されていないと判定された場合（Ｓ２５０１／ＮＯ）、処理を終了する。すなわち、描画データ削除部１２４は描画データの削除処理を行わず、印刷データ更新部１２５は、印刷データ取得部１２１から取得した印刷データの更新処理を行うことなく、そのままスプーラー１０３に対して出力する。
【０１２３】
一方、アプリソートありと判定された場合（Ｓ２５０１／ＹＥＳ）であって、ＵＩ部１１１を介してソート機能が設定されていないと判定されたときは（Ｓ２５０２／ＮＯ）、Ｓ１３０２の処理と同様に、描画データ削除部１２４は、描画データ記憶部１２２に記憶されている描画データの中から不要な描画データを削除する（Ｓ２５０３）。
【０１２４】
また、印刷データ更新部１２５は、Ｓ１３０４の処理及びＳ１３０５の処理と同様に、取得した印刷データに含まれる印刷設定情報の印刷部数をソート判定部１２３から取得した印刷部数に更新し（Ｓ２５０４）、ソート設定の有無を「あり」に更新する（Ｓ２５０５）。また、印刷データ更新部１２５は、Ｓ１３０６の処理と同様に、取得した印刷データに含まれる描画データを、描画データ記憶部１２２に記憶されている描画データを用いて更新する（Ｓ２５０６）。
【０１２５】
なお、Ｓ２５０３の処理とＳ２５０４の処理とＳ２５０５の処理とは前後関係に制約はないため、逆の順序で実行されてもよいし並列して実行されてもよい。また、Ｓ２５０３の処理が行われた後であれば、Ｓ２５０４の処理、Ｓ２５０５の処理、Ｓ２５０６の処理は逆の順序で実行されてもよいし並列して実行されてもよい。
【０１２６】
一方、アプリソートありと判定された場合（Ｓ２５０１／ＹＥＳ）であって、ＵＩ部１１１を介してソート機能が設定されていると判定されたときは（Ｓ２５０２／ＹＥＳ）、印刷データ更新部１２５は、アプリケーション１０１及びＵＩ部１１１のいずれで設定されたソート機能を無効にするか否かを決定する（Ｓ２５０７）。
【０１２７】
具体的には、例えば、印刷データ更新部１２５は、いずれの設定を優先するかを示す予め定められた優先設定情報を参照して優先度の低いほうのソート機能を無効にすることを決定する。なお、いずれを無効にするか判定する際に、クライアント端末１の表示部であるＬＣＤ６０を介して、いずれの設定を無効にするかがユーザにより設定され、印刷データ更新部１２５は、設定された情報に応じていずれかのソート機能を無効にすることを決定してもよい。
【０１２８】
アプリソートを無効にすることを決定した場合（Ｓ２５０７／ＹＥＳ）、印刷データ更新部１２５の指示に応じて描画データ削除部１２４は、描画データ記憶部１２２に記憶されている描画データの中から不要な描画データを削除する（Ｓ２５０８）。そして、印刷データ更新部１２５は、Ｓ１３０６の処理と同様に、取得した印刷データに含まれる描画データを、描画データ記憶部１２２に記憶されている描画データを用いて更新する（Ｓ２５０６）。
【０１２９】
一方、ＵＩ部１１１を介したソート機能の設定を無効にすることを決定した場合（Ｓ２５０７／ＮＯ）、印刷データ更新部１２５は、印刷データに含まれる印刷設定情報の印刷部数を、ＵＩ部１１１を介して設定された印刷部数から「１部」に更新し（Ｓ２５０９）、ソート設定の有無を「なし」に更新する（Ｓ２５１０）。なお、Ｓ２５０９の処理とＳ２５１０の処理とＳ２５１１の処理とは前後関係に制約はないため、逆の順序で実行されてもよいし並列して実行されてもよい。
【０１３０】
また、印刷データ更新部１２５は、ＵＩ部１１１を介して設定された印刷部数及びソート設定の有無以外の印刷設定（例えば、両面設定やステープル設定）を解除する（Ｓ２５１１）。ＵＩ部１１１を介したソート機能の設定を無効にした場合、アプリソートの設定が有効になり、印刷データには印刷部数分並べられた同一の配列パターンの描画データ及び印刷部数が「１部」である印刷設定情報が含まれる。そのため、これらの描画データが１部の印刷物として処理されるので、ＵＩ部１１１を介してなされた両面ありの設定やステープルありの設定が有効なままであると、１部目の最終ページの裏面に２部目の先頭ページが印刷されたり、すべての印刷物がまとめてステープルされたりする場合がある。
【０１３１】
Ｓ２５１１の処理においてこれらの設定を無効にすることにより、両面やステープルの処理はされなくなるが、上述のような１部の構成が明らかにユーザの意図とは異なる印刷物が出力されることを防止できる。なお、図２５に示した実施形態においては、印刷データ更新部１２５がアプリケーション１０１及びＵＩ部１１１のいずれで設定されたソート機能を無効にするか否かを決定したり、描画データ削除部１２４に対して削除指示を行ったりする場合を例として説明した。しかしながら、これは一例であり、図示しない印刷データ更新部１２５以外の構成部（例えば、ソート機能制御部）がこれらの処理を行うようにしてもよい。
【符号の説明】
【０１３２】
１  クライアント端末
２  画像形成装置
１０  ＣＰＵ
２０  ＲＡＭ
３０  ＲＯＭ
４０  ＨＤＤ
５０  Ｉ／Ｆ
６０  ＬＣＤ
７０  操作部
８０  バス
１０１  アプリケーション
１０２  ＧＤＩ
１０３  スプーラー
１０４  スプールファイル
１０５  プリンタプロセッサ
１０６  ポートモニタ
１１０  プリンタドライバ
１１１  ＵＩ部
１１２  グラフィック部
１２１  印刷データ取得部
１２２  描画データ記憶部
１２３  ソート判定部
１２４  描画データ削除部
１２５  印刷データ更新部
【先行技術文献】
【特許文献】
【０１３３】
【特許文献１】特開２００２−２１１０７０号公報
【図１】
2016021137.tif 000003
【図２】
2016021137.tif 000004
【図３】
2016021137.tif 000005
【図４】
2016021137.tif 000006
【図５】
2016021137.tif 000007
【図６】
2016021137.tif 000008
【図７】
2016021137.tif 000009
【図８】
2016021137.tif 000010
【図９】
2016021137.tif 000011
【図１０】
2016021137.tif 000012
【図１１】
2016021137.tif 000013
【図１２】
2016021137.tif 000014
【図１３】
2016021137.tif 000015
【図１４】
2016021137.tif 000016
【図１５】
2016021137.tif 000017
【図１６】
2016021137.tif 000018
【図１７】
2016021137.tif 000019
【図１８】
2016021137.tif 000020
【図１９】
2016021137.tif 000021
【図２０】
2016021137.tif 000022
【図２１】
2016021137.tif 000023
【図２２】
2016021137.tif 000024
【図２３】
2016021137.tif 000025
【図２４】
2016021137.tif 000026
【図２５】
2016021137.tif 000027