(57)【要約】【課題】複数のレコードを１つの文書に配置するマルチレコード型バリアブル印刷を行う際に、レコードを配置する条件を指定する。【解決手段】テンプレート上にフローエリア２１０６，２１０７を定義し、さらに、フローエリア毎に、そこに流し込まれるレコードの制限する条件を定義しておく。また、フローエリアには、そこに流しこまれるデータのレイアウトを定義したサブテンプレートも２１０８関連づけられている。印刷や表示の際には、レコードをデータベース２１０１から順次フェッチし、同一のキーカラムを有するレコード各々をサブテンプレートでレイアウトし、条件式にしたがって、フローエリア２１０６または２１０７のいずれか合致する方へ配置する。【選択図】図２１
2005216182.tif 000002
【特許請求の範囲】
【請求項１】
レイアウトすべきデータに応じて動的にレイアウトを変更可能な文書処理装置であって、
データを配置するための領域と該領域に配置されるデータの配置条件とを有するテンプレートに応じて、レイアウトすべきデータのうち、前記配置条件を満たすものを当該配置条件が指定された領域に配置した文書を作成する配置手段を備えることを特徴とする文書処理装置。
【請求項２】
レイアウトすべきデータに応じて動的にレイアウトを変更可能な文書処理装置であって、
データを配置するための領域と該領域に配置されるデータの抽出条件とを有するテンプレートを作成するテンプレート作成手段と、
前記テンプレートに応じて、レイアウトすべきデータのうち、前記抽出条件を満たすものを当該抽出条件が指定された領域に配置した文書を作成する配置手段とを備えることを特徴とする文書処理装置。
【請求項３】
前記配置手段は、データ源から取得したデータを別途定義されたサブテンプレートにしたがってレイアウトして前記レイアウトすべきデータを作成し、作成したデータを、前記テンプレートに応じて配置することを特徴とする請求項１または２に記載の文書処理装置。
【請求項４】
前記サブテンプレートは、単一の文書に配置されるデータの条件であるマルチデータ条件を有し、前記配置手段は前記マルチデータ条件を満たすデータを単一の文書に配置することを特徴とする請求項３に記載の文書処理装置。
【請求項５】
前記配置手段は、前記領域に配置されるデータが該領域に納まらない場合には、一律の縮尺で前記データを縮小して前記領域に配置することを特徴とする請求項１乃至４のいずれか１項に記載の文書処理装置。
【請求項６】
前記テンプレートは前記領域を複数含み、領域ごとに相異なる抽出条件を有し得ることを特徴とする請求項１乃至５のいずれか１項に記載の文書処理装置。
【請求項７】
前記テンプレートは前記領域を複数含み、さらに前記複数の領域を関連づけるリンク情報を有し、前記配置手段は、前記領域に配置されるデータが前記複数のうちのひとつの領域に納まらない場合には、前記リンク情報により関連づけられたその他の領域に配置することを特徴とする請求項１乃至４のいずれか１項に記載の文書処理装置。
【請求項８】
データ源のデータを、所与のキーでソートするソート手段をさらに備えることを特徴とする請求項１乃至７のいずれか１項に記載の文書処理装置。
【請求項９】
前記テンプレートは、前記領域毎にレイアウトすべきデータのレイアウト規則を有し、前記配置手段は、レイアウトすべきデータを、前記レイアウト規則に従って前記領域内に配置することを特徴とする請求項１乃至８のいずれか１項に記載の文書処理装置。
【請求項１０】
レイアウトすべきデータに応じて動的にレイアウトを変更可能な文書のレイアウト方法であって、
データを配置するための領域と該領域に配置されるデータの抽出条件とを有するテンプレートに応じて、レイアウトすべきデータのうち、前記抽出条件を満たすものを抽出する抽出工程と、
前記抽出工程により抽出されたデータを、前記抽出条件が指定された領域に配置した文書を作成する配置工程と
を備えることを特徴とするレイアウト方法。
【請求項１１】
データを配置するための領域と該領域に配置されるデータの抽出条件とを有するテンプレートを作成するテンプレート作成工程を更に備えることを特徴とする請求項１０記載のレイアウト方法。
【請求項１２】
前記配置工程は、データ源から取得したデータを別途定義されたサブテンプレートにしたがってレイアウトして前記レイアウトすべきデータを作成し、作成したデータを、前記テンプレートに応じて配置することを特徴とする請求項１０または１１に記載のレイアウト方法。
【請求項１３】
前記サブテンプレートは、単一の文書に配置されるデータの条件であるマルチデータ条件を有し、前記配置工程は前記マルチデータ条件を満たすデータを単一の文書に配置することを特徴とする請求項１２に記載のレイアウト方法。
【請求項１４】
前記配置工程は、前記領域に配置されるデータが該領域に納まらない場合には、一律の縮尺で前記データを縮小して前記領域に配置することを特徴とする請求項１０乃至１３のいずれか１項に記載のレイアウト方法。
【請求項１５】
前記テンプレートは前記領域を複数含み、領域ごとに相異なる抽出条件を有し得ることを特徴とする請求項１０乃至１４のいずれか１項に記載のレイアウト方法。
【請求項１６】
前記テンプレートは前記領域を複数含み、さらに前記複数の領域を関連づけるリンク情報を有し、前記配置工程は、前記領域に配置されるデータが前記複数のうちのひとつの領域に納まらない場合には、前記リンク情報により関連づけられたその他の領域に配置することを特徴とする請求項１０乃至１４のいずれか１項に記載のレイアウト方法。
【請求項１７】
データ源のデータを、所与のキーでソートするソート工程をさらに備えることを特徴とする請求項１０乃至１６のいずれか１項に記載のレイアウト方法。
【請求項１８】
前記テンプレートは、前記領域毎にレイアウトすべきデータのレイアウト規則を有し、前記配置工程は、レイアウトすべきデータを、前記レイアウト規則に従って前記領域内に配置することを特徴とする請求項１０乃至１７のいずれか１項に記載のレイアウト方法。
【請求項１９】
レイアウトすべきデータに応じて動的にレイアウトを変更可能な文書処理をコンピュータにより実行させるためのプログラムであって、
データを配置するための領域と該領域に配置されるデータの配置条件とを有するテンプレートに応じて、レイアウトすべきデータのうち、前記配置条件を満たすものを当該配置条件が指定された領域に配置した文書を作成する配置手段としてコンピュータを機能させることを特徴とするプログラム。
【請求項２０】
レイアウトすべきデータに応じて動的にレイアウトを変更可能な文書処理をコンピュータにより実行させるためのプログラムであって、
データを配置するための領域と該領域に配置されるデータの抽出条件とを有するテンプレートを作成するテンプレート作成手段と、
前記テンプレートに応じて、レイアウトすべきデータのうち、前記抽出条件を満たすものを当該抽出条件が指定された領域に配置した文書を作成する配置手段としてコンピュータを機能させることを特徴とするプログラム。
【請求項２１】
前記配置手段は、データ源から取得したデータを別途定義されたサブテンプレートにしたがってレイアウトして前記レイアウトすべきデータを作成し、作成したデータを、前記テンプレートに応じて配置することを特徴とする請求項１９または２０に記載のプログラム。
【請求項２２】
前記サブテンプレートは、単一の文書に配置されるデータの条件であるマルチデータ条件を有し、前記配置手段は前記マルチデータ条件を満たすデータを単一の文書に配置することを特徴とする請求項２１に記載のプログラム。
【請求項２３】
前記配置手段は、前記領域に配置されるデータが該領域に納まらない場合には、一律の縮尺で前記データを縮小して前記領域に配置することを特徴とする請求項１９乃至２２のいずれか１項に記載のプログラム。
【請求項２４】
前記テンプレートは前記領域を複数含み、領域ごとに相異なる抽出条件を有し得ることを特徴とする請求項１９乃至２３のいずれか１項に記載のプログラム。
【請求項２５】
前記テンプレートは前記領域を複数含み、さらに前記複数の領域を関連づけるリンク情報を有し、前記配置手段は、前記領域に配置されるデータが前記複数のうちのひとつの領域に納まらない場合には、前記リンク情報により関連づけられたその他の領域に配置することを特徴とする請求項１９乃至２２のいずれか１項に記載のプログラム。
【請求項２６】
データ源のデータを、所与のキーでソートするソート手段としてさらにコンピュータを機能させることを特徴とする請求項１９乃至２５のいずれか１項に記載のプログラム。
【請求項２７】
前記テンプレートは、前記領域毎にレイアウトすべきデータのレイアウト規則を有し、前記配置手段は、レイアウトすべきデータを、前記レイアウト規則に従って前記領域内に配置することを特徴とする請求項１９乃至２６のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえばデータベースに登録されたレコードの各フィールドを予め定めた位置に配置して文書を完成させる自動レイアウト機能を有する文書処理装置及び文書処理方法に関するものである。
【背景技術】
【０００２】
近年、商品の多品種化で商品ライフが短くなっていること、インターネット利用の普及による消費者のカスタマイズサービス指向などの要因からＣＲＭ（カスタマ・リレーションシップ・マネージメント）や、Ｏｎｅ−ｔｏ−Ｏｎｅ（１対１）マーケティングの必要性が注目されている。これらの手法により顧客満足度を高め、顧客の開拓や囲い込みを目指すものである。
【０００３】
カスタマ・リレーションシップ・マネージメントとは、顧客のデータベースをもとに、個々のニーズに即した対応を実施して、顧客の満足度を高め、会社の収益性を向上させる仕組みである。また１対１マーケティングは、データベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析して、顧客のニーズに合った提案を行うマーケティング手法であり、その代表的な適用例としてバリアブルプリントが挙げられる。ここ最近、ＤＴＰ（デスクトップパブリッシング）技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発され、顧客毎に異なる量のコンテンツを最適にレイアウトした文書の作成が求められるようになった。
【０００４】
従来、バリアブルプリントシステムでは、ドキュメント上にレイアウト枠（コンテナともいう。）でレイアウトの定義が作成され、各コンテナのコンテンツとしてデータベースの一定の条件を満たすレコードやフィールドが関連づけられる。こうしてデータベースとレイアウトとを関連付けることにより、バリアブルプリントは実現されていた。
【０００５】
しかし、テキストおよびイメージのコンテナのサイズが固定であったため、データベース内のデータがコンテナに挿入されたときに、データ量がコンテナサイズより多いとテキストのオーバーラップおよびイメージのクリッピングが発生する。またデータ量がコンテナサイズより小さいと隙間が空いてしまう。
【０００６】
その問題を解決するために、自動レイアウトシステムが発明されている。自動レイアウトシステムは、テキストおよびイメージのコンテナサイズを可変に設定することが可能である。この自動レイアウトシステムでは、コンテナのサイズが可変であり、コンテナのサイズを、差し込まれるデータ量に応じて大きくするよう変更できる。またコンテナに挿入されるデータがテキストの場合において、固定サイズのコンテナ内に入りきらないデータが挿入された場合、テキストのフォントサイズを縮小し、コンテナ内に全てのテキストを表示する技術も存在する。しかしコンテナサイズを可変とすると、コンテナサイズが大きくなった場合、そのコンテナがドキュメント上の他のコンテナに重なってしまう問題が発生する。またフォントサイズを調節する場合は、テキストの量が大きい場合、フォントサイズが小さくなりすぎる問題が発生する。
【０００７】
それらの問題を解決するためのさらなる自動レイアウトの技術として、あるコンテナのサイズが大きくなった場合、隣接したコンテナのサイズを小さくする技術が特許文献１に記載された「レイアウトデザイン装置」に開示されている。
【０００８】
このように、従来のバリアブルプリントシステムには、サイズの異なるコンテンツを適切にレイアウトするために、レイアウト枠(コンテナ)をコンテンツのサイズに合わせて動的に変化させることが可能なものが存在する。
【０００９】
また、特許文献１には、複数の商品情報を１ページのドキュメントに配置する技術も記載されている。この方法では、顧客毎の商品カタログなどを作成するときに、ひとつの商品情報（たとえばひとつの商品の商品名、イメージ、スペックなど）のレイアウトをあらかじめマスタ部品ファイルとして定義しておき、ドキュメント上にマスタ部品ファイルを配置できる領域を定義しておく。そして、データベースから抽出された各商品情報の内容をマスタ部品ファイルに合わせてレイアウトし、そのレイアウト済みの部品ファイルをドキュメントの左上から右下へと流し込んでいく。
【特許文献１】特開２０００−４８２１６（段落００２５〜００５５、図２、図１１）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１に記載されたように、ただ単純にデータベースの内容をレイアウトしたマスタ部品ファイルをドキュメントに流し込む手法では、レコードやマルチレコードという概念がない。データベース内の各商品情報は、マスタ部品ファイルによりレイアウトされた後、順次ドキュメントに配置されてしまい、配置順や大きさをレコード毎に利用者の意志によって調整することができなかった。このため、たとえば顧客の嗜好に応じてダイレクトメールを作成する場合など、デザインが単調となってしまう。利用者が当該顧客がもっとも好みそうな商品を中心に配置するなど、より効果的なものを作成したいと望んでも、利用者の意図を反映して個々のレコードの配置や大きさ等を決定することはできなかった。
【００１１】
本発明は上記従来例に鑑みてなされたもので、レコードの属性に応じてそのレコードを配置する領域を指定し、各々の領域に振り分けてレコードをレイアウトすることができる文書処理装置及び文書処理方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために本発明は以下の構成を備える。
【００１３】
レイアウトすべきデータに応じて動的にレイアウトを変更可能な文書処理装置であって、
データを配置するための領域と該領域に配置されるデータの配置条件とを有するテンプレートに応じて、レイアウトすべきデータのうち、前記配置条件を満たすものを当該配置条件が指定された領域に配置した文書を作成する配置手段を備える。
【００１４】
あるいは、レイアウトすべきデータに応じて動的にレイアウトを変更可能な文書処理装置であって、
データを配置するための領域と該領域に配置されるデータの抽出条件とを有するテンプレートを作成するテンプレート作成手段と、
前記テンプレートに応じて、レイアウトすべきデータのうち、前記抽出条件を満たすものを当該抽出条件が指定された領域に配置した文書を作成する配置手段とを備える。
【００１５】
また好ましくは、前記配置手段は、データ源から取得したデータを別途定義されたサブテンプレートにしたがってレイアウトして前記レイアウトすべきデータを作成し、作成したデータを、前記テンプレートに応じて配置する。
【００１６】
また好ましくは、前記サブテンプレートは、単一の文書に配置されるデータの条件であるマルチデータ条件を有し、前記配置手段は前記マルチデータ条件を満たすデータを単一の文書に配置する。
【００１７】
また好ましくは、前記配置手段は、前記領域に配置されるデータが該領域に納まらない場合には、一律の縮尺で前記データを縮小して前記領域に配置する。
【００１８】
また好ましくは、前記テンプレートは前記領域を複数含み、領域ごとに相異なる抽出条件を有し得る。
【００１９】
また好ましくは、前記テンプレートは前記領域を複数含み、さらに前記複数の領域を関連づけるリンク情報を有し、前記配置手段は、前記領域に配置されるデータが前記複数のうちのひとつの領域に納まらない場合には、前記リンク情報により関連づけられたその他の領域に配置する。
【００２０】
また好ましくは、データ源のデータを、所与のキーでソートするソート手段をさらに備える。
【００２１】
また好ましくは、前記テンプレートは、前記領域毎にレイアウトすべきデータのレイアウト規則を有し、前記配置手段は、レイアウトすべきデータを、前記レイアウト規則に従って前記領域内に配置する。
【発明の効果】
【００２２】
本発明によれば、テンプレートに設けた領域毎に、レコードなどのデータを配置する条件を指定可能にすることで、データを各々の領域に振り分けてレイアウトすることができる。これにより、単に流し込んだ順序でデータを配置せず、データの元の並び順などと無関係に、個々のデータを配置する位置を指定できる。
【００２３】
また、レコードを配置する方向やパターンを指定できることにより、さまざまなレイアウトパターンを実現できる。
【００２４】
また、レコードを配置可能な固定であるため、レコード数が多くても自動的に次のページを生成することはなく、単ページの文書を生成できる。
【発明を実施するための最良の形態】
【００２５】
［第１実施形態］
本発明の実施例を適用するのに好適な実施形態について説明を行う。まず発明の概略について説明する。本実施形態は、ドキュメントテンプレート（単にテンプレートとも呼ぶ。）に定義されたコンテナ（データが流し込まれる部分領域：フィールド領域とも呼ばれる）に従って、データベースのレコード等を配置した文書を作成する、いわゆるバリアブルプリントと呼ばれる機能をコンピュータにより実現するためのコンピュータソフトウエアに関する。このソフトウエアが実行可能にロードされたコンピュータは、文書処理装置として機能する。本実施形態では特に、データをテンプレートに従って配置するのみならず、テンプレートに従って文書の一部を作成し、その文書の一部を、別途テンプレートに定義された領域（フローエリアと呼ぶ。）に挿入してドキュメントを完成させる機能（マルチレコード機能）を持つソフトウエアを開示している。挿入できる文書の一部の数はひとつのフローエリアについて一つとは限らない。さらに、テンプレートに複数のフローエリアが定義されている場合、一定の条件に従って、作成済みの文書の一部をフローエリア毎に振り分ける技術も開示される。
【００２６】
次に、本発明を適用可能な本実施形態におけるコンピュータシステムの構成、およびアプリケーション構成について説明する。
【００２７】
＜システム構成図＞
図１Ａはバリアブルデータドキュメントを印刷するシステム１００を図示している。本明細書で示された方法は図１Ｂで詳しく説明される汎用コンピュータモジュール１０１で所定のプログラムを実行することで実践される。図１Ａに記述されるプロセスは、コンピュータモジュール１０１で実行され、システム１００上で実施可能となるレイアウト編集アプリケーションプログラム１２１のように、ソフトウェアの全体あるいは一部分で実行される。特にレイアウト編集や印刷のステップは、本発明の文書処理装置であるコンピュータ１０１によって実行されるソフトウェアの指示によって実施される。ソフトウェアは例えば以下に記述されるような記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアはコンピュータの可読媒体からコンピュータにロードされ、コンピュータ１０１によって実行される。そのようなソフトウェアや媒体に記録されたコンピュータプログラムを持つコンピュータの可読媒体はコンピュータプログラム製品である。コンピュータでそのコンピュータプログラム製品を使用することで、ドキュメントのレイアウト編集やバリアブルデータ印刷を行える装置として、そのコンピュータは機能する。
【００２８】
コンピュータモジュール１０１にはキーボード１３２やマウス１３３のようなポインティングデバイスなどの入力装置がつながれ、ディスプレイ装置１４４や状況に応じてはローカルプリンタ１４５を含む出力装置が連結される。入力／出力インターフェース１３８はコンピュータモジュール１０１をネットワーク接続１０７から接続してシステム１００の他のコンピュータ装置につなげることができる。そのネットワーク接続１０７の典型はローカルエリアネットワーク（ＬＡＮ）、あるいはワイドエリアネットワーク（ＷＡＮ）である。
【００２９】
コンピュータモジュール１０１は、一般的には少なくとも１つのプロセッサーユニット１３５、例えば半導体のランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）から構成されるメモリユニット１３６、ビデオインタフェース１３７を含むＩＮＰＵＴ／ＯＵＴＰＵＴ（Ｉ／Ｏ）インターフェース、キーボード１３２やマウス１３３のためのＩ／Ｏインターフェース１４３を含んでいる。
【００３０】
記憶装置１３９は、一般的にはハードディスクドライブ１４０やフレキシブルディスクドライブ１４１を含んでいる。図１Ｂには示されていないが磁気テープドライブもまた使用される可能性がある。ＣＤ−ＲＯＭドライブ１４２は不揮発性のデータソースとして提供される。コンピュータモジュール１０１は、ＧＮＵ／ＬＩＮＵＸやマイクロソフト社のウィンドウズ（登録商標）のようなオペレーティングシステムに従って、あるいはコンピュータシステムの常套的なオペレーションモードによる方法によって、相互接続バス１３４を介して通信を行うコンピュータモジュール１０１に含まれる各構成要素（符号１３５〜符号１４３）を利用する。
【００３１】
図１Ｂに記述した配置のコンピュータの例としては、ＩＢＭ互換ＰＣやＳＵＮ社のＳｐａｒｃｓｔａｔｉｏｎ、あるいはそれらを含んだコンピュータシステムが考えられる。
【００３２】
図１Ａのレイアウトアプリケーションプログラム１２１は、通常は図１Ｂのハードディスクドライブ１４０に常駐し、プロセッサ１３５により実行、読み込み、コントロールされる。いくつかの事例では、アプリケーションプログラム１２１がＣＤ−ＲＯＭやフレキシブルディスク上にエンコードされており、対応するフレキシブルディスクドライブ１４２やＣＤ−ＲＯＭドライブ１４１を通じて読み込まれてユーザに提供される。あるいはもう一つの方法として、アプリケーションプログラム１２１はネットワーク接続１０７からユーザによって読み込まれてもよい。さらにソフトウェアは、磁気テープまたはＲＯＭまたは集積回路、光磁気ディスクまたは無線またはコンピュータモジュール１０１とその他のデバイス間の赤外線通信、ＰＣＭＣＩＡカードのようなコンピュータ可読カード、そしてＥメール通信やＷＥＢサイト上の記録情報を持つインターネットやイントラネットを含む、他の適当な大きさのコンピュータ可読媒体からコンピュータモジュール１０１内にロードされる可能性もある。上記の例は単に関連するコンピュータ可読メディアの一例である。他のコンピュータ可読媒体も使用される可能性はある。
【００３３】
またレイアウト編集アプリケーション１２１は、バリアブルデータ印刷（ＶＤＰ）を行うよう指示し、２つのソフトウェアコンポーネントを含んでいる。これらのうち第１のコンポーネントはレイアウトエンジン１０５であり、これは長方形のコンテナで与えられた制限やサイズによって、コンテナを構成する矩形および線の位置を計算するためのソフトウェアコンポーネントである。レイアウトエンジン１０５は各部分領域（コンテナ）のサイズと位置を決定するアプリケーションとして動作し、図示省略したプリンタドライバに描画情報を出力することで、プリンタドライバがバリアブルデータドキュメントのイメージ描画処理を行い、印刷データを生成する。
第２のコンポーネントであるユーザインターフェース１０３は、ユーザにドキュメントテンプレートを作成させ、ドキュメントテンプレート内でデータソースと関連付けるメカニズムを提供する。ユーザインターフェース１０３とレイアウトエンジン１０５はコミュニケーションチャネル１２３を介して通信する。ドキュメント生成のためのデータソースは、一般的にデータベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバ１１７上にある一般的なデータベース１１９である。ホストコンピュータ１０１はネットワーク接続１０７によってデータベースサーバ１１７と通信する。バリアブルデータ印刷アプリケーション１２１はホストコンピュータ１０１か一般的に他のコンピュータで構成されるファイルサーバ１１５に保存されるドキュメントテンプレートを生成する。またバリアブルデータ印刷アプリケーション１２１はデータとマージされたドキュメントテンプレートによって構成されたドキュメントを生成する。これらのドキュメントはホストコンピュータ１０１のローカルファイルシステムに保存されるか、ファイルサーバ１１５に保存されるか、あるいはプリンタ１１３に直接印刷される。プリントサーバ１０９は直接ネットワークにつながっていないプリンタにネットワーク機能を提供するコンピュータである。プリントサーバ１０９とプリンタ１１３は一般的な通信チャネル１１１を介して接続される。
【００３４】
図２は、図１Ａの構成から、レイアウトエンジン２２５を独立させてエンジンサーバ２２７によりレイアウトエンジンを実行させるための構成を示す。エンジンサーバ２２７は一般的なコンピュータである。ファイルサーバ１１５に保存されたドキュメントテンプレートは印刷や他の目的がある際、レイアウトエンジン２２５によってドキュメントを生成するためにデータベース１１９に保存されたデータと結合することができる。そのようなオペレーションはユーザインターフェース１０３を介して要求されるか、特定のレコードのみ印刷するように要求される。
【００３５】
＜アプリケーション構成＞
（メインウインドウ）
図３で示されるように、ユーザインターフェース１０１は、操作時にビデオディスプレイ１４４に表示されるアプリケーションウインドウ３０１によって形成されたユーザインターフェースを含んでいる。ウインドウ３０１は、非表示にすることやスクリーン上の色々な場所に移動することが可能なメニューバー３０２とツールバー３０３、そしてマウス１３３の位置・動作によって場所を移動可能なワークエリア３０６とオプションのパレット３１１とカーソル/ポインタデバイス３１３から特徴付けされる。
【００３６】
メニューバー３０２は、周知の技術として知られているように、メニューオプションの階層の下に拡張される多くのメニューアイテム３０４を持つ。
【００３７】
ツールバー３０３は、アプリケーションの特別なモードによって非表示にする又は表示することが可能な多くのツールボタンとウィジット３０５を持つ。
【００３８】
オプションのルーラ３０８はワークエリア内のポインタ、ページ、ライン、マージンガイド、レイアウト枠（コンテナ）またはオブジェクトの位置を示すために使われる。
【００３９】
パレット３１１はバリアブルデータライブラリのような追加機能にアクセスするために使われる。パレット３１１は移動、リサイズ、クローズをするためのウインドウコントロール３１２を持つ。パレット３１１はオプションで、ワークエリアの前面に表示されたり、あるいはオブジェクトの背面に隠される。パレット３１１はアプリケーションウインドウ３０１の範囲内のみに表示されることを制限される場合もあるし、あるいはアプリケーションウインドウ３０１の外側に部分的・全体を表示することを許される場合もある。
【００４０】
ツールバーエリア３０３は図４に示すように、少なくとも以下のユーザ選択可能な「ボタン」を持つ。
* 選択ツールボタン４０３：コンテナの辺を選択、移動、サイズ変更、リサイズそしてロック・ロック解除するために使われる。コンテナは、複数のコンテナの周りに選択ボックスをドラッグする、あるいは複数コンテナを選択する間にCTRLキーを押しつづけることによって、複数選択を可能にする。
* イメージコンテナツールボタン４０４：スタティック（固定）あるいはバリアブルイメージを持つコンテナを作成するために使われる。
* テキストコンテナツールボタン４０５：スタティック（固定）あるいはバリアブルテキストを持つコンテナを作成するために使われる。
* リンクツールボタン４０６：コンテナ間に関連付けを行うリンクを作成するために使われ、リンクの距離をコントロールするために使われる。
これらのボタンは、周知の技術であるように操作状況に合わせて変化するアイコンのツールチップとして実装される。
【００４１】
レイアウト編集アプリケーション１２１の図３に示したアプリケーションウインドウ３０１は、ページ内に各コンテナやリンクをレイアウトすることで、基本レイアウトを決定することができる。基本レイアウトとは、バリアブルデータプリントで基本となるレイアウトのことである。基本レイアウト内の各コンテナが固定コンテナである場合は、すべてのレコードの印刷結果のレイアウトは同じになる。また、基本レイアウト内の各コンテナが後述する可変コンテナである場合は、レコード単位に読み込まれるデータの量やサイズにより各コンテナのサイズや位置が、後述する制約の範囲内で変動することになる。よって、レイアウト編集アプリケーション１２１で作成されるドキュメントテンプレートは、あくまで基本レイアウトを決定するものであり、可変コンテナが含まれる場合は、最終的な印刷物のレイアウトは読み込まれるデータによりレイアウト調整されることになる。
【００４２】
（ドキュメントテンプレート）
ワークエリア３０６はドキュメントテンプレートのデザインを表示および編集するために使われる。これはユーザに下準備で印刷されたドキュメントの概観をデザインすること、そしてマージされたドキュメントが、バリアブルデータの量またはサイズに基づいてどのように変化するかを理解することを可能にする。
【００４３】
もし外部データソース（例えばデータベースのレコード等）がテンプレートにリンクされていたら、現在のドキュメントのプレビューができるように、バリアブルテキストとイメージがコンテナに表示される。
【００４４】
ドキュメントの構造とバリアブルデータのコンテナの描写をする視覚的な手がかりとなるオブジェクトは、カーソルをコンテナ上に移動させたときや、コンテナを選択したときにいつも表示される。
【００４５】
ワークエリア３０６はスクロールバー３０７とオプションのルーラ３０８とドキュメントテンプレート３０９により特徴付けられる。ドキュメントテンプレート３０９はページが複数あることを示すことができる。
【００４６】
与えられたドキュメントテンプレートのページサイズは、周知の技術によりユーザによって指定される。例えばメニューの「ファイル」から「ページ設定」を選択することでページサイズを設定するダイアログを表示し、そこでユーザが指定したページサイズが反映されることになる。それぞれのドキュメントでの実際のページ数はバリアブルデータによって変化する可能性がある。もし１ページ内に収めることができず、所定の用紙サイズのページに各コンテナを収めるような制約が基本レイアウトになかった場合、追加のページは自動的に作成される。所定の用紙サイズのページに各コンテナを収めるように制約（後述するアンカーアイコン等により設定可能である）が基本レイアウトに設定されている場合は、ページ内で各コンテナがお互いに押したり押されたりしながら、各コンテナサイズと位置が決定され、必要に応じて流し込まれるバリアブルデータが縮小され、レコード毎に動的にレイアウトが決定される。
それぞれのページ内の境界線は、ページ上の印刷可能なオブジェクトの最大幅を示すページマージン３１０である。ページマージン３１０は利用者が定義できる。
【００４７】
また、図４は１ページのドキュメントテンプレート３０９上に表示することが可能なオブジェクトの例である。それらは、複数のコンテナ４０７、４０８と、任意に適用できるアンカーアイコン４０９と、固定されていない辺４１０、リンク４１２そしてスライダ４１３を持つ。アンカーアイコン４０９は、コンテナの矩形の角、辺、またはコンテナの中央に設定することが可能である。アンカーアイコン４０９が設定されると、設定された個所の位置が固定となる。つまり、図４の例では、アンカーアイコン４０９は、コンテナ４０７の左上の角に設定されているため、コンテナ４０７はバリアブルデータが流し込まれ、バリアブルデータの画像サイズもしくはテキスト量が多い場合に、右方向及び下方向に拡大可能であることを示している。アンカーアイコン４０９が辺に設定されている場合は、その辺が固定となり、その他の３辺の各方向に拡大可能である。また、アンカーアイコン４０９がコンテナの中央に設定されている場合は、コンテナの中央位置が固定となり、コンテナ矩形の中央位置が変わらないように、４方向に拡大可能である。リンク４１２は詳細は後述するが、コンテナ４０７とコンテナ４０８が関連付けられていることを示しており、このリンクに設定されている長さ（範囲指定可能）を保ちつつ、コンテナ４０８が右方向に移動可能であることを示している。スライダー４１３は、設定されている辺と水平方向に移動可能であることを示している。
【００４８】
（コンテナ）
コンテナは、ドキュメントテンプレート内にバリアブルデータファイルから固定あるいは可変テキストやイメージがレコード単位に流し込まれ、描画されるスペース（これを部分領域と呼ぶ）であり、他のコンテナやオブジェクトとともにレイアウトされる。コンテナはマウス１３３を操作してポインタ３１３を使い、図３、図４等のユーザインターフェース画面で示されるように移動、サイズ調整そして再作成される。
【００４９】
より正確には、コンテナは、設定の集まり、視覚的表現そしてインタラクションと編集動作をもっている。下記はコンテナの定義の全部分である。
* コンテナは固定あるいは可変のコンテンツを持つ。可変コンテンツは、データソース（たとえばデータベースのレコード）から取得され、異なるドキュメントでは異なっていてもよい、という意味でダイナミック（動的）である。可変コンテンツとしては、アニメーション化されたもの、あるいは他の方法で時間に応じて変化するものは印刷に適合していないため含まない。固定コンテンツはひとつのテンプレートを用いて生成される全てのドキュメントで同じに表示される。けれども、可変コンテンツとリンクが設定されている場合、可変コンテンツを含むコンテナの位置やサイズの変化によって、固定コンテンツを含むコンテナはそれぞれのドキュメントで位置が異なる可能性がある。
* コンテナは、コンテンツに適用される背景色、ボーダー、フォントスタイルといったテキスト設定のような装飾機能を持っている。このような設定をコンテナ属性と呼ぶ。コンテナ属性は、各コンテナごとに設定可能であるが、あるコンテナと同じコンテナ属性であるという設定を行うことも可能である。
* コンテナはドキュメントを生成したときにデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、一般的に印刷された出力物であり可視である。可変コンテンツはデータソースからの特定のデータとして得られ、表示あるいは印刷される。コンテナに収められるコンテンツは、例えば印刷されるか、スクリーン１４４上で表示されるか、あるいはその両方で出力され得る。
* コンテナはユーザインターフェースを持つ。例えばコンテナの編集そして表示設定のためのインタラクティブなＧＵＩを持つ。インターフェースの要素は普通はスクリーン１４４上に表示される。ユーザインターフェース１０３は、背景色やフォントのようなコンテナの装飾機能のいくつかを表示する。そしてコンテナの設定の編集や表示を行わせるための機能も有する。ユーザインターフェース機能の目的の例としては、ボーダー、あるいは、コンテナのサイズや位置を対話的に変更、表示するための角アイコン、あるいはコンテナがデータソースからデータをマージされたとき、コンテナの動作を示すための上塗りした数、線、アイコン、テキストがある。
【００５０】
（コンテナ制約）
コンテナはそれぞれのドキュメントで表示または印刷されるコンテンツをどのようにコンテナに収めるか制御するための制約を持つ。これらの制約は、ユーザが一つのドキュメントテンプレートによって多数のドキュメントをコントロールする主要な手段である。制約の一例としては「このコンテナのコンテンツの高さは、最大値４インチです。」というものがある。他の制約の例としては「コンテナのコンテンツの左エッジは、それぞれのドキュメントで同じ水平位置で表示しなければならない。」というものもある。ここに記述される内容は、ＧＵＩを使ってこのような制約を表示、編集するためのいろいろな方法である。
【００５１】
イメージがページ上に定義された場所を持っているように、固定コンテンツの配置を指定するコンテンツプレイスホルダは、デジタル印刷技術でよく知られている。以下の説明において、コンテナは位置とサイズとを持ち、それらは公知の技術で知られている手法で編集され、表示することができる。
【００５２】
ユーザは、コンテナの位置やサイズ、制約等を指定することで、ドキュメントのコンテンツのサイズおよび位置を指定することができる。複数のドキュメントが一つのドキュメントテンプレートから生成されるので、コンテナの多数の可能な設定と制約を指定および表示させるためにユーザインターフェースを使わなければならない。
【００５３】
１つのコンテナの辺は、関連付けられたコンテンツがドキュメント内で表示される仮想の境界線を定義する。すなわち、コンテナの左辺は、同一のテンプレートが適用されるどのドキュメント内でも、当該コンテナに関連付けられたコンテンツが配置される左端に対応する。同様に、コンテナの高さは、同一のテンプレートを適用して生成されたドキュメント内で当該コンテナに関連づけられたコンテンツの高さの制約として理解される。本明細書においては、ユーザインターフェース１０３を参照してコンテナの辺あるいは大きさを論じるところで、この区別は明らかにされるであろう。
【００５４】
下記の検討では、コンテンツの表示を制限するために使われるいくつかの値を定義している用語「固定」は、全てのドキュメントで同じである。
* もしコンテナの幅が固定なら、関連付けられたコンテンツに割り当てられる幅は、そのコンテナを含むテンプレートを適用して生成される全てのドキュメントで、そのコンテナを含むページに関して同じ（固定値）になる。
* もしコンテナの高さが固定なら、関連付けられたコンテンツに割り当てられる高さは、そのコンテナを含むテンプレートを適用して生成される全てのドキュメントで、そのコンテナを含むページに関して同じ（固定値）になる。
* もし距離の制約が固定なら、指定された距離（固定値）は、そのコンテナを含むテンプレートを適用して生成される全てのドキュメントのための制約である。
* もしコンテナの左右辺が固定なら、そのコンテナを含むテンプレートを適用して生成される全てのドキュメントで、コンテナの辺の水平方向についての位置が、そのコンテナを含むページに関して同じであることを意味している。しかしコンテナの高さあるいは垂直方向の位置は変わる可能性がある。例えば、もしコンテナの左辺が固定なら、コンテナに関連付けられたコンテンツは、ひとつのテンプレートを適用して生成されるひとつのドキュメントでページの上に近く表示され、他のドキュメントでページの下に近く表示されることもある。しかし左辺の水平位置は全てのケースで同じである。
* もしコンテナの上下辺が固定なら、辺の垂直方向の位置が、そのコンテナを含むテンプレートを適用して生成される全てのドキュメントで、そのコンテナを含むページに関して同じである。しかしコンテナの幅あるいは水平位置は変わる可能性がある。
* コンテナの垂直軸はコンテナの右辺および左辺と平行で、その中間に位置される想像上の垂直線である。もしコンテナの垂直軸が固定なら、コンテナの左右辺の水平位置の平均は、そのコンテナを含むテンプレートを適用して生成されるすべてのドキュメントで、そのコンテナを含むページに関して同じである。この制約で、コンテナの幅は変化する可能性がある。たとえば、相異なるドキュメントで、対応するコンテナの左右辺の水平方向の位置は、垂直軸に遠いか、あるいは近いかという点で相違する可能性がある。しかし、垂直軸は、そのコンテナを含むテンプレートを適用して生成されるすべてのドキュメントで、そのコンテナを含むページに関して同じ水平位置にある。コンテナの高さと水平位置はこの制約によって影響されない。
* コンテナの水平軸はコンテナの上辺および下辺と平行で、その中間に位置される想像上の水平線である。 垂直軸と同様に、もしコンテナの水平軸が固定なら、コンテナの上辺そして下辺の垂直方向の位置を制約する。けれども高さは、この制約によって影響されない。
* もし水平軸および垂直軸がともに固定なら、コンテナの中心位置（垂直軸と水平軸との交点）が固定されていることを意味する。しかし、コンテナの幅および高さはこの制約によって影響されない。
* もしコンテナの角、コンテナの辺の中間位置、あるいはコンテナの中心位置が固定なら、そのコンテナに関連づけられるコンテンツは、そのコンテナを含むテンプレートを適用して生成されるすべてのドキュメントで、そのコンテナを含むページに関して同じ場所に表示される。例えば、もしコンテナの左上角が固定なら、配置されたコンテナの左上位置が、そのコンテナを含むテンプレートを適用して生成されるすべてのドキュメントで、そのコンテナを含むページに関して同じになることを意味している。
* 垂直辺あるいは垂直軸は、ページの左辺あるいは右辺、あるいは左ページマージン、あるいは右ページマージン、あるいは他の水平位置に関連付けされて固定になる。同様に、水平辺あるいは水平軸は、ページの上辺あるいは下辺あるいはマージン、あるいは他の垂直位置に関連付けされて固定になる。
【００５５】
「固定」の反対は、辺、軸、角、中間位置、あるいはドキュメント制約がドキュメント間（レコード間）で変化する可能性があることを意味する「可変」である。例えば、ページ内では、バリアブルデータのサイズや量により、動的にレイアウトが変更されることを期待するが、特定のコンテナについては、大きさや位置を固定にしたり、また、ページの角のコンテナの四隅は固定にしたいということを所望する場合がある。そのため、本レイアウト編集アプリケーション１２１では、各コンテナ（部分領域）について、辺、軸、角、中間位置等を固定にするか、可変にするかを適宜設定できるようにした。これにより、ユーザはドキュメントテンプレートの基本レイアウトを決定する場合に、ユーザが所望とするように基本レイアウトを作成することができる。
【００５６】
＜レイアウトモード（コンテナ表示および編集）＞
バリアブル印刷されるドキュメントの作成手順は、テンプレートを作成するテンプレート作成処理（レイアウトモード）と、作成されたテンプレートにコンテンツを挿入してドキュメントを作成するドキュメント作成処理（ドキュメントをプレビュー表示する場合を特にプレビューモードと呼ぶ。）という２つのフェーズに分けることができる。まず、レイアウトモードについて説明する。
【００５７】
（新規コンテナの作成方法）
コンテナには、テキストコンテナとイメージコンテナの２種類がある。テキストコンテナはテキストおよび埋め込みイメージを収める。イメージコンテナはイメージだけを収める。
【００５８】
図４に示すように、新規テキストコンテナとイメージコンテナは、テキストコンテナツール４０４、あるいはイメージコンテナツール４０５をマウス１３３でクリックし、テンプレート３０９に四角形をドラッグすることによって、ドキュメントテンプレート３０９上に作成される。
【００５９】
あるいは、コンテナは、適切なツール４０４、４０５をアクティブにした後に、ドキュメントテンプレート３０９上でクリックすることによって簡単に作成できる。新たなコンテナが作成された場合、デフォルトサイズのコンテナが挿入されるか、または新規コンテナの寸法を入れるために、ダイアログボックスあるいは他のプロンプトが表示される。また、コンテナを、前もって定義あるいは計算されたスキーマによって自動的に作成および配置することもできる。ここで生成されたコンテナをマウス等の入力手段により選択し、右クリックでプロパティを指示する等の操作を行うことにより、コンテナのプロパティダイアログが表示され、コンテナの制約を設定することができる。コンテナのプロパティダイアログＵＩ（部分領域設定手段に相当する）では、上述した各種の制約を設定することができる。また、コンテナのプロパティダイアログでは、コンテナのサイズ（幅、高さ）や位置を決定することができ、可変サイズにする場合は、コンテナの基本パターン（基本サイズと基準位置）を設定し、更に、最大コンテナサイズ（幅、高さ）と最小コンテナサイズ（幅、高さ）を設定することが可能となっている。
【００６０】
（コンテナの表示方法）
ドキュメントテンプレート内に作成されたコンテナの辺の状態は、図４に示すようにユーザインターフェース上にグラフィカルに表示されるのが好ましい。共通する表現で辺の状態を示すことで状態に対応する画像オブジェクトの種類をより少なくできる。
【００６１】
図５（Ａ）−図５（Ｄ）はコンテナの表示例を示す図である。アプリケーション１２１は、辺の状態を表現するために、実線５０３あるいは点線５０４で辺を描写する。コンテナは、アンカー（辺の近くに描画されたオブジェクト５０６、５０７、５０９によって示されるような線、形状、アイコン）、ハンドル（移動、修正するために、辺や形の近くに描画されたコントロール点）５０２、スライダ（辺の両サイドに描画された短い並行線、図４の４１３）、拡縮アイコン５０５、そして色を特徴として持っている。
【００６２】
図５（Ａ）−（Ｄ）のコンテナ表示方法のルールは、つぎの通りである。
１．それぞれの辺が固定されているならば、その辺を実線で描画する。
２．もし幅が固定なら、左と右の辺を実線５０３で描画する。
３．もし高さが固定なら、上と下の辺を実線５０３で描画する。
４．軸は描画しない。
５．まだ描画されていない辺は、その辺の近くに拡縮アイコン５０５が描画され、点線５０４で描画される。
６．垂直辺あるいは軸と水平辺あるいは軸との交点には、交差する辺または軸がともに固定なら、アンカーが描画される。
７．固定辺のどこにもアンカーが描画されていなければ、その辺の中央にスライダが描画される。
８．垂直辺あるいは軸と水平辺あるいは軸との交点には、アンカーもスライダも描画されていなければ、ハンドルが描画される。
【００６３】
可変の辺は、点線で描画される。ルール６、７、８に従って描画される固定点にはアンカーが表示され、固定された辺にはスライダが表示され、他の辺にはハンドルが表示される。
【００６４】
上記のルールは、ユーザにより後で設定された制約が優先される。つまり、後で別の制約が設定された場合、上記のルールが描画されるべき辺に影響すれば、実線や点線の描画内容が変更されることになる。
【００６５】
可変の辺が描画される場所はコンテナのコンテンツに依存する。後で説明するように、ドキュメントテンプレートにコンテンツがマージされて、ユーザインターフェース上にドキュメントを表示する「動的な校正処理」が行われる。
【００６６】
これらのコンテンツ表現は、コンテナの辺の状態を表示するグラフィカルな手段を提供する。その表現の解釈は下記のとおりである。
* 図４の辺４１０のように、点線は、コンテナのコンテンツに応じたドキュメント内の辺の位置を意味する。
* 実線は制限された辺を意味する。なぜなら、実線で表示された辺は固定されているか（辺４１４）、あるいはコンテナの幅または高さが固定されている（コンテナ４０８では両方が固定されている）ためである。
* アンカーは、辺または軸の交点が固定されていることを意味する。それゆえ、アンカー点は、そのアンカー点を含むドキュメントテンプレートを適用したすべてのドキュメントにおいて、同一の水平、垂直位置に現れる。当然アンカーは固定される。図４のアイコン４０９は、交差する辺４１４が固定されていることを意図しているアンカーアイコンの例である。
* スライダは、関連付けられた辺がその辺の垂直方向に固定されていることを意味する、しかしコンテナは、辺に沿って「スライドの長さ」だけスライドされた位置に移動できる。例えば、図４で、スライダ４１３の操作により、コンテナ４０８のコンテンツはドキュメント内で左あるいは右に移動されて表示されることもある。
【００６７】
これらのアイコンや辺のいくつかあるいは全ては、どのツール、どのコンテナを選択したりハイライトあるいはアクティブにするかによって、描画されたりされなかったりする。一般的に、コンテナの辺およびアイコンはドキュメントテンプレートをデザインするために表示されるものであって、作成されたドキュメントテンプレートを適用した印刷物には描画されない。
【００６８】
コンテナの幅および高さの基準値、最小値および最大値の基本パターンの設定は、副次的なダイアログウインドウに表示される。
【００６９】
図５（Ａ）で、コンテナ５０１は幅および高さ両方が固定されていない。固定された辺５０３は実線で表現される。可変の辺５０４は点線で表現される。拡縮アイコン５０５は、隣接する辺５０４が可変であることを示すインジケータである。
【００７０】
図５（Ｂ）で、コンテナ５０１は幅および高さ両方が可変である。アンカーアイコン５０６は、交差している２つの辺５０３が固定されていることを示している。
【００７１】
図５（Ｃ）で、コンテナ５０１は、アンカーアイコン５０７で示される点を中心にして均等に拡大あるいは縮小できる状態で、幅および高さ両方が可変である。
【００７２】
図５（Ｄ）で、コンテナ５０１は、上辺５０８が固定されていることを除けば、幅および高さ両方が可変である。上辺５０８の中心に示されるアンカーアイコン５０９は、その辺５０８が固定されており、コンテナの左辺および右辺が、アイコン５０９を通り垂直に描画される中心軸（垂直軸）の周りで、移動し得ることを示す。
【００７３】
＜ドキュメントテンプレートのデータの例＞
図３３は、ドキュメントテンプレートのデータ（テンプレートデータと呼ぶ。）の一例を示す。図３３において、テンプレートデータ３３０１は、メモリ１３６あるいはハードディスク１４０に格納されている。テンプレートデータには、以下の要素が含まれる。
（１）全体サイズ３３０２：テンプレート全体のページのサイズを示す。サイズは、たとえば、縦および横の長さ、または定型用紙サイズなどで示される。
（２）コンテナ情報３３０３：テンプレートに配置されるコンテナ毎に、そのコンテナを特定するための識別情報やコンテナの基準の位置（位置情報）、辺の長さ（サイズ情報）、コンテナを構成する辺や点の属性（属性情報）、コンテナに関連づけられるコンテンツの情報等を示す。位置情報およびサイズ情報は、テンプレート作成時に定義されたものであり、位置情報は、コンテナの作成時にユーザにより設定されたコンテナの基準の位置になる。位置が可変のコンテナであれば、コンテナに流し込まれるコンテンツのサイズ（画像サイズ、テキスト量）に応じて大きさが変更され、各コンテナの大きさにより動的に位置が変更されることになる。アンカー等により位置が固定されているコンテナであれば、固定された位置を示す。このような位置情報は、少なくともコンテナの対角点の位置を特定できる情報を含む。もちろん、全点についてテンプレート上における位置を持ってもよいし、ひとつの点についてはテンプレート上における位置の情報を持ち、他の点については相対的な位置の情報を持つようにしてもよい。すなわち、コンテナの一つの点とコンテナのサイズによって定義することもできる。また、固定されている点についてはテンプレート上における位置で定義し、可変の点については相対的な位置で定義しても良い。
【００７４】
属性情報は、図４および図５を参照して説明した、コンテナの辺や辺、軸またはそれらの交点等の属性を示す。ひとつのコンテナは、たとえば位置とサイズとにより、上辺、下辺、左辺、右辺、水平軸、垂直軸、各角点、中心点、幅、高さが定まる。それら各要素について、可変であるか、固定されているかが属性情報により定義される。図４のユーザインターフェースによりドキュメントテンプレートを作成した場合、コンテナの辺や点や軸を選択した状態で、パレット３１１内に表示されるメニュー「固定する」「可変とする」などから、オペレータが所望の項目を選択することで、選択された点や辺に対応して、コンテナ情報３３０３に「固定」「可変」いずれかの属性が書き込まれる。コンテナ作成直後の既定値はたとえばすべて「可変」としておく。なおこの例では、ひとつの辺や軸について「固定」であるとは、辺や軸の長さや長手方向の位置ではなく、長手方向に直交する方向についての位置が固定されていることを意味している。また、点や辺の属性を設定することで、自動的にその他の点や辺の属性が定まる場合には、その属性も書き込む。たとえば角点を「固定」と指定した場合、それを挟む辺も「固定」とされる。これは逆も同様である。またたとえば、中心点の位置を「固定」と指定すると、中心点の属性に「固定」と書き込まれると共に、水平軸及び垂直軸の属性も「固定」と書き込まれる。この場合、幅や高さは可変のままであれば、幅および高さの属性は「可変」のまま維持される。
【００７５】
関連づけられるコンテンツに関する情報（コンテンツ関連情報）には、たとえば、それがテキストコンテナであるかイメージコンテナであるかの種別を示す情報や、そのコンテナに挿入されるデータソースの識別子、たとえばデータベース名、レコード名、フィールド名等の一部又は全部、コンテンツを抽出するための条件式などの関連付け情報が含まれる。また、テキストコンテナの場合には、フォントに関する情報、たとえばフォント種類やサイズ、色、斜体や太字、下線等の文字修飾情報等もコンテンツ関連情報に含まれる。
【００７６】
コンテナ情報３３０３は、ドキュメントテンプレートに設けられたコンテナの数だけ保持される。
（３）リンク情報３３０４：リンクとはコンテナ間の関連付けであり、特にリンクで結ばれた２つのコンテナ間の距離を一定（固定リンク）や可変範囲（可変リンク）とする旨の情報である。リンク情報としては、たとえば、水平方向及び垂直方向それぞれについて、２つのコンテナの識別子、およびそれらコンテナの対向する辺の間にリンクが設定されたことを示す情報や、リンクに沿った方向についてのコンテナ間の距離などを含む。リンク情報は定義されたリンク毎に保持される。リンク情報の形態としては、水平方向及び垂直方向それぞれについて、各コンテナの辺の位置を保持し、その辺の間にリンクが設定された旨を示す情報を保持してもよい。
（４）固定情報３３０５：可変部分以外の固定部分を定義するための情報が含まれる。たとえば、当該テンプレートが適用されて生成される全ドキュメント（全レコード）に共通の文や画像等が定義できる。文や画像については、そのデータそのものを含まずに、位置情報を定義するだけでも良い。もちろん、テンプレート上において配置される位置を定義するための情報も含む。
【００７７】
図３４には、マルチレコード機能のために用いられるテンプレートデータの一例を示す。図３４では、ドキュメントテンプレート中にフローエリアという、他のテンプレートをサブテンプレートして流し込める領域が定義される。このサブテンプレートを流し込む領域をフローエリアと呼び、１つのフローエリアには、マルチレコードに対応した数のサブテンプレートが流し込まれることになる。図３４においては、テンプレートデータには、フローエリア情報３４０１が含まれる。フローエリア情報は、テンプレートに含まれるフローエリアの数だけテンプレートデータに含まれている。フローエリア情報３４０１には、以下の要素が含まれる。
（５）全体の位置やサイズ、フロータイプ等を示すフローエリアの属性情報３４０２：位置やサイズは図３３で説明した通りである。フロータイプは、フローエリアにサブテンプレートを流し込むパターンを定義する符号である。詳細は後述するが、フローエリアに流し込むサブテンプレートの数はマルチレコードのキーカラム（後述する）により決定され、可変であるため、フローエリアに流し込むサブテンプレート数により、フローエリア内のサブテンプレートのレイアウトを定義する情報がフロータイプである。
（６）サブテンプレート情報３４０３：サブテンプレート情報３４０３には、サブテンプレートに配置されるコンテンツと、そのサブテンプレートにしたがってレイアウトされたコンテンツ（これを本明細書ではレイアウト済みコンテンツと呼ぶことにする。）が流し込まれるフローエリアとの対応付けを示す配置情報が含まれる。サブテンプレート情報３４０３は、たとえば、フローエリアに挿入されるテンプレートを識別するための情報であり、たとえばテンプレートデータのファイル（テンプレートファイル）の名称などを含む。また、レイアウト済みコンテンツを配置するための配置条件や、どのような順序でレイアウト済みコンテンツを挿入するかを指定するフロータイプも含まれていてもよい。配置条件としては、サブテンプレートによるレイアウト対象となるデータベースの検索条件（検索式）などが保持される。また、フロータイプとしては、Ｚ型、Ｎ型、Ｖ型など、予め用意した選択肢の内から指定させ、指定されたフロータイプを示す識別子が保持される。あるいは、データベースのレコードに配置情報フィールドを設け、その値と一致する配置条件の値に対応するフローエリアに、そのレイアウト済みコンテンツを挿入するなどしても良い。
（７）マルチレコード情報３４０４：フローエリアに関連づけられるデータベース名および各レコードにおけるフィールド名等の識別子が含まれる。指定されたフィールド名について同一の値を有するレコードが指定されたデータベースからフェッチ（読み込まれ）されて、原則としてひとつのフローエリアにレイアウトされる。原則として、という制限があるのは、対象となるレコードがフローエリアのサイズに比して相当多い場合もあり得るため、そのような場合には別のドキュメントを生成するなど例外的な処理を施す必要があるためである。
【００７８】
＜リンクの設定方法＞
図６はリンクの設定方法を示したフロー図である。また図７（Ａ）−（Ｃ）は、ＵＩの例を示している。それらを用いてコンテナにリンクを設定する方法について説明をする。
【００７９】
まず、リンクを設定するためには、リンクを設定するためのコンテナ（最低２つ）を作成する（ステップ０６０１）。次に、図４に示すリンクツールボタン４０６を選択した状態にする（ステップ０６０２）。図７（Ａ）−（Ｃ）は、２つのコンテナを作成し、リンクツールが選択されていた状態から、リンクを設定する動作を行った際のユーザインターフェースの例を示している。図７（Ａ）−（Ｃ）を順に説明していく。
【００８０】
図７（Ａ）の辺０７０１、０７０２は、前述した図４の辺４０７、４０８と同じであり、固定されている辺である。また、アンカー０７０３と０７０４は、アンカー４０９と同じものである。まず、リンクを設定する一方のコンテナをクリックして選択する（ステップ０６０３）。次に図７（Ｂ）で示されるように、他方のコンテナまでマウスポインタを移動してクリックする（ステップ０６０４）。図７（Ｂ）の線０７０６は、図７（Ａ）で最初にクリックをした位置と移動後のマウスポインタの位置とを結んだ線を示しており、どの位置にリンクが設定されるのかをユーザに示すＵＩである。ステップ０６０４が終わった後、コンテナは図７（Ｃ）の状態になり、設定した場所にリンク０７０７が表示される（ステップ０６０５）。また、リンクが設定されたことにより、コンテナを示すオブジェクトも自動的に変更される（ステップ０６０６）。辺０７０８は、点線で示されている辺であり、可変の辺を示している。図７（Ｃ）のようにコンテナの辺の状態が変化したのは、リンクを設定したことにより、コンテナの辺を可変にする必要があるためであり、リンクを設定したにもかかわらず、全ての辺が固定という矛盾を引き起こすことを防ぐために、自動的に行われる処理である。また、拡縮アイコン０７０９は図５のアイコン５０５と同じで、リンクを設定したことにより、コンテナが変化できる方向をユーザに視覚的に示したオブジェクトである。図７（Ｃ）の例では、左のコンテナの右辺０７０８と右のコンテナの左辺０７１０が可変に変化したが、これは一例であり、右コンテナが、図４に示すスライダ４１３を持つ設定に変化してもかまわない。
【００８１】
この処理を図３３のデータ処理の観点から説明すると以下のようになる。たとえば、ステップ０６０１では、コンテナを作成することにより、コンテナ情報３３０３が定義される。そして、ステップ０６０６において、レイアウト編集アプリケーション１２１は、ステップ０６０３とステップ０６０４で選択された２つのコンテナ間にリンクが設定された旨を、リンク情報として記憶する。そしてステップ０６０６において、リンクが設定された２つのコンテナの対向する辺の属性を必要に応じて変更する。たとえば、対向する辺の少なくとも一方が可変であれば、辺の属性を変更する必要はない。しかし、双方が固定であれば、リンクを設定する意義が失われるために、少なくとも一方を可変とする。図７の例では、両方を可変に変更している。もちろん、辺の属性が変更された場合には、レイアウト編集アプリケーション１２１は、変更された属性についてコンテナ情報３３０３に含まれる属性が変更された辺についてその属性情報を書き換える。
【００８２】
なお、上記記載では「対向する」との表現を用いているが、線どうしが見かけ上対向する場合のほか、線自体は対向していなくとも（すなわち２つの線の長手方向の投影が重複しなくとも）、線の延長線が対向する関係にあれば、その延長線の間でリンクを設定することができる。本明細書ではこのように延長線が対向する場合も含めて、リンクで関連づけられたコンテナに関しては、辺が「対向する」と表現することにする。すなわち、たとえばテンプレートの対角に沿って配置された小コンテナ間にもリンクを設定できる。
【００８３】
以上のように、リンクで関連づけられたコンテナの対向する辺の一方が可変で他方が固定であれば、コンテンツサイズに応じて可変の辺は移動する可能性がある。そして、その可変の辺の移動量に応じて、固定辺の側のコンテナは、コンテナ自体が平行移動する（アンカーがない場合）。リンクで定義されたコンテナ間の距離（リンクに沿った方向についての距離）は維持される。双方の辺が可変であれば、コンテンツのサイズに応じて量コンテナのサイズが可変となるが、コンテナ間の距離はこの場合も維持される。
【００８４】
＜プレビューモード（レイアウト計算）＞
図８はレイアウト計算のフローを示している。レイアウト計算は、ドキュメントテンプレートのコンテナに実データが挿入された場合に、コンテンツのデータサイズ等に応じてコンテナサイズやコンテナ配置を再計算する処理である。図８では、プレビューモードが指定された場合を例としているために、テンプレートにコンテンツを挿入して生成されたドキュメントは、ディスプレイ１４４に表示される。しかし、印刷モードが指定された場合には、プレビュー表示に変えて、ドキュメントは印刷出力される。
【００８５】
図８において、まずプレビューモードを選択する（ステップ０８０１）。本実施形態の自動レイアウトシステムによる動作モードには、コンテナを作成してそのコンテナ間に関連付けを行い、レイアウトを定義したドキュメントテンプレートを作成するレイアウトモードと、作成したレイアウト（テンプレート）にレコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードとが含まれる。
【００８６】
このプレビューモードにおいて、実際のレコードが挿入されてレイアウトが計算される。プレビューモードは表示上でのレイアウト計算である。実際に印刷する場合においてもレコードを挿入してレイアウトを計算するが、その際の計算方法もプレビューモードと同じである。
【００８７】
プレビューモードになったら、プレビューするレコードを選択する（ステップ０８０２）。レコードの選択はオペレータに指定されたレコードを選択するものとしても良いし、指定されたデータベースから順次レコードを選択しても良い。レコードの選択が行われると、そのレコードをテンプレートに従ってレイアウトするために計算を行う（ステップ０８０３）。ステップ０８０３で計算結果に従ってレコードをレイアウトし、それを表示する（０８０４）。他のレコードについてもプレビューを行うかどうかを判断する（ステップ０８０５）。この判断はオペレータの指示に基づいても良いし、予め指定された範囲についてのプレビューが終了したか判断するものでもよい。ステップ０８０５で、他のレコードについてプレビューを行う必要がないと判断した場合は、プレビューモードを終了する（ステップ０８０７）。
【００８８】
一方、他のレコードについてプレビューを行うのであれば、他のレコードを選択して再度レイアウト計算を行い、レコードをレイアウトしてそのプレビューを行う（ステップ０８０６）。プレビューモードでなく印刷時においては、印刷対象のレコード全てについて順にレイアウトの計算を行う。したがって、ステップ０８０１、０８０７は存在しない。またステップ０８０５では、印刷対象の全てのレコードについて印刷が終了したか否かが判断される。
【００８９】
（レイアウト計算手順）
図９は、図８のステップ０８０３におけるレイアウト計算の詳細を示したフロー図である。また、図１０はそのときのＵＩ表示例を示した図である。なお図９に限らず、本実施形態で説明するフローチャートは、図１Ａ、図１Ｂあるいは図２のコンピュータにより実行される。
【００９０】
まず、レイアウトを計算するコンテナの集合を求める（ステップ０９０１）。レイアウト計算は、リンクにより関連付けられたコンテナを一つの集合として行われる。例えば図１１を参照すると、ページ上に４つのコンテナがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナＡとコンテナＢ、そしてコンテナＣとコンテナＤがリンクによって関連付けされている。したがって、コンテナＡおよびコンテナＢが集合１、コンテナＣおよびコンテナＤが集合２となる。すなわち、図３３に示すテンプレートデータのリンク情報３３０４を参照し、リンクにより関連づけられたコンテナ群を、ひとつのコンテナ集合と判定できる。図１１では、前述した通り、アンカー１１０１、固定された辺１１０２、コントローラ１１０３、可変の辺の変化方向を示している矢印１１０４、可変の辺１１０５、リンク１１０６、そしてスライダ１１０７が示されている。
【００９１】
次に、ステップ０９０１で求めたコンテナの集合から、レイアウトを計算するために一つコンテナの集合を選択する（ステップ０９０２）。これは、たとえばテンプレートデータのリンク情報中における出現順などに従えばよい。そして、選択したコンテナの集合について、レイアウトの計算を行う。ここでは、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う（ステップ０９０３）。
【００９２】
レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとそのコンテンツが挿入されるコンテナサイズとができるだけ同じサイズとなるように行われる。コンテナサイズが固定されている場合には、コンテンツの方が変倍されてコンテナに収められるか、あるいはコンテンツの一部がコンテナに収められる。
【００９３】
着目コンテナ集合の一方のコンテナが固定サイズ、他方が可変サイズの場合には、固定サイズコンテナについては上記要領で行われる。可変サイズコンテナについては、固定サイズコンテナが移動可能な範囲で可変サイズコンテナのサイズを変えて、コンテンツを挿入する。もし最大までサイズを拡張してもコンテンツが納まらない場合には、コンテンツを変倍したり、あるいはその一部をコンテナに挿入する。
【００９４】
着目コンテナ集合の両方のコンテナが可変サイズの場合には、両方のコンテナにできるだけ均等にコンテンツが収められるようにレイアウトを決定する。たとえば、図７（Ｃ）のように、リンクにより関連づけられた２つのコンテナは、その外側の点が固定され、対向する辺のみが可変であるとする。この場合には、各コンテンツのサイズに応じてコンテナサイズを仮に決定する。そして、コンテナ間のリンクに沿った方向の距離の中間点から等距離となるよう、各コンテナの対向する辺の位置を決定する。もちろん、辺の間隔はリンク情報で定義された距離である。このようにして、各コンテナのサイズを決定する。もしもコンテンツがコンテナに収まらない場合には、コンテンツを変倍したり、コンテンツの一部をクリップしてコンテナに挿入することもできる。
【００９５】
コンテナ集合に３つ以上のコンテナが含まれる場合にも、各コンテンツのサイズに応じたコンテナサイズ（すなわち各可変の辺の長さ）を計算し、その中点からリンク情報で定義される距離の位置を、辺の位置として決定する。リンクされた辺が固定辺であるコンテナについては、その位置を、関連づけられたコンテナの辺の移動に応じて移動させる。
【００９６】
以上のようにして、リンクで関連づけられたコンテナを１組として、サイズが可変のコンテナについてはそのサイズを、位置が可変のコンテナについてはその位置を決定する。
【００９７】
上記要領でレイアウの最適化計算を行い、その計算結果がルールに違反していた場合は、再度ルールを違反しないように計算をする（ステップ０９０４）。ここでルールとは、レイアウト作成時にユーザによって設定される制限であり、コンテナのサイズと位置、リンクの長さなどである。制限は、テンプレートデータ内のコンテナ情報に含まれる辺や点等の属性情報とリンク情報とにより定義されている。特、属性情報において「固定」の値を有する項目とリンク情報がレイアウト上の制限となる。そこで、ステップ０９０３のレイアウト計算を終了した後、「固定」という属性を持つ計算後の各コンテナの辺や点の位置、サイズ等の項目について、テンプレートデータ中のコンテナ情報と比較し、値が相違している項目があれば制約違反と判定される。また、リンクについても、リンク情報に含まれるリンク長さ（コンテナ間の距離）と、ステップ０９０３のレイアウト計算終了後のリンクが設定されたコンテナ間の距離とが相違していれば、制約違反と判定される。
【００９８】
ルールに違反しないようにレイアウトが計算されたら、そのコンテナ集合のレイアウトは完成される。そして、ステップ０９０２〜ステップ０９０４のステップをページ上のすべてのコンテナの集合について施し、ページ全体のレイアウトを計算する（ステップ０９０５）。
【００９９】
（レイアウトの例）
図１０（Ａ）〜（Ｃ）はレイアウト計算時のＵＩ表示例である。もちろん印刷例も同様である。図１０（Ａ）は、テンプレートデータにおいて初期的に定義されたコンテナ集合を示す。図１０において、テンプレートにはアンカー１００１と１００２、固定された辺１００３と１００４、可変の辺１００５、可変の辺の変化方向を示している矢印１００６、リンク１００８がそれぞれ含まれている。この状態において、レコードを選択し、そのレコードから異なるサイズのコンテンツを各コンテナに挿入する。図１０（Ｂ）は図１０（Ａ）の状態に新しいコンテンツのサイズを重ねて示している。２点鎖線の矩形１００９はそれぞれのコンテナに挿入されるコンテンツのサイズを表している。そして、レイアウト計算が行われる。図１０（Ｃ）はレイアウト計算された結果を示している。計算後の各コンテナのサイズは、各コンテナに挿入されるコンテンツのサイズとの差が等しくなるように計算され、可変の辺の位置が決定される。すなわち、充填されるコンテンツが配置される枠が決定される。そしてこの配置は前述したルールを違反しないように計算される。図１０（Ｃ）で示されるように、図１０（Ｂ）で示した、各コンテナに関して、挿入されるコンテンツサイズ１００９と計算後のコンテンツサイズ１０１０（すなわち計算後のコンテナサイズ）との差は等しい。
【０１００】
＜マルチレコード（マルチデータ）機能＞
マルチレコードについて概要を説明する。通常のドキュメントテンプレートでは、１レコードが１ドキュメントに対応しているが、サブテンプレートに対応するマルチレコードは、基準となる項目が変化するブレイクが発生するまでのレコードが流し込まれるものであるため、１ドキュメント内に複数のレコードが入ることになる。よって、通常のドキュメントテンプレートに対応するバリアブルデータのデータベースと、サブテンプレートに対応するバリアブルデータのマルチレコードのデータベースとは異なるデータベースとすることが望ましい。
図１２は、マルチレコードとそのレイアウト方法の概要を示した図である。データベース１２０４は、ドキュメント１２０１、ページ１２０２、サブテンプレート１２０３、データベース１２０４を含む。図１２では、データベース１２０４には、レコード１〜７が含まれている。１レコードを１ドキュメントにレイアウトする通常のバリアブルプリントでは、７つレコードがあるので、この場合７つのドキュメントが作成される。
【０１０１】
しかし、多レコードを１ドキュメントにレイアウトするマルチレコード機能をサポートする本発明のバリアブルプリントでは、次のような処理を行う。まずマルチレコードを指定する基準の項目であるカラム（フィールド）をユーザが指定しておく。この指定されるカラムをキーカラムと呼ぶ。なおキーカラムをマルチデータ条件と呼ぶ場合もある。この例ではフィールド名：Ｎａｍｅがキーカラムとして指定されたものとする。すると、その指定されたフィールドの値が同じレコード群は、１ドキュメントにレイアウトされるレコード群となる。この例では、レコード１〜４はキーカラムであるＮａｍｅフィールドの値が同一の「Ｔｏｍ」であるため、ひとつのドキュメントにレイアウトされる。レコード５〜７は、Ｎａｍｅフィールドの値が同一の「Ｎａｎｃｙ」であるため、ブレイクが発生し、もうひとつのドキュメントにレイアウトされる（図１２参照）。もちろん、マルチレコードが指定されたフィールドの値が異なるレコードは、別々のドキュメントにレイアウトされる。図１２のドキュメントのページ１２０２が、それぞれ異なるレイアウトとして作成されているのは、ドキュメント毎にマルチレコードの数が異なるためである。マルチレコードの数により、どのようにサブテンプレートがレイアウトされるかは、後述するように、フローエリアの属性情報３４０２のフロータイプのフラグにより、４つのサブテンプレートの場合は、図１２の上図のようにレイアウトされ、３つのサブテンプレートの場合は、図１２の下図のようにレイアウトされることになる。
【０１０２】
＜マルチレコードのレイアウト処理＞
図１３および図１４は、本発明に係るマルチレコード処理におけるユーザインターフェースと処理手順を示している。
【０１０３】
図１４のフローの各ステップを図１３のＵＩ図と合わせて説明していく。まず、図１３のアイコン１３０３が押下されることによってエリア作成モードへと遷移する（ステップ１４０１）。そして、ページマージンのエリア１３０２内において、マウスのドラッグにより矩形が描画される（ステップ１４０２）。描画された矩形は、エリア作成モードにおいてはフローエリアであり、そのサイズや位置情報は、図３４に示すテンプレートデータのフローエリアの属性情報３４０２として記憶される（ステップ１４０３）。図１３ではフローエリア１３０６が描画されている。このテンプレート上にはこのほかテキストコンテナ１３０４やイメージコンテナ１３０５も含まれる。ユーザインターフェース上は、フローエリア１３０６の表現とコンテナの表現とを異ならせることにより、ユーザに視覚的に認識しやすいようにする。テキストコンテナ１３０４及びイメージコンテナ１３５０は、データベースからバリアブルデータが読み込まれ、レコード毎に異なるドキュメントとして作成される。フローエリア１３３０６は、後述するように、マルチレコードのデータベースから指定されたキーカラムに応じてブレイクが発生するまでデータが読み込まれ、フロータイプによりレイアウトが決定される。
【０１０４】
次に、作成されたフローエリア１３０６について、バリアブルデータを格納したマルチレコードのデータベース名や、キーカラムとして指定されたフィールド名称等の識別子をオペレータに入力させる。入力された識別子をキーカラムとして当該フローエリアに関連づけて、たとえば図３４のマルチレコード情報３４０４として格納する（ステップ１４０４）。
【０１０５】
次に、レイアウト編集アプリケーション１２１は、フローエリア１３０６に各種設定を施すかどうかを、オペレータの操作に応じて判断する（ステップ１４０５）。各種設定操作はプロパティの設定により行われるために、その操作、たとえばフローエリア１３０６上でマウスポインタをクリックすることなどのプロパティ設定操作が行われたのであれば、ユーザインタフェースモジュール１０３は、プロパティダイアログを表示する（ステップ１４０６）。そして、表示されたプロパティダイアログを介して入力される設定を保存する（ステップ１４０７）。設定方法については、図１５、図１６を参照して後で詳細に記述する。
【０１０６】
ひとつのフローエリアの作成が終了したなら、レイアウト編集アプリケーション１２１は、オペレータの入力に基づいてさらにフローエリアを作成する指示がされているか判定し（ステップ１４０８）、さらに作成する指示がされていればステップ１４０１へ進み新たなフローエリアを作成する。またプロパティも設定する。
【０１０７】
またステップ１４０９において、レイアウトをプレビューする旨の指示が入力されていると判定されれば、プレビューモードへ遷移する。そして、レイアウト編集アプリケーション１２１は、レイアウト計算を行う（ステップ１４１０）。このレイアウト計算は図９で示したフローと同じ手順で実行される。すなわち、適当なレコードを選択して作成されたテンプレートに適用し、その結果を表示する。
【０１０８】
次に、レイアウト編集アプリケーション１２１は、設定されているフローエリアが１つなのか、複数なのかを確認する（ステップ１４１１）。フローエリアが１つであれば、レイアウト編集アプリケーション１２１は、１つの場合のレイアウト計算を行う（ステップ１４１２）。この処理については、図１９、図１８を参照して後で詳細に記述する。複数なら複数の場合のレイアウト計算を行う（ステップ１４１３）。この処理については、図２２Ａ，２２Ｂ、図２３、図１８を参照して後で詳細に記述する。最後にレイアウト結果を表示する（ステップ１４１４）。
【０１０９】
＜プロパティ設定処理＞
図１５は、図１４のステップ１４０７におけるフローエリアの各種設定（プロパティ設定）を行う処理フローを、図１６はその設定ダイアログの例を示している。
【０１１０】
図１５のプロパティ設定方法の各ステップを、図１６を用いながら説明する。また、文中のサブテンプレートについては後述する。まず、図１６のテキストボックス１６０２に、フローエリアで使用するサブテンプレートが、ユーザに指定されることにより表示される（ステップ１５０１）。この指定方法は、テキストボックス内に直接サブテンプレート名を指定するか、またはファイルオープンアイコン１６０３を使って、サブテンプレート名を指定しても良い。図１６の１６０１はプロパティダイアログ、１６１６はマウスポインタを示している。
【０１１１】
次に、レイアウト編集アプリケーション１２１は、条件式が設定されているかを判断して（ステップ１５０２）、ユーザによって入力された条件式によって、フローエリアにレイアウトされるデータを、接続しているデータベースから抽出する（ステップ１５０３）。領域１６０４は条件式１６０５が入力される領域を示している。リストボックス１６０６には接続しているデータファイルのフィールド名が入力される。リストボックス１６０７には条件判定を計算する演算子が入力される。リストボックス１６０８には条件が入力される。リストボックス１６０９は条件式間を結ぶ演算子が入力される。リストボックス１６０６〜１６０９には、直接入力だけではなく、リストから選択することも可能である。図１６の例では、ＰｒｏｄｕｃｔＩｎｆｏ．ｓｔｐというデータベースについて、ＰｒｏｄｕｃｔＮａｍｅフィールドの値が「Ｃａｍｅｒａ」であり、かつＣｏｓｔフィールドの値が５００００未満という条件が設定されている。条件が設定されるとデータがデータベースから抽出され、データが抽出されるとヒット数表示欄１６１０に抽出された数が表示される。この条件を抽出条件と呼ぶこともある。
【０１１２】
次に、レイアウト編集アプリケーション１２１は、サブテンプレートをエリア内にフローさせるフロータイプの指定が入力されたが判断し（ステップ１５０４）、指定されていれば指定されたフロータイプを図３４の属性情報３４０２の一部として記憶する。例示欄１６１１には、レイアウトのパターン（フロータイプ）が表示されており、ユーザはその中から所望のパターンを選択することでフロータイプを指定可能である。矩形１６１２は、現在指定されているレイアウトパターンを示す。図１６ではＺ型が指定されている。さらに、フロータイプは図１６で示すＺ型、Ｎ型、Ｖ型、Ｗ型のほかにも設定可能である。ボタン１６１３を押下することで、フロータイプ設定ダイアログ１６１７が表示される。そして、特殊なタイプである円形１６１９、斜型１６１８等のフロータイプが選択できる。このフロータイプは、ここで説明したものだけに限らず、他のタイプがあっても良い。また、フロータイプについては、デフォルトでどれか一つは選択された状態になっているので、設定する必要がなければ設定しなくても良い。また、フロータイプは、フローエリアにレイアウトされるサブテンプレートの数（レイアウト条件により該当するデータ数に相当する）により、異なるフロータイプが選択されることが望ましい。よって、図１６のレイアウトフロータイプを選択する例示欄１６１１は、サブテンプレート数に応じて選択可能としてもよい。
【０１１３】
次に、設定した内容に修正があるかないかを判断する（１５０６）。オペレータにより「ＯＫ」ボタン１６１５以外のボタンが押された場合に、修正があると判定される。修正がある場合は、ステップ１５０１〜１５０５のうちオペレータの操作に応じたステップを実行する。修正がない場合すなわち「ＯＫ」ボタン１６１５が押された場合は、レイアウト編集アプリケーション１２１は、指定された各種設定値を確定的に保存する（１５０７）。このためには、ステップ１５０１以前の操作により指定された値は仮の保存領域に保存し、ステップ１５０１においてそれらの値を、属性情報３４０２の対応する項目に複製する方法などをとればよい。なお、キャンセルボタン１６１４が押下されると、それまでに指定された各種設定はすべてキャンセルされ、属性情報３４０２は、図１５の手順を開始する直前の状態のまま変化しない。ステップ１５０７が行われるとダイアログを閉じる（ステップ１５０８）。
【０１１４】
（サブテンプレート）
前述したサブテンプレートについて、概要とレイアウトフローを説明する。図１７、１８はサブテンプレートに従ったレコードのレイアウト例とレイアウトフローを示している。
【０１１５】
サブテンプレートは、その中にイメージコンテナやテキストコンテナ等を配置して、それらのコンテナにどのデータを割り当てるかを設定した状態で保存されたテンプレートである。データ自体は通常のテンプレートと特に相違する点はなく、図３３に示したテンプレートデータで定義される。サブテンプレートは、同じレイアウトを一つのドキュメントで数多く使う場合や、他ドキュメントで流用する場合に便利である。サブテンプレート内に配置されるイメージコンテナ、テキストコンテナ間にはリンクを設定することが可能である。したがって、レイアウトするデータによって、レイアウトサイズ（位置も）を最適に変化させることが可能である。図１７はサブテンプレートを用いたレコードのレイアウト例を示している。１７０１と１７０４はサブテンプレートの外枠、１７０２と１７０５はイメージコンテナ、１７０３と１７０６はテキストコンテナ、１７０７はリンクを示している。図１７（Ａ）（Ｂ）は、互いに同じサブテンプレートを用いたレイアウト例であるが、互いにイメージ、テキストのサイズが異なるため、レイアウト結果は異なる。サブテンプレートを用いたレコードのレイアウト処理のフローは図１８に示す通りである。図１８はプレビュー処理の例を示す。印刷時には、図１８における「表示」が「印刷」に変わる。
【０１１６】
まず、レイアウト編集アプリケーション１２１は、レイアウトするデータを取得する（ステップ１８０１）。プレビュー時にはオペレータが適当なレコードを指定すればよい。印刷時には対象のデータベースから条件に適合するレコードを抽出してレイアウト対象のデータとして取得する。次に、レイアウト編集アプリケーション１２１は、各コンテナにレイアウトするデータのサイズを得る（ステップ１８０２）。そして、レイアウト編集アプリケーション１２１は、得られたデータサイズに基づいて、各コンテナについてレイアウト計算する（ステップ１８０３）。ステップ１８０３は、図９で説明したとおりの処理であり最適化処理を含んでいる。最適化されたレイアウトが決定されると、レイアウト編集アプリケーション１２１は、レイアウトするデータをそのデータに最適化されたコンテナに流し込み、ドキュメントを完成させる（ステップ１８０４）。そして完成したドキュメントをプレビュー画像として表示する（ステップ１８０５）。
【０１１７】
（フローエリアのレイアウト方法（ドキュメントに１フローエリアの場合））
図１９は、フローエリア内のレイアウト計算のフローを示している。図１９は、フローエリアが一つ設定されている場合の手順である。まず、レイアウト編集アプリケーション１２１は、フローエリアに関連づけられているデータベースを開く（ステップ１９０１）。そして、フローエリアにレイアウトを試みるレコードの数を、メモリに設けられた変数ｎに代入する（ステップ１９０２）。この変数ｎは、ユーザがフローエリアの貼り付けたい数を指定した値であり、図１６のユーザインタフェース画面から入力できるようにしてもよい。ｎが０、すなわちレイアウトを試みるレコードの数が０であった場合は、レイアウトの処理は行う必要がないので処理を行わず終了する（ステップ１９０３）。
【０１１８】
次に、レイアウトを試みた（試行中も含む。）レコード数を示すための変数ｋに１を代入する（ステップ１９０４）。また、フローエリアにレイアウトされたサブテンプレートの数を数えるための変数Ｎｕｍに０を代入する（１９０５）。
【０１１９】
それらの後、ｋ番目のレコードのデータをデータベースから取得する（ステップ１９０６）。このとき、データベースから該当するデータがない旨の応答を受けたなら、ステップ１９１３に分岐する。
【０１２０】
次に、レイアウト編集アプリケーション１２１は、レイアウトするフローエリアに、前述したプロパティ設定にて、条件式が設定されているかを確認する（ステップ１９０７）。マルチレコードについて既に説明したとおり、所与の一定条件を満たしているレコードがひとつのフローエリアに流し込まれる。この一定条件（条件式）を満たすレコードが当該フローエリアに関連づけられているデータに相当する。そこで、条件式が設定されている場合は、ステップ１９０６で取得したデータが設定されている条件式を満たしているか判定する（ステップ１９０８）。そして、フローエリアに条件式が設定されていない場合や、ステップ１９０８で条件式に当てはまると判断された場合は、レイアウト編集アプリケーション１２１は、取得したｋ番目のレコードについて、フローエリアに関連づけられたサブテンプレートに従ってレイアウトを行う（ステップ１９０９）。なお、フローエリアに関連づけられた条件式でデータベースを検索可能であれば、ステップ１９０６においては、その条件式でレコードを抽出する。この場合には、その条件式で抽出されるレコードはかならずフローエリアに関連づけられた条件を満たしている。また、その条件式に適合するレコードを絞り込むための条件が設定可能であれば、ステップ１９０６ではその条件でレコードを抽出する。この場合には、ステップ１９０８の判定は不可欠である。データベースが条件検索できない構成の場合には、ステップ１９０６では逐次的にレコードを取得する。
【０１２１】
サブテンプレートに従ったレイアウト手順については、図１８で説明した通りである。レコードをサブテンプレートに従ってレイアウトしたら、変数Ｎｕｍを１増やす（ステップ１９１０）。そして、次のデータに処理を進めるため、変数ｋを１増やす（ステップ１９１１）。また、ステップ１９０８で条件式と合わないデータであると判断された場合は、そのデータについてはレイアウト処理を行わないのでステップ１９１１へ進み、次のレコードを取得する。
【０１２２】
次に、レコード数ｎと変数ｋとを比較する（ステップ１９１２）。もし、変数ｋがレコード数ｎ未満であるなら、ステップ１９０６へ進み、ｋ番目のデータについて処理を繰り返す。変数ｋがｎ以上であるなら、サブテンプレートを用いたレコードのレイアウトを終了し、サブテンプレートに従ってレイアウトされたレコード（これは前述のレイアウト済みコンテンツに相当する。）をフローエリアにレイアウトする処理へと進む。
【０１２３】
まず、レイアウト編集アプリケーション１２１は、フローエリアのサイズを図３４の属性情報３４０２から取得する（ステップ１９１３）。そして、レイアウト編集アプリケーション１２１は、レイアウトするサブテンプレートのサイズを図３３のサイズ情報３３０２から取得する（ステップ１９１４）。そして、フローエリア内にレイアウトするレイアウト済みコンテンツのサイズを計算する（ステップ１９１５）。本実施形態では、ステップ１９０９のレイアウト処理においては、サブテンプレートの外枠のサイズはサブテンプレート内のコンテナのサイズによって変更されない。したがってレイアウト済みコンテンツの外枠サイズはサブテンプレートの外枠サイズのままである。ステップ１９１５では、レイアウト済みコンテンツの外枠のサイズを、フローエリアにレイアウトするレイアウト済みコンテンツの数に応じて拡大縮小する。フローエリア内にレイアウトするレイアウト済みコンテンツの数は変数Ｎｕｍによって指定される。拡大縮小は、各コンテンツについて同じ割合で実行される。そして、ステップ１９１６では、ステップ１９１５で拡大縮小（変倍）されたコンテンツをフローエリアにレイアウトし、出力する画像を生成する。印刷の場合も同様である。
【０１２４】
図２０は、フローエリア内にサブテンプレートによりレイアウト済みのコンテンツがレイアウトされた例を示している。図にはページマージン２００１、固定のコンテナ２００２と２００３、フローエリア２００４、サブテンプレート２００５と２００６が示されている。図２０（Ａ）では、フローエリア２００４に４つのレイアウト済みコンテンツがレイアウトされており、フローエリアに適切にレイアウトされるように、各レイアウト済みコンテンツのサイズが計算されている。レイアウト済みコンテンツ一つ一つのサイズは全て同じ大きさになるように計算される。図２０（Ｂ）は、フローエリアに５つのレイアウト済みコンテンツがレイアウトされている例を示している。
【０１２５】
最後に、レイアウト編集アプリケーション１２１は、レイアウト結果を表示して終了する（ステップ１９１６）。このように、フローエリアのサイズは、いくつのレイアウト済みコンテンツがレイアウトされても固定である。このようにコンテンツをフローエリアにレイアウトすることで、レイアウトするコンテンツの数によってドキュメントの数（ページ数）が変わってしまうという問題を回避することができる。これは、ドキュメントの数が固定である"はがき"や"ダイレクトメール"などで特に有効になる。
【０１２６】
なお、本実施形態では、レイアウトを試みるレコード数（変数ｎ）を定め、それをレイアウト処理の終了条件としているが、変数Ｎｕｍが一定数に達したことを以て終了条件とすることもできる。このようにすると、レイアウトしきれないレコードも生じてしまうが、フローエリアに挿入されるサブテンプレート数を制限することができる。
【０１２７】
また、レイアウトを試みるレコード数をあらかじめ定めず、条件に該当するレコードをデータベースから取得し終えたことを以て終了とすることもできる。
【０１２８】
（フローエリアのレイアウト方法（ドキュメントに複数のフローエリアの場合））
次に、複数のフローエリアがテンプレート内に設定されている場合のレイアウト処理のフローを説明する。図２１はレイアウト時にデータベースからデータが抽出され、複数のエリアにレイアウトされる様子を示した例、図２２Ａ，２２Ｂは複数のフローエリアに対するレイアウト処理のフローを、図２３は各フローエリアにおけるコンテンツのサイズ調整処理のフローを示している。
【０１２９】
図２１においてデータリスト２１０１は、データベースのデータリストの一部を示している。図２１の例では、キーカラムとしてＮａｍｅフィールドを設定しているため、Ｎａｍｅフィールドの値が同じレコードは１ドキュメントにレイアウトされる。従って、Ｎｏ１〜６までのレコード２１０２は、Ｎａｍｅフィールド値がＴｏｍなので、１ドキュメントにレイアウトされる。さらに、データフィールドのＰｒｏｄｕｃｔＮａｍｅフィールドとＤｅｓｃｒｉｐｔｉｏｎフィールドとＩｍａｇｅ１フィールドとを挿入するためのコンテナを有するサブテンプレートが作成されており、そのサブテンプレートがフローエリア２１０６、２１０７について関連づけられている。
【０１３０】
また、フローエリア２１０６については、Ｃａｔｅｇｏｒｙ＝Ｃａｍｅｒａという条件が設定されており、フローエリア２１０７については、Ｃａｔｅｇｏｒｙ＝Ｐｒｉｎｔｅｒという条件が設定されている。このため、２１０８、２１０９で示すように、サブテンプレートによりレイアウトされたレイアウト済みコンテンツは、条件式に応じたフローエリアにレイアウトされる。ＣａｔｅｇｏｒｙフィールドがＣａｍｅｒａのレコード（Ｎｏ１，２，５）は、フローエリア２１０６にレイアウトされ、ＣａｔｅｇｏｒｙがＰｒｉｎｔｅｒのレコード（Ｎｏ３，４，６）は、フローエリア２１０７にレイアウトされる。これが複数のフローエリアが設定されているテンプレートを用いた場合のレイアウト処理の概要である。処理のフローは図２２，２３で示している。
【０１３１】
図２２Ａ，図２２Ｂの各ステップについて説明する。まず、レイアウト編集アプリケーション１２１は、レイアウトを試みるデータ（レコード）の数を取得する（ステップ２２０１）。データベースがシーケンシャルファイルなど、条件検索できない物の場合には、データベースからそのレコード数を取得する。また、ダイレクトメールなどでは、一定の条件で絞られたレコード全部を対象として、その数をデータ数として取得しても良い。これは図１９のステップ１９０２についても同様である。図２１では、レコードがＮｏ１〜７であったので７が取得される。取得した数は変数ｎに代入される（ステップ２２０２）。
【０１３２】
つぎに、ｎの値をチェックし、０であったらレイアウトすべきデータは存在しないので、この処理は終了する（ステップ２２０３）。ｎの値が０でなかったら、変数ｋに１を代入する（ステップ２２０４）。変数ｋは、現在何番目のデータを処理しているかを示す変数である。そして、設定されているフローエリアの数を取得する（ステップ２２０５）。この数は、使用するテンプレートについての図３４のテンプレートデータ中に含まれるフローエリア情報３４０１の数を数えて得られる。取得したフローエリアの数は、変数ＡｒｅａＮｕｍに代入する（ステップ２２０６）。
【０１３３】
次に変数ａに１を代入する（ステップ２２０７）。この変数ａは、現在何個目のフローエリアの処理をしているかを示す変数である。なお変数ａで示されるフローエリアをフローエリアａと呼ぶ。次に、フローエリアのサイズおよび設定されている条件を取得し、それぞれ構造体（レコード型データ）の配列ＡｒｅａＩｎｆｏ［１..ＡｒｅａＮｕｍ］に保存する。配列ＡｒｅａＩｎｆｏ［１..Ｎ］の各配列成分である構造体は、ＳｉｚｅとＣｏｎｄｉｔｉｏｎという２つのフィールドを持つ。これらのフィールドはそれぞれＡｒｅａＩｎｆｏ［］.ＳｉｚｅとＡｒｅａＩｎｆｏ［］.Ｃｏｎｄｉｔｉｏｎと表される。そして、フローエリアａのサイズ及び設定されている条件は、ＡｒｅａＩｎｆｏ［ａ］.ＳｉｚｅとＡｒｅａＩｎｆｏ［ａ］.Ｃｏｎｄｉｔｉｏｎとにそれぞれ代入される（ステップ２２０８）。なお、配列ＡｒｅａＩｎｆｏ［１..ＡｒｅａＮｕｍ］はＡｒｅａＮｕｍの数に応じて動的にメモリ上に確保されるのが望ましい。
【０１３４】
さらに、Ｎｕｍ［ａ］に０を代入する（ステップ２２０９）。このＮｕｍ［ａ］にはフローエリアａにレイアウトされるコンテンツの数が代入される。次に、変数を１つ増やす（ステップ２２１０）。そして、変数ＡｒｅａＮｕｍの値がａの値以下であるか否か、すなわち設定されているエリアすべてに対して処理を行ったかどうかを確認する（ステップ２２１１）。処理が終わっていないのであれば、ステップ２２０８〜２２１０を繰り返し行う。全てのエリアに対して処理が終了したなら、ｋ番目のレコードをチェックする（ステップ２２１２）。
【０１３５】
そして変数ａ'に１を代入する（ステップ２２１３）。このａ'は複数のエリアに対して条件式の比較、レイアウトの処理を行うために使用される変数である。次に、ｋ番目のレコードがＡｒｅａＩｎｆｏ［ａ'］.Ｃｏｎｄｉｔｉｏｎに代入されている条件を満たしているか判定する（ステップ２２１４，２２１５）。そして、条件が満足されるのであれば、そのｋ番目のレコードについて、フローエリアａ'に関連づけられたサブテンプレートに従ってレイアウトを行う（ステップ２２１６）。そしてそのフローエリアａ'にレイアウトされるコンテンツの数Ｎｕｍ［ａ'］を１つ増やす（ステップ２２１７）。
【０１３６】
一方ステップ２２１５で条件式を満足しないと判定された場合は、次の不オーエリアについて処理を行うためａ'の値を１増やす（ステップ２２１８）。そして変数ａ'の値をフローエリア数ＡｒｅａＮｕｍと比較して、ａ'の方が小さければ、そのフローエリアａ'について処理を繰り返す（ステップ２２１９）。ａ'の方が大きければ、テンプレートに設定されている全てのフローエリアについて、条件が満足されなかったものとしてステップ２２２０へ分岐する。テンプレートに設けられているいずれかのフローエリアにｋ番目のレコードがレイアウトされるか、または、全てのエリアについて試みたもののいずれのフローエリアの条件にも適合しなかった場合には、変数ｋを１つ増やして（ステップ２２２０）、レイアウトを試みるレコードの数と比較する（２２２１）。対象となるレコード全てについて試行が終了していなければ、次のレコードについてステップ２２１２からの処理を繰り返す。全てのレコードについて終了していれば、各フローエリア内のコンテンツのサイズ調整（フローエリアの最適化）処理を行い（ステップ２２２２）、処理を終了する。ステップ２２２２の処理については図２３で説明する。
【０１３７】
（フローエリアの最適化）
図２３は複数フローエリアのレイアウト処理についてのフローである。各ステップについて説明する。まず、エリアの数を変数ＡｒｅａＮｕｍに代入する（ステップ２３０１）。そして変数ａに１を代入する（２３０２）。この変数ａは現在どのエリアに対して処理を行っているかを示している変数である。次に、ＡｒｅａＩｎｆｏ［ａ］.Ｓｉｚｅ（フローエリアａのサイズ）とＮｕｍ［ａ］（フローエリアａにレイアウトされるコンテンツの数）を、メモリ上の構造体配列ＡｒｅａＩｎｆｏ［１..ＡｒｅａＮｕｍ］から取得する（ステップ２３０３）。そして、フローエリアａに指定されている（レイアウトする）サブテンプレートのデフォルトサイズを取得する（ステップ２３０４）。そして、レイアウト編集アプリケーション１２１は、取得したフローエリアａのサイズＡｒｅａＩｎｆｏ［ａ］.Ｓｉｚｅと、そこにレイアウトするコンテンツの数Ｎｕｍ［ａ］と、フローエリアａに関連づけられたテンプレートのデフォルトサイズより、フローエリアａ内にレイアウトされるコンテンツのサイズを計算する（ステップ２３０５）。この計算方法は、図２０の説明した方法と同じである。計算が終了したら、変数ａを１つ増やす（ステップ２３０６）。変数ａと変数ＡｒｅａＮｕｍとを比較して全てのエリアに対して計算が終わっているかを確認し（ステップ２３０７）、終わっていないなら、ステップ２３０３からの処理を繰り返し行う。全てのエリアについてサブテンプレートのレイアウトが終了したら、ステップ２３０５で拡大縮小（変倍）されたコンテンツを、対応するフローエリアにレイアウトして出力する画像を生成する。そしてそのレイアウト結果を表示して処理を終了する（２３０８）。
【０１３８】
（レイアウト規則設定）
図２４、２５はフローエリアにおけるレイアウト規則の設定ＵＩとフローを示している。フローの各ステップについて説明する。図２４、図２５の処理手順は、作成されたテンプレートの各フローエリアについて行うことで、既存のフローエリアの設定変更をすることが可能である。
【０１３９】
まず、図２４のテキストボックス２４０２でレイアウト済みコンテンツの表示方法が指定される（ステップ２５０１）。指定される表示方法は均等割り、右揃え、左揃えなどである。この例では均等割りが指定されている。また、オペレータがラジオボタン２４０３をＯＮにすることでフローエリアにレイアウトするレイアウト済みコンテンツの数を指定したか判断する（ステップ２５０２）。指定された場合は、コンテンツの数（レイアウト数とも呼ぶ。）を設定できるように、テキストボックスやスピンボタンを含むようにＵＩが変更される。オペレータが、レイアウト数の最大値と最小値をテキストボックス２４０４で数を指定すると、その値をレイアウト数として保存する（ステップ２５０３）。また、テキストボックスへ直接入力ではなく、スピンボタン２４０５で設定しても良い。ラジオボタン２４０３がＯＦＦのときは、テキストボックス２４０４およびスピンボタン２４０５はグレーアウトされている。
【０１４０】
次に、レイアウトパターンが指定されたかどうかを判断する（ステップ２５０４）。ラジオボタン２４０６がＯＮされることにより、レイアウトパターンの変更が指定されたと判断し、変更後の状態を指定できるようにユーザインターフェースを変更する。領域２４０７はレイアウトパターンを指定するための部分であり、ラジオボタン２４０６がＯＦＦのときはグレーアウトされている。ラジオボタン２４０６がＯＮされるとここが表示されてレイアウトパターンの指定が可能となる。そして、ここで指定されたレイアウトパターンを、変更されているフローエリアのレイアウトパターンとして図３４の属性情報３４０２に保存する（ステップ２５０５）。
【０１４１】
ここで、設定されるレイアウトパターンは、そのフローエリアにレイアウトされるコンテンツの数、レイアウトの段数、１段当たりの数等によってユーザが任意に指定できる。ボックス２４０８には、着目フローエリアにレイアウトされるコンテンツの数が入力される。そして、ボックス２４０９には、コンテンツを何段でレイアウトするのかが入力される。ボックス２４１０には段番号が入力され、ボックス２４１１には、ボックス２４１０で示される番号の段に何個コンテンツをレイアウトするのかが指定される。なおこの例では「段」について指定できるものとしているが「列」について同様に指定できるものとしても良い。また、段と列のいずれかを選択して指定できるようにしてもよい。両方について指定できるようにしてもよい。
【０１４２】
ここで、まずレイアウトするコンテンツの数が指定された場合、ボックス２４０８で指定できる数は、その範囲内の個数に限られる。例えば、レイアウトするコンテンツの数を２〜４と設定されたとすると、指定できる個数は２，３，４である。それ以外の値が指定されるとエラーになる。そして、段数２４１０はオペレータが任意の数を指定することが可能である。指定された数によって、ボックス２４１１に表示する数を決定する。ボックス２４１１では、ボックス２４０８で指定したコンテンツの個数の内、何個その段にレイアウトするのかが指定されるため、レイアウトする数がボックス２４０８で指定した数より大きいとエラーになる。例えば、ボックス２４０８で６個が指定されており、段数として２段に指定された場合、１段目に２つレイアウトし、２段目に５つレイアウトするという指定はエラーになる。
【０１４３】
レイアウトする数が６つの場合、５つの場合、４つの場合と、複数のレイアウトパターンを設定したい場合は、オペレータは追加ボタン２４１３を押下する。この操作がされると、新たなレイアウトパターンが追加される（ステップ２５０６）。スクロールバー２４１２は、指定するパターンが増えて、表示領域内に収まらなくなった場合に表示される。最後に、ＯＫボタン２４１５が押下されることによって、それまでに指定された表示方法とレイアウトパターンとが確定されて、フローエリア情報３４０１の属性情報３４０２に保存される（ステップ２５０７）。また、キャンセルボタン２４１４が押下されると、レイアウト規則設定が開始されてから指定された表示方法とレイアウトパターンとはキャンセルされる。
【０１４４】
図２６は、レイアウト規則が設定された場合のレイアウト例を示している、図２６（Ａ）は、左揃え以外は、レイアウト規則が設定されていないフローエリア２６０１のレイアウト例を示しており、フローエリア２６０１に３つのコンテンツがレイアウトされるものとする。すると、図１６で指定したレイアウトフロータイプ（ここではＺ型とする）でレイアウト済みコンテンツがレイアウトされ、図２６（Ａ）のようなレイアウト結果になる。
【０１４５】
図２６（Ｂ）は、図２６（Ａ）とは異なるレイアウト規則が設定されているフローエリア２６０３のレイアウト例を示している。ここで設定されているレイアウト規則は、均等割り付けで、レイアウト個数が３つのときは、２段で１段目は１個、２段目は２個とコンテンツをレイアウトする。図２６（Ａ）と同じくエリアに３つのコンテンツがレイアウトされたとすると、図２６（Ｂ）のように、１段目に１個、２段目に２個が均等割り付けでレイアウトされる。このようにレイアウト規則を設定することにより、ユーザは自動的な流し込みでは、実現できなかった自由度の高いレイアウトを作成することが可能である。
【０１４６】
なお、上記説明において、印刷もプレビューと同様の手順で行うと記載しているが、印刷の場合には既に作成されているテンプレート及びサブテンプレートを使用してデータをレイアウトするため、テンプレートおよびサブテンプレートの作成処理は、印刷時には行う必要はない。印刷時には、テンプレート及びサブテンプレートの作成の代わりに、テンプレート及びサブテンプレートの指定が行われ、指定されたテンプレート及びサブテンプレートにしたがって文書が作成され印刷される。これは第２，第３実施形態についても同様である。
【０１４７】
以上説明したように、本実施形態に係る文書処理装置によれば、ドキュメントテンプレートに複数のフローエリアを定義することができ、各フローエリアごとに挿入されるデータの条件を定義できるために、データの配置をその条件によって制御することができる。
【０１４８】
また、各フローエリア内における部品データ（サブテンプレートでレイアウトされたデータベースのレコード等のバリアブルデータに相当する。）の配置をフローエリア毎に定義できるために、フローエリア毎に相異なるレイアウトで部品データを配置できる。
【０１４９】
また、各フローアリア毎に挿入可能な部品データの数を制限できるために、挿入されたデータが判読が困難なほど小さく表示または印刷されることを防止できる。
【０１５０】
また、フローエリア毎に挿入可能な部品データ数を制限でき、しかも各フローエリアに挿入される部品データのサイズは、フローエリアのサイズと部品データの数とで決まる。そのために、ひとつのテンプレートを用いて作成した部品データの表示（印刷）サイズを、あるフローエリアでは大きく、他のフローエリアでは小さくするというようにフローエリア毎に制御することができる。
【０１５１】
このように、ひとつのサブテンプレートを用いてレイアウトしたそれぞれが互いに対等な部品データを、それが配置されるフローエリアを指定し、また、配置されるフローエリアにおける部品データの数や配置の仕方を制御することで、利用者が望むようにレイアウトし、文書を作成することができる。そしてそれらを表示および印刷させることができる。このため、ダイレクトメールなどにより、個人などの相手方に合わせた情報の提供を実現できるのみならず、相手に応じた情報の重要度を反映したレイアウト、たとえば重要な情報は大きく注目を引きやすい先頭部文に配したレイアウトなどで文書を作成できる。
【０１５２】
［第２実施形態］
本発明の第２実施形態は、フローエリア内にレイアウト済みコンテンツをレイアウトして、フローエリア外にオーバーフローした際、別のフローエリアへレイアウト済みコンテンツをレイアウトする方法を含んだコンピュータプログラムや文書処理装置、自動レイアウトシステムについてである。本実施形態は、図３４のテンプレートデータ３４０１にフローエリア間のリンク（エリアリンク）を定義するエリアリンク情報が新たに含まれることと、リンクされたフローエリアに関する処理手順が、複数のフローエリアを有するテンプレートへのデータのレイアウト処理に付加されることである。フローエリア間のエリアリンクはコンテナ間のリンクのように距離を一定に保つための情報ではなく、あふれるコンテンツを流し込む先を指定するための情報である。
【０１５３】
＜フローエリアのリンク＞
図２７、２８はフローエリアのリンクについてのＵＩ図と設定処理のフローを示している。フローエリアのリンクとは、前記フローエリアを複数作成された状態で、２つのエリア間に関連付けを設定することが可能であることを意味している。ここでの関連付けとは、関連付けられた１つめのエリアをオーバーフローしたサブテンプレートをもう１つのエリアへレイアウトすることを意味する。エリアのリンク設定フローの各ステップについて説明する。
【０１５４】
まず、エリアリンクモードへ遷移する（ステップ２８０１）。これは図２７のツールボタン２７０８をマウスポインタ２７０９でオペレータが押下することによって指示され、その指示に従って行われる。次に、着目しているテンプレートに含まれる第１のフローエリアがマウスポインタで選択されると、その第１のフローエリアが、エリアリンクを設定する親フローエリアとして設定され、その旨を示す情報が一時的に保存される（ステップ２８０２）。
【０１５５】
次に、着目テンプレートに含まれる第２のフローエリアがマウスポインタで選択されると、その第２のフローエリアはリンクを設定する子フローエリアとして設定され一時的に保存される（ステップ２８０３）。ステップ２８０２とステップ２８０３で指定した第１と第２のフローエリアは同一フローエリアではいけない。そして、指定された２つのフローエリア間にフローリンクを設定するかどうかを判断する（ステップ２８０４）。この判断はオペレータによる入力に基づいて行われる。フローリンクを設定すると判断されれば、次に親フローエリアの設定を子フローエリアに継承させるかどうかを判断する（ステップ２８０５）。これもオペレータの入力に基づいて判断される。これは、リンクされた２つのフローエリアは、２つに分割された実質１つのフローエリアとして機能するため、各種設定（図１５や図２５の手順で設定される設定など）は共通にしなければならない。したがって、子フローエリアは親フローエリアの設定を受け継ぐ。設定を継承しないのであれば、ステップ２８０２へ戻り再設定をするか、リンク設定を終了する（ステップ２８０６）。
【０１５６】
親フローエリアの設定を子フローエリアに承継することを確認する旨の入力がオペレータによりされたなら、親フローエリアと子フローエリアとの間にエリアリンクが設定される（ステップ２８０７）。データ上は、たとえば、テンプレートデータ３４０１に、第１のフローエリアが親であり、第２のフローエリアが子であることを示すエリアリンク情報を付加する。
【０１５７】
同時に、フローエリアのリンク状態や親子関係をユーザに示すために、図２７の矢印２７０７が表示される。ここでは、フローエリア２７０５が親フローエリアで、フローエリア２７０６が子フローエリアであることが示されている。
【０１５８】
＜リンクされたフローエリアのレイアウト＞
図２８の手順でリンクが設定されたフローエリアにおけるコンテンツのレイアウトフローを説明する。図２９，３０はレイアウト例とフローを示している。図３０のフローの各ステップについて説明する。このフローは、第１実施形態で説明した図１９のレイアウトフローのステップ１９１３以降に対応しており、フローエリアにエリアリンクが設定されているときは、図１９のステップ１９１３以降の代わりに、図３０の処理を行う。すなわち、本実施形態では、図１９のステップ１９１２とステップ１９１３との間で、使用しているテンプレートに含まれるフローエリアにエリアリンクが設定されているか判定し、エリアリンクが設定されていれば図３０のステップ３００１に分岐する。また、図１４のステップ１４１１における判定では、エリアリンクが設定されたフローエリアはひとつのフローエリアとみなす。さらに、図２３ステップ２３０３の直前にフローエリアａにエリアリンクが設定されているか判定し、設定されていればステップ２３０３〜２３０５に変えて、図３０のステップ３００１〜ステップ３００５を実行する。そして、それ以後、図２３の処理の中では当該親フローエリアおよび子フローエリアはともに処理済みとして扱われる。
【０１５９】
さて図３０において、まず、親フローエリアのサイズを取得する（ステップ３００１）。そして、レイアウトするコンテンツ（すなわちフローエリアに関連づけられているサブテンプレートのサイズ）を取得する（ステップ３００２）。そして、そのサブテンプレートサイズのコンテンツを、変数Ｎｕｍの値（フローエリア内にレイアウトされるコンテンツの数）だけ、親エリア内にレイアウトしたときに、オーバーフローが発生しないか判断する（ステップ３００３）。すなわち、フローエリアにコンテンツを隙間無く並べてＮｕｍのコンテンツが納まるか判定する。たとえば、サブテンプレートの縦横のサイズとフローエリアの縦横のサイズとから、テンプレートを配置できる最大数を縦横各方向について求めることができ、その数を乗じることで配置可能なサブテンプレートの最大数を求めることができる。この値と変数Ｎｕｍとの比較でステップ３００３は判断できる。
【０１６０】
もし、オーバーフローが発生するのであれば、子フローエリアのサイズを取得する（ステップ３００４）。そして、親フローエリアと子フローエリアのサイズを含めて、サブテンプレートのレイアウトサイズを計算する（ステップ３００５）。ただし、親子のフローエリアは別々のエリアであるから、単純に面積を足し合わせることはできない。まず、親フローエリアに納まらない数のコンテンツが縮小なしに子フローエリアに納まるか判定する。納まれば縮小率は１である。したがって、レイアウトされるコンテンツのサイズはサブテンプレートのサイズそのものである。
【０１６１】
一方、納まらなければ、全コンテンツを同縮尺で縮小する。この場合の計算方法は図１９でのフローで説明した方法と原則的に同じであるが、親子それぞれのフローエリアに納まるコンテンツの数が、Ｎｕｍ以上の最低の数になるように縮小率は決定される。このために、たとえばフローエリアに納まるコンテンツの数が増加する最大の縮小率を求め、その縮小率でコンテンツを縮小してもまだＮｕｍ個のコンテンツが収めきれない場合には、さらにフローエリアに納まるコンテンツの数が増加する次に大きな縮小率を求める、というように試行錯誤的に縮小率を決定する方法が考えられる。
【０１６２】
計算後、決定された縮小率で各コンテンツは変倍され、まず親フローエリアにレイアウトされ、レイアウトしきれないコンテンツは、子フローエリアにこれも決定された縮小率で変倍されてレイアウトされる。最後にレイアウト結果を表示して終了する（ステップ３００６）。
【０１６３】
図２９は、リンクされたフローエリア内にコンテンツがレイアウトされた例を示している。フローエリア２９０１，２９０２は、エリアリンク２９０３によりリンクされている。親フローエリア２９０１にはコンテンツ２９０４が、子フローエリアにはコンテンツ２９０５がレイアウトされている。図２９で示すように、フローエリア２９０１には４つのコンテンツがレイアウトされるが、４つめのコンテンツでオーバーフローが発生した。エリアリンクの設定がない場合、４つのサブテンプレートをエリア内にレイアウトするために、１つ１つのコンテンツを縮小しなければならない。しかし、リンクの設定を行うことで、フローエリア２９０２にもサブテンプレートをレイアウトできるため、オーバーフローしたコンテンツをそこにレイアウトすることができる。
【０１６４】
このように、コンテンツを、サブテンプレートで定義されたサイズ以下のサイズに縮小することなく、レイアウトすることが可能になる。また、縮小する場合でも、エリアリンクが内場合に比して縮小率を小さくすることができる。
【０１６５】
また、矩形のフローエリアをエリアリンクで結合することで、フローエリアの形状の自由度が高まる。
【０１６６】
なお本実施形態ではエリアリンクで関連づけられるのは２つのフローエリアとして説明したが、エリアリンクの連鎖を設けることで、３つ以上の複数のフローエリアについても、ひとつのフローエリアと同一視させることができる。
【０１６７】
［第３実施形態］
本発明の第３実施形態は、第１実施形態ではフローエリアにレイアウトされるレコードはデータベースに格納されている順番にフェッチされてレイアウトされる例を説明した。本実施形態では、ユーザがデータベースのソートを行うことを可能にした自動レイアウトシステムについて説明する。
【０１６８】
データのソートを行う処理以外は、第１実施形態と同じ処理を行うため、それについては説明は省略する。
【０１６９】
図３１，３２はデータのソートにおけるフローと、ダイアログ例を示している。フローの各ステップについて説明する。まず、データソートダイアログを表示する（ステップ３１０１）。そして、図３２で示されるダイアログでデータのソートを行う。
【０１７０】
図３２において、３２０１はダイアログ、３２０２は接続されているデータファイル名、３２０３はデータファイルのデータ数、３２０４はどの順番でソートするかを指定するラジオボタン、３２０５はデータをソートする条件を入力するリストボックス、３２０６はソートされた結果が表示される表示エリア、３２０７はスクロールバー、３２０８はキャンセルボタン、３２０９はＯＫボタンを示している。このダイアログで設定するのは、ソートされる並び順と、ソートする条件である。
【０１７１】
次に入力されたソート条件を設定して（３１０２）、データベースをソートする（ステップ３１０３）。そしてソートされた結果が表示される（ステップ３１０４）。この図の例では、指定されたソートキー：Ｐｒｉｃｅについて昇順に並べられて結果が表示されている。ユーザが結果を確認後、再検索の指示がされたならステップ３１０２に戻り処理を繰り返す。ユーザは検索終了ならばＯＫボタンを押下する。この場合、ソートされたデータベースを保存して終了する。ユーザがキャンセルボタンを押下したなら、結果を反映させないで終了する（ステップ３１０５）。データをソートすることによって、レイアウトする条件に当てはまっているデータの中で、さらにユーザがエリア内優先的にレイアウトしたい商品を選択することを可能にする。
【０１７２】
なお、図３１の処理は、ユーザインターフェースの表示と操作図１Ａのコンピュータ１０１で行わせ、ソート処理自体はデータベースサーバ１１７により実行させるのが望ましい。
【０１７３】
このようにすることで、指定したフィールドをキーにしてソートされた順序で、レコードをドキュメントにレイアウトすることが可能となる。
【０１７４】
［その他の実施形態］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１７５】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【０１７６】
【図１Ａ】実施形態のコンピュータシステム構成図を示している。
【図１Ｂ】実施形態のコンピュータモジュールの概略図を示す図である。
【図２】実施形態の他のコンピュータシステム構成図を示す図である。
【図３】実施形態のメニューバー、ツールバー、ワークエリア、フローティングパレットを含む典型的なアプリケーションのメインウインドウを示す図である。
【図４】実施形態のコンテナ間のリンク、アンカーやスライダーを持つ典型的なコンテナの一面をスクリーン、ツール、アイコンで示す図である。
【図５】実施形態の典型的なコンテナルールを示す図である。
【図６】実施形態のリンクを作成するフローを示す図である。
【図７】リンク作成時のＵＩ図例を示す図である。
【図８】実施形態におけるレイアウト計算の全体フローを示す図である。
【図９】実施形態におけるレイアウト計算の、詳細フローを示す図である。
【図１０】実施形態における図９のフローに対応するＵＩ例である。
【図１１】実施形態のレイアウト計算時におけるコンテナの集合について説明した図を示す図である。
【図１２】実施形態におけるマルチレコードの概要図を示す図である。
【図１３】実施形態１におけるフローエリアのＵＩ例を示す図である。
【図１４】実施形態１における全体フローを示す図である。
【図１５】実施形態１におけるフローエリアの各種設定のフローを示す図である。
【図１６】実施形態１におけるフローエリアの各種設定を行うダイアログ例を示す図である。
【図１７】実施形態１におけるサブテンプレートのレイアウト例を示す図である。
【図１８】実施形態１におけるサブテンプレートのレイアウトフローを示す図である。
【図１９】実施形態１におけるフローエリア内でのサブテンプレートのレイアウトフローを示す図である。
【図２０】実施形態１におけるフローエリア内にサブテンプレートがレイアウトされたＵＩ例を示す図である。
【図２１】実施形態１における複数フローエリアにサブテンプレートがレイアウトされるＵＩ例を示す図である。
【図２２Ａ】実施形態１における複数フローエリアでのサブテンプレートの全体レイアウトフローを示す図である。
【図２２Ｂ】実施形態１における複数フローエリアでのサブテンプレートの全体レイアウトフローを示す図である。
【図２３】実施形態１における複数フローエリアでのサブテンプレートのレイアウト計算フローを示す図である。
【図２４】実施形態１におけるレイアウト規則設定ダイアログの例を示す図である。
【図２５】実施形態１におけるレイアウト規則設定フローを示す図である。
【図２６】実施形態１におけるレイアウト規則を設定した際のレイアウト例を示す図である。
【図２７】実施形態２におけるフローエリアのリンクのＵＩ例を示す図である。
【図２８】実施形態２におけるフローエリアのリンクの設定フローについて示す図である。
【図２９】実施形態２におけるフローエリアのリンクを設定した際のサブテンプレートのレイアウト例を示す図である。
【図３０】実施形態２におけるフローエリアのリンクを設定時のレイアウト計算フローを示す図である。
【図３１】実施形態３におけるデータのソートフローを示す図である。
【図３２】実施形態３におけるデータのソートダイアログの例を示す図である。
【図３３】テンプレートデータの一例を示す図である。
【図３４】フローエリアの定義されたテンプレートデータの一例を示す図である。
【符号の説明】
【０１７７】
１０１  汎用コンピュータモジュール
１０３  ユーザインターフェース
１０５  レイアウトエンジン
１１９  データベース
１２１  レイアウトアプリケーションプログラム
１３２  キーボード
１３３  マウス
１４３  Ｉ／Ｏインタフェース
１４４  ビデオディスプレイ
３０１  アプリケーションウインドウ
３０３  ツールバー
３１３  カーソル/ポインタデバイス
４０６  リンクツールボタン
４０７、４０８  コンテナ
４０９  アンカーアイコン
４１０  固定されていない辺
４１２  リンク
１３０３  フローエリア作成ツールボタン
２７０８  フローエリアリンクツールボタン
【図１Ａ】
2005216182.tif 000003
【図１Ｂ】
2005216182.tif 000004
【図２】
2005216182.tif 000005
【図３】
2005216182.tif 000006
【図４】
2005216182.tif 000007
【図５】
2005216182.tif 000008
【図６】
2005216182.tif 000009
【図７】
2005216182.tif 000010
【図８】
2005216182.tif 000011
【図９】
2005216182.tif 000012
【図１０】
2005216182.tif 000013
【図１１】
2005216182.tif 000014
【図１２】
2005216182.tif 000015
【図１３】
2005216182.tif 000016
【図１４】
2005216182.tif 000017
【図１５】
2005216182.tif 000018
【図１６】
2005216182.tif 000019
【図１７】
2005216182.tif 000020
【図１８】
2005216182.tif 000021
【図１９】
2005216182.tif 000022
【図２０】
2005216182.tif 000023
【図２１】
2005216182.tif 000024
【図２２Ａ】
2005216182.tif 000025
【図２２Ｂ】
2005216182.tif 000026
【図２３】
2005216182.tif 000027
【図２４】
2005216182.tif 000028
【図２５】
2005216182.tif 000029
【図２６】
2005216182.tif 000030
【図２７】
2005216182.tif 000031
【図２８】
2005216182.tif 000032
【図２９】
2005216182.tif 000033
【図３０】
2005216182.tif 000034
【図３１】
2005216182.tif 000035
【図３２】
2005216182.tif 000036
【図３３】
2005216182.tif 000037
【図３４】
2005216182.tif 000038