(57)【特許請求の範囲】
【請求項１】
スキャナであって、
スキャン実行部と、
通信インターフェイスと、
内部メモリと、
制御部と、を備え、
前記制御部は、
対象送信先デバイスを示す対象送信先情報を取得する送信先情報取得部と、
前記スキャン実行部が１枚の原稿のスキャンを実行することによって得られるスキャン結果を利用して画像ファイルを生成する生成部と、
前記通信インターフェイスを介して、前記画像ファイルを前記対象送信先情報によって示される前記対象送信先デバイスに送信する通信実行部であって、前記画像ファイルは、ヘッダ部と、前記ヘッダ部の後に送信されるスキャンデータであって、前記１枚の原稿を表わす前記スキャンデータと、前記スキャンデータの後に送信されるフッタ部と、を含む、前記通信実行部と、
前記１枚の原稿のスキャンを実行するためのスキャン解像度を示す解像度情報を取得する解像度情報取得部と、
前記１枚の原稿のサイズを示す原稿サイズ情報を取得する原稿サイズ情報取得部と、
前記画像ファイルが生成される前に、前記解像度情報と前記原稿サイズ情報とを利用して、前記スキャンデータの推測データサイズを算出する算出部と、
前記スキャンデータを記憶するための前記内部メモリ内の記憶領域のメモリサイズが前記推測データサイズ以上であるのか否かを判断する第１の判断部と、を備え、
前記メモリサイズが前記推測データサイズ以上であると判断されることに起因して所定の条件が満たされる場合に、
（Ａ１）前記生成部は、前記スキャンデータの全てを前記内部メモリ内に生成し、前記スキャンデータの全てが前記内部メモリ内に記憶されている状態で、前記スキャンデータの実際のサイズを示す実際サイズ情報を前記ヘッダ部に記述し、
（Ａ２）前記通信実行部は、前記実際サイズ情報が記述されている前記ヘッダ部を含む前記画像ファイルを前記対象送信先デバイスに送信し、
前記メモリサイズが前記推測データサイズ未満であると判断されることに起因して前記所定の条件が満たされない場合に、
（Ｂ１）前記生成部は、前記実際サイズ情報が記述されていない前記ヘッダ部と、前記スキャンデータの一部である第１の部分スキャンデータと、を含む第１の部分ファイルを前記内部メモリ内に生成し、
（Ｂ２）前記通信実行部は、前記第１の部分ファイルを前記対象送信先デバイスに送信し、
（Ｂ３）前記生成部は、前記第１の部分ファイルが前記対象送信先デバイスに送信された後に、前記スキャンデータの一部である第２の部分スキャンデータであって、前記第１の部分スキャンデータとは異なる前記第２の部分スキャンデータを含む第２の部分ファイルを、前記第１の部分ファイルに代えて、前記内部メモリ内に生成し、
（Ｂ４）前記通信実行部は、前記第２の部分ファイルを前記対象送信先デバイスに送信し、
（Ｂ５）前記生成部は、前記スキャンデータの全てを前記内部メモリ内に生成した後に、前記実際サイズ情報を前記フッタ部に記述し、
（Ｂ６）前記通信実行部は、前記実際サイズ情報が記述されている前記フッタ部を前記対象送信先デバイスに送信する、スキャナ。
【請求項２】
スキャナであって、
スキャン実行部と、
通信インターフェイスと、
内部メモリと、
制御部と、を備え、
前記制御部は、
対象送信先デバイスを示す対象送信先情報を取得する送信先情報取得部と、
前記スキャン実行部が１枚の原稿のスキャンを実行することによって得られるスキャン結果を利用して画像ファイルを生成する生成部と、
前記通信インターフェイスを介して、前記画像ファイルを前記対象送信先情報によって示される前記対象送信先デバイスに送信する通信実行部であって、前記画像ファイルは、ヘッダ部と、前記ヘッダ部の後に送信されるスキャンデータであって、前記１枚の原稿を表わす前記スキャンデータと、前記スキャンデータの後に送信されるフッタ部と、を含む、前記通信実行部と、
前記スキャナに外部メモリが装着されているのか否かを判断する第２の判断部と、を備え、
前記スキャナに前記外部メモリが装着されていると判断されることに起因して所定の条件が満たされる場合に、
（Ａ１）前記生成部は、前記スキャンデータの全てを前記外部メモリ内に生成し、前記スキャンデータの全てが前記外部メモリ内に記憶されている状態で、前記スキャンデータの実際のサイズを示す実際サイズ情報を前記ヘッダ部に記述し、
（Ａ２）前記通信実行部は、前記実際サイズ情報が記述されている前記ヘッダ部を含む前記画像ファイルを前記対象送信先デバイスに送信し、
前記スキャナに前記外部メモリが装着されていないと判断されることに起因して前記所定の条件が満たされない場合に、
（Ｂ１）前記生成部は、前記実際サイズ情報が記述されていない前記ヘッダ部と、前記スキャンデータの一部である第１の部分スキャンデータと、を含む第１の部分ファイルを前記内部メモリ内に生成し、
（Ｂ２）前記通信実行部は、前記第１の部分ファイルを前記対象送信先デバイスに送信し、
（Ｂ３）前記生成部は、前記第１の部分ファイルが前記対象送信先デバイスに送信された後に、前記スキャンデータの一部である第２の部分スキャンデータであって、前記第１の部分スキャンデータとは異なる前記第２の部分スキャンデータを含む第２の部分ファイルを、前記第１の部分ファイルに代えて、前記内部メモリ内に生成し、
（Ｂ４）前記通信実行部は、前記第２の部分ファイルを前記対象送信先デバイスに送信し、
（Ｂ５）前記生成部は、前記スキャンデータの全てを前記内部メモリ内に生成した後に、前記実際サイズ情報を前記フッタ部に記述し、
（Ｂ６）前記通信実行部は、前記実際サイズ情報が記述されている前記フッタ部を前記対象送信先デバイスに送信する、スキャナ。
【請求項３】
スキャナであって、
スキャン実行部と、
通信インターフェイスと、
内部メモリと、
制御部と、を備え、
前記制御部は、
対象送信先デバイスを示す対象送信先情報を取得する送信先情報取得部と、
前記スキャン実行部が１枚の原稿のスキャンを実行することによって得られるスキャン結果を利用して画像ファイルを生成する生成部と、
前記通信インターフェイスを介して、前記画像ファイルを前記対象送信先情報によって示される前記対象送信先デバイスに送信する通信実行部であって、前記画像ファイルは、ヘッダ部と、前記ヘッダ部の後に送信されるスキャンデータであって、前記１枚の原稿を表わす前記スキャンデータと、前記スキャンデータの後に送信されるフッタ部と、を含む、前記通信実行部と、を備え、
所定の条件が満たされる場合に、
（Ａ１）前記生成部は、前記スキャンデータの全てを生成した後に、前記スキャンデータの実際のサイズを示す実際サイズ情報を前記ヘッダ部に記述し、
（Ａ２）前記通信実行部は、前記実際サイズ情報が記述されている前記ヘッダ部を含む前記画像ファイルを前記対象送信先デバイスに送信し、
前記所定の条件が満たされない場合に、
（Ｂ１）前記生成部は、前記実際サイズ情報が記述されていない前記ヘッダ部と、前記スキャンデータの一部である第１の部分スキャンデータと、を含む第１の部分ファイルを前記内部メモリ内に生成し、
（Ｂ２）前記通信実行部は、前記第１の部分ファイルを前記対象送信先デバイスに送信し、
（Ｂ３）前記生成部は、前記第１の部分ファイルが前記対象送信先デバイスに送信された後に、前記スキャンデータの一部である第２の部分スキャンデータであって、前記第１の部分スキャンデータとは異なる前記第２の部分スキャンデータを含む第２の部分ファイルを、前記第１の部分ファイルに代えて、前記内部メモリ内に生成し、
（Ｂ４）前記通信実行部は、前記第２の部分ファイルを前記対象送信先デバイスに送信し、
（Ｂ５）前記生成部は、前記スキャンデータの全てを前記内部メモリ内に生成した後に、前記実際サイズ情報を前記フッタ部に記述し、
（Ｂ６）前記通信実行部は、前記実際サイズ情報が記述されている前記フッタ部を前記対象送信先デバイスに送信し、
前記制御部は、さらに、
前記所定の条件が満たされない場合に、前記実際サイズ情報が記述されている前記フッタ部を含む前記画像ファイルの全てが前記対象送信先デバイスに送信された後に、前記対象送信先デバイス内の前記画像ファイルを変更する変更部を備え、
前記変更部は、
（Ｂ７）前記対象送信先デバイスから前記ヘッダ部を受信して、前記実際サイズ情報を前記ヘッダ部に記述し、
（Ｂ８）前記実際サイズ情報が記述されていない前記ヘッダ部に代えて、前記実際サイズ情報が記述されている前記ヘッダ部が前記対象送信先デバイス内に記憶されるように、前記実際サイズ情報が記述されている前記ヘッダ部を前記対象送信先デバイスに送信する、スキャナ。
【請求項４】
前記送信先情報取得部は、前記対象送信先デバイスを含む２個以上の送信先デバイスを示す２個以上の送信先情報を取得し、
前記通信実行部は、前記所定の条件が満たされない場合に、さらに、
（Ｂ９）前記（Ｂ７）において前記実際サイズ情報が前記ヘッダ部に記述された後に、前記実際サイズ情報が記述されている前記ヘッダ部を前記２個以上の送信先デバイスのうち、前記対象送信先デバイスとは異なる１個以上の送信先デバイスに送信し、
（Ｂ１０）前記対象送信先デバイスから前記スキャンデータを構成する複数個の部分スキャンデータのそれぞれを順次受信して、前記複数個のスキャン部分データのそれぞれを前記内部メモリ内に順次記憶させ、
（Ｂ１１）前記内部メモリ内に１個の部分スキャンデータが記憶される毎に、当該１個の部分スキャンデータを前記１個以上の送信先デバイスに送信し、
（Ｂ１２）前記複数個のスキャン部分データの全てを前記１個以上の送信先デバイスに送信した後に、前記実際サイズ情報が記述されていない前記フッタ部を前記１個以上の送信先デバイスに送信する、請求項３に記載のスキャナ。
【請求項５】
スキャナであって、
スキャン実行部と、
通信インターフェイスと、
内部メモリと、
制御部と、を備え、
前記制御部は、
対象送信先デバイスを示す対象送信先情報を取得する送信先情報取得部と、
前記スキャン実行部が１枚の原稿のスキャンを実行することによって得られるスキャン結果を利用して画像ファイルを生成する生成部と、
前記通信インターフェイスを介して、前記画像ファイルを前記対象送信先情報によって示される前記対象送信先デバイスに送信する通信実行部であって、前記画像ファイルは、ヘッダ部と、前記ヘッダ部の後に送信されるスキャンデータであって、前記１枚の原稿を表わす前記スキャンデータと、前記スキャンデータの後に送信されるフッタ部と、を含む、前記通信実行部と、を備え、
所定の条件が満たされる場合に、
（Ａ１）前記生成部は、前記スキャンデータの全てを生成した後に、前記スキャンデータの実際のサイズを示す実際サイズ情報を前記ヘッダ部に記述し、
（Ａ２）前記通信実行部は、前記実際サイズ情報が記述されている前記ヘッダ部を含む前記画像ファイルを前記対象送信先デバイスに送信し、
前記所定の条件が満たされない場合に、
（Ｂ１）前記生成部は、前記実際サイズ情報が記述されていない前記ヘッダ部と、前記スキャンデータの一部である第１の部分スキャンデータと、を含む第１の部分ファイルを前記内部メモリ内に生成し、
（Ｂ２）前記通信実行部は、前記第１の部分ファイルを前記対象送信先デバイスに送信し、
（Ｂ３）前記生成部は、前記第１の部分ファイルが前記対象送信先デバイスに送信された後に、前記スキャンデータの一部である第２の部分スキャンデータであって、前記第１の部分スキャンデータとは異なる前記第２の部分スキャンデータを含む第２の部分ファイルを、前記第１の部分ファイルに代えて、前記内部メモリ内に生成し、
（Ｂ４）前記通信実行部は、前記第２の部分ファイルを前記対象送信先デバイスに送信し、
（Ｂ５）前記生成部は、前記スキャンデータの全てを前記内部メモリ内に生成した後に、前記実際サイズ情報を前記フッタ部に記述し、
（Ｂ６）前記通信実行部は、前記実際サイズ情報が記述されている前記フッタ部を前記対象送信先デバイスに送信し、
前記対象送信先デバイスが、前記実際サイズ情報が記述されていない前記ヘッダ部と、前記実際サイズ情報が記述されている前記フッタ部と、を受信する場合に、前記フッタ部から前記実際サイズ情報を読み出して、前記実際サイズ情報を前記ヘッダ部に記述可能である場合に、前記所定の条件が満たされるのか否かに関わらず、前記生成部及び前記通信実行部は、前記（Ｂ１）〜（Ｂ６）を実行する、スキャナ。
【請求項６】
前記生成部は、前記（Ｂ１）において、前記スキャンデータの仮のサイズ情報を前記ヘッダ部に記述して、前記仮のサイズ情報が記述されている前記ヘッダ部と前記第１の部分スキャンデータとを含む前記第１の部分ファイルを前記内部メモリ内に生成する、請求項１から５のいずれか一項に記載のスキャナ。
【請求項７】
前記仮のサイズ情報は、前記スキャン実行部がスキャン可能な最大原稿サイズと、前記スキャン実行部が利用可能な最高スキャン解像度と、に基づいて決定される最大サイズ情報である、請求項６に記載のスキャナ。
【請求項８】
前記制御部は、さらに、
前記所定の条件が満たされない場合に、前記スキャンデータによって表わされる画像を出力することができない可能性があることを示すメッセージを表示部に表示させる表示制御部を備える、請求項１から７のいずれか一項に記載のスキャナ。
【請求項９】
スキャナのためのコンピュータプログラムであって、
前記スキャナに搭載されるコンピュータに、以下の各処理、即ち、
対象送信先デバイスを示す対象送信先情報を取得する送信先情報取得処理と、
前記スキャナのスキャン実行部が１枚の原稿のスキャンを実行することによって得られるスキャン結果を利用して画像ファイルを生成する生成処理と、
前記スキャナの通信インターフェイスを介して、前記画像ファイルを前記対象送信先情報によって示される前記対象送信先デバイスに送信する通信実行処理であって、前記画像ファイルは、ヘッダ部と、前記ヘッダ部の後に送信されるスキャンデータであって、前記１枚の原稿を表わす前記スキャンデータと、前記スキャンデータの後に送信されるフッタ部と、を含む、前記通信実行処理と、を実行させ、
所定の条件が満たされる場合に、
（Ａ１）前記生成処理では、前記スキャンデータの全てを生成した後に、前記スキャンデータの実際のサイズを示す実際サイズ情報を前記ヘッダ部に記述し、
（Ａ２）前記通信実行処理では、前記実際サイズ情報が記述されている前記ヘッダ部を含む前記画像ファイルを前記対象送信先デバイスに送信し、
前記所定の条件が満たされない場合に、
（Ｂ１）前記生成処理では、前記実際サイズ情報が記述されていない前記ヘッダ部と、前記スキャンデータの一部である第１の部分スキャンデータと、を含む第１の部分ファイルを前記スキャナの内部メモリ内に生成し、
（Ｂ２）前記通信実行処理では、前記第１の部分ファイルを前記対象送信先デバイスに送信し、
（Ｂ３）前記生成処理では、前記第１の部分ファイルが前記対象送信先デバイスに送信された後に、前記スキャンデータの一部である第２の部分スキャンデータであって、前記第１の部分スキャンデータとは異なる前記第２の部分スキャンデータを含む第２の部分ファイルを、前記第１の部分ファイルに代えて、前記内部メモリ内に生成し、
（Ｂ４）前記通信実行処理では、前記第２の部分ファイルを前記対象送信先デバイスに送信し、
（Ｂ５）前記生成処理では、前記スキャンデータの全てを前記内部メモリ内に生成した後に、前記実際サイズ情報を前記フッタ部に記述し、
（Ｂ６）前記通信実行処理では、前記実際サイズ情報が記述されている前記フッタ部を前記対象送信先デバイスに送信し、
前記対象送信先デバイスが、前記実際サイズ情報が記述されていない前記ヘッダ部と、前記実際サイズ情報が記述されている前記フッタ部と、を受信する場合に、前記フッタ部から前記実際サイズ情報を読み出して、前記実際サイズ情報を前記ヘッダ部に記述可能である場合に、前記所定の条件が満たされるのか否かに関わらず、前記生成処理及び前記通信実行処理では、前記（Ｂ１）〜（Ｂ６）を実行する、コンピュータプログラム。
【請求項１０】
スキャナであって、
スキャン実行部と、
ネットワークを介して対象送信先デバイスに接続される通信インターフェイスと、
内部メモリと、
制御部と、を備え、
前記制御部は、
前記対象送信先デバイスを示す対象送信先情報を取得する送信先情報取得部と、
前記スキャン実行部が１枚の原稿のスキャンを実行することによって得られるスキャン結果を利用して画像ファイルを生成する生成部と、
前記通信インターフェイスを介して、前記ネットワークを利用して、前記画像ファイルを前記対象送信先情報によって示される前記対象送信先デバイスに送信する通信実行部であって、前記画像ファイルは、ヘッダ部と、前記ヘッダ部の後に送信されるスキャンデータであって、前記１枚の原稿を表わす前記スキャンデータと、前記スキャンデータの後に送信されるフッタ部と、を含む、前記通信実行部と、を備え、
前記対象送信先デバイスが、前記スキャンデータの実際のサイズを示す実際サイズ情報が記述されていない前記ヘッダ部と、前記実際サイズ情報が記述されている前記フッタ部と、を受信する場合に、前記フッタ部から前記実際サイズ情報を読み出して、前記実際サイズ情報を前記ヘッダ部に記述可能である場合に、
（Ｂ１）前記生成部は、前記実際サイズ情報が記述されていない前記ヘッダ部と、前記スキャンデータの一部である第１の部分スキャンデータと、を含む第１の部分ファイルを前記内部メモリ内に生成し、
（Ｂ２）前記通信実行部は、前記第１の部分ファイルを前記対象送信先デバイスに送信し、
（Ｂ３）前記生成部は、前記第１の部分ファイルが前記対象送信先デバイスに送信された後に、前記スキャンデータの一部である第２の部分スキャンデータであって、前記第１の部分スキャンデータとは異なる前記第２の部分スキャンデータを含む第２の部分ファイルを、前記第１の部分ファイルに代えて、前記内部メモリ内に生成し、
（Ｂ４）前記通信実行部は、前記第２の部分ファイルを前記対象送信先デバイスに送信し、
（Ｂ５）前記生成部は、前記スキャンデータの全てを前記内部メモリ内に生成した後に、前記実際サイズ情報を前記フッタ部に記述し、
（Ｂ６）前記通信実行部は、前記実際サイズ情報が記述されている前記フッタ部を前記対象送信先デバイスに送信する、スキャナ。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、スキャンデータを含む画像ファイルを外部に送信するスキャナを開示する。
【背景技術】
【０００２】
特許文献１には、原稿のスキャンを実行することによって得られるＪＰＥＧデータを含むＰＤＦファイルを生成するスキャナが開示されている。スキャナは、ＪＰＥＧデータの仮の高さ情報を含むＪＰＥＧヘッダを生成し、その後、１枚の原稿を表わすＪＰＥＧデータの全てを生成すると、ＪＰＥＧヘッダ内の仮の高さ情報をＪＰＥＧデータの実際の高さ情報に変更する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２３９３４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述したように、ＪＰＥＧヘッダ内に実際の高さ情報を記述するためには、ＪＰＥＧデータ（即ちスキャンデータ）の全てが生成される必要がある。本明細書では、スキャンデータを含む画像ファイルを生成して当該画像ファイルを外部に送信すべき際に、スキャナの内部メモリの使用メモリサイズを低減させ得る技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書によって開示されるスキャナは、スキャン実行部と、通信インターフェイスと、内部メモリと、制御部と、を備える。制御部は、対象送信先デバイスを示す対象送信先情報を取得する送信先情報取得部と、スキャン実行部が１枚の原稿のスキャンを実行することによって得られるスキャン結果を利用して画像ファイルを生成する生成部と、通信インターフェイスを介して、画像ファイルを対象送信先情報によって示される対象送信先デバイスに送信する通信実行部と、を備える。画像ファイルは、ヘッダ部と、ヘッダ部の後に送信されるスキャンデータであって、１枚の原稿を表わすスキャンデータと、スキャンデータの後に送信されるフッタ部と、を含む。所定の条件が満たされる場合に、（Ａ１）生成部は、スキャンデータの全てを生成した後に、スキャンデータの実際のサイズを示す実際サイズ情報をヘッダ部に記述し、（Ａ２）通信実行部は、実際サイズ情報が記述されているヘッダ部を含む画像ファイルを対象送信先デバイスに送信する。所定の条件が満たされない場合に、（Ｂ１）生成部は、実際サイズ情報が記述されていないヘッダ部と、スキャンデータの一部である第１の部分スキャンデータと、を含む第１の部分ファイルを内部メモリ内に生成し、（Ｂ２）通信実行部は、第１の部分ファイルを対象送信先デバイスに送信し、（Ｂ３）生成部は、第１の部分ファイルが対象送信先デバイスに送信された後に、スキャンデータの一部である第２の部分スキャンデータであって、第１の部分スキャンデータとは異なる第２の部分スキャンデータを含む第２の部分ファイルを、第１の部分ファイルに代えて、内部メモリ内に生成し、（Ｂ４）通信実行部は、第２の部分ファイルを対象送信先デバイスに送信し、（Ｂ５）生成部は、スキャンデータの全てを内部メモリ内に生成した後に、実際サイズ情報をフッタ部に記述し、（Ｂ６）通信実行部は、実際サイズ情報が記述されているフッタ部を対象送信先デバイスに送信する。
【０００６】
上記の構成によると、スキャナは、所定の条件が満たされない場合に、第１の部分スキャンデータを含む第１の部分ファイルを内部メモリ内に生成し、第１の部分ファイルを対象送信先デバイスに送信する。その後、スキャナは、第２の部分スキャンデータを含む第２の部分ファイルを内部メモリ内に生成し、第２の部分ファイルを対象送信先デバイスに送信する。従って、スキャンデータの全てを内部メモリ内に同時的に記憶させずに済むので、内部メモリの使用メモリサイズを低減させ得る。しかも、スキャナは、スキャンデータの全てを内部メモリ内に生成した後に、スキャンデータの実際のサイズを示す実際サイズ情報をフッタ部に記述し、実際サイズ情報が記述されているフッタ部を対象送信先デバイスに送信する。このために、スキャナは、実際サイズ情報を含む画像ファイルを対象送信先デバイスに適切に送信することができる。
前記制御部は、さらに、
前記１枚の原稿のスキャンを実行するためのスキャン解像度を示す解像度情報を取得する解像度情報取得部と、
前記１枚の原稿のサイズを示す原稿サイズ情報を取得する原稿サイズ情報取得部と、
前記画像ファイルが生成される前に、前記解像度情報と前記原稿サイズ情報とを利用して、前記スキャンデータの推測データサイズを算出する算出部と、
前記スキャンデータを記憶するための前記内部メモリ内の記憶領域のメモリサイズが前記推測データサイズ以上であるのか否かを判断する第１の判断部と、を備え、
前記メモリサイズが前記推測データサイズ以上であると判断されることに起因して前記所定の条件が満たされる場合に、前記（Ａ１）において、前記生成部は、前記スキャンデータの全てを前記内部メモリ内に生成し、前記スキャンデータの全てが前記内部メモリ内に記憶されている状態で、前記実際サイズ情報を前記ヘッダ部に記述し、
前記メモリサイズが前記推測データサイズ未満であると判断されることに起因して前記所定の条件が満たされない場合に、前記生成部及び前記通信実行部は、前記（Ｂ１）〜（Ｂ６）を実行してもよい。
前記制御部は、さらに、
前記スキャナに外部メモリが装着されているのか否かを判断する第２の判断部を備え、
前記スキャナに前記外部メモリが装着されていると判断されることに起因して前記所定の条件が満たされる場合に、前記（Ａ１）において、前記生成部は、前記スキャンデータの全てを前記外部メモリ内に生成し、前記スキャンデータの全てが前記外部メモリ内に記憶されている状態で、前記実際サイズ情報を前記ヘッダ部に記述し、
前記スキャナに前記外部メモリが装着されていないと判断されることに起因して前記所定の条件が満たされない場合に、前記生成部及び前記通信実行部は、前記（Ｂ１）〜（Ｂ６）を実行してもよい。
前記制御部は、さらに、
前記所定の条件が満たされない場合に、前記実際サイズ情報が記述されている前記フッタ部を含む前記画像ファイルの全てが前記対象送信先デバイスに送信された後に、前記対象送信先デバイス内の前記画像ファイルを変更する変更部を備え、
前記変更部は、
（Ｂ７）前記対象送信先デバイスから前記ヘッダ部を受信して、前記実際サイズ情報を前記ヘッダ部に記述し、
（Ｂ８）前記実際サイズ情報が記述されていない前記ヘッダ部に代えて、前記実際サイズ情報が記述されている前記ヘッダ部が前記対象送信先デバイス内に記憶されるように、前記実際サイズ情報が記述されている前記ヘッダ部を前記対象送信先デバイスに送信してもよい。
前記送信先情報取得部は、前記対象送信先デバイスを含む２個以上の送信先デバイスを示す２個以上の送信先情報を取得し、
前記通信実行部は、前記所定の条件が満たされない場合に、さらに、
（Ｂ９）前記（Ｂ７）において前記実際サイズ情報が前記ヘッダ部に記述された後に、前記実際サイズ情報が記述されている前記ヘッダ部を前記２個以上の送信先デバイスのうち、前記対象送信先デバイスとは異なる１個以上の送信先デバイスに送信し、
（Ｂ１０）前記対象送信先デバイスから前記スキャンデータを構成する複数個の部分スキャンデータのそれぞれを順次受信して、前記複数個のスキャン部分データのそれぞれを前記内部メモリ内に順次記憶させ、
（Ｂ１１）前記内部メモリ内に１個の部分スキャンデータが記憶される毎に、当該１個の部分スキャンデータを前記１個以上の送信先デバイスに送信し、
（Ｂ１２）前記複数個のスキャン部分データの全てを前記１個以上の送信先デバイスに送信した後に、前記実際サイズ情報が記述されていない前記フッタ部を前記１個以上の送信先デバイスに送信してもよい。
前記対象送信先デバイスが、前記実際サイズ情報が記述されていない前記ヘッダ部と、前記実際サイズ情報が記述されている前記フッタ部と、を受信する場合に、前記フッタ部から前記実際サイズ情報を読み出して、前記実際サイズ情報を前記ヘッダ部に記述可能である場合に、前記所定の条件が満たされるのか否かに関わらず、前記生成部及び前記通信実行部は、前記（Ｂ１）〜（Ｂ６）を実行してもよい。
前記生成部は、前記（Ｂ１）において、前記スキャンデータの仮のサイズ情報を前記ヘッダ部に記述して、前記仮のサイズ情報が記述されている前記ヘッダ部と前記第１の部分スキャンデータとを含む前記第１の部分ファイルを前記内部メモリ内に生成してもよい。
前記仮のサイズ情報は、前記スキャン実行部がスキャン可能な最大原稿サイズと、前記スキャン実行部が利用可能な最高スキャン解像度と、に基づいて決定される最大サイズ情報であってもよい。
前記制御部は、さらに、
前記所定の条件が満たされない場合に、前記スキャンデータによって表わされる画像を出力することができない可能性があることを示すメッセージを表示部に表示させる表示制御部を備えてもよい。
【０００７】
上記のスキャナを実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記憶媒体も新規で有用である。
【図面の簡単な説明】
【０００８】
【図１】通信システムの構成を示す。
【図２】ＪＰＥＧファイルの構成を示す。
【図３】スキャナの処理のフローチャートを示す。
【図４】第１の特別処理のフローチャートを示す。
【図５】ＪＰＥＧファイルの全てを生成した後にＪＰＥＧファイルを送信するケースＡ及びケースＢを示す。
【図６】ＪＰＥＧファイルの一部の生成及び送信を繰り返すケースＣ１を示す。
【図７】ＪＰＥＧファイルを送信した後にＪＰＥＧファイルを変更するケースＣ２を示す。
【図８】第２実施例の第１の特別処理のフローチャートを示す。
【図９】第２実施例のケースＤを示す。
【図１０】第３実施例を説明するための図を示す。
【発明を実施するための形態】
【０００９】
（通信システム２の構成；図１）
図１に示すように、通信システム２は、スキャナＳＣと、端末ＴＥと、複数個のサーバＳＥ１，ＳＥ２と、を備える。各デバイスＳＣ，ＴＥ，ＳＥ１，ＳＥ２は、ＬＡＮ４に接続されており、ＬＡＮ４を介して相互に通信可能である。
【００１０】
（スキャナＳＣの構成）
スキャナＳＣは、操作部１０と、表示部１２と、スキャン実行部１４と、ネットワークインターフェイス１６と、ＵＳＢインターフェイス１８と、制御回路３０と、を備える。各部１０〜３０は、バス線（符号省略）に接続されている。なお、以下では、インターフェイスのことを「Ｉ／Ｆ」と記載する。
【００１１】
操作部１０は、複数のキーによって構成される。ユーザは、操作部１０を操作することによって、様々な指示をスキャナＳＣに入力することができる。表示部１２は、様々な情報を表示するためのディスプレイである。ネットワークＩ／Ｆ１６は、スキャナＳＣをＬＡＮ４に接続するためのＩ／Ｆであり、有線Ｉ／Ｆでもよいし、無線Ｉ／Ｆでもよい。ＵＳＢＩ／Ｆ１８には、可搬型の外部メモリであるＵＳＢメモリ２０が装着される。
【００１２】
スキャン実行部１４は、透明板と、自動原稿搬送装置（ＡＤＦ（Auto Document Feederの略））と、スキャン機構と、を備える。スキャン機構は、複数個のイメージセンサを備える。各イメージセンサは、ＣＣＤ（Charge Coupled Deviceの略）であってもよいし、ＣＩＳ（Contact Image Sensorの略）であってもよい。スキャン機構は、複数個のイメージセンサが並ぶ方向（以下では「副走査方向」と呼ぶ）に直交する方向（以下では「主走査方向」と呼ぶ）に移動可能である。スキャン機構は、主走査方向に移動することによって、透明板に載置される原稿をスキャンすることができる。また、スキャン機構は、スキャン機構自身が静止した状態で、自動原稿搬送装置によって主走査方向に搬送される原稿をスキャンすることができる。
【００１３】
制御回路３０は、ＣＰＵ３２と、ＲＯＭ３４と、ＮＶＲＡＭ３６と、ＶＲＡＭ３８と、を備える。ＣＰＵ３２は、ＲＯＭ３４に格納されているプログラムＰＧに従って、様々な処理を実行する。
【００１４】
ＮＶＲＡＭ３６は、不揮発性メモリであり、各デバイスＴＥ，ＳＥ１，ＳＥ２に関係する各関係情報を記憶する。各関係情報は、ユーザによってＮＶＲＡＭ３６内に予め登録される。端末ＴＥの関係情報では、端末ＴＥの名称「ＴＮ」と、端末ＴＥと通信するための通信プロトコルの種類を示すプロトコル情報「Ｐ１」と、が対応付けられている。同様に、サーバＳＥ１（又はＳＥ２）の関係情報では、名称「ＳＮ１（又はＳＮ２）」と、プロトコル情報「Ｐ１」とは異なるプロトコル情報「Ｐ２」と、が対応付けられている。
【００１５】
ＶＲＡＭ３８は、揮発性メモリであり、ＣＰＵ３２によって取得又は生成される様々なデータを記憶する。ＶＲＡＭ３８は、１枚の原稿を表わすスキャンデータの最大データサイズよりも大きいメモリサイズを有する。最大データサイズは、スキャン実行部１４がスキャン可能な最大原稿サイズ（例えばＡ３）を有する１枚の原稿を、スキャン実行部１４が利用可能な最高スキャン解像度（例えば１２００ｄｐｉ）でスキャンすることによって生成されるスキャンデータのサイズを意味する。なお、スキャンデータは所定の圧縮方式に従って圧縮され得るが、ここでの最大データサイズは、圧縮されていない状態のスキャンデータの最大データサイズを意味する。なお、変形例では、ＶＲＡＭ３８は、上記の最大データサイズよりも小さいメモリサイズを有していてもよい。
【００１６】
（他のデバイスＴＥ，ＳＥ１，ＳＥ２の構成）
端末ＴＥは、ＰＣ（Personal Computerの略）、ＰＤＡ（Personal Digital Assistantの略）、スマートフォン等のデバイスである。図示省略しているが、端末ＴＥは、スキャン指示をスキャナＳＣに送信するためのスキャナドライバを備える。各サーバＳＥ１，ＳＥ２は、ＪＰＥＧ（Joint Photographic Experts Groupの略）ファイル等の各種ファイルを記憶するためのサーバである。
【００１７】
（ＪＰＥＧファイル１００の構成；図２）
続いて、図２を参照して、スキャナＳＣによって生成されるＪＰＥＧファイル１００の構成を説明する。以下では、ＪＰＥＧファイルのことを簡単に「ファイル」と呼ぶことがある。図２は、１枚の原稿のスキャンを実行することによって生成されるファイル１００の模式図を示す。ファイル１００は、ヘッダ部１１０と、スキャンデータ１３０と、フッタ部１４０と、を含む。スキャナＳＣは、各データ部１１０，１３０，１４０の順序で、各データ１１０，１３０，１４０の生成及び送信を順次実行する。
【００１８】
ヘッダ部１１０は、ＳＯＩマーカ１１２と、ＳＯＦマーカ１１４と、ＳＯＦ１１６と、ＳＯＳマーカ１１８と、ＳＯＳ１２０と、を含む。ＳＯＩマーカ１１２は、ファイル１００の先頭を示すマーカであり、具体的な値として「０ｘＦＦＤ８」を示す。ＳＯＦマーカ１１４は、ＳＯＦマーカ１１４に続いてＳＯＦ１１６が記述されることを示すマーカであり、具体的な値として「０ｘＦＦＣ０」を示す。なお、ＳＯＦマーカ１１４の値として「０ｘＦＦＣ０」を例示しているが、変形例では別の値（例えば、「０ｘＦＦＣ１」、「０ｘＦＦＣ２」等）であってもよい。ＳＯＦ１１６は、幅領域ＳＷ及び高さ領域ＳＨを含む。ＳＯＳマーカ１１８は、ＳＯＳマーカ１１８に続いてＳＯＳ１２０が記述されることを示すマーカであり、具体的な値として「０ｘＦＦＤＡ」を示す。ＳＯＳ１２０には、スキャンデータ１３０に関する情報が記述される。ＳＯＳ１２０に続いてスキャンデータ１３０が記述される。換言すると、ＳＯＳ１２０は、ヘッダ部１１０の最後を示すデータである。
【００１９】
ＳＯＦ１１６内の幅領域ＳＷ、高さ領域ＳＨには、それぞれ、スキャンデータ１３０の幅方向の画素数を示す幅情報、高さ方向の画素数を示す高さ情報が記述される。幅方向、高さ方向は、それぞれ、副走査方向、主走査方向に対応する。原稿の幅方向の長さが大きい程又は副走査方向のスキャン解像度が高い程、幅情報が大きくなる。原稿の高さ方向の長さが大きい程又は主走査方向のスキャン解像度が高い程、高さ情報が大きくなる。
【００２０】
スキャンデータ１３０は、原稿を表わす複数個の画素によって構成されるビットマップデータが所定の圧縮方式に従って圧縮されたデータである。各画素は、ＲＧＢの多階調（例えば２５６階調）の画素値を有する。
【００２１】
フッタ部１４０は、ＤＮＬマーカ１４２と、ＤＮＬ１４４と、ＥＯＩマーカ１４６と、を含む。スキャンデータ１３０に続いてＤＮＬマーカ１４２が記述される。換言すると、ＤＮＬマーカ１４２は、フッタ部１４０の先頭を示すデータである。ＤＮＬマーカ１４２は、ＤＮＬマーカ１４２に続いてＤＮＬ１４４が記述されることを示すマーカであり、具体的な値として「０ｘＦＦＤＣ」を示す。ＤＮＬ１４４は、上記の幅情報が記述され得る幅領域ＤＷと、上記の高さ情報が記述され得る高さ領域ＤＨと、を含む。ＥＯＩマーカ１４６は、ファイル１００の最後を示すマーカであり、具体的な値として「０ｘＦＦＤ９」を示す。
【００２２】
（スキャナＳＣの処理の概要）
スキャナＳＣは、各データ１１０，１３０，１４０のうちのヘッダ部１１０を最初に生成する。ただし、１枚の原稿のスキャンが終了しないと、即ち、１枚の原稿を表わすスキャンデータ１３０の全ての生成が終了しないと、スキャンデータ１３０の実際の高さ（即ち主走査方向の画素数）が不明である。従って、スキャナＳＣは、ヘッダ部１１０を生成する時点では、スキャンデータ１３０の実際の幅を示す実際幅情報をヘッダ部１１０内の幅領域ＳＷに記述することができるが、スキャンデータ１３０の実際の高さを示す実際高さ情報をヘッダ部１１０内の高さ領域ＳＨに記述することができない。スキャナＳＣは、通常、スキャンデータ１３０の全てを生成した後に、実際高さ情報をヘッダ部１１０内に記述する。その後、スキャナＳＣは、実際高さ情報が記述されているヘッダ部１１０、スキャンデータ１３０、及び、フッタ部１４０を外部に順次送信する。
【００２３】
上述したように、スキャンデータ１３０の全ての生成が終了しなければ、実際高さ情報をヘッダ部１１０内に記述することができない。そして、ヘッダ部１１０は、スキャンデータ１３０よりも先に外部に送信されるべきデータである。このために、スキャナＳＣは、例えば、ファイル１００をＶＲＡＭ３８内に生成すべき場合には、スキャンデータ１３０の全ての生成が終了して、スキャンデータ１３０の全てがＶＲＡＭ３８内に記憶されている状態で、実際高さ情報をヘッダ部１１０内に記述する。本実施例では、ＶＲＡＭ３８は、スキャンデータ１３０の最大データサイズよりも大きいメモリサイズを有する。従って、スキャナＳＣは、通常、スキャンデータ１３０の全てをＶＲＡＭ３８内に同時的に記憶させることができ、スキャンデータ１３０の全てがＶＲＡＭ３８内に記憶されている状態で、実際高さ情報をヘッダ部１１０内に記述することができる。しかしながら、スキャナＳＣは、ＶＲＡＭ３８を利用してスキャン処理とは異なる処理を実行する可能性があり、この場合、ＶＲＡＭ３８内の空きメモリサイズがスキャンデータ１３０のデータサイズよりも小さくなり得る。このような状況では、スキャンデータ１３０の全てをＶＲＡＭ３８内に生成する前に、ＶＲＡＭ３８がメモリフルになってしまうので、スキャナＳＣは、実際高さ情報をヘッダ部１１０内に記述することができない。なお、上記の異なる処理の例として、以下の各処理を挙げることができる。例えば、スキャナＳＣがウェブサーバ機能を実行可能である場合には、上記の異なる処理は、ウェブサーバとして動作するための処理を含む。また、例えば、スキャナＳＣが印刷機能を実行可能な多機能機に搭載されている場合には、上記の異なる処理は、印刷処理を含む。
【００２４】
上記の実情に鑑みて、本実施例では、スキャナＳＣは、ＶＲＡＭ３８がメモリフルにならない状況では、実際高さ情報をヘッダ部１１０内に記述する。この場合、スキャナＳＣは、実際高さ情報が記述されているヘッダ部１１０を含むファイル１００を外部に送信する。一方、スキャナＳＣは、ＶＲＡＭ３８がメモリフルになり得る状況では、実際高さ情報をヘッダ部１１０内に記述せずに、実際高さ情報をフッタ部１４０内の高さ領域ＤＨに記述する。この場合、スキャナＳＣは、実際高さ情報が記述されていないヘッダ部１１０と、実際高さ情報が記述されているフッタ部１４０と、を含むファイル１００を外部に送信する。
【００２５】
ファイル１００内に記述される幅情報及び高さ情報は、ファイル１００によって表わされる画像を出力（表示、印刷等）する出力デバイスによって利用される。例えば、端末ＴＥは、ファイル１００によって表わされる画像を表示すべき際に、ファイル１００内の幅情報及び高さ情報に従った画素数を有する画像を表示する。多くの出力デバイスは、ヘッダ部１１０内の幅情報及び高さ情報を利用して、画像を出力することができる。しかしながら、フッタ部１４０内の幅情報及び高さ情報を利用することができない出力デバイスが存在する。従って、スキャナＳＣは、実際高さ情報をヘッダ部１１０内に記述することを優先する。スキャナＳＣの処理の詳細を次に説明する。
【００２６】
（スキャナＳＣの処理の詳細；図３）
続いて、図３を参照して、スキャナＳＣのＣＰＵ３２によって実行される処理の内容を説明する。Ｓ１０では、ＣＰＵ３２は、スキャン設定情報を含むスキャン指示を取得することを監視する。スキャン設定情報は、ファイルの送信先デバイスを示す送信先情報と、スキャン解像度を示す解像度情報と、原稿サイズを示す原稿サイズ情報と、を含む。
【００２７】
例えば、ＣＰＵ３２は、ユーザがスキャナＳＣの操作部１０を操作することに応じて、スキャン設定情報を含むスキャン指示を取得する。この場合、ＣＰＵ３２は、ＮＶＲＡＭ３６内の複数個の名称（例えば「ＴＮ」、「ＳＮ１」等）の中からユーザによって選択される１個の名称を送信先情報として取得する。また、ＣＰＵ３２は、複数個の画質（例えば「高画質」、「普通画質」等）の中からユーザによって選択される１個の画質に対応するスキャン解像度を解像度情報として取得する。当該スキャン解像度は、副走査方向のスキャン解像度と、主走査方向のスキャン解像度と、を含む。また、ＣＰＵ３２は、複数個の原稿サイズ（例えば「Ａ４」、「Ａ３」等）の中からユーザによって選択される１個の原稿サイズを原稿サイズ情報として取得する。なお、ＣＰＵ３２は、原稿サイズがユーザによって選択されない場合には、公知の手法を利用して原稿サイズを自動的に検知して、検知済みの原稿サイズを原稿サイズ情報として取得してもよい。また、ＣＰＵ３２は、いずれかのスキャン設定情報がユーザによって選択されない場合には、予め設定されているデフォルトのスキャン設定情報を取得してもよい。
【００２８】
また、ＣＰＵ３２は、ユーザが端末ＴＥの操作部（図示省略）を操作することに応じて、端末ＴＥからＬＡＮ４を介してスキャン設定情報を含むスキャン指示を取得することもできる。この場合、例えば、ＮＶＲＡＭ３６内の複数個の名称がスキャナＳＣから端末ＴＥに予め送信される場合には、ユーザは、端末ＴＥの操作部を操作して、複数個の名称の中から１個の名称を送信先情報として選択する。この場合、ＣＰＵ３２は、ユーザによって選択された送信先情報を含むスキャン指示を取得する。また、端末ＴＥがいわゆるプルスキャンをスキャナＳＣに実行させる場合には、ユーザによって送信先情報が選択されなくてもよい。この場合、ＣＰＵ３２は、端末ＴＥのＩＰアドレスを含むスキャン指示を取得し、当該ＩＰアドレスを送信先情報として取得する。なお、本実施例では、Ｓ１０で取得される送信先情報は、１個の送信先デバイスのみを示すことを想定している。以下では、送信先情報によって示される送信先デバイスのことを「対象送信先デバイス」と呼ぶ。
【００２９】
Ｓ１２では、ＣＰＵ３２は、スキャン実行部１４が原稿のスキャンを実行する前に、即ち、ＪＰＥＧファイルを生成する前に、Ｓ１０で取得された解像度情報及び原稿サイズ情報を利用して、スキャンデータの推測データサイズを算出する。具体的には、ＣＰＵ３２は、まず、原稿サイズ情報（例えば「Ａ４」）に基づいて、原稿の副走査方向の長さと、原稿の主走査方向の長さと、を特定する。そして、ＣＰＵ３２は、原稿の副走査方向の長さと、解像度情報に含まれる副走査方向のスキャン解像度と、を利用して、スキャンデータの副走査方向（即ち幅方向）の推定画素数を算出する。また、ＣＰＵ３２は、原稿の主走査方向の長さと、解像度情報に含まれる主走査方向のスキャン解像度と、を利用して、スキャンデータの主走査方向（即ち高さ方向）の推定画素数を算出する。次いで、ＣＰＵ３２は、副走査方向の推定画素数と主走査方向の推定画素数とを乗算して、スキャンデータの合計の推定画素数を算出する。ＣＰＵ３２は、さらに、スキャンデータの合計の推定画素数に予め決められている仮の圧縮率（即ち「１」より小さい正の値）を乗算して、スキャンデータの推測データサイズを算出する。スキャンデータをどの程度圧縮できるのかは、スキャンデータが実際に生成されるまで不明であるので、ここでは、予め決められている仮の圧縮率が利用される。特に、本実施例では、比較的に低い圧縮効率を示す仮の圧縮率（例えば「０．９」等の比較的に大きい値）が利用される。圧縮済みスキャンデータの実際のデータサイズが推測データサイズよりも大きくなる事象が発生するのを抑制するためである。なお、変形例では、ＣＰＵ３２は、スキャンデータの合計の推定画素数に仮の圧縮率を乗算せずに、当該合計の推定画素数をスキャンデータの推測データサイズとして利用してもよい。本変形例によると、上記の事象が発生するのを適切に抑制することができる。
【００３０】
Ｓ２０では、ＣＰＵ３２は、ＶＲＡＭ３８内の状態をチェックして、ＶＲＡＭ３８内の現在の空きメモリサイズを特定し、Ｓ１２で算出された推定データサイズが当該空きメモリサイズ以下であるのか否かを判断する。ＣＰＵ３２は、推定データサイズが空きメモリサイズ以下であると判断する場合（Ｓ２０でＹＥＳ）にはＳ２２に進み、推定データサイズが空きメモリサイズより大きいと判断する場合（Ｓ２０でＮＯ）にはＳ３０に進む。なお、変形例では、ＶＲＡＭ３８には、スキャンデータを記憶するための所定の記憶領域が予め確保されていてもよい。この場合、ＣＰＵ３２は、当該所定の記憶領域のメモリサイズ（即ち予め決められている固定値）を空きメモリサイズとして利用して、Ｓ２０の判断を実行してもよい。
【００３１】
Ｓ２２（即ち推定データサイズ≦空きメモリサイズ）では、ＣＰＵ３２は、スキャン処理を開始する。具体的に言うと、ＣＰＵ３２は、スキャンの開始を指示するための開始コマンドをスキャン実行部１４に供給して、原稿のスキャンをスキャン実行部１４に実行させる。開始コマンドは、Ｓ１０で取得された解像度情報及び原稿サイズ情報によって示されるスキャン解像度及び原稿サイズを示す。スキャン実行部１４は、ＣＰＵ３２から開始コマンドを取得すると、開始コマンド内のスキャン解像度及び原稿サイズに従って、原稿のスキャンを実行して、スキャン結果をＣＰＵ３２に供給する。この結果、ＣＰＵ３２は、スキャン実行部１４から取得されるスキャン結果（即ちアナログデータ）を利用して、ファイルをＶＲＡＭ３８内に生成する。ファイルの生成手法を次に詳しく説明する。
【００３２】
ＣＰＵ３２は、まず、ＳＯＩマーカ１１２、ＳＯＦマーカ１１４、ＳＯＦ１１６等を含むヘッダ部１１０（図２参照）をＶＲＡＭ３８内に生成する。この段階では、ＣＰＵ３２は、ＳＯＦ１１６内の幅領域ＳＷ及び高さ領域ＳＨに幅情報及び高さ情報を記述しない。
【００３３】
次いで、ＣＰＵ３２は、１ライン分のスキャン結果を利用して、１ライン分の複数個の画素によって構成される１ライン分のビットマップデータ（即ちデジタルデータ）をＶＲＡＭ３８内に生成する。ここで、上記の「１ライン」は、幅方向（即ち副走査方向）に沿って伸びる１ラインを意味する。従って、上記の「１ライン分の複数個の画素」は、幅方向に沿って並ぶ複数個の画素を意味する。そして、ＣＰＵ３２は、１ライン分のビットマップデータを所定の圧縮方式に従って圧縮して、１ライン分のスキャンデータをＶＲＡＭ３８内に生成する。
【００３４】
ＣＰＵ３２は、最初の１ライン分のスキャンデータを生成する際に、スキャンデータ１３０の実際の幅を示す実際幅情報（即ち副走査方向の画素数）を特定する。この際に、ＣＰＵ３２は、ヘッダ部１１０のＳＯＦ１１６内の幅領域ＳＷに実際幅情報を記述する。ただし、この段階では、スキャンデータ１３０の実際の高さを示す実際高さ情報（即ち主走査方向の画素数）が不明であるので、ＣＰＵ３２は、ＳＯＦ１１６内の高さ領域ＳＨに実際高さ情報を記述しない。
【００３５】
ＣＰＵ３２は、上記の１ライン分のスキャンデータを生成する処理を繰り返すことによって、スキャンデータ１３０の全てをＶＲＡＭ３８内に生成する。その後、ＣＰＵ３２は、ＤＮＬマーカ１４２、ＤＮＬ１４４、ＥＯＩマーカ１４６等を含むフッタ部１４０（図２参照）をＶＲＡＭ３８内に生成する。ＣＰＵ３２は、ＤＮＬ１４４内の幅領域ＤＷ及び高さ領域ＤＨに幅情報及び高さ情報を記述しない。
【００３６】
次いで、Ｓ２４では、ＣＰＵ３２は、スキャンデータ１３０の実際の高さを示す実際高さ情報を特定して、ヘッダ部１１０のＳＯＦ１１６内の高さ領域ＳＨに実際高さ情報を記述する。これにより、実際幅情報及び実際高さ情報が記述されているヘッダ部１１０と、幅情報及び高さ情報が記述されていないフッタ部１４０と、を含むファイル１００が完成する。Ｓ２４が終了した段階では、ファイル１００の全てがＶＲＡＭ３８内に記憶されている。
【００３７】
続いて、Ｓ２６では、ＣＰＵ３２は、ＶＲＡＭ３８内のファイル１００を、ネットワークＩ／Ｆ１６を介して、Ｓ１０で取得された送信先情報によって示される対象送信先デバイスに送信する。例えば、送信先情報が端末ＴＥの名称「ＴＮ」を示す場合には、ＣＰＵ３２は、名称「ＴＮ」を利用して名前解決を実行して、端末ＴＥのＩＰアドレスを取得し、当該ＩＰアドレスを利用してファイル１００を端末ＴＥに送信する。この場合、ＣＰＵ３２は、ＮＶＲＡＭ３６内において、端末ＴＥの名称「ＴＮ」に対応付けられている通信プロトコル「Ｐ１」に従って、ファイル１００を端末ＴＥに送信する。また、例えば、送信先情報が端末ＴＥのＩＰアドレスを示す場合には、ＣＰＵ３２は、当該ＩＰアドレスを利用してファイル１００を端末ＴＥに送信する。この場合、ＣＰＵ３２は、当該ＩＰアドレスを利用して名前解決を実行して、端末ＴＥの名称「ＴＮ」を取得し、ＮＶＲＡＭ３６内において、端末ＴＥの名称「ＴＮ」に対応付けられている通信プロトコル「Ｐ１」に従って、ファイル１００を端末ＴＥに送信する。なお、以下でも、データが外部に送信される場合には、上記の名前解決等の処理が実行されるが、当該処理の説明を省略する。
【００３８】
Ｓ２６では、ＣＰＵ３２は、ファイル１００を複数個の部分ファイルに分割して、各部分ファイルの生成順序と同じ順序で、各部分ファイルを対象送信先デバイスに順次送信する。具体的には、ＣＰＵ３２は、ヘッダ部１１０を送信し、次いで、スキャンデータ１３０を送信し、次いで、フッタ部１４０を送信する。ＣＰＵ３２は、Ｓ２６が終了すると、ＶＲＡＭ３８内のファイル１００を消去して、図３の処理を終了する。
【００３９】
一方、Ｓ３０（即ち推定データサイズ＞空きメモリサイズ）では、ＣＰＵ３２は、ＵＳＢメモリ２０を利用可能であるのか否かを判断する。ＣＰＵ３２は、ＵＳＢメモリ２０がＵＳＢＩ／Ｆ１８に装着されている場合には、ＵＳＢメモリ２０内の空きメモリサイズを取得する。そして、ＣＰＵ３２は、Ｓ１２で算出された推定データサイズがＵＳＢメモリ２０内の空きメモリサイズ以下である場合には、ＵＳＢメモリ２０を利用可能であると判断して（Ｓ３０でＹＥＳ）、Ｓ３２に進む。一方、ＣＰＵ３２は、Ｓ１２で算出された推定データサイズがＵＳＢメモリ２０内の空きメモリサイズよりも大きい場合、又は、ＵＳＢメモリ２０がＵＳＢＩ／Ｆ１８に装着されていない場合には、ＵＳＢメモリ２０を利用不可能であると判断して（Ｓ３０でＮＯ）、Ｓ４０に進む。
【００４０】
なお、ＵＳＢメモリ２０は、通常、比較的に大きい空きメモリサイズを有する。従って、Ｓ１２で算出された推定データサイズは、通常、ＵＳＢメモリ２０内の空きメモリサイズ以下になる。このような実情に鑑みて、変形例では、Ｓ３０において、ＣＰＵ３２は、ＵＳＢメモリ２０内の空きメモリサイズを取得しなくてもよい。即ち、ＣＰＵ３２は、ＵＳＢメモリ２０が装着されている場合には、Ｓ３０でＹＥＳと判断し、ＵＳＢメモリ２０が装着されていない場合には、Ｓ３０でＮＯと判断してもよい。
【００４１】
Ｓ３２〜Ｓ３６は、ＶＲＡＭ３８の代わりにＵＳＢメモリ２０が利用される点を除くと、Ｓ２２〜Ｓ２６と同様である。Ｓ３６が終了すると、図３の処理が終了する。
【００４２】
ＣＰＵ３２がＶＲＡＭ３８を利用してファイルを生成するための速度は、通常、ＣＰＵ３２がＵＳＢメモリ２０を利用してファイルを生成するための速度よりも速い。このような実情に鑑みて、本実施例では、ＣＰＵ３２は、Ｓ２０の判断をＳ３０の判断よりも先に実行して、ＶＲＡＭ３８及びＵＳＢメモリ２０のうち、ファイル１００をＶＲＡＭ３８内に生成することを優先する。これにより、ＣＰＵ３２は、ファイル１００を迅速に対象送信先デバイスに送信し得る。
【００４３】
Ｓ４０では、ＣＰＵ３２は、問合せメッセージを表示させる。問合せメッセージは、スキャンデータ１３０によって表わされる画像を出力することができない可能性があることを示す文字列と、スキャンを実行するのか否かをユーザに問い合わせるための文字列と、を含む。ユーザがスキャナＳＣの操作部１０を操作することに応じて、Ｓ１０のスキャン指示が取得される場合には、ＣＰＵ３２は、スキャナＳＣの表示部１２に問合せメッセージを表示させる。この場合、ＣＰＵ３２は、ユーザがスキャナＳＣの操作部１０を操作することに応じて、問合せ結果を取得する。また、Ｓ１０のスキャン指示が端末ＴＥから取得される場合には、ＣＰＵ３２は、問合せメッセージを端末ＴＥに送信することによって、端末ＴＥの表示部（図示省略）に問合せメッセージを表示させる。この場合、ＣＰＵ３２は、ユーザが端末ＴＥの操作部（図示省略）を操作することに応じて、端末ＴＥから問合せ結果を取得する。
【００４４】
Ｓ４２では、ＣＰＵ３２は、問合せ結果が、スキャンを実行することを意味する「ＯＫ」を示すのか、スキャンを実行しないことを意味する「キャンセル」を示すのか、を判断する。ＣＰＵ３２は、問合せ結果が「ＯＫ」を示すと判断する場合（Ｓ４２でＹＥＳ）には、Ｓ５０の第１の特別処理を実行して、図３の処理を終了する。ＣＰＵ３２は、問合せ結果が「キャンセル」を示すと判断する場合（Ｓ４２でＮＯ）には、スキャン実行部１４にスキャンを実行させることなく、図３の処理を終了する。
【００４５】
（第１の特別処理；図４）
続いて、図４を参照して、図３のＳ５０で実行される第１の特別処理の内容を説明する。Ｓ５２では、ＣＰＵ３２は、スキャン処理を開始する。Ｓ５２は、図３のＳ２２と同様である。
【００４６】
Ｓ５４では、ＣＰＵ３２は、最初の１ライン分のスキャンデータをＶＲＡＭ３８内に生成する際に、ヘッダ部１１０のＳＯＦ１１６内の幅領域ＳＷ、高さ領域ＳＨに、それぞれ、実際幅情報、仮の高さ情報を記述する。本実施例では、仮の高さ情報として最大高さ情報を採用する。最大高さ情報は、スキャン実行部１４がスキャン可能な最大原稿サイズ（例えばＡ３）の長辺の長さと、スキャン実行部１４が利用可能な主走査方向の最高スキャン解像度（例えば１２００ｄｐｉ）と、に基づいて、予め決定されている。即ち、最大高さ情報は、最大データサイズを有するスキャンデータ１３０の高さ（即ち主走査方向の画素数）を示す。
【００４７】
Ｓ６０では、ＣＰＵ３２は、ＶＲＡＭ３８内の空きメモリサイズが所定値以下になるまで、即ち、ＶＲＡＭ３８がメモリフルになるまで、１ライン分のスキャンデータをＶＲＡＭ３８内に生成することを繰り返す。ＣＰＵ３２は、ＶＲＡＭ３８がメモリフルになることなく、スキャンデータ１３０の全ての生成が終了した場合には、Ｓ６０でＮＯと判断してＳ６４に進む。上述したように、図３のＳ１２では、仮の圧縮率を利用して、スキャンデータ１３０の推測データサイズが算出される。このために、スキャンデータ１３０の実際の圧縮効率が比較的に高い場合には、スキャンデータ１３０の実際のデータサイズが推測データサイズよりも小さくなり、この結果、ＶＲＡＭ３８がメモリフルになることなく、スキャンデータ１３０の全てがＶＲＡＭ３８内に生成され得る。一方、ＣＰＵ３２は、ＶＲＡＭ３８がメモリフルになる場合には、Ｓ６０でＹＥＳと判断してＳ７０に進む。
【００４８】
Ｓ６４では、ＣＰＵ３２は、ヘッダ部１１０のＳＯＦ１１６内の高さ領域ＳＨに、最大高さ情報（Ｓ５４参照）に代えて実際高さ情報を記述する。ＣＰＵ３２は、さらに、ＤＮＬ１４４内に幅情報及び高さ情報が記述されていないフッタ部１４０をＶＲＡＭ３８内に生成する。これにより、実際幅情報及び実際高さ情報が記述されているヘッダ部１１０と、幅情報及び高さ情報が記述されていないフッタ部１４０と、を含むファイル１００が完成する。Ｓ６６は、図３のＳ２６と同様である。ＣＰＵ３２は、Ｓ６６が終了すると、ＶＲＡＭ３８内のファイル１００を消去して、図５の処理を終了する。
【００４９】
一方、Ｓ７０では、ＣＰＵ３２は、ＶＲＡＭ３８内の部分ファイルを対象送信先デバイスに送信する。１回目のＳ７０が実行される段階では、部分ファイルは、実際幅情報及び最大高さ情報が記述されているヘッダ部１１０と、スキャンデータ１３０の一部である部分スキャンデータと、を含む。
【００５０】
次いで、Ｓ７２では、ＣＰＵ３２は、Ｓ７０で送信された部分ファイルをＶＲＡＭ３８から消去して（即ちＶＲＡＭ３８内の領域を解放して）、スキャンデータ１３０の残りをＶＲＡＭ３８内に生成する。そして、ＣＰＵ３２は、ＶＲＡＭ３８がメモリフルになることなく、スキャンデータ１３０の全ての生成が終了したのか否かを判断する。ＣＰＵ３２は、ＶＲＡＭ３８がメモリフルになる場合には、Ｓ７２でＮＯと判断して、Ｓ７０を再び実行し（即ちスキャンデータ１３０の一部を含む部分ファイルを対象送信先デバイスに送信し）、Ｓ７２を再び実行する。一方、ＣＰＵ３２は、スキャンデータ１３０の全ての生成が終了した場合には、Ｓ７２でＹＥＳと判断して、Ｓ８０に進む。
【００５１】
Ｓ８０では、ＣＰＵ３２は、フッタ部１４０をＶＲＡＭ３８内に生成して、フッタ部１４０のＤＮＬ１４４内に実際幅情報及び実際高さ情報を記述する。これにより、ファイル１００が完成する。
【００５２】
Ｓ８２では、ＣＰＵ３２は、ＶＲＡＭ３８内の部分ファイルを対象送信先デバイスに送信する。当該部分ファイルは、スキャンデータ１３０の一部である部分スキャンデータと、フッタ部１４０と、を含む。Ｓ８２が実行されると、ファイル１００の全てが対象送信先デバイス内に記憶される。以下では、対象送信先デバイス内のファイル１００のことを「対象ファイル」と呼ぶ。ＣＰＵ３２は、Ｓ８２が終了すると、ＶＲＡＭ３８内の部分ファイルを消去して、Ｓ８４に進む。
【００５３】
Ｓ８４では、ＣＰＵ３２は、対象送信先デバイスから対象ファイルを受信可能であるのか否かを判断する。具体的には、ＣＰＵ３２は、対象ファイルの送信を要求するための要求コマンドを対象送信先デバイスに送信して、対象送信先デバイスから応答コマンドを受信する場合に、対象送信先デバイスから対象ファイルを受信可能であると判断して（Ｓ８４でＹＥＳ）、Ｓ８６に進む。一方、ＣＰＵ３２は、対象送信先デバイスから応答コマンドを受信しない場合に、対象送信先デバイスから対象ファイルを受信不可能であると判断して（Ｓ８４でＮＯ）、図４の処理を終了する。この場合、対象送信先デバイスでは、実際幅情報及び最大高さ情報が記述されているヘッダ部１１０と、実際幅情報及び実際高さ情報が記述されているフッタ部１４０と、を含む対象ファイルが利用される。
【００５４】
Ｓ８６では、ＣＰＵ３２は、対象ファイルの内容を変更するためのＪＰＥＧファイル変更処理を実行する。具体的には、ＣＰＵ３２は、ＶＲＡＭ３８がメモリフルにならないように、対象送信先デバイスから、対象ファイルを構成する複数個の部分ファイルのうちの１個目の部分ファイルを受信して、１個目の部分ファイルをＶＲＡＭ３８内に記憶させる。１個目の部分ファイルは、ヘッダ部１１０と、スキャンデータ１３０の一部である部分スキャンデータと、を含む。この場合、ＣＰＵ３２は、ヘッダ部１１０のＳＯＦ１１６内の高さ領域ＳＨに、最大高さ情報（Ｓ５４参照）に代えて実際高さ情報を記述して、変更済み部分ファイルを生成する。そして、ＣＰＵ３２は、対象送信先デバイス内の１個目の部分ファイルに代えて変更済み部分ファイルが記憶されるように、変更済み部分ファイルを対象送信先デバイスに送信する。これにより、送信対象先デバイスでは、１個目の部分ファイルが変更済み部分ファイルに変更される。
【００５５】
次いで、ＣＰＵ３２は、ＶＲＡＭ３８内の変更済み部分ファイルを消去して、対象送信先デバイスから２個目の部分ファイルを受信して、２個目の部分ファイルをＶＲＡＭ３８内に記憶させる。２個目の部分ファイルは、スキャンデータ１３０の一部である部分スキャンデータを少なくとも含み、フッタ部１４０を含み得る。ＣＰＵ３２は、２個目の部分ファイルがフッタ部１４０を含まない場合には、２個目の部分ファイルを変更することなく、２個目の部分ファイルを対象送信先デバイスに送信する。これにより、送信対象先デバイスでは、２個目の部分ファイルがそのまま維持される。一方、ＣＰＵ３２は、２個目の部分ファイルがフッタ部１４０を含む場合には、フッタ部１４０のＤＮＬ１４４から実際幅情報及び実際高さ情報を消去して、変更済み部分ファイルを生成する。そして、ＣＰＵ３２は、対象送信先デバイス内の２個目の部分ファイルに代えて変更済み部分ファイルが記憶されるように、変更済み部分ファイルを対象送信先デバイスに送信する。これにより、送信対象先デバイスでは、２個目の部分ファイルが変更済み部分ファイルに変更される。ＣＰＵ３２は、フッタ部１４０を含む変更済み部分ファイルを対象送信先デバイスに送信するまで、上記と同様の処理を実行する。ＣＰＵ３２は、フッタ部１４０を含む変更済み部分ファイルを対象送信先デバイスに送信すると、Ｓ８６を終了し、図５の処理を終了する。この場合、対象送信先デバイスでは、実際幅情報及び実際高さ情報が記述されているヘッダ部１１０と、幅情報及び高さ情報が記述されていないフッタ部１４０と、を含む対象ファイルが利用される。
【００５６】
（具体的なケース；図５〜図７）
続いて、図５〜図７を参照して、図３及び図４の各処理によって実現される具体的なケースを説明する。なお、各ケースの丸で囲まれた数字は、各データの生成順序（即ち各データの送信順序）を示す。
【００５７】
（ケースＡ；図５）
図５のケースＡは、推測データサイズが空きメモリサイズ以下である例（図３のＳ２０でＹＥＳ）を示す。また、ケースＡでは、対象送信先デバイスが端末ＴＥである。スキャナＳＣは、ヘッダ部１１０、複数個の部分スキャンデータ１３０ａ〜１３０ｃ、及び、フッタ部１４０をＶＲＡＭ３８内に順次生成する（Ｓ２２）。次いで、スキャナＳＣは、実際高さ情報ＡＨをヘッダ部１１０に記述する（Ｓ２４）。図示省略しているが、実際幅情報もヘッダ部１１０に記述される。そして、スキャナＳＣは、実際幅情報及び実際高さ情報ＡＨが記述されているヘッダ部１１０を含むファイルを端末ＴＥに送信する（Ｓ２６）。
【００５８】
端末ＴＥは、ケースＡのファイルを表示すべき際に、ヘッダ部１１０内の実際幅情報及び実際高さ情報ＡＨを利用する。具体的には、端末ＴＥは、ヘッダ部１１０内の実際幅情報及び実際高さ情報ＡＨによって示される幅方向の画素数及び高さ方向の画素数を特定する。次いで、端末ＴＥは、ファイル内の圧縮済みのスキャンデータ１３０ａ〜１３０ｃを解凍して、特定済みの幅方向の画素数及び特定済みの高さ方向の画素数を有するビットマップデータを生成する。そして、端末ＴＥは、ビットマップデータを表示用の画像データに変換して、当該画像データによって表わされる表示画像を表示する。
【００５９】
ケースＡに示されるように、スキャナＳＣは、推測データサイズが空きメモリサイズ以下である場合に、スキャンデータ１３０ａ〜１３０ｃの全てをＶＲＡＭ３８内に生成し、スキャンデータ１３０ａ〜１３０ｃの全てがＶＲＡＭ３８内に記憶されている状態で、実際高さ情報ＡＨをヘッダ部１１０に記述する。従って、スキャナＳＣは、実際高さ情報ＡＨが記述されているヘッダ部１１０を含むファイルを端末ＴＥに適切に送信することができる。この結果、端末ＴＥは、ヘッダ部１１０内の実際高さ情報を利用して、スキャンデータ１３０ａ〜１３０ｃによって表わされる表示画像を適切に表示することができる。
【００６０】
（ケースＢ；図５）
図５のケースＢは、推測データサイズが空きメモリサイズよりも大きく、かつ、ＵＳＢメモリ２０を利用可能である例（図３のＳ２０でＮＯ、Ｓ３０でＹＥＳ）を示す。ケースＢは、ＶＲＡＭ３８の代わりに、ＵＳＢメモリ２０が利用される点を除くと、ケースＡと同様である（Ｓ３２〜Ｓ３６）。
【００６１】
ケースＢに示されるように、スキャナＳＣは、推測データサイズが空きメモリサイズよりも大きく、かつ、ＵＳＢメモリ２０を利用可能である場合に、スキャンデータ１３０ａ〜１３０ｃの全てをＵＳＢメモリ２０内に生成し、スキャンデータ１３０ａ〜１３０ｃの全てがＵＳＢメモリ２０内に記憶されている状態で、実際高さ情報ＡＨをヘッダ部１１０に記述する。このために、スキャナＳＣは、実際高さ情報ＡＨが記述されているヘッダ部１１０を含むファイルを端末ＴＥに適切に送信することができる。この結果、端末ＴＥは、ヘッダ部１１０内の実際高さ情報を利用して、スキャンデータ１３０ａ〜１３０ｃによって表わされる表示画像を適切に表示することができる。
【００６２】
（ケースＣ１；図６）
図６のケースＣ１は、推測データサイズが空きメモリサイズよりも大きく、かつ、ＵＳＢメモリ２０を利用不可能である例（図３のＳ２０でＮＯ、Ｓ３０でＮＯ）を示す。また、ケースＣ１では、対象送信先デバイスが端末ＴＥである。スキャナＳＣは、ヘッダ部１１０及び部分スキャンデータ１３０ａをＶＲＡＭ３８内に順次生成する（図４のＳ５２）。スキャナＳＣは、実際幅情報（図示省略）及び最大高さ情報ＭＨをヘッダ部１１０に記述する（Ｓ５４）。部分スキャンデータ１３０ａがＶＲＡＭ３８内に生成されると、ＶＲＡＭ３８がメモリフルになる（Ｓ６０でＹＥＳ）。この場合、スキャナＳＣは、ヘッダ部１１０及び部分スキャンデータ１３０ａを含む部分ファイルを端末ＴＥに送信し（Ｓ７０）、その後、当該部分ファイルをＶＲＡＭ３８から消去する。
【００６３】
次いで、スキャナＳＣは、各部分スキャンデータ１３０ｂ，１３０ｃをＶＲＡＭ３８内に順次生成する（Ｓ７２）。部分スキャンデータ１３０ｃがＶＲＡＭ３８内に生成されると、ＶＲＡＭ３８がメモリフルになる（Ｓ７２でＮＯ）。この場合、スキャナＳＣは、各部分スキャンデータ１３０ｂ，１３０ｃを含む部分ファイルを端末ＴＥに送信し（Ｓ７０）、その後、当該部分ファイルをＶＲＡＭ３８から消去する。
【００６４】
次いで、スキャナＳＣは、部分スキャンデータ１３０ｄをＶＲＡＭ３８内に生成し、この結果、スキャンデータの全ての生成が終了する（Ｓ７２でＹＥＳ）。この場合、スキャナＳＣは、フッタ部１４０をＶＲＡＭ３８内に生成し、実際幅情報（図示省略）及び実際高さ情報ＡＨをフッタ部１４０に記述する（Ｓ８０）。そして、スキャナＳＣは、部分スキャンデータ１３０ｄ及びフッタ部１４０を含む部分ファイルを端末ＴＥに送信し（Ｓ８２）、その後、当該部分ファイルをＶＲＡＭ３８から消去する。
【００６５】
スキャナＳＣが対象送信先デバイス（ケースＣ１では端末ＴＥ）からファイルを受信することができるのか否かは、通常、対象送信先デバイスと通信するための通信プロトコルに依存する。例えば、端末ＴＥは、通信プロトコル「Ｐ１」を利用して、スキャナＳＣからファイルを受信することができるが、スキャナＳＣからの要求コマンドに応じて、ファイルをスキャナＳＣに送信することができない。このために、スキャナＳＣは、端末ＴＥからファイルを受信することができず（Ｓ８４でＮＯ）、この結果、端末ＴＥでは、実際幅情報及び最大高さ情報ＭＨが記述されているヘッダ部１１０と、実際幅情報及び実際高さ情報ＡＨが記述されているフッタ部１４０と、を含むファイルが利用される。
【００６６】
フッタ部１４０内の情報（即ち実際幅情報及び実際高さ情報ＡＨ）を利用可能であるのか否かは、端末ＴＥに依存する。端末ＴＥがフッタ部１４０内の情報を利用可能である場合には、端末ＴＥは、ヘッダ部１１０内の情報（即ち実際幅情報及び最大高さ情報ＭＨ）を利用せずに、フッタ部１４０内の情報を利用して、表示画像ＤＩ１を表示する。この結果、高さ方向（図６の上下方向）において、表示画像ＤＩ１の長さは、スキャンデータ１３０ａ〜１３０ｄによって表わされるスキャン画像の長さに一致する。
【００６７】
上述したように、スキャナＳＣは、スキャンデータ１３０ａ〜１３０ｄの全てをＶＲＡＭ３８内に同時的に記憶させずに済むので、ＶＲＡＭ３８の使用メモリサイズを低減させつつ、ファイルを生成して端末ＴＥに送信することができる。しかも、スキャナＳＣは、スキャンデータ１３０ａ〜１３０ｄの全てをＶＲＡＭ３８内に生成した後に、実際高さ情報ＡＨをフッタ部１４０に記述し、実際高さ情報ＡＨが記述されているフッタ部１４０を端末ＴＥに送信する。このために、スキャナＳＣは、実際高さ情報ＡＨを含むファイルを端末ＴＥに適切に送信することができる。この結果、端末ＴＥは、フッタ部１４０内の実際高さ情報ＡＨを利用して、表示画像ＤＩ１を適切に表示することができる。
【００６８】
一方、端末ＴＥがフッタ部１４０内の情報を利用不可能である場合には、端末ＴＥは、ヘッダ部１１０内の情報を利用して、表示画像ＤＩ２を表示する。具体的には、端末ＴＥは、スキャンデータ１３０ａ〜１３０ｄの高さ方向の画素数が最大高さ情報ＭＨによって示される画素数に満たないと判断する。この場合、端末ＴＥは、通常、不足の画素数を増やすために、予め決められているパディング画像データをスキャンデータ１３０ａ〜１３０ｄに追加（即ちパディング）する。この結果、高さ方向において、表示画像ＤＩ２の長さは、スキャンデータ１３０ａ〜１３０ｄによって表わされるスキャン画像の長さと、パディング画像データによって表わされるパディング画像の長さと、の和に一致する。
【００６９】
なお、仮に、スキャンデータ１３０ａ〜１３０ｄの高さ方向の画素数がヘッダ部１１０内の高さ情報によって示される画素数よりも大きい場合には、端末ＴＥは、通常、過剰の画素数を減らすために、スキャンデータ１３０ａ〜１３０ｄの一部を消去して、表示画像を表示する。この結果、高さ方向において、スキャン画像の一部を含まない表示画像が表示される。ただし、本実施例では、スキャナＳＣで生成され得る最大データサイズに基づいて決定される最大高さ情報ＭＨが、ヘッダ部１１０内に記述される。このために、スキャンデータ１３０ａ〜１３０ｄの高さ方向の画素数がヘッダ部１１０内の最大高さ情報ＭＨによって示される画素数よりも大きくなることが抑制される。この結果、スキャン画像の全てを含む表示画像が適切に表示される。なお、変形例では、図４のＳ５４で記述される仮の高さ情報は、最大高さ情報でなくてもよく、最大高さ情報よりも小さい画素数又は大きい画素数を示す高さ情報であってもよい。
【００７０】
（ケースＣ２；図７）
図７のケースＣ２では、対象送信先デバイスがサーバＳＥ１である点が、図６のケースＣ１とは異なる。各データ１１０，１３０ａ〜１３０ｄ，フッタ部１４０が順次生成されてサーバＳＥ１に送信される点（図４のＳ５２，Ｓ５４，Ｓ７０〜Ｓ８２）は、ケースＣ１と同様である。
【００７１】
ケースＣ２では、スキャナＳＣは、サーバＳＥ１からファイルを受信することができる（Ｓ８４でＹＥＳ）。即ち、サーバＳＥ１と通信するための通信プロトコル「Ｐ２」は、スキャナＳＣがサーバＳＥ１からファイルを受信することを許容するプロトコルである。このようなプロトコルの一例として、例えば、ＦＴＰ（File Transfer Protocolの略）、ＣＩＦＳ（Common Internet File Systemの略）等を挙げることができる。
【００７２】
スキャナＳＣは、サーバＳＥ１からファイルを受信して、以下のように、ＪＰＥＧファイル変更処理を実行する（Ｓ８６）。スキャナＳＣは、まず、ヘッダ部１１０及び部分スキャンデータ１３０ａを含む部分ファイルをサーバＳＥ１から受信して、当該部分ファイルをＶＲＡＭ３８内に記憶させる。次いで、スキャナＳＣは、最大高さ情報ＭＨに代えて、実際高さ情報ＡＨをヘッダ部１１０に記述する。そして、スキャナＳＣは、実際高さ情報ＡＨが記述されているヘッダ部１１０を含む変更済み部分ファイルをサーバＳＥ１に送信する。これにより、サーバＳＥ１では、最大高さ情報ＭＨが記述されているヘッダ部１１０を含む部分ファイルに代えて、実際高さ情報ＡＨが記述されているヘッダ部１１０を含む変更済み部分ファイルが記憶される。
【００７３】
次いで、スキャナＳＣは、各部分スキャンデータ１３０ｂ，１３０ｃを含む部分ファイルをサーバＳＥ１から受信して、当該部分ファイルを変更することなく、当該部分ファイルをサーバＳＥ１に送信する。これにより、サーバＳＥ１では、当該部分ファイルが維持される。
【００７４】
次いで、スキャナＳＣは、部分スキャンデータ１３０ｄ及びフッタ部１４０を含む部分ファイルをサーバＳＥ１から受信して、当該部分ファイルをＶＲＡＭ３８内に記憶させる。次いで、スキャナＳＣは、実際高さ情報ＡＨ（さらには図示省略の実際幅情報）をフッタ部１４０から消去する。そして、スキャナＳＣは、実際高さ情報ＡＨが記述されていないフッタ部１４０を含む変更済み部分ファイルをサーバＳＥ１に送信する。これにより、サーバＳＥ１では、実際高さ情報ＡＨが記述されているフッタ部１４０を含む部分ファイルに代えて、実際高さ情報ＡＨが記述されていないフッタ部１４０を含む変更済み部分ファイルが記憶される。
【００７５】
本ケースＣ２によると、スキャナＳＣは、サーバＳＥ１内のファイルを変更して、実際高さ情報ＡＨが記述されているヘッダ部１１０を含むファイルをサーバＳＥ１に適切に記憶させることができる。
【００７６】
（対応関係）
ＣＰＵ３２及びＲＯＭ３４が、「制御部」の一例である。ＶＲＡＭ３８、ＵＳＢメモリ２０が、それぞれ、「内部メモリ」、「外部メモリ」の一例である。実際高さ情報ＡＨ、最大高さ情報ＭＨが、それぞれ、「実際サイズ情報」、「仮のサイズ情報」の一例である。Ｓ２０でＹＥＳと判断される場合、又は、Ｓ３０でＹＥＳと判断される場合が、「所定の条件が満たされる場合」の一例である。Ｓ２０でＮＯと判断され、かつ、Ｓ３０でＮＯと判断される場合が、「所定の条件が満たされない場合」の一例である。図６及び図７において、ヘッダ部１１０及び部分スキャンデータ１３０ａを含む部分ファイルが、「第１の部分ファイル」の一例である。部分スキャンデータ１３０ｂ，１３０ｃを含む部分ファイル、又は、部分スキャンデータ１３０ｄ及びフッタ部１４０を含む部分ファイルが、「第２の部分ファイル」の一例である。
【００７７】
（第２実施例）
本実施例では、図３のＳ１０で取得されるスキャン指示が、複数個の送信先デバイスを示す複数個の送信先情報を含むことを想定している。この場合、Ｓ２６又はＳ３６では、ＣＰＵ３２は、複数個の送信先デバイスの全てにファイルを送信する。Ｓ５０の第１の特別処理では、図４の処理に代えて、図８の処理が実行される。
【００７８】
（第１の特別処理；図８）
図８のＳ５２〜Ｓ６６は、図４のＳ５２〜Ｓ６６と同様である。ただし、Ｓ６６では、ＣＰＵ３２は、複数個の送信先デバイスの全てにファイルを送信する。Ｓ６８では、ＣＰＵ３２は、複数個の送信先デバイスのうちの少なくとも１個の送信先デバイスからファイルを受信可能であるのか否かを判断する。具体的には、ＣＰＵ３２は、まず、ＮＶＲＡＭ３６から、複数個の送信先デバイスの名称に対応付けられている複数個の通信プロトコルを読み出す。そして、ＣＰＵ３２は、複数個の通信プロトコルの中に所定の通信プロトコル（本実施例ではＦＴＰ又はＣＩＦＳ）が存在する場合には、Ｓ６８でＹＥＳと判断してＳ７０Ｂに進み、複数個の通信プロトコルの中に所定の通信プロトコルが存在しない場合にはＳ６８でＮＯと判断してＳ７０Ａに進む。
【００７９】
Ｓ７０Ａ〜Ｓ８２Ａは、図４のＳ７０〜Ｓ８２と同様である。ただし、Ｓ７０Ａ及びＳ８２Ａでは、ＣＰＵ３２は、複数個の送信先デバイスの全てに部分ファイルを送信する。Ｓ８２Ａが終了すると、図８の処理が終了する。
【００８０】
Ｓ７０Ｂ〜Ｓ８２Ｂは、図４のＳ７０〜Ｓ８２と同様である。ただし、Ｓ７０Ｂ及びＳ８２Ｂでは、ＣＰＵ３２は、複数個の送信先デバイスのうちの１個の対象送信先デバイスのみに部分ファイルを送信する。対象送信先デバイスは、上記の所定の通信プロトコルに対応付けられている名称を有するデバイス（例えばサーバＳＥ１）である。Ｓ９０は、図４のＳ８６と同様である。ただし、Ｓ９０では、ＣＰＵ３２は、対象送信先デバイス内のファイルを変更する際に、複数個の送信先デバイスの全てにファイルを送信する。これにより、複数個の送信先デバイスのいずれにおいても、実際高さ情報が記述されているヘッダ部を含むファイルが記憶される。
【００８１】
（ケースＤ；図９）
図９を参照して、本実施例の具体的なケースＤを説明する。ケースＤでは、スキャン指示内の送信先情報は、２個のサーバＳＥ１，ＳＥ２を示す。スキャナＳＣは、各データ１１０，１３０ａ〜１３０ｄ，フッタ部１４０を順次生成して、各データ１１０等をサーバＳＥ１のみに順次送信する（図８のＳ５２，Ｓ５４，Ｓ７０Ｂ〜Ｓ８２Ｂ）。これにより、サーバＳＥ１において、最大高さ情報ＭＨが記述されているヘッダ部１１０と、実際高さ情報ＡＨが記述されているフッタ部１４０と、を含むファイルが記憶される。
【００８２】
次いで、スキャナＳＣは、以下のように、ＪＰＥＧファイル変更処理を実行する（Ｓ９０）。即ち、スキャナＳＣは、サーバＳＥ１からヘッダ部１１０を含む部分ファイルを受信して、最大高さ情報ＭＨに代えて実際高さ情報ＡＨをヘッダ部１１０内に記述する。そして、スキャナＳＣは、変更済み部分ファイルをサーバＳＥ１，ＳＥ２の全てに送信する。これにより、サーバＳＥ１では、最大高さ情報ＭＨが記述されているヘッダ部１１０を含む部分ファイルに代えて、実際高さ情報ＡＨが記述されているヘッダ部１１０を含む変更済み部分ファイルが記憶される。また、サーバＳＥ２では、変更済み部分ファイルが新たに記憶される。
【００８３】
次いで、スキャナＳＣは、各部分スキャンデータ１３０ｂ，１３０ｃを含む部分ファイルをサーバＳＥ１から受信して、当該部分ファイルを変更することなく、当該部分ファイルをサーバＳＥ１，ＳＥ２の全てに送信する。これにより、サーバＳＥ１では、当該部分ファイルが維持され、サーバＳＥ２では、当該部分ファイルが新たに記憶される。
【００８４】
次いで、スキャナＳＣは、部分スキャンデータ１３０ｄ及びフッタ部１４０を含む部分ファイルをサーバＳＥ１から受信して、実際高さ情報ＡＨをフッタ部１４０から消去する。そして、スキャナＳＣは、変更済み部分ファイルをサーバＳＥ１，ＳＥ２の全てに送信する。これにより、サーバＳＥ１では、実際高さ情報ＡＨが記述されているフッタ部１４０を含む部分ファイルに代えて、実際高さ情報ＡＨが記述されていないフッタ部１４０を含む変更済み部分ファイルが記憶される。また、サーバＳＥ２では、変更済み部分ファイルが新たに記憶される。
【００８５】
本実施例によると、スキャナＳＣは、実際高さ情報ＡＨが記述されているヘッダ部１１０を含むファイルを複数個の送信先デバイス（図９の例では２個のサーバＳＥ１，ＳＥ２）のそれぞれに適切に記憶させることができる。なお、本実施例では、サーバＳＥ１、サーバＳＥ２が、それぞれ、「対象送信先デバイス」、「１個以上の送信先デバイス」の一例である。
【００８６】
（第３実施例；図１０）
本実施例では、ＣＰＵ３２は、端末ＴＥからスキャン指示を取得する場合（図３のＳ１０でＹＥＳ）に、スキャン指示の送信元の端末ＴＥで利用されているスキャナドライバが所定のスキャナドライバであるのか否かを判断する。所定のスキャナドライバは、仮の高さ情報（即ち最大高さ情報）がヘッダ部１１０に記述されていると共に、実際高さ情報がフッタ部１４０に記述されている場合に、フッタ部１４０から実際高さ情報を読み出して、仮の高さ情報に代えて実際高さ情報をヘッダ部１１０に記述するスキャナドライバである。ＣＰＵ３２は、スキャン指示内のドライバ情報（例えばソフトウェア名）が上記の所定のスキャナドライバを示さない場合には、図３のＳ１２に進み、第１実施例と同様に、Ｓ１２〜Ｓ５０を実行する。一方、ＣＰＵ３２は、スキャン指示内のドライバ情報が上記の所定のスキャナドライバを示す場合には、図３のＳ１２〜Ｓ５０を実行せずに、第２の特別処理を実行する。
【００８７】
図１０のケースＥを参照して、第２の特別処理の内容を説明する。ＣＰＵ３２は、まず、ＶＲＡＭ３８内の現在の空きメモリサイズよりも小さい所定のデータサイズを有する記憶領域をＶＲＡＭ３８内に確保する。そして、ＣＰＵ３２は、上記の所定のデータサイズを超えない範囲で、ヘッダ部１１０及び部分スキャンデータ１３０ａをＶＲＡＭ３８内に順次生成する。この際に、ＣＰＵ３２は、幅情報及び高さ情報をヘッダ部１１０に記述しない。そして、ＣＰＵ３２は、幅情報及び高さ情報が記述されていないヘッダ部１１０を含む部分ファイルを端末ＴＥに送信し、その後、当該部分ファイルをＶＲＡＭ３８から消去する。
【００８８】
次いで、ＣＰＵ３２は、上記の所定のデータサイズを超えない範囲で、各部分スキャンデータ１３０ｂ，１３０ｃをＶＲＡＭ３８内に順次生成する。そして、ＣＰＵ３２は、各部分スキャンデータ１３０ｂ，１３０ｃを含む部分ファイルを端末ＴＥに送信し、その後、当該部分ファイルをＶＲＡＭ３８から消去する。
【００８９】
次いで、ＣＰＵ３２は、部分スキャンデータ１３０ｄ及びフッタ部１４０をＶＲＡＭ３８内に順次生成する。この際に、ＣＰＵ３２は、実際幅情報（図示省略）及び実際高さ情報ＡＨをフッタ部１４０に記述する。そして、ＣＰＵ３２は、実際幅情報及び実際高さ情報ＡＨが記述されているフッタ部１４０を含む部分ファイルを端末ＴＥに送信する。これにより、端末ＴＥにおいて、幅情報及び高さ情報が記述されていないヘッダ部１１０と、実際幅情報及び実際高さ情報ＡＨが記述されているフッタ部１４０と、を含むファイルが記憶される。
【００９０】
端末ＴＥのスキャナドライバは、ファイルを記憶した後に、フッタ部１４０から実際幅情報及び実際高さ情報ＡＨを読み出して、実際幅情報及び実際高さ情報ＡＨをヘッダ部１１０に記述する。スキャナドライバは、さらに、フッタ部１４０から実際幅情報及び実際高さ情報ＡＨを消去する。これにより、端末ＴＥにおいて、実際幅情報及び実際高さ情報ＡＨが記述されているヘッダ部１１０と、幅情報及び高さ情報が記述されていないフッタ部１４０と、を含むファイルが記憶される。
【００９１】
本実施例によると、スキャナＳＣは、ＶＲＡＭ３８内の空きメモリサイズが十分であるのか否かに関わらず（即ちＳ２０の判断に関わらず）、さらには、ＵＳＢメモリ２０を利用可能であるのか否かに関わらず（即ちＳ３０の判断に関わらず）、第２の特別処理を実行する。このために、スキャナＳＣは、スキャンデータ１３０ａ〜１３０ｄの全てをＶＲＡＭ３８内に同時的に記憶させずに済むので、ＶＲＡＭ３８の使用メモリサイズを低減させつつ、ファイルを生成して端末ＴＥに送信することができる。特に、端末ＴＥが実際高さ情報ＡＨをヘッダ部１１０に記述するので、実際高さ情報ＡＨが記述されているヘッダ部１１０を含むファイルを端末ＴＥに適切に記憶させることができる。しかも、スキャナＳＣは、図３のＳ１２、Ｓ２０、Ｓ３０等の処理を実行せずに済むので、ファイルを端末ＴＥに迅速に送信することができる。
【００９２】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【００９３】
（変形例１）スキャナＳＣによって生成される画像ファイルは、ＪＰＥＧファイルでなくてもよく、スキャンデータの実際サイズ情報が記述される他の形式のファイルであってもよい。また、実際サイズ情報は、実際高さ情報でなくてもよく、スキャンデータの合計データサイズ等であってもよい。即ち、実際サイズ情報は、１枚の原稿のスキャンが完了するまで不明である情報であればよい。
【００９４】
（変形例２）図３のＳ３０〜Ｓ３６を省略して、Ｓ２０でＮＯの場合にＳ４０に進むようにしてもよい。即ち、「第２の判断部」は省略可能である。また、図３のＳ１２〜Ｓ２６を省略して、Ｓ１０でＹＥＳの場合にＳ３０に進むようにしてもよい。即ち、「解像度情報取得部」、「原稿サイズ情報取得部」、「算出部」、及び、「第１の判断部」は省略可能である。また、図４のＳ８４及びＳ８６を省略してもよい。即ち「変更部」は省略可能である。また、図３のＳ４０及びＳ４２を省略して、Ｓ３０でＮＯの場合にＳ５０に進むようにしてもよい。即ち、「表示制御部」は省略可能である。
【００９５】
（変形例３）上記の各実施例では、スキャナＳＣのＣＰＵ３２がプログラムＰＧを実行することによって、図３〜図１０の各処理が実現される。これに代えて、これらの各処理のうちの少なくとも１つの処理は、論理回路等のハードウェアによって実現されてもよい。
【００９６】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００９７】
２：通信システム、４：ＬＡＮ、ＳＣ：スキャナ、ＴＥ：端末、ＳＥ１，ＳＥ２：サーバ、１０：操作部、１２：表示部、１４：スキャン実行部、１６：ネットワークインターフェイス、１８：ＵＳＢインターフェイス、２０：ＵＳＢメモリ、３０：制御回路、３２：ＣＰＵ、３４：ＲＯＭ、３６：ＮＶＲＡＭ、３８：ＶＲＡＭ、１００：ＪＰＥＧファイル、１１０：ヘッダ部、１３０：スキャンデータ、１３０ａ〜１３０ｄ：部分スキャンデータ、１４０：フッタ部、ＡＨ：実際高さ情報、ＭＨ：最大高さ情報、ＤＩ１，ＤＩ２：表示画像
【図１】
0006443043.tif 000002
【図２】
0006443043.tif 000003
【図３】
0006443043.tif 000004
【図４】
0006443043.tif 000005
【図５】
0006443043.tif 000006
【図６】
0006443043.tif 000007
【図７】
0006443043.tif 000008
【図８】
0006443043.tif 000009
【図９】
0006443043.tif 000010
【図１０】
0006443043.tif 000011