以下に添付図面を参照して、本発明にかかる情報処理装置、情報処理方法及び情報処理プログラムの最良な実施の形態を詳細に説明する。なお、以下の実施形態では、本発明の情報処理装置をPC(Personal Computer)等のファイル変換装置、ブラウジング装置、複写機やプリンタ、ファクシミリ等の印刷装置に適用した例を示すが、これに限定されるものではなく、ネットワーク上に共有された文書にアクセス可能な他の機器等にも適用することが可能である。
[第1の実施形態]
図1は、本発明にかかるファイル変換装置200を含む文書共有システムの構成を示した図である。同図に示したように、文書共有システムは、ネットワークNに接続された各機器に後述するJPMファイルを共有可能に提供する文書共有サーバ100と、JPMファイルにアクセスと行うファイル変換装置200と、ブラウジング装置300と、印刷装置400とを有している。以下、ファイル変換装置200、ブラウジング装置300、印刷装置400を総称してクライアントという。なお、ネットワークNに接続される文書共有サーバ100、ファイル変換装置200、ブラウジング装置300、印刷装置400の個数は、図1の態様に限定されないものとする。
図1において、文書共有サーバ100とクライアントとはネットワークNを介して接続され、種々のデータの送受信を行う。なお、ネットワークNを介したデータ通信の通信プロトコルとして、国際標準ISO15444−9で規定されたJPIP(JPEG2000 Interactivity Tools, APIs and Protocols)を用いるものとするが、これに限らず、ファイル中の特定のページのみを個別にアクセスすることが可能な通信プロトコルであれば他のプロトコルを用いる態様としてもよい。
図2は、文書共有サーバ100のハードウェア構成を示した図である。同図に示したように、文書共有サーバ100は、CPU(Central Processing Unit)11と、ROM(Read Only Memory)12と、RAM(Random Access Memory)13と、マウスやキーボード等の入力デバイスから構成される操作部14と、液晶モニタ等の表示デバイスから構成される表示部15と、HDD(Hard Disk Drive)等の記憶部16と、外部装置(ファイル変換装置200等)との通信を制御する通信I/F部17と、原稿の読み取りを行うスキャナ部18と、これら各部を接続するバス19とを備えており、通常のコンピュータを利用したハードウェア構成となっている。ROM12、記憶部16には、各種プログラムや各種データが記憶される。CPU11は、ROM12や記憶部16に記憶されている各種プログラムをRAM13にロードしてこれを実行することにより、文書共有サーバ100全体を制御し、後述する各種機能部を実現させる。
また、記憶部16には、スキャナ部18により読み取られた原稿画像が、後述する圧縮・符号化部112より構造化文書用のファイルフォーマットで符号化された構造化文書として記憶(蓄積)されている。ここで、構造化文書とは、文字からなる文字部や絵柄からなる絵柄部などの構成要素が混在する一般的な文書において、これらの構成要素をオブジェクトとして捉え、前景、背景及び前景と背景とを切り替えるためのマスクを有した複数のコードストリームから構成されるものである。
本実施形態では、構造化文書の符号化方式としてJPEG2000符号化方式(非特許文献2〜8参照)を用いるものとする。JPEG2000符号化方式(以下、単に「JPEG2000」という)では、従来のJPEGが離散コサイン変換を用いるのに対し、離散ウェーブレット変換を用いることにより、ブロック歪みを発生させることなくJPEGの約2倍の圧縮効果を実現している。
JPEG2000には、各種規定が定められており、例えば、ROI(関心領域)の符号化オプションなどが含まれるJPEG2000のPart2(ISO15444−2)、動画規格であるJPEG2000のPart3(ISO15444−3)、絵や文字などの異なる特性を含む複合的な画像に特化した規格であるJPEG2000のPart6(ISO15444−6)などが存在している。
以下、JPEG2000のPart6について説明する。JPEG2000のPart6は、絵や文字などの異なる特性を含む複合的な画像に特化した規格であり、国際標準ISO15444−615444−6で規定されている。このJPEG2000のPart6で定められたJPEG2000データのファイル拡張子は「JPM」となっている。以下、JPEG2000のPart6で符号化された構造化文書を「JPMファイル」という。また、文書共有サーバ100が提供するJPMファイルを「オリジナルのJPMファイル」という。JPMファイルは、文書を構成するための複数のボックス(Box)を有しており、これらボックスで規定される内容の階層関係や、包含関係によりJPMファイルを構成する各ページが表される。
図3は、JPMファイルのデータ構造を模式的に示した図である。同図に示したように、JPMファイルは、JPMファイルを管理するための各種の情報(管理情報)が格納されるヘッダ部と、JPMファイルの各ページに含まれた各種のコードストリームが格納されるデータ部とに大別される。
ヘッダ部のうち、メタデータには、図示しない下記の3つのフィールドが格納されている。
1.マジックナンバー
2.Signature Field
3.Type Field
ここで「マジックナンバー」には、本JPMファイルに固有の識別情報が記述されている。また、「Signature Field」には、本JPMファイルがJPEG2000に依存したファイルであることを示す情報が記述されている。また、「Type Field」には、ファイルタイプ、バージョン、互換性等を示す情報が記述されている。これら3つのフィールドは、この順序でJPMファイルの先頭部分に格納されるよう規定されている。
メタデータの後段に位置するヘッダデータには、コンパウンドヘッダデータと、ページコレクションボックスと、ページボックスとが格納されている。コンパウンドヘッダデータには、本JPMファイルが構造化文書であることを示す情報が記述されている。ページコレクションボックスには、本JPMファイルに含まれる各ページを管理するための情報が記述されており、各ページを指示するためのページボックスと対応付けられている。JPMでの規定では「ファイル→ページコレクション→ページ→レイアウトオブジェクト→オブジェクト→コードストリーム」の順で参照が行われるが、以下では説明の簡略化のため「ファイル→ページコレクション→ページ→コードストリーム」の順で参照が行われるものとして動作を説明する。なお、図3の例では、ページボックスとして「ページボックス0」と「ページボックス1」とが示されているが、これは「ページボックス0」と「ページボックス1」とに対応する2ページ分のファイルからJPMファイルが構成されることを意味している。以下、「ページボックス0」、「ページボックス1」に対応するページを夫々「ページ0」、「ページ1」と表す。
各ページボックス内には、対応するページの要素となるオブジェクト毎に図示しないオブジェクトボックス(Object Box)が用意されている。これら各オブジェクトボックスには、対応するオブジェクトを表すコードストリームの位置を指示するための情報(オフセットと長さ)が夫々記述されており、このオフセットと長さが示す位置に基づいてコードストリームが読み出されるようになっている。ここで「オフセット」とは、JPMファイルにおいて一意に定まる位置から、各コードストリームの先頭位置まで距離を示す情報である。また「長さ」とは、各コードストリームの先頭から終端までのデータ長を示す情報である。なお、各コードストリームについてのオフセットと長さは、JPEG2000による圧縮・符号化の際に、対応する各ページボックスに含まれるオブジェクトボックスに夫々書き込まれるものとする。
図3の例では、「ページボックス0」に含まれるオブジェクトボックス0は「コードストリーム0」の格納位置を示す「オフセット0」、オブジェクトボックス1には「コードストリーム1」の格納位置を示す「オフセット1」とが記述されることで、ページ0の要素として「コードストリーム0」と「コードストリーム1」とを参照することが可能となる(図中、破線参照)。また、同様に「ページボックス1」に含まれるオブジェクトボックス2は「オフセット2」が記述されることで、ページ1の要素として「コードストリーム2」を参照することが可能となっている。このように、各ページボックスからは、対応するページの要素となるコードストリームに夫々アクセスできるようになっている。
なお、JPEG2000のPart6で規定されるJPMファイルでは、上述したオフセットによる格納位置の指定ではなく、ボックス単位で付与されるPlace HolderのIDにより参照することも可能である。また、コードストリームが格納される順番は任意でよく、出現する順番が変動しても標準互換のJPMファイルとして機能すると規定されている。
図4は、図3に示したJPMファイルの表示例を示した図である。図4において、左辺に示した「ページ0」、「ページ1」は、「ページボックス0」、「ページボックス1」に夫々対応するページであって、これら2ページによりJPMファイルが構成されている。ここで、右辺は、「ページ0」が「コードストリーム0」と「コードストリーム1」とから構成されていることを表しており、また「ページ1」が「コードストリーム2」から構成されていることを表している。なお、各コードストリームが表す画像の大きさ(縮小率)やレイアウト位置(X,Y)は、各コードストリームに対応するページボックス毎に用意された、図示しないレイアウトオブジェクトヘッダデータ(Layout Object Header Box)により規定されているものとする。
図5は、文書共有サーバ100の機能的構成を示した図である。文書共有サーバ100は、CPU11とROM12又は記憶部16に記憶された各種プログラムとの協働により実現する機能部として、原稿読取部111と、圧縮・符号化部112と、アクセス要求受付部113と、符号データ読出部114とを備える。
原稿読取部111は、スキャナ部18を制御し、スキャナ上に置かれた原稿を画像データとして順次読み取る。
圧縮・符号化部112は、原稿読取部111により読み取られた画像データに対し、JPEG2000で符号化を行うことで、図3に示したデータ構造を有するJPMファイルを生成し、これを記憶部16に記憶させる。なお、本実施形態では、符号化対象となる画像データを、原稿読取部111により読み取られた画像データとしたが、これに限らず、通信I/F部17を介して入力される画像データであっても同様に扱うことが可能である。
アクセス要求受付部113は、外部装置(ファイル変換装置200等)から送信された各種アクセス要求を通信I/F部17を介して受け付けるとともに、これら各種アクセス要求に応じて符号データ読出部114により後述する送信バッファにコピーされた応答情報を、通信I/F部17を介して送信元の外部装置に送信する。
また、アクセス要求受付部113は、送信した内容をRAM13又は記憶部16に確保されたキャッシュ領域(図示せず)に登録する。また、アクセス要求受付部113は、外部装置から受け付けた要求内容とキャッシュ領域に登録された登録内容の重なり度合いを判定し、重なりがない部分を符号データ読出部114に読み出させる。一方、要求内容がキャッシュ領域に登録された範囲内の場合には、既に送信済みである旨の指示情報を送信元の外部装置に送信する。このように、既に送信したデータについては、そのデータの送信を抑止することにより、ネットワーク上での冗長なトラフィックを制限することができる。なお、キャッシュ領域に登録した内容は、所定時間経過後や外部装置との接続断後等所定のタイミングでクリアされることが好ましい。
符号データ読出部114は、アクセス要求受付部113で受け付けられた各種のアクセス要求に応じて、記憶部16に記憶されたJPMファイルから各種の情報を読み出し、これらを応答情報としてRAM13に確保された送信バッファにコピーする。
具体的に、符号データ読出部114は、アクセス要求受付部113から特定のJPMファイルについてメタデータに関するアクセス要求が入力されると、指定されたJPMファイルからメタデータを読み出し、この要求に対する応答情報として送信バッファにコピーする。
また、符号データ読出部114は、アクセス要求受付部113から特定のJPMファイルについてヘッダデータに関するアクセス要求が入力されると、指定されたJPMファイルからヘッダデータを読み出し、この要求に対する応答情報として送信バッファにコピーする。
また、符号データ読出部114は、アクセス要求受付部113からコードストリームに関するアクセス要求が入力されると、要求されたコードストリームをJPMファイルから当該アクセス要求に対する応答情報を読み出し、アクセス要求受付部113に出力する。ここで、コードストリームに関するアクセス要求には、オフセットと長さ又はPlace Holder IDが含まれているものとし、これらの情報に基づいて特定のJPMファイルからコードストリームが読み出されるものとする。
次に、文書共有サーバ100にアクセスを行うファイル変換装置200について説明する。ファイル変換装置200は、文書共有サーバ100により提供されるJPMファイルの一部又は全てのページを取得し、ローカル上に保持する情報処理装置である。なお、図1に示したブラウジング装置300、印刷装置400については後述する。
図6は、ファイル変換装置200のハードウェア構成を示した図である。同図に示したように、ファイル変換装置200は、CPU21、ROM22、RAM23、HDD等の記憶部26、外部装置(文書共有サーバ100等)との通信を制御する通信I/F部27、及びこれらを接続するバス28、また場合によってはマウスやキーボード等の入力デバイスから構成される操作部24、液晶モニタ等の表示デバイスから構成される表示部25、通常のコンピュータを利用したハードウェア構成も備えている。ROM22又は記憶部26には、各種プログラムや各種データが記憶される。CPU21は、ROM22や記憶部26に記憶されている各種プログラムをRAM23にロードしてこれを実行することにより、ファイル変換装置200全体を制御し、後述する各種機能を実現させる。
次に、図7、図8を参照して、ファイル変換装置200のCPU21が各種プログラムを実行することによりファイル変換装置200において実現される本実施形態に特有の機能について説明する。図7は、ファイル変換装置200の機能的構成を示した図である。ファイル変換装置200は、CPU21とROM22又は記憶部26に記憶された各種プログラムとの協働により実現する機能部として、制御部211と、メタデータアクセス部212と、ヘッダデータアクセス部213と、コードストリームアクセス部214と、コードストリーム格納部215と、オフセット書込部216とを備える。
また、図8は、特許請求の範囲に記載の各手段と、上記した各機能部との関係を示した図である。同図に示したように、制御部211が受付手段に対応し、メタデータアクセス部212及びヘッダデータアクセス部213が第1取得手段に対応し、コードストリームアクセス部214が第2取得手段に対応し、コードストリーム格納部215が記憶制御手段に対応し、オフセット書込部216が格納位置更新手段に対応している。また、文書共有サーバ100は外部記憶装置に対応し、RAM13又は記憶部16が記憶手段に対応する。なお、伸長手段は後述する伸長部311に対応し、削除手段は後述するコードストリーム格納部511に対応し、描画装置は表示部25又は印刷装置400に対応する。
制御部211は、ファイル変換装置200全体の動作を統括的に制御する。具体的に、制御部211は、制御部211は、ユーザから操作部24を介して入力される種々の指示情報を受け付け、この指示内容に応じて各部を制御する。また、制御部211は、文書共有サーバ100により提供されるJPMファイルの選択にかかる支援画面(GUI:Graphical User Interface)や、JPMファイル中のページボックスの指定にかかる支援画面等を表示部25に表示する。ここで、JPMファイルの指定は、サーバ名やURI(Uniform Resource Identifier)、ディレクトリパス等により指定されるものとする。
メタデータアクセス部212は、通信I/F部27を介し、特定のJPMファイルに含まれたメタデータの読み出しを要求する情報を文書共有サーバ100に送信することで、この要求内容に応じたメタデータを文書共有サーバ100から取得する。また、メタデータアクセス部212は、取得したメタデータをRAM23又は記憶部26に予め用意された所定の領域に格納する。以下、この領域を「メモリエリア」という。
ヘッダデータアクセス部213は、通信I/F部27を介し、文書共有サーバ100の記憶部16に記憶された特定のJPMファイルにアクセスすることで、当該JPMファイルからヘッダデータを取得する。ここで、ボックスの指定方法は、文書共有サーバ100におけるJPMファイルの格納位置と、アクセス対象となるボックスのID(例えば、ページボックス1等)を指定する方法と、ファイル上の一意の位置からのオフセット及び長さを指定する方法の何れかにより実現される。また、ヘッダデータアクセス部213は、取得したヘッダデータを、共有元のJPMファイルに応じた構造、即ち、JPEG2000に準じた形式でメモリエリアに格納する。具体的には、既にメモリエリアに格納されたメタデータの後段に格納する。
コードストリームアクセス部214は、通信I/F部27を介し、文書共有サーバ100の記憶部16に記憶された特定のJPMファイルにアクセスすることで、当該JPMファイルからコードストリームを個別に取得する。具体的に、コードストリームアクセス部214は、ヘッダデータアクセス部213により取得されたヘッダデータのページボックスの中で特定のページボックスの指定を受け付けると、このページボックス含まれるオブジェクトボックスに記述されたオフセットと長さからコードストリームを個別に取得する。ここで、コードストリームへのアクセス方法は、特定のページに対応するページボックスのID(例えば、ページボックス1等)を指定する方法と、オフセットと長さを直接指定する方法の何れかにより実現される。
コードストリーム格納部215は、コードストリームアクセス部214により取得されたコードストリームを、共有元のJPMファイルに応じた構造、即ち、JPEG2000に準じた形式でメモリエリアに格納する。具体的には、既にメモリエリアに格納されたヘッダデータ又はコードストリームの後段に順次格納したり、文書共有サーバに保存されていたのと同じ順番に格納する方法が挙げられる。
オフセット書込部216は、コードストリーム格納部215により格納された各コードストリームのメモリエリア上でのオフセットと長さを算出し、メモリエリアに格納された当該各コードストリームと参照関係にあるページボックスに含まれるオブジェクトボックスのオフセットフィールドに夫々上書きする。
具体的に、オフセット書込部216は、メモリエリアに格納されたJPMファイルの先頭アドレスを基準とし、この先頭アドレスから各コードストリームの先頭アドレスまでのオフセットと長さを対応するページボックスに含まれるオブジェクトボックス(図示せず)に上書きする。
以下、本実施形態にかかるファイル変換装置200の動作について説明する。図9は、文書共有サーバ100とファイル変換装置200とにより実行されるファイル共有処理の手順を示したフローチャートである。ここで、ステップS11〜S22はファイル変換装置200で実行される処理を示しており、ステップS31〜S37は文書共有サーバ100で実行される処理を示している。
ファイル変換装置200において制御部211は、文書共有サーバ100により提供されるJPMファイル群から、特定のJPMファイルが操作部24を介して指定されるまで待機を行う(ステップS11;No)。ここで、制御部211が特定のJPMファイルを指定する指示情報を受け付けると(ステップS11;Yes)、メタデータアクセス部212は、ステップS11で指定されたJPMファイルのメタデータへのアクセスを要求する情報を、通信I/F部27を介して文書共有サーバ100に送信する(ステップS12)。
一方、文書共有サーバ100では、アクセス要求受付部113がクライアントからのアクセスを待機し(ステップS31;No)、アクセスを確認すると(ステップS31;Yes)、クライアントから送信された要求内容がキャッシュ領域に登録された登録内容が含まれるか否かを比較する(ステップS32)。
ステップS32の結果、アクセス要求内容は既にキャッシュされた登録内容に含まれると判定した場合には(ステップS33;No)、既に送信済みの旨の情報をクライアントに送信し(図示せず)、ステップS31に再び戻る。また、ステップS32の結果、アクセス要求受付部113が要求内容にキャッシュ領域に未登録の内容が含まれると判定した場合(ステップS33;Yes)、符号データ読出部114は、クライアントからの要求内容の内、未送信のデータを指定されたJPMファイルから読み出し、応答情報として送信バッファにコピーする(ステップS34)。
続いて、アクセス要求受付部113は、ステップS34で送信バッファにコピーされた応答情報を、通信I/F部17を介してファイル変換装置200に送信した後(ステップS35)、この送信が成功したか否かを判定する(ステップS36)。ここで、成功か否の判定は、ファイル変換装置200から送信される受信成功の旨の情報(ACK(ACKnowledgement)等)に基づいて行うものとする。
ステップS36において、送信失敗と判定した場合には(ステップS36;No)、ステップS35に再び戻り、送信バッファにコピーされた応答情報を再度送信する。なお、さらに失敗した場合の再送信可能な回数については、特に制限しないものとするが、制限回数に達した場合にはステップS31に再び戻るものとする。
また、ステップS36において、送信成功と判定した場合には(ステップS36;Yes)、アクセス要求受付部113は、ステップS35で送信した送信内容をキャッシュ領域に登録し(ステップS37)、ステップS31に再び戻る。ここで、キャッシュ領域に登録された内容は、今後ステップS31で受け付けた要求内容との比較に用いられることになる。
一方、ファイル変換装置200では、メタデータアクセス部212がステップS14で要求したメタデータを文書共有サーバ100から取得すると、このメタデータをメモリエリアに格納する(ステップS13)。
次いで、ヘッダデータアクセス部213は、ステップS11で指定されたJPMファイルのヘッダデータへのアクセスを要求する情報を、通信I/F部27を介して文書共有サーバ100に送信し(ステップS14)、この要求に応じたヘッダデータを文書共有サーバ100から取得すると、このヘッダデータをメモリエリアに格納されたメタデータの後段に格納する(ステップS15)。なお、ヘッダデータの要求に対する文書共有サーバ100での処理は、上述したステップS31〜S37と同様であるため説明は省略する。
図10は、ステップS15の処理終了時におけるメモリエリアの状態と、文書共有サーバ100でのJPMファイルの状態とを示した図である。ここで、右図が文書共有サーバ100でのJPMファイルの状態(データ構造)、左図がファイル変換装置200のメモリエリアに格納された当該JPMファイルのメタデータ、ヘッダデータの状態を示している。
図10に示したように、ここまでの処理でファイル変換装置200は、JPMファイルのヘッダ部分までの情報を取得したことになる。ヘッダデータに含まれたページボックスから、このJPMファイルのページ構成を把握することができるため、制御部211は、このJPMファイルのページ構成を表示部25に表示するとともに、このページ構成から閲覧対象とするページを指定可能な支援情報をユーザに提供する。
図9に戻り、制御部211は、メモリエリアに格納されたヘッダデータに含まれるページコレクションボックス及びページボックスに基づいて、このJPMファイルを構成する全てのページを表示部25に表示し、操作部24を介して特定のページが指定されるまで待機を行う(ステップS16;No)。なお、ステップS16で指定されるページは、1つであってもよいし複数であってもよい。
ステップS16で、制御部211が特定のページを指定する指示情報を受け付けると(ステップS16;Yes)、コードストリームアクセス部214は、ステップS16で指定されたページのうち、1つのページを処理対象に設定する(ステップS17)。
次いで、コードストリームアクセス部214は、メモリエリアに格納されたページデータから処理対象のページに対応するページボックスを参照し、当該ページボックスに含まれるオブジェクトボックスに記述されたオフセットが示す位置に格納されたコードストリームへのアクセスを要求する情報を、通信I/F部27を介して文書共有サーバ100に送信する(ステップS18)。
続いて、コードストリームアクセス部214は、ステップS18でアクセスを要求したコードストリームを文書共有サーバ100から取得すると、このコードストリームをメモリエリアに格納されたコードストリームの後段に格納する(ステップS19)。なお、コードストリームの要求に対する文書共有サーバ100での処理は、上述したステップS31〜S37と同様であるため説明は省略する。
ここで、コードストームの格納位置は、JPEG2000での規定に従うものとするが、直前に格納されたコードストリームの末尾アドレスから連続的に格納する態様としてもよいし、当該末尾アドレスから所定のサイズ分、離した位置に格納する態様としてもよい。なお、コードストリームが格納されていない初期の段階では、ヘッダデータの後段に格納されるものとする。
オフセット書込部216は、ステップS13でメモリエリアに格納されたメタデータの先頭アドレスから、ステップS19で格納されたコードストリームの先頭アドレスまでのオフセットと長さを、メモリエリアに格納された当該コードストリームを参照するページボックスのオブジェクトボックス上の該当位置に上書きする(ステップS20)。
続いて、コードストリームアクセス部214は、処理対象のページを構成する全てのコードストリームについて、ステップS18〜S20の処理を施したか否かを判定し、未処理のコードストリームが存在すると判定した場合には(ステップS21;No)、ステップS18へ再び戻り、未処理のコードストリームを要求する情報を、通信I/F部27を介して文書共有サーバ100に送信する。
また、ステップS21において、全てのコードストリームについてステップS18〜S20の処理を施したと判定した場合には(ステップS21;Yes)、コードストリームアクセス部214は、さらにステップS16で指定された全てのページを処理対象としたか否かを判定する(ステップS22)。
ステップS22において、未処理のページが存在すると判定した場合には(ステップS22;No)、ステップS17へ再び戻り未処理のページを処理対象に設定する。また、ステップS16で指定された全てのページを処理対象としたと判定した場合には(ステップS22;Yes)、本処理を終了する。
以下、上記ファイル共有処理の動作を説明する。図11〜13は、メモリエリアに格納されたJPMファイルの状態と、共有元となる文書共有サーバ100でのJPMファイルの状態とを示した図である。ここで、右図が文書共有サーバ100でのJPMファイルの状態(データ構造)を示しており、左図がメモリエリアに格納されたJPMファイルの状態を示している。なお、以下の説明ではステップS16においてユーザから「ページボックス0」及び「ページボックス1」が指定されたものとする。
まず、ステップS18〜S20の最初のループ処理において、コードストリームアクセス部214により「ページボックス0含まれるオブジェクトボックス0」で格納位置が指示された「コードストリーム0」が取得されると、コードストリーム格納部215は、図11に示したように、この「コードストリーム0」をメモリエリアでのヘッダデータの後段に格納する。このとき、オフセット書込部216は、ステップS20において、メタデータの先頭アドレスから「コードストリーム0」の先頭アドレスまでの長さをメモリエリアにおける「コードストリーム0」のオフセット(オフセット0’)として算出し、メモリエリアに格納された当該コードストリームを参照するページボックスのオブジェクトボックス上の該当位置に上書きする。
次に、ステップS18〜S20の2回目のループ処理において、コードストリームアクセス部214により「ページボックス0に含まれるオブジェクトボックス0」で格納位置が指示された「コードストリーム1」が取得されると、コードストリーム格納部215は、図12に示したように、この「コードストリーム1」をメモリエリアでの「コードストリーム0」の後段に格納する。このとき、オフセット書込部216は、ステップS20において、メタデータの先頭アドレスから「コードストリーム1」の先頭アドレスまでの長さをメモリエリアにおける「コードストリーム1」のオフセット(オフセット1’)として算出し、メモリエリアに格納された当該コードストリームを参照するページボックスのオブジェクトボックス上の該当位置に上書きする。
次に、ステップS17〜S22のループ処理において、コードストリームアクセス部214により「ページボックス1に含まれるオブジェクトボックス2」で格納位置が指示された「コードストリーム2」が取得されると、コードストリーム格納部215は、図13に示したように、この「コードストリーム2」をメモリエリアでの「コードストリーム1」の後段に格納する。このとき、オフセット書込部216は、ステップS20において、メタデータの先頭アドレスから「コードストリーム2」の先頭アドレスまでの長さをメモリエリアにおける「コードストリーム2」のオフセット(オフセット2’)として算出し、メモリエリアに格納された当該コードストリームを参照するページボックスのオブジェクトボックスに上書きする。
なお、図11〜12では「ページボックス0」、「ページボックス1」の順序でコードストリームを取得した場合を説明したが、「ページボックス1」、「ページボックス0」の順でコードストリームが取得された場合には、「コードストリーム2」、「コードストリーム0」、「コードストリーム1」の順序で文書共有サーバ100から取得されることになる。そのため、図14に示したようにコードストリームの取得順序に応じた順序で、メモリエリアに各コードストリームが格納されることになる。
以上のように、本実施形態によれば、ネットワークN上に存在するJPMファイルから当該JPMファイルの要素となる各コードストリームの格納位置を示したページボックス含まれるオブジェクトボックスを取得し、このオブジェクトボックスに示された格納位置に基づいて、特定の格納位置に格納されたコードストリームのみを取得する。これにより、ネットワークNに流れるデータ量を抑えることができるとともに、JPMファイルの保持にかかるメモリ量も抑えることができるため、効率的にアクセスを行うことができる。また、文書共有サーバ100から取得した各種のデータをJPMファイルに応じた構造でメモリエリアに格納し、ページボックスに含まれるオブジェクトボックスとコードストリームとの参照関係を更新するため、オリジナルのJPMファイルとの互換性を維持することが可能となり、オリジナルのJPMファイルから特定のページ(コードストリーム)のみを抜粋した状態で保持することができる。
なお、各コードストリームの位置をファイル上の一意の位置からのオフセットと長さで表す代表的なものとして、JPEG2000 Part6で規定されるJPMファイルを用いて説明したが、同様な仕様を有するファイルであれば他のファイルフォーマットを用いる態様としてもよい。例えば、JPEG2000 Part1ファイル、JPEG2000 Part2ファイル、JPEG2000 Part3ファイル、PDF(Portable Document Format)ファイル、Multi Page Tagged Image File Formatファイル等が挙げられるが、これらはフォーマット上の違いはあっても本質的に複数のコードストリームの位置をファイル上の一意の位置からのオフセットと長さで表すという点において本質的な動作の違いはないため、JPMファイルと同様に取り扱うことができる。
なお、本実施形態では、ページボックス内のオブジェクトボックスに記述されたオフセットと長さに基づいてコードストリームをアクセスする態様を説明したが、他の方法を用いてコードストリームをアクセスする態様としてもよい。例えば、文書共有サーバ100から、メタデータビン(JPMファイルのトップレベルのボックスの集まり)を送る際にPlace Holder IDを割り当て、このPlace Holder IDに基づいてファイル変換装置200からアクセスする態様としてもよい。この際には、1つのボックスと包含関係にある複数のボックスは、1つのメタデータビンIDで送ることができる。これにより、メタデータビンIDで示すPlace Holderにあたる内容を文書共有サーバ100に要求し、得られたデータをファイル変換装置200のメモリエリアにおけるPlace Holderと同じIDで示された箇所に格納する。なお、詳細についてはJPEG2000Part9のA.3.6.3節にあるため説明は省略する。
また、本実施形態では、コードストリームの位置をファイルの先頭位置からのオフセットと長さで指定する態様としたが、これに限らず、コードストリームボックス名のようにファイル内で一意に定まる名前で指定する態様としてもよい。
また、本実施形態では、同一のJPMファイルから特定の部分符号のみを取得し、新たなJPMファイルを生成する態様を説明したが、これに限らず、複数のJPMファイルの夫々から特定の部分符号のみを取得し、新たなJPMファイルを生成する態様としてもよい。なお、ここで「部分符号」とは、解像度、画質、色成分、領域の単位で分割したコードストリーム内の一部の符号を意味する。
具体的には、操作部24を介して複数のJPMファイルの格納位置が指定されると、メタデータアクセス部212及びヘッダデータアクセス部213は、指定されたJPMファイルの夫々から、管理情報(メタデータ及びヘッダデータ)を取得する。ここで、操作部24を介して指定されるJPMファイルは、自己の装置内に格納されたものであってもよいし、ネットワークNを介して接続される外部装置に格納されたものであってもよい。
また、この管理情報から各JPMファイルにかかる部分符号が夫々指定されると、コードストリームアクセス部214は、各JPMファイルから指定された部分符号を取得する。この場合、部分符号の格納位置は複数のJPMファイルに及ぶことになるが、上述したオブジェクトボックスでの上書き方法と同様に、自己の装置内における各部分符号の先頭アドレスまでのオフセットと長さを保持する態様としてもよいし、オリジナルのJPMファイルを参照可能な状態で各部分符号の先頭アドレスまでのオフセットと長さを保持する態様としてもよい。以下、図15を参照して、後者の場合のファイル構造について説明する。
図15は、複数のJPMファイル(ファイルX、ファイルY等)を参照する、新たなJPMファイル(以下、参照元JPMファイルという)のファイル構造の一例を模式的に示した図である。同図において、参照元JPMファイルは、メディアデータと、データ参照テーブルと、フラグメントテーブルとから構成される。ここで、メディアデータは、複数のJPMファイル夫々から取得された部分符号群からなるデータである。なお、後述するように各部分符号の格納位置(オフセットと長さ)は、フラグメントテーブルに登録される。
また、データ参照テーブルには、参照元JPMファイルが参照するJPMファイル(ファイルX、ファイルY)の格納位置が登録される。具体的に、このデータ参照テーブルには、操作部24を介して指定されたJPMファイルを格納するサーバ装置のサーバ名やURI(Uniform Resource Identifier)、ディレクトリパス等が登録される。なお、データ参照テーブルの先頭のセルに格納された数値“3”は、当該データ参照テーブルに3個のエントリが存在することを意味している。
フラグメントテーブルは、上述したページボックスのオブジェクトボックスが参照するデータであって、データ格納のためのフラグメントリストを有している。このフラグメントリストには、ヘッダデータアクセス部213により取得された参照先となる各JPMファイルのヘッダデータのフラグメントテーブルの情報(オフセットと長さ)が登録される。なお、フラグメントリストに登録されるフラグメントテーブルの情報は、データ参照テーブルに登録された当該フラグメントテーブルの情報に対応するJPMファイルの格納位置と関連付けて保持されるものとする。これにより、データ参照テーブル及びフラグメントリストに登録された情報を合わせることで、データ参照テーブルに登録されたJPMファイルの、任意の部分符号を参照することが可能となる。
ここで、参照元JPMファイル生成の為、コードストリームアクセス部214により参照先の各JPMファイルから取得された部分符号については、これら部分符号のメモリエリア上での格納位置(オフセットと長さ)が、オフセット書込部216により、フラグメンリストの該当する要素に上書きされるものとする。図15の例では、フラグメントリストを構成する左から1、4、5、7番目の要素に、メモリエリア上での部分符号の格納位置が夫々登録されていることを示している。また、ファイルX、ファイルYでの部分符号の格納位置が2番目、3番目の要素に夫々登録されており、ネットワークN上に存在する外部装値(文書共有サーバ100等)が提供するJPMファイル(図示せず)での部分符号の格納位置が6番目の要素に登録されていることを示している。
このように、複数のJPMファイルから、所望する部分符号のみを取得し、新たな一のJPMファイル(参照元JPMファイル)を生成することで、参照先となった各JPMファイルを個別に取得する場合と比較し、ネットワークNに流れるデータ量やファイルの保持にかかるメモリ量を抑えることができるため、効率的にアクセスを行うことができる。
なお、参照元JPMファイルのデータ参照テーブルとフラグメントテーブルに基づき、当該参照元JPMファイルが参照するJPMファイルから新たな部分符号が取得された場合には、オフセット書込部216により、この部分符号のメモリエリアでの格納位置がフラグメントテーブル(フラグメントリスト)に上書きされるものとする。また、この例では、データ参照テーブルとフラグメントテーブルとを個別に設けた構成としたが、これに限らず、例えば、両テーブルを一体化した一つのテーブルを用いることとしてもよい。
次に、上述した第1の実施形態の変形例として、ファイル変換装置200の構成を適用したJPMファイルの閲覧を行うブラウジング装置300、JPMファイルの印刷を行う印刷装置400について夫々説明する。なお、上述したファイル変換装置200の構成と同様の要素については、同一の符号を付与し説明は省略する。
[変形例1]
図16は、本実施形態の変形例1にかかるブラウジング装置300の機能的構成を示した図である。同図に示したように、ブラウジング装置300は、CPU21とROM22又は記憶部26に記憶された各種プログラムとの協働により実現する機能部として、制御部211と、メタデータアクセス部212と、ヘッダデータアクセス部213と、コードストリームアクセス部214と、コードストリーム格納部215と、オフセット書込部216と、伸長手段に対応する伸長部311とを備える。なお、ブラウジング装置300のハードウェア構成はファイル変換装置200と同様であるため説明を省略する。
伸長部311は、メモリエリアに格納されたJPMファイルのコードストリームを入力とし、JPEG2000に応じた伸長処理を施すことでビットマップファイルを生成する。
具体的に、伸長部311は、コードストリームが表す画像を当該コードストリームに対応するページボックスに含まれるレイアウトオブジェクトヘッダデータで規定される縮小率(Scale)まで伸長し、ビットマップ画像を生成する。さらに生成したビットマップ画像を、レイアウトオブジェクトヘッダデータで規定されるレイアウト位置(X,Y)に展開することで、コードストリームに対応する画像をページ領域の規定の位置に配置する。ここで「ページ領域」とは、RAM23又は記憶部26に確保されたJPMファイルの各ページを展開するための領域である。なお、JPEG2000での伸長方法については、公知の技術を用いるものとする。また、本実施形態では、ビットマップ画像を生成する態様としたが、他のフォーマットに準じた画像を生成する態様としてもよい。
以下、本実施形態の変形例1にかかるブラウジング装置300の動作を説明する。図17は、文書共有サーバ100とブラウジング装置300とにより実行されるファイル共有処理の手順を示したフローチャートである。ここで、ステップS41〜S54はブラウジング装置300で実行される処理を示しており、ステップS61〜S67は文書共有サーバ100で実行される処理を示している。なお、ステップS41〜S50の処理は、上述したステップS11〜S20の処理と同様であるため説明を省略する。また、同図において、ステップS61〜S67の処理は、上述したステップS31〜S37の処理と同様であるため説明を省略する。
ステップS51において、伸長部311は、ステップS49、S50でメモリエリアに格納されたコードストリームからビットマップ画像を生成し、ページ領域の規定の位置に配置する(ステップS51)。次いで、制御部211は、ページ領域に配置されたビットマップ画像を表示部25に表示する(ステップS52)。
続いて、コードストリームアクセス部214は、処理対象のページを構成する全てのコードストリームについて、ステップS48〜S52の処理を施したか否かを判定し、未処理のコードストリームが存在すると判定した場合には(ステップS53;No)、ステップS48へ再び戻り、未処理のコードストリームを要求する情報を、通信I/F部27を介して文書共有サーバ100に送信する。
また、ステップS53において、全てのコードストリームについてステップS48〜S52の処理を施したと判定した場合には(ステップS53;Yes)、コードストリームアクセス部214は、さらにステップS46で指定された全てのページを処理対象としたか否かを判定する(ステップS54)。
ステップS54において、未処理のページが存在すると判定した場合には(ステップS54;No)、ステップS47へ再び戻り未処理のページを処理対象に設定する。また、ステップS46で指定された全てのページを処理対象としたと判定した場合には(ステップS54;Yes)、本処理を終了する。
このように、データスストリームがメモリエリアに格納される毎に、当該コードストリームが表すビットマップ画像が順次生成され、表示部25に表示されることになる。これにより、文書共有サーバ100により共有されたJPMファイルのうち、ユーザが所望するページのみをダウンロードし、閲覧することが可能となる。
なお、本変形例1では、データスストリームがメモリエリアに格納される毎にビットマップ画像を生成する態様としたが、これに限らず、指定された各ページ又は全てのページについて、コードストリームが格納された後にビットマップ画像を生成する態様としてもよい。具体的には、図17のステップS51、S52の処理を、ステップS53の後段又はステップS54の後段で行う構成とすることで実現することができる。
[変形例2]
図18は、本実施形態の変形例2にかかる印刷装置400のハードウェア構成を示したブロック図である。同図に示したように、印刷装置400は、上述したファイル変換装置200のハードウェア構成に加え、印刷を行う印刷部29を備えている。
ここで、印刷部29は、レーザプリンタ方式やインクジェット方式等の画像形成手段(図示せず)を備え、後述する印刷制御部411から入力されるCMYKフォーマットの画像データを、印刷用紙等の記録媒体上に印刷する。
図19は、印刷装置400の機能的構成を示した図である。同図に示したように、印刷装置400は、CPU21とROM22又は記憶部26に記憶された各種プログラムとの協働により実現される機能部として、制御部211と、メタデータアクセス部212と、ヘッダデータアクセス部213と、コードストリームアクセス部214と、コードストリーム格納部215と、オフセット書込部216と、伸長部311と、印刷制御部411とを備える。
印刷制御部411は、伸長部311によりページ領域内に配置されたビットマップ画像からCMYKフォーマットの画像データをページ単位で生成し、印刷部29に出力することでJPMファイルを構成する各ページの印刷を行う。
以下、本実施形態の変形例2にかかる印刷装置400の動作を説明する。図20は、文書共有サーバ100と印刷装置400とにより実行されるファイル共有処理の手順を示したフローチャートである。ここで、ステップS71〜S84は印刷装置400で実行される処理を示しており、ステップS91〜S97は文書共有サーバ100で実行される処理を示している。なお、ステップS71〜S80の処理は、上述したステップS11〜S20の処理と同様であるため説明を省略する。また、同図において、ステップS91〜S97の処理は、上述したステップS31〜S37の処理と同様であるため説明を省略する。
ステップS81において、伸長部311は、ステップS79、S80でメモリエリアに格納されたコードストリームからビットマップ画像を生成し、ページ領域の規定の位置に配置する(ステップS81)。
続いて、コードストリームアクセス部214は、処理対象のページを構成する全てのコードストリームについて、ステップS78〜S81の処理を施したか否かを判定し、未処理のコードストリームが存在すると判定した場合には(ステップS82;No)、ステップS78へ再び戻り、未処理のコードストリームを要求する情報を、通信I/F部27を介して文書共有サーバ100に送信する。
また、ステップS82において、全てのコードストリームについてステップS78〜S81の処理を施したと判定した場合には(ステップS82;Yes)、印刷制御部411は、ステップS81でページ領域内に配置されたビットマップ画像からCMYKフォーマットの画像データを生成し、印刷部29に出力することでJPMファイルを構成する1ページ分の印刷を行う(ステップS83)。
続いて、コードストリームアクセス部214は、さらにステップS76で指定された全てのページを処理対象としたか否かを判定する(ステップS84)。ステップS84において、未処理のページが存在すると判定した場合には(ステップS84;No)、ステップS77へ再び戻り未処理のページを処理対象に設定する。また、ステップS76で指定された全てのページを処理対象としたと判定した場合には(ステップS84;Yes)、本処理を終了する。
このように、1ページ分のデータスストリームを表す画像がページ領域に配置される毎に、印刷部29によりJPMファイルを構成する1ページ分の印刷が行われることになる。これにより、文書共有サーバ100により提供されたJPMファイルのうち、ユーザが所望するページのみをダウンロードし、印刷することが可能となる。
[第2の実施形態]
上述した第1の実施形態では、文書共有サーバ100から取得したJPMファイルのコードストリームを、アクセスした順序でメモリエリアに格納する態様を説明した。第2の実施形態では、共有されたJPMファイルでのコードストリームの格納順序に応じた構成でコードストリームをメモリエリアに格納する態様について説明する。なお、第1の実施形態と同様の構成要素については、同一の符号を付与し説明は省略する。
図21は、本実施形態にかかるファイル変換装置500の機能的構成を示した図である。同図に示したように、ファイル変換装置500は、CPU21とROM22又は記憶部26に記憶された各種プログラムとの協働により実現する機能部として、制御部211と、メタデータアクセス部212と、ヘッダデータアクセス部213と、コードストリームアクセス部214と、コードストリーム格納部511と、オフセット書込部512とを備える。なお、ファイル変換装置500のハードウェア構成はファイル変換装置200と同様であるため説明を省略する。
コードストリーム格納部511は、コードストリームアクセス部214により取得された各コードストリームを、文書共有サーバ100により共有されたJPMファイルでのコードストリームの格納順序に応じた順序でメモリエリアに格納する。
ここで、元となったJPMファイルでのコードストリームの格納順序に応じた順序でメモリエリアに格納する方法としては、種々の方法を採用することができる。具体的には、コードストリームアクセス部214により取得されたコードストリームのオフセットと長さを、メモリエリアに格納された当該コードストリームに対応するページボックスに含まれるオブジェクトボックスから読み出し、このオフセットと長さに応じたメモリエリアでの格納位置に、取得されたコードストリームを格納することで実現することができる(以下、第1の方法という)。なお、「オフセットと長さに応じたメモリエリアでの格納位置」とは、メモリエリアに格納されたJPMファイルの先頭アドレス、即ち、メタデータの先頭アドレスからこのオフセットだけ離れた位置を意味する。
また、他の方法としては、各ページボックスに含まれるオブジェクトボックスに記述されたオフセットの大小関係に基づいて、メモリエリアにおけるコードストリームの格納位置を決定する態様としてもよい。具体的には、ページボックスに含まれるオブジェクトボックスに書かれた各コードストリームのオフセットは昇順に並んでいるため、コードストリーム全体のうち何番目の順位に位置するものかを判定することができる。つまり、コードストリームの格納時に、当該コードストリームがコードストリーム全体のうち何番目の順位に位置するかを判定し、この順位に応じたメモリエリアでの格納位置にコードストリームを格納すればよい(以下、第2の方法という)。なお、この場合ページボックスに含まれるオブジェクトボックスに記述されたオフセットが示す位置にコードストリームを格納する態様としてもよいし、ヘッダデータ方向に詰めて格納しておき、コードストリームの格納が行われる毎に、その順位に応じて動的に格納位置を移動する態様としてよい。
上記した第1の方法、第2の方法において、ページボックスに含まれるオブジェクトボックスに記述されたオフセットに基づいてコードストリームをメモリエリアに格納する場合、ユーザからJPMファイルを構成する一部のページのみが指定されると、メモリエリアに格納されるコードストリーム間に有効なデータの存在しない空白領域(間隙)が生じることがある。例えば、図3に示したJPMファイルの場合、「ページボックス1」のみが指定された場合であっても、「ページボックス0」用の領域がメモリエリアに確保されることになる。このような場合、文書共有サーバ100から送信されるデータ量は削減することができるが、メモリエリアでのJPMファイルは、実質オリジナルのJPMファイルと同サイズとなる。
そのため、コードストリーム格納部511は、コードストリームアクセス部214により取得される全てのコードストリームをメモリエリアに格納した後、各コードストリームの格納位置をヘッダデータ方向に移動し、有効なデータが存在しない空白領域を詰めることで、コードストリーム間の間隙を削除する削除手段として機能する。これにより、メモリエリアに格納したJPMファイルをコンパクト化することができる。
オフセット書込部512は、上述したオフセット書込部216と同様の機能を有するとともに、コードストリーム格納部511により、メモリエリアに格納されたコードストリームの格納位置が移動された際には、移動後の各コードストリームのメモリエリア上でのオフセットを夫々算出し、メモリエリアに格納された当該各コードストリームに対応するページボックスに含まれるオブジェクトボックスのオフセット値に夫々上書きする。
以下、本実施形態にかかるファイル変換装置500の動作を説明する。図22は、文書共有サーバ100とファイル変換装置500とにより実行されるファイル共有処理の手順を示したフローチャートである。ここで、ステップS101〜S114はファイル変換装置500で実行される処理を示しており、ステップS121〜S127は文書共有サーバ100で実行される処理を示している。なお、ステップS101〜S108の処理は、上述したステップS11〜S18の処理と同様であるため説明を省略する。また、同図において、ステップS121〜S127の処理は、上述したステップS31〜S37の処理と同様であるため説明を省略する。
また、本処理では、上述したステップS109において、コードストリーム格納部511は、コードストリームアクセス部214により取得されたコードストリームを、当該コードストリームのオフセットと長さに応じたメモリエリアでの格納位置に格納する(ステップS109)。
続いて、オフセット書込部216は、ステップS109でメモリエリアに格納されたメタデータの先頭アドレスから、ステップS19で格納されたコードストリームの先頭アドレスまでのオフセットと長さをメモリエリアに格納された当該コードストリームを参照するページボックスのオブジェクトボックスに上書きする(ステップS110)。なお、ステップS109においてオフセットと長さが示す位置に格納された場合には、本処理を省略してもよい。
続いて、コードストリームアクセス部214は、処理対象のページを構成する全てのコードストリームについて、ステップS108〜S110の処理を施したか否かを判定し、未処理のコードストリームが存在すると判定した場合には(ステップS111;No)、ステップS108へ再び戻り、未処理のコードストリームを要求する情報を、通信I/F部27を介して文書共有サーバ100に送信する。
また、ステップS111において、全てのコードストリームについてステップS108〜S110の処理を施したと判定した場合には(ステップS111;Yes)、コードストリームアクセス部214は、さらにステップS106で指定された全てのページを処理対象としたか否かを判定する(ステップS112)。
ステップS112において、未処理のページが存在すると判定した場合には(ステップS112;No)、ステップS107へ再び戻り未処理のページを処理対象に設定する。また、ステップS106で指定された全てのページを処理対象としたと判定した場合(ステップS112;Yes)、コードストリーム格納部511は、メモリエリアに格納されたコードストリームをヘッダデータ方向に移動し、コードストリーム間の間隙を削除する(ステップS113)。
続いて、オフセット書込部512は、ステップS113で移動された各コードストリームのメモリエリア上でのオフセットと長さを夫々算出し、当該メモリエリアに格納された各コードストリームに対応するページボックスに含まれるオブジェクトボックスに夫々上書きした後(ステップS114)、本処理を終了する。
以上のように、本実施形態によれば、ネットワークN上に存在するJPMファイルから当該JPMファイルの要素となる各コードストリームの格納位置を示したページボックスに含まれるオブジェクトボックスを取得し、このオブジェクトボックスに示された格納位置に基づいて、特定の格納位置に格納されたコードストリームのみを取得する。これにより、ネットワークNに流れるデータ量を抑えることができるとともに、JPMファイルの保持にかかるメモリ量も抑えることができるため、効率的にアクセスを行うことができる。また、文書共有サーバ100から取得した各種のデータをJPMファイルに応じた構造でメモリエリアに格納し、ページボックスに含まれるオブジェクトボックスとコードストリームとの参照関係を更新するため、オリジナルのJPMファイルとの互換性を維持することが可能となり、オリジナルのJPMファイルから特定のページ(コードストリーム)のみを抜粋した状態で保持することができる。
また、オリジナルのJPMファイルでのコードストリームの格納順序に応じた順序で、メモリエリアにコードストリームを格納するため、オリジナルのJPMファイルとの互換性をより高めることができる。
なお、本実施形態では、コードストリーム間の間隙を削除する態様としたが、これに限らず、間隙を維持した状態でメモリエリアに保持する態様としてもよい。また、本実施形態では、コードストリームアクセス部214により取得された全てのコードストリームについて、元となるJPMファイルでの格納順序に応じた順序でメモリエリアに格納する態様としたが、これに限らず、一部のコードストリームについてのみ適用する態様としてもよい。また、オフセット書込部512を、上述した第1の実施形態の構成に適用する態様としてもよい。
[実施例]
以下、上記第1、第2の実施形態のファイル変換装置(ブラウジング装置)を用いた実施例について説明する。図23は、本実施例で文書共有サーバ100により提供されるJPMファイルの構造を模式的に示した図である。このJPMファイルは、春夏秋冬の四季に応じた4つのページから構成される複合文書である。
図23において、「ヘッダ部」は、図3で示したヘッダ部に対応するものであり、メタデータやページボックス等が含まれている。「文書サムネイル(四季)」は、このJPMファイルの表紙ページに対応するコードストリームであって、表示ページのサムネイル画像を表すものである。「ページサムネイル(春)」、「本文(春)」は夫々、JPMファイルの1つのページの要素となるコードストリームであって、「ページサムネイル(春)」がこのページのサムネイル画像を表し、「本文(春)」がこのページの本文を表している。以下同様に「ページサムネイル(夏)」、「本文(夏)」、「ページサムネイル(秋)」、「本文(秋)」、「ページサムネイル(冬)」、「本文(冬)」の各対も、夫々各ページのサムネイル画像と本部とを表すコードストリームである。
なお、上記の構成において、「文書サムネイル(四季)」から各ページのページサムネイルを参照することが可能であるものとする。また、各ページサムネイルから当該各ページに対応するヘッダ部内のページボックスを参照することが可能であるものとする。即ち、各ページサムネイルから対応する本文を辿ることが可能であるものとする。
図24、図25は、ファイル変換装置での操作を説明するための図である。ファイル変換装置では、文書共有サーバ100により共有されるJPMファイルから「ヘッダ部」を取得した後「文書サムネイル(四季)」を取得すると、制御部211の制御により表示部25に「文書サムネイル(四季)」を表示する(図24、左図参照)。次に、操作部24を介しユーザから「文書サムネイル(四季)」が指定されると、ファイル変換装置は「文書サムネイル(四季)」と参照関係にある各ページサムネイルを共有されたJPMファイルから取得し、制御部211の制御により表示部25に一覧表示する(図24、中央図参照)。ここで、操作部24を介しユーザから「ページサムネイル(夏)」が指定されたとすると、ファイル変換装置は共有されたJPMファイルから「ページサムネイル(夏)」と参照関係にある「本文(夏)」を取得し、制御部211の制御により表示部25に表示する(図24、右図参照)。
上記の操作の後、第1の実施形態にかかるファイル変換装置200のメモリエリアには、文書共有サーバ100から取得されたJPMファイルが図26に示した状態で格納される。即ち、コードストリームが取得された順序でメモリエリアに格納されることになる。なお、各コードストリームが格納された位置に応じて、オフセット書込部216により各ページボックスに含まれるオブジェクトボックスのオフセット値が更新されることは言うまでもない。
また、「本文(夏)」の表示が閉じられた後、操作部24を介して「ページサムネイル(春)」が選択されると(図25、左図及び中央図参照)、ファイル変換装置は共有されたJPMファイルから「ページサムネイル(春)」と参照関係にある「本文(春)」を取得し、制御部211の制御により表示部25に表示する(図25、右図参照)。
上記の操作の後、第1の実施形態にかかるファイル変換装置200には、取得されたJPMファイルが図27に示した状態でメモリエリアに格納される。即ち、コードストリームが取得された順序でメモリエリアに格納されることになる。なお、各コードストリームが格納された位置に応じて、オフセット書込部216により各ページボックスに含まれるオブジェクトボックスのオフセット値が更新されることは言うまでもない。
また、第2の実施形態にかかるファイル変換装置500では、取得されたJPMファイルが図28に示した状態でメモリエリアに格納される。即ち、元となったJPMファイルでのコードストリームの格納順序に応じた構造でメモリエリアに格納されることになる。なお、同図では、コードストリーム間の間隙が削除された後の状態を示している。
また、図29に示したように、ヘッダデータの後段に各ページサムネイルが取得された順序で格納され、この後段に元となったJPMファイルでのコードストリームの格納順序に応じた構造で各本文が格納される態様としてもよい。即ち、コードストリーム格納部215の機能とコードストリーム格納部511の機能とを併用する態様としてもよい。この場合、サムネイル画像や本文等のコードストリームが表すデータ種別に応じて使い分けることとしてもよいし、コードストリームのデータサイズや構造化文書の構成等に応じて使い分ける態様としてもよい。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
例えば、上記各クライアント(実施形態のファイル変換装置200、ブラウジング装置300、印刷装置400、ファイル変換装置500)で実行される文書共有処理にかかるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上記各クライアントで実行される文書共有処理にかかるプログラムを、インターネット等のネットワーク経由で提供または配布するように構成しても良い。
また、上記各クライアントで実行される文書共有処理にかかるプログラムを、ROM等の記憶媒体に予め組み込んで提供するように構成してもよい。