(57)【特許請求の範囲】
【請求項１】
ユーザにより作成されたドキュメントに基づいた印刷ジョブを生成する画像処理装置と、前記印刷ジョブに基づいた画像を記録媒体に形成する画像形成装置とを備えた画像形成システムであって、
前記画像処理装置は、
複数の前記印刷ジョブの印刷実行指令の入力を受付けると共に、複数の前記印刷ジョブの中から印刷ジョブの基本としての基本ジョブの指定を受付ける印刷ジョブ受付部と、
前記印刷ジョブ受付部を介して印刷実行指令の入力を受付けると、前記印刷ジョブに対応するジョブデータを作成するジョブデータ作成部と、
前記基本ジョブのジョブデータである基本ジョブデータと他の前記印刷ジョブのジョブデータとを比較してジョブデータの差分である差分ジョブデータを作成する差分ジョブデータ作成部と、
前記基本ジョブデータと前記差分ジョブデータ作成部により作成された前記差分ジョブデータとを前記画像形成装置に送信するジョブデータ送信部とを備え、
前記画像形成装置は、
前記ジョブデータ送信部から送信された前記基本ジョブデータと前記差分ジョブデータとを受信する受信部と、
前記受信部を介して受信した前記基本ジョブデータと前記差分ジョブデータとから前記ジョブ受付部を介して印刷実行指令を受付けた他の前記ジョブデータを再現するジョブデータ再現部と、
前記基本ジョブデータ及びジョブデータ再現部により再現された他の前記ジョブデータに基づいた画像を記録媒体に形成する印刷制御部と、
を備えることを特徴とする画像形成システム。
【請求項２】
前記差分ジョブデータ作成部は、前記基本ジョブデータと他の前記ジョブデータとをページ毎に順次比較し、一致しないページがあった場合、前記基本ジョブデータの前記一致しないページ以降のページと他の前記ジョブデータの前記一致しないページとを比較し、前記基本ジョブデータの前記一致しないページ以降のページと他の前記ジョブデータの前記一致しないページとが一致した場合、前記基本ジョブデータの前記一致しないページは他の前記ジョブデータにおいて余分なページであると判断することを特徴とする請求項１記載の画像形成システム。
【請求項３】
前記差分ジョブデータ作成部は、前記基本ジョブデータと他の前記ジョブデータとをページ毎に順次比較し、一致しないページがあった場合、前記基本ジョブデータの前記一致しないページと他の前記ジョブデータの前記一致しないページ以降のページとを比較し、前記基本ジョブデータの前記一致しないページと他の前記ジョブデータの前記一致しないページ以降のページとが一致した場合、他の前記ジョブデータの前記一致しないページは他の前記ジョブデータにおいて不足するページであると判断することを特徴とする請求項１記載の画像形成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷ジョブを作成する画像処理装置と、当該印刷ジョブを印刷する画像形成装置を備えた画像形成システムに関するものである。
【背景技術】
【０００２】
ユーザにより作成されたドキュメントに基づいて画像処理装置が生成した印刷ジョブを記録媒体に印刷する画像形成装置を備えた印刷システムにおいては、ユーザが画像処理装置にて印刷コマンドを実行してから、画像形成装置が実際の印刷物を出力するまでに実行する処理は多く、ユーザが印刷物を得るまでには多くの時間を要する。
【０００３】
このような事態を鑑みて、例えば特許文献１には、画像形成装置に既に送信した印刷ジョブの差分の印刷ジョブのみを送信し、当該印刷ジョブを受信した画像形成装置が印刷ジョブを合成し、記録媒体に印刷する印刷システムが開示されている。具体的には、ユーザによる印刷コマンド実行前に、画像処理装置はベースとなる印刷ジョブを予め画像形成装置に送信しておく。実際にユーザにより印刷コマンドが実行された際には、画像処理装置は既に画像形成装置に送信されたベースとなる印刷ジョブとの差分の印刷ジョブのみを画像形成装置に送信し、画像形成装置は以前に受信したベースとなる印刷ジョブとユーザにより印刷コマンドが実行された際に送信された差分の印刷ジョブとを合成し記録媒体に印刷する。
【０００４】
【特許文献１】特開２００６−０６９０９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１記載の印刷システムにおいては、ユーザによる印刷コマンドの実行に先駆けて、１つ以上の印刷ジョブを常に画像処理装置から画像形成装置に送信しなければならず、例えばネットワーク等の通信路に余分な負担をかけてしまうといった問題があった。
【０００６】
そこで、本発明は上記実情に鑑み、ユーザが印刷物を得るまでの時間を短縮し、かつ、画像処理装置から画像形成装置に送信される印刷ジョブのデータ量を最小限に留めることが可能な画像形成システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明にかかる画像形成システムは、ユーザにより作成されたドキュメントに基づいた印刷ジョブを生成する画像処理装置と、印刷ジョブに基づいた画像を記録媒体に形成する画像形成装置とを備えた画像形成システムであって、画像処理装置は、複数の印刷ジョブの印刷実行指令の入力を受付けると共に、複数の印刷ジョブの中から印刷ジョブの基本としての基本ジョブの指定を受付ける印刷ジョブ受付部と、印刷ジョブ受付部を介して印刷実行指令の入力を受付けると、印刷ジョブに対応するジョブデータを作成するジョブデータ作成部と、基本ジョブのジョブデータである基本ジョブデータと他の印刷ジョブのジョブデータとを比較してジョブデータの差分である差分ジョブデータを作成する差分ジョブデータ作成部と、基本ジョブデータと差分ジョブデータ作成部により作成された差分ジョブデータとを画像形成装置に送信するジョブデータ送信部とを備え、画像形成装置は、ジョブデータ送信部から送信された基本ジョブデータと差分ジョブデータとを受信する受信部と、受信部を介して受信した基本ジョブデータと差分ジョブデータとからジョブ受付部を介して印刷実行指令を受付けた他のジョブデータを再現するジョブデータ再現部と、基本ジョブデータ及びジョブデータ再現部により再現された他のジョブデータに基づいた画像を記録媒体に形成する印刷制御部と、を備えることを特徴とする
【０００８】
本発明の画像形成システムが備える画像処理装置は、複数の印刷ジョブの印刷実行指令の入力を受付けると共に、複数の印刷ジョブの中から印刷ジョブの基本としての基本ジョブの指定を受付ける印刷ジョブ受付部を有する。したがって、ユーザは印刷を実行しようとする複数の印刷ジョブの中から基本とする印刷ジョブを指定することができる。また、画像処理装置は、ジョブデータ作成部が作成したジョブデータを用い、ユーザにより指定された印刷ジョブを基本として、他の印刷ジョブとの差分のジョブデータを作成する差分ジョブデータ作成部を備える。したがって、画像処理装置は基本ジョブデータと差分ジョブデータのみを画像形成装置に送信するため、送信される印刷ジョブデータのデータ量を最小限に留めることができる。さらに、本発明の画像形成システムが備える画像形成装置は、画像処理装置から送信された基本ジョブデータと差分ジョブデータから、ジョブ受付部を介して印刷実行指令を受付けた他のジョブデータを再現するジョブデータ再現部を備える。したがって、画像形成装置が実際の印刷物を出力するまでに実行する処理が簡略化されるため、ユーザが印刷物を取得するまでの時間を短縮することができる。
【発明の効果】
【０００９】
本発明の画像システムによれば、ユーザが印刷物を得るまでの時間を短縮し、かつ、画像処理装置から画像形成装置に送信される印刷ジョブのデータ量を最小限に留めることが可能となる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明について図面を参照して説明する。なお、本発明は以下の記述に限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【００１１】
[第１の実施形態]
図１は本発明の第１の実施形態にかかる画像形成システムの構成を説明するためのブロック図である。画像形成システムは、ユーザの操作によりドキュメントを作成し、当該ドキュメントに基づく印刷ジョブを生成する画像処理装置としてのホストＰＣ１００と、例えば電子写真方式等による画像形成が可能な画像形成装置としてのプリンタ２００とを備え、このホストＰＣ１００とプリンタ２００はネットワーク９００を介して接続されている。まず、ホストＰＣ１００について説明し、次いでプリンタ２００について説明する。
【００１２】
まず、ホストＰＣ１００の構成について説明する。ホストＰＣ１００は、ユーザがホストＰＣ１００を制御するためのユーザインタフェース１０１と、ユーザインタフェース１０１への入力を受けてプリンタドライバ１０３を制御する印刷ジョブ受付部としての流用印刷ユーティリティ１０２と、ユーザにより作成されたドキュメントをジョブデータに変換するジョブデータ作成部としてのプリンタドライバ１０３と、ジョブデータから差分ジョブデータを作成する差分ジョブデータ作成部としての差分検出部１０４と、印刷ジョブデータ又は差分印刷ジョブデータをプリンタ２００への送信を制御するジョブデータ送信部としての送信制御部１０５と、送信制御部１０５の指示に基づいてネットワーク９００を介してプリンタ２００に送信する通信部１０６と、ＰＣ１００の制御の際に実行される制御プログラム等を記憶する記憶部１０７と、基本ジョブデータ又は差分ジョブデータ等を記憶する印刷データ記憶部１０７Ａとを備える。
【００１３】
ユーザインタフェース１０１は、例えば図示せぬマウス，キーボード，モニタ等を有し、ユーザがホストＰＣ１００を制御するための入出力デバイスである。ユーザインタフェース１０１を介してユーザにより作成されたドキュメントは記憶部１０７に記憶される。
【００１４】
流用印刷ユーティリティ１０２は、ユーザにより起動されると、図２に示すようなＧＵＩ（Graphic User Interface）３００をユーザインタフェース１０１の図示せぬモニタに表示させる。図２に示すＧＵＩ３００は、印刷ジョブの基本としての基本ジョブであるベースＪＯＢの入力を受付けるベースＪＯＢテキストボックス３００Ａと、ベースＪＯＢを基本として印刷が実行される他の印刷ジョブとしての流用ＪＯＢの入力を受付ける流用ＪＯＢテキストボックス３００Ｂと、印刷実行の実行指示を受付ける印刷開始ボタン３００Ｃとを備える。図２のＧＵＩ３００には、ベースＪＯＢとしてａａａ．ｄｏｃ、流用ＪＯＢとしてｂｂｂ．ｄｏｃ，ｃｃｃ．ｄｏｃ，ｄｄｄ．ｄｏｃが入力されている様子が示されている。本実施形態においては、これらの印刷ジョブの入力は手入力としているが、例えばユーザが作業したドキュメントの履歴をポップアップメニュー等で表示させ、表示されたドキュメントから印刷ジョブを選択する形態としてもよい。また、流用ユーティリティ１０２は、ＧＵＩ３００を介して受付けたベースＪＯＢ及び流用ＪＯＢを印刷ジョブデータに変換するようプリンタドライバ１０３に指示を供給する。
【００１５】
プリンタドライバ１０３は、流用印刷ユーティリティ１０２からの指示の供給を受け、例えば、図３に示す、ａａａ．ｄｏｃ３０１Ａ，ｂｂｂ．ｄｏｃ３０１Ｂ,ｃｃｃ．ｄｏｃ３０１Ｃ，ｄｄｄ．ｄｏｃ３０１Ｄのそれぞれ５ページからなる文書ドキュメントをプリンタ２００が解釈可能な記述言語であるジョブデータに変換する。なお、図３に示す５ページからなる文書ドキュメントは、ページ２,３,５には差異はなく、ページ１の社名,ページ４の担当者のみが異なっている。図４は、プリンタドライバ１０３がユーザによりベースＪＯＢとして指定されたａａａ．ｄｏｃをプリンタ２００が解釈可能なジョブデータに変換した際のイメージ図である。プリンタドライバ１０３はドキュメントをジョブデータに変換した後、ジョブデータを印刷データ記憶部１０７Ａに記憶させる。また、プリンタドライバ１０３は、ジョブデータへの変換対象の印刷ジョブがベースＪＯＢであった場合には、ドキュメントをジョブデータに変換後、即座にジョブデータをプリンタ２００に送信するよう送信制御部１０５に指示を供給する。一方、プリンタドライバ１０３は、ジョブデータへの変換対象の印刷ジョブが流用ＪＯＢであった場合には、ドキュメントをジョブデータに変換後、差分検出部１０４に対してベースＪＯＢのジョブデータと流用ＪＯＢのジョブデータとの差分を検出するよう指示を供給する。また、プリンタドライバ１０３は、差分検出部１０４による差分ジョブデータの生成後、当該差分ジョブデータをプリンタ２００に送信するよう送信制御部２００に指示を供給する。
【００１６】
差分検出部１０４は、プリンタドライバ１０３からベースＪＯＢのジョブデータと流用ＪＯＢのジョブデータとの差分の検出指示が供給されると、対応するベースＪＯＢのジョブデータと流用ＪＯＢのジョブデータとを印刷データ記憶部１０７Ａから検索し、両ジョブデータを比較することで、図５に示すような差分ジョブデータを作成する。図５に示されている差分ジョブデータは、ａａａ．ｄｏｃ３０１ＡをベースＪＯＢ、ｂｂｂ．ｄｏｃ３０１Ｂを流用ＪＯＢとした場合の、ｂｂｂ．ｄｏｃ３０１Ｂのジョブデータのａａａ．ｄｏｃ３０１Ａのジョブデータに対する差分ジョブデータである。また、差分検出部１０４は、作成した差分ジョブデータを再度印刷データ記憶部１０７Ａに記憶させる。
【００１７】
送信制御部１０５は、プリンタドライバ１０３からのジョブデータの送信指示に基づき、プリンタドライバ１０３に指定されたベースＪＯＢのジョブデータ又は流用ＪＯＢのジョブデータにユーザ名を付与し、通信部１０６に対してプリンタ２００にジョブデータを送信するよう指示を供給する。なお、ここでのユーザ名とは、例えばホストＰＣ１００のネットワークＩＤ等のジョブデータの送信元を識別するための識別情報である。
【００１８】
通信部１０６は、送信制御部１０５によるジョブデータの送信指示に基づき、ジョブデータをネットワーク９００を介してプリンタ２００に送信する。
【００１９】
上述した機能を備えた流用印刷ユーティリティ１０２，プリンタドライバ１０３，差分検出部１０４，送信制御部１０５，通信部１０６は、ホストＰＣ１００の図示せぬオペレーティングシステム上で動作するアプリケーションプログラムである。これらのアプリケーションプログラムは、例えば、ＵＶ−ＥＰＲＯＭ(Ultra-Violet Erasable Programmable Read Only Memory)、又はＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）等の不揮発性メモリに格納され、実行指令に基づき図示せぬＣＰＵ（Central Processing Unit）が記憶部１０７から読み出し、処理を実行することでその機能が発揮される。
【００２０】
記憶部１０７は、例えば、ＨＤＤ（Hard Disk Drive）やフラッシュメモリ、或いはＲＡＭ（Random Access Memory）等を備えた記憶領域である。記憶部１０７は、さらにベースＪＯＢのジョブデータや流用ＪＯＢのジョブデータ等が記憶される印刷データ記憶部１０７Ａを備える。印刷データ記憶部１０７Ａに記憶されるジョブデータは、図６に示すように、ＩＤ，ＪＯＢナンバー，データタイプに関連付けられて記憶される。ＩＤは、流用印刷ユーティリティ１０２を介してユーザにより印刷実行の実行指示が入力された際に取得される任意な固有の値である。このＩＤは、流用印刷ユーティリティ１０２の１回の動作で印刷に供される複数のジョブ（１つのベースＪＯＢ及び複数の流用ＪＯＢ）で共通である。ＪＯＢナンバーは、同一ＩＤ内では固有の値である。流用ＪＯＢの最後に処理されるジョブでは必ず９９９９のナンバーがセットされ、その他のジョブでは、００００から処理される順にインクリメントされる値がセットされる。データタイプは、ジョブデータがベースＪＯＢのジョブデータの場合には、「ベースＪＯＢ」がセットされる。また、同様に流用ＪＯＢのジョブデータの場合には、「流用ＪＯＢ」がセットされ、差分ジョブデータの場合には、「差分データ」がセットされる。
【００２１】
以下、ＩＤ，ＪＯＢナンバー，データタイプに関連付けられたジョブデータがベースＪＯＢのジョブデータの場合は印刷データ、データタイプに関連付けられたジョブデータが流用ＪＯＢのジョブデータの場合は流用データ、差分検出部１０４により作成された流用ＪＯＢの差分ジョブデータの場合は差分データと称する。また、印刷データ又は差分データのヘッダにユーザ名が付されたものを、単にデータと称する。
【００２２】
次に、プリンタ２００の構成について説明する。プリンタ２００は、図１に示すように、ホストＰＣ１００から送信されたデータを受信する受信部２０１と、受信部２０１から供給されたデータを記憶部２０６に記憶させると共に、印刷制御部２０４に印刷実行の指示を供給する受信解析部２０２と、受信した差分データから流用ＪＯＢのジョブデータを復元する差分合成部２０３と、受信解析部２０２の指示に基づき、ベースＪＯＢのジョブデータ又は流用ＪＯＢのジョブデータをラスタデータに変換し、印刷部２０５に印刷実行の実行指示を供給する印刷制御部２０４と、印刷制御部２０４の指示に基づき、記録媒体に画像を形成する印刷部２０５と、印刷データ又は差分データ等を記憶する記憶部２０６とを備える。
【００２３】
受信部２０１は、ネットワーク９００を介してホストＰＣ１００から送信されたデータを受信し、受信したデータを受信解析部２０２に供給する。前述したように、受信部２０１が受信するデータは、ホストＰＣ１００の送信制御部１０５により印刷データ又は差分データのヘッダにユーザ名が付されたものであり、ユーザ名３０４Ａ，ＩＤ３０４Ｂ，ＪＯＢナンバー３０４Ｃ，データタイプ３０４Ｄ,印刷ジョブデータ３０４Ｅから構成される。ここでのユーザ名は、例えば「ｔａｒｏ］とする（図７）。
【００２４】
受信解析部２０２は、通信部２０１からデータの供給を受けると、記憶部２０６に記憶させると共に、印刷部２０５に印刷実行の指示を供給する。ここで、通信部２０１から供給を受けたデータタイプがベースＪＯＢである場合には、受信解析部２０２は、印刷部２０５に対して印刷実行の指示を供給する。一方、通信部２０１から供給を受けたデータタイプが差分データである場合には、受信解析部２０２は、差分合成部２０３に対して流用ＪＯＢのジョブデータを復元するよう指示を供給する。また、受信解析部２０２は、差分合成部２０３による流用ＪＯＢのジョブデータの復元後、当該ジョブデータを印刷するよう印刷部２０５に対して印刷実行の指示を供給する。
【００２５】
差分合成部２０３は、受信解析部２０２より流用ＪＯＢのジョブデータの復元指示が供給されると、対応する印刷データと差分データを記憶部２０６から検索し、合成することで流用ＪＯＢのジョブデータを復元し、記憶部２０６に再度記憶させる。
【００２６】
印刷制御部２０４は、受信制御部２０２からの印刷指示に基づき、受信制御部２０２により指定されたベースＪＯＢのジョブデータ又は差分合成部２０３により復元された流用ＪＯＢのジョブデータを記録部２０６から読み取り、画像修理してラスタデータに変換する。さらに、印刷制御部２０４は、ベースＪＯＢのジョブデータに対応するラスタデータ又は流用ＪＯＢのジョブデータに対応するラスタデータを印刷するよう印刷部２０５に対して指示を供給する。
【００２７】
上述した機能を備えた通信部２０１，受信制御部２０２，差分合成部２０３，印刷制御部２０４は、プリンタ２００が備えるアプリケーションプログラムである。これらのアプリケーションプログラムは、例えば、ＵＶ−ＥＰＲＯＭ(Ultra-Violet Erasable Programmable Read Only Memory)、又はＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）等の不揮発性メモリ不揮発性メモリに格納され、実行指令に基づき図示せぬＣＰＵ（Central Processing Unit）が記憶部２０６から読み出し、処理を実行することでその機能が発揮される。
【００２８】
印刷部２０５は、例えば電子写真方式による画像形成が可能な印刷エンジンであり、印刷制御部２０４の指示に基づき記録媒体に画像を形成する。
【００２９】
記憶部２０６は、例えば、ＨＤＤ（Hard Disk Drive）やフラッシュメモリ、或いはＲＡＭ（Random Access Memory）等を備えた記憶領域である。記憶部２０６は、図８に示すようにユーザ名毎に印刷データ又は差分デー等タを記憶する。
【００３０】
このような構成を備えた画像形成システムの動作について、以下に説明する。まず、流用印刷ユーティリティ１０２が実行する処理について図９を用いて説明する。図９は、流用印刷ユーティリティ１０２の処理動作を説明するフローチャートである。
【００３１】
まず、図示せぬマウス等のユーザインタフェース１０１を介したユーザによる起動指示に基づき、流用印刷ユーティリティ１０２が起動する（ステップＳ１０１）。起動した流用印刷ユーティリティ１０２は、図２に示すＧＵＩ３００を図示せぬモニタに表示する。流用印刷ユーティリティ１０２は、ベースＪＯＢテキストボックス３００Ａ及び流用ＪＯＢテキストボックス３００Ｂへの入力が完了し、ユーザによる印刷開始ボタン３００Ｃの押下があるまで待機する（ステップＳ１０２）。なお、図２に示すように、ここではベースＪＯＢテキストボックス３００ＡにベースＪＯＢとして、ａａａ．ｄｏｃ３０１Ａが入力され、流用ＪＯＢテキストボックス３００Ｂに流用ＪＯＢとして、ｂｂｂ．ｄｏｃ３０１Ｂ，ｃｃｃ．ｄｏｃ３０１Ｃ，ｄｄｄ．ｄｏｃ３０１Ｄがユーザにより入力されたものとする。
【００３２】
ユーザによる入力が完了し、印刷開始ボタンが押下されると（ステップＳ１０２  Ｙｅｓ）、流用印刷ユーティリティ１０２は、ベースＪＯＢ及び流用ＪＯＢに対して固有なＩＤを取得する。なお、ここでは００００から０４５５までのＩＤが以前に使用されており、流用印刷ユーティリティ１０２は、ＩＤとして０４５６を取得したものとする。また、流用印刷ユーティリティ１０２は、ａａａ．ｄｏｃ３０１ＡがベースＪＯＢである旨を示すベースＪＯＢフラグをセットする（ステップＳ１０３）。
【００３３】
次に、流用印刷ユーティリティ１０２は、プリンタドライバ１０３に対してＩＤ＝０４５６を通知すると共にａａａ．ｄｏｃ３０１Ａを処理するよう指示を供給する（ステップＳ１０４）。このプリンタドライバ１０３による処理については後ほど説明する。
【００３４】
次に、流用印刷ユーティリティ１０２は、流用ＪＯＢテキストボックス３００Ｂに入力された未処理の流用ＪＯＢの数を算出する。この時点における未処理の流用ＪＯＢは、ｂｂｂ．ｄｏｃ３０１Ｂ，ｃｃｃ．ｄｏｃ３０１Ｃ，ｄｄｄ．ｄｏｃ３０１Ｄの３つであるため（ステップＳ１０５  Ｎｏ）、流用印刷ユーティリティ１０２は、プリンタドライバ１０３に対してＩＤ＝０４５６を通知すると共にｂｂｂ．ｄｏｃ３０１Ｂを処理するよう指示を供給する（ステップＳ１０４）。このプリンタドライバ１０３による処理については後ほど説明する。また、流用印刷ユーティリティ１０２は、ｃｃｃ．ｄｏｃ３０１Ｃについても同様に処理する。
【００３５】
ｃｃｃ．ｄｏｃ３０１Ｃの処理が終了後、ステップＳ１０５において、流用印刷ユーティリティ１０２は、残る未処理の流用ＪＯＢがｄｄｄ．ｄｏｃ３０１Ｄのみであると判断すると（ステップＳ１０５  Ｙｅｓ）、最後の未処理流用ＪＯＢである旨を示す最終フラグをセットする。流用印刷ユーティリティ１０２は、プリンタドライバ１０３に対してＩＤ＝０４５６を通知すると共にｄｄｄ．ｄｏｃ３０１Ｄを処理するよう指示を供給し（ステップＳ１０６）、処理を終了する。
【００３６】
次に、流用印刷ユーティリティ１０２の指示に基づき処理を実行するプリンタドライバ１０３の処理動作及び送信されたデータを受信したプリンタ２００が実行する処理動作を図１０及び図１１を用いて説明する。図１０は、流用印刷ユーティリティ１０２の指示の供給を受けて主にプリンタドライバ１０３が実行する処理を説明するフローチャートであり、図１１は、送信されたデータを受信したプリンタ２００が実行する処理を説明するフローチャートである。
【００３７】
流用印刷ユーティリティ１０２の指示の供給を受けて、プリンタドライバ１０３は、１）ａａａ．ｄｏｃ３０１Ａ（ベースＪＯＢ）にかかる処理，２）ｂｂｂ．ｄｏｃ３０１Ｂ及びｃｃｃ．ｄｏｃ３０１Ｃ（流用ＪＯＢ）にかかる処理，３）ｄｄｄ．ｄｏｃ３０１Ｄ（最終流用ＪＯＢ）にかかる処理を順に実行する。まず、１）ａａａ．ｄｏｃ３０１Ａ（ベースＪＯＢ）にかかる処理について説明する。
【００３８】
ベースＪＯＢとして、ａａａ．ｄｏｃ３０１Ａの処理の実行指示の供給を受けたプリンタドライバ１０３は、記憶部１０７に記憶されているａａａ．ｄｏｃ３０１Ａを読み取り、図４に示すジョブデータを作成する（ステップＳ２０２）。
【００３９】
次に、プリンタドライバ１０３は、最後の未処理流用ＪＯＢである旨を示す最終フラグがセットされているか否かを確認する（ステップＳ２０３）。ａａａ．ｄｏｃ３０１Ａには、最終フラグがセットされていないので（ステップＳ２０３  Ｎｏ）、プリンタドライバ１０３は、固有のＪＯＢナンバーを取得する。ここでは、ＪＯＢナンバーとして００００がセットされたものとする（ステップＳ２０５）。
【００４０】
次に、プリンタドライバ１０３は、ベースＪＯＢである旨を示すベースＪＯＢフラグがセットされているか否かを確認する（ステップＳ２０６）。ａａａ．ｄｏｃ３０１Ａには、ベースＪＯＢフラグがセットされているので（ステップＳ２０６  Ｙｅｓ）、プリンタドライバ１０３は、ジョブデータにＩＤ，ＪＯＢナンバー，データタイプを関連付け、記憶部１０７内の印刷データ記憶部１０７Ａに印刷データとして記憶させる（図１２）。
【００４１】
次に、プリンタドライバ１０３は、送信制御部１０５に対して印刷データを送信するよう指示を供給する。印刷データの送信指示の供給を受けた送信制御部１０５は、印刷データ記憶部１０７Ａからプリンタ２００に送信する印刷データを読み取り、そのヘッダにユーザ名として「ｔａｒｏ」を追加する（図１３）。そして、送信制御部１０５はデータを通信部１０６に供給する。データの供給を受けた通信部１０６は、データをネットワーク９００を介してプリンタ２００に送信し（ステップＳ２０７）、処理を終了する。
【００４２】
ホストＰＣ１００から送信されたデータを通信部２０１を介して受信した受信制御部２０２は（ステップＳ３０１  Ｙｅｓ）、図１４に示すように、受信したデータを記憶部２０６に記憶させる。さらに、受信制御部２０２は、受信データのデータタイプの解析を行う（ステップＳ３０２）。ここでは、受信したデータは印刷データ、すなわちデータタイプ＝ベースＪＯＢであるので（Ｓ３０３  Ｙｅｓ）、受信制御部２０２は印刷制御部２０４に対して印刷を実行するよう指示を供給する。
【００４３】
印刷実行の指示の供給を受けた印刷制御部２０４は、記憶部２０６に記憶されている印刷データを読み取り、ジョブデータをラスタデータに変換後、印刷部２０６に供給する。ラスタデータの供給を受けた印刷部２０５は記録媒体に画像を形成する。
【００４４】
続いて、２）ｂｂｂ．ｄｏｃ３０１Ｂ及びｃｃｃ．ｄｏｃ３０１Ｃ（流用ＪＯＢ）にかかる処理について説明する。２）ｂｂｂ．ｄｏｃ３０１Ｂ及びｃｃｃ．ｄｏｃ３０１Ｃは同一の処理であるため、ここではｂｂｂ．ｄｏｃ３０１Ｂにかかる処理について説明する。なお、ステップＳ２０２，ステップＳ２０３，ステップＳ２０５における処理は、１）ａａａ．ｄｏｃ３０１Ａと同一の処理のため、ここでは説明を省略する。
【００４５】
ステップＳ２０６において、プリンタドライバ１０３は、ベースＪＯＢである旨を示すベースＪＯＢフラグがセットされているか否かを確認する。ここでは、ベースＪＯＢフラグはセットされていないため（ステップＳ２０６  Ｎｏ）、プリンタドライバ１０３は、差分検出部１０４に対して差分ジョブデータを作成するよう指示を供給すると共に、図１５に示すように流用データを印刷データ記憶部１０７Ａに記憶させる。
【００４６】
差分ジョブデータの作成指示の供給を受けた差分検出部１０４は、印刷データ記憶部１０７Ａに記憶されている印刷データ及び流用データを読み出し、両データを比較して差分ジョブデータを作成する（ステップＳ２０８）。作成された差分ジョブデータは、図６に示すように、ＩＤ，ＪＯＢナンバー，データタイプに関連付けられて差分データとして印刷データ記憶部１０７Ａに記憶される。差分検出部１０４による差分ジョブデータの作成は後述する。
【００４７】
次に、プリンタドライバ１０３は、送信制御部１０５に対して差分データを送信するよう指示を供給する。差分データの送信指示の供給を受けた送信制御部１０５は、印刷データ記憶部１０７Ａからプリンタ２００に送信する差分データを読み取り、そのヘッダにユーザ名として「ｔａｒｏ」を追加する（図７）。そして、送信制御部１０５はデータを通信部１０６に供給する。データの供給を受けた通信部１０６は、データをネットワーク９００を介してプリンタ２００に送信する。また、プリンタドライバ１０３は、印刷データ記憶部１０７Ａに記憶されている差分データを削除し、印刷データ記憶部１０７Ａは図１２に示す状態に戻る（ステップＳ２０９）。
【００４８】
次に、プリンタドライバ１０３は、最後の未処理流用ＪＯＢである旨を示す最終フラグがセットされているか否かを確認する（ステップＳ２１０）。ここでは、最終フラグはセットされていないので（ステップＳ２１０  Ｎｏ）、プリンタドライバ１０３は処理を終了する。
【００４９】
ホストＰＣ１００から送信されたデータを通信部２０１を介して受信した受信制御部２０２は（ステップＳ３０１  Ｙｅｓ）、図１６に示すように、受信したデータを記憶部２０６に記憶させる。さらに、受信制御部２０２は、受信データのデータタイプの解析を行う（ステップＳ３０２）。ここでは、受信したデータは差分データ、すなわちデータタイプ＝差分データであるので（Ｓ３０３  Ｎｏ）、受信制御部２０２は差分合成部２０３に流用ＪＯＢのジョブデータを復元するよう指示を供給する。流用ＪＯＢの復元指示の供給を受けた差分合成部２０３は、対応する印刷データと差分データを記憶部２０６から検索し、合成することで流用ＪＯＢのジョブデータを復元し、図１７に示すように記憶部２０６に流用データとして再度記憶させる（ステップＳ３０５）。差分合成部２０３による流用ＪＯＢのジョブデータの復元は後述する。
【００５０】
次に、受信制御部２０２は印刷制御部２０４に対して印刷を実行するよう指示を供給する。印刷実行の指示の供給を受けた印刷制御部２０４は、記憶部２０６に記憶されている流用データを読み取り、ジョブデータをラスタデータに変換後、印刷部２０６に供給する。ラスタデータの供給を受けた印刷部２０５は記録媒体に画像を形成する。さらに、受信制御部２０２は、記憶部２０６に記憶されている流用ＪＯＢのジョブデータを削除し（ステップＳ３０６）、記憶部２０６は図１４に示す状態となる。
【００５１】
さらに、受信制御部２０２は、流用ＪＯＢに関連付けられていたＪＯＢナンバーが９９９９であるか否かを確認する（ステップＳ３０７）。ここでは、ＪＯＢナンバーは９９９９ではないので（ステップＳ３０７  Ｎｏ）、受信制御部２０２は処理を終了する。
【００５２】
続いて、３）ｄｄｄ．ｄｏｃ３０１Ｄ（最終流用ＪＯＢ）にかかる処理について説明する。まず、最終流用ＪＯＢとして、ｄｄｄ．ｄｏｃ３０１Ｄの処理の実行指示の供給を受けたプリンタドライバ１０３は、記憶部１０７に記憶されているｄｄｄ．ｄｏｃ３０１Ｄを読み取り、ジョブデータを作成する（ステップＳ２０２）。
【００５３】
次に、プリンタドライバ１０３は、最後の未処理流用ＪＯＢである旨を示す最終フラグがセットされているか否かを確認する（ステップＳ２０３）。ｄｄｄ．ｄｏｃ３０１Ｄには、最終フラグがセットされているので（ステップＳ２０３  Ｙｅｓ）、プリンタドライバ１０３は、ＪＯＢナンバーとして９９９９をセットする（ステップＳ２０４）。
【００５４】
次に、プリンタドライバ１０３は、ベースＪＯＢである旨を示すベースＪＯＢフラグがセットされているか否かを確認する（ステップＳ２０６）。ここでは、ベースＪＯＢフラグはセットされていないため（ステップＳ２０６  Ｎｏ）、プリンタドライバ１０３は、差分検出部１０４に対して差分ジョブデータを作成するよう指示を供給すると共に、図１８に示すように流用データを印刷データ記憶部１０７Ａに記憶させる。
【００５５】
差分ジョブデータの作成指示の供給を受けた差分検出部１０４は、印刷データ記憶部１０７Ａに記憶されている印刷データ及び流用データを読み出し、両データを比較して差分ジョブデータを作成する（ステップＳ２０８）。作成された差分ジョブデータは、図１９に示すように、ＩＤ，ＪＯＢナンバー，データタイプに関連付けられて差分データとして印刷データ記憶部１０７Ａに記憶される。差分検出部１０４による差分ジョブデータの作成は後述する。
【００５６】
次に、プリンタドライバ１０３は、送信制御部１０５に対して差分データを送信するよう指示を供給する。差分データの送信指示の供給を受けた送信制御部１０５は、印刷データ記憶部１０７Ａからプリンタ２００に送信する差分データを読み取り、そのヘッダにユーザ名として「ｔａｒｏ」を追加する（図２０）。そして、送信制御部１０５はデータを通信部１０６に供給する。データの供給を受けた通信部１０６は、データをネットワーク９００を介してプリンタ２００に送信する。また、プリンタドライバ１０３は、印刷データ記憶部１０７Ａに記憶されている差分データを削除し、印刷データ記憶部１０７Ａは図１２に示す状態に戻る（ステップＳ２０９）。
【００５７】
次に、プリンタドライバ１０３は、最後の未処理流用ＪＯＢである旨を示す最終フラグがセットされているか否かを確認する（ステップＳ２１０）。ここでは、最終フラグはセットがセットされているので（ステップＳ２１０  Ｙｅｓ）、プリンタドライバ１０３は、印刷データ記憶部１０７Ａに記憶されているベースＪＯＢの印刷データを削除し（ステップＳ２１１）、処理を終了する。
【００５８】
ホストＰＣ１００から送信されたデータを通信部２０１を介して受信した受信制御部２０２は（ステップＳ３０１  Ｙｅｓ）、図２１に示すように、受信したデータを記憶部２０６に記憶させる。さらに、受信制御部２０２は、受信データのデータタイプの解析を行う（ステップＳ３０２）。ここでは、受信したデータは差分データ、すなわちデータタイプ＝差分データであるので（Ｓ３０３  Ｎｏ）、受信制御部２０２は差分合成部２０３に流用ＪＯＢのジョブデータを復元するよう指示を供給する。流用ＪＯＢの復元指示の供給を受けた差分合成部２０３は、対応する印刷データと差分データを記憶部２０６から検索し、合成することで流用ＪＯＢのジョブデータを復元し、図２２に示すように記憶部２０６に流用データとして再度記憶させる（ステップＳ３０５）。差分合成部２０３による流用ＪＯＢのジョブデータの復元は後述する。
【００５９】
次に、受信制御部２０２は印刷制御部２０４に対して印刷を実行するよう指示を供給する。印刷実行の指示の供給を受けた印刷制御部２０４は、記憶部２０６に記憶されている流用データを読み取り、ジョブデータをラスタデータに変換後、印刷部２０６に供給する。ラスタデータの供給を受けた印刷部２０５は記録媒体に画像を形成する。さらに、受信制御部２０２は、記憶部２０６に記憶されている流用ＪＯＢのジョブデータを削除し（ステップＳ３０６）、記憶部２０６は図１４に示す状態となる。
【００６０】
さらに、受信制御部２０２は、流用ＪＯＢに関連付けられていたＪＯＢナンバーが９９９９であるか否かを確認する（ステップＳ３０７）。ここでは、ＪＯＢナンバーは９９９９であるので（ステップＳ３０７  Ｙｅｓ）、受信制御部２０２はベースＪＯＢの印刷データを削除し（ステップＳ３０８）、処理を終了する。
【００６１】
次に、図２３を用いて差分検出部１０４が差分ジョブデータを作成する処理について説明する。ここでは、ａａａ．ｄｏｃ３０１ＡをベースＪＯＢとし、ｂｂｂ．ｄｏｃ３０１Ｂを流用ＪＯＢとして、差分ジョブデータを作成する処理について説明する。また、プリンタドライバ１０３により図４に示すａａａ．ｄｏｃ３０１Ａのジョブデータ３０２、及び図２４に示すｂｂｂ．ｄｏｃ３０１Ｂのジョブデータ３０５が作成され、それぞれ、印刷データ及び流用データとして記憶部１０７に記憶されているものとする。
【００６２】
図１０のステップＳ２０８において、プリンタドライバ１０３により起動指示の供給を受けると、差分検出部１０４は記憶部１０７に記憶されているベースＪＯＢの印刷データ及び流用ＪＯＢの流用データを読み取り、ワークメモリに展開する。なお、ワークメモリに展開される印刷データのページデータをｂａｓｅ（ｎ）、流用データのページデータをｒｙｕ（ｎ）と称し、例えば、印刷データのページ１データはｂａｓｅ（１）と称する。つまり、ｂａｓｅ（１）〜ｂａｓｅ（５）    がａａａ．ｄｏｃ３０１Ａに対する印刷データの各ページデータに相当し、ｒｙｕ（１）〜ｒｙｕ（５）がｂｂｂ．ｄｏｃ３０１Ｂに対する流用データの各ページデータに相当する。また、差分検出部１０４はページ比較処理を行っているページ番号の変数であるｐｔを１に初期化する。さらに、差分検出部１０４は空の差分ジョブデータをメモリに確保する。（ステップＳ４０１）。
【００６３】
ステップＳ４０２において、差分検出部１０４は、ｒｙｕ（１）がＮＵＬＬデータか否かを確認する。ここでは、ｒｙｕ（１）はＮＵＬＬデータではないので（ステップＳ４０２  Ｎｏ）、差分検出部１０４は、ｂａｓｅ（１）とｒｙｕ（１）とを比較し差異があるか否かを確認する（ステップＳ４０３）。具体的には、差分検出部１０４は、図４に示したジョブデータ３０２のページ１データ３０２Ａと図２４に示したジョブデータ３０５のページ１データ３０５Ａとを比較する。ここでは、ページ１データ３０２Ａのポイント３０２ＡＡにおける「Ａ」と、ページ１データ３０５Ａのポイント３０５ＡＡにおける「Ｂ」とが異なる。したがって、ｂａｓｅ（１）とｒｙｕ（１）には差異があるので（ステップＳ４０３  Ｎｏ）、ｐｔ＝１と、ｒｙｕ（１）とを差分ジョブデータに追加する（ステップＳ４０４）。
【００６４】
次に、差分検出部１０４は、ｐｔ＝２として（ステップＳ４０５）、再びステップＳ４０２からの処理を実行する。
【００６５】
同様に、差分検出部１０４は、ｒｙｕ（２）がＮＵＬＬデータか否かを確認する。ここでは、ｒｙｕ（２）はＮＵＬＬデータではないので（ステップＳ４０２  Ｎｏ）、差分検出部１０４は、ｂａｓｅ（２）とｒｙｕ（２）とを比較し差異があるか否かを確認する（ステップＳ４０３）。ここでは、差異はないので（ステップＳ４０３  Ｙｅｓ）、差分検出部１０４は、ｐｔ＝３として（ステップＳ４０５）、再びステップＳ４０２からの処理を実行する。本実施形態においては、ｐｔ＝３及び５については、ｂａｓｅ（ｎ）とｒｙｕ（ｎ）との差異はないので、差分検出部１０４はｐｔ＝２と同様な処理を実行する。したがって、ｐｔ＝３及び５にかかる処理の説明は省略する。
【００６６】
ｐｔ＝４において、差分検出部１０４は、ｒｙｕ（４）がＮＵＬＬデータか否かを確認する。ここでは、ｒｙｕ（４）はＮＵＬＬデータではないので（ステップＳ４０２  Ｎｏ）、差分検出部１０４は、ｂａｓｅ（４）とｒｙｕ（４）とを比較し差異があるか否かを確認する（ステップＳ４０３）。ページ１データと同様に差分検出部１０４は、図４に示したジョブデータ３０２のページ４データ３０２Ｂと図２４に示したジョブデータ３０５のページ４データ３０５Ｂとを比較する。ここでは、ページ４データ３０２Ｂのポイント３０２ＢＢにおける「佐藤」と、ページ４データ３０５Ｂのポイント３０５ＢＢにおける「鈴木」とが異なる。したがって、ｂａｓｅ（４）とｒｙｕ（４）には差異があるので（ステップＳ４０３  Ｎｏ）、ｐｔ＝４と、ｒｙｕ（４）とを差分ジョブデータに追加する（ステップＳ４０４）。
【００６７】
最後に、ｐｔ＝６において、差分検出部１０４は、ｒｙｕ（６）がＮＵＬＬデータか否かを確認する。ここでは、ｒｙｕ（６）はＮＵＬＬデータであるので（ステップＳ４０２  Ｙｅｓ）、差分検出部１０４は、図５に示す差分ジョブデータを差分データとして印刷データ記憶部１０７Ａに記憶させ、処理を終了する。
【００６８】
次に、図２５を用いて差分合成部２０３が、流用データを復元する処理について説明する。ここでは、ａａａ．ｄｏｃ３０４ＡをベースＪＯＢとし、ｂｂｂ．ｄｏｃ３０１Ｂを流用ＪＯＢとして、流用データを復元する処理について説明する。また、プリンタ２００には、ホストＰＣ１００より印刷データ及び差分データがデータとして送信され、当該データはそれぞれ記憶部２０６に記憶されているものとする。
【００６９】
図１１のステップＳ３０５において、受信解析部２０２により起動指示の供給を受けると、差分合成部２０３は記憶部２０６に記憶されている印刷データ及び差分データを読み取り、ワークメモリに展開する。なお、ワークメモリに展開される印刷データのページデータをｂａｓｅ（ｎ）と称し、例えば、印刷データの１ページ目のページデータはｂａｓｅ（１）と称する。つまり、ｂａｓｅ（１）〜ｂａｓｅ（５）がａａａ．ｄｏｃ３０１Ａに対する印刷データの各ページデータに相当する。また、差分合成部２０３は、空の流用ジョブデータをメモリに確保する（ステップＳ５０１）。
【００７０】
次に、差分合成部２０３は、ワークメモリに展開した差分データに、未処理のページ番号（ｐｔ）及びページデータ（ｒｙｕ（ｎ））が存在するか否かを確認する（ステップＳ５０２）。ここでは図５に示すように、差分データには、２セットのページ番号及びページデータが存在し、いずれも未処理であるため（ステップＳ５０２  Ｎｏ）、差分合成部２０３は、１セット分のページ番号及びページデータを読み取り、ページ番号とページデータに分離する（ステップ５０３）。
【００７１】
ステップＳ５０４において、差分合成部２０３は、ｂａｓｅ（１）のページデータをｒｙｕ（１）のページデータに置き換え、再びステップＳ５０２からの処理を実行する。差分データには、もう１セットの未処理のページ番号及びページデータが残っているので（ステップＳ５０２  Ｎｏ）、差分合成部２０３は、この１セット分のページ番号及びページデータを読み取り、ページ番号とページデータに分離する（ステップ５０３）。
【００７２】
再度、ステップＳ５０４において、差分合成部２０３は、ｂａｓｅ（４）のページデータをｒｙｕ（４）のページデータに置き換え、再びステップＳ５０２からの処理を実行する。差分データには、未処理のページ番号及びページデータのセットは残っていないので（ステップＳ５０２  Ｙｅｓ）、差分合成部２０３は、復元したｂｂｂ．ｄｏｃ３０１ＢのジョブデータをＩＤ，ＪＯＢナンバー，データタイプに関連付けて流用データとして記憶部２０６に記憶させ、処理を終了する。
【００７３】
以上のように、第１の実施形態によれば、複数の文書ドキュメントの印刷の際に、１つ目の文書ドキュメント（ベースＪＯＢ）の印刷後の２つ目以降の文書ドキュメント(流用ＪＯＢ）の印刷に関しては、１つ目の文書ドキュメントとの差分データのみをプリンタに送信し、プリンタ側で２つ目以降の文書ドキュメントを復元し印刷するため、ホストＰＣから送信されるデータ量を最低限に留めることができる。また、プリンタが実際の印刷物を出力するまでに実行する処理が簡略化されるため、ユーザが印刷物を取得するまでの時間を短縮することができる。
【００７４】
[第２の実施形態]
第１の実施形態においては、ページ内容の異なる同一のページ数から構成される複数の文書ドキュメントを印刷することが可能な画像形成システムについて説明したが、本実施形態においては、ページ内容が異なり、かつ、異なるページ数から構成される複数の文書ドキュメントを印刷することが可能な画像形成システムについて説明する。本実施形態において印刷に供される文書ドキュメントは、例えば図２６に示すように、ａａａ．ｄｏｃ３０１Ａ，ｂｂｂ２．ｄｏｃ３０７Ｂ，ｃｃｃ２ｄｏｃ３０７Ｃ，ｄｄｄ．ｄｏｃ３０１Ｄから構成されている。
【００７５】
ｂｂｂ２．ｄｏｃ３０７Ｂのａａａ．ｄｏｃ３０１Ａに対する差異は、１）ページ１の宛先が「Ｂ」社であり、２）ページ３が追加されており、３）ページ５の担当者名が異なる点である。また、ｃｃｃ２．ｄｏｃ３０７Ｃのａａａ．ｄｏｃ３０１Ａに対する差異は、１）ページ１の宛先が「Ｃ」社であり、２）ａａａ．ｄｏｃ３０１Ａのページ２に相当するページが削除されており、３）ページ３の担当者名が異なる点である。ｄｄｄ．ｄｏｃ３０１Ｄのａａａ．ｄｏｃ３０１Ａに対する差異は実施形態１と同一である。
【００７６】
このような構成からなる複数の文書ドキュメントを印刷することが可能な画像形成システムについて以下に説明する。
【００７７】
本発明の第２の実施形態にかかる画像形成システムの構成は、第１の実施形態にかかる画像形成システムと略同一であるため、同一な部分に関しては同一の符号を付して説明を省略し、異なる箇所について説明をする。
【００７８】
図２７は、第２の実施形態にかかる画像形成システムの構成を説明するブロック図である。画像形成システムは、ユーザの操作によりドキュメントを作成し、当該ドキュメントに基づく印刷ジョブを生成する画像処理装置としてのホストＰＣ３００と、例えば電子写真方式等による画像形成が可能な画像形成装置としてのプリンタ４００とを備え、このホストＰＣ３００とプリンタ４００はネットワーク９００を介して接続されている。まず、ホストＰＣ３００について説明し、次いでプリンタ４００について説明する。
【００７９】
まず、ホストＰＣ３００について説明する。ホストＰＣ３００は、第１の実施形態にかかるホストＰＣ１００の差分検出部１０４に替えて差分検出部３０４を備える。
【００８０】
差分検出部３０４は、プリンタドライバ１０３かららベースＪＯＢのジョブデータと流用ＪＯＢのジョブデータとの差分の検出指示が供給されると、対応するベースＪＯＢのジョブデータと流用ＪＯＢのジョブデータとを印刷データ記憶部１０７Ａから検索し、両ジョブデータを比較することで、図２８に示すような差分ジョブデータ３０９を作成する。図２８に示されている差分ジョブデータ３０９は、ａａａ．ｄｏｃ３０１ＡをベースＪＯＢ、ｂｂｂ２．ｄｏｃ３０７Ｂを流用ＪＯＢとした場合の、ｂｂｂ．ｄｏｃ３０７Ｂのジョブデータのａａａ．ｄｏｃ３０１Ａのジョブデータに対する差分ジョブデータである。また、差分検出部３０４は、作成した差分ジョブデータを再度印刷データ記憶部１０７Ａに記憶させる。さらに、差分検出部３０４は、ホストＰＣ３００の図示せぬオペレーティングシステム上で動作するアプリケーションプログラムである。このアプリケーションプログラムは、例えば、ＵＶ−ＥＰＲＯＭ(Ultra-Violet Erasable Programmable Read Only Memory)、又はＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）等の不揮発性メモリに格納され、実行指令に基づき図示せぬＣＰＵ（Central Processing Unit）が記憶部１０７から読み出し、処理を実行することでその機能が発揮される。
【００８１】
次に、プリンタ４００の構成について説明する。プリンタ４００は、第１の実施形態にかかるプリンタ２００の差分合成部２０３に替えて差分合成部４０３を備える。
【００８２】
差分合成部４０３は、受信解析部２０２より流用ＪＯＢのジョブデータの復元指示が供給されると、対応する印刷データと差分データを記憶部２０６から検索し、合成することで流用ＪＯＢのジョブデータを復元し、記憶部２０６に再度記憶させる。また、差分合成部４０３は、プリンタ４００が備えるアプリケーションプログラムである。これらのアプリケーションプログラムは、例えば、ＵＶ−ＥＰＲＯＭ(Ultra-Violet Erasable Programmable Read Only Memory)、又はＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）等の不揮発性メモリ不揮発性メモリに格納され、実行指令に基づき図示せぬＣＰＵ（Central Processing Unit）が記憶部２０６から読み出し、処理を実行することでその機能が発揮される。
【００８３】
このような構成を備えた画像形成システムの動作について、以下に説明する。なお、図２９に示すように流用印刷ユーティリティ１０２が図示せぬモニタに表示させるＧＵＩ３０６には、ベースＪＯＢとしてａａａ．ｄｏｃ３０１Ａ、流用ＪＯＢとしてｂｂｂ２．ｄｏｃ３０７Ｂ，ｃｃｃ２．ｄｏｃ３０７Ｃ，ｄｄｄ．ｄｏｃ３０１Ｄがユーザにより入力されているものとする。
【００８４】
本実施形態にかかる流用印刷ユーティリティ１０２，プリンタドライバ１０３，受信制御部２０２は、第１の実施形態における流用印刷ユーティリティ１０２，プリンタドライバ１０３，受信制御部２０２が実行する処理と同一の処理を実行する。したがって、以下の説明においては、差分検出部３０４が差分ジョブデータを作成する処理及び差分合成部４０３が流用データを復元する処理について説明する。まず、差分検出部３０４が差分ジョブデータを作成する処理について図３０、図３１を用いて説明する。なお、ここでは、ａａａ．ｄｏｃ３０１ＡをベースＪＯＢとし、ｂｂｂ２．ｄｏｃ３０７Ｂ及びｃｃｃ２．ｄｏｃ３０７Ｃを流用ＪＯＢとして、差分ジョブデータを作成する処理について説明する。また、プリンタドライバ１０３により図４に示すａａａ．ｄｏｃ３０１Ａのジョブデータ３０２、図３２に示すｂｂｂ２．ｄｏｃ３０７Ｂのジョブデータ３０８、及び図３３に示すｃｃｃ２．ｄｏｃ３０７Ｃのジョブデータ３０１０が作成され、それぞれ、印刷データ及び流用データとして記憶部１０７に記憶されているものとする。
【００８５】
まず、ｂｂｂ２．ｄｏｃ３０７Ｂの処理について説明する。図１０のステップＳ２０８において、プリンタドライバ１０３により起動指示の供給を受けると、差分検出部３０４は記憶部１０７に記憶されているベースＪＯＢの印刷データ及び流用ＪＯＢの流用データを読み取り、ワークメモリに展開する。また、差分検出部３０４は、空の差分ジョブデータをメモリに確保する。さらに、差分検出部３０４は、変数ｂｐｔ＝１，ｐｔ＝１，ｉ＝０，ｊ＝０に初期化する（ステップＳ６０１）。ここで、ｂｐｔ及びｐｔはページ処理を行っているベースＪＯＢ及び流用ＪＯＢそれぞれのページ番号を示す。また、ｉ，ｊは、汎用的な変数である。なお、ワークメモリに展開される印刷データのページデータをｂａｓｅ（ｎ）、流用データのページデータをｒｙｕ（ｎ）と称し、例えば、印刷データのページ１データはｂａｓｅ（１）と称する。つまり、ｂａｓｅ（１）〜ｂａｓｅ（５）    がａａａ．ｄｏｃ３０１Ａに対する印刷データの各ページデータに相当し、ｒｙｕ（１）〜ｒｙｕ（６）がｂｂｂ２．ｄｏｃ３０７Ｂに対する流用データの各ページデータに相当する。
【００８６】
ステップＳ６０２において、差分検出部３０４は、ｂａｓｅ（１）がＮＵＬＬデータか否かを確認する。ここでは、ｂａｓｅ（１）はＮＵＬＬではないので（ステップＳ６０２  Ｙｅｓ）、差分検出部３０４は、ｒｙｕ（１）がＮＵＬＬデータか否かを確認する（ステップＳ６０３）。ここでは、ｒｙｕ（１）はＮＵＬＬではないので（ステップＳ６０３  Ｙｅｓ）、差分検出部３０４は、ｂａｓｅ（１）とｒｙｕ（１）とを比較し差異があるか否かを確認する（ステップＳ６０５）。具体的には、差分検出部１０４は、図４に示したジョブデータ３０２のページ１データ３０２Ａと図３１に示したジョブデータ３０８のページデータ３０８Ａとを比較する。ここでは、ページデータ３０２Ａのポイント３０２ＡＡにおける「Ａ」と、ページデータ３０８Ａのポイント３０８ＡＡにおける「Ｂ」とが異なる。したがって、ｂａｓｅ（１）とｒｙｕ（１）には差異がある（ステップＳ６０５  Ｎｏ）。さらに、差分検出部３０４は、ｂｂｂ２．ｄｏｃ３０７Ｂのページ１がａａａ．ｄｏｃ３０１Ａに対する追加か否かを確認するため、ｂｂｂ２．ｄｏｃ３０７Ｂのページ２以降とａａａ．ｄｏｃ３０１Ａのページ１とを比較する。即ち、差分検出部３０４は、変数ｉをインクリメントし（ステップＳ６０７）、ｒｙｕ（２）がＮＵＬＬデータか否かを確認する（ステップＳ６０８）。ここでは、ｒｙｕ（２）はＮＵＬＬデータではないので（ステップＳ６０８  Ｎｏ）、ｂａｓｅ（１）とｒｙｕ（２）とを比較する（ステップＳ６０９）。ここでは、ｂａｓｅ（１）とｒｙｕ（２）とは一致しないので(ステップＳ６０９  Ｎｏ）、差分検出部３０４は再び、ステップＳ６０７からの処理を実行する。
【００８７】
差分検出部３０４は、同様なステップを繰り返す。つまり、差分検出部３０４は、変数ｉをインクリメントしながら、ｉ＝２；ｂａｓｅ（１）とｒｙｕ（３）との比較、ｉ＝３；ｂａｓｅ（１）とｒｙｕ（４）との比較、ｉ＝４；ｂａｓｅ（１）とｒｙｕ（５）との比較、ｉ＝５；ｂａｓｅ（１）とｒｙｕ（６）との比較を順次実行する。
【００８８】
ｉ＝６となった時点において（ステップＳ６０７）、ｒｙｕ（７）は存在せず、ＮＵＬＬデータであるため（ステップＳ６０８  Ｙｅｓ）、差分検出部３０４は、ａａａ．ｄｏｃ３０１Ａのページ１と同じページはｂｂｂ２．ｄｏｃ３０７Ｂには存在しないと判断する。これは、ｒｙｕ（１）に対応するページがａａａ．ｄｏｃ３０１Ａに対する追加ページではないこと、及びａａａ．ｄｏｃ３０１Ａのページ１がｂｂｂ２．ｄｏｃ３０７Ｂでは不要であり、削除又は、置換えの対象であることを示している。
【００８９】
続いて、ａａａ．ｄｏｃ３０１Ａのページ１がｂｂｂ２．ｄｏｃ３０７Ｂに対する削除対象か否かを確認するため、差分検出部３０４はａａａ．ｄｏｃ３０１Ａのページ２以降のページに対応するｂａｓｅ（２）〜とｒｙｕ（１）とを比較する。すなわち、差分検出部３０４は、変数ｊをインクリメントし（ステップＳ６１２）、ｂａｓｅ（２）がＮＵＬＬデータか否かを確認する（ステップＳ６１３）。ここでは、ｂａｓｅ（２）はＮＵＬＬデータではないので（ステップＳ６１３  Ｎｏ）、差分検出部３０４はｂａｓｅ（２）とｒｙｕ（１）とを比較する（ステップＳ６１４）。ここでは、一致しないので（ステップＳ６１４  Ｎｏ）、差分検出部３０４は再び、ステップＳ６１２からの処理を実行する。
【００９０】
差分検出部３０４は、同様なステップを繰り返す。つまり、差分検出部３０４は、変数ｊをインクリメントしながら、ｊ＝２；ｂａｓｅ（３）とｒｙｕ（１）との比較、ｊ＝３；ｂａｓｅ（４）とｒｙｕ（１）との比較、ｊ＝４；ｂａｓｅ（５）とｒｙｕ（１）との比較を順次実行する。
【００９１】
ｊ＝５となった時点において（ステップＳ６１２）、ｂａｓｅ（６）は存在せず、ＮＵＬＬデータであるため（ステップＳ６１３  Ｙｅｓ）、差分検出部３０４は、ｂｂｂ２．ｄｏｃ３０７Ｂのページ１と同じページはａａａ．ｄｏｃ３０１Ａには存在しないと判断する。これは、ｒｙｕ（１）に対応するページが差分合成時に必要なページであること、及びａａａ．ｄｏｃ３０１Ａのページ１が削除対象ではないことを示す。したがって、差分検出部３０４は、差分合成時において、差分合成部４０３がｒｙｕ（１）をｂａｓｅ（１）に置き換えることに結論付ける。差分検出部３０４は、これを意味するコマンド３０９Ａとして「ｒｅｗｒｉｔｅ１」、及びページデータ３０８Ａで示すｒｙｕ（１）を差分データに追加する（ステップＳ６１７）。また、差分検出部３０４は、ｂｐｔ，ｐｔをインクリメントし（ステップ６１８）、変数ｉ，ｊを０に初期化して、再びステップＳ６０２からの処理を実行する。
【００９２】
ステップＳ６０２において、差分検出部３０４は、ｂａｓｅ（２）がＮＵＬＬデータか否かを確認する。ここでは、ｂａｓｅ（２）はＮＵＬＬではないので（ステップＳ６０２  Ｙｅｓ）、差分検出部３０４は、ｒｙｕ（２）がＮＵＬＬデータか否かを確認する（ステップＳ６０３）。ここでは、ｒｙｕ（２）はＮＵＬＬではないので（ステップＳ６０３  Ｙｅｓ）、差分検出部３０４は、ｂａｓｅ（２）とｒｙｕ（２）とを比較し差異があるか否かを確認する（ステップＳ６０５）。ここでは、ｂａｓｅ（２）とｒｙｕ（２）は一致するので（ステップＳ６０５  Ｙｅｓ）、差分検出部３０４は、ｂｐｔ，ｐｔをインクリメントし（ステップ６０６）、変数ｉ，ｊを０に初期化して、再びステップＳ６０２からの処理を実行する。
【００９３】
ステップＳ６０２において、差分検出部３０４は、ｂａｓｅ（３）がＮＵＬＬデータか否かを確認する。ここでは、ｂａｓｅ（３）はＮＵＬＬではないので（ステップＳ６０２  Ｙｅｓ）、差分検出部３０４は、ｒｙｕ（３）がＮＵＬＬデータか否かを確認する（ステップＳ６０３）。ここでは、ｒｙｕ（３）はＮＵＬＬではないので（ステップＳ６０３  Ｙｅｓ）、差分検出部３０４は、ｂａｓｅ（３）とｒｙｕ（３）とを比較し差異があるか否かを確認する（ステップＳ６０５）。ここでは、ｂａｓｅ（３）とｒｙｕ（３）には差異があり、一致しないので（ステップＳ６０５  Ｎｏ）、差分検出部３０４は、ｂｂｂ２．ｄｏｃ３０７Ｂのページ３がａａａ．ｄｏｃ３０１Ａに対する追加か否かを確認するため、ｂｂｂ２．ｄｏｃ３０７Ｂのページ４以降とａａａ．ｄｏｃ３０１Ａのページ３とを比較する。即ち、差分検出部３０４は、変数ｉをインクリメントし（ステップＳ６０７）、ｒｙｕ（４）がＮＵＬＬデータか否かを確認する（ステップＳ６０８）。ここでは、ｒｙｕ（４）はＮＵＬＬデータではないので（ステップＳ６０８  Ｎｏ）、ｂａｓｅ（３）とｒｙｕ（４）とを比較する（ステップＳ６０９）。ここでは、ｂａｓｅ（３）とｒｙｕ（４）とは一致するので（ステップＳ６０９  Ｙｅｓ）、差分検出部３０４はｂｂｂ２．ｄｏｃ３０７Ｂのページ３がａａａ．ｄｏｃ３０１Ａのページ３、すなわちｂｂｂ２．ｄｏｃ３０７Ｂのページ４の前に挿入されるページデータであると判断する。したがって、差分検出部３０４は、ｂａｓｅ（２）の後にｒｙｕ（３）が挿入されることを意味するコマンド３０９Ｃとして「ｉｎｓｅｒｔ２」、及びページデータ３０８Ｃで示すｒｙｕ（３）を差分データに追加する（ステップＳ６１０）。また、差分検出部３０４は、ｂｐｔ，ｐｔをインクリメントし（ステップ６１１）、変数ｉ，ｊを０に初期化して、再びステップＳ６０２からの処理を実行する。
【００９４】
以降、ここまでの同様のステップで、差分検出部３０４は差分データにコマンド３０９Ｅ「ｒｅｗｒｉｔｅ４」とページデータ３０８Ｂで示すｒｙｕ（５）を差分データに追加する。最終的には、図２８に示される差分データ３０９が作成される。
【００９５】
ｂｐｔ＝６，ｐｔ＝７となった時点で、ｂａｓｅ（６）はＮＵＬＬデータであり（ステップＳ６０２  Ｎｏ）、ｒｙｕ（７）もＮＵＬＬデータであるため(ステップＳ６０４  Ｎｏ）、差分検出部３０４は差分データを印刷データ記憶部１０７Ａに記憶させ、処理を終了する。
【００９６】
次に、図３４を用いて差分合成部４０３が、流用データを復元する処理について説明する。ここでは、ａａａ．ｄｏｃ３０４ＡをベースＪＯＢとし、ｂｂｂ２．ｄｏｃ３０７Ｂを流用ＪＯＢとして、流用データを復元する処理について説明する。また、プリンタ４００には、ホストＰＣ１００より印刷データ及び差分データがデータとして送信され、当該データはそれぞれ記憶部２０６に記憶されているものとする。
【００９７】
図１１のステップＳ３０５において、受信解析部２０２により起動指示の供給を受けると、差分合成部４０３は記憶部２０６に記憶されている印刷データ及び差分データを読み取り、ワークメモリに展開する。なお、ワークメモリに展開される印刷データのページデータをｂａｓｅ（ｎ）と称し、例えば、印刷データのページ１データはｂａｓｅ（１）と称する。つまり、ｂａｓｅ（１）〜ｂａｓｅ（５）    がａａａ．ｄｏｃ３０１Ａに対する印刷データの各ページデータに相当する。また、差分合成部２０３は、空の流用ジョブデータをメモリに確保する（ステップＳ７０１）。
【００９８】
次に、差分合成部４０３は、ワークメモリに展開した差分データに、未処理のコマンド、ページ番号、及びページデータが存在するか否かを確認する（ステップＳ７０２）。ここでは図２８に示すように、差分データには、コマンド３０９Ａとページデータ３０９Ｂ，コマンド３０９Ｃとページデータ３０９Ｄ，コマンド３０９Ｅとページデータ３０９Ｆの３セットが存在し、いずれも未処理であるため（ステップＳ７０２  Ｎｏ）、差分合成部４０３は、１セット分のコマンド、ページ番号、及びページデータを読み取る。すなわち、コマンド３０９Ａからｃｏｍｍａｎｄ＝”ｒｅｗｒｉｔｅ”，ｂｐｔ＝１，ページデータ３０９Ｂ（＝３０８Ａ）を得る（ステップＳ７０３）。
【００９９】
次に、ステップＳ７０４において、差分合成部４０３は、コマンドがｒｅｗｒｉｔｅか否かを判断する。ここでは、コマンドはｒｅｗｒｉｔｅなので（ステップＳ７０４  Ｙｅｓ）、差分合成部４０３は、ｂａｓｅ（１）をページデータ３０８Ｂで置換え（ステップＳ７０５）、再びステップＳ７０２からの処理を実行する。
【０１００】
同様に、差分合成部４０３は、ワークメモリに展開した差分データに、未処理のコマンド、ページ番号、及びページデータが存在するか否かを確認する（ステップＳ７０２）。ここでは、差分データには、コマンド３０９Ｃとページデータ３０９Ｄ，コマンド３０９Ｅとページデータ３０９Ｆの２セットが存在し、いずれも未処理であるため（ステップＳ７０２  Ｎｏ）、差分合成部２０３は、１セット分のコマンド、ページ番号、及びページデータを読み取る。即ち、コマンド３０９Ｃからｃｏｍｍａｎｄ＝”ｉｎｓｅｒｔ”，ｂｐｔ＝２，ページデータ３０９Ｄ（＝３０８Ｃ）を得る（ステップＳ７０３）。
【０１０１】
次に、ステップＳ７０４において、差分合成部４０３は、コマンドがｒｅｗｒｉｔｅか否かを判断する。ここでは、コマンドはｒｅｗｒｉｔｅではないので（ステップＳ７０４  Ｎｏ）、差分合成部４０３は、コマンドがｉｎｓｅｒｔか否かを判断する（ステップＳ７０６）。ここでは、コマンドはｉｎｓｅｒｔなので（ステップＳ７０５  Ｙｅｓ）、差分合成部４０３は、ｂａｓｅ（２）の後にページデータ３０９Ｄを追加し（ステップＳ７０７）、再びステップＳ７０２からの処理を実行する。
【０１０２】
同様に、差分合成部４０３は、ワークメモリに展開した差分データに、未処理のコマンド、ページ番号、及びページデータが存在するか否かを確認する（ステップＳ７０２）。ここでは、差分データには、コマンド３０９Ｅとページデータ３０９Ｆの１セットが存在し、いずれも未処理であるため（ステップＳ７０２  Ｎｏ）、差分合成部２０３は、１セット分のコマンド、ページ番号、及びページデータを読み取る。即ち、コマンド３０９Ｃからｃｏｍｍａｎｄ＝”ｒｅｗｒｉｔｅ”，ｂｐｔ＝４，ページデータ３０９Ｆ（＝３０８Ｂ）を得る（ステップＳ７０３）。
【０１０３】
次に、ステップＳ７０４において、差分合成部４０３は、コマンドがｒｅｗｒｉｔｅか否かを判断する。ここでは、コマンドはｒｅｗｒｉｔｅなので（ステップＳ７０４  Ｙｅｓ）、差分合成部４０３は、ｂａｓｅ（４）をページデータ３０８Ｆで置換え（ステップＳ７０５）、再びステップＳ７０２からの処理を実行する。
【０１０４】
ワークメモリに展開した差分データに、未処理のコマンド、ページ番号、及びページデータが存在しないので(ステップＳ７０２  Ｙｅｓ）差分合成部４０３は、ページデータ順にページ番号を振りなおし（ステップＳ７１０）、流用データとして記憶部２０６に記憶させ、処理を終了する。
【０１０５】
次に、ｃｃｃ２．ｄｏｃ３０７Ｃの処理について説明する。図１０のステップＳ２０８において、プリンタドライバ１０３により起動指示の供給を受けると、差分検出部３０４は記憶部１０７に記憶されているベースＪＯＢの印刷データ及び流用ＪＯＢの流用データを読み取り、ワークメモリに展開する。また、差分検出部３０４は、空の差分ジョブデータをメモリに確保する。さらに、差分検出部３０４は、変数ｂｐｔ＝１，ｐｔ＝１，ｉ＝０，ｊ＝０に初期化する（ステップＳ６０１）。ここで、ｂｐｔ及びｐｔはページ処理を行っているベースＪＯＢ及び流用ＪＯＢそれぞれのページ番号を示す。また、ｉ，ｊは、汎用的な変数である。なお、ワークメモリに展開される印刷データのページデータをｂａｓｅ（ｎ）、流用データのページデータをｒｙｕ（ｎ）と称し、例えば、印刷データのページ１データはｂａｓｅ（１）と称する。つまり、ｂａｓｅ（１）〜ｂａｓｅ（５）    がａａａ．ｄｏｃ３０１Ａに対する印刷データの各ページデータに相当し、ｒｙｕ（１）〜ｒｙｕ（４）がｃｃｃ２．ｄｏｃ３０７Ｃに対する流用データの各ページデータに相当する。
【０１０６】
ステップＳ６０２において、差分検出部３０４は、ｂａｓｅ（１）がＮＵＬＬデータか否かを確認する。ここでは、ｂａｓｅ（１）はＮＵＬＬではないので（ステップＳ６０２  Ｙｅｓ）、差分検出部３０４は、ｒｙｕ（１）がＮＵＬＬデータか否かを確認する（ステップＳ６０３）。ここでは、ｒｙｕ（１）はＮＵＬＬではないので（ステップＳ６０３  Ｙｅｓ）、差分検出部３０４は、ｂａｓｅ（１）とｒｙｕ（１）とを比較し差異があるか否かを確認する（ステップＳ６０５）。具体的には、差分検出部１０４は、図４に示したジョブデータ３０２のページ１データ３０２Ａと図３２に示したジョブデータ３０１０のページデータ３１０Ａとを比較する。ここでは、ページデータ３０２Ａのポイント３０２ＡＡにおける「Ａ」と、ページデータ３１０Ａのポイント３１０ＡＡにおける「Ｃ」とが異なる。したがって、ｂａｓｅ（１）とｒｙｕ（１）には差異がある（ステップＳ６０５  Ｎｏ）。さらに、差分検出部３０４は、ｃｃｃ２．ｄｏｃ３０７Ｃのページ１がａａａ．ｄｏｃ３０１Ａに対する追加か否かを確認するため、ｃｃｃ２．ｄｏｃ３０７Ｃのページ２以降とａａａ．ｄｏｃ３０１Ａのページ１とを比較する。即ち、差分検出部３０４は、変数ｉをインクリメントし（ステップＳ６０７）、ｒｙｕ（２）がＮＵＬＬデータか否かを確認する（ステップＳ６０８）。ここでは、ｒｙｕ（２）はＮＵＬＬデータではないので（ステップＳ６０８  Ｎｏ）、ｂａｓｅ（１）とｒｙｕ（２）とを比較する（ステップＳ６０９）。ここでは、ｂａｓｅ（１）とｒｙｕ（２）とは一致しないので(ステップＳ６０９  Ｎｏ）、差分検出部３０４は再び、ステップＳ６０７からの処理を実行する。
【０１０７】
差分検出部３０４は、同様なステップを繰り返す。つまり、差分検出部３０４は、変数ｉをインクリメントしながら、ｉ＝２；ｂａｓｅ（１）とｒｙｕ（３）との比較、ｉ＝３；ｂａｓｅ（１）とｒｙｕ（４）との比較、ｉ＝４；ｂａｓｅ（１）とｒｙｕ（５）との比較、ｉ＝５；ｂａｓｅ（１）とｒｙｕ（６）との比較を順次実行する。
【０１０８】
ｉ＝６となった時点において（ステップＳ６０７）、ｒｙｕ（７）は存在せず、ＮＵＬＬデータであるため（ステップＳ６０８  Ｙｅｓ）、差分検出部３０４は、ａａａ．ｄｏｃ３０１Ａのページ１と同じページはｃｃｃ２．ｄｏｃ３０７Ｃには存在しないと判断する。これは、ｒｙｕ（１）に対応するページがａａａ．ｄｏｃ３０１Ａに対する追加ページではないこと、及びａａａ．ｄｏｃ３０１Ａのページ１がｃｃｃ２．ｄｏｃ３０７Ｃでは不要であり、削除又は、置換えの対象であることを示している。
【０１０９】
続いて、ａａａ．ｄｏｃ３０１Ａのページ１がｃｃｃ２．ｄｏｃ３０７Ｃに対する削除対象か否かを確認するため、差分検出部３０４はａａａ．ｄｏｃ３０１Ａのページ２以降のページに対応するｂａｓｅ（２）〜とｒｙｕ（１）とを比較する。すなわち、差分検出部３０４は、変数ｊをインクリメントし（ステップＳ６１２）、ｂａｓｅ（２）がＮＵＬＬデータか否かを確認する（ステップＳ６１３）。ここでは、ｂａｓｅ（２）はＮＵＬＬデータではないので（ステップＳ６１３  Ｎｏ）、差分検出部３０４はｂａｓｅ（２）とｒｙｕ（１）とを比較する（ステップＳ６１４）。ここでは、一致しないので（ステップＳ６１４  Ｎｏ）、差分検出部３０４は再び、ステップＳ６１２からの処理を実行する。
【０１１０】
差分検出部３０４は、同様なステップを繰り返す。つまり、差分検出部３０４は、変数ｊをインクリメントしながら、ｊ＝２；ｂａｓｅ（３）とｒｙｕ（１）との比較、ｊ＝３；ｂａｓｅ（４）とｒｙｕ（１）との比較、ｊ＝４；ｂａｓｅ（５）とｒｙｕ（１）との比較を順次実行する。
【０１１１】
ｊ＝５となった時点において（ステップＳ６１２）、ｂａｓｅ（６）は存在せず、ＮＵＬＬデータであるため（ステップＳ６１３  Ｙｅｓ）、差分検出部３０４は、ｃｃｃ２．ｄｏｃ３０７Ｃのページ１と同じページはａａａ．ｄｏｃ３０１Ａには存在しないと判断する。これは、ｒｙｕ（１）に対応するページが差分合成時に必要なページであること、及びａａａ．ｄｏｃ３０１Ａのページ１が削除対象ではないことを示す。したがって、差分検出部３０４は、差分合成時において、差分合成部４０３がｒｙｕ（１）をｂａｓｅ（１）に置き換えることに結論付ける。差分検出部３０４は、これを意味するコマンド３１１Ａとして「ｒｅｗｒｉｔｅ１」、及びページデータ３１０Ａで示すｒｙｕ（１）を差分データに追加する（ステップＳ６１７）。また、差分検出部３０４は、ｂｐｔ，ｐｔをインクリメントし（ステップ６１８）、変数ｉ，ｊを０に初期化して、再びステップＳ６０２からの処理を実行する。
【０１１２】
ステップＳ６０２において、差分検出部３０４は、ｂａｓｅ（２）がＮＵＬＬデータか否かを確認する。ここでは、ｂａｓｅ（２）はＮＵＬＬではないので（ステップＳ６０２  Ｙｅｓ）、差分検出部３０４は、ｒｙｕ（２）がＮＵＬＬデータか否かを確認する（ステップＳ６０３）。ここでは、ｒｙｕ（２）はＮＵＬＬではないので（ステップＳ６０３  Ｙｅｓ）、差分検出部３０４は、ｂａｓｅ（２）とｒｙｕ（２）とを比較し差異があるか否かを確認する（ステップＳ６０５）。ここでは、ｂａｓｅ（２）とｒｙｕ（２）には差異があり、一致しないので（ステップＳ６０５  Ｎｏ）、差分検出部３０４は、ｃｃｃ２．ｄｏｃ３０７Ｃのページ２がａａａ．ｄｏｃ３０１Ａに対する追加か否かを確認するため、ｃｃｃ２．ｄｏｃ３０７Ｃのページ３以降とａａａ．ｄｏｃ３０１Ａのページ２とを比較する。即ち、差分検出部３０４は、変数ｉをインクリメントし（ステップＳ６０７）、ｒｙｕ（３）がＮＵＬＬデータか否かを確認する（ステップＳ６０８）。ここでは、ｒｙｕ（３）はＮＵＬＬデータではないので（ステップＳ６０８  Ｎｏ）、ｂａｓｅ（２）とｒｙｕ（３）とを比較する（ステップＳ６０９）。ここでは、ｂａｓｅ（２）とｒｙｕ（３）とは一致しないので(ステップＳ６０９  Ｎｏ）、差分検出部３０４は再び、ステップＳ６０７からの処理を実行する。
【０１１３】
差分検出部３０４は、変数ｉをインクリメントし（ステップＳ６０７）、ｒｙｕ（４）がＮＵＬＬデータか否かを確認する（ステップＳ６０８）。ここでは、ｒｙｕ（４）はＮＵＬＬデータではないので（ステップＳ６０８  Ｎｏ）、ｂａｓｅ（２）とｒｙｕ（４）とを比較する（ステップＳ６０９）。ここでは、ｂａｓｅ（２）とｒｙｕ（３）とは一致しないので(ステップＳ６０９  Ｎｏ）、差分検出部３０４は再び、ステップＳ６０７からの処理を実行する。
【０１１４】
再度、差分検出部３０４は、変数ｉをインクリメントし（ステップＳ６０７）、ｉ＝３となった時点で、ｒｙｕ（５）は存在せず、ＮＵＬＬデータであるため（ステップＳ６０８  Ｙｅｓ）、差分検出部３０４は、ａａａ．ｄｏｃ３０１Ａのページ２はｃｃｃ２．ｄｏｃ３０７Ｃには存在しないと判断する。
【０１１５】
続いて、ａａａ．ｄｏｃ３０１Ａのページ２がｃｃｃ２．ｄｏｃ３０７Ｃに対する削除対象か否かを確認するため、差分検出部３０４はａａａ．ｄｏｃ３０１Ａのページ３以降のページに対応するｂａｓｅ（３）〜とｒｙｕ（２）とを比較する。すなわち、差分検出部３０４は、変数ｊをインクリメントし（ステップＳ６１２）、ｂａｓｅ（３）がＮＵＬＬデータか否かを確認する（ステップＳ６１３）。ここでは、ｂａｓｅ（２）はＮＵＬＬデータではないので（ステップＳ６１３  Ｎｏ）、差分検出部３０４はｂａｓｅ（３）とｒｙｕ（２）とを比較する（ステップＳ６１４）。ここでは、一致するので（ステップＳ６１４  Ｙｅｓ）、差分検出部３０４はａａａ．ｄｏｃ３０１Ａのページ２は単独で余分なページであると判断し、当該ページデータが削除対象であることを意味するコマンド３１１Ｃ「ｄｅｌｅｔｅ２」を差分データに追加する。
【０１１６】
以降、ここまでの同様のステップで、差分検出部３０４は差分データにコマンド３１１Ｄ「ｒｅｗｒｉｔｅ４」とページデータ３１０Ｂで示すｒｙｕ（５）を差分データに追加する。最終的には、図３５に示される差分データ３１１が作成される。
【０１１７】
ｂｐｔ＝６，ｐｔ＝５となった時点で、ｂａｓｅ（６）はＮＵＬＬデータであり（ステップＳ６０２  Ｎｏ）、ｒｙｕ（５）もＮＵＬＬデータであるため(ステップＳ６０４  Ｎｏ）、差分検出部３０４は差分データを印刷データ記憶部１０７Ａに記憶させ、処理を終了する。
【０１１８】
次に、図３４を用いて差分合成部４０３が、流用データを復元する処理について説明する。ここでは、ａａａ．ｄｏｃ３０４ＡをベースＪＯＢとし、ｃｃｃ２．ｄｏｃ３０７Ｃを流用ＪＯＢとして、流用データを復元する処理について説明する。また、プリンタ４００には、ホストＰＣ１００より印刷データ及び差分データがデータとして送信され、当該データはそれぞれ記憶部２０６に記憶されているものとする。
【０１１９】
図１１のステップＳ３０５において、受信解析部２０２により起動指示の供給を受けると、差分合成部４０３は記憶部２０６に記憶されている印刷データ及び差分データを読み取り、ワークメモリに展開する。なお、ワークメモリに展開される印刷データのページデータをｂａｓｅ（ｎ）と称し、例えば、印刷データのページ１データはｂａｓｅ（１）と称する。つまり、ｂａｓｅ（１）〜ｂａｓｅ（５）がａａａ．ｄｏｃ３０１Ａに対する印刷データの各ページデータに相当する。また、差分合成部２０３は、空の流用ジョブデータをメモリに確保する（ステップＳ７０１）。
【０１２０】
次に、差分合成部４０３は、ワークメモリに展開した差分データに、未処理のコマンド、ページ番号、及びページデータが存在するか否かを確認する（ステップＳ７０２）。ここでは図３４に示すように、差分データには、コマンド３１１Ａとページデータ３１１Ｂ，コマンド３１１Ｃ，コマンド３１１Ｄとページデータ３１１Ｅの３セットが存在し、いずれも未処理であるため（ステップＳ７０２  Ｎｏ）、差分合成部４０３は、１セット分のコマンド、ページ番号、及びページデータを読み取る。すなわち、ｃｏｍｍａｎｄ＝”ｒｅｗｒｉｔｅ”，ｂｐｔ＝１，ページデータ３１１Ｂ（＝３１０Ａ）を得る（ステップＳ７０３）。
【０１２１】
次に、ステップＳ７０４において、差分合成部４０３は、コマンドがｒｅｗｒｉｔｅか否かを判断する。ここでは、コマンドはｒｅｗｒｉｔｅなので（ステップＳ７０４  Ｙｅｓ）、差分合成部４０３は、ｂａｓｅ（１）をページデータ３１１Ｂで置換え（ステップＳ７０５）、再びステップＳ７０２からの処理を実行する。
【０１２２】
同様に、差分合成部４０３は、ワークメモリに展開した差分データに、未処理のコマンド、ページ番号、及びページデータが存在するか否かを確認する（ステップＳ７０２）。ここでは、差分データには、コマンド３１１Ｃ，コマンド３１１Ｄとページデータ３１１Ｅの２セットが存在し、いずれも未処理であるため（ステップＳ７０２  Ｎｏ）、差分合成部２０３は、１セット分のコマンド、ページ番号、及びページデータを読み取る。即ち、コマンド３１１Ｃからｃｏｍｍａｎｄ＝”ｄｅｌｅｔｅ”，ｂｐｔ＝２，ページデータＮＵＬＬを得る（ステップＳ７０３）。
【０１２３】
次に、ステップＳ７０４において、差分合成部４０３は、コマンドがｒｅｗｒｉｔｅか否かを判断する。ここでは、コマンドはｒｅｗｒｉｔｅではないので（ステップＳ７０４  Ｎｏ）、差分合成部４０３は、コマンドがｉｎｓｅｒｔか否かを判断する（ステップＳ７０６）。ここでは、コマンドはｉｎｓｅｒｔではないので（ステップＳ７０５  Ｎｏ）、差分合成部４０３はコマンドがｄｅｌｅｔｅか否かを判断する（ステップＳ７０８）。ここでは、コマンドはｄｅｌｅｔｅなので（ステップＳ７０８  Ｙｅｓ）、差分合成部４０３は、ｂａｓｅ（２）を削除し（ステップＳ７０９）、再びステップＳ７０２からの処理を実行する。
【０１２４】
同様に、差分合成部４０３は、ワークメモリに展開した差分データに、未処理のコマンド、ページ番号、及びページデータが存在するか否かを確認する（ステップＳ７０２）。ここでは、差分データには、コマンド３１１Ｄとページデータ３１１Ｅの１セットが存在し、いずれも未処理であるため（ステップＳ７０２  Ｎｏ）、差分合成部２０３は、１セット分のコマンド、ページ番号、及びページデータを読み取る。即ち、ｃｏｍｍａｎｄ＝”ｒｅｗｒｉｔｅ”，ｂｐｔ＝４，ページデータ３１１Ｅ（＝３１０Ｂ）を得る（ステップＳ７０３）。
【０１２５】
次に、ステップＳ７０４において、差分合成部４０３は、コマンドがｒｅｗｒｉｔｅか否かを判断する。ここでは、コマンドはｒｅｗｒｉｔｅなので（ステップＳ７０４  Ｙｅｓ）、差分合成部４０３は、ｂａｓｅ（４）をページデータ３１１Ｅで置換え（ステップＳ７０５）、再びステップＳ７０２からの処理を実行する。
【０１２６】
ワークメモリに展開した差分データに、未処理のコマンド、ページ番号、及びページデータが存在しないので(ステップＳ７０２  Ｙｅｓ）差分合成部４０３は、ページデータ順にページ番号を振りなおし（ステップＳ７１０）、流用データとして記憶部２０６に記憶させ、処理を終了する。
【０１２７】
以上のように、第２の実施形態によれば、第１の実施形態の効果に加え、単にページ毎の差異の有無を確認するだけではなく、ページに差異があった場合にはそれ以降のページを参照して、ページの過不足があるか否かを検出するため、ページ差替えだけではなくページ過不足がある場合に、過不足があったページ以降のページデータの比較がずれてしまい、差分データが多くなることを防ぐため、差分データのデータサイズを削減でき、ホストＰＣから送信されるデータ量を最低限に留めることができる。また、プリンタが実際の印刷物を出力するまでに実行する処理が簡略化されるため、ユーザが印刷物を取得するまでの時間を短縮することができる。
【０１２８】
本実施形態の説明において、画像処理装置としてＰＣを用いて説明したが、本発明は、これに代わりプリンタサーバ、ワークステーション等を用いたシステムにも利用することができる。また、画像形成装置としてプリンタを用いて説明したが、ＭＦＰやファクシミリ、複写機等を利用することもできる。さらに、画像処理装置と画像形成装置とを接続する通信路としてネットワークを用いて説明したが、ＲＳ２３２Ｃ、ＩＥＥＥ１２８４、ＵＳＢ等の他の通信路を利用することもできる。
【図面の簡単な説明】
【０１２９】
【図１】画像形成システムの構成を説明するためのブロック図である。
【図２】ユーザインタフェースによる表示の一例である。
【図３】文書ドキュメントの一例を説明する図である。
【図４】ドキュメントをジョブデータに変換した際のイメージ図である。
【図５】差分ジョブデータを説明する図である。
【図６】ジョブデータの記憶形式を説明する図である。
【図７】ジョブデータの記憶形式を説明する図である。
【図８】ジョブデータの記憶形式を説明する図である。
【図９】流用印刷ユーティリティの処理動作を説明するフローチャートである。
【図１０】プリンタドライバが実行する処理動作を説明する図である。
【図１１】プリンタが実行する処理動作を説明する図である。
【図１２】ジョブデータの記憶形式を説明する図である。
【図１３】ジョブデータの記憶形式を説明する図である。
【図１４】ジョブデータの記憶形式を説明する図である。
【図１５】ジョブデータの記憶形式を説明する図である。
【図１６】ジョブデータの記憶形式を説明する図である。
【図１７】ジョブデータの記憶形式を説明する図である。
【図１８】ジョブデータの記憶形式を説明する図である。
【図１９】ジョブデータの記憶形式を説明する図である。
【図２０】ジョブデータの記憶形式を説明する図である。
【図２１】ジョブデータの記憶形式を説明する図である。
【図２２】ジョブデータの記憶形式を説明する図である。
【図２３】差分検出部が差分ジョブデータを作成する処理について説明するフローチャートである。
【図２４】ドキュメントをジョブデータに変換した際のイメージ図である。
【図２５】差分合成部が流用データを復元する処理について説明するフローチャートである。
【図２６】文書ドキュメントの一例を説明する図である。
【図２７】画像形成システムの構成を説明するためのブロック図である。
【図２８】ジョブデータの一例を説明する図である。
【図２９】ユーザインタフェースによる表示の一例である。
【図３０】差分検出部が差分ジョブデータを作成する処理について説明するフローチャートである。
【図３１】差分検出部が差分ジョブデータを作成する処理について説明するフローチャートである。
【図３２】ジョブデータの一例を説明する図である。
【図３３】ジョブデータの一例を説明する図である。
【図３４】差分合成部が流用データを復元する処理について説明するフローチャートである。
【図３５】ジョブデータの一例を説明する図である。
【符号の説明】
【０１３０】
１００    ホストＰＣ
１０１    ユーザインタフェース
１０２    流用印刷ユーティリティ
１０３    プリンタドライバ
１０４    差分検出部
１０５    送信制御部
１０６    通信部
１０７    記憶部
１０７Ａ  印刷データ記憶部
２００    プリンタ
２０１    受信部
２０２    受信解析部
２０３    差分合成部
２０４    印刷制御部
２０５    印刷部
２０６    記憶部
３００    ホストＰＣ
３０４    差分検出部
４００    プリンタ
４０３    差分合成部
９００    ネットワーク
【図１】
0004443613.tif 000002
【図２】
0004443613.tif 000003
【図３】
0004443613.tif 000004
【図４】
0004443613.tif 000005
【図５】
0004443613.tif 000006
【図６】
0004443613.tif 000007
【図７】
0004443613.tif 000008
【図８】
0004443613.tif 000009
【図９】
0004443613.tif 000010
【図１０】
0004443613.tif 000011
【図１１】
0004443613.tif 000012
【図１２】
0004443613.tif 000013
【図１３】
0004443613.tif 000014
【図１４】
0004443613.tif 000015
【図１５】
0004443613.tif 000016
【図１６】
0004443613.tif 000017
【図１７】
0004443613.tif 000018
【図１８】
0004443613.tif 000019
【図１９】
0004443613.tif 000020
【図２０】
0004443613.tif 000021
【図２１】
0004443613.tif 000022
【図２２】
0004443613.tif 000023
【図２３】
0004443613.tif 000024
【図２４】
0004443613.tif 000025
【図２５】
0004443613.tif 000026
【図２６】
0004443613.tif 000027
【図２７】
0004443613.tif 000028
【図２８】
0004443613.tif 000029
【図２９】
0004443613.tif 000030
【図３０】
0004443613.tif 000031
【図３１】
0004443613.tif 000032
【図３２】
0004443613.tif 000033
【図３３】
0004443613.tif 000034
【図３４】
0004443613.tif 000035
【図３５】
0004443613.tif 000036