(57)【要約】【課題】所望のドキュメントを簡単に生成することを可能とする。【解決手段】ドキュメント生成装置は、第１のドキュメントに付加された識別情報に基づいて、レイアウトデータと、レイアウトデータに応じてレイアウトするデータを取得するためのデータ取得指示情報２０２とを取得する。そして、ドキュメント生成装置は、取得されたデータ取得指示情報２０２に基づいてデータを取得し、取得されたデータを、取得されたレイアウトデータに応じてレイアウトした第２のドキュメントを生成する。【選択図】図２
2008305391.tif 000002
【特許請求の範囲】
【請求項１】
第１のドキュメントに付加された識別情報に基づいて、レイアウトデータと、前記レイアウトデータに応じてレイアウトするデータを取得するためのデータ取得情報とを取得する第１の取得手段と、
前記第１の取得手段により取得されたデータ取得情報に基づいてデータを取得する第２の取得手段と、
前記第２の取得手段により取得されたデータを、前記第１の取得手段により取得されたレイアウトデータに応じてレイアウトした第２のドキュメントを生成する生成手段とを有することを特徴とするドキュメント生成装置。
【請求項２】
前記生成手段は、識別情報が付加された第２のドキュメントを生成することを特徴とする請求項１に記載のドキュメント生成装置。
【請求項３】
前記第１の取得手段は、第１のドキュメントに付加されたパターンに基づいて識別情報を検出することを特徴とする請求項１に記載のドキュメント生成装置。
【請求項４】
前記第１の取得手段は、第１のドキュメントに付加された識別情報が示す格納場所から、レイアウトデータとデータ取得情報とを取得することを特徴とする請求項１に記載のドキュメント生成装置。
【請求項５】
前記生成手段は、レイアウトデータとデータ取得情報とを指定する指定手段を有し、前記指定手段により指定されたデータ取得情報に基づいて取得されたデータが、前記指定手段により指定されたレイアウトデータに応じてレイアウトされ、かつ、指定されたレイアウトデータとデータ取得情報とに応じた識別情報が付加された第３のドキュメントを生成することを特徴とする請求項１に記載のドキュメント生成装置。
【請求項６】
前記生成手段は、レイアウトデータとデータ取得情報とを指定する指定手段と、指定されたレイアウトデータとデータ取得情報とを格納場所に格納する格納手段とを有し、前記指定手段により指定されたデータ取得情報に基づいて取得されたデータが、前記指定手段により指定されたレイアウトデータに応じてレイアウトされ、かつ、指定されたレイアウトデータとデータ取得情報とが格納された格納場所を示す識別情報が付加された第３のドキュメントを生成することを特徴とする請求項１に記載のドキュメント生成装置。
【請求項７】
前記第２の取得手段は、第１のドキュメントに付加された識別情報に基づいて取得されたデータ取得情報以外の第２のデータ取得情報を入力する入力手段を有し、前記第２の取得手段は、第１のドキュメントに付加された識別情報に基づいて取得されたデータ取得情報と、第２のデータ取得情報とに基づいて、データを取得することを特徴とする請求項１に記載のドキュメント生成装置。
【請求項８】
前記第２の取得手段は、第１のドキュメントにレイアウトされたデータを取得し、前記生成手段は、第１のドキュメントにレイアウトされたデータと前記第２の取得手段により取得されたデータとの差異に応じて、第２のドキュメントを生成することを特徴とする請求項１に記載のドキュメント生成装置。
【請求項９】
前記第２の取得手段は、第１のドキュメントにレイアウトされたデータを取得し、前記生成手段は、第１のドキュメントにレイアウトされたデータと前記第２の取得手段により取得されたデータとの差異を含む第２のドキュメントを生成することを特徴とする請求項１に記載のドキュメント生成装置。
【請求項１０】
前記第２の取得手段は、前記第１の取得手段により取得されたデータ取得情報に基づいて取得したデータを管理することを特徴とする請求項１に記載のドキュメント生成装置。
【請求項１１】
第１のドキュメントに付加された識別情報に基づいて、レイアウトデータと、前記レイアウトデータに応じてレイアウトするデータを取得するためのデータ取得情報とを取得する第１の取得ステップと、
前記第１の取得ステップで取得されたデータ取得情報に基づいてデータを取得する第２の取得ステップと、
前記第２の取得ステップで取得されたデータを、前記第１の取得ステップで取得されたレイアウトデータに応じてレイアウトした第２のドキュメントを生成する生成手段とを有することを特徴とするドキュメント生成方法。
【請求項１２】
前記生成ステップでは、識別情報が付加された第２のドキュメントを生成することを特徴とする請求項１１に記載のドキュメント生成方法。
【請求項１３】
前記第１の取得ステップでは、第１のドキュメントに付加されたパターンに基づいて識別情報を検出することを特徴とする請求項１１に記載のドキュメント生成方法。
【請求項１４】
前記生成ステップは、レイアウトデータとデータ取得情報とを指定する指定ステップと、指定されたレイアウトデータとデータ取得情報とを格納場所に格納する格納ステップとを有し、前記指定ステップで指定されたデータ取得情報に基づいて取得されたデータが、前記指定ステップで指定されたレイアウトデータに応じてレイアウトされ、かつ、指定されたレイアウトデータとデータ取得情報とが格納された格納場所を示す識別情報が付加された第３のドキュメントを生成することを特徴とする請求項１１に記載のドキュメント生成方法。
【請求項１５】
前記第２の取得ステップでは、第１のドキュメントにレイアウトされたデータを取得し、前記生成ステップでは、第１のドキュメントにレイアウトされたデータと前記第２の取得手段により取得されたデータとの差異に応じて、第２のドキュメントを生成することを特徴とする請求項１１に記載のドキュメント生成方法。
【請求項１６】
前記第２の取得ステップでは、第１のドキュメントにレイアウトされたデータを取得し、前記生成ステップでは、第１のドキュメントにレイアウトされたデータと前記第２の取得手段により取得されたデータとの差異を含む第２のドキュメントを生成することを特徴とする請求項１１に記載のドキュメント生成方法。
【請求項１７】
ドキュメントを生成するためのドキュメント生成方法をコンピュータに実行させるためのプログラムであって、
第１のドキュメントに付加された識別情報に基づいて、レイアウトデータと、前記レイアウトデータに応じてレイアウトするデータを取得するためのデータ取得情報とを取得する第１の取得ステップと、
前記第１の取得ステップで取得されたデータ取得情報に基づいてデータを取得する第２の取得ステップと、
前記第２の取得ステップで取得されたデータを、前記第１の取得ステップで取得されたレイアウトデータに応じてレイアウトした第２のドキュメントを生成する生成ステップとをコンピュータに実行させるためのプログラム。
【請求項１８】
前記生成ステップでは、識別情報が付加された第２のドキュメントを生成することを特徴とする請求項１７に記載のプログラム。
【請求項１９】
前記第２の取得ステップでは、第１のドキュメントにレイアウトされたデータを取得し、前記生成ステップでは、第１のドキュメントにレイアウトされたデータと前記第２の取得手段により取得されたデータとの差異に応じて、第２のドキュメントを生成することを特徴とする請求項１７に記載のプログラム。
【請求項２０】
前記第２の取得ステップでは、第１のドキュメントにレイアウトされたデータを取得し、前記生成ステップでは、第１のドキュメントにレイアウトされたデータと前記第２の取得手段により取得されたデータとの差異を含む第２のドキュメントを生成することを特徴とする請求項１７に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、取得したデータをレイアウトしたドキュメントを生成するための技術に関するものである。
【背景技術】
【０００２】
従来、帳票の生成処理を実行する技術として、帳票のデザインを表す帳票テンプレートデータに、データベースに登録されているデータをマージし、印刷データを生成する技術が知られている（例えば、特許文献１参照）。この技術は帳簿や伝票等の帳票に限らず、様々なドキュメント生成に利用されている。
【０００３】
ところで、ドキュメントのデザインを示すレイアウト情報とマージしてドキュメントを生成する際に利用するデータベース上のデータは定常的ではない場合が多い。通常、データベースでは、データの登録・更新・削除を行えるようになっており時々刻々に変化することがある。
【０００４】
つまり、ドキュメントを生成するタイミングによって、また、データ取得に関する条件設定によって取得するデータの内容が変わり、最終的に作成されるドキュメントも前回出力した場合とは異なる結果になる。
【０００５】
例えば、売上結果を記したドキュメントを生成する場合、データベースから常に出力されるその日のデータを取得するような条件に設定しておくことによって、出力したその日の売上を記したドキュメントを得ることができる。このようにドキュメントを常に新しいデータで入手したいというニーズが存在する。
【０００６】
一方、上述したようにドキュメントを閲覧しているユーザが、閲覧しているドキュメントについてデータベース上の異なったデータで構成されたドキュメントの入手を所望するときがある。データベース上の異なったデータとは、例えばその時点の最新のデータ等である。
【０００７】
【特許文献１】特開平５−１５０９２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
そのような場合、従来、ユーザは閲覧しているドキュメントを作成するために使用したテンプレートデータ、データの取得先・取得条件・取得データ内容を記述したデータを探し、それを指定してドキュメントを新たに作成する必要があった。様々なテンプレートデータやデータの取得先・取得条件・取得データ内容を記述したデータが存在する中から、閲覧しているデータに関するものを探し出すのは、時間がかかり、非効率的であるという問題があった。
【０００９】
そこで、本発明の目的は、所望のドキュメントを簡単に生成することを可能とすることにある。
【課題を解決するための手段】
【００１０】
本発明のドキュメント生成装置は、第１のドキュメントに付加された識別情報に基づいて、レイアウトデータと、前記レイアウトデータに応じてレイアウトするデータを取得するためのデータ取得情報とを取得する第１の取得手段と、前記第１の取得手段により取得されたデータ取得情報に基づいてデータを取得する第２の取得手段と、前記第２の取得手段により取得されたデータを、前記第１の取得手段により取得されたレイアウトデータに応じてレイアウトした第２のドキュメントを生成する生成手段とを有することを特徴とする。
本発明のドキュメント生成方法は、第１のドキュメントに付加された識別情報に基づいて、レイアウトデータと、前記レイアウトデータに応じてレイアウトするデータを取得するためのデータ取得情報とを取得する第１の取得ステップと、前記第１の取得ステップで取得されたデータ取得情報に基づいてデータを取得する第２の取得ステップと、前記第２の取得ステップで取得されたデータを、前記第１の取得ステップで取得されたレイアウトデータに応じてレイアウトした第２のドキュメントを生成する生成手段とを有することを特徴とする。
本発明のプログラムは、ドキュメントを生成するためのドキュメント生成方法をコンピュータに実行させるためのプログラムであって、第１のドキュメントに付加された識別情報に基づいて、レイアウトデータと、前記レイアウトデータに応じてレイアウトするデータを取得するためのデータ取得情報とを取得する第１の取得ステップと、前記第１の取得ステップで取得されたデータ取得情報に基づいてデータを取得する第２の取得ステップと、前記第２の取得ステップで取得されたデータを、前記第１の取得ステップで取得されたレイアウトデータに応じてレイアウトした第２のドキュメントを生成する生成ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、所望のドキュメントを簡単に生成することが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１３】
先ず、本発明の第１の実施形態について説明する。本実施形態では、ドキュメント生成を実行するデバイスとしてコピー機能、スキャン機能、プリント機能等を搭載した多機能プリンタ（以下、複合機と称す）を例に挙げて説明する。但し、本発明を実施可能な装置を複合機に限定するものではない。
【００１４】
本実施形態では、ドキュメントに識別情報が埋め込まれ、複合機がドキュメントから識別情報を読み取る処理を行う。他の実施形態として、複合機とは異なる他の情報処理装置で識別情報を読み込み、読み込んだ識別情報を情報処理装置から複合機に送信する形態でも可能である。識別情報を読み込む情報処理装置としては、例えばスキャナ、バーコードスキャナ、２次元バーコードリーダ、ＲＦＩＤ（Radio Frequency Identification）タグリーダ等が挙げられる。
【００１５】
図１は、本実施形態に係る複合機の構成を示すブロック図である。図１において、１０１は、複合機１００全体を制御するCentral Processing Unit（ＣＰＵ）である。１０２は、外部装置等から供給されるプログラムやデータベースから取得したデータ、プログラム実行中の中間データ、生成したドキュメントデータを一時記憶するRandom Access Memory（ＲＡＭ）である。
【００１６】
１０７は、複合機１００に固定して設置されたハードディスクである。ハードディスク１０７は、複合機１００を制御するプログラム、ドキュメント生成を行うプログラム、生成したドキュメントデータ、ドキュメント生成に使用するテンプレートデータ、後述するデータ取得指示情報を格納する。その他にも、ハードディスク１０７は、データベースから取得したコンテンツデータ等のドキュメント生成に使用するドキュメント生成情報、識別情報とドキュメント生成情報との関連を管理するテーブル等を格納する。
【００１７】
１０３は、印刷を行う印刷部である。１０８は、ユーザが操作を行う操作部であり、ボタンとタッチパネル付ディスプレイとで構成されている。
【００１８】
１０４は、ネットワークアダプタである。ネットワークアダプタ１０４は、プログラムに従ってネットワーク１０５を介してデータベース１１０からデータを取得したり、ネットワーク１０５を介して、生成したドキュメントデータをファイルサーバ１０９に保存したりする。１１１は、文書の取り込みを行うスキャナである。
【００１９】
まず始めに、ドキュメントのデザインを表現するテンプレートデータと、ドキュメントの内容となる文字列、数値、図等のコンテンツデータの取得先・取得条件・取得データ内容を記述するデータ取得指示情報とからドキュメントを生成する方法について説明する。
【００２０】
図２は、テンプレートセットを説明するための図である。テンプレートセットとは、テンプレートデータ２０１とデータ取得指示情報２０２とを１つのファイルとしてまとめたものである。
【００２１】
テンプレートセットは、属性情報２２０、テンプレートデータ２０１及びデータ取得指示情報２０２から構成されている。属性情報２２０は、テンプレートセット内の構成情報（テンプレートデータ２０１、データ取得指示情報２０２）を記述した情報である。テンプレートデータ２０１は、ドキュメントのデザインを表現するための情報である。データ取得指示情報２０２は、ドキュメントの内容となるコンテンツデータの取得先・取得条件・取得データ内容を記述した情報である。
【００２２】
属性情報２２０には、テンプレートデータ２０１、データ取得指示情報２０２が記述されたファイル名が明記される。属性情報２２０であるProperty.txtファイルの「Template=Template.xml」とは、ファイル「Template.xml」がテンプレートデータであることを示している。また、「DataRetrieve=DataRetrieve.xml」とは、データ取得指定情報が「DataRetrieve.xml」というファイル名でテンプレートセットに収められていることを示している。
【００２３】
さらに、データ取得指示情報２０２には、コンテンツデータ取得先であるデータベースの名前２１４、データベースからデータを取得するときの検索条件２１５、データベースから取得するコンテンツデータの項目２１６が記述されている。
【００２４】
２０２に示す例では、「databese.hogehoge.com」というサーバから、項目addressが「Tokyo」であるデータを検索することを示している。また、データ項目として「name」要素２１８、「address」要素２１９、「tel」要素２２０を有するデータリスト２１７としてデータを取得することを示している。
【００２５】
一方、テンプレートデータ２０１は、２０３〜２０８で示されるデザインのレイアウト情報と、２０９〜２１３で示される取得したコンテンツデータをどのようにマージしていくかを示すデータマージ情報とから構成されている。例えば、テンプレートデータ２０１は表を作成する記述を持っており、「table」要素２０３は表を表すことを意味し、「tr」要素は表の行、「td」要素は表の列を表している。「td」要素の内容は表の各セルに収める文字列を意味する。
【００２６】
データマージ情報２０９〜２１３は、データリストdataList２１７に含まれるデータを一つずつ取り出すことが記述されている。また、データマージ情報２０９〜２１３は、取り出したデータを構成する一つ一つの「name」要素、「address」要素、「tel」要素を取り出し、テンプレートデータとマージすることが記述されている。
【００２７】
for要素２０９は、「for」要素で囲まれた内部の情報を取得したデータ数だけ繰り返し処理することを意味するものである。
【００２８】
図３は、for文の処理の流れを示すフローチャートである。ステップＳ２３０１では、ＣＰＵ１０１は、データベースから取得したコンテンツデータであるdataListを読み込む。ステップＳ２３０２では、ＣＰＵ１０１は、読み込んだdataListの総数をlength変数に代入する。
【００２９】
ステップＳ２３０３では、ＣＰＵ１０１は、処理したdataListの数を保持する変数iの値に0を代入し、初期化する。
【００３０】
ステップＳ２３０４では、ＣＰＵ１０１は、iがlengthより小さいかを判断する。iがlengthより小さいと判断した場合、ステップＳ２３０５において、ＣＰＵ１０１は、テンプレートデータを１行読み込む。
【００３１】
ステップＳ２３０６では、ＣＰＵ１０１は、読み込んだタグがforの終了タグ「</for>」かどうかを判断する。読み込んだタグがforの終了タグである場合、ステップＳ２３０９において、ＣＰＵ１０１は、for内の処理を繰り返すためにfor開始タグ「<for>」まで戻る。
【００３２】
ステップＳ２３０８では、ＣＰＵ１０１は、変数iを１つカウントアップし、ステップＳ２３０４でデータ総数を表すlengthとiの値の比較を行う。比較した結果、条件を満たさなければ、forタグの処理は終了する。
【００３３】
一方、ステップＳ２３０６において読み出したデータがfor終了タグ以外のデータであると判断された場合、ＣＰＵ１０１は、読み出したデータに対応する処理を行う。読み出したデータが「<table>」、「<tr>」、「<td>」等のデザインを表す通常のタグである場合は、読み出したタグを、そのまま、ドキュメントを構成する要素として出力する。また、読み出したデータが「<data>」タグである場合、ＣＰＵ１０１は、「<data>」タグの位置にデータベースから取得したコンテンツデータを挿入する。
【００３４】
ここで、テンプレートデータにコンテンツデータをマージする処理について説明する。ＣＰＵ１０１は、「<data>」タグを検出すると、「<data>」タグのname属性値を取得し、name属性値からコンテンツデータのデータ項目を特定する。例えば、name属性値が「dataList.name」である場合は、コンテンツデータのデータ項目がdataListのname項目であると特定される。
【００３５】
ＣＰＵ１０１は、コンテンツデータの中から特定されたデータ項目のデータを読み出す。例えば、name属性値が「dataList.name」である場合は、データベースから取得したi番目のdataListのname値を読み出す。
【００３６】
ＣＰＵ１０１は、読み出したデータを「<data>」タグの代わりに出力する。従って、「<data>」タグの位置にname属性値で指定されたデータ項目のデータが挿入されたドキュメントが生成される。
【００３７】
ＣＰＵ１０１は、図２のテンプレート２０１の「<data>」タグの表記２１０、２１１、２１２に対して上述したマージ処理を実行する。すると、それぞれのタグの代わりにデータベースから取得した「dataList.name」、「dataList.address」、「dataList.tel」のコンテンツデータがドキュメントの内容として出力される。
【００３８】
データベース上から図４の１３０１のような３件のデータを取得した場合は、for文の処理を実行すると、dataList.name,dataList.address,dataList.telを列の情報として持つ３行、３列の表が生成される。
【００３９】
以上のように、ＣＰＵ１０１は、データ取得指示情報２０２の指示に従って、データベースから取得したコンテンツデータを、デザイン情報を表すテンプレートデータとマージしてドキュメントを生成する。
【００４０】
テンプレートセットは、複合機に固定されて設置されているハードディスク１０７にリストとして記憶されている。
【００４１】
さらに、生成したドキュメントの保存先に関する情報もハードディスク１０７にリストとして記憶されている。
【００４２】
もちろん、テンプレートセットのリストと生成したドキュメントの保存先に関する情報のリストとは、外部のファイルサーバ１０９に記憶されていて、ネットワークアダプタ１０４によりネットワーク１０５を経由して取得されてもよい。
【００４３】
次に、複合機の操作部１０８を説明する。もちろん、同様の機能が備わっていれば、他の形態であってもよい。
【００４４】
操作部１０８は、タッチパネル付ディスプレイ、印刷スタートキー、各種操作を行う各種ボタンから構成される。印刷スタートキーは他の名前が付いていてもよい。
【００４５】
タッチパネル付ディスプレイには、テンプレートセットを選択するための選択リストユーザインタフェースと、生成したドキュメントの保存先を選択する選択リストユーザインタフェースとが表示されている。これらは、リストを指やスタイラスで触ることにより選択ができる。
【００４６】
ＣＰＵ１０１は、ハードディスク１０７に記憶されているテンプレートセットのリストと保存先情報のリストを取得する。そして、操作部１０８の画面の再描画を行い、テンプレートセットの選択リストユーザインタフェースと、ドキュメントの保存先の選択リストユーザインタフェースとを更新する。
【００４７】
そして、ＣＰＵ１０１は、図５のステップＳ４００に遷移してユーザの入力を待つ。図５は、ドキュメントの印刷処理の流れを示すフローチャートである。
【００４８】
本プログラムは、上述した選択リストの表示処理の後、操作部１０８によってユーザから入力があるまでステップＳ４００で入力イベントを待って停止している。
【００４９】
ＣＰＵ１０１は、ユーザから入力があると、ステップＳ４０１を実行して入力イベントを取得する。ステップＳ４０２では、ＣＰＵ１０１は、取得した入力イベントがテンプレートセットの選択入力であるかを調べる。そうであれば、ＣＰＵ１０１は、ステップＳ４０３を実行してテンプレートセットを選択する。
【００５０】
ステップＳ４０３の処理が終了すると、ＣＰＵ１０１は、ステップＳ４１６に戻って画面の更新を行い、ステップＳ４００でユーザの次の入力を待つ。取得した入力イベントがテンプレートセットの選択入力でなかった場合、処理はステップＳ４０４に移る。
【００５１】
ステップＳ４０４では、ＣＰＵ１０１は、取得した入力イベントがドキュメントの保存先（出力先）の選択入力であるかを調べる。そうであれば、ＣＰＵ１０１は、ステップＳ４０５を実行して保存先を選択する。
【００５２】
ステップＳ４０５が終了したら、ＣＰＵ１０１は、ステップＳ４１６に戻って画面の更新を行い、ステップＳ４００でユーザの次の入力を待つ。
【００５３】
取得した入力イベントがドキュメントの保存先の選択入力でなかった場合は、ＣＰＵ１０１は、ステップＳ４０６に移る。
【００５４】
ステップＳ４０６では、ＣＰＵ１０１は、取得した入力イベントが、操作部１０８の印刷スタートキーが押されたという入力イベントであるかを調べる。そうでなかった場合は、ＣＰＵ１０１は、ステップＳ４０７において、他のボタンが押されたとして、押された各々のボタンに応じた処理を行う。次に、ＣＰＵ１０１は、ステップＳ４１６に戻って画面の更新を行い、ステップＳ４００でユーザの次の入力を待つ。
【００５５】
一方、ステップＳ４０６において、取得した入力イベントが、印刷スタートキーが押されたという入力イベントであると判定された場合、処理はステップＳ４０８に移る。ステップＳ４０８では、ＣＰＵ１０１は、ステップＳ４０３で選択されているテンプレートセットをハードディスク１０７のリストから取得する。
【００５６】
次のステップＳ４０９では、ＣＰＵ１０１は、ステップＳ４０５で選択されている保存先（出力先）の情報をハードディスク１０７のリストから取得する。
【００５７】
次のステップＳ４１０では、ＣＰＵ１０１は、ステップＳ４０８で取得したテンプレートセットからテンプレートデータを取得する。
【００５８】
次のステップＳ４１１では、ＣＰＵ１０１は、ステップＳ４０８で取得したテンプレートセットからデータ取得指示情報を取得する。
【００５９】
次のステップＳ４１２では、ＣＰＵ１０１は、ステップＳ４１１で取得したデータ取得指示情報に従ってコンテンツデータを取得する。
【００６０】
次のステップＳ４１３では、ＣＰＵ１０１は、ステップＳ４１２で取得したコンテンツデータを、ステップＳ４１０で取得したテンプレートデータのデータマージ情報に従ってデータの挿入を行う。この処理は、図３で示した処理である。
【００６１】
次のステップＳ４１４では、ＣＰＵ１０１は、生成中のドキュメントに識別情報を付加する。識別情報とは、テンプレートセットやデータ取得条件情報等、そのドキュメントを生成するために使用したドキュメント生成情報と関連付けられた情報である。識別情報を用いることによって一意にドキュメント生成情報を参照することができる。ステップＳ４１４についての詳細な説明は後述する。
【００６２】
ステップＳ４１５では、ＣＰＵ１０１は、ステップＳ４０９で取得した保存先（出力先）の情報に従い、生成したドキュメントを出力する。
【００６３】
保存先（出力先）の情報が「印刷」であれば、図１の印刷部１０３でドキュメントの印刷を行う。保存先（出力先）の情報が「保存」であれば、図１のハードディスク１０７にドキュメントの保存を行う。保存先（出力先）の情報が「送信」であれば、図１のネットワークアダプタ１０４を使用し、ネットワーク１０５を経由してファイルサーバ１０９に対してドキュメントを送信する。
【００６４】
ステップＳ４１５では、ＣＰＵ１０１は、必要に応じてフォーマット変換処理も行う。例えば、ＣＰＵ１０１は、マージしたドキュメントのデザイン情報を解釈して図形、罫線、文字列のレイアウト処理を行い、ＰＳ（Post Script）、ＰＤＦ（Portable Document Format）等に変換する処理を行う。
【００６５】
ステップＳ４１５が終了したら、ＣＰＵ１０１は、ステップＳ４１６に戻って画面の更新を行い、ステップＳ４００でユーザの次の入力を待つ。
【００６６】
また、ハードディスク１０７には、識別情報とテンプレートセットの格納場所とを関連させた識別情報テーブルが保存されている。識別情報テーブルは、識別情報とテンプレートセットの格納場所とが１対１で関連付けられたテーブルである。ドキュメントの生成に使用したテンプレートセットの格納場所に関連付けられた識別情報がステップＳ４１４の識別情報付加処理にてドキュメントに付加される。
【００６７】
次に、図６を用いてステップＳ４１４の識別情報付加処理について説明する。
ステップＳ７０１では、ＣＰＵ１０１は、ドキュメントの生成に使用したドキュメント生成情報であるテンプレートセットの格納場所情報を取得し、取得したテンプレートセットの格納場所情報が識別情報テーブルに登録されているかを確認する。識別情報テーブルについては、識別情報を有するドキュメントを読み込み、新たなドキュメントを出力する処理の流れを示す図７においても説明する。
【００６８】
識別情報テーブルにテンプレートセットの格納場所が登録されている場合、ＣＰＵ１０１は、対応する識別情報を読み出す（ステップＳ７０５）。例えば、ユーザが選択したテンプレートセットの格納場所が「file:///C:/doc/template1.zip」と表現されるローカルのハードディスク１０７に存在したとする。そして、識別情報テーブル８０１にこの格納場所が識別情報「1234567890」に対応付けて登録されている場合、ＣＰＵ１０１は、識別情報「1234567890」を読み出す。
【００６９】
ステップＳ７０４では、ＣＰＵ１０１は、識別情報をドキュメントに挿入する処理を行う。本実施形態においては、数値で表現されている識別情報をＱＲコードとしてドキュメントに挿入する。ＱＲコードとは、情報を符号化し、縦、横方向に展開した２次元バーコードの一種である。所定のＱＲコード読み取り装置等を用いて復号化され、埋め込まれた情報を取得することができる。
【００７０】
次に、ステップＳ７０１で識別情報テーブルにドキュメント生成に使用したテンプレートセットの格納場所が登録されていない場合の処理について述べる。
【００７１】
識別情報テーブルに使用したテンプレートセットの格納場所が登録されていない場合、ＣＰＵ１０１は、ステップＳ７０２にて新たに識別情報を作成する。本実施形態においては、識別情報テーブルに存在しないランダムな数値を識別情報として新たに作成するものとする。具体的には、ランダムに作成した数値が識別情報テーブルに存在しない場合、その数値を識別情報とする。なお、ステップＳ７０１は、本発明の指定手段の一処理例である。
【００７２】
ステップＳ７０３では、ＣＰＵ１０１は、ステップＳ７０２で作成した識別情報とテンプレートセットの格納場所とを対応付けて識別情報テーブルに登録する。なお、ステップＳ７０３は、本発明の格納手段の一処理例である。
【００７３】
そして最後に、ステップＳ７０４にて、ＣＰＵ１０１は、ドキュメントに識別情報を示すＱＲコードを生成し、ドキュメントに挿入する。ステップＳ７０３からＳ７０４を経て生成されるドキュメントは、本発明の第３のドキュメントの適用例となる構成である。
【００７４】
以上、図５のステップＳ４１４の識別情報付加処理について説明した。しかし、本発明の実施形態は、これに限るものではない。例えば、上記実施形態では、識別情報としてランダムな数値を例にあげたが、ドキュメント生成に使用したテンプレートセットの格納場所情報そのものを識別情報としても良い。その場合、ステップＳ４１４の識別情報付加処理では、テンプレートセットの格納場所の情報をＱＲコードに変換し、ドキュメントに付加する。
【００７５】
毎回ＱＲコードを作成する処理を行うのは非効率であるので、生成したＱＲコードは、識別情報、テンプレートセットの格納場所情報とともに識別情報テーブルに登録してもよい。テンプレートセットの格納場所情報を識別情報としてＱＲコードを作成する場合も、テンプレートセットの格納場所情報と対応付けてテーブルにＱＲコードを登録するようにしてもよい。
【００７６】
また、ドキュメントを印刷出力せずに電子ファイルとして生成する場合は、識別情報をＱＲコードに変換して用紙に表示される情報として挿入するようにしても良いが、識別情報を生成した電子ドキュメントファイルの属性情報として挿入するようにしても良い。電子ドキュメントファイルには、ドキュメントのタイトル、作成者、キーワード、コメント、概要等の情報を属性値として保持する領域を備えているものもある。その属性情報として識別情報を保持させる。
【００７７】
次に、識別情報を有するドキュメントを読み込んで、新たなドキュメントを出力する方法について述べる。
【００７８】
図７は、識別情報を有するドキュメントを読み込み、新たなドキュメントを出力する処理の流れを示すブロック図である。以下、図中の各部について説明する。
【００７９】
スキャン部１００３は、複合機１００に備わっているスキャン機能を使用して、スキャンした用紙１００１上の画像を電子画像データに変換する。
【００８０】
識別情報読み取り部１００４は、スキャンして得られた電子画像データからＱＲコードを抽出して復号化する。
【００８１】
ドキュメント生成情報検索部１００５は、ＱＲコードを復号化することによって取得された識別情報により、ドキュメント生成に使用するドキュメント生成情報を取得するための情報を、識別情報テーブル記憶部から検索する。このＱＲコードを復号化することによって識別情報を取得する処理は、本発明の第１の取得手段の一処理例である。また、ＱＲコードは、本発明のパターンの適用例となる構成である。
【００８２】
ドキュメント生成情報取得部１００６は、ドキュメント生成情報検索部１００５によって得られた情報により、テンプレートセット記憶部からドキュメント生成情報を取得する。
【００８３】
ドキュメント生成部１０１１は、テンプレートセットを使用してドキュメントを生成する。
【００８４】
コンテンツデータ取得部１００７は、テンプレートセットのデータ取得指示情報が示すデータの取得先・取得条件・取得データ内容により、データ取得先（データベース）にアクセスして指示されたコンテンツデータを取得する。
【００８５】
マージ部１００８は、テンプレートデータにコンテンツデータをマージする。識別情報付加部１００９は、ドキュメントを生成する際に使用したドキュメント生成情報と関連付けられた識別情報をドキュメントに埋め込む。
【００８６】
フォーマット変換部１０１０は、識別情報付加部１００９までに作成されたドキュメントのフォーマットを変換する。
【００８７】
プリント部１０１２は、複合機１００に備わっているプリント機能を使用し、生成されたドキュメントを用紙１００２に印刷して出力する処理を行う。
【００８８】
図８はドキュメント生成処理の流れを示すフローチャートである。以下、図８を用いてドキュメント生成処理を説明する。なお、この処理は、通常の複合機に備えられたスキャンを行うモードではなく、スキャンしたドキュメントに付加された識別情報を取得し、その情報を用いてドキュメントを生成するモードになっていることを前提とする。複合機が通常のスキャン機能を行うモードにある場合は、スキャンした用紙のデータが電子化され電子画像データとして保存される。
【００８９】
ステップＳ１１０１では、スキャン部１００３は、複合機の原稿台に置かれた用紙ドキュメントを読み込み、電子画像データに変換し、変換した電子画像データを識別情報読み取り部１００４に渡す。
【００９０】
ステップＳ１１０２では、識別情報読み取り部１００４は、スキャン部１００３から渡された電子画像データからＱＲコードが埋め込まれた部分を抽出し、ＱＲコードを復号化し、識別情報を取得する。そして、識別情報読み取り部１００４は、取得した識別情報をドキュメント生成情報検索部１００５に渡す。
【００９１】
次に、識別情報読み取り部１００４は、電子画像データからＱＲコードを検出できたか否かを判定する（ステップＳ１１０３）。電子画像データからＱＲコードを検出できなかった場合、識別情報読み取り部１００４は、識別情報が含まれていないことをユーザに伝えるメッセージを複合機のディスプレイ１０８に表示し（ステップＳ１１１２）、処理を終了する。なお、電子画像データからＱＲコードを検出できないのは、スキャンされた用紙にＱＲコードが含まれていないためである。
【００９２】
ステップＳ１１０４では、ドキュメント生成情報検索部１００５は、ハードディスク１０７の識別情報テーブル記憶部に保存された識別情報テーブルを読み出して参照する。そして、ドキュメント生成情報検索部１００５は、識別情報読み取り部１００４から渡された識別情報に対応するドキュメント生成情報を検索する。識別情報テーブルにおいて、識別情報読み取り部１００４から渡された識別情報「1234567890」にはテンプレートセットの格納場所情報「file:///C:/doc/template1.zip」が対応付けられているとする。この場合、「file:///C:/doc/template1.zip」がドキュメント生成情報として検索される。
【００９３】
ドキュメント生成情報検索部１００５は、検索したドキュメント生成情報をドキュメント生成情報取得部１００６に渡す。前述したように識別情報自体がテンプレートセットの格納場所情報である場合は、識別情報自体をそのままドキュメント生成情報取得部１００６に渡す。
【００９４】
ステップＳ１１０５では、ドキュメント生成情報取得部１００６は、ドキュメント生成情報検索部１００５によって検索されたテンプレートセットの格納場所（記憶部）にアクセスし、ドキュメント生成に使用するテンプレートセットを取得する。テンプレートセットの格納場所情報が「file:///C:/doc/template1.zip」であった場合は、複合機のハードディスク１０７の指定ディレクトリに保存されているtemplate1.zipファイルが取得される。
【００９５】
そして、ドキュメント生成情報取得部１００６は、取得したtemplate1.zipファイルをドキュメント生成部１０１１に渡す。テンプレートセットの格納場所情報が外部のファイルサーバを示している場合、ドキュメント生成情報取得部１００６は、ネットワークアダプタ１０４を介して指示された外部のファイルサーバのテンプレートセット記憶部にアクセスする。そして、ドキュメント生成情報取得部１００６は、該当するテンプレートセットを取得する。template1.zipファイルはテンプレートデータTemplate.xmlとデータ取得指示情報DataRetrieve.xmlとをアーカイブしたものとする。
【００９６】
ステップＳ１１０６では、ドキュメント生成部１０１１は、ドキュメント生成情報取得部１００６から渡されたドキュメント生成情報を使用したドキュメントの生成処理を各部に指示する。
【００９７】
ドキュメント生成部１０１１は、渡されたテンプレートセットからドキュメント生成に使用するデータ取得指示情報（データ取得情報）とテンプレートデータ（レイアウトデータ）とを抽出する。そして、ドキュメント生成部１０１１は、データ取得指示情報をコンテンツデータ取得部１００７に渡し、コンテンツデータの取得を指示する。また、ドキュメント生成部１０１１は、テンプレートデータをマージ部１００８に渡し、テンプレートデータとコンテンツデータとのマージを指示する。
【００９８】
ドキュメント生成部１０１１は、上記template1.zipがテンプレートセットとして渡された場合、データ取得指示情報DataRetrieve.xmlをコンテンツデータ取得部１００７に渡す。また、ドキュメント生成部１０１１は、テンプレートデータTemplate.xmlをマージ部１００８に渡す。
【００９９】
ステップＳ１１０７では、コンテンツデータ取得部１００７は、渡されたデータ取得指示情報を解析して、ファイルに指定されているデータ項目とデータ取得条件とに従い、取得先にアクセスしてコンテンツデータを取得する。具体的な取得方法は、図２を用いて説明した通りである。コンテンツデータ取得部１００７は、取得したコンテンツデータをマージ部１００８に渡す。なお、ステップＳ１１０７は、本発明の第２の取得手段の一処理例である。
【０１００】
ステップＳ１１０８では、マージ部１００８は、テンプレートデータとコンテンツデータ取得部１００７から渡されたコンテンツデータとをマージしてドキュメントを生成する。具体的な方法は、図２を用いて説明した通りである。マージ部１００８は、マージしたドキュメントを識別情報付加部１００９に渡す。なお、ステップＳ１１０８は、本発明の生成手段の一処理例である。また、ステップＳ１１０８で生成されるドキュメントは、本発明の第２のドキュメントの適用例となる構成である。
【０１０１】
ステップＳ１１０９では、識別情報付加部１００９は、マージ部１００８から渡されたドキュメントに識別情報を付加する。識別情報付加処理は図６を用いて説明した付加処理方法と同様の方法で行うので、ここでは説明を行わない。しかし、本実施形態では、識別情報テーブルを使用してテンプレートセットの格納場所から識別情報を検出するまでもなく、既にステップＳ１１０２で検出されているので、識別情報をＱＲコードに変換する処理のみを行う。更に言えば、図６で説明した識別情報付加処理方法にてＱＲコード自体を識別情報テーブルに関連付けて記憶している場合は、ＱＲコードを生成するまでもなく、識別情報テーブルからＱＲコードを読み込み、付加する処理のみを行う。識別情報付加部１００９は、ＱＲコードを付加したドキュメントをフォーマット変換部１０１０に渡す。
【０１０２】
ステップＳ１１１０では、フォーマット変換部１０１０は、識別情報付加部１００９から渡されたドキュメントのフォーマット変換処理を行う。本実施形態の場合、印刷出力を行うので、フォーマット変換部１０１０は、複合機が解釈可能なプリンタ言語にフォーマットを変換する。例えば、ＰＳプリンタである場合はＰＳへの変換処理を行う。また、ドキュメントをハードディスクに保存する場合は、電子メールで送信したり、ファイルサーバに保存したりした後に、使用しやすいＰＤＦやＪＰＥＧ（Joint Photographic ExpertsGroup）等のフォーマットに変換する。変換するフォーマットに関しては、フォーマットを選択するＧＵＩ（Graphical User Interface）を設け、ＧＵＩを介してユーザから指定されたフォーマットに変換するようにしても良い。
【０１０３】
フォーマット変換部１０１０は、フォーマット変換したドキュメントをプリント部１０１２に渡す。
【０１０４】
ステップＳ１１１１では、プリント部１０１２は、フォーマット変換部１０１０から渡されたドキュメントを用紙に印刷して出力する。この処理は、複合機が通常有する印刷処理であり、例えば、フォーマット変換処理でＰＳに変換されたデータを解釈して印刷を行う。
【０１０５】
以上のように、本実施形態においては、識別情報を有するドキュメントをスキャンする。そして、スキャンしたオリジナルドキュメントを作成する際に使用したテンプレートセットを使用し、最新のデータベースにアクセスして得られたコンテンツデータを含むドキュメントを生成することができる。
【０１０６】
具体的に作成されるドキュメントについて説明するために、図９にテンプレートセット、図１０に作成されたドキュメントの例を示す。データベースのデータは、図４と共通とする。
【０１０７】
図９の１２０１はテンプレートデータの例であり、１２０２はデータ取得指示情報の例である。テンプレートデータ１２０１により、「顧客表」というタイトル行、「Name」、「Address」、「Telephone」という表項目名、データベースから取得したデータで構成される表データから構成されるドキュメントが生成される。データ取得指示情報１２０２は、「database.hogehoge.com」からdataListデータについてaddressの値が「Tokyo」であるname,address,telの各データを取得することを意味する。
【０１０８】
図４の１３０１は、オリジナルドキュメントを生成した時点でのデータベース上のデータを示しており、１３０２はオリジナルドキュメントをスキャンして新規ドキュメントを生成する時点のデータベース上のデータを示している。
【０１０９】
図１０は、図９に示すテンプレートセット、図４に示すデータベースのデータを使用して作成されたドキュメントを示している。
【０１１０】
１４０１は、データベースがデータ１３０１を有していた際に作成されたドキュメントである。ドキュメント１４０１には、１３０１が有している、顧客Imada、Koyama、Saitoのデータが現れる。ドキュメント１４０２は、データベースがデータ１３０２を有していた際に作成されたドキュメントである。ドキュメント１４０２には、ドキュメント１４０１と同様に、顧客Imada、Koyama、Saitoのデータとともに、データベースに追加された新たな顧客のデータWatanabeが追加されている。また、データベースのImadaに付随するtelのデータが変更されているため、telデータが「3210」に変更された表が作成される。
【０１１１】
読み込んだオリジナルドキュメントが１４０１である。テンプレートセットtemplate1.zipのテンプレートデータTemplate.xmlが１２０１である。データ取得指示情報dataRetrieve.xmlが１２０２である。オリジナルドキュメントを作成した際のデータベースのデータが１３０１である。また、オリジナルドキュメント１４０１をスキャンして新たなドキュメントを作成する際のデータベースのデータが１３０２である。このような場合、新規ドキュメント１４０２がプリントアウトされる。
【０１１２】
以上、本発明の第１の実施形態では、識別情報がＱＲコードとして用紙に印刷されているドキュメントをオリジナルドキュメントとして入力する形態をとった。しかし、識別情報はＱＲコードではなく、例えば、用紙に埋め込まれたＲＦＩＤタグに識別情報を記憶し、オリジナルドキュメントに保存された識別情報の読み取りはＲＦＩＤタグリーダにより読み込んでも良い。なお、上記オリジナルドキュメントは、本発明の第１のドキュメントの適用例となる構成である。
【０１１３】
また、オリジナルドキュメントは電子ドキュメントでもよく、電子ドキュメントの属性情報として付加されている識別情報を複合機が電子ドキュメントの解析をして読み取るようにすることもできる。その場合、識別情報をもつ電子ドキュメントの入力は、外部の計算機装置から複合機に対して送信する方法、複合機が外部のサーバから取得する方法、複合機のハードディスクドライブにあるものを読み込む方法等により実現される。
【０１１４】
また、本発明の第１の実施形態では、生成したオリジナルドキュメントを複合機の印刷部で印刷し、用紙として出力した。しかし、印刷することに限定せず、ファイルとして生成した新規ドキュメントを複合機のハードディスクや外部のファイルサーバに保存するようにしてもよい。
【０１１５】
また、本発明の第１の実施形態では、識別情報は、その識別情報が示すテンプレートセットを使用して作成したドキュメントに付加される。しかし、テンプレートセットを導きだす識別情報が付加された用紙であれば、その用紙をスキャンすることによって、新規ドキュメントを作成することができる。そのため、識別情報を付加する対象はテンプレートセットから作成されたドキュメントに限定する必要はない。
【０１１６】
次に、本発明の第２の実施形態について説明する。上述した第１の実施形態では、識別情報はテンプレートセットと１対１になるように生成した。つまり、同じテンプレートセットを使用した場合は、同じ識別情報を基に生成されたＱＲコードがオリジナルドキュメントに付加されるようになっている。
【０１１７】
識別情報は、ドキュメント生成情報（テンプレートセット、データ取得先、データ取得条件、データ項目内容）毎に生成するものである。従って、第１の実施形態のようにテンプレートセットの情報のみからドキュメントを生成している場合は、テンプレートセットと識別情報が１対１の関係となる。そして、同じテンプレートセットを使用してオリジナルドキュメントを作成する場合、同じ識別情報がオリジナルドキュメントに付加される。
【０１１８】
第２の実施形態では、ユーザからデータ取得条件を入力する手段を設け、入力されたデータ取得条件とテンプレートセットとを基にオリジナルドキュメントを生成する例について説明する。第１の実施形態では、ドキュメント生成情報はテンプレートセットのみであったので、テンプレートセット毎に識別情報を生成していた。しかし、第２の実施形態では、テンプレートセットとユーザ入力されたデータ取得条件との２つがドキュメント生成情報となるので、この２つの情報に対して識別情報を生成する。つまり、同じテンプレートセットを使用し、さらに、ユーザ入力から取得したデータ取得条件が一致する場合に同じ識別情報がオリジナルドキュメントに付加される。なお、上記データ取得条件を入力する手段は、本発明の入力手段の適用例となる構成である。また、上記入力されたデータ取得条件は、本発明の第２のデータ取得情報の適用例となる構成である。
【０１１９】
第２の実施形態は、オリジナルドキュメント生成時に、テンプレートセットのデータ取得指示情報で与えているデータ取得条件を変更したり、新たなデータ取得条件を加えたりして、データベースからデータを取得することを実現するものである。
【０１２０】
例えば、図２のデータ取得指示情報２０２では、addressが「Tokyo」であるというデータ取得条件でデータベースからデータを取得する指示をしている。この場合、addressが「Tokyo」である顧客データがデータベースから取得される。ここで、addressが「Kanagawa」である顧客データを取得したいということがある。この場合、データ取得指示情報にaddressが「Kanagawa」であるというデータ取得条件を明記したテンプレートデータを用意しておく。さらに、それとともに、テンプレートセット、出力先をユーザが選択した方法（図５のＳ４０２、Ｓ４０４）と同様に、データ取得条件の入力をユーザが指定する手段を設けることにより実現することができる。
【０１２１】
第２の実施形態では、ユーザからの入力を受け付ける手段を設け、データ取得指示情報とともに入力されたデータ取得条件を使用してデータベースからデータを取得する形態について説明する。
【０１２２】
ユーザがデータ取得条件を入力する操作部１０８のＧＵＩの例を示す。本ＧＵＩは、テキストフィールド、優先情報選択リスト、「設定」ボタン及び「キャンセル」ボタンを備える。テキストフィールドは、データ取得条件を指定するための入力欄である。優先情報選択リストは、データ取得指示情報に記されたデータ取得条件とＧＵＩで入力したデータ取得条件とが重複した場合の処理方法を選択するリストである。「設定」ボタンは、入力の確定を指示するためのボタンである。「キャンセル」ボタンは、入力したデータのキャンセルを指示するためのボタンである。
【０１２３】
テキストフィールド、優先情報選択リストはＧＵＩ部品である。それぞれのＧＵＩ部品は、文字列の入力を受け付ける部品、リストに表示される複数項目から一つの項目を選択するための部品である。優先情報選択リスト１６０２が展開されると、選択項目が表示される。
【０１２４】
データ取得条件としてdataListのaddressが「Kanagawa」であることを入力する場合、テキストフィールドに「dataList.address = Kanagawa」を入力する。
【０１２５】
本実施形態では、優先情報選択リストには、「入力優先」、「テンプレートセット優先」、「ＡＮＤ」、「ＯＲ」の選択項目がある。
【０１２６】
「入力優先」は、入力したデータ取得条件とデータ取得指示情報で指定しているデータ取得条件とが同じデータ項目に関する条件であった場合、データ取得指示情報の条件を無視し、入力されたデータ取得条件を採用することを意味する。
【０１２７】
「テンプレートセット優先」とは、入力したデータ取得条件とデータ取得指示情報で指定しているデータ取得条件とが同じデータ項目に関する条件であった場合、ＧＵＩで入力したデータ取得条件はデータ取得に使用しないことを意味する。即ち、「入力優先」とは逆にデータ取得指示情報を優先することを意味する。
【０１２８】
「ＡＮＤ」とは、ＧＵＩで入力したデータ取得条件とデータ取得指示情報で指定されたデータ取得条件との論理積「ＡＮＤ」をとった条件でデータを取得することを意味する。
【０１２９】
「ＯＲ」とは、ＧＵＩで入力したデータ取得条件とデータ取得指示情報で指定されたデータ取得条件との論理和「ＯＲ」をとった条件でデータを取得することを意味する。
【０１３０】
「設定」ボタンは、このＧＵＩで入力したデータ取得条件を確定するためのボタンである。
【０１３１】
「キャンセル」ボタンは、入力したデータ取得条件をクリアするためのボタンである。押下するとテキストフィールドに入力された文字列がクリアされ、選択リストは選択された項目がない、非選択状態になる。
【０１３２】
図１１は、オリジナルドキュメントを生成するまでの処理を示すフローチャートである。図５に示す第１の実施形態のフローチャートに、データ取得条件をユーザからの入力を受け付ける処理の流れを加えたものである。データ取得条件を入力する以外の処理の流れは図５で示したものと同じであるため、データ取得条件を入力する処理を加えたことにより違いが生じる処理について説明する。
【０１３３】
ステップＳ４０１において、ＣＰＵ１０１は、入力イベントを取得する。入力イベントがデータ取得条件の入力である場合、ＣＰＵ１０１は、ステップＳ１７０１において、入力がデータ取得条件に関するものであるかを調べ、ステップＳ１７０２に遷移する。
【０１３４】
ステップＳ１７０２では、ＣＰＵ１０１は、テキストフィールド１６０１の入力をデータ取得条件として、また、優先情報選択リスト１６０２で選択された情報を優先情報として保存する。そして、ＣＰＵ１０１は、ステップＳ４１６に戻って画面の更新を行い、ステップＳ４００でユーザの次の入力を待つ。
【０１３５】
ステップＳ１７０３では、ＣＰＵ１０１は、データ取得指示情報で指定されたデータ取得条件、ステップＳ１７０２で入力されたデータ取得条件、及び、上記優先情報を使用し、データベースからデータを取得する場合のデータ取得条件を決定する。このデータ取得条件を決定する方法を以下に述べる。
【０１３６】
まず、データ取得指示情報に指定されたデータ取得条件、ユーザ入力されたデータ取得条件及び優先情報を取得する。
【０１３７】
前者のデータ取得条件は、データ取得指示情報から抽出されたデータ取得条件である。後者のデータ取得条件は、ステップＳ１７０２で保存したデータ取得条件である。
【０１３８】
次に、ＣＰＵ１０１は、データ取得指示情報に記述されたデータ取得条件とユーザ入力されたデータ取得条件とがデータ項目について重複がないかを調べる。データ項目に重複がなければ、ＣＰＵ１０１は、両方のデータ取得条件を使用してステップＳ４１２でデータ取得を行う。データ項目が重複している場合は、ＣＰＵ１０１は、更にデータ取得条件の値が異なっているかを判断する。値が異なっていれば優先情報に従って、データ取得条件を決定する。
【０１３９】
具体的に例を挙げて説明する。データ取得指示情報で指定されたデータ取得条件と、ユーザ入力されたデータ取得条件とがそれぞれ、「dataList.address=Tokyo」、「dataList.address=Kanagawa」であるとする。二つのデータ取得条件で指定しているデータ項目が「dataList.address」で一致している。また、そのデータ項目に関して、一方は「Tokyoと一致すること」、もう一方は「Kanagawaと一致すること」を条件しており条件が異なっている。この場合、どちらの条件を優先するかは優先情報によって決定する。取得条件の項目が一致していない場合は、両方の取得条件を指定してデータベースからコンテンツデータを取得する。
【０１４０】
優先情報が「入力優先」である場合は、データ取得指示情報で指定されたデータ取得条件「dataList.address=Kanagawa」は使用されない。一方で、ユーザ入力されたデータ取得条件「dataList.address=Tokyo」が最終的なデータ取得条件となる。
【０１４１】
優先情報が「テンプレートセット優先」である場合は、データ取得指示情報で指定されたデータ取得条件を使用する。よって、最終的なデータ取得条件はデータ取得指示情報で指定された「dataList.address=Tokyo」となる。
【０１４２】
優先情報が「ＡＮＤ」であれば、両者で指定されたデータ取得条件の論理積をデータ取得条件とする。つまり、dataList.addressの値に「Tokyo」と「Kanagawa」の両方が指定されたデータを取得することがデータ取得条件となる。
【０１４３】
「ＯＲ」であれば、両者で指定されたデータ取得条件の論理和をデータ取得条件とする。つまり、dataList.addressの値が「Tokyo」又は「Kanagawa」であるデータを取得することがデータ取得条件となる。
【０１４４】
ステップＳ１７０３では、ＣＰＵ１０１は、上記の方法でデータ取得条件の決定を行う。ステップＳ４１２では、ＣＰＵ１０１は、決定したデータ取得条件を使用してデータの取得を行う。
【０１４５】
データ取得処理以降は、第１の実施形態と同様に、ステップＳ４１３のマージ処理、ステップＳ４１４の識別情報付加処理、ステップＳ４１５の出力処理を行い、オリジナルドキュメントを生成する。
【０１４６】
なお、ステップＳ４１４の識別情報付加処理では、図６に示す処理によりドキュメントに識別情報を付加する。ただし、第１の実施形態とは、ドキュメント生成に使用した情報、つまり、ドキュメント生成情報が異なるので識別情報テーブルで管理する情報が異なる。
【０１４７】
第１の実施形態では、テンプレートセットのみを使用してドキュメント生成を行ったため、テーブルで識別情報と関連させて記憶する情報はテンプレートセットの格納場所のみであった。これに対し、第２の実施形態では、ユーザがデータ取得条件を設定する手段を設け、テンプレートセット以外にユーザ入力されたデータ取得条件を動的に設定させる。従って、テンプレートセットの格納場所のほか、最終的に使用したデータ取得条件も識別情報に関連して記憶する。
【０１４８】
第２の実施形態における識別情報テーブルは、識別情報に対してテンプレートセットの格納場所とデータ取得条件とを関連付けている。例えば、識別情報「1234567890」に対しては、テンプレートセットの格納場所「file:///C:/doc/template1.zip」とデータ取得条件「Address = Kanagawa」とが関連付けて記憶されている。これは、テンプレートファイル「file:///C:/doc/template.zip」とデータ取得条件「Address = Kanagawa」とを使用して作成したドキュメントには識別情報「1234567890」が付加されることを意味する。
【０１４９】
この識別情報テーブルは、オリジナルドキュメントがどのようなドキュメント生成情報を使用して作成したものなのかを検索するのに使用する。ＣＰＵ１０１は、この識別情報テーブルよりオリジナルドキュメントから読み込んだ識別情報を検索し、識別情報に関連付けられているテンプレートセットの格納場所情報、データ取得条件を取得する。そして、ＣＰＵ１０１は、取得したこれらの情報を使用して新規ドキュメントを生成する。例えば、「1234567890」を識別情報とするオリジナルドキュメントをスキャンした場合、ＣＰＵ１０１は、テンプレートセット「file:///C:/doc/template1.zip」、データ取得条件「dataList.address= Kanagawa」を用いて新規ドキュメントを生成する。
【０１５０】
以上のように、同じテンプレートセットを使用しても、異なったデータ取得条件を使用して作成したオリジナルドキュメントには異なる識別情報が付加される。そして、新規ドキュメントもオリジナルドキュメントを生成した同じテンプレートセット、データ取得条件を用いて作成される。
【０１５１】
次に、本発明の第３の実施形態について説明する。本発明の第３の実施形態では、オリジナルドキュメントとのコンテンツデータの差異を明示した新規ドキュメントを生成する方法について述べる。
【０１５２】
先ず、ドキュメント生成に使用するテンプレートセットについて説明する。図１２はテンプレートセットの例を示す図である。テンプレートセット２１０１は、属性情報Property.txt２１０２、テンプレートデータTemplate.xml１２０１、データ取得指示情報DataRetrieve.xml１２０２、差分表記情報Difference.xml２１０３で構成される。
【０１５３】
テンプレートデータ１２０１とデータ取得指示情報１２０２とは、図２に示したものと同じである。属性情報２１０２には、テンプレートセット内のそれぞれのファイルがどの処理で使用するものかを記述している。
【０１５４】
「Template=Template.xml」とは、ドキュメント生成に使用するテンプレートデータがTemplate.xmlであることを示している。
【０１５５】
「DataRetrieve=DataRetrieve.xml」とは、ドキュメント生成に使用するデータ取得指示情報がDataRetrieve.xmlであることを示している。
【０１５６】
「DiffDiscription=Difference.txt」とは、新規ドキュメント生成時にオリジナルドキュメントと異なるコンテンツデータの表記方法を記した差分表記情報がDifference.txtであることを示している。
【０１５７】
差分表記情報は、オリジナルドキュメントに使用されたコンテンツデータと新規ドキュメントを生成する際にデータベースから取得したコンテンツデータとに差異があった場合に、その差異のあるコンテンツデータをどのように表示するかを規定する。
【０１５８】
差分表記情報の例であるDifference.xml２１０３には、差異のあるデータを表記する際に使用するFont情報が規定されいている。「Font.face=Arial」はフォントとしてArialを使用することを規定している。「Font.color=Red」は文字列の色として赤を使用することを規定している。「Font.style=Bold, Italic」は文字列を太字、且つ斜体文字で表現することを規定している。オリジナルドキュメントと異なるコンテンツデータは差分表記情報で規定されたフォントで表現する。
【０１５９】
このテンプレートセットを使用した場合の新規ドキュメントの例を説明する。この新規ドキュメントは、図１０に示すオリジナルドキュメント１４０１を読み込んで生成したドキュメントである。また、新規ドキュメントは、オリジナルドキュメント生成時のコンテンツデータが新規ドキュメント生成時に図４に示す１３０１から１３０２に更新していた場合に作成される新規ドキュメントである。新規ドキュメント生成時のデータベースでは、図４に示す「id001」の「tel」データが「0123」から「3210」に更新され、また、新規に「id004」のデータが追加されている。従って、新規ドキュメントでは、「Imada」に対する電話番号「3210」と新規に追加されたid004の顧客情報「Watanabe」、「Tokyo」、「4567」部分が表記される。また、これらの情報は、差分表記情報で指定したArial、赤、太字、斜体文字で表記される。
【０１６０】
図１３は、図１２と同様に、オリジナルドキュメントのコンテンツデータとの差異を表記する方法を記述したテンプレートセットの例を示す図である。このテンプレートセットでは、オリジナルドキュメント生成時に使用するテンプレートデータとは異なるテンプレートデータを新規ドキュメント生成に使用することを指定している。
【０１６１】
テンプレートセット２２０１は、属性情報Property.txt２２０２、テンプレートデータTemplate.xml１２０１、データ取得指示情報DataRetrieve.xml１２０２、テンプレートデータDiffTemplate.xml２２０３で構成される。テンプレートデータTemplate.xml１２０１、データ取得指示情報DataRetrieve.xml１２０２は、図９に示したものと同様である。属性情報Property.txt２２０２には、テンプレートセット内のそれぞれのファイルがどの処理で使用するものかを記述している。
【０１６２】
図１２の例と同様に、「Template=Template.xml」では、Template.xmlがドキュメント生成時のテンプレートデータとして使用されることを意味する。また、「DataRetrieve=DataRetrieve.xml」では、DataRetrieve.xmlがデータ取得指示情報として使用されることを意味する。「DiffTemplate=DiffTemplate.xml」とは、新規ドキュメント生成時のテンプレートデータとしてDiffTemplate.xmlを使用することを意味する。図１２のテンプレートセット２１０１では、新規ドキュメント生成時のテンプレートデータとしてTemplate.xml１２０１を使用していたが、図１３のテンプレートセット２２０１ではDiffTemplate.xml２２０３を使用する点が異なる。
【０１６３】
テンプレートデータDiffTemplate.xml２２０３は、データベースから取得したdataList.name、dataList.address、dataList.telのデータで構成された表をレイアウトすることを示している。その表はさらに、「新規・更新」欄を持ち、その行のデータがオリジナルドキュメント生成時から変更のあったデータである場合は「○」を表記する。「新規・更新」欄はテンプレートデータ２２０３の２２０４、２２０５部分で表現している。２２０４は表の標題部分「新規・更新」部分を、そして、２２０５は「新規・更新」列の各セルを表現している。特に２２０５の「<if condition="differ"> ○ </if>」は、取得したdataListのデータについてオリジナルドキュメント生成時のコンテンツデータと違いがあった場合に「○」を表記することを意味する。
【０１６４】
また、２２０６の記述はデータベースのデータが削除されている場合に、削除されたdataList.nameを表示することを意味している。「<ul>」はリストであることを示すタグ、「<li>」は、リストの項目を示すタグであり、「<li>」、「</li>」で囲まれた部分が箇条書きの項目として表現される。
【０１６５】
「<for listName="dataList" type="old">」は、オリジナルドキュメントのdataListに関するコンテンツデータを順次、取得することを意味する。
【０１６６】
「<if condition="differ" value="null">」は、取得したオリジナルドキュメントのコンテンツデータがデータベース上から削除されている場合にタグ内の表記を表示することを意味する。例えば、図４に示す１３０１に存在するid002データが１３０２で削除されていた場合は、オリジナルドキュメント生成時に存在していたデータが削除されていると判断する。この場合、「削除されたデータ ：」という表示に続いて箇条書きでdataList.nameの値「Koyama」が表示されることになる。
【０１６７】
このテンプレートセット２２０１を使用した場合の新規ドキュメントの例を図１４の２９０１に示す。新規ドキュメント２９０１は、図４の１３０１、１３０２に示すコンテンツデータによって作成される新規ドキュメントの例である。
【０１６８】
図４に示すコンテンツデータ１３０１、１３０２を比較すると分かるように、新規ドキュメント生成時のコンテンツデータは「id001」の「tel」データが「0123」から「3210」に更新されている。また、新規に「id004」のデータも追加されている。この場合、「id001」、「id004」に対する「新規・更新」欄に「○」がついた新規ドキュメント２９０１（図１４）が生成される。なお、データベースから削除されたデータはないため、「削除されたデータ：」以下には名前は出現しない。
【０１６９】
続いて、オリジナルドキュメント生成、及び、新規ドキュメント生成の処理について説明する。まずは、オリジナルドキュメント生成の処理について述べる。第１の実施形態においては、図５を使用してオリジナルドキュメントを生成する処理の流れを説明したが、第３の実施形態においても、同様の処理でオリジナルドキュメントの生成を行う。
【０１７０】
第１の実施形態と異なるのは、ステップＳ４１２のデータ取得処理の後に、取得したコンテンツデータ又はコンテンツデータを取得するための情報を記憶する処理を行う点である。そのため、ステップＳ４１２の後にデータ保存／データ取得情報保存処理が追加されている。この追加された処理について説明する。
【０１７１】
データ保存／データ取得情報保存処理では、ステップＳ４１２でデータベースから取得したデータをファイルとしてハードディスク１０７に保存する。データベースから取得したデータは、ステップＳ４１４のマージ処理においてテンプレートデータとマージするために使用するとともに、新規ドキュメント生成時のコンテンツデータとの差異を判断するために新規ドキュメントを作成する処理において使用する。そのため、データベースから取得したデータは、データ保存／データ取得情報保存処理においてハードディスク１０７に保存しておく。ファイルに保存する場合の書式としては例えば、ＸＭＬ形式で保存する。
【０１７２】
ここでは、図４の１３０１に示すように、dataListのname,address,telの情報として３件の情報を取得した場合、id要素、name要素、address要素、tel要素で構成されたdataListタグで３件のデータを表現する。ここで、id要素、name要素、address要素、tel要素の子要素は、id情報、name情報、address情報、tel情報を内容とするものである。このＸＭＬ文書をオリジナルドキュメントのコンテンツデータとしてファイルに保存する。ところで、データベースの中にはデータの更新状況を履歴として持ち、ある日時を指定してデータを要求すると、履歴情報を使用して、指定したその日時におけるデータベースの状態を仮想的に復元してデータを返すような仕組みを持っているものがある。そのようなデータベースからデータを取得する場合は、オリジナルドキュメント生成時にデータベースから取得したデータをファイルに保存しておく必要はない。データベースから取得するデータの種類、取得条件とともに、取得処理を行った日時情報を保持しておけば、いつでもデータベースからオリジナルドキュメント生成時のコンテンツデータを取得することができる。
【０１７３】
オリジナルドキュメント作成に使用したコンテンツデータは、新規ドキュメント生成時に使用するドキュメント生成情報の一つとして識別情報テーブルにおいて識別情報と関連させて記憶する。
【０１７４】
図１５に、オリジナルドキュメント作成に使用したコンテンツデータの情報と識別情報を関連付けた識別情報テーブルを示す。識別情報テーブル１９０１には、識別情報、テンプレートセットの格納場所、及び、コンテンツデータの格納場所（コンテンツデータ情報）又はコンテンツデータを取得するための情報が関連付けて記憶される。
【０１７５】
データベースから取得したコンテンツデータをファイルとして保存した場合、ＣＰＵ１０１は、コンテンツデータの格納場所をコンテンツデータ情報として記憶させる。日時を指定すると、その時点のデータベースの状態を復元してデータを返すようなデータベースからデータを取得した場合、ＣＰＵ１０１は、コンテンツデータ情報としてコンテンツデータを取得した日時を記憶させる。
【０１７６】
図１５に示す識別情報テーブル１９０１では、識別情報「1234567890」に対してはコンテンツデータ自体を記録したＸＭＬドキュメントを格納した場所「file:///C:/doc/Contents1.xml」が記憶される。「2345678901」に対しては同じく、コンテンツデータ自体を記録したＣＳＶデータファイルの格納場所「http://host1/doc/Contents2.xml」が記憶される。識別情報「3456789012」に対しては、コンテンツデータとして、データベースからコンテンツデータを取得する際に指定するデータ取得日時情報「2005-10-06T21:05:02Z」が記憶される。この時刻は、オリジナルドキュメント生成時にデータベースからコンテンツデータを取得した日時を示している。「2005-10-06T21:05:02Z」は「2005年10月6日 21時5分2秒」という日時を示している。
【０１７７】
以上、オリジナルドキュメント生成時のコンテンツデータを取得するための情報を識別情報テーブルに保存する処理について説明した。
【０１７８】
次に新規ドキュメント生成処理について説明する。新規ドキュメント生成処理では、オリジナルドキュメントのコンテンツデータと、新規ドキュメント生成時にデータベースから取得したデータとを比較して、差異部分を明示した新規ドキュメントを生成する。
【０１７９】
大まかな処理の流れは第１の実施形態で示した図８のフローチャートと同じであるので、図８のフローチャートに従ってそれぞれの処理の説明を行う。ステップＳ１１０３までは第１の実施形態と同じ処理を行うため、識別情報を検出した後の処理について説明する。
【０１８０】
ステップＳ１１０４では、ドキュメント生成情報検索部１００５は、ハードディスク１０７に保存された識別情報テーブルを読み出し、識別情報読み取り部１００４から渡された識別情報に対応するドキュメント生成情報を取得する。
【０１８１】
識別情報が「1234567890」であり、識別情報テーブルが図１５の１９０１であった場合を例に挙げる。この場合、テンプレートセットの格納場所情報「file:///C:/doc/template1.zip」がドキュメント生成情報として取得される。また、コンテンツデータ情報「file:///C:/doc/Contents1.xml」もドキュメント生成情報として取得される。ドキュメント生成情報検索部１００５は、取得したドキュメント生成情報をドキュメント生成情報取得部１００６に渡す。
【０１８２】
ステップＳ１１０５では、ドキュメント生成情報取得部１００６は、ドキュメント生成情報検索部１００５から渡された情報を基にテンプレートセットの格納場所にアクセスし、ドキュメント生成に使用するテンプレートセットを取得する。テンプレート格納場所情報が「file:///C:/doc/template1.zip」であった場合、ドキュメント生成情報取得部１００６は、ハードディスク１０７の指定ディレクトリからtemplate1.zipファイルを取得する。また、コンテンツデータ情報については、ファイル格納場所「file:///C:/doc/Contetents1.xml」である場合、ドキュメント生成情報取得部１００６は、当該ファイル格納場所のハードディスクからContents1.xmlファイルを取得する。コンテンツデータ情報がコンテンツデータの取得日時を示している場合、ドキュメント生成情報取得部１００６は、その日時情報を取得する。ドキュメント生成情報取得部１００６は、取得したテンプレートセット、コンテンツデータContents1.xml、又は日時情報をドキュメント生成部１０１１に渡す。
【０１８３】
ステップＳ１１０６では、ドキュメント生成部１０１１は、ドキュメント生成情報取得部１００６から渡されたドキュメント生成情報を使用して、ドキュメント生成部１０１１がドキュメントの生成処理を各部に指示する。
【０１８４】
ドキュメント生成部１０１１は、オリジナルドキュメントのコンテンツデータを収めたファイルを入手した場合、ファイルをマージ部１００８に渡す。ドキュメント生成部１０１１は、オリジナルドキュメントのコンテンツデータを取得するための日時情報を入手した場合、コンテンツデータ取得部１００７に日時情報を渡す。
【０１８５】
また、ドキュメント生成部１０１１は、ドキュメント生成情報取得部１００６からテンプレートセットを入手すると、ドキュメント生成に使用するデータ取得指示情報とテンプレートデータとを抽出する。そして、ドキュメント生成部１０１１は、データ取得指示情報をコンテンツデータ取得部１００７に渡し、コンテンツデータの取得を指示する。ドキュメント生成部１０１１は、抽出したテンプレートデータをマージ部１００８に渡し、テンプレートデータとコンテンツデータとのマージを指示する。
【０１８６】
例えば、テンプレートセットが図１２の２１０１に示すものである場合、ドキュメント生成部１０１１は、属性情報２１０２を読み込み、マージ部１００８に渡すデータとコンテンツデータ取得部１００７に渡すデータとを判断する。また、ドキュメント生成部１０１１は、新規ドキュメントのデザイン情報となるテンプレートデータTemplate.xmlと差分表記情報であるDifference.txtとをマージ部１００８に渡す。そして、ドキュメント生成部１０１１は、データ取得指示情報DataRetrieve.xmlをコンテンツデータ取得部１００７に渡す。
【０１８７】
テンプレートセットが図１３に示す２２０１である場合も同様に、ドキュメント生成部１０１１は、属性情報２２０２から判断して、新規ドキュメントのテンプレートデータDiffTemplate.xmlをマージ部１００８に渡す。そして、ドキュメント生成部１０１１は、データ取得指示情報DataRetrieve.xmlをコンテンツデータ取得部１００７に渡す。
【０１８８】
ステップＳ１１０７では、コンテンツデータ取得部１００７において新規ドキュメント生成に使用するコンテンツデータの取得を行う。コンテンツデータ取得部１００７は、データ取得指示情報に基づきデータベースからコンテンツデータを取得する。
【０１８９】
第１の実施形態のコンテンツデータ取得方法と同様に、コンテンツデータ取得部１００７は、ドキュメント取得指示情報から取得先・取得条件・取得データ内容を読み込み、情報に従って、データベースからコンテンツデータを取得する。
【０１９０】
コンテンツデータ取得部１００７は、取得したコンテンツデータを、識別情報付加部１００９にて識別情報テーブルに登録する情報としてコンテンツデータ自体をファイルに保存するか、取得した日時情報を保持しておく。これは、新規ドキュメントがオリジナルドキュメントとして扱われた場合に、オリジナルドキュメントのコンテンツデータの情報を識別情報テーブルに保持しておくためである。
【０１９１】
また、オリジナルドキュメントのコンテンツデータを取得する情報として日時情報を与えられている場合は、コンテンツデータ取得部１００７はオリジナルドキュメントのコンテンツデータもデータベースから取得する。コンテンツデータ取得部１００７は、ドキュメント取得指示情報の取得先・取得条件、取得データ内容とともに日時情報も指定することでデータベースからオリジナルドキュメント生成時のコンテンツデータを取得する。
【０１９２】
コンテンツデータ取得部１００７は、取得した現状のコンテンツデータ、そして、オリジナルドキュメント生成時のコンテンツデータをマージ部１００８に渡す。
【０１９３】
ステップＳ１１０８では、マージ部１００８はテンプレートデータにコンテンツデータをマージしてドキュメントを生成する。その際、オリジナルドキュメントのコンテンツデータとの差異を検出し、差異を検出した場合のフォーマットに従ってドキュメントの生成処理を行う。詳しい処理については後述する。マージ部１００８は、生成したドキュメントデータを識別情報付加部１００９に渡す。
【０１９４】
ステップＳ１１０９では、識別情報付加部１００９は、渡されたドキュメントに識別情報を付加する処理を行う。識別情報付加部１００９は、新たに識別情報を生成し、識別情報と、新規ドキュメントを生成するために使用したドキュメント生成情報とを関連付けて識別情報テーブルに登録する。識別情報に関連付けられて登録されるドキュメント生成情報とは、使用したテンプレートセットの格納場所、コンテンツデータ取得部１００７で保持していたコンテンツデータ、又はコンテンツデータをデータベースから取得した日時情報である。登録したコンテンツデータは、次回、この識別情報が読み込まれた場合に、オリジナルドキュメントのコンテンツデータとして取り扱われる。
【０１９５】
識別情報付加部１００９は、識別情報をＱＲコードに変換し、ドキュメントに付加する。そして、識別情報付加部１００９は、識別情報を付加したドキュメントをフォーマット変換部１０１０に渡す。
【０１９６】
フォーマット変換部１０１０のフィーマット変換処理（ステップＳ１１１０）、プリント部１０１２の出力処理（ステップＳ１１１１は、第１の実施形態と同様の処理であるため、説明は省略する。
【０１９７】
続いて、オリジナルドキュメントのコンテンツデータと現状のコンテンツデータとの差異を表示したドキュメントを生成する処理について説明する。この処理は、マージ部１００８で行われる処理である。第３の実施形態では、マージ部１００８は、コンテンツデータの差異の検出、及び、デザイン上の差異をドキュメントに反映する処理を行う。テンプレートセットが図１２に示す２１０１である場合のマージ部１００８の処理を具体的に説明する。
【０１９８】
図１２のテンプレートセット２１０１である場合、ドキュメント生成部１０１１は、属性情報２１０２に従い、テンプレートデータTemplate.xml１２０１と差分表記情報Difference.txt２１０３とをマージ部１００８に渡す。マージ部１００８はTemplate.xml１２０２を読み込み、読み込んだタグに応じてドキュメントを生成する。
【０１９９】
「<for>」タグやデザイン情報を表す「<table>」、「<td>」、「<tr>」等のタグを読み込んだ場合の処理は第１の実施形態と同じである。ここでは、「<data>」を読み込んだ場合の処理ついて説明する。
【０２００】
図１６は、「<data>」タグを検出した場合の処理の流れを示すフローチャートである。マージ部１００８は、「<data>」タグを検出すると、コンテンツデータ取得部１００７から取得したオリジナルドキュメントのコンテンツデータと新規に取得したコンテンツデータとを読み込む（ステップＳ２５０１）。そして、マージ部１００８は、読み込んだデータに差異があるかを判断する（ステップＳ２５０２）。差異がない場合、マージ部１００８は、コンテンツデータをそのまま出力する（ステップＳ２５０３）。ステップＳ２５０２で差異があると判断した場合、マージ部１００８は、差分表記情報Difference.txtで指示されたデザイン情報とコンテンツデータを出力する(ステップＳ２５０４)。
【０２０１】
より具体的に説明するため、オリジナルドキュメントのコンテンツデータが図４の１３０１、新規に取得したコンテンツデータが１３０２であるとして説明する。
【０２０２】
Template.xml１２０１の「<data name="dataList.name"/>」を読み込んだ場合、マージ部１００８は、新規に取得したコンテンツデータからdataList.idを読み出す。そして、マージ部１００８は、オリジナルドキュメントのコンテンツデータ１３０２に同じidを持つデータが存在するかを確認する。
【０２０３】
オリジナルドキュメントのコンテンツデータ１３０２に同じidを持つデータが存在する場合、マージ部１００８は、dataList.name同士を比較する。dataList.name同士の値に違いがなければ、マージ部１００８は、dataList.nameの値をそのまま出力する。id=id001のdataList.nameについては差がないため、そのままdataList.nameの値が出力される。
【０２０４】
「id=id001」のdataList.telのようにオリジナルのコンテンツデータ「0123」と新規のコンテンツデータ「3210」で違いがある場合、新規のdataList.telの値「3210」を差分表記情報Difference.txt２１０３に指示された表記で出力する。
【０２０５】
Difference.txt２１０３ではオリジナルドキュメントのコンテンツデータと新規のコンテンツデータに差異があったデータについて、Arialフォント、太字、斜体文字、赤 で表示するように指示がある。マージ部１００８は、その指示に従い、文字列をArialフォント、太字、斜体文字、赤で表現するためのデザイン情報を出力する。例えば、ＨＴＭＬで表現すると、「<font face="Arial" color="red"><strong><i></i></strong></font>」のように表現できる。マージ部１００８は、このデザイン情報とともに差異のあるデータを出力する。従って、「id="id001"」のdataList.tel情報「3210」は、「<font face="Arial" color="red"><strong><i>3210</i></strong></font>」として出力される。
【０２０６】
「dataList.id=id004」のデータのように、オリジナルドキュメントのコンテンツデータとして存在しなかった場合も、マージ部１００８は、コンテンツデータに差異があると判断する。この場合、dataList.nameの値「Watanabe」、dataList.addressの値「Tokyo」、dataList.telの値「4567」も、Arial、太字、斜体文字、赤色で出力するタグで囲んで出力される。その結果、生成されるドキュメントは、「3210」（「id=id001」のdataList.tel）、及び、「Watanabe」、「Tokyo」、「4567」（「id=id004」）の部分が出力される。この場合、これらの部分は差分表記情報に規定されたデザイン情報、Arial、太字、斜体文字、赤色に従った表記で出力される。
【０２０７】
続いて、テンプレートセットが図１３の２２０１である場合のマージ部１００８の処理を具体的に説明する。
【０２０８】
テンプレートセット２１０１では、テンプレートデータTemplate.xml１２０１と差分データの表記方法を定義した差分表記情報Difference.txt２１０３とを使用して新規ドキュメントを生成する指示をした。テンプレートセット２２０１では、オリジナルドキュメントを生成するテンプレートデータTemplate.xml１２０１とは別に、新規ドキュメントを生成するために使用するテンプレートデータDifference.xml２２０３を定義している。テンプレートデータDifference.xml２２０３には、オリジナルドキュメントのコンテンツデータと新規ドキュメントのコンテンツデータで差異があった場合のデザイン表記方法が記述されている。マージ部１００８は、この表記に従ってデータに差異があることを表現する。
【０２０９】
マージ部１００８は、テンプレートデータDifference.xml２２０３を読み込み、マージ処理を行う。「<for>」タグ、通常のタグが出現した場合の処理は、第１の実施形態と同じである。
【０２１０】
次に、「<if>」タグが出現した場合の処理について説明する。
【０２１１】
マージ部１００８は、「<if>」タグを検出すると、直前の「<for>」タグのlistName属性に指定されているデータについてオリジナルドキュメントのコンテンツデータと、新規に取得したコンテンツデータとを取得する。
【０２１２】
次に、マージ部１００８は、「<if>」タグのcondition属性を読み取り、条件を判断する。「condition="differ"」とは、オリジナルドキュメントのコンテンツデータと新規に取得したコンテンツデータとに差異があることを条件としている。マージ部１００８は、コンテンツデータの値を比較し、条件に該当する場合、ifの終了タグ「</if>」まで処理を行う。条件に該当しない場合、マージ部１００８は、ifの終了タグ「</if>」まで何も処理を行わず読み飛ばす。
【０２１３】
図１３の２２０５の表記「<if condition="differ"data="dataList">」では、次のことを意味している。即ち、直前の「<for>」タグのlistName属性で指定されたdataListの値について、新規のコンテンツデータがオリジナルデータと差異がある場合に、「<if>」タグ内の処理を行う。コンテンツデータの比較は、dataList.name、dataList.address、dataList.telの何れかについて、新規のコンテンツデータがオリジナルドキュメントのコンテンツデータと差異があるか検出する。オリジナルデータのコンテンツデータが１３０１、新規のコンテンツデータが１３０２である場合、次のような処理が実行される。即ち、telの値が更新されているid="id001"のdataList、新規に追加されたid="id004"について差異があることが検出され、<if>以下の処理が行われる。この場合、<if>以下の処理は「○」を出力することである。そのため、図１４に示す出力結果２９０１のように、「id＝id001」、「id=id004」に該当するデータの「新規・更新」欄部分に○が表示される。
【０２１４】
続いて、図１３の２２０６に示す表記の<if>タグ「<if condition="differ" value="null">」の処理について説明する。
【０２１５】
この<if>タグでも同様に、直前の<for>タグ指定されたコンテンツデータについて差異を検出する。「<for listName="dataList" type="old">」は、dataListの古いデータ、つまり、オリジナルドキュメントのコンテンツデータをベースにしてfor文を実行することを意味している。つまり、オリジナルドキュメントのdataListの総数回、<for>タグ内の処理を繰り返すことを意味する。この直後の<if>文では、<for>タグでベースとしたオリジナルドキュメントのコンテンツデータをベースにしてデータ比較を行う。
【０２１６】
「<if condition="differ" value="null"」とは、オリジナルドキュメントのコンテンツデータが 新規のコンテンツデータには存在しない場合に、if以下の処理を行うことを示している。「value="null"」とは比較先のデータが存在しないことを意味している。
【０２１７】
オリジナルドキュメントのコンテンツデータが図４の１３０１、新規のコンテンツデータが図４の１３０２であるとする。この場合、オリジナルドキュメントのコンテンツデータのidが新規のコンテンツデータの何れかと一致しており、削除されたコンテンツデータがないことを意味する。つまり、条件に当てはまるデータは存在せず、<if>タグ内の処理は実行されない。
【０２１８】
しかし、オリジナルドキュメントに存在したコンテンツデータが、新規ドキュメント生成時に削除されていた場合は、この条件に該当することになり、<if>タグ内の処理が行われ、dataList.nameの値が出力される。
【０２１９】
図１３の２２０６の「<ul>」はリストが開始することを示すタグである。また、「<li>」はリストの項目を表すタグである。コンテンツデータに差異がある場合は、生成されたドキュメント２９０１には、「削除されたデータ：」に続いて、削除されたdataListのnameの値がリストとして表示される。
【０２２０】
以上の流れで、オリジナルドキュメントのコンテンツデータとの差異（新規、更新、削除）状態が記された新規ドキュメントが生成される。
【０２２１】
次に、オリジナルドキュメント生成時と新規ドキュメント生成時のコンテンツデータの差として、数値データの差分を表現した新規ドキュメントを生成する例について述べる。前述の説明で用いたのとは異なるオリジナルドキュメント、データベースのデータを例にして説明するが、マージ部１００８の処理以外は前述と同様であるため、マージ部１００８の処理を説明する。
【０２２２】
図１７の２５０１は、月間の売上表を表したオリジナルドキュメントである。地区とその地区における売上金額が表示されている。
【０２２３】
図１７の２５０２は、２５０１のオリジナルドキュメントに対して生成された新規ドキュメント例である。地区とその地区における最新の月の売上金額と、オリジナルドキュメントに掲載されていた売上金額との差額が表として示されている。
【０２２４】
図１８は、ドキュメントの生成に使用されたデータベースのデータである。２７０１は図１７の２５０１に示すオリジナルドキュメントの生成に使用されたコンテンツデータ、２７０２は図１７の２５０２に示す新規ドキュメントの生成に使用されるコンテンツデータである。データリスト dataListSalesは、地区名を表すdivision 項目と売上額を表す sales項目に対するデータを関連付けて保持している。「Id101」、「Id102」、「Id103」、「Id104」 は地区名「A」、「B」、「C」、「D」の月間売上金額を保持している。２７０１と２７０２とではsalesの値が異なっており、オリジナルドキュメントを生成した時点での月間売上額と新規ドキュメントを生成した時点の月間売上額がそれぞれの地区で異なっていることを示している。
【０２２５】
図１９は、新規ドキュメント生成時のテンプレートデータの例である。前述の例でいうところのDiffTemplate.xmlにあたるテンプレートである。「顧客表」というタイトル行、「地区」、「売上（万円）」、「差額（万円）」という表項目名、データベースから取得したデータとそのデータを使用して計算を行った値を持つ表データから構成されるドキュメントである。テンプレートデータ２８０１に対し、オリジナルドキュメント生成時のコンテンツデータが２７０１、新規ドキュメント生成時のコンテンツデータが２７０２であるとき、図１７の２５０２に示す新規ドキュメントを出力する。以下に、マージ部１００８がテンプレートデータ２８０１とコンテンツデータ２７０１と２７０２を使用してマージしたドキュメントを生成する処理について説明する。
【０２２６】
オリジナルドキュメントのコンテンツデータを保持しておく処理及び、「<for>」タグやデザイン情報を表す「<table>」、「<td>」、「<tr>」等のタグを読み込んだ場合の処理も前述と同じである。以下にマージ部１００８が「<if>」、「<subtract >」を読み込んだ場合の処理ついて説明する。
【０２２７】
「< if condition=”differ” data=”dataListSales.sales”>」は、取得したデータリストdataListaSalesの「sales」の値がオリジナルドキュメント生成時のデータリスト dataListSalesの「sales」の値が異なる場合に、子要素の処理を行うことを意味する。オリジナルドキュメント生成時のコンテンツデータ２７０１と新規ドキュメント生成時のコンテンツデータ２７０２では、同じ「Id」の「sales」の値を比較した場合、「Id101」、「Id102」、「Id103」、「Id104」全てについて、「sales」の値が異なっている。従って、４つのデータ比較において、マージ部１００８は「<if condition=”differ” data=”dataListSales.sales”>」の子要素「<subtract data=”dataListSales.sales”/>」の処理を実行する。
【０２２８】
「<subtract data=”dataListSales.sales”/>」は、data属性で指定された値について、新規ドキュメント生成時のコンテンツデータからオリジナルドキュメント生成時のコンテンツデータを引いた値をマージすることを意味する。この場合、data属性には、「dataListSales.sales」で指定されたdatatListSalesの「sales」の値について引き算を実行する。例えば、「Id101」についてのコンテンツデータ２７０１の「sales」の値は「1500」である。コンテンツデータ２７０２の「sales」の値は「1575」である。従って、引き算の結果「+75」を出力する。同様に「<for listName=”dataListSales”/>」で順次 子要素の処理を繰り返す毎に、「Id102」のデータに対して「-100」、「Id103」のデータに対して「+50」、「Id104」のデータに対して「+250」を出力する。
【０２２９】
図２０は、マージ部１００８がテンプレートデータ２８０１のマージ処理を終了した際に出力されるドキュメントを示している。データリストdataListSalesの４つのデータに対して、「division」の値、新規ドキュメント生成時の「sales」の値、オリジナルドキュメント生成時の値と差をとった「sales」の値を１行に表現したドキュメント２９０１である。以上の流れで、コンテンツデータの数値データの差分を表記する新規ドキュメントを生成する。
【０２３０】
以上、新規ドキュメントに、オリジナルドキュメントとの差異を明示する方法について述べた。
【０２３１】
第３の実施形態では、差異がある場合にオリジナルドキュメントとの表記を変える例を示した。しかし、新規ドキュメント作成に使用するテンプレートDiffTemplate.xmlで使用した<if>タグの条件設定を細かく表現できるようにすることで、オリジナルドキュメントと新規ドキュメントの差異を柔軟に設定することができる。例えば、数値の差異を比較するようにし、差異がマイナスであれば赤字、差異がプラスであれば黒字で表記し、数値データのプラスマイナスの変動状態を明示的に表現することもできる。また、数値の差の大きさにより、色を変えることも可能である。
【０２３２】
また、第３の実施形態では、コンテンツデータの比較を複合機で行った。しかし、データベースによっては、指定した日時におけるデータと現在のデータと比較し、変更、削除されたデータを取得できるものもある。そのようなデータベースからコンテンツデータを取得する場合は、差異を検出する処理はデータベースで行われるため、オリジナルドキュメント生成時の日時情報を指定してコンテンツデータの差異を取得するようにしてもよい。
【０２３３】
上述した実施形態によれば、対象となるオリジナルドキュメントに関して、データベース上の最新のデータで構成されたドキュメントを所望する場合、オリジナルドキュメントの識別情報を読み取るだけで所望の新規ドキュメントを生成することが可能になる。このように、ユーザが新規ドキュメントを生成するために必要なテンプレートデータ、データ取得指示情報を把握しておく必要がなく、容易に新規ドキュメントを生成することができる。
【０２３４】
また、オリジナルドキュメント作成に使用したテンプレートデータとは異なるテンプレートデータが新規ドキュメント生成用に識別情報に対して関連付けられている場合、オリジナルドキュメントとは異なるフォーマットのドキュメントを生成することができる。
【０２３５】
また、新規ドキュメント生成時に、オリジナルドキュメントのコンテンツデータと現状のデータベースのドキュメントデータを比較する。そして、差異があるコンテンツデータについて、他のコンテンツデータのレイアウトとは異なるレイアウトで表示する。これにより、オリジナルドキュメントとの違いが明確なドキュメントを生成することが可能になる。
【０２３６】
さらに、テンプレートセットを使用して作成していない通常のドキュメントにテンプレートセットの格納場所を指示する識別情報を付加しておき、そのドキュメントをオリジナルドキュメントにして新規ドキュメントを生成することもできる。従って、識別情報を付加したドキュメントの識別情報を読み込み、全く見た目に異なるドキュメントを出力結果として得ることができる。
【０２３７】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステム或いは装置に供給し、そのシステム等のコンピュータが記憶媒体からプログラムコードを読み出し実行することによっても達成される。
【０２３８】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現し、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成する。
【０２３９】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【０２４０】
また、コンピュータが読み出したプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も本発明の範囲に含まれる。
【０２４１】
同様に、記憶媒体から読み出されたプログラムコードが、コンピュータに接続された機能拡張ユニット等に備わるメモリに書込まれた後、そのプログラムコードの指示に基づきＣＰＵ等が実際の処理を行い、前述した実施形態の機能が実現される場合も含まれる。
【０２４２】
さらに、プログラムコードをインターネット等の通信媒体を介してコンピュータに供給される構成も本発明の範疇に含まれる。
【図面の簡単な説明】
【０２４３】
【図１】本発明の実施形態に係る複合機の構成を示すブロック図である。
【図２】テンプレートセットを説明するための図である。
【図３】for文の処理の流れを示すフローチャートである。
【図４】データベース上のデータの例を示す図である。
【図５】ドキュメントの印刷処理の流れを示すフローチャートである。
【図６】識別情報付加処理の流れを示すフローチャートである。
【図７】識別情報を有するドキュメントを読み込み、新たなドキュメントを出力する流れを示すブロック図である。
【図８】ドキュメント生成処理の流れを示すフローチャートである。
【図９】テンプレートセットの例を示す図である。
【図１０】作成されるドキュメントの例を示す図である。
【図１１】オリジナルドキュメントを生成するまでの処理を示すフローチャートである。
【図１２】図１２は、テンプレートセットの例を示す図である。
【図１３】テンプレートセットの例を示す図である。
【図１４】生成されるドキュメントの例を示す図である。
【図１５】オリジナルドキュメント作成に使用したコンテンツデータの情報と識別情報を関連付けた識別情報テーブルを示す図である。
【図１６】「<data>」タグを検出した場合の処理の流れを示すフローチャートである。
【図１７】オリジナルドキュメントと生成されるドキュメントの例を示す図である。
【図１８】データベース上のデータの例を示す図である。
【図１９】テンプレートの例を示す図である。
【図２０】マージされたドキュメントの例を示す図である。
【符号の説明】
【０２４４】
１００  複合機
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  印刷部
１０４  ネットワークアダプタ
１０５  ネットワーク
１０７  ハードディスク
１０８  操作部
１０９  ファイルサーバ
１１０  データベース
１１１  スキャナ
１００１、１００２  用紙
１００３  スキャン部
１００４  識別情報読み取り部
１００５  ドキュメント生成情報検索部
１００６  ドキュメント生成情報取得部
１００７  コンテンツデータ取得部
１００８  マージ部
１００９  識別情報付加部
１０１０  フォーマット変換部
１０１１  ドキュメント生成部
１０１２  プリント部
【図１】
2008305391.tif 000003
【図２】
2008305391.tif 000004
【図３】
2008305391.tif 000005
【図４】
2008305391.tif 000006
【図５】
2008305391.tif 000007
【図６】
2008305391.tif 000008
【図７】
2008305391.tif 000009
【図８】
2008305391.tif 000010
【図９】
2008305391.tif 000011
【図１０】
2008305391.tif 000012
【図１１】
2008305391.tif 000013
【図１２】
2008305391.tif 000014
【図１３】
2008305391.tif 000015
【図１４】
2008305391.tif 000016
【図１５】
2008305391.tif 000017
【図１６】
2008305391.tif 000018
【図１７】
2008305391.tif 000019
【図１８】
2008305391.tif 000020
【図１９】
2008305391.tif 000021
【図２０】
2008305391.tif 000022