(57)【要約】【課題】  ＲＡＭの記憶容量が比較的に少ない場合でも、ハッシュ値を迅速に算出し得る技術を提供すること。【解決手段】  多機能機は、スキャン対象物を表わすＪＰＥＧデータを用いてダイジェスト値を算出し、ＪＰＥＧデータとダイジェスト値とを用いて、ＵＳＢメモリ８内にＰＤＦファイルを生成する。多機能機は、ＲＡＭ２６内の空き容量が不足しない場合には、１ページ目のＪＰＥＧデータを構成する各データ１１４ａ〜１１４ｅを、ＲＡＭ２６及びＵＳＢメモリ８の両方に書き込み、ＲＡＭ２６内の空き容量が不足する場合には、各データ１１４ａ〜１１４ｅを、ＵＳＢメモリ８のみに書き込む。その後、多機能機１０は、ＪＰＥＧヘッダ１１４ａに含まれる高さ情報を変更する。多機能機１０は、ＲＡＭ２６内の各データ１１４ａ〜１１４ｅを優先的に用いて、ハッシュ値を算出する。【選択図】  図７
2011239345.tif 000002
【特許請求の範囲】
【請求項１】
外部記憶装置を利用するスキャナ装置であって、
内部記憶装置と、
スキャンされたスキャン対象物を表わす１ページ分以上の元データを生成する元データ生成部と、
前記１ページ分以上の元データを用いて、ダイジェスト値を算出し、前記１ページ分以上の元データと前記ダイジェスト値とを用いて、前記外部記憶装置内に文書データを生成する文書データ生成部と、を備え、
前記文書データ生成部は、
前記１ページ分以上の元データのうちの１ページ分の元データを構成する複数の部分データのそれぞれについて、当該部分データを少なくとも前記外部記憶装置に書き込むための書込処理を実行する書込処理実行部であって、
（Ａ１）前記書込処理の対象の部分データである第１種の対象部分データのための前記書込処理において、前記内部記憶装置内の空き容量が不足しない場合には、前記内部記憶装置及び前記外部記憶装置の両方に前記第１種の対象部分データを書き込み、
（Ａ２）前記第１種の対象部分データのための前記書込処理において、前記内部記憶装置内の空き容量が不足する場合には、前記外部記憶装置のみに前記第１種の対象部分データを書き込む、前記書込処理実行部と、
前記複数の部分データのための複数の前記書込処理が終了した後に、前記複数の部分データのうちの特定の部分データを変更する変更部であって、前記特定の部分データは、前記複数の部分データのうちの他の部分データよりも先に前記書込処理が実行される部分データである、前記変更部と、
変更後の前記特定の部分データを含む前記複数の部分データのそれぞれを順次用いて、前記ダイジェスト値を算出するための算出処理を順次実行する算出処理実行部であって、
（Ｂ１）前記算出処理の対象の部分データである第２種の対象部分データが、前記内部記憶装置及び前記外部記憶装置の両方に記憶されている場合には、前記内部記憶装置に記憶されている前記第２種の対象部分データを用いて、前記算出処理を実行し、
（Ｂ２）前記第２種の対象部分データが、前記外部記憶装置のみに記憶されている場合には、前記外部記憶装置に記憶されている前記第２種の対象部分データを用いて、前記算出処理を実行する、前記算出処理実行部と、を備える
スキャナ装置。
【請求項２】
前記特定の部分データは、前記１ページ分の元データのうち、ヘッダ部分を含む部分データである、請求項１に記載のスキャナ装置。
【請求項３】
前記変更部は、１ページ分の前記スキャン対象物に対するスキャンが終了した後に、前記特定の部分データに含まれる前記ヘッダ部分内に、前記１ページ分の前記スキャン対象物のスキャン方向に沿ったサイズに関するサイズ情報を書き込むことによって、前記特定の部分データを変更する、請求項２に記載のスキャナ装置。
【請求項４】
前記１ページ分の元データを構成する前記複数の部分データのための前記複数の書込処理が開始されてから終了するまでの間に、前記書込処理とは異なる特定の処理が実行されるべき際に、前記特定の処理のための特定のデータを前記内部記憶装置に書き込んで、前記特定の処理を実行する特定処理実行部をさらに備える、請求項１から３のいずれか１項に記載のスキャナ装置。
【請求項５】
前記特定処理実行部は、前記特定のデータを前記内部記憶装置に書き込むべき際に、前記内部記憶装置内の空き容量が不足すると、前記内部記憶装置内の部分領域であって、前記１ページ分の元データのうちの一部のデータが既に書き込まれている前記部分領域に、前記特定のデータを書き込む、請求項４に記載のスキャナ装置。
【請求項６】
前記文書データ生成部は、さらに、前記ダイジェスト値を暗号化することによって、署名値を生成する署名値生成部を備え、
前記文書データ生成部は、前記１ページ分以上の元データと前記署名値とを含む前記文書データを、前記外部記憶装置内に生成する、請求項１から５のいずれか一項に記載のスキャナ装置。
【請求項７】
前記外部記憶装置が装着される装着部をさらに備える、請求項１から６のいずれか１項に記載のスキャナ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、スキャン対象物を表わす元データを用いて、文書データを生成するスキャナ装置を開示する。
【背景技術】
【０００２】
例えば、特許文献１には、スキャンされた紙情報を用いて、ＰＤＦの文書データを生成するスキャナ装置が開示されている。このスキャナ装置は、ＰＤＦの文書データからハッシュ値を生成し、ハッシュ値からタイムスタンプトークンを生成する。さらに、スキャナ装置は、タイムスタンプトークンを文書データに埋め込むことによって、タイムスタンプ付きの文書データを生成する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１４１６９２号公報
【特許文献２】特表２００２−５１５２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の特許文献１には、ハッシュ値を生成するための具体的な手法について、何ら開示されていない。本明細書では、スキャナ装置の内部記憶装置の記憶容量が比較的に少ない場合でも、ダイジェスト値（特許文献１の例ではハッシュ値）を迅速に算出し得る技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書では、外部記憶装置を利用するスキャナ装置を開示する。スキャナ装置は、内部記憶装置と、スキャンされたスキャン対象物を表わす１ページ分以上の元データを生成する元データ生成部と、１ページ分以上の元データを用いて、ダイジェスト値を算出し、１ページ分以上の元データとダイジェスト値とを用いて、外部記憶装置内に文書データを生成する文書データ生成部と、を備える。文書データ生成部は、書込処理実行部と、変更部と、算出処理実行部と、を備える。
【０００６】
書込処理実行部は、１ページ分以上の元データのうちの１ページ分の元データを構成する複数の部分データのそれぞれについて、当該部分データを少なくとも外部記憶装置に書き込むための書込処理を実行する。書込処理実行部は、（Ａ１）書込処理の対象の部分データである第１種の対象部分データのための書込処理において、内部記憶装置内の空き容量が不足しない場合には、内部記憶装置及び外部記憶装置の両方に第１種の対象部分データを書き込み、（Ａ２）第１種の対象部分データのための書込処理において、内部記憶装置内の空き容量が不足する場合には、外部記憶装置のみに第１種の対象部分データを書き込む。変更部は、複数の部分データのための複数の書込処理が終了した後に、複数の部分データのうちの特定の部分データを変更する。特定の部分データは、複数の部分データのうちの他の部分データよりも先に書込処理が実行される部分データである。算出処理実行部は、変更後の特定の部分データを含む複数の部分データのそれぞれを順次用いて、ダイジェスト値を算出するための算出処理を順次実行する。算出処理実行部は、（Ｂ１）算出処理の対象の部分データである第２種の対象部分データが、内部記憶装置及び外部記憶装置の両方に記憶されている場合には、内部記憶装置に記憶されている第２種の対象部分データを用いて、算出処理を実行し、（Ｂ２）第２種の対象部分データが、外部記憶装置のみに記憶されている場合には、外部記憶装置に記憶されている第２種の対象部分データを用いて、算出処理を実行する。
【０００７】
本技術では、１ページ分の元データを構成する複数の部分データが外部記憶装置に書き込まれるために、スキャナ装置は、外部記憶装置内の複数の部分データを用いて算出処理を実行することができる。ただし、外部記憶装置内のデータを用いて処理を実行するのに要する時間は、通常、内部記憶装置内のデータを用いて処理を実行するのに要する時間よりも長くなる。従って、本技術では、内部記憶装置内の部分データを用いて算出処理を実行することができるように、スキャナ装置は、外部記憶装置のみならず、内部記憶装置にも部分データを書き込む。
【０００８】
ただし、本技術では、スキャナ装置は、複数の部分データのための複数の書込処理が終了した後に、他の部分データよりも先に書込処理が実行される特定の部分データを変更する。従って、特定の部分データが変更されるまで、即ち、複数の部分データのための複数の書込処理が終了するまで、スキャナ装置は、複数の部分データを用いて算出処理を実行することができない。例えば、非常に大きい記憶容量を有する内部記憶装置を利用すれば、算出処理が実行される前に、複数の部分データの全てを同時的に内部記憶装置内で保持することができる。ただし、内部記憶装置の記憶容量が比較的に少ない場合には、複数の部分データの全てを内部記憶装置に書き込むことができない可能性がある。従って、本技術では、スキャナ装置は、内部記憶装置の空き容量が不足しない場合には、外部記憶装置及び内部記憶装置の両方に部分データを書き込むが、内部記憶装置の空き容量が不足する場合には、外部記憶装置のみに部分データを書き込む。即ち、スキャナ装置は、内部記憶装置の記憶容量が比較的に少ない場合でも、内部記憶装置の空き容量に応じて、内部記憶装置に部分データを書き込むことができる。このために、スキャナ装置は、内部記憶装置内の部分データを用いて算出処理を実行し得るために、ダイジェスト値を迅速に算出し得る。本技術によると、内部記憶装置の記憶容量が比較的に少ない場合でも、ダイジェスト値を迅速に算出し得る。
【０００９】
なお、上記のスキャナ装置の機能を実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記憶媒体も新規で有用である。
【図面の簡単な説明】
【００１０】
【図１】通信システムの構成を示す。
【図２】ＰＤＦファイルの構成を示す。
【図３】ＰＤＦファイル生成処理のフローチャートを示す。
【図４】対象ページのスキャン処理のフローチャートを示す。
【図５】ＲＡＭ及びＵＳＢメモリの記憶内容が変化する様子を示す。
【図６】対象ページまでの中間ハッシュ値算出処理のフローチャートを示す。
【図７】中間ハッシュ値算出処理の内容を説明するための図を示す。
【発明を実施するための形態】
【００１１】
（システムの構成）
図面を参照して実施例を説明する。図１に示すように、通信システム２は、ＰＣ６と、ＰＣ６の周辺機器である多機能機１０と、を備える。ＰＣ６と多機能機１０とは、ネットワークケーブル４を介して、相互に通信可能である。
【００１２】
（多機能機１０の構成）
多機能機１０は、印刷機能及びスキャン機能を含む多機能を実行可能である。多機能機１０は、操作部１２と、表示部１４と、ＵＳＢインターフェイス１６と、ネットワークインターフェイス１８と、制御部２０と、印刷実行部６０と、スキャン実行部７０と、を備える。各部１２〜２０，６０，７０は、バス線１１に接続されている。操作部１２は、複数のキーによって構成されている。ユーザは、操作部１２を操作することによって、様々な情報を多機能機１０に入力することができる。表示部１４は、様々な情報を表示するためのディスプレイである。ＵＳＢインターフェイス１６には、ユーザが持ち運び可能な外部メモリであるＵＳＢメモリ８が装着される。ネットワークインターフェイス１８には、ネットワークケーブル４が接続される。
【００１３】
制御部２０は、ＣＰＵ２２と、ＲＯＭ２４と、ＲＡＭ２６と、を備える。ＣＰＵ２２は、ＲＯＭ２４に格納されているプログラムに従って、様々な処理を実行する。ＣＰＵ２２が上記のプログラムに従って処理を実行することによって、元データ生成部３０、文書データ生成部４０、及び、特定処理実行部５０の各機能が実現される。なお、文書データ生成部４０は、書込処理実行部４２、変更部４４、算出処理実行部４６、及び、署名値生成部４８を備える。ＲＡＭ２６は、ＣＰＵ２２が直接的にアクセス可能なメインメモリであり、制御部２０によって取得又は生成される様々なデータを記憶する。なお、ＲＡＭ２６は、最大のデータサイズを有する１ページ分のＪＰＥＧ（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）−１を利用するが、ＭＤ４、ＭＤ５等の他のハッシュ関数を利用してもよい。また、以下では、図３のＳ２８で最終的に算出されるハッシュ値のことを「最終ハッシュ値」と呼び、最終ハッシュ値を生成するためにＳ２８よりも前の処理で算出されるハッシュ値のことを「中間ハッシュ値」と呼ぶ。なお、制御部２０は、Ｓ１０で中間ハッシュ値が算出されると、最初のデータ１００ａをＲＡＭ２６から消去する。
【００２１】
次いで、Ｓ１２において、文書データ生成部４０は、対象ページの開始データをＲＡＭ２６内に生成する。１回目のＳ１２では、対象ページは、１ページ目である。従って、１回目のＳ１２では、文書データ生成部４０は、１ページ目の開始データ１１２（図２参照）を生成する。なお、以下では、対象ページが１ページ目である場合を例として、Ｓ１２〜Ｓ２４の処理の内容を説明する。Ｓ１２では、さらに、書込処理実行部４２は、ＲＡＭ２６内に生成された開始データ１１２を、ＵＳＢメモリ８に書き込む。Ｓ１２では、さらに、算出処理実行部４６は、Ｓ１０で算出された中間ハッシュ値と、１ページ目の開始データ１１２と、を用いて、新たな中間ハッシュ値を算出する。この結果、最初のデータ１００ａの先頭から１ページ目の開始データ１１２の最後までの中間ハッシュ値が算出される。なお、制御部２０は、Ｓ１２で中間ハッシュ値が算出されると、１ページ目の開始データ１１２をＲＡＭ２６から消去する。
【００２２】
（対象ページのスキャン処理）
続いて、Ｓ１４において、制御部２０は、対象ページ（即ち１ページ目）のスキャン処理を実行する。Ｓ１４では、制御部２０は、まず、予め決められた第１のサイズの記憶容量を有する記憶領域（以下では「ＪＰＥＧデータ生成用領域」と呼ぶ）をＲＡＭ２６内に確保する。Ｓ１４では、さらに、制御部２０は、１ページ目のスキャン対象物に対するスキャンをスキャン実行部７０に実行させる。なお、スキャン実行部７０は、スキャンによって得られるＲＧＢのビットマップ形式のスキャンデータを一時的に格納するためのバッファ（図示省略）を備える。バッファは、上記の第１のサイズの記憶容量（ＲＡＭ２６内に確保されるＪＰＥＧデータ生成用領域の記憶容量）よりも小さい第２のサイズの記憶容量を有する。バッファの記憶容量である第２のサイズが比較的に小さいために、バッファには、１ページ分のスキャンデータの全てを格納することができず、１ページ分のスキャンデータのうちの一部である部分スキャンデータが格納される。バッファ内の部分スキャンデータは、ＲＡＭ２６内のＪＰＥＧデータ生成用領域に書き込まれる。これにより、バッファを解放することができ、バッファに次の部分スキャンデータが格納される。部分スキャンデータがＪＰＥＧデータ生成用領域に格納されると、図４のＳ４０の処理が実行される。
【００２３】
対象ページ（即ち１ページ目）の最初の部分スキャンデータがＪＰＥＧデータ生成用領域に格納された場合には、Ｓ４０において、元データ生成部３０は、まず、１ページ目のＪＰＥＧヘッダ１１４ａ（図２参照）をＪＰＥＧデータ生成用領域内に生成する。この段階では、１ページ目のスキャン対象物に対するスキャンが終了していないために、１ページ目のＪＰＥＧデータ１１４の高さ情報が未定である。従って、元データ生成部３０は、予め決められた仮の高さ情報を含むＪＰＥＧヘッダ１１４ａを生成する。Ｓ４０では、さらに、元データ生成部３０は、ＪＰＥＧデータ生成用領域に格納された部分スキャンデータを、ＪＰＥＧ形式のデータ（即ち部分ＪＰＥＧデータ１１４ｂ（図２参照））に変換する。なお、部分ＪＰＥＧデータ１１４ｂも、ＪＰＥＧデータ生成用領域内に生成される。
【００２４】
次いで、Ｓ４２において、書込処理実行部４２は、ＲＡＭ２６の空き容量が不足しているのか否かを判断する。具体的に言うと、書込処理実行部４２は、ＲＡＭ２６内のＪＰＥＧデータ生成用領域以外の領域のうちの未使用の領域の容量（即ち空き容量）が、所定のサイズ（例えば書き込まれる対象のデータのサイズ（例えばＪＰＥＧヘッダ１１４ａ及び部分ＪＰＥＧデータ１１４ｂの合計サイズ）よりも大きいのか否かを判断する。
【００２５】
ＲＡＭ２６の空き容量が不足していない場合（Ｓ４２でＮＯの場合）には、Ｓ４４において、書込処理実行部４２は、Ｓ４０で生成されたＪＰＥＧヘッダ１１４ａを、ＲＡＭ２６内のＪＰＥＧデータ生成用領域以外の特定の領域に書き込む。次いで、書込処理実行部４２は、部分ＪＰＥＧデータ１１４ｂを上記の特定の領域に書き込む。なお、ＪＰＥＧヘッダ１１４ａが書き込まれるＲＡＭ２６内の第１の領域と、部分ＪＰＥＧデータ１１４ｂが書き込まれるＲＡＭ２６内の第２の領域と、が隣接するように、Ｓ４４の書込処理が実行される。各データ１１４ａ，１１４ｂを格納するＲＡＭ２６内の各領域が隣接するように書込処理が実行されることにより、後述の図６のＳ６２でＲＡＭ２６内の各データ１１４ａ，１１４ｂにアクセスする際のアクセス効率が向上する。Ｓ４４の書込処理により、図５のＲＡＭ２６に示されるように、各データ１１４ａ，１１４ｂが書き込まれる。Ｓ４４を終えると、Ｓ４６に進む。なお、ＲＡＭ２６の空き容量が不足している場合（Ｓ４２でＹＥＳの場合）には、ＲＡＭ２６への書込処理（Ｓ４４の処理）は実行されずに、Ｓ４６に進む。
【００２６】
Ｓ４６では、書込処理実行部４２は、Ｓ４０で生成されたＪＰＥＧヘッダ１１４ａ及び部分ＪＰＥＧデータ１１４ｂを、ＵＳＢメモリ８に書き込む。Ｓ４６の書込処理でも、Ｓ４４の書込処理と同様に、各データ１１４ａ，１１４ｂを格納するＵＳＢメモリ８内の各領域が隣接するように書き込まれる。これにより、後述の図６のＳ６４でＵＳＢメモリ８内の各データ１１４ａ，１１４ｂにアクセスする際のアクセス効率が向上する。なお、後述の他の各データ１１４ｃ，１１４ｄ，１１４ｅについても、各データを格納する各領域が隣接するように、Ｓ４４及びＳ４６の書込処理が実行される。Ｓ４６の書込処理により、図５のＵＳＢメモリ８に示されるように、各データ１１４ａ，１１４ｂが書き込まれる。なお、図示省略しているが、Ｓ４６を終えると、元データ生成部３０は、部分スキャンデータ、ＪＰＥＧヘッダ１１４ａ、及び、部分ＪＰＥＧデータ１１４ｂを、ＪＰＥＧデータ生成用領域から消去する。これにより、ＪＰＥＧデータ生成用領域が解放され、ＪＰＥＧデータ生成用領域に新たな部分スキャンデータが格納される。
【００２７】
次いで、Ｓ４８において、元データ生成部３０は、１ページ目のスキャン対象物に対するスキャンが終了したのか否かを判断する。１ページ目のスキャン対象物を表わす最後の部分スキャンデータは、ページの最後であることを示す情報を含む。このような情報を含む部分スキャンデータに対してＳ４０〜Ｓ４６の処理が実行された場合には、元データ生成部３０は、Ｓ４８でＹＥＳと判断し、対象ページのスキャン処理を終了する。
【００２８】
一方において、１ページ目のスキャン対象物に対するスキャンが終了していない場合（Ｓ４８でＮＯの場合）には、元データ生成部３０は、Ｓ４０以降の処理を再び実行する。これにより、元データ生成部３０は、部分ＪＰＥＧデータ１１４ｃ，１１４ｄ（図２参照）を順次生成する。また、書込処理実行部４２は、部分ＪＰＥＧデータ１１４ｃ，１１４ｄを少なくともＵＳＢメモリ８に順次書き込む（空き容量が不足していない場合にはＲＡＭ２６にも書き込む）。なお、１ページ目の最後の部分スキャンデータがＪＰＥＧデータ生成用領域に格納された場合には、元データ生成部３０は、Ｓ４０において、部分ＪＰＥＧデータ１１４ｄのみならず、１ページ目のＪＰＥＧフッタ１１４ｅも生成する。この場合、書込処理実行部４２は、Ｓ４４及びＳ４６において、部分ＪＰＥＧデータ１１４ｄのみならず、１ページ目のＪＰＥＧフッタ１１４ｅも書き込む。
【００２９】
１ページ目のスキャン処理が終了した段階では、図５のＵＳＢメモリ８に示されるように、１ページ目のＪＰＥＧデータ１１４を構成する全てのデータ１１４ａ〜１１４ｅが、ＵＳＢメモリ８に書き込まれる。ただし、ＲＡＭ２６には、全てのデータ１１４ａ〜１１４ｅが書き込まれるとは限らない。図４のＳ４２でＲＡＭ２６の空き容量が不足していると判断され、ＲＡＭ２６にデータ１１４ａ等が書き込まれない可能性があるからである。ＲＡＭ２６の空き容量が不足する状況について、次に説明する。
【００３０】
（印刷処理）
上述したように、ＲＡＭ２６は、最大のデータサイズを有する１ページ分のＪＰＥＧデータを記憶するための記憶容量よりも大きい記憶容量を有する。従って、制御部２０によって図３のＰＤＦファイル生成処理のみが実行されている状態では、通常、ＲＡＭ２６に十分な空き容量が確保されているために、図４のＳ４２でＮＯと判断され、１ページ目のＪＰＥＧデータ１１４を構成する全てのデータ１１４ａ〜１１４ｅがＲＡＭ２６に書き込まれる。ただし、図３のＰＤＦファイル生成処理が実行されている間に、例えば、ＰＣ６から多機能機１０に印刷データが送信される可能性がある。この場合、特定処理実行部５０（図１参照）は、図３のＰＤＦファイル生成処理と同時的に（ＰＤＦファイル生成処理に並行して）、図示省略の印刷処理を実行する。
【００３１】
印刷処理において、特定処理実行部５０は、印刷データをＲＡＭ２６に書き込む。例えば、１ページ目のＪＰＥＧヘッダ１１４ａから部分ＪＰＥＧデータ１１４ｃまでがＲＡＭ２６に書き込まれた状態で印刷処理が開始される場合には、図５のＲＡＭ２６に示すように、特定処理実行部５０は、ＲＡＭ２６に印刷データ２００を書き込む。この結果、ＲＡＭ２６の空き容量が少なくなり、図４のＳ４２の処理において、ＲＡＭ２６の空き容量が不足していると判断され得る。
【００３２】
また、例えば、印刷データのサイズが比較的に大きい場合には、特定処理実行部５０が印刷データをＲＡＭ２６に書き込むべき際に、ＲＡＭ２６の空き容量が不足する可能性がある。また、例えば、特定処理実行部５０が受信済みの印刷データを、印刷に適した特定の形式のデータ（例えばＣＭＹＫ画像データ）に変換する処理を実行する際に、ＲＡＭ２６の空き容量が不足する可能性がある。印刷処理のためのデータ（印刷データ、上記の特定の形式のデータ等）をＲＡＭ２６に書き込むべき際に、ＲＡＭ２６の空き容量が不足すると、特定処理実行部５０は、図４のＳ４４でＲＡＭ２６に書き込まれたデータ（例えばＪＰＥＧヘッダ１１４ａ等）をＲＡＭ２６から消去し、ＲＡＭ２６を解放する。
【００３３】
なお、特定処理実行部５０は、図４のＳ４４でＲＡＭ２６に書き込まれたデータをＲＡＭ２６から消去する際に、古いデータ（先に生成されたデータ）を優先的に消去する。例えば、ＪＰＥＧヘッダ１１４ａから部分ＪＰＥＧデータ１１４ｃまでがＲＡＭ２６に書き込まれている状態では、特定処理実行部５０は、ＪＰＥＧヘッダ１１４ａを最初に消去し、その消去によっても空き容量の不足が解消されない場合には、部分ＪＰＥＧデータ１１４ｂをさらに消去し、その消去によっても空き容量の不足が解消されない場合には、部分ＪＰＥＧデータ１１４ｃをさらに消去する。上述したように、各データ１１４ａ，１１４ｂ，１１４ｃを格納するＲＡＭ２６内の各領域が隣接するように、ＲＡＭ２６への書込処理（図４のＳ４４）が実行される。従って、古いデータ（例えばデータ１１４ａ）を優先的に消去すれば、ＲＡＭ２６内に残る各データ（例えばデータ１１４ｂ，１１４ｃ）は、連続（隣接）する。このために、後述の図６のＳ６２でＲＡＭ２６内の各データにアクセスする際のアクセス効率が向上する。
【００３４】
また、ＪＰＥＧヘッダ１１４ａが優先的に消去されると、以下の効果も奏する。即ち、後述の図３のＳ１８では、ＪＰＥＧヘッダ１１４ａに対して、高さ情報の変更処理が実行されるが、ＪＰＥＧヘッダ１１４ａ以外の種類の部分ＪＰＥＧデータ１１４ｂ，１１４ｃに対して、高さ情報の変更処理が実行されない。図３のＳ１８の変更処理を実行する必要があるＪＰＥＧヘッダ１１４ａが優先的に消去されるために、図３のＳ１８の変更処理を実行せずに済み、処理の迅速化を実現し得る。
【００３５】
特定処理実行部５０は、消去したデータ（例えばＪＰＥＧヘッダ１１４ａ、部分ＪＰＥＧデータ１１４ｂ）が書き込まれていたＲＡＭ２６内の領域に、印刷処理のためのデータ（印刷データ、上記の特定の形式のデータ等）を書き込む。これにより、図５のＲＡＭ２６に示すように、ＲＡＭ２６に印刷処理のためのデータ２０２が書き込まれる。このような状態でも、図４のＳ４２の処理において、ＲＡＭ２６の空き容量が不足していると判断され得る。
【００３６】
（高さ情報の変更処理）
図３のＳ１４の対象ページ（即ち１ページ目）のスキャン処理が終了すると、図３のＳ１６に進む。上述したように、図４のＳ４０で生成される１ページ目のＪＰＥＧヘッダ１１４ａに含まれる高さ情報は、仮の高さ情報である。図３のＳ１６〜Ｓ２０では、変更部４４（図１参照）は、ＪＰＥＧヘッダ１１４ａ内の仮の高さ情報を変更する処理を実行する。
【００３７】
Ｓ１６では、変更部４４は、１ページ目の高さ情報がＲＡＭ２６内に存在するのか否かを判断する。１ページ目のＪＰＥＧヘッダ１１４ａがＲＡＭ２６に存在する場合には、変更部４４は、Ｓ１６でＹＥＳと判断し、Ｓ１８に進む。一方において、例えば、１ページ目のスキャン処理（図４参照）が実行されている間に、上記の特定処理実行部５０が、１ページ目のＪＰＥＧヘッダ１１４ａをＲＡＭ２６から消去する可能性がある（図５のＲＡＭ２６参照）。この場合、１ページ目のＪＰＥＧヘッダ１１４ａがＲＡＭ２６に存在しないために、変更部４４は、Ｓ１６でＮＯと判断し、Ｓ１８をスキップしてＳ２０に進む。
【００３８】
Ｓ１８では、変更部４４は、ＲＡＭ２６内の１ページ目のＪＰＥＧヘッダ１１４ａに含まれる仮の高さ情報を、１ページ目のＪＰＥＧデータ１１４の実際の高さ情報に変更する。なお、変更部４４は、スキャン実行部７０のスキャンの実行結果に基づいて、実際の高さ情報（各部分ＪＰＥＧデータ１１４ｂ〜１１４ｄの高さ方向の合計画素数）を得ることができる。具体的には、スキャン実行部７０のスキャンによって、スキャン方向（イメージセンサの移動方向、ＡＤＦの原稿の搬送方向）における１ページ目のスキャン対象物の先端位置及び後端位置が検出され、変更部４４は、当該先端位置及び後端位置に基づいて、実際の高さ情報を算出する。また、Ｓ２０では、変更部４４は、ＵＳＢメモリ８内の１ページ目のＪＰＥＧヘッダ１１４ａに含まれる仮の高さ情報を、１ページ目のＪＰＥＧデータ１１４の実際の高さ情報に変更する。
【００３９】
（中間ハッシュ値算出処理）
Ｓ２０を終えると、Ｓ２２において、算出処理実行部４６は、対象ページ（即ち１ページ目）までの中間ハッシュ値算出処理を実行する。図６に示されるように、Ｓ６０において、算出処理実行部４６は、中間ハッシュ値を算出するための対象のデータ（以下では「対象部分データ」と呼ぶ）が、ＲＡＭ２６内に存在するのか否かを判断する。なお、対象部分データは、１ページ目のＪＰＥＧデータ１１４を構成する各データ１１４ａ〜１１４ｅのうち、中間ハッシュ値を算出するために未だに利用されていない最も古いデータ（最も先に生成されたデータ）である。例えば、１ページ目までの中間ハッシュ値算出処理において、１回目のＳ６０〜Ｓ６６の処理が実行される場合には、対象部分データは、１ページ目のＪＰＥＧヘッダ１１４ａであり、２回目のＳ６０〜Ｓ６６の処理が実行される場合には、対象部分データは、部分ＪＰＥＧデータ１１４ｂである。
【００４０】
１回目のＳ６０では、算出処理実行部４６は、ＲＡＭ２６内に１ページ目のＪＰＥＧヘッダ１１４ａが存在するのか否かを判断する。１回目のＳ６０でＹＥＳの場合、Ｓ６２において、算出処理実行部４６は、ＲＡＭ２６内の１ページ目のＪＰＥＧヘッダ１１４ａを取得する（読み込む）。一方において、１回目のＳ６０でＮＯの場合、Ｓ６４において、算出処理実行部４６は、ＵＳＢメモリ８内の１ページ目のＪＰＥＧヘッダ１１４ａを取得する（読み込む）。より具体的に言うと、Ｓ６４では、算出処理実行部４６は、ＵＳＢメモリ８内の１ページ目のＪＰＥＧヘッダ１１４ａをＲＡＭ２６に一時的に書き込む。
【００４１】
次いで、１回目のＳ６６では、算出処理実行部４６は、図３のＳ１２で算出された中間ハッシュ値と、Ｓ６２又はＳ６４で取得された１ページ目のＪＰＥＧヘッダ１１４ａと、を用いて、新たな中間ハッシュ値を算出する。この結果、最初のデータ１００ａ（図２参照）の先頭から１ページ目のＪＰＥＧヘッダ１１４ａの最後までの中間ハッシュ値が算出される。１回目のＳ６６を終えると、Ｓ６８において、算出処理実行部４６は、ＲＡＭ２６及びＵＳＢメモリ８に書き込まれた対象ページ（即ち１ページ目）のＪＰＥＧデータ１１４のサイズを用いて、対象ページの処理が終了したのか否かを判断する。具体的には、１ページ目のＪＰＥＧデータ１１４までの中間ハッシュ値算出処理（図６）では、算出処理実行部４６は、Ｓ６２又はＳ６４で取得された各対象部分データの合計のサイズが、１ページ目のＪＰＥＧデータ１１４のサイズよりも小さい場合に、Ｓ６８でＮＯと判断し、前者のサイズが後者のサイズに一致する場合に、Ｓ６８でＹＥＳと判断する。なお、別の実施例では、算出処理実行部４６は、Ｓ６２又はＳ６４で取得された対象部分データの数（即ちＳ６２又はＳ６４が実行された回数）が、１ページ目のＪＰＥＧデータ１１４を構成する複数のデータ１１４ａ〜１１４ｅの数（即ち図４のＳ４６が実行された回数）よりも小さい場合には、Ｓ６８でＮＯと判断し、前者の数が後者の数に一致する場合に、Ｓ６８でＹＥＳと判断してもよい。Ｓ６８でＮＯの場合、算出処理実行部４６は、Ｓ６０〜Ｓ６６の処理を再び実行する。
【００４２】
２回目のＳ６０では、算出処理実行部４６は、ＲＡＭ２６内に部分ＪＰＥＧデータ１１４ｂが存在するのか否かを判断する。算出処理実行部４６は、２回目のＳ６０でＹＥＳの場合には、ＲＡＭ２６内の部分ＪＰＥＧデータ１１４ｂを取得し（Ｓ６２）、２回目のＳ６０でＮＯの場合には、ＵＳＢメモリ８内の部分ＪＰＥＧデータ１１４ｂを取得する。次いで、２回目のＳ６６では、算出処理実行部４６は、１回目（即ち前回）のＳ６６で算出された中間ハッシュ値と、Ｓ６２又はＳ６４で取得された部分ＪＰＥＧデータ１１４ｂと、を用いて、新たな中間ハッシュ値を算出する。この結果、最初のデータ１００ａ（図２参照）の先頭から部分ＪＰＥＧデータ１１４ｂの最後までの中間ハッシュ値が算出される。
【００４３】
上記と同様に、３回目以降のＳ６０〜Ｓ６６の処理が実行される。この結果、最初のデータ１００ａ（図２参照）の先頭から１ページ目のＪＰＥＧフッタ１１４ｅの最後までの中間ハッシュ値が算出される。この場合、Ｓ６８でＹＥＳと判断され、対象ページ（即ち１ページ目）までの中間ハッシュ値算出処理が終了する。なお、図示省略しているが、中間ハッシュ値算出処理が終了すると、制御部２０は、ＲＡＭ２６内に存在する全てのＪＰＥＧデータを消去する。これにより、ＲＡＭ２６が解放され、次の対象ページ（２ページ目）のＪＰＥＧデータをＲＡＭ２６に書き込むことができる。
【００４４】
なお、算出処理実行部４６は、図６のＳ６２を経てＳ６６を実行する場合（ＲＡＭ２６内の対象部分データを用いる場合）には、図６のＳ６４を経てＳ６６を実行する場合（ＵＳＢメモリ８内の対象部分データを用いる場合）と比べて、中間ハッシュ値を迅速に算出することができる。図６のＳ６４では、ＵＳＢメモリ８内の対象部分データをＲＡＭ２６に一時的に書き込むための処理が必要であり、当該処理に時間を要するからである。中間ハッシュ値を迅速に算出するために、図６の中間ハッシュ値算出処理では、算出処理実行部４６は、対象部分データがＲＡＭ２６及びＵＳＢメモリ８の両方に記憶されている場合（Ｓ６０でＹＥＳの場合）に、ＲＡＭ２６内の対象部分データを優先的に用いて、中間ハッシュ値を算出する。
【００４５】
例えば、図７の（Ａ）に示すように、１ページ目のＪＰＥＧデータ１１４を構成する全てのデータ１１４ａ〜１１４ｅがＲＡＭ２６及びＵＳＢメモリ８の両方に記憶されている状態では、算出処理実行部４６は、図７の（Ａ）に示す番号の順序で、ＲＡＭ２６内の各データ１１４ａ〜１１４ｅを順次用いて、中間ハッシュ値を順次算出する。
【００４６】
また、例えば、図７の（Ｂ）に示すように、１ページ目のＪＰＥＧデータ１１４を構成する一部のデータ１１４ｃのみがＲＡＭ２６及びＵＳＢメモリ８の両方に記憶されている状態では、算出処理実行部４６は、図７の（Ｂ）に示す番号の順序で、ＲＡＭ２６又はＵＳＢメモリ８内の各データ１１４ａ〜１１４ｅを順次用いて、中間ハッシュ値を順次算出する。即ち、図７の（Ｂ）の例では、算出処理実行部４６は、まず、ＵＳＢメモリ８内の各データ１１４ａ，１１４ｂを順次用いて、中間ハッシュ値を順次算出し、次いで、ＲＡＭ２６内のデータ１１４ｃを用いて、中間ハッシュ値を算出し、次いで、ＵＳＢメモリ８内の各データ１１４ｄ，１１４ｅを順次用いて、中間ハッシュ値を順次算出する。
【００４７】
図３のＳ２２の対象ページ（即ち１ページ目）までの中間ハッシュ値算出処理が終了すると、Ｓ２４に進む。Ｓ２４では、文書データ生成部４０は、１ページ目の終了データ１１６（図２参照）をＲＡＭ２６内に生成する。Ｓ２４では、さらに、書込処理実行部４２は、ＲＡＭ２６内に生成された終了データ１１６を、ＵＳＢメモリ８に書き込む。Ｓ２４では、さらに、算出処理実行部４６は、Ｓ２２で算出された中間ハッシュ値（最初のデータ１００ａ（図２参照）の先頭から１ページ目のＪＰＥＧフッタ１１４ｅの最後までの中間ハッシュ値）と、１ページ目の終了データ１１６と、を用いて、新たな中間ハッシュ値を算出する。この結果、最初のデータ１００ａの先頭から１ページ目の終了データ１１６の最後までの中間ハッシュ値が算出される。なお、制御部２０は、Ｓ２４で中間ハッシュ値が算出されると、１ページ目の終了データ１１６をＲＡＭ２６から消去する。
【００４８】
続いて、Ｓ２６において、制御部２０は、全ページのスキャン対象物に対するスキャンが終了したのか否かを判断する。具体的に言うと、制御部２０は、ＲＡＭ２６内のＪＰＥＧデータ生成用領域に新たな部分スキャンデータが格納されている場合には、Ｓ２６でＮＯと判断し、ＪＰＥＧデータ生成用領域に新たな部分スキャンデータが格納されていない場合には、Ｓ２６でＹＥＳと判断する。
【００４９】
Ｓ２６でＮＯの場合には、制御部２０は、対象ページを２ページ目として、２回目のＳ１２〜Ｓ２４の処理を再び実行する。２回目のＳ１２〜Ｓ２４の処理は、１回目のＳ１２〜Ｓ２４の処理と同様である。２回目のＳ１２〜Ｓ２４の処理の結果、図２に示される２ページ目の開始データ１２２、２ページ目のＪＰＥＧデータ１２４、及び、２ページ目の終了データ１２６が、ＵＳＢメモリ８に書き込まれる。さらに、最初のデータ１００ａの先頭から２ページ目の終了データ１２６の最後までの中間ハッシュ値が算出される。
【００５０】
Ｓ２６でＹＥＳの場合には、Ｓ２８において、文書データ生成部４０は、ＰＤＦファイル１００のフッタをＲＡＭ２６内に生成する。Ｓ２８では、さらに、算出処理実行部４６は、最後のＳ２４（例えばスキャン対象物の全ページ数が「２」である場合には２回目のＳ２４）で算出された中間ハッシュ値と、ＰＤＦファイル１００のフッタと、を用いて、最終ハッシュ値を算出する。この結果、最初のデータ１００ａの先頭からフッタの最後までの最終ハッシュ値が算出される。Ｓ２８では、さらに、署名値生成部４８（図１参照）は、最終ハッシュ値を予め決められた秘密鍵で暗号化することによって、署名値（即ち署名済みハッシュ値）を生成する。Ｓ２８では、さらに、文書データ生成部４０は、ＰＤＦファイル１００のフッタと、署名値と、予め決められた証明書と、を含む最後のデータ１００ｂ（図２参照）を生成する。なお、署名値及び証明書は、最終ハッシュ値を算出するための対象（ハッシュ化の対象）ではない。Ｓ２８では、さらに、書込処理実行部４２は、最後のデータ１００ｂを、ＵＳＢメモリ８に書き込む。これにより、ＵＳＢメモリ８内に図２に示されるＰＤＦファイル１００が完成する。
【００５１】
（外部装置の処理）
ユーザは、ＰＤＦファイル１００を含むＵＳＢメモリ８を持ち運ぶことができる。ユーザは、多機能機１０以外の外部装置（例えばＰＣ６）のＵＳＢインターフェイスにＵＳＢメモリ８を装着することにより、ＵＳＢメモリ８内のＰＤＦファイル１００を外部装置の表示部に表示させることができる。この際に、外部装置は、最初のデータ１００ａの先頭から、最後のデータ１００ｂ内のフッタの最後までのハッシュ値（以下では「第１のハッシュ値」と呼ぶ）を算出することができる。また、外部装置は、最後のデータ１００ｂに含まれる署名値を、最後のデータ１００ｂに含まれる公開鍵で復号化することよって、ハッシュ値（以下では「第２のハッシュ値」と呼ぶ）を生成することができる。外部装置は、第１のハッシュ値と第２のハッシュ値とを比較することによって、ＰＤＦファイル１００に対する改ざんの有無を判断することができる。例えば、外部装置は、第１のハッシュ値と第２のハッシュ値とが一致しない場合に、ＰＤＦファイル１００が改ざんされた可能性があることを示すメッセージを表示部に表示させる。ユーザは、当該メッセージを見ることによって、ＰＤＦファイル１００が改ざんされた可能性があることを知ることができる。
【００５２】
実施例の通信システム２について詳しく説明した。多機能機１０は、図３のＳ１４の対象ページのスキャン処理（図４参照）において、１ページ分のＪＰＥＧデータ１１４を構成する複数のデータ１１４ａ〜１１４ｅを少なくともＵＳＢメモリ８に書き込む（図４のＳ４６）。従って、多機能機１０は、ＵＳＢメモリ８内の複数のデータ１１４ａ〜１１４ｅを用いて、中間ハッシュ値を算出することができる。ただし、上述したように、ＵＳＢメモリ８内のデータ１１４ａ等を用いて中間ハッシュ値を算出する場合には、比較的に長時間を要する。従って、本実施例では、多機能機１０は、ＲＡＭ２６内のデータ１１４ａ等を用いて中間ハッシュ値を算出することができるように、ＵＳＢメモリ８のみならず、ＲＡＭ２６にもデータ１１４ａ等を書き込む（図４のＳ４４）。
【００５３】
ただし、多機能機１０は、図３のＳ１８及びＳ２０において、１ページ目のＪＰＥＧヘッダ１１４ａ内の仮の高さ情報を、実際の高さ情報に変更する。上述したように、１ページ目のＪＰＥＧデータ１１４の実際の高さ情報は、１ページ目のスキャン対象物のスキャンが終了するまで未定である。従って、多機能機１０は、１ページ目のスキャン処理（図３のＳ１４）が終了した後に、１ページ目のＪＰＥＧヘッダ１１４ａに含まれる高さ情報を変更する。しかも、１ページ目のＪＰＥＧデータ１１４を構成する各データ１１４ａ〜１１４ｅのうち、中間ハッシュ値を生成するために最初に利用されるべきデータは、ＪＰＥＧヘッダ１１４ａである。従って、多機能機１０は、１ページ目のＪＰＥＧヘッダ１１４ａに含まれる高さ情報が変更されるまで、即ち、１ページ目のスキャン処理（図３のＳ１４）が終了するまで、１ページ目のＪＰＥＧデータ１１４を構成する各データ１１４ａ〜１１４ｅを用いて、中間ハッシュ値を算出することができない。ただし、多機能機１０のＲＡＭ２６の記憶容量は、比較的に少ないために（ＰＣ６等よりも少ないために）、例えば、印刷処理が同時的に実行される状況では、各データ１１４ａ〜１１４ｅの全てをＲＡＭ２６に書き込むことができない可能性がある（図５のＲＡＭ２６参照）。
【００５４】
従って、多機能機１０は、ＲＡＭ２６の空き容量が不足しない場合（図４のＳ４２でＮＯの場合）には、ＵＳＢメモリ８及びＲＡＭ２６の両方にデータ１１４ａ等を書き込むが、ＲＡＭ２６の空き容量が不足する場合（図４のＳ４２でＹＥＳの場合）には、ＵＳＢメモリ８のみにデータ１１４ａ等を書き込む。即ち、多機能機１０は、ＲＡＭ２６の空き容量が不足しない限り、ＲＡＭ２６にデータ１１４ａ等を書き込むことができ、この結果、ＲＡＭ２６の記憶容量が比較的に少ない場合でも、ＲＡＭ２６内のデータ１１４ａ等を用いて、中間ハッシュ値を算出することができる。本実施例の技術によると、ＲＡＭ２６に各データ１１４ａ〜１１４ｅが書き込まれない構成（即ちＵＳＢメモリ８への書込処理しか実行されない構成）と比べると、中間ハッシュ値を迅速に算出し得る。この結果、最終ハッシュ値及び署名値も迅速に算出し得るために、ＰＤＦファイル１００を迅速に生成し得る。
【００５５】
実施例の各要素と本発明の各要素との対応関係を記載しておく。多機能機１０が「スキャナ装置」の一例である。ＵＳＢメモリ８、ＲＡＭ２６、ＵＳＢインターフェイス１６が、それぞれ、「外部記憶装置」、「内部記憶装置」、「装着部」の一例である。１ページ目及び２ページ目のＪＰＥＧデータ１１４，１２４（図２参照）が、「１ページ分以上の元データ」の一例である。例えば、１ページ目のＪＰＥＧデータ１１４、当該ＪＰＥＧデータ１１４を構成する複数のデータ１１４ａ〜１１４ｅが、それぞれ、「１ページ分の元データ」、「複数の部分データ」の一例である。図３のＳ２８で算出される最終ハッシュ値が、「ダイジェスト値」の一例である。図４のＳ４４及びＳ４６で書き込まれる対象のデータ、図６のＳ６２及びＳ６４で取得される対象部分データが、それぞれ、「第１種の対象部分データ」、「第２種の対象部分データ」の一例である。ＪＰＥＧヘッダ１１４ａ、高さ情報が、それぞれ、「特定の部分データ」、「サイズ情報」の一例である。また、印刷処理、印刷処理のためのデータが、それぞれ、「特定の処理」、「特定のデータ」の一例である。
【００５６】
（変形例１）上記の実施例では、算出処理実行部４６は、ハッシュ化を利用することによって「ダイジェスト値」を生成するが、その代わりに、他のダイジェスト化の手法を利用してもよい。一般的に言うと、「ダイジェスト値」を算出するための手法は、１ページ分以上の元データから得られる値であって、１ページ分以上の元データの合計データサイズよりも小さいデータサイズを有する値を生成するためのあらゆるダイジェスト化の手法を含む。
【００５７】
（変形例２）上記の実施例では、文書データ生成部４０は、ＰＤＦの「文書データ」を生成するが、その代わりに、ＰＤＦ以外の形式以外の形式（例えばＸＰＳ形式）の「文書データ」を生成してもよい。また、上記の実施例では、元データ生成部３０は、ＪＰＥＧ形式の「元データ」を生成するが、その代わりに、ＪＰＥＧ形式以外の形式（例えば、ＴＩＦＦ、ＢＭＰ形式）の「元データ」を生成してもよい。
【００５８】
（変形例３）上記の実施例では、ＵＳＢメモリ８を「外部記憶装置」として利用しているが、それに代えて、「外部記憶装置」は、多機能機１０に内蔵されるハードディスクであってもよいし、多機能機１０に装着されるＣＤ、ＤＶＤ、フロッピー（登録商標）ディスク等のメディアであってもよいし、多機能機１０と別体に構成される外部装置（例えばサーバ）内の記憶装置であってもよい。
【００５９】
（変形例４）上記の実施例では、特定処理実行部５０は、例えば、図５のＲＡＭ２６に示されるように、印刷処理のためのデータをＲＡＭ２６に書き込むべき際に、各データ１１４ａ〜１１４ｃのうち、ＪＰＥＧヘッダ１１４ａを優先的に消去する。この構成に代えて、特定処理実行部５０は、ＪＰＥＧヘッダ１１４ａ以外の種類の部分ＪＰＥＧデータ１１４ｂ，１１４ｃを優先的に消去してもよい。
【００６０】
（変形例５）上記の実施例では、図５のＲＡＭ２６に示されるように、特定処理実行部５０は、ＲＡＭ２６内の空き容量が不足する場合に、個々のデータ１１４ａ〜１１４ｅを単位として、データの消去を実行する。即ち、特定処理実行部５０は、図４のＳ４４でＲＡＭ２６に書き込まれる個々のデータの単位で、データの消去を実行する。これに代えて、特定処理実行部５０は、各データ１１４ａ〜１１４ｅよりも小さい単位又は大きい単位で、データの消去を実行してもよい。例えば、特定処理実行部５０は、ＲＡＭ２６内の空き容量が不足する場合に、データ１１４ａのうちの一部のデータのみを消去し、その消去によっても空き容量の不足が解消されない場合には、データ１１４ａのうちの他のデータをさらに消去してもよい。また、例えば、特定処理実行部５０は、ＲＡＭ２６内の空き容量が不足する場合に、データ１１４ａとデータ１１４ｂとを同時的に消去し、その消去によっても空き容量の不足が解消されない場合には、データ１１４ｃとデータ１１４ｄとを同時的に消去してもよい。一般的に言うと、「１ページ分の元データのうちの一部のデータ」は、「部分データ」と同じ単位であってもよいし、異なる単位であってもよい。
【００６１】
（変形例６）上記の実施例では、図６のＳ６２又はＳ６４で取得されるデータの単位は、図４のＳ４４でＲＡＭ２６に書き込まれる個々のデータの単位と同じである。これに代えて、算出処理実行部４６は、各データ１１４ａ〜１１４ｅよりも小さい単位又は大きい単位で、図６のＳ６２，Ｓ６４の取得処理を実行してもよい。本変形例の構成も、「複数の部分データを順次用いて、・・・算出処理を順次実行する」という構成に含まれる。
【００６２】
（変形例７）上記の実施例では、印刷処理が「特定の処理」の一例であるが、「特定の処理」は、他の処理であってもよい。例えば、特定処理実行部５０は、外部装置からのアクセスに応じて、ＷＥＢページを示すデータを生成し、当該データを外部装置に送信する処理（「特定の処理」の一例）を実行してもよい。本変形例では、ＷＥＢページを示すデータが「特定のデータ」の一例である。
【００６３】
（変形例８）上記の実施例では、図３のＳ１８及びＳ２０において、変更部４４は、１ページ分の元データのヘッダ内の高さ情報を変更するが、それに代えて、幅情報、スキャン解像度、トータルデータサイズ等の他の情報を変更してもよい。
【００６４】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。
【００６５】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００６６】
２：通信システム、ＵＳＢメモリ８、１０：多機能機、２０：制御部、２６：ＲＡＭ、１００：ＰＤＦファイル、１１４：１ページ目のＪＰＥＧデータ、１１４ａ〜１１４ｅ：１ページ目のＪＰＥＧデータを構成する各データ、１２４：２ページ目のＪＰＥＧデータ
【図１】
2011239345.tif 000003
【図２】
2011239345.tif 000004
【図３】
2011239345.tif 000005
【図４】
2011239345.tif 000006
【図５】
2011239345.tif 000007
【図６】
2011239345.tif 000008
【図７】
2011239345.tif 000009