(57)【要約】【課題】  サーバの内部記憶装置に書き込まれるデータ量を低減し得る技術を提供する。【解決手段】  データベース９０は、４個の部分二値データを格納する。４個の部分二値データは、ＰＤＦデータの変換によって生成される二値データが分割されたデータである。送信サーバ５０は、１個目の要求コマンドを受信する場合に、４個の部分二値データのうち、「ＩＤ００１」及び「ＩＤ００２」に対応する２個の部分二値データを取得して、ＶＲＡＭ７６に書き込み、当該２個の部分二値データの全てをプリンタ１００に送信する。送信サーバ５０は、２個目の要求コマンドを受信する場合に、４個の部分二値データのうち、「ＩＤ００３」及び「ＩＤ００４」に対応する２個の部分二値データを取得して、ＶＲＡＭ７６に書き込み、当該２個の部分二値データの全てをプリンタ１００に送信する。【選択図】  図４
2014106923.tif 000002
【特許請求の範囲】
【請求項１】
第１のサーバであって、
外部装置から複数個の要求コマンドのそれぞれを順次受信する受信部であって、前記複数個の要求コマンドのそれぞれは、変換済みデータの送信を前記第１のサーバに要求するためのコマンドであり、前記変換済みデータは、１回の変換指示に応じて、対象データの変換が実行されることによって生成されるデータであり、前記変換済みデータは、Ｐ個（前記Ｐは２以上の整数）の部分データに分割された状態で、外部記憶装置に格納され、前記Ｐ個の部分データのうちの少なくともＰ−１個の部分データのそれぞれは、所定のデータサイズを有する、前記受信部と、
前記複数個の要求コマンドに応じて、前記外部記憶装置内の前記変換済みデータを前記外部装置に供給する供給部と、を備え、
前記供給部は、
前記複数個の要求コマンドのうちの１個の要求コマンドが受信される毎に、前記外部記憶装置から、前記Ｐ個の部分データの一部である１個以上の未送信部分データを取得して、前記１個以上の未送信部分データを前記第１のサーバの内部記憶装置に書き込む書込部であって、前記未送信部分データは、前記Ｐ個の部分データのうち、前記外部装置に未だに送信されていない部分を含む部分データである、前記書込部と、
前記複数個の要求コマンドのうちの１個の要求コマンドが受信される毎に、前記内部記憶装置内の前記１個以上の未送信部分データのうちの少なくとも一部を前記外部装置に送信する送信部と、
を備える、第１のサーバ。
【請求項２】
前記複数個の要求コマンドのそれぞれは、当該要求コマンドに応じて送信可能なデータサイズを示すサイズ情報を含み、
前記供給部は、さらに、
前記複数個の要求コマンドのうちの１個の要求コマンドが受信される毎に、当該要求コマンドに含まれる前記サイズ情報と、前記所定のデータサイズと、を用いて、前記内部記憶装置に書き込まれるべき部分データの個数を決定する決定部を備え、
前記書込部は、前記外部記憶装置から決定済みの個数の未送信部分データを取得して、前記決定済みの個数の未送信部分データを前記内部記憶装置に書き込む、請求項１に記載の第１のサーバ。
【請求項３】
前記所定のデータサイズよりも大きい第１のデータサイズを示す第１のサイズ情報を含む第１の要求コマンドが受信される場合に、
前記決定部は、前記内部記憶装置に書き込まれるべき部分データの個数として、Ｎ１を決定し、
前記Ｎ１は、前記Ｐより小さい整数であり、かつ、「前記Ｎ１×前記所定のデータサイズ≦前記第１のデータサイズ」の関係を満たす最大の整数であり、
前記書込部は、前記外部記憶装置から第１グループのＮ１個の未送信部分データを取得して、前記第１グループのＮ１個の未送信部分データを前記内部記憶装置に書き込み、
前記送信部は、前記内部記憶装置内の前記第１グループのＮ１個の未送信部分データの全てを前記外部装置に送信する、請求項２に記載の第１のサーバ。
【請求項４】
前記第１の要求コマンドが受信された後に、前記第１のサイズ情報を含む第２の要求コマンドが受信される場合に、
前記決定部は、前記内部記憶装置に書き込まれるべき部分データの個数として、前記Ｎ１を決定し、
前記書込部は、前記外部記憶装置から第２グループのＮ１個の未送信部分データを取得して、前記第２グループのＮ１個の未送信部分データを前記内部記憶装置に書き込み、
前記送信部は、前記内部記憶装置内の前記第２グループのＮ１個の未送信部分データの全てを前記外部装置に送信する、請求項３に記載の第１のサーバ。
【請求項５】
前記所定のデータサイズよりも大きい第２のデータサイズを示す第２のサイズ情報を含む第３の要求コマンドが受信される場合に、
前記決定部は、前記内部記憶装置に書き込まれるべき部分データの個数として、Ｎ２を決定し、
前記Ｎ２は、前記Ｐより小さい整数であり、かつ、「（前記Ｎ２−１）×前記所定のデータサイズ＜前記第２のデータサイズ」の関係を満たす最大の整数であり、
前記書込部は、前記外部記憶装置から第３グループのＮ２個の未送信部分データを取得して、前記第３グループのＮ２個の未送信部分データを前記内部記憶装置に書き込み、
前記送信部は、前記内部記憶装置内の前記第３グループのＮ２個の未送信部分データのうち、前記第２のデータサイズを有する第１の部分であって、前記外部装置に未だに送信されていない部分である前記第１の部分のみを前記外部装置に送信する、請求項２に記載の第１のサーバ。
【請求項６】
前記第３の要求コマンドが受信された後に、前記第２のサイズ情報を含む第４の要求コマンドが受信される場合に、
前記決定部は、前記内部記憶装置に書き込まれるべき部分データの個数として、前記Ｎ２を決定し、
前記書込部は、前記外部記憶装置から第４グループのＮ２個の未送信部分データを取得して、前記第４グループのＮ２個の未送信部分データを前記内部記憶装置に書き込み、
前記送信部は、前記内部記憶装置内の前記第４グループのＮ２個の未送信部分データのうち、前記第２のデータサイズを有する第２の部分であって、前記外部装置に未だに送信されていない部分である前記第２の部分のみを前記外部装置に送信する、請求項５に記載の第１のサーバ。
【請求項７】
前記所定のデータサイズよりも小さい第３のデータサイズを示す第３のサイズ情報を含む第５の要求コマンドが受信される場合に、
前記決定部は、前記内部記憶装置に書き込まれるべき部分データの個数として、１を決定し、
前記書込部は、前記外部記憶装置から、１個の未送信部分データである第１の未送信部分データを取得して、前記第１の未送信部分データを前記内部記憶装置に書き込み、
前記送信部は、前記内部記憶装置内の前記第１の未送信部分データのうち、前記第３のデータサイズを有する第３の部分であって、前記外部装置に未だに送信されていない部分である前記第３の部分のみを前記外部装置に送信する、請求項２から６のいずれか一項に記載の第１のサーバ。
【請求項８】
前記第５の要求コマンドが受信された後に、前記第３のサイズ情報を含む第６の要求コマンドが受信される場合に、
前記決定部は、前記内部記憶装置に書き込まれるべき部分データの個数として、１を決定し、
前記書込部は、前記外部記憶装置から前記第１の未送信部分データを再び取得して、前記第１の未送信部分データを前記内部記憶装置に再び書き込み、
前記送信部は、前記内部記憶装置内の前記第１の未送信部分データのうち、前記第３のデータサイズ以下のデータサイズを有する第４の部分であって、前記外部装置に未だに送信されていない部分である前記第４の部分のみを前記外部装置に送信する、請求項７に記載の第１のサーバ。
【請求項９】
前記第５の要求コマンドが受信された後に、前記第３のサイズ情報を含む第７の要求コマンドが受信される場合に、
前記決定部は、前記第１の未送信部分データのうち、前記外部装置に未だに送信されていない部分のデータサイズが、前記第３のデータサイズ未満である場合に、前記内部記憶装置に書き込まれるべき部分データの個数として、２を決定し、
前記書込部は、前記外部記憶装置から、前記第１の未送信部分データと、前記第１の未送信部分データとは異なる第２の未送信部分データと、を取得して、前記第１及び第２の未送信部分データを前記内部記憶装置に書き込み、
前記送信部は、前記内部記憶装置内の前記第１及び第２の未送信部分データのうち、前記第３のデータサイズを有する第５の部分であって、前記外部装置に未だに送信されていない部分である前記第５の部分のみを前記外部装置に送信する、請求項７に記載の第１のサーバ。
【請求項１０】
請求項１から９のいずれか一項に記載の前記第１のサーバと、第２のサーバと、を備えるサーバシステムであって、
前記第２のサーバは、
前記外部装置から前記１回の変換指示及び前記対象データが受信される場合に、前記対象データの変換を実行して、前記変換済みデータを生成する生成部と、
前記Ｐ個の部分データのうちの少なくともＰ−１個の部分データのそれぞれが前記所定のデータサイズを有するように、前記変換済みデータを前記Ｐ個の部分データに分割して、前記Ｐ個の部分データを前記外部記憶装置に格納させる格納制御部と、
を備える、サーバシステム。
【請求項１１】
第１のサーバのためのコンピュータプログラムであって、
前記コンピュータプログラムは、前記第１のサーバに搭載されるプロセッサに、以下の各処理、即ち、
外部装置から複数個の要求コマンドのそれぞれを順次受信する受信処理であって、前記複数個の要求コマンドのそれぞれは、変換済みデータの送信を前記第１のサーバに要求するためのコマンドであり、前記変換済みデータは、１回の変換指示に応じて、対象データの変換が実行されることによって生成されるデータであり、前記変換済みデータは、Ｐ個（前記Ｐは２以上の整数）の部分データに分割された状態で、外部記憶装置に格納され、前記Ｐ個の部分データのうちの少なくともＰ−１個の部分データのそれぞれは、所定のデータサイズを有する、前記受信処理と、
前記複数個の要求コマンドに応じて、前記外部記憶装置内の前記変換済みデータを前記外部装置に供給する供給処理と、を実行させ、
前記供給処理は、
前記複数個の要求コマンドのうちの１個の要求コマンドが受信される毎に、前記外部記憶装置から、前記Ｐ個の部分データの一部である１個以上の未送信部分データを取得して、前記１個以上の未送信部分データを前記第１のサーバの内部記憶装置に書き込む書込処理であって、前記未送信部分データは、前記Ｐ個の部分データのうち、前記外部装置に未だに送信されていない部分を含む部分データである、前記書込処理と、
前記複数個の要求コマンドのうちの１個の要求コマンドが受信される毎に、前記内部記憶装置内の前記１個以上の未送信部分データのうちの少なくとも一部を前記外部装置に送信する送信処理と、
を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書によって開示される技術は、変換済みデータを外部装置に送信するためのサーバに関する。
【背景技術】
【０００２】
特許文献１には、サーバ装置と、印刷装置と、を備えるシステムが開示されている。サーバ装置は、印刷装置からコンテンツのリクエストを受信すると、コンテンツの変換を実行して、ＰＭＬデータを生成する。サーバ装置は、上記のリクエストを受信する際に、さらに、印刷装置の受信バッファサイズを受信する。サーバ装置は、受信バッファサイズに応じて、ＰＭＬデータを複数個のデータに分割する。サーバ装置は、複数個のデータのそれぞれを印刷装置に順次送信する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−１４７８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の特許文献１には、サーバ装置が分割後の各データを印刷装置に送信すべき際に、サーバ装置の内部記憶装置をどのようにして利用するのかについて、何ら開示されていない。
【０００５】
本明細書では、サーバが変換済みデータを外部装置に送信すべき際に、サーバの内部記憶装置に書き込まれるデータ量を低減し得る技術を提供する。
【課題を解決するための手段】
【０００６】
本明細書によって開示される第１のサーバは、受信部と、供給部と、を備える。受信部は、外部装置から複数個の要求コマンドのそれぞれを順次受信する。複数個の要求コマンドのそれぞれは、変換済みデータの送信を第１のサーバに要求するためのコマンドである。変換済みデータは、１回の変換指示に応じて、対象データの変換が実行されることによって生成されるデータである。変換済みデータは、Ｐ個（Ｐは２以上の整数）の部分データに分割された状態で、外部記憶装置に格納される。Ｐ個の部分データのうちの少なくともＰ−１個の部分データのそれぞれは、所定のデータサイズを有する。供給部は、複数個の要求コマンドに応じて、外部記憶装置内の変換済みデータを外部装置に供給する。供給部は、書込部と、送信部と、を備える。書込部は、複数個の要求コマンドのうちの１個の要求コマンドが受信される毎に、外部記憶装置から、Ｐ個の部分データの一部である１個以上の未送信部分データを取得して、１個以上の未送信部分データを第１のサーバの内部記憶装置に書き込む。未送信部分データは、Ｐ個の部分データのうち、外部装置に未だに送信されていない部分を含む部分データである。送信部は、複数個の要求コマンドのうちの１個の要求コマンドが受信される毎に、内部記憶装置内の１個以上の未送信部分データのうちの少なくとも一部を外部装置に送信する。
【０００７】
上記の構成によると、第１のサーバは、１個の要求コマンドが受信される毎に、Ｐ個の部分データの一部である１個以上の未送信部分データを内部記憶装置に書き込み、内部記憶装置内の１個以上の未送信部分データのうちの少なくとも一部を外部装置に送信する。従って、１個の要求コマンドが受信される毎に、変換済みデータの全てを内部記憶装置に書き込む構成と比べると、内部記憶装置に書き込まれるデータ量を低減し得る。
【０００８】
上記の第１のサーバ及び／又は第２のサーバを実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを記憶するコンピュータ読取可能記憶媒体も、新規で有用である。
【図面の簡単な説明】
【０００９】
【図１】通信システムの構成を示す。
【図２】各デバイスによって実行される各処理のシーケンス図を示す。
【図３】第１実施例の送信サーバの応答処理のフローチャートを示す。
【図４】図２の続きの第１実施例のシーケンス図を示す。
【図５】第１実施例で実現されるケースＡ１及びＡ２を説明するための図を示す。
【図６】第１実施例で実現されるケースＡ３及びＡ４を説明するための図を示す。
【図７】比較例を説明するための図を示す。
【図８】第２実施例の送信サーバの応答処理のフローチャートを示す。
【図９】第２実施例で実現されるケースＢ１を説明するための図を示す。
【図１０】第２実施例で実現されるケースＢ２及びＢ３を説明するための図を示す。
【発明を実施するための形態】
【００１０】
（第１実施例）
（システムの構成）
図１に示されるように、通信システム２は、変換サーバ１０と、送信サーバ５０と、プリンタ１００と、携帯端末１１０と、を備える。各サーバ１０，５０及びプリンタ１００は、インターネット４を介して、様々なデータを相互に通信可能である。また、プリンタ１００及び携帯端末１１０は、例えば、Ｗｉ−Ｆｉアライアンスによって定められる無線通信を実行して、様々なデータを相互に通信可能である。
【００１１】
（変換サーバ１０の構成）
変換サーバ１０は、プリンタ１００のベンダによって提供される。変換サーバ１０は、プリンタ１００が解釈不可能な印刷対象の対象データの変換を実行して、プリンタ１００が解釈可能な変換済みデータ（後述の二値データ）を生成するためのサーバである。変換サーバ１０は、ネットワークインターフェース２０と、制御部３０と、を備える。
【００１２】
ネットワークインターフェース２０は、有線又は無線のインターフェースであり、インターネット４に接続される。制御部３０は、ＣＰＵ３２と、プログラムメモリ３４と、を備える。ＣＰＵ３２は、プログラムメモリ３４に格納されているプログラムに従って、様々な処理を実行する。ＣＰＵ３２が上記のプログラムに従って処理を実行することによって、生成部４０及び格納制御部４２の各機能が実現される。なお、上記のプログラムは、例えば、ＰＤＦ（Portable Document Formatの略）形式のデータを二値データに変換するためのプログラムを含む。
【００１３】
（送信サーバ５０の構成）
送信サーバ５０は、プリンタ１００のベンダによって提供される。送信サーバ５０は、変換サーバ１０によって生成される変換済みデータ（即ち二値データ）を格納し、プリンタ１００からの要求に応じて変換済みデータをプリンタ１００に送信するためのサーバである。送信サーバ５０は、ネットワークフェース６０と、制御部７０と、データベース９０と、を備える。
【００１４】
ネットワークフェース６０は、有線又は無線のインターフェースであり、インターネット４に接続される。制御部７０は、ＣＰＵ７２と、プログラムメモリ７４と、ＶＲＡＭ７６（Volatile Random Access Memoryの略；揮発性ＲＡＭ）と、を備える。ＣＰＵ７２は、プログラムメモリ７４に格納されているプログラムに従って、様々な処理を実行する。ＣＰＵ７２が上記のプログラムに従って処理を実行することによって、受信部８０及び供給部８２の各機能が実現される。なお、供給部８２は、決定部８４と、書込部８６と、送信部８８と、を備える。
【００１５】
ＶＲＡＭ７６は、送信サーバ５０が各処理を実行する過程において、様々なデータが書き込まれるワークメモリである。データベース９０は、変換サーバ１０によって生成される変換済みデータ（より具体的には後述の複数個の分割データ）を格納するための記憶装置である。なお、送信サーバ５０は、データベース９０内のデータを外部（例えばプリンタ１００）に送信すべき場合には、データベース９０から当該データを取得して、当該データをＶＲＡＭ７６に一旦書き込まなければならない。そして、送信サーバ５０は、ＶＲＡＭ７６内の当該データを外部に送信することによって、データベース９０内の当該データを外部に送信することができる。
【００１６】
（プリンタ１００の構成）
プリンタ１００は、インクジェット方式又はレーザ方式の印刷機構（図示省略）を備える。プリンタ１００は、ＪＰＥＧ（Joint Photographic Experts Groupの略）形式のデータを二値データに変換するためのプログラムを備える。即ち、プリンタ１００は、ＪＰＥＧ形式の対象データを解釈可能である。従って、プリンタ１００は、対象データがＪＰＥＧ形式のデータである場合には、当該対象データの変換を実行して、ドットのＯＮ又はＯＦＦを示す二値データを生成することができる。そして、生成済みの二値データが印刷機構に供給されるために、印刷機構は、当該二値データに従って、印刷媒体に画像を印刷することができる。
【００１７】
一方において、プリンタ１００は、ＰＤＦ形式のデータを解釈するためのプログラムを備えていない。即ち、プリンタ１００は、ＰＤＦ形式の対象データを解釈不可能である。従って、プリンタ１００は、対象データがＰＤＦ形式のデータである場合には、当該対象データの変換を実行して、二値データを生成することができない。この場合、プリンタ１００は、対象データを変換サーバ１０に送信して、送信サーバ５０から二値データを受信する。そして、受信済みの二値データが印刷機構に供給されるために、印刷機構は、当該二値データに従って、印刷媒体に画像を印刷することができる。
【００１８】
（携帯端末１１０の構成）
携帯端末１１０は、携帯電話（例えばスマートフォン）、ＰＤＡ、ノートＰＣ、タブレットＰＣ、携帯型音楽再生装置、携帯型動画再生装置等の可搬型の端末装置である。携帯端末１１０は、例えば、Ｗｉ−Ｆｉアライアンスによって定められる無線通信を実行して、印刷対象の対象データをプリンタ１００に送信する。
【００１９】
（各デバイスが実行する各処理；図２）
図２に示されるように、例えば、携帯端末１１０は、ユーザの操作に応じて、ＪＰＥＧ形式の対象データであるＪＰＥＧデータ２００と、ＪＰＥＧデータ２００に従った印刷の実行を指示するための印刷指示と、をプリンタ１００に送信する。
【００２０】
プリンタ１００は、携帯端末１１０からＪＰＥＧデータ２００及び印刷指示を受信すると、ＪＰＥＧデータ２００を解釈可能であると判断する。この場合、プリンタ１００は、ＪＰＥＧデータ２００の変換を実行して、二値データ２０２を生成する。具体的に言うと、プリンタ１００は、まず、ＲＧＢの多値データ（例えば２５６階調）であるＪＰＥＧデータ２００を、ＣＭＹＫの多値データ（例えば２５６階調）に変換する。次いで、プリンタ１００は、ＣＭＹＫの多値データに対してハーフトーン処理等を実行して、ＣＭＹＫの二値データ（即ちドットのＯＮ又はＯＦＦを示すデータ）を生成する。なお、以下では、二値データのことを「ＢＤ（Binary Dataの略）」と表現することがある。
【００２１】
次いで、プリンタ１００は、生成済みの二値データ（ＢＤ）２０２に従って、印刷媒体に画像を印刷する。このように、プリンタ１００は、携帯端末１１０からＪＰＥＧデータ２００を受信する場合には、変換サーバ１０及び送信サーバ５０を用いずに、印刷を実行することができる。
【００２２】
また、例えば、携帯端末１１０は、ユーザの操作に応じて、ＰＤＦ形式の対象データであるＰＤＦデータ２１０と、ＰＤＦデータ２１０に従った印刷の実行を指示するための印刷指示と、をプリンタ１００に送信する。
【００２３】
プリンタ１００は、携帯端末１１０からＰＤＦデータ２１０及び印刷指示を受信すると、ＰＤＦデータ２１０を解釈不可能であると判断する。この場合、プリンタ１００は、ＰＤＦデータ２１０と、ＰＤＦデータ２１０の変換の実行を指示するための変換指示と、を変換サーバ１０に送信する。変換指示は、プリンタ１００のＭＡＣアドレスを含む。
【００２４】
変換サーバ１０の生成部４０は、プリンタ１００からＰＤＦデータ２１０及び変換指示を受信すると、ＰＤＦデータ２１０の変換を実行して、二値データ２１２を生成する。具体的に言うと、生成部４０は、ページ記述言語であるＰＤＦデータ２１０を、ＣＭＹＫの多値データ（例えば２５６階調）に変換する。次いで、生成部４０は、ＣＭＹＫの多値データに対してハーフトーン処理等を実行して、ＣＭＹＫの二値データ２１２を生成する。
【００２５】
次いで、格納制御部４２は、二値データ２１２から複数個の分割データ２１４を生成する。複数個の分割データ２１４のそれぞれは、ヘッダデータと、部分二値データと、を含む。なお、以下では、分割データ、ヘッダデータ、部分二値データのことを、それぞれ、「ＤＤ（Divided Dataの略）」、「ＨＤ（Header Dataの略）」、「ＰＢＤ（Partial Binary Dataの略）」と表現することがある。
【００２６】
図２に示される例を参照しながら、二値データ（ＢＤ）２１２から複数個の分割データ（ＤＤ）２１４を生成するための手法を説明する。格納制御部４２は、１４Ｍバイト（Ｍはメガを表わす）の二値データ２１２のうち、１バイト目のデータから４Ｍバイト目までのデータを、１個目の部分二値データ（ＰＢＤ）として決定する。次いで、格納制御部４２は、１個目の部分二値データに対応するＩＤ（即ち識別情報）として「ＩＤ００１」を決定し、１個目の分割データの開始（即ち先頭）を示す開始データと、「ＩＤ００１」と、を含む１個目のヘッダデータ（ＨＤ）を生成する。そして、格納制御部４２は、１個目のヘッダデータと、１個目の部分二値データと、を含む１個目の分割データ（ＤＤ）を生成する。
【００２７】
同様に、格納制御部４２は、２個目の分割データと３個目の分割データとを順次生成する。２個目の分割データに含まれる２個目のヘッダデータは、開始データと「ＩＤ００２」とを含む。２個目の分割データに含まれる２個目の部分二値データは、１４Ｍバイトの二値データ２１２のうち、４Ｍ＋１バイト目のデータから８Ｍバイト目までのデータを含む。３個目の分割データに含まれる３個目のヘッダデータは、開始データと「ＩＤ００３」とを含む。３個目の分割データに含まれる３個目の部分二値データは、１４Ｍバイトの二値データ２１２のうち、８Ｍ＋１バイト目のデータから１２Ｍバイト目までのデータを含む。
【００２８】
最後に、格納制御部４２は、４個目の分割データを生成する。４個目の分割データに含まれる４個目のヘッダデータは、開始データと「ＩＤ００４」とを含む。４個目の分割データに含まれる４個目の部分二値データは、１４Ｍバイトの二値データ２１２のうち、１２Ｍ＋１バイト目のデータから１４Ｍバイト目までのデータを含む。即ち、４個目の部分二値データは、１個目〜３個目の各部分二値データ（即ち４Ｍバイトの各部分二値データ）とは異なり、２Ｍバイトのデータしか含まない。
【００２９】
上述したように、格納制御部４２は、予め決められている４Ｍバイトという分割の単位で、１４Ｍバイトのデータサイズを有する二値データ２１２を分割して、４個の部分二値データを生成する。仮に、二値データ２１２の合計データサイズが上記の分割の単位（即ち４Ｍバイト）の整数倍である場合には、各部分二値データのデータサイズは同じである。ただし、図２の例のように、二値データ２１２の合計データサイズ（即ち１４Ｍバイト）が上記の分割の単位（即ち４Ｍバイト）の整数倍でない場合には、最後に生成される１個の部分二値データのデータサイズ（即ち２Ｍバイト）は、他の各部分二値データのデータサイズ（即ち４Ｍバイト）よりも小さくなる。即ち、分割の結果として生成される部分二値データの個数を「Ｐ（Ｐは２以上の整数）」と表現する場合に、格納制御部４２は、Ｐ個（例えば４個）の部分二値データのうちの少なくともＰ−１個（例えば３個）の部分二値データのそれぞれが４Ｍバイトのデータサイズ（即ち同じデータサイズ）を有するように、二値データ２１２をＰ個の部分二値データに分割する。なお、変形例では、分割の単位は、４Ｍバイトよりも小さくてもよいし、４Ｍバイトよりも大きくてもよい。
【００３０】
また、上述したように、格納制御部４２は、１個目の分割データ、２個目の分割データ・・・Ｐ個目の分割データのそれぞれについて、「ＩＤ００１」、「ＩＤ００２」・・・「ＩＤ００Ｐ」等のように、数値が昇順で大きくなるように、ＩＤを決定する。このようにして、各分割データに対応する各ＩＤが決定されるために、送信サーバ５０は、後述の図３のＳ３０において、各分割データをデータベース９０から適切に取得することができる。
【００３１】
次いで、格納制御部４２は、変換指示に含まれるプリンタ１００のＭＡＣアドレスと、生成済みの複数個の分割データ２１４と、を送信サーバ５０に供給して、プリンタ１００のＭＡＣアドレスと複数個の分割データ２１４とを対応付けて、送信サーバ５０のデータベース９０内に格納させる。このように、本実施例によると、変換サーバ１０は、プリンタ１００から１回の変換指示及びＰＤＦデータ２１０が受信される場合に、二値データ２１２から得られる４個の部分二値データ（より具体的には４個の分割データ２１４）をデータベース９０に適切に格納させることができる。
【００３２】
本実施例では、複数個の分割データ２１４のそれぞれが開始データ及びＩＤを含むために、送信サーバ５０は、データベース９０内の各分割データ２１４を１個のデータとして扱うことができる。即ち、送信サーバ５０は、複数個の分割データ２１４のうちの一部である１個以上の分割データ（例えば１個の分割データ）のみをデータベース９０から取得して、当該１個以上の分割データをＶＲＡＭ７６に書き込むことができる。これに対し、仮に、二値データ２１２が分割されない状態でデータベース９０に格納されると、送信サーバ５０は、データベース９０から二値データ２１２の全てを取得することしかできず、二値データ２１２の一部のみを取得して、当該一部をＶＲＡＭ７６に書き込むことができない。本実施例では、二値データ２１２が分割された状態でデータベース９０に格納されるために、送信サーバ５０は、後述の図３の各処理を適切に実行することができる。
【００３３】
詳しくは後述するが（図４参照）、プリンタ１００は、変換指示及びＰＤＦデータ２１０を変換サーバ１０に送信すると、複数個の要求コマンドのそれぞれを送信サーバ５０に順次送信する。複数個の要求コマンドのそれぞれは、二値データ２１２の送信を送信サーバ５０に要求するためのコマンドである。送信サーバ５０は、複数個の要求コマンドのそれぞれに応じて、データベース９０から各分割データを順次取得して、各分割データをＶＲＡＭ７６に順次書き込む。そして、送信サーバ５０は、ＶＲＡＭ７６内に順次書き込まれる各分割データを用いて、各部分二値データをプリンタ１００に順次送信する。この結果、プリンタ１００は、送信サーバ５０から二値データ２１２の全てを受信することができ、二値データ２１２に従って印刷を実行することができる。図３を参照して、送信サーバ５０がこのような処理を実行するためのフローチャートの内容を説明する。
【００３４】
（送信サーバ５０の応答処理；図３）
以下では、プリンタ１００のＭＡＣアドレスに対応付けられている複数個の分割データ２１４が、送信サーバ５０のデータベース９０に格納されている状況を前提として、図３の応答処理の内容を説明する。
【００３５】
Ｓ１０において、送信サーバ５０の受信部８０は、プリンタ１００から要求コマンドを受信することを監視している。要求コマンドは、プリンタ１００のＭＡＣアドレスと、当該要求コマンドに応じて送信可能なデータサイズを示す情報（以下では「要求データサイズ」と呼ぶ）と、当該要求コマンドに応じて送信されるべきデータの開始位置を示す情報（以下では「要求開始位置」と呼ぶ）と、を含む。
【００３６】
要求データサイズは、プリンタ１００によって指定される情報であり、プリンタ１００のメモリ（図示省略）の現在の空き容量に依存する。即ち、プリンタ１００は、プリンタ１００のメモリの現在の空き容量が大きい程、大きい要求データサイズを決定する。また、要求開始位置は、プリンタ１００によって指定される情報であり、二値データ２１２のうち、プリンタ１００によって既に受信された部分のデータサイズに依存する。即ち、プリンタ１００は、二値データ２１２のうちの受信済みの部分の次のデータの位置を要求開始位置として決定する。例えば、プリンタ１００は、二値データ２１２を全く受信していない状況では、「１バイト目」を要求開始位置として決定する。また、例えば、プリンタ１００は、二値データ２１２のうちの１バイト目〜４Ｍバイト目の部分を既に受信している状況では、「４Ｍ＋１バイト目」を要求開始位置として決定する。
【００３７】
受信部８０は、プリンタ１００から要求コマンドを受信すると、Ｓ１０でＹＥＳと判断して、Ｓ１２に進む。Ｓ１２では、決定部８４は、受信済みの要求コマンドに含まれる要求開始位置を含む分割データに対応するＩＤ（以下では「ＩＤｓｔａｒｔ」と呼ぶ）を特定する。上述したように、本実施例では、４Ｍバイトという分割の単位で二値データ２１２が各部分二値データに分割され、さらに、各分割データに対応する各ＩＤは、数値が昇順で大きくなるように設定される。決定部８４は、これらのルールと、要求開始位置と、に基づいて、ＩＤｓｔａｒｔを特定することができる。より具体的に言うと、決定部８４は、要求開始位置の値（例えば１バイト目）を分割の単位の値Ｘ（即ち４Ｍバイト）で除算することによって得られる値において、小数点以下を繰り上げて整数値を算出し、算出済みの整数値に対応するＩＤをＩＤｓｔａｒｔとして特定する。
【００３８】
例えば、要求開始位置が「１バイト目」である場合には、決定部８４は、「１バイト」を「４Ｍバイト」で除算することによって得られる値において、小数点以下を繰り上げて整数値「１」を算出する。そして、決定部８４は、算出済みの整数値「１」に対応する「ＩＤ００１」をＩＤｓｔａｒｔとして特定する。また、例えば、要求開始位置が「４Ｍ＋１バイト目」である場合には、決定部８４は、「４Ｍ＋１バイト」を「４Ｍバイト」で除算することによって得られる値において、小数点以下を繰り上げて整数値「２」を算出する。そして、決定部８４は、算出済みの整数値「２」に対応する「ＩＤ００２」をＩＤｓｔａｒｔとして特定する。
【００３９】
次いで、Ｓ１４では、決定部８４は、受信済みの要求コマンドに含まれる要求データサイズＹと、分割の単位の値Ｘと、を比較する。決定部８４は、Ｙ＜Ｘである場合には、Ｓ１４でＹＥＳと判断して、Ｓ１８に進む。一方において、決定部８４は、Ｙ≧Ｘである場合には、Ｓ１４でＮＯと判断して、Ｓ２０に進む。
【００４０】
Ｓ１８では、決定部８４は、データベース９０から取得すべき分割データの個数Ｌとして、「１」を決定する。一方において、Ｓ２０では、決定部８４は、ＬとＸの乗算値がＹ以下になる関係（即ちＬ×Ｘ≦Ｙ）を満たす最大の整数を個数Ｌとして決定する。例えば、Ｘが「４Ｍバイト」であり、Ｙが「９Ｍバイト」である場合には、Ｌは「２」である。また、例えば、Ｘが「４Ｍバイト」であり、Ｙが「５Ｍバイト」である場合には、Ｌは「１」である。このように、本実施例によると、Ｓ１４〜Ｓ２０において、決定部８４は、分割の単位の値Ｘ（即ち４Ｍバイト）と、要求コマンドに含まれる要求データサイズＹと、を用いて、個数Ｌを適切に決定することができる。
【００４１】
Ｓ３０では、書込部８６は、受信済みの要求コマンドに含まれるプリンタ１００のＭＡＣアドレスに対応付けられている複数個の分割データ２１４のうちの１個以上の分割データをデータベース９０から取得して、当該１個以上の分割データをＶＲＡＭ７６に書き込む。具体的に言うと、書込部８６は、ＩＤｓｔａｒｔ、ＩＤｓｔａｒｔ＋１、ＩＤｓｔａｒｔ＋２・・・ＩＤｓｔａｒｔ＋（Ｌ−１）に対応するＬ個の分割データをデータベース９０から取得して、Ｌ個の分割データをＶＲＡＭ７６に書き込む。例えば、ＩＤｓｔａｒｔが「ＩＤ００１」であり、Ｌが「１」である場合（例えばＳ１８が実行された場合）には、書込部８６は、複数個の分割データ２１４のうち、「ＩＤ００１」に対応する１個の分割データのみをＶＲＡＭ７６に書き込む。また、例えば、ＩＤｓｔａｒｔが「ＩＤ００３」であり、Ｌが「２」である場合（例えばＳ２０が実行された場合）には、書込部８６は、複数個の分割データ２１４のうち、「ＩＤ００３」及び「ＩＤ００４」に対応する２個の分割データのみをＶＲＡＭ７６に書き込む。
【００４２】
上述したように、Ｓ３０では、書込部８６は、ＩＤｓｔａｒｔ以降の各ＩＤに対応するＬ個の分割データをＶＲＡＭ７６に書き込む。このために、書込部８６は、プリンタ１００によって指定される要求開始位置以降の部分を含むＬ個の分割データ、即ち、プリンタ１００に未だに送信されていない部分を含むＬ個の分割データを、ＶＲＡＭ７６に適切に書き込むことができる。
【００４３】
なお、例えば、「ＩＤ００１」〜「ＩＤ００４」に対応する４個の分割データ２１４がデータベース９０に格納されており、ＩＤｓｔａｒｔが「ＩＤ００３」であり、Ｌが「３」である場合では、書込部８６は、Ｌが「３」であるにも関わらず、「ＩＤ００３」及び「ＩＤ００４」に対応する２個の分割データのみをＶＲＡＭ７６に書き込む。「ＩＤ００５」に対応する分割データが存在しないからである。このように、書込部８６は、取得すべきＬ個の分割データがデータベース９０内に存在しない場合には、Ｌ個未満の分割データをＶＲＡＭ７６に書き込む。
【００４４】
次いで、Ｓ３２では、送信部８８は、ＶＲＡＭ７６内のＬ個の分割データ（もしくはＬ個未満の分割データ）に含まれるＬ個の部分二値データのうち、要求開始位置から、送信データサイズが要求データサイズＹを超えない位置までを、プリンタ１００に送信する。なお、以下では、「送信データサイズが要求データサイズＹを超えない位置」のことを、簡単に、「Ｙを超えない位置」と記載する。
【００４５】
例えば、ＩＤｓｔａｒｔが「ＩＤ００１」であり、Ｘが「４Ｍバイト」であり、Ｙが「３Ｍバイト」である第１の状況を想定する。第１の状況では、Ｓ１４でＹＥＳと判断され、Ｓ１８で個数Ｌとして「１」が決定され、「ＩＤ００１」に対応する１個の分割データ（即ち１バイト目〜４Ｍバイト目の部分二値データ）がＶＲＡＭ７６に書き込まれる。
【００４６】
第１の状況において、例えば、要求開始位置が「１バイト目」であるケースでは、Ｓ３２において、送信部８８は、ＶＲＡＭ７６内の１バイト目〜４Ｍバイト目の部分二値データのうち、要求開始位置「１バイト目」から、Ｙを超えない位置「３Ｍバイト目」まで（即ち３Ｍバイトのデータ）を、プリンタ１００に送信する。
【００４７】
また、第１の状況において、例えば、要求開始位置が「３Ｍ＋１バイト目」であるケースでは、Ｓ３２において、送信部８８は、ＶＲＡＭ７６内の１バイト目〜４Ｍバイト目の部分二値データのうち、要求開始位置「３Ｍ＋１バイト目」から、Ｙを超えない位置（即ち当該部分二値データの終端位置）「４Ｍバイト目」まで（即ち１Ｍバイトのデータ）を、プリンタ１００に送信する。
【００４８】
また、例えば、ＩＤｓｔａｒｔが「ＩＤ００１」であり、Ｘが「４Ｍバイト」であり、Ｙが「９Ｍバイト」である第２の状況を想定する。第２の状況では、Ｓ１４でＮＯと判断され、Ｓ２０で個数Ｌとして「２」が決定され、「ＩＤ００１」及び「ＩＤ００２」に対応する２個の分割データ（即ち１バイト目〜８Ｍバイト目の部分二値データ）がＶＲＡＭ７６に書き込まれる。第２の状況において、例えば、要求開始位置が「１バイト目」であるケースでは、Ｓ３２において、送信部８８は、ＶＲＡＭ７６内の１バイト目〜８Ｍバイト目の部分二値データのうち、要求開始位置「１バイト目」から、Ｙを超えない位置（即ち当該部分二値データの終端位置）「８Ｍバイト目」まで（即ち８Ｍバイトのデータ）を、プリンタ１００に送信する。
【００４９】
上述したように、決定部８４、書込部８６、及び、送信部８８が、Ｓ１２〜Ｓ３２の処理を実行することによって、供給部８２の機能が実現される。即ち、供給部８２は、複数個の分割データ２１４のうちの一部である１個以上の分割データ（即ち１個以上の部分二値データ）をデータベース９０から取得して、当該１個以上の分割データをＶＲＡＭ７６に書き込む（Ｓ１２〜Ｓ３０）。そして、供給部８２は、ＶＲＡＭ７６内の１個以上の分割データに含まれる１個以上の部分二値データのうちの少なくとも一部をプリンタ１００に供給する（Ｓ３２）。
【００５０】
次いで、Ｓ３４では、制御部７０は、Ｓ３０でＶＲＡＭ７６に書き込まれた各分割データを、ＶＲＡＭ７６から消去する。これにより、各分割データが書き込まれていた領域が解放されるために、制御部７０は、当該領域を用いて、様々な処理（例えば、プリンタ１００とは異なるプリンタから受信される要求コマンドに応答するための処理）を実行することができる。
【００５１】
Ｓ３４が終了すると、Ｓ１０に戻る。即ち、制御部７０は、プリンタ１００から１個の要求コマンドを受信する毎に、Ｓ１２〜Ｓ３４の処理を実行する。
【００５２】
（図２の続き：図４）
続いて、図４を参照して、図２の続きの各処理の内容を説明する。図４では、図２の携帯端末１１０及び変換サーバ１０が処理を実行しないので、携帯端末１１０及び変換サーバ１０を図示省略している。
【００５３】
プリンタ１００は、変換指示及びＰＤＦデータ２１０を変換サーバ１０に送信した後に（図２参照）、１個目の要求コマンドを送信サーバ５０に送信する。プリンタ１００は、二値データ２１２のうちのいずれのデータも未だに受信していないので、要求開始位置「１バイト目」を含む１個目の要求コマンドを送信する。また、図４の例では、プリンタ１００は、プリンタ１００のメモリの空き容量に基づいて、要求データサイズ「９Ｍバイト」を決定して、当該要求データサイズ「９Ｍバイト」を含む１個目の要求コマンドを送信する。なお、プリンタ１００は、１個目の要求コマンドを送信すべき際に要求データサイズ（即ち９Ｍバイト）を決定すると、２個目以降の要求コマンドを送信すべき際にも同じ要求データサイズ（即ち９Ｍバイト）を決定する。
【００５４】
送信サーバ５０は、プリンタ１００から１個目の要求コマンドを受信すると（図３のＳ１０でＹＥＳ）、要求開始位置「１バイト目」に基づいて、ＩＤｓｔａｒｔとして「ＩＤ００１」を特定する（Ｓ１２）。Ｘ＝４Ｍバイトであり、Ｙ＝９Ｍバイトであるために、送信サーバ５０は、Ｙ≧Ｘと判断し（Ｓ１４でＮＯ）、「Ｌ×Ｘ（４Ｍ）≦Ｙ（９Ｍ）」を満たす最大の整数「２」を個数Ｌとして決定する（Ｓ２０）。
【００５５】
送信サーバ５０は、「ＩＤ００１」〜「ＩＤ００４」に対応する４個の分割データ２１４のうち、「ＩＤ００１」及び「ＩＤ００２」に対応する２個の分割データのみをデータベース９０から取得して、当該２個の分割データをＶＲＡＭ７６に書き込む（Ｓ３０）。送信サーバ５０は、ＶＲＡＭ７６内の２個の分割データに含まれる２個の部分二値データ（即ち１バイト目〜８Ｍバイト目の部分二値データ）のうち、要求開始位置「１バイト目」から、Ｙを超えない位置（即ち当該部分二値データの終端位置）「８Ｍバイト目」まで（即ち８Ｍバイトのデータ）を、プリンタ１００に送信する（Ｓ３２）。次いで、送信サーバ５０は、ＶＲＡＭ７６内の２個の分割データを消去する（Ｓ３４）。
【００５６】
プリンタ１００は、送信サーバ５０から１バイト目〜８Ｍバイト目の部分（即ち二値データ２１２の一部）を受信すると、当該部分に従って印刷を実行する。
【００５７】
次いで、プリンタ１００は、２個目の要求コマンドを送信サーバ５０に送信する。プリンタ１００は、１バイト目〜８Ｍバイト目の部分を既に受信しているので、要求開始位置「８Ｍ＋１バイト目」を含む２個目の要求コマンドを送信する。２個目の要求コマンドは、要求データサイズ「９Ｍバイト」を含む。
【００５８】
送信サーバ５０は、プリンタ１００から２個目の要求コマンドを受信すると（Ｓ１０でＹＥＳ）、要求開始位置「８Ｍ＋１バイト目」に基づいて、ＩＤｓｔａｒｔとして「ＩＤ００３」を特定する（Ｓ１２）。送信サーバ５０は、１個目の要求コマンドの場合と同様に、Ｙ≧Ｘと判断し（Ｓ１４でＮＯ）、個数Ｌとして「２」を決定する（Ｓ２０）。
【００５９】
送信サーバ５０は、「ＩＤ００１」〜「ＩＤ００４」に対応する４個の分割データ２１４のうち、「ＩＤ００３」及び「ＩＤ００４」に対応する２個の分割データのみをデータベース９０から取得して、当該２個の分割データをＶＲＡＭ７６に書き込む（Ｓ３０）。送信サーバ５０は、ＶＲＡＭ７６内の２個の分割データに含まれる２個の部分二値データ（即ち８Ｍ＋１バイト目〜１４Ｍバイト目の部分二値データ）のうち、要求開始位置「８Ｍ＋１バイト目」から、Ｙを超えない位置（即ち当該部分二値データの終端位置）「１４Ｍバイト目」まで（即ち６Ｍバイトのデータ）を、プリンタ１００に送信する（Ｓ３２）。次いで、送信サーバ５０は、ＶＲＡＭ７６内の２個の分割データを消去する（Ｓ３４）。
【００６０】
プリンタ１００は、送信サーバ５０から８Ｍ＋１バイト目〜１４Ｍバイト目の部分（即ち二値データの一部）を受信すると、当該部分に従って印刷を実行する。これにより、プリンタ１００は、送信サーバ５０から二値データ２１２（即ち４個の部分二値データ）の全てを受信して、二値データ２１２に従って印刷を実行することができる。
【００６１】
上述したように、本実施例によると、プリンタ１００は、印刷対象の対象データ（即ちＰＤＦデータ２１０）を解釈不可能である場合に、変換サーバ１０及び送信サーバ５０を用いて、印刷を適切に実行することができる。本実施例によると、様々な形式のデータを解釈するためのプログラムをプリンタ１００に搭載しなくても、様々な形式の対象データによって表される画像の印刷をプリンタ１００に実行させることができる。
【００６２】
なお、フローチャート及びシーケンス図では図示省略しているが、送信サーバ５０の制御部７０は、プリンタ１００のＭＡＣアドレスに対応付けられている各分割データ２１４がデータベース９０に格納されてから所定時間が経過すると、各分割データ２１４をデータベース９０から消去する。この構成によると、プリンタ１００は、上記の所定時間が経過するまで、送信サーバ５０から複数回に亘って二値データ２１２を取得することができ、複数回に亘って印刷を実行することができる。
【００６３】
ただし、変形例では、制御部７０は、上記の所定時間の経過を待たずに、各分割データ２１４の全てがプリンタ１００に送信されると、各分割データ２１４をデータベース９０から消去してもよい。この構成によると、データベース９０から二値データ２１２を迅速に消去することができ、データベース９０の空き容量が不足するという事象が発生するのを抑制することができる。
【００６４】
（本実施例によって実現される各ケースの内容；図５及び図６）
図５のケースＡ１は、図４のケースをテーブルで表現したものである。「回数」の欄は、プリンタ１００から送信サーバ５０への要求コマンドの送信回数を示す。「パラメータ」の欄は、図３のＳ１２で特定されるＩＤｓｔａｒｔと、Ｓ１８又はＳ２０で決定される個数Ｌと、を示す。「取得データ」の欄は、Ｓ３０でデータベース９０から取得される分割データ（即ちＶＲＡＭ７６に書き込まれる分割データ）を模式的に示す。「応答データ」の欄は、Ｓ３２でプリンタ１００に送信されるデータを模式的に示す。
【００６５】
なお、ケースＡ１以外の各ケース（例えば、図６のケースＡ３、図９のケースＢ１等）に対応する各テーブル内の各欄は、ケースＡ１のテーブル内の各欄と同様である。また、各ケースでは、１４Ｍバイトの二値データ２１２から生成される４個の分割データ２１４が、データベース９０に格納されている状況を想定している。
【００６６】
（ケースＡ１）
図４で説明したように、図５のケースＡ１では、Ｘ＝４Ｍバイトであり、Ｙ＝９Ｍバイトである。ケースＡ１では、送信サーバ５０は、１回目の要求コマンドに応じて、「ＩＤ００１」及び「ＩＤ００２」に対応する２個の分割データをＶＲＡＭ７６に書き込む（図３のＳ３０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の２個の分割データに含まれる２個の部分二値データ（即ち１バイト目〜８Ｍバイト目の部分二値データ）の全てを、プリンタ１００に送信する（Ｓ３２）。
【００６７】
送信サーバ５０は、２回目の要求コマンドに応じて、「ＩＤ００３」及び「ＩＤ００４」に対応する２個の分割データをＶＲＡＭ７６に書き込む（Ｓ３０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の２個の分割データに含まれる２個の部分二値データ（即ち８Ｍ＋１バイト目〜１４Ｍバイト目の部分二値データ）の全てを、プリンタ１００に送信する（Ｓ３２）。
【００６８】
（ケースＡ２）
図５のケースＡ２では、Ｘ＝４Ｍバイトであり、Ｙ＝１３Ｍバイトである。ケースＡ２では、送信サーバ５０は、１回目の要求コマンドを受信すると、ＩＤｓｔａｒｔとして「ＩＤ００１」を特定し（Ｓ１２）、Ｙ≧Ｘと判断し（Ｓ１４でＮＯ）、「Ｌ×Ｘ（４Ｍ）≦Ｙ（１３Ｍ）」を満たす最大の整数「３」を個数Ｌとして決定する（Ｓ２０）。従って、送信サーバ５０は、「ＩＤ００１」、「ＩＤ００２」、及び、「ＩＤ００３」に対応する３個の分割データをＶＲＡＭ７６に書き込む（Ｓ３０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の３個の分割データに含まれる３個の部分二値データ（即ち１バイト目〜１２Ｍバイト目の部分二値データ）の全てを、プリンタ１００に送信する（Ｓ３２）
【００６９】
１回目の要求コマンドに応じて１バイト目〜１２Ｍバイト目の部分がプリンタ１００に送信されているために、２回目の要求コマンドは、要求開始位置「１２Ｍ＋１バイト目」を含む。送信サーバ５０は、２回目の要求コマンドを受信すると、ＩＤｓｔａｒｔとして「ＩＤ００４」を特定し（Ｓ１２）、Ｙ≧Ｘと判断し（Ｓ１４でＮＯ）、個数Ｌとして「３」を決定する（Ｓ２０）。ただし、データベース９０には「ＩＤ００５」以降に対応する分割データが格納されていないために、送信サーバ５０は、個数Ｌが「３」であるにも関わらず、「ＩＤ００４」に対応する１個の分割データのみをＶＲＡＭ７６に書き込む（Ｓ３０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の１個の分割データに含まれる１個の部分二値データ（即ち１２Ｍ＋１バイト目〜１４Ｍバイト目の部分二値データ）の全てを、プリンタ１００に送信する（Ｓ３２）。
【００７０】
（ケースＡ３）
図６のケースＡ３では、Ｘ＝４Ｍバイトであり、Ｙ＝５Ｍバイトである。ケースＡ３では、送信サーバ５０は、１回目の要求コマンドを受信すると、ＩＤｓｔａｒｔとして「ＩＤ００１」を特定し（Ｓ１２）、Ｙ≧Ｘと判断し（Ｓ１４でＮＯ）、「Ｌ×Ｘ（４Ｍ）≦Ｙ（５Ｍ）」を満たす最大の整数「１」を個数Ｌとして決定する（Ｓ２０）。従って、送信サーバ５０は、「ＩＤ００１」に対応する１個の分割データをＶＲＡＭ７６に書き込む（Ｓ３０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の１個の分割データに含まれる１個の部分二値データ（即ち１バイト目〜４Ｍバイト目の部分二値データ）の全てを、プリンタ１００に送信する（Ｓ３２）。
【００７１】
１回目の要求コマンドに応じて１バイト目〜４Ｍバイト目の部分がプリンタ１００に送信されているために、２回目の要求コマンドは、要求開始位置「４Ｍ＋１バイト目」を含む。送信サーバ５０は、２回目の要求コマンドを受信すると、ＩＤｓｔａｒｔとして「ＩＤ００２」を特定し（Ｓ１２）、Ｙ≧Ｘと判断し（Ｓ１４でＮＯ）、個数Ｌとして「１」を決定する（Ｓ２０）。従って、送信サーバ５０は、「ＩＤ００２」に対応する１個の分割データをＶＲＡＭ７６に書き込む（Ｓ３０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の１個の分割データに含まれる１個の部分二値データ（即ち４Ｍ＋１バイト目〜８Ｍバイト目の部分二値データ）の全てを、プリンタ１００に送信する（Ｓ３２）。
【００７２】
３回目以降の要求コマンドが受信される場合については、１回目及び２回目の要求コマンドが受信される場合と同様である。ケースＡ３では、送信サーバ５０は、４個の要求コマンドに応じて、二値データ２１２の全てをプリンタ１００に送信することができる。
【００７３】
（ケースＡ４）
図６のケースＡ４では、Ｘ＝４Ｍバイトであり、Ｙ＝３Ｍバイトである。ケースＡ４では、送信サーバ５０は、１回目の要求コマンドを受信すると、ＩＤｓｔａｒｔとして「ＩＤ００１」を特定し（Ｓ１２）、Ｙ＜Ｘと判断し（Ｓ１４でＹＥＳ）、個数Ｌとして「１」を決定する（Ｓ１８）。従って、送信サーバ５０は、「ＩＤ００１」に対応する１個の分割データをＶＲＡＭ７６に書き込む（Ｓ３０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の１個の分割データに含まれる１個の部分二値データ（即ち１バイト目〜４Ｍバイト目の部分二値データ）のうち、要求開始位置「１バイト目」から、Ｙを超えない位置「３Ｍバイト目」まで（即ち１バイト目〜３Ｍバイト目の部分のみ）を、プリンタ１００に送信する（Ｓ３２）。
【００７４】
１回目の要求コマンドに応じて１バイト目〜３Ｍバイト目の部分がプリンタ１００に送信されているために、２回目の要求コマンドは、要求開始位置「３Ｍ＋１バイト目」を含む。送信サーバ５０は、２回目の要求コマンドを受信すると、ＩＤｓｔａｒｔとして「ＩＤ００１」を特定し（Ｓ１２）、Ｙ≧Ｘと判断し（Ｓ１４でＹＥＳ）、個数Ｌとして「１」を決定する（Ｓ１８）。従って、送信サーバ５０は、「ＩＤ００１」に対応する１個の分割データをＶＲＡＭ７６に再び書き込む（Ｓ３０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の１個の分割データに含まれる１個の部分二値データ（即ち１バイト目〜４Ｍバイト目の部分二値データ）のうち、要求開始位置「３Ｍ＋１バイト目」から、Ｙを超えない位置（即ち当該部分二値データの終端位置）「４Ｍバイト目」まで（即ち３Ｍ＋１バイト目〜４Ｍバイト目の部分のみ）を、プリンタ１００に送信する（Ｓ３２）。
【００７５】
３回目以降の要求コマンドが受信される場合については、１回目及び２回目の要求コマンドが受信される場合と同様である。ケースＡ４では、送信サーバ５０は、７個の要求コマンドに応じて、二値データ２１２の全てをプリンタ１００に送信することができる。
【００７６】
（本実施例の効果）
例えば、図７の比較例の構成を採用することを想定する。比較例の構成では、１４Ｍバイトの二値データ２１２が、分割されていない状態で、データベース９０に格納されている。即ち、データベース９０内の二値データ２１２は、複数個の開始データ及び複数個のＩＤによって区別可能な複数個の分割データではない。この場合、送信サーバ５０は、二値データ２１２の一部のみをデータベース９０から取得して、当該一部のみをＶＲＡＭ７６に書き込むことができない。即ち、送信サーバ５０は、二値データ２１２の全てをデータベース９０から取得して、二値データ２１２の全てをＶＲＡＭ７６に書き込むことしかができない。
【００７７】
例えば、図６のケースＡ３と同様に、プリンタ１００からの要求データサイズＹが「５Ｍバイト」であるケースを想定する。送信サーバ５０は、要求開始位置「１バイト目」及び要求データサイズ「５Ｍバイト」を含む１回目の要求コマンドを受信すると、１４Ｍバイトの二値データ２１２の全てをＶＲＡＭ７６に書き込む。そして、送信サーバ５０は、ＶＲＡＭ７６内の１４Ｍバイトの二値データ２１２のうち、要求データサイズ「５Ｍ」を超えない範囲である１バイト目〜５Ｍバイト目の部分を、プリンタ１００に送信する。次いで、送信サーバ５０は、二値データ２１２をＶＲＡＭ７６から消去する。
【００７８】
同様に、送信サーバ５０は、２回目の要求コマンドを受信すると、１４Ｍバイトの二値データ２１２の全てをＶＲＡＭ７６に再び書き込み、５Ｍ＋１バイト目〜１０Ｍバイト目の部分をプリンタ１００に送信する。送信サーバ５０は、３回目の要求コマンドを受信すると、１４Ｍバイトの二値データ２１２の全てをＶＲＡＭ７６に再び書き込み、１０Ｍ＋１バイト目〜１４Ｍバイト目の部分をプリンタ１００に送信する。
【００７９】
このように、比較例の構成によると、送信サーバ５０は、１個の要求コマンドを受信する毎に、１４Ｍバイトの二値データ２１２の全てをＶＲＡＭ７６に書き込まなければならず、この結果、ＶＲＡＭ７６のリソースが大きく消費されてしまう。例えば、二値データ２１２のデータサイズが膨大であれば、ＶＲＡＭ７６内の膨大な容量が消費されることになる。そのような状況では、例えば、送信サーバ５０が、プリンタ１００とは異なる他のプリンタから要求コマンドを受信する場合に、当該要求コマンドに対応する二値データをＶＲＡＭ７６に書き込むことができず、この結果、二値データを当該他のプリンタに送信することができないという事象が発生し得る。
【００８０】
これに対し、本実施例では、１４Ｍバイトの二値データ２１２が４個の分割データに分割された状態で、データベース９０に格納されている。例えば、図６のケースＡ３に示されるように、比較例と同じ要求データサイズ「５Ｍバイト」を含む要求コマンドが受信される場合に、送信サーバ５０は、１４Ｍバイトの二値データ２１２の全てをＶＲＡＭ７６に書き込なくて済み、１個の分割データをＶＲＡＭ７６に書き込めば足りる。このために、ＶＲＡＭ７６のリソースが大きく消費されるのを抑制することができる。本実施例によると、送信サーバ５０は、比較例と比べて、ＶＲＡＭ７６に書き込まれるべきデータ量を低減しながら、二値データ２１２をプリンタ１００に適切に供給することができる。この結果、比較例で発生し得る上記の事象が発生するのを適切に抑制することができる。
【００８１】
なお、例えば、図７の比較例によると、送信サーバ５０は、３個の要求コマンドに応じて、二値データ２１２の全てをプリンタ１００に供給することができる。これに対し、例えば、本実施例の図６のケースＡ３では、送信サーバ５０は、４個の要求コマンドに応じて、二値データ２１２の全てをプリンタ１００に供給することができる。従って、本実施例では、比較例と比べると、プリンタ１００から送信サーバ５０に送信される要求コマンドの個数が多くなり得る。このために、本実施例では、比較例と比べると、プリンタ１００が、１個目の要求コマンドを送信してから、二値データ２１２の全てに従って印刷を終了するまでの印刷時間が長くなるように見えるかもしれない。
【００８２】
しかしながら、本実施例と比較例との間では、プリンタ１００と送信サーバ５０との間で通信される合計のデータ量は変わらない。従って、本実施例と比較例との間では、データの通信時間は変わらない。また、比較例によると、送信サーバ５０が、１個の要求コマンドを受信する毎に、二値データ２１２の全てをＶＲＡＭ７６に書き込まなければならないので、書き込み時間が比較的に長くなる。これに対し、本実施例では、送信サーバ５０は、１個の要求コマンドを受信する毎に、二値データ２１２の一部をＶＲＡＭ７６に書き込めば済むために、書き込み時間が比較的に短くて済む。このために、本実施例によると、送信サーバ５０は、比較例と比べて、プリンタ１００に二値データ２１２の全てを迅速に供給し得る。この結果、印刷時間を短縮し得る。
【００８３】
また、本実施例では、図５のケースＡ１、ケースＡ２、及び、図６のケースＡ３に示されるように、Ｙ≧Ｘである場合には、Ｙ以下のデータサイズを有するＬ個の部分二値データが、ＶＲＡＭ７６に書き込まれ、ＶＲＡＭ７６内のＬ個の部分二値データの全てが、プリンタ１００に送信される。即ち、ＶＲＡＭ７６に書き込まれる部分二値データのデータサイズと、プリンタ１００に送信される部分二値データのデータサイズと、が一致する。従って、Ｙ≧Ｘである場合には、プリンタ１００に送信されない部分がＶＲＡＭ７６に書き込まれることがないために、ＶＲＡＭ７６を効率的に利用していると言える。本実施例によると、送信サーバ５０は、ＶＲＡＭ７６を効率的に利用しながら、二値データ２１２をプリンタ１００に供給することができる。
【００８４】
なお、図６のケースＡ４に示されるように、Ｙ＜Ｘである場合には、Ｙ（即ち３Ｍバイト）よりも大きいデータサイズ（即ち４Ｍバイト）を有する１個の部分二値データが、ＶＲＡＭ７６に書き込まれる。即ち、ＶＲＡＭ７６に書き込まれる部分二値データのデータサイズ（即ち４Ｍバイト）は、プリンタ１００に送信される部分二値データのデータサイズ（即ち３Ｍバイト）よりも大きくなる。従って、Ｙ＜Ｘである場合には、プリンタ１００に送信されない部分がＶＲＡＭ７６に書き込まれることになる。
【００８５】
ただし、本実施例では、例えば、２個目の要求コマンドが受信される場合でも、「ＩＤ００１」に対応する１個の部分二値データのみがＶＲＡＭ７６に書き込まれ、３Ｍ＋１バイト目〜４Ｍバイト目の部分がプリンタ１００に送信される。即ち、この場合、ＶＲＡＭ７６に書き込まれる部分二値データのうち、プリンタ１００に送信されない部分（即ち１バイト目〜３Ｍバイト目の部分）のデータサイズは、３Ｍバイトである。これに代えて、例えば、２個目の要求コマンドが受信される場合に、「ＩＤ００１」及び「ＩＤ００２」に対応する２個の部分二値データがＶＲＡＭ７６に書き込まれ、３Ｍ＋１バイト目〜６Ｍバイト目の部分がプリンタ１００に送信される構成（後述の第２実施例の図１０のケースＢ３参照）を採用することが考えられる。しかしながら、このような構成を採用すると、２個目の要求コマンドに応じてＶＲＡＭ７６に書き込まれる部分二値データのうち、プリンタ１００に送信されない部分（１バイト目〜３Ｍバイト目の部分、及び、６Ｍ＋１バイト目〜８Ｍバイト目の部分）のデータサイズは、５Ｍバイトである。即ち、このような構成を採用すると、本実施例と比べて、ＶＲＡＭ７６に書き込まれる部分二値データのうち、プリンタ１００に送信されない部分のデータサイズが大きくなり得る。
【００８６】
本実施例では、Ｙ＜Ｘである場合に、常に１個の部分二値データのみがＶＲＡＭ７６に書き込まれる構成を採用しているために、ＶＲＡＭ７６に書き込まれる部分二値データのうち、プリンタ１００に送信されない部分のデータサイズを小さくし得る。このような観点においても、本実施例の送信サーバ５０は、ＶＲＡＭ７６を効率的に利用しながら、二値データ２１２をプリンタ１００に供給することができる。
【００８７】
（対応関係）
送信サーバ５０、変換サーバ１０、プリンタ１００が、それぞれ、「第１のサーバ」、「第２のサーバ」、「外部装置」の一例である。データベース９０、ＶＲＡＭ７６が、それぞれ、「外部記憶装置」、「内部記憶装置」の一例である。ＰＤＦデータ２１０、二値データ２１２が、それぞれ、「対象データ」、「変換済みデータ」の一例である。４個の分割データ（ＤＤ）２１４に含まれる４個の部分二値データ（ＰＢＤ）が、「Ｐ個の部分データ」の一例である。分割の単位の値Ｘ（即ち４Ｍバイト）、要求データサイズＹが、それぞれ、「所定のデータサイズ」、「サイズ情報」の一例である。
【００８８】
例えば、図５のケースＡ１では、Ｙ＝９Ｍバイト、Ｌ＝２が、それぞれ、「第１のデータサイズ」、「Ｎ１」の一例である。１個目の要求コマンド、２個目の要求コマンドが、それぞれ、「第１の要求コマンド」、「第２の要求コマンド」の一例である。「ＩＤ００１」及び「ＩＤ００２」に対応する２個の分割データに含まれる２個の部分二値データが、「第１グループのＮ１個の未送信部分データ」の一例である。また、「ＩＤ００３」及び「ＩＤ００４」に対応する２個の分割データに含まれる２個の部分二値データが、「第２グループのＮ１個の未送信部分データ」の一例である。
【００８９】
例えば、図６のケースＡ４では、Ｙ＝３Ｍバイトが、「第３のデータサイズ」の一例である。１個目の要求コマンド、２個目の要求コマンドが、それぞれ、「第５の要求コマンド」、「第６の要求コマンド」の一例である。「ＩＤ００１」に対応する１個の分割データに含まれる１個の部分二値データが、「第１の未送信部分データ」の一例である。１個目の要求コマンドに応じて送信される１バイト目〜３Ｍバイト目の部分、２個目の要求コマンドに応じて送信される３Ｍ＋１バイト目〜４Ｍバイト目の部分が、それぞれ、「第３の部分」、「第４の部分」の一例である。
【００９０】
（第２実施例）
上述したように、第１実施例では、ＶＲＡＭ７６を効率的に利用するという観点に基づいて、以下の（１）及び（２）の処理が実行される。（１）Ｙ≧Ｘである場合（即ち図３のＳ１４でＮＯの場合）に、Ｙ以下のデータサイズを有するＬ個の部分二値データが、ＶＲＡＭ７６に書き込まれる（即ちＳ２０を経たＳ３０）。（２）Ｙ＜Ｘである場合（即ちＳ１４でＹＥＳの場合）に、常に１個の部分二値データのみがＶＲＡＭ７６に書き込まれる（即ちＳ１８を経たＳ３０）。
【００９１】
これに対し、本実施例では、プリンタ１００によって指定される要求データサイズＹに一致するデータサイズを有する部分をプリンタ１００に送信するという観点に基づいて、以下の（３）及び（４）の処理が実行される。（３）Ｙ≧Ｘである場合（後述の図８のＳ５４でＮＯの場合）に、Ｙよりも大きいデータサイズを有するＬ個の部分二値データが、ＶＲＡＭ７６に書き込まれ得る（即ちＳ６４を経たＳ７０）。（４）Ｙ＜Ｘである場合（即ちＳ５４でＹＥＳの場合）に、２個の部分二値データがＶＲＡＭ７６に書き込まれ得る（即ちＳ６２を経たＳ７０）。
【００９２】
（送信サーバ５０の応答処理；図８）
本実施例では、送信サーバ５０の制御部７０は、図３の応答処理の代わりに、図８の応答処理を実行する。Ｓ５０〜Ｓ５４は、図３のＳ１０〜Ｓ１４と同様である。Ｓ５４でＹＥＳの場合（即ちＹ＜Ｘの場合）には、Ｓ５８に進み、Ｓ５４でＮＯの場合（即ちＹ≧Ｘの場合）には、Ｓ６４に進む。
【００９３】
Ｓ５８では、決定部８４は、まず、ＩＤｓｔａｒｔに対応する１個の分割データが、４Ｍバイト（即ちＸ）の部分二値データ（以下では「特定の部分二値データ」と呼ぶ）を含む、と仮定する。例えば、ＩＤｓｔａｒｔが「ＩＤ００１」である場合には、決定部８４は、特定の部分二値データの始端位置が１バイト目であり、特定の部分二値データの終端位置が４Ｍバイト目である、と仮定する。このような仮定を行なうのは、以下の理由による。上述したように、データベース９０に格納されるＰ個の分割データ２１４では、１個目の分割データからＰ−１個目の分割データまでに含まれるＰ−１個の部分二値データのそれぞれは、分割の単位の値Ｘに一致するデータサイズ（即ち４Ｍバイト）を有する。ただし、Ｐ個目の分割データ（即ち最大のＩＤに対応する１個の分割データ）に含まれる部分二値データは、Ｘ未満のデータサイズを有し得る。そして、決定部８４は、Ｐ個目の分割データがＶＲＡＭ７６に存在しない状態（即ちＳ５８の段階）では、Ｐ個目の分割データに含まれる部分二値データのデータサイズを知り得ない。従って、ＩＤｓｔａｒｔに対応する１個の分割データがＰ個目の分割データである場合には、Ｐ個目の分割データに含まれる特定の部分二値データの実際のデータサイズが４Ｍバイト未満であり得るが、決定部８４は、当該特定の部分二値データのデータサイズを「４Ｍバイト」に仮定して、以降の各処理を実行する。
【００９４】
次いで、決定部８４は、特定の部分二値データの要求開始位置から、特定の部分二値データの終端位置（例えば上記の例では４Ｍバイト目）までのデータサイズが、要求データサイズＹ以上であるのか否かを判断する。
【００９５】
例えば、要求開始位置が「１バイト目」であり、Ｙ＝３Ｍバイトであることを想定する。この場合、特定の部分二値データ（即ち１バイト目〜４Ｍバイト目）の要求開始位置「１バイト目」から、特定の部分二値データの終端位置「４Ｍバイト目」までのデータサイズ「４Ｍバイト」が、Ｙ（即ち３Ｍバイト）よりも大きいために、決定部８４は、Ｓ５８でＹＥＳと判断して、Ｓ６０に進む。
【００９６】
Ｓ５８でＹＥＳと判断されるということは、ＩＤｓｔａｒｔに対応する１個の分割データに含まれる特定の部分二値データのうち、プリンタ１００に未だに送信されていない未送信部分のデータサイズが、Ｙ以上であることを意味する。従って、ＩＤｓｔａｒｔに対応する１個の分割データをＶＲＡＭ７６に書き込めば、Ｙに一致するデータサイズを有する未送信部分をプリンタ１００に送信し得る。このために、Ｓ５８でＹＥＳの場合には、Ｓ６０において、決定部８４は、データベース９０から取得すべき分割データの個数Ｌとして、「１」を決定する。
【００９７】
また、例えば、要求開始位置が「３Ｍ＋１バイト目」であり、Ｙ＝３Ｍバイトであることを想定する。この場合、特定の部分二値データ（即ち１バイト目〜４Ｍバイト目）の要求開始位置「３Ｍ＋１バイト目」から、特定の部分二値データの終端位置「４Ｍバイト目」までのデータサイズ「１Ｍバイト」が、Ｙ（即ち３Ｍバイト）よりも小さいために、決定部８４は、Ｓ５８でＮＯと判断して、Ｓ６２に進む。
【００９８】
Ｓ５８でＮＯと判断されるということは、ＩＤｓｔａｒｔに対応する１個の分割データに含まれる特定の部分二値データのうち、プリンタ１００に未だに送信されていない未送信部分のデータサイズが、要求データサイズＹ未満であることを意味する。従って、ＩＤｓｔａｒｔに対応する１個の分割データをＶＲＡＭ７６に書き込んでも、Ｙに一致するデータサイズを有する未送信部分をプリンタ１００に送信することができない。Ｙに一致するデータサイズを有する未送信部分をプリンタ１００に送信するためには、ＩＤｓｔａｒｔに対応する１個の分割データのみならず、ＩＤｓｔａｒｔの次のＩＤに対応する１個の分割データも、ＶＲＡＭ７６に書き込まなければならない。このために、Ｓ５８でＮＯの場合には、Ｓ６２において、決定部８４は、データベース９０から取得すべき分割データの個数Ｌとして、「２」を決定する。
【００９９】
一方において、Ｓ６４では、決定部８４は、（Ｌ−１）とＸの乗算値がＹ未満になる関係（即ち（Ｌ−１）×Ｘ＜Ｙ）を満たす最大の整数を個数Ｌとして決定する。例えば、Ｘ＝４Ｍバイトであり、Ｙ＝９Ｍバイトである場合には、Ｌは「３」である。この結果、後述のＳ７０において、３個の分割データがＶＲＡＭ７６に書き込まれ得るので、Ｙ（即ち９Ｍバイト）よりも大きいデータサイズ（即ち１２Ｍバイト）を有する３個の部分二値データがＶＲＡＭ７６に書き込まれ得る。このために、Ｙに一致するデータサイズを有する未送信部分をプリンタ１００に送信し得る。
【０１００】
Ｓ６０〜Ｓ６４のいずれかが実行されると、Ｓ７０に進む。Ｓ７０〜Ｓ７４は、図３のＳ３０〜Ｓ３４と同様である。Ｓ７４が終了すると、Ｓ５０に戻る。
【０１０１】
（本実施例によって実現される各ケースの内容；図９及び図１０）
図９のケースＢ１では、Ｘ＝４Ｍバイトであり、Ｙ＝９Ｍバイトである。ケースＢ１では、送信サーバ５０は、１回目の要求コマンドを受信すると、ＩＤｓｔａｒｔとして「ＩＤ００１」を特定し（図８のＳ５２）、Ｙ≧Ｘと判断し（Ｓ５４でＮＯ）、「（Ｌ−１）×Ｘ（４Ｍ）≦Ｙ（９Ｍ）」を満たす最大の整数「３」を個数Ｌとして決定する（Ｓ６４）。従って、送信サーバ５０は、「ＩＤ００１」、「ＩＤ００２」、及び、「ＩＤ００３」に対応する３個の分割データをＶＲＡＭ７６に書き込む（Ｓ７０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の３個の分割データに含まれる３個の部分二値データ（即ち１バイト目〜１２Ｍバイト目の部分二値データ）のうち、要求開始位置「１バイト目」から、Ｙを超えない位置「９Ｍバイト目」まで（即ち１バイト目〜９Ｍバイト目の部分のみ）を、プリンタ１００に送信する（Ｓ７２）。
【０１０２】
１回目の要求コマンドに応じて１バイト目〜９Ｍバイト目の部分がプリンタ１００に送信されているために、２回目の要求コマンドは、要求開始位置「９Ｍ＋１バイト目」を含む。送信サーバ５０は、２回目の要求コマンドを受信すると、ＩＤｓｔａｒｔとして「ＩＤ００３」を特定し（Ｓ５２）、Ｙ≧Ｘと判断し（Ｓ５４でＮＯ）、個数Ｌとして「３」を決定する（Ｓ６４）。ただし、データベース９０には「ＩＤ００５」以降に対応する分割データが格納されていないために、送信サーバ５０は、個数Ｌが「３」であるにも関わらず、「ＩＤ００３」及び「ＩＤ００４」に対応する２個の分割データのみをＶＲＡＭ７６に書き込む（Ｓ７０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の２個の分割データに含まれる２個の部分二値データ（即ち８Ｍ＋１バイト目〜１４Ｍバイト目の部分二値データ）のうち、要求開始位置「９Ｍ＋１バイト目」から、Ｙを超えない位置（即ち当該部分二値データの終端位置）「１４Ｍバイト目」まで（即ち９Ｍ＋１バイト目〜１４Ｍバイト目の部分のみ）を、プリンタ１００に送信する（Ｓ７２）。
【０１０３】
（ケースＢ２）
図１０のケースＢ２では、Ｘ＝４Ｍバイトであり、Ｙ＝５Ｍバイトである。ケースＢ２では、送信サーバ５０は、１回目の要求コマンドを受信すると、ＩＤｓｔａｒｔとして「ＩＤ００１」を特定し（Ｓ５２）、Ｙ≧Ｘと判断し（Ｓ５４でＮＯ）、「（Ｌ−１）×Ｘ（４Ｍ）≦Ｙ（５Ｍ）」を満たす最大の整数「２」を個数Ｌとして決定する（Ｓ６４）。従って、送信サーバ５０は、「ＩＤ００１」及び「ＩＤ００２」に対応する２個の分割データをＶＲＡＭ７６に書き込む（Ｓ７０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の２個の分割データに含まれる２個の部分二値データ（即ち１バイト目〜８Ｍバイト目の部分二値データ）のうち、要求開始位置「１バイト目」から、Ｙを超えない位置「５Ｍバイト目」まで（即ち１バイト目〜５Ｍバイト目の部分のみ）を、プリンタ１００に送信する（Ｓ７２）。
【０１０４】
２回目以降の要求コマンドが受信される場合については、１回目の要求コマンドが受信される場合と同様である。ケースＢ２では、送信サーバ５０は、３個の要求コマンドに応じて、二値データ２１２の全てをプリンタ１００に送信することができる。
【０１０５】
（ケースＢ３）
図１０のケースＢ３では、Ｘ＝４Ｍバイトであり、Ｙ＝３Ｍバイトである。ケースＢ３では、送信サーバ５０は、１回目の要求コマンドを受信すると、ＩＤｓｔａｒｔとして「ＩＤ００１」を特定し（Ｓ５２）、Ｙ＜Ｘと判断する（Ｓ５４でＹＥＳ）。そして、送信サーバ５０は、要求開始位置「１バイト目」から特定の部分二値データ（即ち、「ＩＤ００１」に対応する分割データに含まれる部分二値データ）の終端位置「４Ｍバイト目」までのデータサイズ（即ち４Ｍバイト）が、Ｙ（即ち３Ｍバイト）よりも大きいと判断し（Ｓ５８でＹＥＳ）、個数Ｌとして「１」を決定する（Ｓ６０）。従って、送信サーバ５０は、「ＩＤ００１」に対応する１個の分割データをＶＲＡＭ７６に書き込む（Ｓ７０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の１個の分割データに含まれる１個の部分二値データ（即ち１バイト目〜４Ｍバイト目の部分二値データ）のうち、要求開始位置「１バイト目」から、Ｙを超えない位置「３Ｍバイト目」まで（即ち１バイト目〜３Ｍバイト目の部分のみ）を、プリンタ１００に送信する（Ｓ７２）。
【０１０６】
１回目の要求コマンドに応じて１バイト目〜３Ｍバイト目の部分がプリンタ１００に送信されているために、２回目の要求コマンドは、要求開始位置「３Ｍ＋１バイト目」を含む。送信サーバ５０は、２回目の要求コマンドを受信すると、ＩＤｓｔａｒｔとして「ＩＤ００１」を特定し（Ｓ５２）、Ｙ＜Ｘと判断する（Ｓ５４でＹＥＳ）。そして、送信サーバ５０は、要求開始位置「３Ｍ＋１バイト目」から特定の部分二値データの終端位置「４Ｍバイト目」までのデータサイズ（即ち１Ｍバイト）が、Ｙ（即ち３Ｍバイト）未満であると判断し（Ｓ５８でＮＯ）、個数Ｌとして「２」を決定する（Ｓ６０）。従って、送信サーバ５０は、「ＩＤ００１」及び「ＩＤ００２」に対応する２個の分割データをＶＲＡＭ７６に書き込む（Ｓ７０）。そして、送信サーバ５０は、ＶＲＡＭ７６内の２個の分割データに含まれる２個の部分二値データ（即ち１バイト目〜８Ｍバイト目の部分二値データ）のうち、要求開始位置「３Ｍ＋１バイト目」から、Ｙを超えない位置「６Ｍバイト目」まで（即ち３Ｍ＋１バイト目〜６Ｍバイト目の部分のみ）を、プリンタ１００に送信する（Ｓ７２）。
【０１０７】
３回目以降の要求コマンドが受信される場合については、１回目及び２回目の要求コマンドが受信される場合と同様である。ケースＢ３では、送信サーバ５０は、５個の要求コマンドに応じて、二値データ２１２の全てをプリンタ１００に送信することができる。
【０１０８】
（本実施例の効果）
本実施例でも、送信サーバ５０は、図７の比較例と比べて、ＶＲＡＭ７６に書き込まれるべきデータ量を低減しながら、二値データ２１２をプリンタ１００に適切に供給することができる。
【０１０９】
なお、例えば、プリンタ１００は、プリンタ１００のメモリの空き容量のみに基づいて要求データサイズＹを決定するのではなく、印刷を実行するのに適したデータサイズ（例えばいわゆる１バンド分のデータサイズ）という観点を考慮してＹを決定し得る。このような実情に鑑みて、本実施例では、例えば、図９のケースＢ１の１個目の要求コマンドが受信される状況に示されるように、Ｙ≧Ｘである場合に、送信サーバ５０は、Ｙ（即ち９Ｍバイト）に一致するデータサイズを有する部分を、プリンタ１００に供給することができる。この点は、図１０のケースＢ２の１個目及び２個目の要求コマンドが受信される場合も同様である。このために、送信サーバ５０は、プリンタ１００が印刷を実行するのに適したデータサイズを有する部分を、プリンタ１００に供給し得る。
【０１１０】
また、図１０のケースＢ３の１個目〜４個目の要求コマンドが受信される状況に示されるように、Ｙ＜Ｘである場合に、送信サーバ５０は、Ｙ（即ち３Ｍバイト）に一致するデータサイズを有する部分を、プリンタ１００に供給することができる。このために、送信サーバ５０は、プリンタ１００が印刷を実行するのに適したデータサイズを有する部分を、プリンタ１００に供給し得る。
【０１１１】
（対応関係）
例えば、図１０のケースＢ２では、Ｙ＝５Ｍバイト、Ｌ＝２が、それぞれ、「第２のデータサイズ」、「Ｎ２」の一例である。１個目の要求コマンド、２個目の要求コマンドが、それぞれ、「第３の要求コマンド」、「第４の要求コマンド」の一例である。「ＩＤ００１」及び「ＩＤ００２」に対応する２個の分割データに含まれる２個の部分二値データ、当該２個の部分二値データのうちの１バイト目〜５Ｍバイト目の部分が、それぞれ、「第３グループのＮ２個の未送信部分データ」、「第１の部分」の一例である。「ＩＤ００２」及び「ＩＤ００３」に対応する２個の分割データに含まれる２個の部分二値データ、当該２個の部分二値データのうちの５Ｍ＋１バイト目〜１０Ｍバイト目の部分が、それぞれ、「第４グループのＮ２個の未送信部分データ」、「第２の部分」の一例である。
【０１１２】
例えば、図１０のケースＢ３では、Ｙ＝３Ｍバイトが、「第３のデータサイズ」の一例である。１個目の要求コマンド、２個目の要求コマンドが、それぞれ、「第５の要求コマンド」、「第７の要求コマンド」の一例である。「ＩＤ００１」に対応する１個の分割データに含まれる１個の部分二値データ、「ＩＤ００２」に対応する１個の分割データに含まれる１個の部分二値データが、それぞれ、「第１の未送信部分データ」、「第２の未送信部分データ」の一例である。１個目の要求コマンドに応じて送信される１バイト目〜３Ｍバイト目の部分、２個目の要求コマンドに応じて送信される３Ｍ＋１バイト目〜６Ｍバイト目の部分が、それぞれ、「第３の部分」、「第５の部分」の一例である。
【０１１３】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。例えば、以下の変形例が含まれる。
【０１１４】
（変形例１）「外部記憶装置」は、データベース９０と呼ばれるものなくてもよく、ハードディスクであってもよいし、送信サーバ５０に装着されるＵＳＢメモリ、ＣＤ、ＤＶＤ、フロッピーディスク（登録商標）等のメディアであってもよい。また、「外部記憶装置」は、送信サーバ５０内に設けられていなくてもよく、送信サーバ５０とは別体に構成されている他の機器内に設けられていてもよい。
【０１１５】
（変形例２）「内部記憶装置」は、ＶＲＡＭ７６でなくてもよく、ＮＶＲＡＭ（Non-Volatile RAMの略）であってもよいし、ＤＲＡＭ（Dynamic RAMの略）、ＳＲＡＭ（Static RAMの略）であってもよい。
【０１１６】
（変形例３）上記の実施例では、変換サーバ１０と送信サーバ５０とが別体に構成されている。しかしながら、変換サーバ１０と送信サーバ５０とは一体に構成されていてもよい。本変形例では、一体に構成されている２個のサーバ１０，５０が、「サーバシステム」の一例である。
【０１１７】
（変形例４）「対象データ」は、ＰＤＦデータでなくてもよく、例えば、ＪＰＥＧデータ、ＴＩＦＦデータ、文書作成アプリケーションによって生成されるデータ、表計算アプリケーションによって生成されるデータ等であってもよい。即ち、「対象データ」は、変換対象のデータであれば、どのような形式のデータであってもよい。
【０１１８】
（変形例５）「変換済みデータ」は、二値データでなくてもよく、例えば、三値以上のデータ（例えば、ドットＯＦＦ、小ドット、中ドット、及び、大ドットを示す四値のデータ）であってもよい。また、「変換済みデータ」は、プリンタ１００が解釈可能なＪＰＥＧデータであってもよい。即ち、「変換済みデータ」は、対象データの変換によって生成されるデータであれば、どのような形式のデータであってもよい。
【０１１９】
（変形例６）上記の実施例では、プリンタ１００は、１個目の要求コマンドを送信サーバ５０に送信すべき際に、要求データサイズＹを決定すると、２個目以降の要求コマンドを送信サーバ５０に送信すべき際にも、同じ要求データサイズＹを利用する。これに代えて、プリンタ１００は、１個の要求コマンドを送信すべき毎に、メモリの空き容量に基づいて、Ｙを決定してもよい。例えば、プリンタ１００は、１個目の要求コマンドを送信すべき際に、要求データサイズ「９Ｍバイト」を決定し、２個目の要求コマンドを送信すべき際に、「９Ｍバイト」とは異なる要求データサイズ（例えば「８Ｍバイト」）を決定してもよい。本変形例でも、図３又は図８の応答処理において、送信サーバ５０の決定部８４は、要求コマンドに含まれるＹに応じて、個数Ｌを適切に決定することができる。即ち、「決定部」は、１個の要求コマンドが受信される毎に、当該要求コマンドに含まれるサイズ情報と、所定のデータサイズと、を用いて、内部記憶装置に書き込まれるべき部分データの個数を決定すればよい。
【０１２０】
（変形例７）例えば、プリンタ１００から送信サーバ５０に送信される複数個の要求コマンドのそれぞれは、要求データサイズＹを含んでいなくてもよい。即ち、複数個の要求コマンドのそれぞれは、「サイズ情報」を含んでいなくてもよい。本変形例では、送信サーバ５０の決定部８４は、プリンタ１００から１個の要求コマンドを受信する毎に、ＩＤｓｔａｒｔを特定し、さらに、個数Ｌとして「１」を常に決定してもよい。そして、書込部８６は、複数個の分割データ２１４のうち、ＩＤＳｔａｒｔに対応する１個の分割データのみをデータベース９０から取得して、当該１個の分割データをＶＲＡＭ７６に書き込んでもよい。送信部８８は、ＶＲＡＭ７６内の１個の分割データに含まれる１個の部分二値データの全てをプリンタ１００に送信してもよい。本変形例でも、送信サーバ５０は、ＶＲＡＭ７６に書き込まれるデータ量を低減しながら、二値データ２１２をプリンタ１００に供給することができる。
【０１２１】
（変形例８）例えば、プリンタ１００から送信サーバ５０に送信される複数個の要求コマンドのそれぞれは、要求開始位置を含んでいなくてもよい。本変形例では、送信サーバ５０は、プリンタ１００に既に送信されたデータサイズを管理してもよい。例えば、図５のケースＡ１において、送信サーバ５０の送信部８８は、１回目の要求コマンドが受信される場合には、プリンタ１００に既に送信されたデータサイズがゼロであるために、１バイト目〜８Ｍバイト目の部分をプリンタ１００に送信する。この際に、送信サーバ５０の制御部７０は、プリンタ１００に既に送信されたデータサイズとして「８Ｍバイト」を記憶する（即ち管理する）。送信部８８は、２回目の要求コマンドが受信される場合には、プリンタ１００に既に送信されたデータサイズが「８Ｍバイト」であるために、８Ｍ＋１バイト目〜１４Ｍバイト目の部分をプリンタ１００に送信する。即ち、要求開始位置を管理する主体は、実施例のように、プリンタ１００であってもよいし、本変形例のように、送信サーバ５０であってもよい。
【０１２２】
（変形例９）「外部装置」は、プリンタ１００に限られず、スキャナ、複合機、ＦＡＸ装置、ＰＣ、サーバ、携帯端末等の他の種類の装置であってもよい。
【０１２３】
（変形例１０）上記の各実施例では、変換サーバ１０及び送信サーバ５０のＣＰＵ３２，７２がソフトウェアに従って処理を実行することによって、各部４０，４２，８０〜８８の機能が実現される。これに代えて、各部４０，４２，８０〜８８の機能のうちの少なくとも一部は、論理回路等のハードウェアによって実現されてもよい。
【０１２４】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【０１２５】
２：通信システム、４：インターネット、１０：変換サーバ、５０：送信サーバ、９０：データベース、１００：プリンタ、１１０：携帯端末、２００：ＪＰＥＧデータ、２０２：二値データ、２１０：ＰＤＦデータ、２１２：二値データ、２１４：複数個の分割データ
【図１】
2014106923.tif 000003
【図２】
2014106923.tif 000004
【図３】
2014106923.tif 000005
【図４】
2014106923.tif 000006
【図５】
2014106923.tif 000007
【図６】
2014106923.tif 000008
【図７】
2014106923.tif 000009
【図８】
2014106923.tif 000010
【図９】
2014106923.tif 000011
【図１０】
2014106923.tif 000012