(57)【特許請求の範囲】
【請求項１】
外部記憶装置を利用するスキャナ装置であって、
内部記憶装置と、
Ｍ枚（前記Ｍは１以上の整数）のスキャン対象物がスキャンされる場合に、前記Ｍ枚のスキャン対象物を表わす元データを、前記内部記憶装置内に生成する元データ生成部と、
前記元データを用いて、ダイジェスト値を算出し、前記元データと前記ダイジェスト値とを用いて、前記Ｍ枚のスキャン対象物を表わすＭページ分の目的データを、前記外部記憶装置内に生成する目的データ生成部と、を備え、
前記元データ生成部は、
前記Ｍ枚のスキャン対象物のうちの１枚のスキャン対象物を表わす対象元データが生成されるべき場合に、予め決められた第１の値を、第１種のサイズ情報として含むヘッダ情報を、前記内部記憶装置内に生成するヘッダ情報生成部であって、前記第１種のサイズ情報は、スキャン方向に対応する画像データのサイズである第１種のサイズを示す、前記ヘッダ情報生成部と、
前記１枚のスキャン対象物を表わす実画像データを、前記内部記憶装置内に生成する実画像データ生成部と、
前記実画像データの前記第１種のサイズが、前記第１の値より小さい第１の場合に、前記実画像データと特定画像データとを含む全体画像データの前記第１種のサイズが、前記第１の値に一致するように、前記特定画像データを、前記内部記憶装置内に生成する特定画像データ生成部と、を備え、
前記目的データ生成部は、
前記第１の場合に、前記ヘッダ情報と前記全体画像データとを含む第１の前記対象元データを構成する複数個の第１の部分元データのそれぞれが、前記内部記憶装置内に生成される毎に、前記内部記憶装置内の当該第１の部分元データを用いて、前記ダイジェスト値を算出するための算出処理を実行する算出部と、
前記第１の場合に、前記複数個の第１の部分元データのそれぞれを、前記外部記憶装置内に順次書き込む書込部と、を備える、
スキャナ装置。
【請求項２】
前記元データ生成部は、さらに、
前記対象元データが生成される過程において、前記内部記憶装置内の空き容量が不足することを監視する監視部を備え、
前記元データ生成部は、前記第１の場合において、前記内部記憶装置内の空き容量が不足する場合に、１個の前記第１の部分元データの生成を終了する、請求項１に記載のスキャナ装置。
【請求項３】
前記第１の値は、前記スキャン方向に対応する最大画像データのサイズ以上のサイズを示す値であり、
前記最大画像データは、前記スキャナ装置がスキャン可能な最大サイズを有する１枚の最大スキャン対象物がスキャンされる場合に生成される画像データである、請求項１又は２に記載のスキャナ装置。
【請求項４】
前記元データ生成部は、さらに、
前記第１の場合に、前記１枚のスキャン対象物に対する実際のスキャン結果に基づいて得られる実サイズ情報であって、前記実画像データの前記第１種のサイズを示す前記実サイズ情報を含むフッタ情報を、前記内部記憶装置内に生成するフッタ情報生成部を備え、
前記第１の場合に、前記第１の対象元データは、前記フッタ情報をさらに含む、請求項１から３のいずれか一項に記載のスキャナ装置。
【請求項５】
前記特定画像データ生成部は、
前記第１の場合において、前記実画像データの一部である境界実画像データであって、前記実画像データと前記特定画像データとの境界に隣接する前記境界実画像データを構成する全ての画素が白色を示す場合に、前記白色と異なる所定の色を示す各画素によって構成される第１の前記特定画像データを、前記内部記憶装置内に生成し、
前記第１の場合において、前記境界実画像データを構成する少なくとも１個の画素が、前記白色と異なる色を示す場合に、前記白色を示す各画素によって構成される第２の前記特定画像データを、前記内部記憶装置内に生成する、請求項１から３のいずれか一項に記載のスキャナ装置。
【請求項６】
前記ヘッダ情報生成部は、前記１枚のスキャン対象物に対する実際のスキャン結果に基づいて得られる第２の値を、第２種のサイズ情報としてさらに含む前記ヘッダ情報を、前記内部記憶装置内に生成し、
前記第２種のサイズ情報は、前記スキャン方向に直交する方向に対応する画像データのサイズである第２種のサイズを示す、請求項１から５のいずれか一項に記載のスキャナ装置。
【請求項７】
前記特定画像データ生成部は、前記実画像データの前記第１種のサイズが、前記第１の値に一致する第２の場合に、前記特定画像データを、前記内部記憶装置内に生成せず、
前記算出部は、さらに、前記第２の場合に、前記ヘッダ情報と前記実画像データとを含むとともに前記特定画像データを含まない第２の前記対象元データを構成する複数個の第２の部分元データのそれぞれが、前記内部記憶装置内に生成される毎に、前記内部記憶装置内の当該第２の部分元データを用いて、前記算出処理を実行し、
前記書込部は、さらに、前記第２の場合に、前記複数個の第２種の部分元データのそれぞれを、前記外部記憶装置内に順次書き込む、請求項１から６のいずれか一項に記載のスキャナ装置。
【請求項８】
前記目的データ生成部は、さらに、
前記ダイジェスト値を暗号化することによって署名値を生成する署名値生成部を備え、
前記目的データ生成部は、前記元データと前記署名値とを含む前記目的データを、前記外部記憶装置内に生成する、請求項１から７のいずれか一項に記載のスキャナ装置。
【請求項９】
前記外部記憶装置が装着される装着部をさらに備える、請求項１から８のいずれか１項に記載のスキャナ装置。
【請求項１０】
スキャナ装置であって、
スキャン対象物がスキャンされる場合に、スキャン方向に対応する画像データのサイズである第１種のサイズを示す第１種のサイズ情報として予め決められた第１の値を含むヘッダ情報と、前記スキャン対象物を表わす実画像データと、を含む元データを生成する元データ生成部と、
前記元データを構成する複数個の部分元データを順次用いて、ダイジェスト値を算出するための算出処理を順次実行する算出部と、を備え、
前記元データ生成部は、前記実画像データの前記第１種のサイズが、前記第１の値より小さい場合に、補完済み画像データの前記第１種のサイズが、前記第１の値に一致するように、前記実画像データを特定画像データで補完して、前記特定画像データをさらに含む前記元データを生成する、スキャナ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、スキャン対象物を表わす元データを生成するための技術を開示する。
【背景技術】
【０００２】
例えば、特許文献１には、スキャンされた紙情報を用いて、ＰＤＦの文書データを生成するスキャナ装置が開示されている。このスキャナ装置は、ＰＤＦの文書データからハッシュ値を生成し、ハッシュ値からタイムスタンプトークンを生成する。さらに、スキャナ装置は、タイムスタンプトークンを文書データに埋め込むことによって、タイムスタンプ付きの文書データを生成する。なお、ＰＤＦの文書データは、ＪＰＥＧデータを含む。ＪＰＥＧデータは、通常、高さ情報を含むヘッダ情報と、画像データと、を含む。高さ情報は、スキャン方向に対応する上記の画像データのサイズを示す。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１４１６９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の特許文献１には、ハッシュ値を生成するための具体的な手法について、何ら開示されていない。本明細書では、スキャナ装置の内部記憶装置の記憶容量が比較的に少ない場合でも、ダイジェスト値（特許文献１の例ではハッシュ値）を迅速に算出し得る技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書では、外部記憶装置を利用するスキャナ装置を開示する。スキャナ装置は、内部記憶装置と、元データ生成部と、目的データ生成部と、を備える。元データ生成部は、Ｍ枚（Ｍは１以上の整数）のスキャン対象物がスキャンされる場合に、Ｍ枚のスキャン対象物を表わす元データを、内部記憶装置内に生成する。目的データ生成部は、元データを用いて、ダイジェスト値を算出し、元データとダイジェスト値とを用いて、Ｍ枚のスキャン対象物を表わすＭページ分の目的データを、外部記憶装置内に生成する。
【０００６】
元データ生成部は、ヘッダ情報生成部と、実画像データ生成部と、特定画像データ生成部と、を備える。ヘッダ情報生成部は、Ｍ枚のスキャン対象物のうちの１枚のスキャン対象物を表わす対象元データが生成されるべき場合に、予め決められた第１の値を、第１種のサイズ情報として含むヘッダ情報を、内部記憶装置内に生成する。第１種のサイズ情報は、スキャン方向に対応する画像データのサイズである第１種のサイズを示す。実画像データ生成部は、１枚のスキャン対象物を表わす実画像データを、内部記憶装置内に生成する。特定画像データ生成部は、実画像データの第１種のサイズが、第１の値より小さい第１の場合に、実画像データと特定画像データとを含む全体画像データの第１種のサイズが、第１の値に一致するように、特定画像データを、内部記憶装置内に生成する。目的データ生成部は、算出部と、書込部と、を備える。算出部は、第１の場合に、ヘッダ情報と全体画像データとを含む第１の対象元データを構成する複数個の第１の部分元データのそれぞれが、内部記憶装置内に生成される毎に、内部記憶装置内の当該第１の部分元データを用いて、ダイジェスト値を算出するための算出処理を実行する。書込部は、第１の場合に、複数個の第１の部分元データのそれぞれを、外部記憶装置内に順次書き込む。
【０００７】
上記の構成によると、内部記憶装置は、１枚のスキャン対象物を表わす全ての対象元データを同時的に保持せずに済み、１個の第１の部分元データを保持すれば足りる。本技術では、内部記憶装置の記憶容量が比較的に少ない場合でも、ダイジェスト値を迅速に算出し得る。
【０００８】
なお、上記の目的データ生成部を備えておらず、元データ生成部と算出部とを備えるスキャナ装置も、新規で有用である。
【０００９】
上記の各スキャナ装置の機能を実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記憶媒体も新規で有用である。
【図面の簡単な説明】
【００１０】
【図１】通信システムの構成を示す。
【図２】スキャン対象の原稿を模式的に示す。
【図３】ＰＤＦファイルの構成を示す。
【図４】ＰＤＦファイル生成処理のフローチャートを示す。
【図５】データ補充処理のフローチャートを示す。
【図６】ＲＡＭの記憶内容が変化する様子を示す。
【発明を実施するための形態】
【００１１】
（第１実施例）
（システムの構成）
図面を参照して第１実施例を説明する。図１に示すように、通信システム２は、ＰＣ６と、ＰＣ６の周辺機器である多機能機１０と、を備える。ＰＣ６と多機能機１０とは、ネットワークケーブル４を介して、相互に通信可能である。
【００１２】
（多機能機１０の構成）
多機能機１０は、印刷機能及びスキャン機能を含む多機能を実行可能である。多機能機１０は、操作部１２と、表示部１４と、ＵＳＢインターフェイス１６と、ネットワークインターフェイス１８と、制御部２０と、印刷実行部６０と、スキャン実行部７０と、を備える。各部１２〜２０，６０，７０は、バス線１１に接続されている。操作部１２は、複数のキーによって構成されている。ユーザは、操作部１２を操作することによって、様々な情報を多機能機１０に入力することができる。表示部１４は、様々な情報を表示するためのディスプレイである。ＵＳＢインターフェイス１６には、ユーザが持ち運び可能な外部メモリであるＵＳＢメモリ８が装着される。ネットワークインターフェイス１８には、ネットワークケーブル４が接続される。
【００１３】
制御部２０は、ＣＰＵ２２と、ＲＯＭ２４と、ＲＡＭ２６と、を備える。ＣＰＵ２２は、ＲＯＭ２４に格納されているプログラムに従って、様々な処理を実行する。ＣＰＵ２２が上記のプログラムに従って処理を実行することによって、元データ生成部３０及び目的データ生成部５０の各機能が実現される。なお、元データ生成部３０は、各部３２〜４０を備える。また、目的データ生成部５０は、各部５２〜５６を備える。ＲＡＭ２６は、ＣＰＵ２２が直接的にアクセス可能なメインメモリであり、制御部２０によって取得又は生成される様々なデータを記憶する。なお、ＲＡＭ２６は、最大のデータサイズを有する１ページ分のＪＰＥＧ（Joint Photographic Experts Group）データを記憶するための記憶容量よりも大きい記憶容量を有する。なお、上記の「最大のデータサイズを有する１ページ分のＪＰＥＧデータ」は、スキャン実行部７０がスキャン可能な最大の高さ及び幅のサイズを有する１枚のスキャン対象物を、スキャン実行部７０が実行可能な最大のスキャン解像度でスキャンすることによって生成されるＪＰＥＧデータを意味する。スキャン対象物の「高さ」及び「幅」については、後で詳しく説明する。なお、別の実施例では、ＲＡＭ２６は、最大のデータサイズを有する１ページ分のＪＰＥＧデータを記憶するための記憶容量よりも小さい記憶容量を有していてもよい。なお、ＲＡＭ２６の記憶容量は、ＵＳＢメモリ８の記憶容量よりも少ない。
【００１４】
印刷実行部６０は、インクジェット方式、レーザ方式等の印刷機構を備える。スキャン実行部７０は、透明板と、自動原稿搬送装置（ＡＤＦ（Auto Document Feeder））と、スキャン機構と、を備える。スキャン機構は、第１の方向に沿って並んでいる複数個のイメージセンサを備える。各イメージセンサは、ＣＣＤイメージセンサ（Charge Coupled Device Image Sensor）であってもよいし、ＣＩＳ（Contact Image Sensor）であってもよい。スキャン機構は、複数個のイメージセンサが並ぶ方向（上記の第１の方向）に直交する第２の方向に移動可能である。スキャン機構は、スキャン機構自身が第２の方向に移動することによって、透明板に載置されたスキャン対象物（例えば図２の原稿７２，７４）をスキャンすることができる。また、スキャン機構は、スキャン機構自身が静止した状態で、自動原稿搬送装置によって上記の第２の方向に搬送される原稿７２，７４をスキャンすることができる。なお、以下では、透明板に載置されたスキャン対象物７２，７４に対するスキャンのことを「移動スキャン」と呼び、自動原稿搬送装置によって搬送される原稿７２，７４に対するスキャンのことを「静止スキャン」と呼ぶ。
【００１５】
なお、上記の移動スキャン及び静止スキャンのどちらの場合であっても、スキャン対象物の幅方向は、スキャン機構を構成する複数個のイメージセンサが並ぶ方向（上記の第１の方向）である。また、上記の移動スキャンの場合には、スキャン対象物の高さ方向は、スキャン機構の移動方向（上記の第２の方向）である。上記の静止スキャンの場合には、スキャン対象物の高さ方向は、自動原稿搬送装置によって搬送される原稿の搬送方向（上記の第２の方向）である。
【００１６】
図２は、２枚の原稿７２，７４を模式的に示す。上記の移動スキャンが実行されることをユーザが望む場合には、ユーザは、まず、原稿７２を透明板に載置し、スキャンの実行の指示を操作部１２に入力する。この場合、スキャン機構は、上記の第２の方向（図２のスキャン方向）に移動して、原稿７２のスキャンを実行する。次いで、ユーザは、原稿７２を透明板から取り除き、原稿７４を透明板に載置し、スキャンの実行の指示を操作部１２に入力する。この場合、スキャン機構は、原稿７４のスキャンを実行する。ここでユーザがスキャンの終了の指示を操作部１２に入力する場合には、２枚の原稿７２，７４を表わす２ページ分のＰＤＦ（Portable Document Format）データ（即ちＰＤＦファイル）が生成される。
【００１７】
また、上記の静止スキャンが実行されることをユーザが望む場合には、ユーザは、原稿７２，７４を自動原稿搬送装置に載置し、スキャンの実行の指示を操作部１２に入力する。この場合、自動原稿搬送装置は、まず、上記の第２の方向（図２のスキャン方向の反対方向）に原稿７２を搬送し、スキャン機構は、原稿７２のスキャンを実行する。次いで、自動原稿搬送装置は、原稿７４を搬送し、スキャン機構は、原稿７４のスキャンを実行する。この場合も、２枚の原稿７２，７４を表わす２ページ分のＰＤＦデータ（即ちＰＤＦファイル）が生成される。
【００１８】
（制御部２０によって生成されるＰＤＦファイルの構成）
多機能機１０の制御部２０は、スキャンされたスキャン対象物（例えば原稿７２，７４等の紙媒体）を表わすＪＰＥＧデータを生成し、ＪＰＥＧデータを用いてハッシュ値を生成し、ＪＰＥＧデータとハッシュ値とを用いて、ＵＳＢメモリ８内にＰＤＦファイルを生成する。なお、制御部２０は、Ｍ枚（Ｍは１以上の整数）のスキャン対象物のスキャンが実行される場合には、Ｍページ分のＰＤＦファイルを生成する。図３に示されるように、ＰＤＦファイル１００は、最初のデータ１００ａと、最後のデータ１００ｂと、１ページ分以上のＰＤＦデータ１１０と、を含む。最初のデータ１００ａは、ＰＤＦヘッダを含む。最後のデータ１００ｂは、ＰＤＦフッタと、後述の図４のＳ３４で生成される署名値と、多機能機１０に予めインストールされている証明書と、を含む。証明書は、当該証明書に関する証明書情報と、署名値を復号化するための公開鍵と、を含む。証明書情報は、証明書の発行元（認証局（ＣＡ））を示す情報、証明書の発行先（即ち多機能機１０）を示す情報、証明書の発行日時を示す情報等を含む。
【００１９】
１ページ目のＰＤＦデータ１１０は、１ページ目の開始データ１１０ａと、ＪＰＥＧデータ１１１と、１ページ目の終了データ１１０ｂと、を含む。開始データ１１０ａは、１ページ目のＰＤＦデータ１１０の開始を示す文字列を含む。終了データ１１０ｂは、１ページ目のＰＤＦデータ１１０の終了を示す文字列を含む。ＪＰＥＧデータ１１１は、スキャン対象物７２を表わすＪＰＥＧ形式のデータである。なお、ＪＰＥＧデータ１１１は、ページという概念を有していない。ただし、以下では、１ページ目のＰＤＦデータ１１０に含まれるＪＰＥＧデータ１１１のことを「１ページ目のＪＰＥＧデータ１１１」と呼ぶことがある。また、スキャン対象物７２，７４も、ページという概念を有していないが、１ページ目のＰＤＦデータ１１０によって表わされるスキャン対象物７２のことを「１ページ目のスキャン対象物７２」と呼ぶことがある。同様に、スキャン対象物７４のことを「２ページ目のスキャン対象物７４」と呼ぶことがある。なお、図３では、２ページ目以降のＰＤＦデータを図示省略しているが、２ページ目以降のＰＤＦデータは、１ページ目のＰＤＦデータ１１０と同様の構成を有する。
【００２０】
１ページ目のＪＰＥＧデータ１１１は、１ページ目のヘッダ情報１１２と、実画像データ１１４と、特定画像データ１１６と、１ページ目のフッタ情報１１８と、を含む。なお、以下では、実画像データ１１４と特定画像データ１１６とをあわせて「全体画像データ」と呼ぶことがある。
【００２１】
ヘッダ情報１１２は、実画像データ１１４よりも前に生成される情報である。換言すると、ヘッダ情報１１２は、ＪＰＥＧデータ１１１内において、実画像データ１１４よりも前に配置される情報である。ヘッダ情報１１２は、ＳＯＩ（Start Of Image）マーカと、高さ情報と、幅情報と、を含む。なお、以下では、画像データの高さ及び幅という表現を使用するが、画像データの高さは、当該画像データの高さ方向に対応する画素数であり、画像データの幅は、当該画像データの幅方向に対応する画素数である。ヘッダ情報１１２に含まれる高さ情報、幅情報は、それぞれ、全体画像データ１１４，１１６の高さ、幅を示す。なお、ヘッダ情報１１２に含まれる幅情報が示す値は、実画像データ１１４の実際の幅に一致する。ただし、ヘッダ情報１１２に含まれる高さ情報が示す値は、実画像データ１１４の実際の高さに一致しないことがある。即ち、後で詳しく説明するが、特定画像データ１１６が生成される場合（後述の図４のＳ２６でＮＯの場合）には、ヘッダ情報１１２に含まれる高さ情報が示す値は、実画像データ１１４の実際の高さに一致せずに、実画像データ１１４と特定画像データ１１６とを含む全体画像データの高さに一致する。なお、特定画像データ１１６が生成されない場合（後述の図４のＳ２６でＹＥＳの場合）には、ヘッダ情報１１２に含まれる高さ情報が示す値は、実画像データ１１４の実際の高さに一致する。
【００２２】
なお、実画像データ１１４の幅は、スキャン対象物７２の幅（即ち上記の第１の方向の長さ）が大きい程、大きくなる。また、実画像データ１１４の幅は、幅方向のスキャン解像度が高い程、大きくなる。また、実画像データ１１４の高さは、スキャン対象物７２の高さ（即ち上記の第２の方向（スキャン方向）の長さ）が大きい程、大きくなる。また、実画像データ１１４の高さは、高さ方向のスキャン解像度が高い程、大きくなる。
【００２３】
実画像データ１１４は、１ページ目のスキャン対象物７２を表わす画像データ（本実施例ではビットマップデータ）である。なお、実画像データ１１４は、圧縮された形式でＪＰＥＧデータ１１１に含まれる。実画像データ１１４は、複数個の部分実画像データによって構成される。１個の部分実画像データは、１ライン分のスキャンデータから生成される画像データである。なお、「１ライン分のスキャンデータ」は、高さ方向の１画素分のスキャンデータである。従って、例えば、ユーザによって指定される幅方向のスキャン解像度が最大のスキャン解像度である場合には、「１ライン分のスキャンデータ」は、スキャン機構が備える複数個のイメージセンサの個数と同じ数の画素数を有する。
【００２４】
特定画像データ１１６は、１ページ目のスキャン対象物７２を表わす画像データではなく、図４のＳ２８で補充される画像データである。なお、特定画像データ１１６は、圧縮された形式でＪＰＥＧデータ１１１に含まれる。特定画像データ１１６は、複数個の部分特定画像データによって構成される。１個の部分特定画像データは、１ライン分のスキャンデータから生成される部分実画像データと同じ画素数を有するデータである。
【００２５】
フッタ情報１１８は、実画像データ１１４（さらには特定画像データ１１６）よりも後に生成される情報である。換言すると、フッタ情報１１８は、ＪＰＥＧデータ１１１内において、実画像データ１１４（さらには特定画像データ１１６）よりも後に配置される情報である。フッタ情報１１８は、ＥＯＩ（End Of Image）マーカを含む。なお、ＳＯＩマーカとＥＯＩマーカとの間のデータは、「セグメント」と呼ばれることもある。従って、全体画像データ１１４，１１６のことを「セグメント」と呼ぶこともできる。なお、図３では、フッタ情報１１８がクリップ情報を含んでいるが、クリップ情報は、後述の第２実施例で利用される情報である。本実施例では、フッタ情報１１８は、クリップ情報を含んでいなくてもよい。
【００２６】
なお、１ページ目のＪＰＥＧデータ１１１は、複数個の部分ＪＰＥＧデータ１１１ａ，１１１ｂ，１１１ｂによって構成される。１個の部分ＪＰＥＧデータにどのようなデータが含まれるのかについては、予め決められているわけではない。詳しくは後述するが、図４のＳ２０、図５のＳ５６、又は、図５のＳ６６において、ＲＡＭ２６の空き容量が不足していると判断される場合に、１個の部分ＪＰＥＧデータの生成が終了する（即ち１個の部分ＪＰＥＧデータが確定する）。なお、２ページ目以降のＪＰＥＧデータ（図示省略）は、１ページ目のＪＰＥＧデータ１１１と同様の構成を有する。
【００２７】
（多機能機１０が実行する処理）
次いで、ＵＳＢメモリ８内にＰＤＦファイル１００を生成するための処理の内容について説明する。ユーザによって所定の操作が実行されると、制御部２０は、図４に示されるＰＤＦファイル生成処理を実行する。上記の所定の操作は、ＵＳＢメモリ８をＵＳＢインターフェイス１６に装着すること、スキャン対象物を透明板又は自動原稿搬送装置に載置すること、所望のスキャン解像度を指定すること、及び、操作部１２に含まれるスキャン実行キーを操作することを含む。
【００２８】
図４のＳ１０に示されるように、目的データ生成部５０（図１参照）は、まず、ＰＤＦファイル１００の最初のデータ１００ａ（図３参照）をＲＡＭ２６内に生成する。Ｓ１０では、さらに、算出部５２（図１参照）は、ＲＡＭ２６内の最初のデータ１００ａを用いて、ハッシュ値を算出する。なお、本実施例では、算出部５２は、ハッシュ関数としてＳＨＡ（Secure Hash Algorithm）−１を利用するが、ＭＤ４、ＭＤ５等の他のハッシュ関数を利用してもよい。また、以下では、図４のＳ３６で最終的に算出されるハッシュ値のことを「最終ハッシュ値」と呼び、最終ハッシュ値を生成するためにＳ３６よりも前の処理で算出されるハッシュ値のことを「中間ハッシュ値」と呼ぶ。Ｓ１０では、さらに、書込部５４（図１参照）は、ＲＡＭ２６内の最初のデータ１００ａを、ＵＳＢメモリ８に書き込む。
【００２９】
Ｓ１０で最初のデータ１００ａがＵＳＢメモリ８に書き込まれると、Ｓ１２において、目的データ生成部５０は、最初のデータ１００ａをＲＡＭ２６から消去する（即ちＲＡＭ２６を解放する）。なお、Ｓ１２では、Ｓ１０で算出された中間ハッシュ値は、ＲＡＭ２６から消去されない。以下でも、ＲＡＭ２６を解放するための各処理（例えばＳ２２等）において、中間ハッシュ値は、ＲＡＭ２６から消去されない。
【００３０】
次いで、Ｓ１４において、図示省略しているが、元データ生成部３０は、対象ページのスキャン対象物７２のスキャンを、スキャン実行部７０に実行させる。１回目のＳ１４では、対象ページは、１ページ目である。なお、以下では、対象ページが１ページ目である場合を例として、Ｓ１４〜Ｓ３０の処理の内容を説明する。スキャン実行部７０は、１ページ目のスキャン対象物７２のスキャンを実行する。なお、スキャン実行部７０は、スキャンによって得られるＲＧＢのビットマップ形式のスキャンデータを一時的に格納するためのバッファ（図示省略）を備える。バッファは、１ライン分のスキャンデータを記憶するための記憶容量を有する。
【００３１】
なお、図示省略しているが、元データ生成部３０は、Ｓ１４以降の処理を開始する前に、１ライン分のスキャンデータを記憶するための記憶容量を有する記憶領域（以下では「ライン記憶領域」と呼ぶ）を、ＲＡＭ２６内に確保する。スキャン実行部７０のバッファ内の１ライン分のスキャンデータは、ＲＡＭ２６内のライン記憶領域に書き込まれる。これにより、バッファを解放することができ、バッファに次の１ライン分のスキャンデータが格納される。１ライン分のスキャンデータがライン記憶領域に格納されると、Ｓ１４以降の処理が開始される。
【００３２】
Ｓ１４において、目的データ生成部５０は、１ページ目の開始データ１１０ａ（図３参照）をＲＡＭ２６内に生成する。Ｓ１４では、さらに、ヘッダ情報生成部３２（図１参照）は、１ページ目のヘッダ情報１１２（図３参照）をＲＡＭ２６内に生成する。具体的に言うと、ヘッダ情報生成部３２は、ＳＯＩマーカと、所定の高さ情報と、実際の幅情報と、をＲＡＭ２６内に生成する。上記の所定の高さ情報及び実際の幅情報について、次に詳しく説明する。
【００３３】
Ｓ１４の時点では、スキャン対象物７２のスキャンが終了していないために、実画像データ１１４の実際の高さが未定である。従って、ヘッダ情報生成部３２は、予め決められている上記の所定の高さ情報を、ＲＡＭ２６内に生成する。本実施例では、上記の所定の高さ情報は、スキャン実行部７０がスキャン可能な最大の高さ及び幅のサイズを有する１枚のスキャン対象物を、スキャン実行部７０が実行可能な最大のスキャン解像度でスキャンすることによって生成される実画像データの高さ（以下では「最大高さ」と呼ぶ）を示す。なお、ヘッダ情報生成部３２は、さらに、ライン記憶領域に記憶されている１ライン分のスキャンデータの画素数を参照することによって、実画像データ１１４の実際の幅を取得する。ヘッダ情報生成部３２は、さらに、実画像データ１１４の実際の幅を示す幅情報をＲＡＭ２６内に生成する。これにより、図６に示されるように、ＳＯＩマーカと上記の所定の高さ情報と幅情報とを含むヘッダ情報１１２が、ＲＡＭ２６内に記憶される。
【００３４】
次いで、Ｓ１６において、実画像データ生成部３４（図１参照）は、ライン記憶領域内の１ライン分のスキャンデータを、ＪＰＥＧ形式の画像データに変換する。これにより、図６に示されるように、１ライン分のスキャンデータから生成される１ライン分の部分実画像データ１１４ａ（即ち１個の部分実画像データ１１４ａ）が、ＲＡＭ２６内の空き容量２６ａに記憶される。なお、図示省略しているが、Ｓ１６の処理が実行されると、元データ生成部３０は、ライン記憶領域内の１ライン分のスキャンデータを消去する（即ちライン記憶領域を解放する）。この結果、ライン記憶領域は、次の１ライン分のスキャンデータを記憶することができる。
【００３５】
次いで、Ｓ１８において、元データ生成部３０は、１ページ目のスキャン対象物７２に対するスキャンが終了したのか否かを判断する。１ページ目のスキャン対象物７２を表わす最後の１ライン分のスキャンデータは、ページの最後であることを示す情報を含む。このような情報を含む１ライン分のスキャンデータに対してＳ１６の処理が実行された場合には、元データ生成部３０は、Ｓ１８でＹＥＳと判断し、Ｓ２６に進む。
【００３６】
一方において、Ｓ１８でＮＯの場合、Ｓ２０において、監視部３８（図１参照）は、ＲＡＭ２６内の空き容量が不足しているのか否かを判断する。具体的に言うと、監視部３８は、ＲＡＭ２６内の未使用の領域の容量（即ち空き容量）が、所定のサイズ（例えばゼロ）よりも大きいのか否かを判断する。ＲＡＭ２６の空き容量が不足する状況について、次に説明する。
【００３７】
上述したように、ＲＡＭ２６は、最大のデータサイズを有する１ページ分のＪＰＥＧデータを記憶するための記憶容量よりも大きい記憶容量を有する。従って、制御部２０によって図４のＰＤＦファイル生成処理のみが実行されている状態では、通常、ＲＡＭ２６に十分な空き容量が確保されているために、１ページ目のスキャン対象物７２に対するスキャンが終了するまで、図４のＳ２０でＮＯと判断され続ける。従って、１ページ目のスキャン対象物７２を表わす全てのＪＰＥＧデータが、ＲＡＭ２６に書き込まれる。ただし、図４のＰＤＦファイル生成処理が実行されている間に、例えば、ＰＣ６から多機能機１０に印刷データが送信される可能性がある。この場合、制御部２０は、図４のＰＤＦファイル生成処理と同時的に（ＰＤＦファイル生成処理に並行して）、図示省略の印刷処理を実行する。
【００３８】
印刷処理において、制御部２０は、印刷データをＲＡＭ２６に書き込む。これにより、図６に示されるように、他の処理のためのデータ（ここでは印刷データ）２００がＲＡＭ２６に書き込まれる。この結果、ＲＡＭ２６内の空き容量が少なくなり、図４のＳ２０において、ＲＡＭ２６内の空き容量が不足していると判断され得る。
【００３９】
なお、ＲＡＭ２６内の空き容量が不足する状況は、制御部２０が印刷処理を実行する場合のみならず、印刷処理以外の処理を実行する場合にも起こり得る。例えば、制御部２０は、ＰＣ６からのアクセスに応じて、ＷＥＢページを示すデータを生成し、当該データをＰＣ６に送信する処理を実行する。即ち、ＲＡＭ２６内の空き容量が不足する状況は、制御部２０が図４のＰＤＦファイル生成処理以外の特定の処理（印刷処理、ＷＥＢページの生成の処理等）を実行する場合に起こり得る。
【００４０】
ＲＡＭ２６内の空き容量が不足しない場合（図４のＳ２０でＮＯの場合）、実画像データ生成部３４は、Ｓ１６に戻って、ライン記憶領域に記憶されている次の１ライン分のスキャンデータを用いて、１ライン分の部分実画像データをＲＡＭ２６内に生成する。ＲＡＭ２６内の空き容量が不足するまで（Ｓ２０でＹＥＳと判断されるまで）、Ｓ１６の処理が繰り返し実行されることによって、図６に示されるように、各部分実画像データ１１４ａ，１１４ｂが、ＲＡＭ２６内に記憶される。
【００４１】
ＲＡＭ２６内の空き容量が不足する場合（Ｓ２０でＹＥＳの場合）には、元データ生成部３０は、１個の部分ＪＰＥＧデータ１１１ａ（図６参照）の生成を終了し、Ｓ２２に進む。ＲＡＭ２６内の空き容量が不足する場合に１個の部分ＪＰＥＧデータ１１１ａの生成を終了する構成を採用すると、予め決められているサイズのＪＰＥＧデータが生成される場合に１個の部分ＪＰＥＧデータの生成を終了する特定の構成と比べて、大きいサイズを有する１個の部分ＪＰＥＧデータを生成し得る。従って、本実施例によると、上記の特定の構成と比べて、図４のＳ２２及びＳ２４の処理の実行回数を低減し得る。
【００４２】
Ｓ２２では、算出部５２は、図４のＳ１０で算出されたＲＡＭ２６内の中間ハッシュ値と、ＲＡＭ２６内の１ページ目の開始データ１１０ａと、ＲＡＭ２６内の１個の部分ＪＰＥＧデータ１１１ａ（即ち、ヘッダ情報１１２、１個以上の部分実画像データ１１４ａ，１１４ｂ）と、を用いて、新たな中間ハッシュ値を算出する。この結果、最初のデータ１００ａの先頭から部分ＪＰＥＧデータ１１１ａの最後（即ち部分実画像データ１１４ｂの最後）までの中間ハッシュ値が算出される。なお、算出部５２は、ＲＡＭ２６内の各データ１１０ａ，１１２，１１４ａ，１１４ｂの生成順序と同じ順序で、各データを順次用いて、中間ハッシュ値を算出する。従って、算出部５２は、部分実画像データ１１４ａ，１１４ｂよりも前に、ヘッダ情報１１２を用いて、中間ハッシュ値を算出する。なお、以下でも、算出部５２は、各データの生成順序と同じ順序で、各データを順次用いて、中間ハッシュ値を順次算出する。なお、２回目以降のＳ２２では、算出部５２は、前回のＳ２２で算出された中間ハッシュ値と、ＲＡＭ２６内の１個の部分ＪＰＥＧデータと、を用いて、新たな中間ハッシュ値を算出する。Ｓ２２では、さらに、書込部５４は、ＲＡＭ２６内の１個の部分ＪＰＥＧデータ１１１ａを、ＵＳＢメモリ８に書き込む。
【００４３】
Ｓ２２で部分ＪＰＥＧデータ１１１ａがＵＳＢメモリ８に書き込まれると、Ｓ２４において、元データ生成部３０は、部分ＪＰＥＧデータ１１１ａをＲＡＭ２６から消去する（即ちＲＡＭ２６を解放する）。この結果、図６に示されるように、ＲＡＭ２６内に空き容量２６ｂが形成される。
【００４４】
次いで、元データ生成部３０は、Ｓ１６以降の処理を再び実行する。この結果、図６に示されるように、１個以上の部分実画像データ１１４ｃ，１１４ｄが、ＲＡＭ２６内に記憶される。なお、以下では、１ページ目のスキャン対象物７２を表わす最後の１ライン分のスキャンデータから生成される１個の部分実画像データ１１４ｄのことを「境界部分実画像データ１１４ｄ」と呼ぶ。
【００４５】
境界部分実画像データ１１４ｄがＲＡＭ２６内に生成されると、Ｓ１８でＹＥＳと判断され、Ｓ２６に進む。Ｓ２６では、元データ生成部３０は、１ページ目のスキャン対象物７２を表わす実画像データ１１４の実際の高さが、上記の所定の高さ情報（Ｓ１４で生成される高さ情報）が示す値に一致するのか否かを判断する。元データ生成部３０は、Ｓ１４で１ページ目のヘッダ情報１１２が生成された後に、Ｓ１６の変換処理が実行された回数をカウントしておく。Ｓ１６の変換処理の実行回数と同じ数の画素数が、実画像データ１１４の実際の高さである。元データ生成部３０は、Ｓ１６の変換処理の実行回数が、上記の所定の高さ情報が示す値に一致するのか否かを判断することによって、Ｓ２６の判断を実行する。なお、上述したように、本実施例では、上記の所定の高さ情報が上記の最大高さを示すために、実画像データ１１４の実際の高さが、上記の所定の高さ情報が示す値より大きくなることはない。
【００４６】
実画像データ１１４の実際の高さが、上記の所定の高さ情報が示す値より小さい場合には、元データ生成部３０は、Ｓ２６でＮＯと判断し、Ｓ２８のデータ補充処理を実行する。一方において、実画像データの実際の高さが、上記の所定の高さ情報が示す値に一致する場合には、元データ生成部３０は、Ｓ２８をスキップして、Ｓ３０に進む。
【００４７】
（データ補充処理）
図５を参照して、Ｓ２８のデータ補充処理の内容を説明する。Ｓ５０において、特定画像データ生成部３６（図１参照）は、境界部分実画像データ１１４ｄ（図６参照）を構成する全ての画素が白色の示すのか否かを判断する。例えば、２５６階調の場合には、Ｒ値、Ｇ値、及び、Ｂ値の全てが２５５である画素が白色の画素である。従って、特定画像データ生成部３６は、境界部分実画像データ１１４ｄを構成する各画素のＲＧＢ値の全てが２５５である場合に、Ｓ５０でＹＥＳと判断し、境界部分実画像データ１１４ｄを構成する少なくとも１個の画素のＲＧＢ値のいずれかが２５５以外の数値である場合に、Ｓ５０でＮＯと判断する。
【００４８】
Ｓ５０でＹＥＳの場合、Ｓ５２において、特定画像データ生成部３６は、白色以外の所定の色（例えば黒色）を示す各画素によって構成される１ライン分のＪＰＥＧ形式の部分特定画像データ（即ち１個の部分特定画像データ）を生成する。特定画像データ生成部３６は、実画像データ１１４の幅方向の画素数と、部分特定画像データの幅方向の画素数と、が一致するように、Ｓ５２の生成処理を実行する。
【００４９】
次いで、Ｓ５４において、元データ生成部３０は、１ページ目の全体画像データ（実画像データ１１４と特定画像データ１１６の集合）の実際の高さが、上記の所定の高さ情報（Ｓ１４で生成される高さ情報）が示す値に一致するのか否かを判断する。元データ生成部３０は、データ補充処理が開始された後に、Ｓ５２の変換処理が実行された回数をカウントしておく。図４のＳ１６の変換処理の実行回数とＳ５２の変換処理の実行回数との和と同じ数の画素数が、全体画像データ１１４，１１６の実際の高さである。元データ生成部３０は、上記の和が、上記の所定の高さ情報が示す値に一致するのか否かを判断することによって、Ｓ５４の判断を実行する。
【００５０】
Ｓ５４でＮＯの場合、Ｓ５６において、監視部３８は、ＲＡＭ２６内の空き容量が不足しているのか否かを判断する。具体的に言うと、監視部３８は、ＲＡＭ２６内の空き容量が、所定のサイズ（例えば後述のフッタ情報１１８及び終了データ１１０ｂを記憶するためのサイズ）よりも大きいのか否かを判断する。ＲＡＭ２６内の空き容量が不足しない場合（Ｓ５６でＮＯの場合）、特定画像データ生成部３６は、ＲＡＭ２６内の空き容量が不足するまで（Ｓ５６でＹＥＳと判断されるまで）、Ｓ５２の処理を繰り返し実行する。これにより、図６に示されるように、各部分特定画像データ１１６ａが、ＲＡＭ２６内に記憶される。
【００５１】
ＲＡＭ２６内の空き容量が不足する場合（Ｓ５６でＹＥＳの場合）には、元データ生成部３０は、１個の部分ＪＰＥＧデータ１１１ｂ（図６参照）の生成を終了し、Ｓ５８に進む。Ｓ５８では、算出部５２は、図４のＳ２２（最後のＳ２２）で算出されたＲＡＭ２６内の中間ハッシュ値と、ＲＡＭ２６内の１個の部分ＪＰＥＧデータ１１１ｂ（即ち、１個以上の部分実画像データ１１４ｃ，１１４ｄ、１個以上の部分特定画像データ１１６ａ）と、を用いて、新たな中間ハッシュ値を算出する。この結果、最初のデータ１００ａの先頭から部分ＪＰＥＧデータ１１１ｂの最後（即ち部分特定画像データ１１６ａの最後）までの中間ハッシュ値が算出される。なお、２回目以降のＳ５８では、算出部５２は、前回のＳ５８で算出された中間ハッシュ値と、ＲＡＭ２６内の１個の部分ＪＰＥＧデータと、を用いて、新たな中間ハッシュ値を算出する。Ｓ５８では、さらに、書込部５４は、ＲＡＭ２６内の１個の部分ＪＰＥＧデータ１１１ｂを、ＵＳＢメモリ８に書き込む。
【００５２】
Ｓ５８で部分ＪＰＥＧデータ１１１ｂがＵＳＢメモリ８に書き込まれると、Ｓ６０において、元データ生成部３０は、部分ＪＰＥＧデータ１１１ｂをＲＡＭ２６から消去する（即ちＲＡＭ２６を解放する）。この結果、図６に示されるように、ＲＡＭ２６内に空き容量２６ｃが形成される。
【００５３】
次いで、元データ生成部３０は、Ｓ５４でＹＥＳと判断されるまで、Ｓ５２以降の処理を再び実行する。この結果、図６に示されるように、１個以上の部分特定画像データ１１６ｂ，１１６ｃが、ＲＡＭ２６内に記憶される。即ち、本実施例では、実画像データ１１４が特定画像データ１１６によって補完される。Ｓ５４でＹＥＳの場合、元データ生成部３０は、データ補充処理を終了し、図４のＳ３０に進む。
【００５４】
なお、Ｓ５０でＮＯの場合（境界部分実画像データ１１４ｄを構成する少なくとも１個の画素が白色以外の色を示す場合）には、元データ生成部３０は、Ｓ６２〜Ｓ７０を実行する。Ｓ６２では、特定画像データ生成部３６は、白色を示す各画素によって構成される１ライン分の部分特定画像データを生成する。各画素が白色を示す点を除けば、Ｓ６２は、Ｓ５２と同様である。なお、Ｓ６４〜Ｓ７０はＳ５４〜Ｓ６０と同様であるために、Ｓ６４〜Ｓ７０の説明を省略する。
【００５５】
（データ補充処理後の処理）
図４のＳ３０において、フッタ情報生成部４０（図１参照）は、１ページ目のフッタ情報１１８（図３参照）をＲＡＭ２６内に生成する。これにより、図６に示されるように、フッタ情報１１８が、ＲＡＭ２６内に記憶される。この結果、１個の部分ＪＰＥＧデータ１１１ｃが、ＲＡＭ２６内に生成される。Ｓ３０では、さらに、目的データ生成部５０は、１ページ目の終了データ１１０ｂ（図３参照）をＲＡＭ２６内に生成する。Ｓ３０では、さらに、算出部５２は、最後に算出された中間ハッシュ値と、ＲＡＭ２６内の１個の部分ＪＰＥＧデータ１１１ｃ（即ち、１個以上の部分特定画像データ１１６ｂ，１１６ｃと、フッタ情報１１８）と、ＲＡＭ２６内の１ページ目の終了データ１１０ｂと、を用いて、新たな中間ハッシュ値を算出する。なお、図４のＳ２６でＹＥＳの場合には、上記の「最後に算出された中間ハッシュ値」は、図４の最後のＳ２２で算出された中間ハッシュ値である。また、図４のＳ２６でＮＯの場合には、上記の「最後に算出された中間ハッシュ値」は、図５の最後のＳ５８又はＳ６８で算出された中間ハッシュ値である。Ｓ３０では、さらに、書込部５４は、ＲＡＭ２６内の部分ＪＰＥＧデータ１１１ｃ及び１ページ目の終了データ１１０ｂを、ＵＳＢメモリ８に書き込む。
【００５６】
次いで、Ｓ３２において、元データ生成部３０は、部分ＪＰＥＧデータ１１１ｃ及び１ページ目の終了データ１１０ｂをＲＡＭ２６から消去する（即ちＲＡＭ２６を解放する）。次いで、Ｓ３４において、目的データ生成部５０は、全ページのスキャン対象物に対するスキャンが終了したのか否かを判断する。具体的に言うと、目的データ生成部５０は、ＲＡＭ２６内のライン記憶領域に新たな１ライン分のスキャンデータが格納されている場合には、Ｓ３４でＮＯと判断し、ライン記憶領域に新たな１ライン分のスキャンデータが格納されていない場合には、Ｓ３４でＹＥＳと判断する。
【００５７】
Ｓ３４でＮＯの場合には、目的データ生成部５０は、対象ページを２ページ目として、２回目のＳ１４〜Ｓ３０の処理を再び実行する。２回目のＳ１４〜Ｓ３０の処理は、１回目のＳ１４〜Ｓ３０の処理と同様である。２回目のＳ１４〜Ｓ３０の処理の結果、図２のスキャン対象物７４を表わす２ページ目のＰＤＦデータ（図示省略）が、ＵＳＢメモリ８に書き込まれる。さらに、最初のデータ１００ａの先頭から２ページ目の終了データ（図示省略）の最後までの中間ハッシュ値が算出される。本実施例では、２枚のスキャン対象物７２，７４を表わす２ページ分のＰＤＦデータが生成された場合に、Ｓ３４でＹＥＳと判断される。
【００５８】
Ｓ３４でＹＥＳの場合には、Ｓ３６において、目的データ生成部５０は、ＰＤＦフッタをＲＡＭ２６内に生成する。Ｓ２６では、さらに、算出部５２は、最後のＳ３０（例えばスキャン対象物が２枚である場合には２回目のＳ３０）で算出された中間ハッシュ値と、ＰＤＦフッタと、を用いて、最終ハッシュ値を算出する。この結果、最初のデータ１００ａの先頭からＰＤＦフッタの最後までの最終ハッシュ値が算出される。Ｓ３６では、さらに、署名値生成部５６（図１参照）は、最終ハッシュ値を予め決められた秘密鍵で暗号化することによって、署名値（即ち署名済みハッシュ値）を生成する。Ｓ３６では、さらに、目的データ生成部５０は、ＰＤＦフッタと、署名値と、予め決められた証明書と、を含む最後のデータ１００ｂ（図３参照）を、ＲＡＭ２６内に生成する。なお、署名値及び証明書は、最終ハッシュ値を算出するための対象（ハッシュ化の対象）ではない。Ｓ３６では、さらに、書込部５４は、最後のデータ１００ｂを、ＵＳＢメモリ８に書き込む。これにより、ＵＳＢメモリ８内に図３に示されるＰＤＦファイル１００が完成する。
【００５９】
（外部装置の処理）
ユーザは、ＰＤＦファイル１００を含むＵＳＢメモリ８を持ち運ぶことができる。ユーザは、例えば、ＰＣ６（外部装置の一例）のＵＳＢインターフェイスにＵＳＢメモリ８を装着することにより、ＵＳＢメモリ８内のＰＤＦファイル１００をＰＣ６の表示部に表示させることができる。この際に、ＰＣ６は、ＰＤＦファイル１００に含まれる１ページ目の全体画像データ（実画像データ１１４と特定画像データ１１６）に従って、１ページ目のスキャン対象物７２を表わす１ページ目の画像を表示させる。なお、特定画像データ１１６は、１ページ目のスキャン対象物７２とは無関係なデータであるために、１ページ目の画像は、１ページ目のスキャン対象物７２とは無関係な部分画像（特定画像データ１１６によって表わされる画像）を含む。
【００６０】
ただし、上述したように、１ページ目のスキャン対象物７２の縁部（図２の「１ライン分の境界領域」）が白色である場合（図５のＳ５０でＹＥＳの場合）には、特定画像データ１１６は、白色以外の所定の色を示す各画素によって構成される。なお、スキャン対象物７２の縁部が白色である可能性が高いために（例えば原稿等の余白）、図５のＳ５０では、白色か否かが判断される。また、１ページ目のスキャン対象物７２の縁部が白色以外の色を含む場合（図５のＳ５０でＮＯの場合）には、特定画像データ１１６は、白色を示す各画素によって構成される。従って、ユーザは、１ページ目のスキャン対象物７２を表わす部分画像と、１ページ目のスキャン対象物７２と無関係な部分画像と、の境界を容易に知ることができる。なお、１ページ目の画像と同様に、ＰＣ６は、ＰＤＦファイル１００に含まれる２ページ目の全体画像データに従って、２ページ目のスキャン対象物７４を表わす２ページ目の画像を表示させる。
【００６１】
なお、ユーザは、例えば、他の印刷装置（外部装置の一例）のＵＳＢインターフェイスにＵＳＢメモリ８を装着することにより、ＵＳＢメモリ８内のＰＤＦファイル１００の印刷を、他の印刷装置に実行させることもできる。
【００６２】
また、外部装置は、最初のデータ１００ａの先頭から、最後のデータ１００ｂ内のＰＤＦフッタの最後までのハッシュ値（以下では「第１のハッシュ値」と呼ぶ）を算出することができる。また、外部装置は、最後のデータ１００ｂに含まれる署名値を、最後のデータ１００ｂに含まれる公開鍵で復号化することよって、ハッシュ値（以下では「第２のハッシュ値」と呼ぶ）を生成することができる。外部装置は、第１のハッシュ値と第２のハッシュ値とを比較することによって、ＰＤＦファイル１００に対する改ざんの有無を判断することができる。例えば、外部装置は、第１のハッシュ値と第２のハッシュ値とが一致しない場合に、ＰＤＦファイル１００が改ざんされた可能性があることを示すメッセージを出力（表示、印刷等）させる。ユーザは、当該メッセージを見ることによって、ＰＤＦファイル１００が改ざんされた可能性があることを知ることができる。
【００６３】
実施例の通信システム２について詳しく説明した。１枚のスキャン対象物７２を表わす実画像データ１１４の実際の高さは、１枚のスキャン対象物７２のスキャンが終了するまで、即ち、全ての実画像データ１１４が生成されるまで、未定である。従って、仮に、実画像データ１１４の実際の高さを示す高さ情報を含むヘッダ情報と、実画像データ１１４と、を含むＪＰＥＧデータを生成するスキャナ装置（以下では「特定のスキャナ装置」と呼ぶ）を採用すると、全ての実画像データ１１４が生成されるまで、ヘッダ情報を用いてハッシュ値の算出処理を実行することができない。また、通常、実画像データ１１４よりも前にヘッダ情報が生成されるために、上記の特定のスキャナ装置は、実画像データ１１４よりも前にヘッダ情報を用いて、算出処理を実行する必要がある。従って、上記の特定のスキャナ装置は、全ての実画像データ１１４が生成されるまで、ヘッダ情報と実画像データ１１４とを含むＪＰＥＧデータを用いて、算出処理を実行することができない。
【００６４】
なお、上記の特定のスキャナ装置が、ＪＰＥＧデータをＵＳＢメモリ８に書き込む処理を実行すれば、ＵＳＢメモリ８内のＪＰＥＧデータを用いて、中間ハッシュ値を算出し得る。しかしながら、ＵＳＢメモリ８内のデータを用いて処理を実行するのに要する時間は、ＲＡＭ２６内のデータを用いて処理を実行するのに要する時間よりも長くなる。ＵＳＢメモリ８内のデータを利用するためには、ＵＳＢメモリ８内のデータをＲＡＭ２６に一時的に書き込むための処理が必要であり、当該処理に時間を要するからである。従って、本実施例の多機能機１０は、ＲＡＭ２６内にＪＰＥＧデータ１１１を生成し、ＲＡＭ２６内のＪＰＥＧデータ１１１を用いて、算出処理を実行する（図４のＳ２２等）。
【００６５】
ただし、多機能機１０のＲＡＭ２６の記憶容量は比較的に少ないために（ＰＣ６等よりも少ないために）、上述したように、例えば、印刷処理が同時的に実行される状況では、ＲＡＭ２６は、実画像データ１１４の全てを同時的に保持することができない可能性、即ち、図４のＳ２０でＹＥＳと判断される可能性がある。従って、本実施例の多機能機１０は、実画像データ１１４の実際の高さを示す高さ情報ではなく、上記の所定の高さ情報を含むヘッダ情報１１２を生成し、さらに、実画像データ１１４の実際の高さが上記の所定の高さ情報が示す値より小さい場合（Ｓ２６でＮＯの場合）に、足りない分を特定画像データ１１６で補充する。このために、多機能機１０は、１ページ目のＪＰＥＧデータ１１１を構成する各部分ＪＰＥＧデータ１１１ａ〜１１１ｃがＲＡＭ２６内に生成される毎に、１個の部分ＪＰＥＧデータを用いて、算出処理を実行することができる。即ち、多機能機１０は、全ての実画像データ１１４が生成される前に、ヘッダ情報１１２を用いて算出処理を実行することができる。従って、ＲＡＭ２６は、１枚のスキャン対象物７２を表わす全てのＪＰＥＧデータ１１１を同時的に保持せずに済み、１個の部分ＪＰＥＧデータを保持すれば足りる。このために、多機能機１０は、ＲＡＭ２６の記憶容量が比較的に少ない場合でも、最終ハッシュ値を迅速に算出し得る。この結果、多機能機１０は、最終ハッシュ値を含むＰＤＦファイル１００を、ＵＳＢメモリ８内に迅速に生成することができる。
【００６６】
実施例の各要素と本発明の各要素との対応関係を記載しておく。多機能機１０が「スキャナ装置」の一例である。ＵＳＢメモリ８、ＲＡＭ２６、ＵＳＢインターフェイス１６が、それぞれ、「外部記憶装置」、「内部記憶装置」、「装着部」の一例である。２枚のスキャン対象物７２，７４を表わす２ページ分のＪＰＥＧデータが「元データ」の一例であり、例えば、スキャン対象物７２を表わす１ページ目のＪＰＥＧデータ１１１が「対象元データ」の一例である。なお、図４のＳ２６でＮＯの場合に生成されるＪＰＥＧデータ１１１が「第１の対象元データ」の一例であり、３個の部分ＪＰＥＧデータ１１１ａ〜１１１ｃが「複数個の第１の部分元データ」の一例である。また、図４のＳ２６でＹＥＳの場合に生成されるＪＰＥＧデータ（図示省略）が「第２の対象元データ」の一例であり、このＪＰＥＧデータを構成する複数個の部分ＪＰＥＧデータが「複数個の第２の対象元データ」の一例である。なお、図５のＳ５２で生成される特定画像データ、Ｓ６２で生成される特定画像データが、それぞれ、「第１の特定画像データ」、「第２の特定画像データ」の一例である。
【００６７】
また、２枚のスキャン対象物７２，７２を表わすＰＤＦファイル１００が、「Ｍ枚のスキャン対象物を表わすＭページ分の目的データ」の一例である。図４のＳ３６で算出される最終ハッシュ値が「ダイジェスト値」の一例である。また、図４のＳ２２，Ｓ３０、及び、図５のＳ５８，Ｓ６８の処理が「算出処理」の一例である。高さ、幅が、それぞれ、「第１種のサイズ」、「第２種のサイズ」の一例である。さらに、上記の所定の高さ情報が示す最大高さが「第１の値」の一例であり、実画像データ１１４の実際の幅が「第２の値」の一例である。
【００６８】
（第２実施例）
ここでは、第１実施例と異なる点を説明する。第２実施例では、図３のフッタ情報１１８は、クリップ情報を含む。クリップ情報は、実画像データ１１４の実際の高さを示す実高さ情報及び実際の幅を示す実幅情報を含む。図４のＳ３０では、フッタ情報生成部４０は、クリップ情報を含むフッタ情報１１８を、ＲＡＭ２６内に生成する。本実施例によると、外部装置は、例えば、ＵＳＢメモリ８内のＰＤＦファイル１００をＰＣ６の表示部に表示させる際に、フッタ情報１１８内のクリップ情報に含まれる実高さ情報及び実幅情報を用いて、全体画像データ１１４，１１６から実画像データ１１４のみを特定することができる。従って、外部装置は、実画像データ１１４のみに従って、１ページ目のスキャン対象物７２を表わす１ページ目の画像を表示させることができる。この場合、１ページ目の画像は、１ページ目のスキャン対象物７２とは無関係な部分画像（特定画像データ１１６によって表わされる画像）を含まない。
【００６９】
なお、本実施例では、図４のＳ２８のデータ補充処理では、図５に示されるフローチャートが実行されてもよいが、図５のＳ５０，Ｓ６２〜Ｓ７０の処理が省略されてもよい。即ち、データ補充処理では、Ｓ５２〜Ｓ６０の処理のみが実行されてもよい。なお、本実施例では、上記の実高さ情報が「実サイズ情報」の一例である。
【００７０】
（変形例１）上記の各実施例では、算出部５２は、ハッシュ化を利用することによって「ダイジェスト値」を生成するが、その代わりに、他のダイジェスト化の手法を利用してもよい。一般的に言うと、「ダイジェスト値」を算出するための手法は、Ｍ枚（Ｍは１以上の整数）のスキャン対象物を表わす元データから得られる値であって、元データの合計データサイズよりも小さいデータサイズを有する値を生成するためのあらゆるダイジェスト化の手法を含む。
【００７１】
（変形例２）上記の各実施例では、目的データ生成部５０は、ＰＤＦの「目的データ」を生成するが、その代わりに、ＰＤＦ以外の形式（例えばＸＰＳ形式）の「目的データ」を生成してもよい。また、上記の実施例では、元データ生成部３０は、ＪＰＥＧ形式の「元データ」を生成するが、その代わりに、ＪＰＥＧ形式以外の形式（例えば、ＴＩＦＦ、ＢＭＰ形式）の「元データ」を生成してもよい。例えば、ＰＮＧ形式のような透明情報を扱えるデータ形式を採用すれば、データ補充処理によって補充されるデータに透明情報を用いることができる。即ち、図５の処理において、境界部分実画像データを構成する各画素の値を判断することなく、補充が必要な領域の全てを透明情報で補充してもよい。この場合、フッタ情報にクリップ情報が含まれていなくても、外部装置でＰＤＦファイルを表示する際に、無関係な部分画像が表示されない。
【００７２】
（変形例３）上記の各実施例では、ＵＳＢメモリ８を「外部記憶装置」として利用しているが、それに代えて、「外部記憶装置」は、多機能機１０に内蔵されるハードディスクであってもよいし、多機能機１０に装着されるＣＤ、ＤＶＤ、フロッピー（登録商標）ディスク等のメディアであってもよいし、多機能機１０と別体に構成される外部装置（例えばサーバ）内の記憶装置であってもよい。即ち、外部記憶装置は、内部記憶装置よりも記憶容量が大きく、内部記憶装置よりも処理される速度が遅い記憶装置であればよい。
【００７３】
（変形例４）上記の各実施例では、図４のＳ２２及びＳ３０、図５のＳ５８及びＳ６８において、まず、算出部５２が中間ハッシュ値を算出し、次いで、書込部５４が部分ＪＰＥＧデータをＵＳＢメモリ８に書き込む。これに代えて、まず、書込部５４が部分ＪＰＥＧデータをＵＳＢメモリ８に書き込み、次いで、算出部５２が中間ハッシュ値を算出してもよい。
【００７４】
（変形例５）上記の各実施例では、ＲＡＭ２６の空き容量が不足する場合（図４のＳ２０でＹＥＳの場合）に、１個の部分ＪＰＥＧデータの生成が終了する。これに代えて、元データ生成部３０は、予め決められている所定サイズのデータが生成される場合に、１個の部分ＪＰＥＧデータの生成を終了してもよい。
【００７５】
（変形例６）上記の各実施例では、図４のＳ１４において、ヘッダ情報生成部３２は、実画像データ１１４の実際の幅を示す幅情報を含むヘッダ情報１１２を生成する。これに代えて、ヘッダ情報生成部３２は、例えば、スキャン実行部７０がスキャン可能な最大の高さ及び幅のサイズを有する１枚のスキャン対象物（以下では「最大のスキャン対象物」と呼ぶ）を、最大のスキャン解像度でスキャンすることによって生成される実画像データの幅より大きい値を示す所定の幅情報を含むヘッダ情報１１２を生成してもよい。実画像データ１１４の実際の幅が上記の所定の幅情報が示す値に一致しない場合には、特定画像データ生成部３６は、全体画像データ１１４，１１６の幅が、上記の所定の幅情報が示す値に一致するように、特定画像データ１１６を生成してもよい。本変形例も、本明細書によって開示される「スキャナ装置」に含まれる。
【００７６】
（変形例７）なお、「第１の値」は、上記の最大高さよりも大きい値であってもよいし、上記の最大高さよりも小さい値であってもよい。特に、「第１の値」が上記の最大高さよりも小さい値である場合には、以下の構成を採用してもよい。例えば、「第１の値」は、ユーザによって指定されるスキャン解像度が最大のスキャン解像度より低い場合には、最大のスキャン対象物を指定済みのスキャン解像度でスキャンすることによって生成される実画像データの高さであってもよい。また、例えば、実際のスキャンの前に、スキャン対象物７２のおおよそのサイズをユーザによって指定させてもよい。この場合、「第１の値」は、指定済みのサイズより大きいサイズであって、最大のスキャン対象物のサイズよりも小さいサイズのスキャン対象物を、最大のスキャン解像度（又は指定済みのスキャン解像度）でスキャンすることによって生成される実画像データの高さであってもよい。
【００７７】
（変形例８）多機能機１０は、ＰＤＦデータを生成しなくてもよい。例えば、多機能機１０は、元データとダイジェスト値との組合せ情報をＵＳＢメモリ８に保存し、例えば、ＰＣ６は、この組合せ情報を読み込んでＰＤＦデータを生成してもよい。即ち、図４のＳ１０及びＳ３６は、多機能機１０と別の装置によって実行されてもよい。一般的に言うと、「スキャナ装置」は、元データ生成部と算出部とを少なくとも含んでいればよい。
【００７８】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
【００７９】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００８０】
２：通信システム、８：ＵＳＢメモリ、１０：多機能機、２０：制御部、２６：ＲＡＭ、１００：ＰＤＦファイル、１１１：１ページ目のＪＰＥＧデータ、１１１ａ〜１１１ｃ：部分ＪＰＥＧデータ、１１２：ヘッダ情報、１１４：実画像データ、１１６：特定画像データ、１１８：フッタ情報
【図１】
0005293694.tif 000002
【図２】
0005293694.tif 000003
【図３】
0005293694.tif 000004
【図４】
0005293694.tif 000005
【図５】
0005293694.tif 000006
【図６】
0005293694.tif 000007