(57)【特許請求の範囲】
【請求項１】
コンテンツデータが流し込まれる複数の部分領域を所定領域に配置する手段と、
前記配置する手段によって配置された複数の部分領域の２つの部分領域間の制約条件として、距離を固定にするか可変にするかを設定する手段と、
前記設定する手段によって可変にすることが設定された場合、前記２つの部分領域間の基準距離と最小値とを設定する手段と、
前記２つの部分領域に入力されるコンテンツデータに基づいて、前記２つの部分領域のサイズを決定する手段と、
前記決定する手段において決定されたサイズの前記２つの部分領域の水平方向の長さと前記基準距離の長さとの和である第１の値が前記所定領域の水平方向の長さである第２の値に収まらない場合、前記第１の値が前記第２の値に収まるように、設定された前記最小値まで部分領域間の距離を縮小し、前記部分領域間の距離を縮小しても前記第１の値が前記第２の値に収まらない場合、前記２つの部分領域を均等に縮小するようにレイアウトを編集する手段と、
前記編集する手段によるレイアウト結果を表示する手段と、を備え、
前記表示する手段は、前記固定が設定された場合の制約条件と前記可変が設定された場合の制約条件とを識別可能に表示することを特徴とする情報処理装置。
【請求項２】
コンテンツデータが流し込まれる複数の部分領域を所定領域に配置する手段と、
前記配置する手段によって配置された複数の部分領域の２つの部分領域間の制約条件として、距離を固定にするか可変にするかを設定する手段と、
前記設定する手段によって可変にすることが設定された場合、前記２つの部分領域間の基準距離と最小値とを設定する設定手段と、
前記２つの部分領域に入力されるコンテンツデータに基づいて、前記２つの部分領域のサイズを決定する手段と、
前記決定する手段において決定されたサイズの前記２つの部分領域の垂直方向の長さと前記基準距離の長さとの和である第１の値が前記所定領域の垂直方向の長さである第２の値に収まらない場合、前記第１の値が前記第２の値に収まるように、設定された前記最小値まで部分領域間の距離を縮小し、前記部分領域間の距離を縮小しても前記第１の値が前記第２の値に収まらない場合、前記２つの部分領域を均等に縮小するようにレイアウトを編集する手段と、
前記編集する手段によるレイアウト結果を表示する手段と、を備え、
前記表示する手段は、前記固定が設定された場合の制約条件と前記可変が設定された場合の制約条件とを識別可能に表示することを特徴とする情報処理装置。
【請求項３】
ＣＰＵがレイアウト編集アプリケーションを実行することによりレイアウト編集手段として機能する情報処理装置において実行される情報処理方法であって、
前記レイアウト編集手段が、コンテンツデータが流し込まれる複数の部分領域を所定領域に配置する工程と、
前記レイアウト編集手段が、前記配置する工程によって配置された複数の部分領域の２つの部分領域間の制約条件として、距離を固定にするか可変にするかを設定する工程と、
前記レイアウト編集手段が、前記設定する工程で可変にすることが設定された場合、前記２つの部分領域間の基準距離と最小値とを設定する工程と、
前記レイアウト編集手段が、前記２つの部分領域に入力されるコンテンツデータに基づいて、前記２つの部分領域のサイズを決定する工程と、
前記レイアウト編集手段が、前記決定する工程において決定されたサイズの前記２つの部分領域の水平方向の長さと前記基準距離の長さとの和である第１の値が前記所定領域の水平方向の長さである第２の値に収まらない場合、前記第１の値が前記第２の値に収まるように、設定された前記最小値まで部分領域間の距離を縮小し、前記部分領域間の距離を縮小しても前記第１の値が前記第２の値に収まらない場合、前記２つの部分領域を均等に縮小するようにレイアウトを編集する工程と、
前記レイアウト編集手段が、前記編集する工程によるレイアウト結果を表示する工程と、を有し、
前記表示する工程では、前記固定が設定された場合の制約条件と前記可変が設定された場合の制約条件とを識別可能に表示することを特徴とする情報処理方法。
【請求項４】
ＣＰＵがレイアウト編集アプリケーションを実行することによりレイアウト編集手段として機能する情報処理装置において実行される情報処理方法であって、
前記レイアウト編集手段が、コンテンツデータが流し込まれる複数の部分領域を所定領域に配置する工程と、
前記レイアウト編集手段が、前記配置する工程によって配置された複数の部分領域の２つの部分領域間の制約条件として、距離を固定にするか可変にするかを設定する工程と、
前記レイアウト編集手段が、前記設定する工程で可変にすることが設定された場合、前記２つの部分領域間の基準距離と最小値とを設定する工程と、
前記レイアウト編集手段が、前記２つの部分領域に入力されるコンテンツデータに基づいて、前記２つの部分領域のサイズを決定する工程と、
前記レイアウト編集手段が、前記決定する工程において決定されたサイズの前記２つの部分領域の垂直方向の長さと前記基準距離の長さとの和である第１の値が前記所定領域の垂直方向の長さである第２の値に収まらない場合、前記第１の値が前記第２の値に収まるように、設定された前記最小値まで部分領域間の距離を縮小し、前記部分領域間の距離を縮小しても前記第１の値が前記第２の値に収まらない場合、前記２つの部分領域を均等に縮小するようにレイアウトを編集する工程と、
前記レイアウト編集手段が、前記編集する工程によるレイアウト結果を表示する工程と、を有し、
前記表示する工程では、前記固定が設定された場合の制約条件と前記可変が設定された場合の制約条件とを識別可能に表示することを特徴とする情報処理方法。
【請求項５】
コンピュータに、
コンテンツデータが流し込まれる複数の部分領域を所定領域に配置する工程と、
前記配置する工程によって配置された複数の部分領域の２つの部分領域間の制約条件として、距離を固定にするか可変にするかを設定する工程と、
前記設定する工程で可変にすることが設定された場合、前記２つの部分領域間の基準距離および変更範囲として最小値と最大値とを設定する工程と、
前記２つの部分領域に入力されるコンテンツデータに基づいて、前記２つの部分領域のサイズを決定する工程と、
前記決定する工程において決定されたサイズの前記２つの部分領域の水平方向の長さと前記基準距離の長さとの和である第１の値が前記所定領域の水平方向の長さである第２の値に収まらない場合、前記第１の値が前記第２の値に収まるように、設定された前記最小値まで部分領域間の距離を縮小し、前記部分領域間の距離を縮小しても前記第１の値が前記第２の値に収まらない場合、前記２つの部分領域を均等に縮小するようにレイアウトを編集する工程と、
前記編集する工程によるレイアウト結果を表示し、前記固定が設定された場合の制約条件と前記可変が設定された場合の制約条件とを識別可能に表示する工程と、を実行させるためのコンピュータプログラム。
【請求項６】
コンピュータに、
コンテンツデータが流し込まれる複数の部分領域を所定領域に配置する工程と、
前記配置する工程によって配置された複数の部分領域の２つの部分領域間の制約条件として、距離を固定にするか可変にするかを設定する工程と、
前記設定する工程で可変にすることが設定された場合、前記２つの部分領域間の基準距離と最小値とを設定する工程と、
前記２つの部分領域に入力されるコンテンツデータに基づいて、前記２つの部分領域のサイズを決定する工程と、
前記決定する工程において決定されたサイズの前記２つの部分領域の垂直方向の長さと前記基準距離の長さとの和である第１の値が前記所定領域の垂直方向の長さである第２の値に収まらない場合、前記第１の値が前記第２の値に収まるように、設定された前記最小値まで部分領域間の距離を縮小し、前記部分領域間の距離を縮小しても前記第１の値が前記第２の値に収まらない場合、前記２つの部分領域を均等に縮小するようにレイアウトを編集する工程と、
前記編集する工程によるレイアウト結果を表示し、前記固定が設定された場合の制約条件と前記可変が設定された場合の制約条件とを識別可能に表示する工程と、を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テキストやイメージで構成されたドキュメントの生成、編集、そして印刷のための技術に関するものであり、更に詳しくは、バリアブルデータドキュメントの生成、編集、そして印刷に好適なものである。
【背景技術】
【０００２】
近年、商品の多品種化で商品ライフが短くなっていること、インターネット利用の普及による消費者のカスタマイズサービス指向などの要因からＣＲＭ（Customer Relationship Management）、One-to-Oneマーケティングの必要性が注目されている。これらの手法は、顧客満足度を高め、顧客の開拓や囲い込みを目指すという目的に対して非常に効果的なものである。
【０００３】
One-to-Oneマーケティングはデータベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析、顧客のニーズに合った提案を行うものであり、その代表的な具体的手法としてバリアブルプリントが挙げられる。特に、最近ではＤＴＰ（デスクトップパブリッシング）技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発されている。このようなバリアブルプリントシステムでは、顧客毎に異なる量のコンテンツが最適にレイアウトされたカスタマイズ文書を作成することが求められる。
【０００４】
一般に、バリアブルプリントシステムにおいてそのようなカスタマイズ文書を作成する際には、ドキュメント上にコンテナをレイアウトする。コンテナとはコンテンツ（描画内容）を描画するための部分領域であり、フィールド領域と呼ばれることもある。すなわち、ドキュメント上にこのようなコンテナをレイアウトし、データベースとレイアウトを関連付ける（データベースの各コンテンツと各コンテナとを関連付ける）といった作業により、カスタマイズ文書（ドキュメント）を作成する。本明細書ではこのようなドキュメントをバリアブルデータドキュメントという。
【０００５】
このようなバリアブルプリントシステムにおいて、レイアウトされた各コンテナには顧客によって異なるコンテンツを流し込むことが可能である。従って、コンテンツに流し込まれるデータのサイズは可変であり、これに対してコンテナのサイズが固定であると次のような課題が生じる。例えば、コンテナのサイズよりも大きなサイズのテキストデータが流し込まれた場合には全てのテキストをそのコンテナ内に表示出来なくなってしまう。あるいは、コンテナのサイズよりも大きなサイズのイメージデータが流し込まれた場合には、そのイメージの一部が欠落してしまう。このような問題をオーバーフローと呼ぶ。
【０００６】
なお、コンテンツがイメージデータの場合には、当該イメージを縮小してコンテナ内に描画することも考えられるが、イメージが極端に小さくなってしまうといった弊害が生じる可能性がある。また、固定サイズのコンテナ内に入りきらないテキストデータが挿入された場合に、テキストのフォントサイズを縮小し、当該コンテナ内に全てのテキストを表示可能にする技術も提案されている。しかしながら、このようにフォントサイズを調節する場合、フォントサイズが小さくなりすぎて、ドキュメント全体のバランスが崩れたり、読みにくくなるという課題が生じる。
【０００７】
このような課題を解決するための自動レイアウトの技術として、あるコンテナのサイズが大きくなった場合に、隣接したコンテナとの間隔を保つべく当該隣接するコンテナのサイズを小さくする技術が特許文献１の「レイアウトデザイン装置」に開示されている。
【特許文献１】特開平７−１２９６５８号公報  （００４９、図８）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した特許文献１では、隣接するコンテナの間隔は固定されている。なお、本明細書では隣接するコンテナ同士の関連付けをリンクと称し、該隣接するコンテナ同士の間隔（距離）をリンクの長さと称する。特許文献１のように、コンテナとコンテナの間にリンクを張りそのリンクの長さが固定されている場合において、双方のコンテナを最適サイズになるように拡大しようとした場合、コンテナ間に張られた固定長のリンクの長さにより、コンテナが理想のサイズにならない可能性がある。リンクは、各コンテナの夫々を流し込まれるデータ量に応じた最適なサイズにするべく拡大するとコンテナ同士が重複してしまうという弊害を除去しようとするものである。しかしながら、このリンクの長さは固定であるため、例えばリンクが設定されているコンテナＡとコンテナＢにおいて、最適サイズとなるべくそれぞれを拡大しようとした場合であっても、リンクの長さ分は必ずコンテナＡ，Ｂ間に存在することになる。よって、コンテナＡ，Ｂを納めるページの領域の大きさとの関連から、これらコンテナＡ，Ｂの拡大はある程度阻止されることになる。
【０００９】
また、逆に、それぞれのコンテナに入るデータ量が少ない場合、固定サイズのリンクによりコンテナＡ、コンテナＢの距離は一定に決まっているため、コンテナＡ，Ｂの縮小が制約を受け、コンテナのサイズが必要以上に大きくなってしまう場合もある。すなわち、コンテナのサイズを最適化できず、例えばイメージなどで比率を保つ場合、不用意に拡大されてしまう場合がある。  また、例えば、コンテナのサイズよりも小さなサイズのテキスト（文字数が想定より少ない）が流し込まれた場合には、コンテナの領域に対して少ない領域に文字が配置されてしまい、コンテナに空きが生じてしまい、レイアウトの見た目が悪くなってしまうという問題もある。
【００１０】
以上のように、ユーザは、それぞれのコンテナが最適サイズになることを優先し、コンテナ間のリンクの長さはある程度狭まったり、拡がったりする自動レイアウトを期待することがある。しかしながら、リンク長が固定された上記従来技術ではこのような自動レイアウトは実現できない。
【００１１】
本発明は上記の課題に鑑みてなされたものであり、割り当てられたデータに基づくイメージを表示するための部分領域（コンテナ）間の距離（リンク長さ）を柔軟に変更可能とすることにより、その時々に挿入されるデータ量に応じて各部分領域のサイズが適切になるような自動レイアウト調整を実現することを目的とする。
【課題を解決するための手段】
【００１２】
上記の目的を達成するための本発明の一態様による情報処理装置は以下の構成を備える。すなわち、
コンテンツデータが流し込まれる複数の部分領域を所定領域に配置する手段と、
前記配置する手段によって配置された複数の部分領域の２つの部分領域間の制約条件として、距離を固定にするか可変にするかを設定する手段と、
前記設定する手段によって可変にすることが設定された場合、前記２つの部分領域間の基準距離と最小値とを設定する手段と、
前記２つの部分領域に入力されるコンテンツデータに基づいて、前記２つの部分領域のサイズを決定する手段と、
前記決定する手段において決定されたサイズの前記２つの部分領域の水平方向の長さと前記基準距離の長さとの和である第１の値が前記所定領域の水平方向の長さである第２の値に収まらない場合、前記第１の値が前記第２の値に収まるように、設定された前記最小値まで部分領域間の距離を縮小し、前記部分領域間の距離を縮小しても前記第１の値が前記第２の値に収まらない場合、前記２つの部分領域を均等に縮小するようにレイアウトを編集する手段と、
前記レイアウトを編集する手段によるレイアウト結果を表示する手段と、を備え、
前記表示する手段は、前記固定が設定された場合の制約条件と前記可変が設定された場合の制約条件とを識別可能に表示する。
【００１３】
また、上記の目的を達成するための本発明の他の態様による情報処理装置は以下の構成を備える。すなわち、
コンテンツデータが流し込まれる複数の部分領域を所定領域に配置する手段と、
前記配置する手段によって配置された複数の部分領域の２つの部分領域間の制約条件として、距離を固定にするか可変にするかを設定する手段と、
前記設定する手段によって可変にすることが設定された場合、前記２つの部分領域間の基準距離と最小値とを設定する設定手段と、
前記２つの部分領域に入力されるコンテンツデータに基づいて、前記２つの部分領域のサイズを決定する手段と、
前記決定する手段において決定されたサイズの前記２つの部分領域の垂直方向の長さと前記基準距離の長さとの和である第１の値が前記所定領域の垂直方向の長さである第２の値に収まらない場合、前記第１の値が前記第２の値に収まるように、設定された前記最小値まで部分領域間の距離を縮小し、前記部分領域間の距離を縮小しても前記第１の値が前記第２の値に収まらない場合、前記２つの部分領域を均等に縮小するようにレイアウトを編集する手段と、
前記編集する手段によるレイアウト結果を表示する手段と、を備え、
前記表示する手段は、前記固定が設定された場合の制約条件と前記可変が設定された場合の制約条件とを識別可能に表示する。
【発明の効果】
【００１４】
本発明によれば、割り当てられたデータに基づくイメージを表示するための部分領域（コンテナ）間の距離（リンクの長さ）を柔軟に変更可能となるので、その時々に挿入されるデータ量に応じて各部分領域のサイズが適切になるような自動レイアウト調整を実現することができる。
【発明を実施するための最良の形態】
【００１５】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【００１６】
《第１実施形態》
＜システム構成＞
まず、図１および図２を参照して、本実施形態のバリアブルプリントシステムの構成を説明する。図１はバリアブルデータドキュメントを印刷するためのバリアブルプリントシステム１００の構成例を示すブロック図である。また、図２は図１に示されたホストコンピュータ１０１の構成を更に詳細に示すブロック図である。本実施形態で説明されるバリアブルプリント処理は、レイアウト調整装置であるホストコンピュータ１０１（汎用コンピュータモジュールで構成される）によって実行される。システム１００上で実施可能となるレイアウト編集アプリケーションプログラム１２１（本発明のレイアウト調整プログラム）はホストコンピュータ１０１において、そのソフトウェアの全体、あるいは一部分が実行される。特にレイアウト編集のための処理やバリアブルデータドキュメントの印刷のための処理はホストコンピュータ１０１で実行されるソフトウェアにより実現される。
【００１７】
レイアウト編集アプリケーションプログラム１２１はコンピュータの可読媒体に格納され、そのコンピュータの可読媒体からホストコンピュータ１０１のメモリ１３６にロードされ、実行される。そのようなソフトウェアやコンピュータプログラムを格納したコンピュータの可読媒体はコンピュータプログラム製品である。コンピュータにおいてそのコンピュータプログラム製品を使用することにより、ドキュメントのレイアウト編集やバリアブルプリントに好適な装置が提供されることになる。
【００１８】
図２に示されるように、ホストコンピュータ１０１には、入出力インターフェース１４３を介してキーボード１３２や、マウス１３３のようなポインティングデバイス等が入力装置として接続される。また、出力装置としてのディスプレイ装置１４４がビデオインターフェース１３７を介して接続される。更に、ローカルプリンタ１４５等を入出力インターフェース１３８を介して接続することも可能である。また、入出力インタフェース１３８はコンピュータモジュール１０１をネットワーク１０７へ接続する機能も有する。これにより、ネットワークを介してシステム１００内の他のコンピュータ装置にホストコンピュータ１０１を接続することができる。ネットワーク１０７の典型的な例としては、ローカルエリアネットワーク（ＬＡＮ）、あるいはワイドエリアネットワーク（ＷＡＮ）が挙げられる。
【００１９】
また、図２に示すように、ホストコンピュータ１０１は少なくとも１つのプロセッサユニット１３５、例えば半導体のランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）から構成されるメモリユニット１３６を含んでいる。格納デバイス１３９は、プログラム等を格納するコンピュータ可読媒体との間でデータのやり取りが可能なハードディスクドライブ１４０やフロッピー（登録商標）ディスクドライブ１４１を含む。なお、図２には示されていないが、磁気テープドライブ等も格納デバイス１３９として使用可能である。ＣＤ−ＲＯＭドライブ１４２は不揮発性のデータソースとして提供される（もちろん、ＣＤ−ＲＯＭによってコンピュータプログラムを提供してもよい）。
【００２０】
ホストコンピュータ１０１は、ＧＮＵ／ＬＩＮＵＸやマイクロソフトウインドウズ（登録商標）のようなオペレーティングシステムや、典型的にはオペレーティングシステムに従う形で、あるいは関連のある技術で知られているもので形成されたコンピュータシステムの常套的なオペレーションモードによる方法によって、相互接続バス１３４を介して通信を行うコンピュータモジュール１０１のコンポーネント１３５から１４３を利用する。すなわち、上述した１３５〜１４３で示される各構成は、バス１３４を介して通信可能に接続されており、ホストコンピュータ１０１にインストールされたオペレーティングシステムにより利用される。
【００２１】
なお、図２に示したホストコンピュータ１０１の例としては、ＩＢＭ互換ＰＣやＳＵＮ のSparcstation、あるいはそれらを含んだコンピュータシステムが考えられる。
【００２２】
＜レイアウト編集アプリケーションの概要＞
本実施形態では、レイアウトアプリケーションプログラム１２１はハードディスクドライブ１４０に常駐し、プロセッサ１３５により実行や読み込みがコントロールされるものとする。レイアウト編集アプリケーション１２１のプログラムの媒介記憶装置とネットワーク１０７からフェッチされるデータはハードディスクドライブ１４０に呼応して半導体メモリ１３６を使用する。
【００２３】
一つの例では、レイアウト編集アプリケーション１２１のエンコードされたプログラムは、ＣＤ−ＲＯＭやフロッピー（登録商標）ディスク上に格納され、対応するドライブ１４２や１４１を通じて読み込まれ、ハードディスクドライブ１４０にインストールされる。あるいは、別の例として、レイアウト編集アプリケーションプログラム１２１はネットワーク１０７からホストコンピュータ１０１内に読み込まれて、ハードディスクドライＢ１４０にインストールされてもよい。さらにソフトウェアは、磁気テープまたはＲＯＭまたは集積回路、光磁気ディスク、または、ホストコンピュータ１０１とその他のデバイス間における赤外線等の無線通信、ＰＣＭＣＩＡカードのようなコンピュータ可読カード、そしてＥメール通信やＷＥＢサイト上の記録情報を持つインターネットやイントラネットを含む他の適当なコンピュータからホストコンピュータ１０１内にロードされてもよい。これらは、コンピュータ可読媒体の例であり、他のコンピュータ可読媒体が使用されてもよいことは明らかである。
【００２４】
図１において、本発明のレイアウト編集アプリケーション１２１はコンピュータにバリアブルプリント（バリアブルデータプリント（ＶＤＰ）ともいう）を行わせるものであり、２つのソフトウェアコンポーネント、すなわちレイアウトエンジン１０５とユーザインターフェース１０３、を含んでいる。レイアウトエンジン１０５は、部分領域であるコンテナ（矩形の範囲）に与えられたサイズや位置の制限にしたがって、データベース１１９に格納されているバリアブルデータから１レコードずつ読み込み、読み込んだデータとコンテナの制限とから、読み込んだデータが流し込まれるコンテナの大きさや位置等を計算するソフトウェアコンポーネントである。また、本実施例では、レイアウトエンジン１０５は、更に、コンテナに割り当てられたデータを描画し、バリアブルデータドキュメントのイメージを生成する処理も行う。ただし、本発明はこれに限るものではなく、レイアウトエンジン１０５は各部分領域（コンテナ）のサイズと位置を決定するアプリケーションとして動作し、図示省略したプリンタドライバに描画情報を出力することで、プリンタドライバがバリアブルデータドキュメントのイメージ描画処理を行い、印刷データを生成してもよい。ユーザインタフェース１０３は、ユーザによるコンテナのレイアウトや属性設定を可能とし、ユーザにドキュメントテンプレートを作成させる。また、ユーザインターフェース１０３はドキュメントテンプレート内の各コンテナとデータソースとを関連付けるメカニズムを提供する。ユーザインタフェース１０３とレイアウトエンジン１０５はコミュニケーションチャネル１２３を介して通信する。
【００２５】
図３は本実施形態によるバリアブルデータプリントの概略を説明する図である。レイアウト編集アプリケーション１２１のユーザインターフェースモジュール１０３（以下、ユーザインタフェース１０３と記載する）により、ユーザからの操作指示に従いページ上に複数のコンテナ１８１〜１８３を配置し、各コンテナに位置やサイズに関する制約条件を付与することによりドキュメントテンプレート１８０が生成される。また、ユーザインターフェース１０３はドキュメントテンプレート１８０とデータソース１９０との関連付け、更に各コンテナとデータソース１９０内の各データフィールドとの関連付けを行う。各コンテナとデータソース１９０内の各データフィールドとの関連付けを示す関連付け情報は、ドキュメントテンプレート内に記述され、該ドキュメントテンプレートは、ＨＤＤ１４０に格納される。また、データソース１９０は、レコード単位で項目データが記載されているファイルであり、ＨＤＤ１４０に格納されている。レイアウトエンジン１０５は、ユーザからの印刷指示もしくはプレビュー指示に応じて、ドキュメントテンプレートの各コンテナ１８１〜１８２に、関連付け情報で関連付けられたデータをデータソース１９０から読み込み、レコード単位で流し込み（例えば、データレコード１のデータフィールドＡ〜Ｃをコンテナ１８１〜１８３へ流し込む）、流し込まれたデータに応じて各コンテナのサイズ等を調整（レイアウト調整）する。プレビュー指示の場合は、レイアウト調整されたドキュメントイメージを生成し、ビデオディスプレイ１４４の画面上にプレビューとして表示するべく出力される。また印刷指示の場合は、レイアウトエンジン１０５もしくはプリンタドライバを用いて生成したドキュメントイメージを印刷データとしてプリントサーバ１０９へ出力する。データレコード１，２，３…を順次処理することにより、バリアブルデータプリントが実現されることになる。
【００２６】
ドキュメント生成のためのデータソース（１９０）は、例えば、データベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバ１１７上の一般的なデータベース１１９であってもよい。この場合、ホストコンピュータ１０１はネットワーク１０７を介してデータベースサーバ１１７と通信し、データソースを取得できる。また、レイアウト編集アプリケーション１２１によって生成された、バリアブルデータプリントのためのドキュメントテンプレート（１８０）は、ホストコンピュータ１０１或いは他のコンピュータで構成されるファイルサーバ１１５に保存される。図３で上述したように、レイアウト編集アプリケーション１２１のレイアウトエンジン１０５は、データとマージされたドキュメントテンプレートによって構成されたバリアブルデータドキュメントを生成する。これらのドキュメントは、ホストコンピュータ１０１のローカルファイルシステムに保存されるか、ファイルサーバ１１５に保存されるか、あるいはプリンタ１１３に送信されて印刷される。プリントサーバ１０９はネットワークと直接にはつながっていないプリンタにネットワーク機能を提供するためのコンピュータである。プリントサーバ１０９とプリンタ１１３は一般的な通信チャネル１１１を介して接続される。
【００２７】
＜他のシステム構成例＞
図４は、図１と類似のブロック図であるが、エンジンサーバ２２７が追加されている。エンジンサーバ２２７に格納されているレイアウトエンジン２２５は、レイアウトエンジン１０５の分離バージョンである。エンジンサーバ２２７には一般的なコンピュータが用いられる。レイアウトエンジン２２５は、印刷やその他の目的に応じてバリアブルデータドキュメントを生成するために、ファイルサーバ１１５に保存されたドキュメントテンプレートとデータベース１１９に保存されたデータとを結合する。そのようなオペレーションはユーザインタフェース１０３を介して要求される。
【００２８】
＜レイアウト編集アプリケーションの説明＞
以下、レイアウト編集アプリケーション１２１について説明する。
【００２９】
［メインウインドウ］
ユーザインターフェース１０３は、操作時に図５に示されるようなアプリケーションウインドウ３０１によって形成されたユーザインターフェース画面をビデオディスプレイ１４４に表示させる。このウインドウ３０１は、メニューバー３０２、ツールバー３０３、ワークエリア３０６とオプションのパレット３１１を有する。メニューバー３０２とツールバー３０３は非表示にすることや、スクリーン上の色々な場所に移動することが可能である。また、ワークエリア３０６はマウス１３３の操作によってその場所を移動させることが可能である。また、パレット３１１はオプションであり、カーソル／ポインタデバイス３１３はマウス１３３が指し示す位置を表す。
【００３０】
メニューバー３０２は、周知の技術として知られているように、メニューオプションの階層の下に拡張される多くのメニューアイテム３０４を持つ。
【００３１】
ツールバー３０３は、アプリケーションの特別なモードによって非表示状態にする、または表示状態にすることが可能な多くのツールボタンとウィジット３０５を持つ。
【００３２】
ルーラー３０８はオプションであり、ワークエリア内のポインタ、ページ、ライン、マージンガイド、コンテナまたはオブジェクトの位置を示すために使われる。
【００３３】
パレット３１１はバリアブルデータライブラリのような追加機能にアクセスするために使われる。パレット３１１は移動、リサイズ、クローズをするためのウインドウコントロール３１２を持つ。パレット３１１はオプションで、ワークエリアの前面に表示される、あるいはオブジェクトの背面に隠される。パレット３１１はアプリケーションウインドウ３０１の範囲内のみに表示されることを制限される、あるいはアプリケーションウインドウ３０１の外側にその一部或いは全体を表示することを許される。
【００３４】
ツールバー３０３には図６に示されるような、ユーザ選択可能な『ボタン』が配置されている。
（１）選択ツールボタン４０３：コンテナの辺を選択、移動、サイズ変更、リサイズそしてロック／ロック解除のために使われる。コンテナの選択は、コンテナの周りに選択ボックスをドラッグすることによりなされる。また、CTRLキーを押しながら、複数のコンテナについて選択操作をすることによって、複数のコンテナを選択可能である。
（２）テキストコンテナツールボタン４０４：スタティックあるいはバリアブルテキストを持つコンテナを作成するために使われる。
（３）イメージコンテナツールボタン４０４：スタティックあるいはバリアブルイメージを持つコンテナを作成するために使われる。
（４）リンクツールボタン４０６：コンテナ間に関連付けを行うリンクを作成するために使われ、リンクの距離をコントロールするためにも使われる。
【００３５】
レイアウト編集アプリケーション１２１の図５に示したアプリケーションウインドウ３０１は、ページ内に各コンテナやリンクをレイアウトすることで、基本レイアウトを決定することができる。基本レイアウトとは、バリアブルデータプリントで基本となるレイアウトのことである。基本レイアウト内の各コンテナが固定コンテナである場合は、すべてのレコードの印刷結果のレイアウトは同じになる。また、基本レイアウト内の各コンテナが後述する可変コンテナである場合は、レコード単位に読み込まれるデータの量やサイズにより各コンテナのサイズや位置が、後述する制約の範囲内で変動することになる。よって、レイアウト編集アプリケーション１２１で作成されるドキュメントテンプレートは、あくまで基本レイアウトを決定するものであり、可変コンテナが含まれる場合は、最終的な印刷物のレイアウトは読み込まれるデータによりレイアウト調整されることになる。
【００３６】
［ドキュメントテンプレート］
図５において、ワークエリア３０６はドキュメントテンプレート（１８０：基本レイアウト）のデザインを表示・編集するために使われる。これはユーザがドキュメントテンプレートをデザインする過程において、印刷されるドキュメントの概観をユーザに提示することを可能とする。これにより、ユーザは、データソース（１９０）とマージされたドキュメントが、バリアブルデータの量・サイズに基づいてどのように変化するかを容易に理解できる。
【００３７】
また、データソースがドキュメントテンプレートに関連付けられていた場合は、現在のドキュメントのプレビューができるように、対応するバリアブルテキストやイメージがレイアウトされた各コンテナに表示される。
【００３８】
ドキュメントテンプレートにおけるドキュメント構造とバリアブルデータコンテナの描写をする視覚的な手がかり（コンテナの枠線、アンカー、スライダー、リンク等）は、ドキュメントテンプレート作成時には常に表示され、バリアブルデータを流し込むプレビュー時には、視覚的な手がかりは、カーソルをコンテナ上に移動させたときや、コンテナを選択したときに表示される。
【００３９】
ワークエリア３０６はスクロールバー３０７とオプションのルーラー３０８とドキュメントテンプレート３０９を含む。ドキュメントテンプレート３０９はページが複数あることを示すことができる。また、ドキュメントテンプレート３０９は、図３のドキュメントテンプレート１８０を表示しているものである。
【００４０】
与えられたドキュメントテンプレートのページサイズは、周知の技術を用いて、ユーザによって指定される。例えばメニューの「ファイル」から「ページ設定」を選択することでページサイズを設定するダイアログを表示し、そこでユーザが指定したページサイズが反映されることになる。それぞれのドキュメントでの実際のページ数は、関連付けられたデータソース内のバリアブルデータによって変化する可能性が有る。これは、ドキュメントテンプレート内に可変表のようにバリアブルデータの量により大きさが変更されるフィールドが設定されている場合、１ページ内にバリアブルデータをフィットできないバリアブルデータが読み込まれると、追加のページが自動的に作成されるからである。
【００４１】
それぞれのページ内に示される境界線３１０は、ページ上の印刷可能なオブジェクトの最大幅を示す、任意のページマージンである。
【００４２】
図６は１ページのドキュメントテンプレート３０９上に表示され得るオブジェクトの例を示す図である。このようなオブジェクトとしては、コンテナ４０７、４０８と、任意に適用するアンカーアイコン４０９、固定されている辺４１１、４１４、固定されていない辺４１０、リンク４１２そしてスライダー４１３を持つ。アンカーアイコン４０９は、コンテナの矩形の角、辺、またはコンテナの中央に設定することが可能である。アンカーアイコン４０９が設定されると、設定された個所の位置が固定となる。つまり、図６の例では、アンカーアイコン４０９は、コンテナ４０７の左上の角に設定されているため、コンテナ４０７はバリアブルデータが流し込まれ、バリアブルデータの画像サイズもしくはテキスト量が多い場合に、右方向及び下方向に拡大可能であることを示している。アンカーアイコン４０９が辺に設定されている場合は、その辺が固定となり、その他の３辺の各方向に拡大可能である。また、アンカーアイコン４０９がコンテナの中央に設定されている場合は、コンテナの中央位置が固定となり、コンテナ矩形の中央位置が変わらないように、４方向に拡大可能である。リンク４１２は詳細は後述するが、コンテナ４０７とコンテナ４０８が関連付けられていることを示しており、このリンクに設定されている長さ（範囲指定可能）を保ちつつ、コンテナ４０８が右方向に移動可能であることを示している。スライダー４１３は、設定されている辺と水平方向に移動可能であることを示している。
【００４３】
［コンテナ］
ここで、コンテナについて説明する。コンテナは、ドキュメントテンプレート内にバリアブルデータファイルから固定あるいは可変のテキスト／イメージが流し込まれ、描画されるスペース（これを部分領域と呼ぶ）であり、図６に示されるように他のコンテナやオブジェクトと共にレイアウトされる。ユーザインターフェース画面を介して、ユーザからの操作指示により、コンテナはマウス１３３の操作により移動、サイズ調整、再作成される。
【００４４】
より正確にはコンテナは、設定の集まり、視覚的表現、そしてインタラクションと編集動作をもっている。下記は本実施形態によるコンテナの定義である。
【００４５】
（１）コンテナは固定あるいは可変のコンテンツを持つ。可変コンテンツは、データソースから取得したデータがドキュメント毎、つまりレコード毎に異なる可能性があるという意味でダイナミック（動的）であるということができる。ただし、本実施形態の可変コンテンツは、アニメーション化されたもの、あるいは他の方法で時間的に変化するコンテンツは印刷には適していないため、ここでは意図していない。同様に、固定コンテンツはコンテナを使って生成される全てのドキュメントで、同じように表示される。しかしながら、可変コンテンツとリンクが設定されている場合、可変コンテンツの影響を受けて、固定コンテンツはそれぞれのドキュメントで位置が異なる可能性がある。
【００４６】
（２）コンテナは、コンテンツに適用される背景色、ボーダー、フォント・スタイルのようなテキスト設定と同様の装飾機能を持っている。このような設定をコンテナ属性と呼ぶ。コンテナ属性は、各コンテナごとに設定可能であるが、あるコンテナと同じコンテナ属性であるという設定を行うことも可能である。
【００４７】
（３）コンテナはドキュメントを生成する際にデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、印刷された出力物において可視である。可変コンテンツはデータソースからの特定のデータの表示を提供する。コンテナのこの表現は例えば印刷されるか、ビデオディスプレイ１４４のスクリーン上に表示されるか、その両方が可能である。
【００４８】
（４）コンテナは、図６に示されるように視覚的な手がかりとしてのユーザインターフェースを有している。例えばコンテナの編集そして表示設定のためのインタラクティブなグラフィカルユーザインターフェース（ＧＵＩ）を持つ。ＧＵＩの各要素はビデオディスプレイ１４４のスクリーン上に表示されるが、ドキュメントとしては印刷されない。レイアウト編集アプリケーション１２１のユーザインターフェース１０３は、背景色やフォントのようなコンテナの装飾機能のいくつかを表示し、さらにコンテナの設定の編集や表示を可能にするための機能を有している。
【００４９】
［コンテナの制約］
コンテナはそれぞれのドキュメントで表示されるコンテンツをどのように結びつけるかの制御に関する制約がある。これらの制約（固定／可変コンテンツをコンテナと結びつけることを含む）は、ユーザが一つのドキュメントテンプレートから多数のドキュメントの世代をコントロールする主要な方法である。制約の一つの例は『このコンテナのコンテンツの高さは最大４インチです』である。また、別の制約の例は『コンテナのコンテンツの左エッジは、それぞれのドキュメントにおいて同じ水平位置で表示しなければならない』である。ここに記述される内容は、ＧＵＩを使ってこのような制約を表示、編集するためのいろいろな方法である。
【００５０】
イメージがページ上に定義された場所を持っているように、固定コンテンツの配置を指定するコンテンツプレイスホルダーは、デジタル印刷技術でよく知られている。コンテナは位置とサイズを持ち、それらは公知の技術で知られている手法で編集され、表示される。よって、以下の説明では、バリアブルデータ印刷に特化した方法における表示・編集に焦点を合わせる。
【００５１】
コンテナを用いることにより、ユーザは、ドキュメントにおけるコンテンツのサイズ（描画サイズ）や位置を指定することが可能となる。いく種類ものドキュメントが一つのドキュメントテンプレートから生成されるので、コンテナに多数の可能性と制約を設定することになるが、これらの設定（指定）や表示のために所定のユーザインターフェースが利用される。
【００５２】
１つのコンテナの辺は、関連付けられたコンテンツがドキュメント内で表示される仮想の境界線を定義する。したがって、コンテナの左辺を論じることは、関連付けられたコンテンツが、各ドキュメントにおいて、表示可能であるエリア内の最も左の辺を論じることと同じである。同様に、コンテナの高さを論じることは、生成されたドキュメントで関連付けられたコンテンツの高さの制約を論じることとして理解される。本明細書では、ユーザインターフェース１０３を参照してコンテナの辺あるいは大きさを論じるところで、この区別は明らかにされるであろう。
【００５３】
以下の記載において、コンテンツの表示を制限するために使われるある値を定義している用語『固定』は、全てのドキュメントで同じである。
【００５４】
（１）コンテナの幅が固定である場合、関連付けられたコンテンツに割り当てられる幅は、全てのドキュメントで同じになる。
【００５５】
（２）コンテナの高さが固定である場合、関連付けられたコンテンツに割り当てられる高さは、全てのドキュメントで同じになる。
【００５６】
（３）距離（リンクの長さ）が固定である場合、指定された距離は全てのドキュメントにおける制約となる。
【００５７】
（４）コンテナの左右辺が固定の場合、ページに関する辺の水平位置は全てのドキュメントで同じであることを意味している。ただし、コンテナの高さあるいは垂直方向の位置は、変化する可能性がある。例えば、コンテナの左辺が固定である場合、関連付けられたコンテンツの表示位置は、全てのドキュメントでその左辺の位置は同じ水平位置となるが、あるドキュメントではページの上の方に表示され、他のドキュメントではページの下の方に表示される可能性がある。
【００５８】
（５）コンテナの上下辺が固定の場合、ページにおける辺の垂直位置は全てのドキュメントで同じとなることを意味している。ただし、コンテナの幅あるいは水平位置はドキュメントによって変わる可能性がある。
【００５９】
（６）コンテナの垂直軸はコンテナの右辺と左辺に平行で、それらの中間に位置される仮想の垂直線である。もしコンテナの垂直軸が固定なら、当該コンテナの左右辺の水平位置の平均（すなわち左右の中央位置）は、すべてのドキュメントで同じとなる。この制約において、コンテナの幅は変化する可能性がある。しかしながら、左右辺が垂直軸にもっとも遠いものからもっともものまで、垂直軸は全てのドキュメントで同じ水平位置となる。なお、コンテナの高さと垂直位置はこの制約によって影響されない。
【００６０】
（７）同様に、もし水平軸が固定なら、コンテナの上辺と下辺の平均が同一の垂直方向位置に配置される。ただし、コンテナの幅と水平位置はこの制約によって影響されることはない。
【００６１】
（８）水平軸と垂直軸の両方が固定である場合、コンテナの中心位置が固定されていることを意味する。ただし、コンテナの幅・高さはこの制約によって影響されない。
【００６２】
（９）コンテナの角位置、コンテナの辺の中間位置、あるいはコンテナの中心位置が固定である場合、それぞれの位置はすべてのドキュメントで同じ場所となる。例えば、もしコンテナの左上角が固定なら、配置されたコンテナの左上位置が全てのドキュメントで同じになることを意味している。
【００６３】
（１０）垂直辺あるいは垂直軸は、ページの左辺もしくは右辺、あるいは左ページマージンもしくは右ページマージン、あるいは他の水平位置に関連付けされて固定することができる。同様に、水平辺あるいは水平軸はページの上辺もしくは下辺、あるいは上下ページマージン、あるいは他の垂直位置に関連付けされて固定することができる。
【００６４】
『固定』の反対は、コンテナの辺、軸、角、中間位置、あるいはドキュメント制約がドキュメント間（レコード間）で変化するかもしれないことを意味する『可変』である。例えば、ページ内では、バリアブルデータのサイズや量により、動的にレイアウトが変更されることを期待するが、特定のコンテナについては、大きさや位置を固定にしたり、また、ページの角のコンテナの四隅は固定にしたいということを所望する場合がある。そのため、本レイアウト編集アプリケーション１２１では、各コンテナ（部分領域）について、辺、軸、角、中間位置等を固定にするか、可変にするかを適宜設定できるようにした。これにより、ユーザはドキュメントテンプレート１８０の基本レイアウトを決定する場合に、ユーザが所望とするように基本レイアウトを作成することができる。
【００６５】
［コンテナ表示・編集］
−−新規コンテナの作成方法−−
コンテナは、テキストコンテナとイメージコンテナの２種類で記述される。テキストコンテナはテキストおよび埋め込みのイメージを持つ。イメージコンテナは、イメージだけを持つ。
【００６６】
図６で示されるように、新規のテキストコンテナあるいはイメージコンテナは、テキストコンテナツール４０４あるいはイメージコンテナツール４０５をマウス１３３でクリックし、ドキュメントテンプレート３０９上に四角形をドラッグすることによって、当該ドキュメントテンプレート３０９上に作成される。
【００６７】
あるいは、コンテナは、適切なツール４０４、４０５をアクティブにした後に、ドキュメントテンプレート３０９上で単にクリックすることによって作成されるようにしてもよい。この場合、マウス１３３のクリック操作に応じてデフォルトサイズのコンテナがテンプレート上に挿入されるとともに、当該新規コンテナの寸法等を設定するためのダイアログボックスあるいは他のプロンプトが提供される。なお、コンテナのサイズは自動的に前もって定義されるようにしてもよいし、あるいは、計算されたスキーマによって作成・配置される、等、種々の方法が考えられる。ここで生成されたコンテナをマウス等の入力手段により選択し、右クリックでプロパティを指示する等の操作を行うことにより、コンテナのプロパティダイアログが表示され、コンテナの制約を設定することができる。コンテナのプロパティダイアログＵＩ（部分領域設定手段に相当する）では、上述した各種の制約を設定することができる。また、コンテナのプロパティダイアログでは、コンテナのサイズ（幅、高さ）や位置を決定することができ、可変サイズにする場合は、コンテナの基本パターン（基本サイズと基準位置）を設定し、更に、最大コンテナサイズ（幅、高さ）と最小コンテナサイズ（幅、高さ）を設定することが可能となっている。
【００６８】
［コンテナの表示方法］
図７の（Ａ）から（Ｄ）はコンテナの辺に関する表示ルールを例示している。
【００６９】
アプリケーション１２１は、コンテナの辺の状態を表現するために、実線（アイテム５０３）あるいは点線（５０４）を用いて辺を表すとともに、アンカー（辺の近くに描画された５０６、５０７、５０９によって示されるような線、形状、アイコン）、ハンドル（移動、修正するために領域の辺上あるいは近傍に描画されたコントロール点、５０２）、スライダー（辺の両側に描画された短い並行線、図６の４１３）、拡縮アイコン（５０５）、色を用いる。
【００７０】
図７（Ａ）〜（Ｄ）に示されるコンテナ表示方法のルールは以下の通りである。
（１）それぞれの辺を固定するために、実線で描画する。
（２）幅が固定の場合は、左と右の辺を実線で描画する。
（３）高さが固定の場合は、上と下の辺を実線で描画する。
（４）軸は描画しない。
（５）（１）〜（３）によって描画されていないそれぞれの辺の近くには拡縮アイコンが描画され、それらの辺を点線で描画する。
（６）垂直辺と水平辺、あるいは垂直軸と水平軸のそれぞれのペアで、もし両者が固定なら、それらの交差点にアンカーが描画される。
（７）それぞれの固定辺で、もし辺のどこにもアンカーが描画されていなければ、エッジの中央にスライダーが描画される。
（８）垂直及び水平辺、あるいは垂直及び水平軸のそれぞれのペアで、アンカーやスライダーが描画されていない場合、それらの交差点にハンドルが描画される。
【００７１】
ルール（１）、（２）、（３）で定義された線は、前述したように固定あるいは制限されているため実線で描画される。ルール（５）のように、可変の辺は、点線で描画される。ルール（６）、（７）、（８）で定義された固定された点は、アンカーを表示し、いくつかの固定された辺はスライダーを表示し、他はハンドルを表示する。
【００７２】
上記のルールは、ユーザにより後で設定された制約が優先される。つまり、後で別の制約が設定された場合、上記のルールが描画されるべき辺に影響すれば、実線や点線の描画内容が変更されることになる。
【００７３】
可変の辺が描画される場所は、コンテナのコンテンツに依存する。後に説明するように、ドキュメントテンプレートにコンテンツがマージされて、ユーザインターフェースで可視になることを意味する、『動的な校正処理』が使われる。代わりの実行は、すべてのドキュメントで平均化されるコンテナのコンテンツエリアで、あるいは、可変の辺がユーザインターフェースで、どこにレイアウトされるべきか決定するほかの手段で使われることができる。
【００７４】
これらのコンテンツ表現は、コンテナの各辺の状態を表示するグラフィカルな手段を提供する。その表現の解釈は下記のとおりである。
（１）図６の４１０の辺のように、点線はコンテナのコンテンツに依存してドキュメント内の辺の位置が変化することを意味する。
（２）実線は、固定されている（辺４１４）、あるいはコンテナの幅・高さが固定されている（コンテナ４０８では４辺が実線であり、両方が固定されている）ために制限された辺であることを意味する。
（３）アンカーは辺および軸が交差した場所が固定されていることを意味する。それゆえ、アンカー点は、すべてのドキュメントの水平、垂直位置で現れることになる。アンカーは当然固定される。図６のアイコン４０９は、辺４１４の交差する位置が固定されていることを意味しているアンカーアイコンの例である。
（４）スライダーは関係付けられた辺の長さが固定されているが、並行移動する可能性があることを意味する。例えば、図６でスライダー４１３はコンテナ４０８のコンテンツが、ドキュメント内で特定のダイアグラムで表される位置の、左あるいは右に表示されるかもしれない。例えば、コンテナ４０８と関連付けられている（リンク設定されている）コンテナ４０７に流し込まれるデータの画像サイズもしくはテキスト量が少ない場合は、コンテナ４０７のサイズが小さくなるため、コンテナ４０８は、左方向にスライド（並行移動）してレイアウトされて表示されることになる。また、コンテナ４０７のサイズが大きくなる場合は、逆にコンテナ４０８は右方向にスライドしてレイアウトされることになる。
【００７５】
これらのアイコン・辺のいくつかあるいは全ては、どのツール、どのコンテナを選択・ハイライトあるいはアクティブにするかによって、描画されたりされなかったりする。一般的に、コンテナの辺・アイコンはドキュメントテンプレートのデザインの手助けであるため、印刷物には描画されない。
【００７６】
なお、前述したように、コンテナの幅・高さの基本値・最小値・最大値の基本パターンの設定は、副次的なダイアログウインドウに表示される。
【００７７】
図７の（Ａ）で、コンテナ５０１は、幅・高さの両方が固定されていない（可変である）。固定された辺５０３は実線で表現され、可変の辺５０４は点線で表現されている。拡縮アイコン５０５は、隣接する辺５０４が可変であることを示す。他の形態のインジケータを代わりにあるいは追加的に用いてもよい。
【００７８】
図７の（Ｂ）において、コンテナ５０１は幅・高さ両方が可変である。アンカーアイコン５０６が、交差している両方の辺５０３の角の位置が固定されていることを明示的に表すべく追加されている。
【００７９】
図７の（Ｃ）において、コンテナ５０１は、コンテナの幅及び高さの両方が可変であり、任意のアンカーアイコン５０７で示されるような中心点の周りを平等に広がるという状態を示している。すなわち、コンテナ５０１はアンカーアイコン５０７を中心に拡大あるいは縮小が可能である。ここでの拡大／縮小は、アンカーアイコン５０７の位置が常にコンテナ５０１の中心点となるようにレイアウト調整される。
【００８０】
図７の（Ｄ）において、コンテナ５０１は、上辺５０８が固定されているが、幅・高さの両方が可変である。上辺５０８の中心に位置付けられて示されるアンカーアイコン５０９は、固定されている。そしてコンテナ５０１の左辺・右辺（５０２）は、アンカーアイコン５０９を通って垂直な中心軸（垂直軸）の周りを、拡大・縮小する。
【００８１】
［リンクの設定方法］
次に、コンテナ同士を関連付けるためのリンクの設定について説明する。図８はリンクの設定方法を示したフローチャートである。また図９の（Ａ）〜（Ｃ）はリンク設定時のユーザインターフェース（ＵＩ）の遷移例を示している。図８，図９を用いてコンテナにリンクを設定する方法について説明する。
【００８２】
まず、ステップＳ６０１において、レイアウト編集アプリケーション１２１は、ユーザインターフェース画面のワークエリア３０６上に編集すべく選択されたドキュメントテンプレートを表示する。リンクを設定するためには、リンクを設定するためのコンテナ（最低２つ）がドキュメントテンプレート上に作成されている必要がある。図９の（Ａ）〜（Ｃ）では、ステップＳ１６０１で２つのコンテナを作成してリンクを設定する場合のユーザインターフェースの遷移例を示している。
【００８３】
次に、ステップＳ６０２において、レイアウト編集アプリケーション１２１は、前述したリンクツールが選択状態（図６のボタン４０６をクリックすることにより選択状態となる）になったかを判断する。リンクツールが選択上体でなければ、必要に応じて他の各種処理を実行し（ステップＳ６０９）、ステップＳ６０２に戻る。
【００８４】
図９の（Ａ）において、コンテナ６０１と６０２はすべて固定されている辺で構成されているものとする。また、６０３と６０４は、図６の４０９と同じであり、アンカーを意味する。６０５はマウスポインタを意味している。さて、リンクツールが選択状態となっている間に、ユーザはリンクを設定する２つのコンテナのうちの一方（コンテナ６０１とする）をクリックして選択する。この操作に応じて、レイアウト編集アプリケーション１２１のユーザインターフェース１０３は第１のコンテナが指定されたことを認識し（ステップＳ６０３）、選択されたコンテナを特定する情報を保持する。また、以降のマウスカーソルの移動に応じた軌跡を画面に表示するようにする（ステップＳ６０４）。例えば、図９の（Ｂ）における線分６０６は、（Ａ）の状態におけるクリック位置と現在のマウスカーソルの位置とを結んだ線を示しており、このＵＩによりどの位置にリンクが設定されるのかをユーザに明示することができる。
【００８５】
次に、ユーザは、図９の（Ｂ）で示されるように、もう一方のコンテナ（コンテナ６０２）までマウスポインタを移動してクリックする。この操作に応じて、ユーザインターフェース１０３は第２のコンテナが指定されたことを認識し（ステップＳ６０５）、レイアウト編集アプリケーション１２１は、ステップＳ６０４で保持した第１のコンテナと、ステップＳ６０５で指定が認識された第２のコンテナとの間にリンクを設定する（ステップＳ６０６）。
【００８６】
こうして、ユーザにより選択された２つのコンテナ６０１，６０２の間にリンクが設定されると、リンクＵＩ６０７が表示される（ステップＳ６０７）。更に、このリンク設定を受けて、コンテナの表示状態は図９の（Ｃ）の状態になる（ステップＳ６０８）。すなわち、リンクが設定されたことにより、コンテナのＵＩが自動的に変更される。ここでは、リンクによって関連付けられた辺が可変となり、点線で示される。図９の（Ｃ）において、６０８は点線で示されている辺であり、前述した通り可変の辺を示すものである。
【００８７】
なお、図９の（Ｃ）のようなコンテナの辺の状態の変化は、リンクを設定したことによりコンテナの辺を可変にする必要が生じたことにより自動的に実行されたものであり、リンクを設定したにもかかわらず全ての辺が固定であるという矛盾の発生を防ぐことを目的としている。また、６０９は図７の５０５と同じで、リンクを設定したことにより、コンテナが変化できる方向をユーザに視覚的に示したマークである。また、図９の（Ｃ）の例では、左のコンテナの右辺と右のコンテナの左辺が可変な状態へ変化したが、これは一例であり、たとえば、右コンテナが図６の４１３で示したスライダーを持つ設定に変化してもかまわない。
【００８８】
［長さが可変のリンクの設定］
図１０では可変リンクの設定のためのユーザインターフェースを表している。図６と同様にアプリケーションウインドウ３０１とツールバー３０３がある。図１０の状態では、ドキュメントテンプレート３０９上にコンテナ１２０３とコンテナ１２０４が存在する。それぞれのコンテナはアンカーアイコン１２０１、アンカーアイコン１２０２と固定された辺１２０５、辺１２０６を含んで構成されている。コンテナ１２０３と１２０４の間には可変サイズのリンク１２０９があり、コンテナ１２０３とコンテナ１２０４を結んでいる。コンテナ１２０３とコンテナ１２０４の間にはリンクが設定されているのでそれぞれの右辺１２０７と左辺１２０８は点線で表現されている。このため各コンテナにインジケーター１２１０、インジケーター１２１１が表示され、それぞれ辺１２０７と辺１２０８が可変であることを示している。
【００８９】
また、図１１は、本願の特徴的構成であるリンク設定手段におけるユーザインタフェース画面であり、リンク１２０９の情報をセットするためのダイアログウインドウ７０１の例である。このダイアログは、タイトルバー７０２、ツールボタン７０３、ダイアログウインドウの開閉を行うボタン７０４、各種の情報をセットするエリア７０９で構成されている。このダイアログウインドウではリンクタイプが可変長（７０７）のリンクであるか、あるいは固定長（７０６）のリンクであるかの択一的な選択を行える。リンクタイプが可変の場合にはリンクの長さの最小値（Min.Distance７１０）、最大値（Max.Distance７１２）、ならびに基準値（Distance７１１）が設定できる。図１１のダイアログ７０１は、たとえば、図８，図９で説明したリンクの設定操作によって２つのコンテナ間にリンクを設定した後に、この設定されたリンクをクリック等の操作によって選択したときに表示される。あるいは、リンクを設定した直後に、当該リンクに関するダイアログウインドウ７０１が自動的に表示されるようにしてもよい。ここで各コンテナ間の距離の基準値７１１は、データを流し込んだ際に各コンテナのサイズが変更されない場合に用いられるリンクの長さである。
【００９０】
図１２は、本実施形態のユーザインターフェース１０３による可変リンクの設定手順を説明するフローチャートである。例えば図１５のコンテナＡとコンテナＢの間に図８、図９で説明した手順でリンクを張ると、まず固定サイズのリンクが張られる。そして、このリンクを選択して図１２に示す処理を実行することにより、当該リンクを固定サイズのリンク１５０６（図１５）の状態から可変サイズのリンク１２０９（図１０）へと遷移させることができる。
【００９１】
まず、マウスにより所望のリンク（たとえばリンク１５０６）を選択状態とし、リンクプロパティを表示させるための所定の操作が行われると、レイアウト編集アプリケーション１２１のユーザインターフェース１０３は、リンクプロパティの表示指示の入力として認識する（ステップＳ８０１）。リンクプロパティの表示指示を認識すると、選択状態のリンク（以下、対象リンクという）に対応したプロパティダイアログウインドウ７０１（図１１）が表示される。次に、ユーザインタフェース１０３は、リンクプロパティを表示する（ステップＳ８０２）。なお、リンクの選択操作としては、コンテナの基本パターンの設定時と同様に、マウスの右クリックあるいはキーボードの特定のキーの操作等、いかなるものであってもよい。
【００９２】
ステップＳ８０２で表示されるダイアログウインドウ７０１には選択されたリンクの現在の状態が示される。本例では、リンク１５０６が選択されたので、この段階ではリンクサイズは固定であり、Link Type７０５においては、固定長を示すFixed Length７０６が選択されている。
【００９３】
このダイアログウインドウ７０１においてリンクを固定サイズから可変サイズに変更するために、Link Type７０５においてリンクサイズを可変に設定するためのFlexible Length７０７を選択する。これによりLink Distance７０８内に配置されているMax. Distance７１２、Min. Distance７１０、Distance７１１が有効になり、数値の設定が可能となる。ユーザは、リンクの可変サイズを設定するために、そのリンクの長さの最大値をMax. Distance７１２に、最小値をMin. Distance７１０に、現在の値をDistance７１１に設定することになる。
【００９４】
設定を終えると、ユーザは一般的なダイアログウインドウ開閉ボタン７０４によって当該設定の適用を指示する。ユーザインターフェース１０３はこの指示を検出すると、ステップＳ８０３からステップＳ８０４以降へ処理を進め、当該対象リンクに上記設定状態を反映させる。
【００９５】
すなわち、まず、ステップＳ８０４において、レイアウト編集アプリケーション１２１は、対象リンクが固定サイズか可変サイズかを判定する。固定サイズが指定されていればステップＳ８０８へ進み、対象リンクを「固定サイズ」に設定し、ステップＳ８０７で対象リンクの表示状態を「固定リンク」を表す「実線」とする。
【００９６】
一方、ステップＳ８０４において、可変サイズが指定されていれば、ステップＳ８０５へ進み、レイアウト編集アプリケーション１２１は、対象リンクを「可変サイズ」に設定する。そして、ステップＳ８０６にて、上記ダイアログウインドウ７０１によって設定された対象リンクの現在値（基準値）、最大値、最小値を登録する。その後、ステップＳ８０７で対象リンクの表示状態を「可変リンク」を表す「点線」とする。この結果、図１０のリンク１２０９に示すような状態にリンクのＵＩ表示が変化する（ステップＳ１３０６）。以上のダイアログウインドウ７０１の設定情報はメモリに格納される。
【００９７】
なお、Distance７１１に設定される現在の値には、現在のレイアウトとして配置されているコンテナの間の距離がデフォルト値として自動的に入力されるようにしてもよい。
【００９８】
以上、ユーザインターフェース１０３によるドキュメントテンプレートのレイアウト編集について説明した。以下、データソースを各コンテナに流し込んだ場合における、データサイズ（描画サイズ）に応じたコンテナレイアウトの調整処理について説明する。
【００９９】
＜レイアウトエンジンによるレイアウト計算処理＞
［レイアウト計算方法（全体フロー）］
本実施形態のレイアウト編集アプリケーションは、ユーザインターフェース１０３を用いてコンテナを作成し、そのコンテナ間に関連付け（リンク設定）を行ってレイアウトを作成するレイアウトモードと、レイアウトエンジン１０５により、作成したレイアウトにデータソースの各レコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。このプレビューモードにおいて、実際のレコードが挿入され、前述した優先順位に従ってレイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レイアウトエンジン１０５が各コンテナにデータを挿入してレイアウトを計算するが、その際の計算方法はプレビューモードと同じである。
【０１００】
図１３はレイアウト計算のフローを示している。まず、プレビューモードが選択される（ステップＳ１００１）。プレビューモードになったら、レイアウト編集アプリケーション１２１は、ユーザにプレビューするレコードをデータソースより選択させ、選択されたレコードの各フィールドデータを各コンテナに挿入するよう決定する（ステップＳ１００２）。各コンテナへのフィールドデータの挿入が決定されると、レイアウト編集アプリケーション１２１は、そのレコードをレイアウトするための計算を行い、必要に応じてレイアウト調整を行う（ステップＳ１００３）。ステップＳ１００３におけるレイアウト計算の詳細については後述する。そして、レイアウト編集アプリケーション１２１は、ステップＳ１００３で計算されたレイアウトを表示する（ステップＳ１００４）。レイアウト編集アプリケーション１２１は、他のレコードについてもプレビューを行うかどうかをユーザの指示により判断する（Ｓ１００５）。ステップＳ１００５で、他のレコードについてプレビューを行う必要がないと判断した場合は、プレビューモードを終了する（Ｓ１００７）。他のレコードについてプレビューを行うのであれば、レイアウト編集アプリケーション１２１は、他のレコードを選択して再度レイアウト計算を行い、プレビューを行う（ステップＳ１００６）。
【０１０１】
なお、プレビューモードでなく印刷時においては、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、ステップＳ１００４は存在せず、ステップＳ１００５は印刷するレコードを全て処理したかの判断を行う。ステップＳ１００３でレイアウト計算された結果を、描画出力して出力し、プリンタドライバを用いて印刷データとして生成し、プリンタに印刷データが出力される。この場合、全てのレコード（印刷すべく指定された全レコード）について印刷データの出力が終了した時点で本処理を終了することになる。
【０１０２】
［レイアウト計算方法（詳細）］
次に、上記ステップＳ１００３によるレイアウト計算の詳細について説明する。図１４は本実施形態によるレイアウトの優先順位を設定しない場合のレイアウト計算の方法を示したフローチャートである。また、図１８はそのときのＵＩ表示例を示した図である。本図はレイアウト計算の処理方法についてのみ説明するためのフローチャートであるため、バリアブルデータプリントの１レコードの印刷／プレビュー時のレイアウト計算方法に相当する。複数レコードの場合は、下記の処理が繰り返されることになる。
【０１０３】
まず、レイアウト編集アプリケーション１２１は、レイアウトを計算するコンテナの集合を求める（ステップＳ１１０１）。レイアウト計算は、関連付けられたコンテナを一つの集合として計算を行う。例えば図１５を参照すると、ページ上に４つのコンテナがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナＡとコンテナＢ、そしてコンテナＣとコンテナＤがリンクによって関連付けされている。したがって、コンテナＡ、Ｂが集合１、コンテナＣ、Ｄが集合２となる。すなわち、リンクによって接続されたコンテナ群を一つの集合として特定する。前述したように、１５０１はアンカー、１５０２は固定された辺、１５０３はコントローラー、１５０４は可変の辺の変化方向を示している矢印、１５０５は可変の辺、１５０６はリンク、そして１５０７はスライダーを示している。
【０１０４】
次に、レイアウト編集アプリケーション１２１は、ステップＳ１１０１で求めたコンテナの集合から、レイアウトを計算するために一つを選択する（Ｓ１１０２）。そして、選択したコンテナの集合について、レイアウトの計算を行う。まず、選択したコンテナの集合に含まれる可変要素である２つのコンテナ（Ａ，Ｂ）について、流し込まれるデータの画像サイズもしくはテキスト量から各コンテナがなにも制約を受けない場合の大きさを計算する。具体的には、レイアウト編集アプリケーション１２１は、コンテナＡが画像データ用コンテナであるか、テキスト用コンテナであるかを判断する。この判断は、前述したように、コンテナに対して設定されている属性により判断できる。次に、レイアウト編集アプリケーション１２１は、コンテナＡに流し込まれるデータを読み込み、コンテナＡが画像データ用コンテナである場合は、その画像データのサイズ（幅、高さのピクセル数、および解像度）がコンテナＡの制約を受けない場合の大きさになる。また、コンテナＡがテキスト用コンテナである場合は、そのテキストデータも文字数と、コンテナＡのコンテナ属性で指定されているフォントタイプ、フォントサイズ、文字ピッチ、行ピッチなどの文字属性に基づいて、コンテナＡに流し込まれるべきデータ量が計算できる。ここで、テキスト用コンテナの場合は、コンテナＡの縦横比が制約を考えないと決定できないため、制約を当てはめる。図１５の例では、コンテナＡは、左上および左下の角にアンカーが設定されているため、高さ（縦方向）が固定となる。よって、レイアウト編集アプリケーション１２１は、コンテナＡの基本パターンとして設定されている幅（横方向）のコンテナＡに、計算したデータ量（テキスト量）の文字を流し込めるか否かを判断する。すべて流し込めると判断された場合は、コンテナＡは、基本パターンで設定されているサイズ（幅、高さ）に変更はない。また、すべて流し込めないと判断された場合は、コンテナＡは、アンカー設定により高さが固定であるため、横方向に伸びることになる。ここで、レイアウト編集アプリケーション１２１は、コンテナＡの幅がどれだけになると、計算したデータ量の文字を流し込めるかを計算し、コンテナＡのサイズを算出する。
【０１０５】
次に、レイアウト編集アプリケーション１２１は、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う（Ｓ１１０３）。レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとレイアウトされるサイズとの差が、できる限り同じになるように行われる。レイアウト編集アプリケーション１２１は、ステップＳ１１０２で算出したコンテナの集合のサイズ、つまりコンテナＡとコンテナＢとリンク１５０６（ここでは固定リンク）の合計サイズを求め、この合計サイズと、基本レイアウトにおける当該コンテナの集合のサイズ（図１５の例ではコンテナＡとコンテナＢのそれぞれのアンカーアイコンの距離に相当する）との差を求める。コンテナＡやコンテナＢの幅が大きくなると前ステップで計算されている場合は、差分値が発生する。レイアウト編集アプリケーション１２１は、この差分値をコンテナの集合の各要素に均等に分配することでレイアウト調整を行う。
【０１０６】
レイアウト編集アプリケーション１２１は、レイアウトの最適化を行い、ルールに違反していた場合は、再度ルールを違反しないように計算をする（Ｓ１１０４）。ここで記述したルールとは、レイアウト作成時にユーザによって設定される制限であり、コンテナのサイズの可変範囲や位置の制限、可変リンクの場合はリンクの長さの変化の制限などである。ルールを違反しないようにレイアウトが計算されたら、その集合のレイアウトは完成される。そして、ステップＳ１１０２〜Ｓ１１０４の処理をページ上のすべての集合について施し、レイアウト編集アプリケーション１２１は、ページ全体のレイアウトを計算する（Ｓ１１０５）。
【０１０７】
次に、本実施形態の可変リンクを用いたレイアウト計算方法について更に詳しく説明する。
【０１０８】
今、２つのコンテナがリンクによって接続され、図１６（Ａ）に示すように配置およびサイズが設定されたとする。すなわち、コンテナ１７０１の左辺および上下辺は固定され、コンテナ１７０２の右辺および上下辺が固定されている。したがって、コンテナ１７０１と１７０２からなる集合の全体の横方向サイズＤは固定である。リンク１７０３は可変に設定されており、基準値（ダイアログウインドウ７０１の現在値として設定された値）がＣs、可変範囲（ダイアログウインドウ７０１の最小値から最大値）がＣmin〜Ｃmaxに設定されている。なお、各コンテナ１７０１、１７０２の可変範囲は、所定のユーザインターフェースによりそれぞれＡmin〜Ａmax、Ｂmin〜Ｂmaxに設定されているものとする。この状態でコンテンツが各コンテナに流し込まれたときのレイアウト計算について上記の図１４及び図１７のフローチャートを参照しながら説明する。
【０１０９】
まず、ステップＳ１１０１、Ｓ１１０２でコンテナ１７０１，１７０２を含む集合を計算対象の集合として選択する。そして、ステップＳ１１０３及びＳ１１０４により、レイアウト設定された制約の範囲でレイアウトの最適化を行う。以下、ステップＳ１１０３及びＳ１１０４による、選択された集合におけるレイアウトの最適化について説明する。
【０１１０】
まず、レイアウト編集アプリケーション１２１は、図１４と同様の計算手法により、各コンテナにデータを挿入した際のコンテナの理想的な大きさを計算する（ステップＳ１８０１）。図１６（Ａ）の例では、コンテナ１７０１，１７０２の各々の高さは固定であるので、流し込まれるコンテンツに基づいてコンテナに必要とされる幅（これを理想幅と称する）が算出される。例えば、コンテンツがイメージデータの場合は、その画像サイズをコンテナの高さに一致させた場合に、画像の縦横比から理想値を決定できる。コンテンツがテキストの場合は、各行（文頭から改行までを行という）を１列に並べ、コンテナの高さと一致するまでコンテナの横幅を狭めていくことで、理想値を決定できる。コンテナの横方向及び高方向が可変に設定されている場合は、コンテンツがイメージデータの場合は当該画像サイズを用いて理想値を決定する。コンテナの横方向及び高方向が可変で、コンテンツがイメージデータの場合は、各行を１列に並べたときの最大横幅を理想値とする。そして、コンテナ１７０１と１７０２の理想幅とリンク１７０３の基準値とによる集合の合計幅と、当該集合に対して設定されている設定幅Ｄとを比較する（ステップＳ１８０２）。
【０１１１】
今、コンテナ１７０１とコンテナ１７０２について算出された理想幅をそれぞれＡc，Ｂcとすると、リンク１７０２の基準値（図１１のダイアログでDistance７１１に設定された値）はＣsであるので、レイアウト編集アプリケーション１２１は、Ａc＋Ｂc＋ＣsがＤと等しいか否かを判定する（ステップＳ１８０３）。等しければ、レイアウト編集アプリケーション１２１は、それぞれの幅Ａc，Ｂcとリンクの長さＣsによりレイアウトを決定することになる（ステップＳ１８０４）。
【０１１２】
一方、Ａc＋Ｂc＋Ｃs≠Ｄの場合は、レイアウト編集アプリケーション１２１は、その差分を各コンテナおよび可変リンクに均等に分配する（ステップＳ１８０５）。より具体的には、設定幅Ｄとの差分値δを、
δ＝（Ａc＋Ｂc＋Ｃs）−Ｄ
により求め、差分値δを２つのコンテナ１７０１、１７０２と１つのリンク１７０３に分配する。すなわち、
Ａ’＝Ａc−（δ／３）
Ｂ’＝Ｂc−（δ／３）
Ｃ’＝Ｃｓ−（δ／３）
を計算することによりレイアウトを最適化する。この最適化によれば、設定幅Ｄとなるように、コンテナボックスの幅やリンクの長さが伸縮することになる。なお、ここでは差分を各要素（各コンテナおよび可変リンク）に均等に分配したが、これは横方向のみ、つまり１次元で考慮できる場合に有効である。図１６（Ｃ）で後述するように、アンカー設定から２次元で差分の分配を考慮する場合は、ユーザが決定した基本レイアウトをなるべく維持するようにレイアウト調整を行うために、均等分配は行わない。
【０１１３】
図１４のステップＳ１１０４および図１７のステップＳ１８０６では、レイアウト編集アプリケーション１２１がルール違反が発生したかを検出する。たとえば、上記算出されたＡ’〜Ｃ’が、レイアウト設定時に設定された各コンテナの変化範囲（Ａmax、Ａmin、Ｂmax、Ｂmin）、リンクの長さの変化範囲（Ｃmax、Ｃmin）を超えていないかをチェックする。設定範囲を超えるものがあれば、ステップＳ１１０３へ戻り、ルールに適合するようレイアウト計算をやりなおす。この計算の一手法としては、算出された大きさが設定範囲を超えてしまった要素の大きさを設定範囲内に固定し、残りの要素に差分値を分配するようにする（ステップＳ１８０７、Ｓ１８０５）。たとえば、（Ａc＋Ｂc＋Ｃs）が設定幅Ｄより大きく、上記式により差分値を分配した結果、得られたリンクの長さＣ’が設定された最小値Ｃminよりも小さくなってしまった場合は以下のように処理される。
【０１１４】
まず、リンクの長さを最小値Ｃminに決定し、差分値δ’を、
δ’＝（Ａc＋Ｂc＋Ｃmin）−Ｄ
により算出する。そして、このδ’をコンテナ１７０１と１７０２の幅に分配する。すなわち、
Ａ’＝Ａc−（δ’／２）
Ｂ’＝Ｂc−（δ’／２）
Ｃ’＝Ｃmin
により、各コンテナとリンクのサイズを決定する。
【０１１５】
なお、上記では横方向のレイアウト計算を説明したが、縦方向に並ぶコンテナと可変のリンクからなる集合を対象とした縦方向のレイアウト計算にも同様に適用できることは明らかである。また、同一方向（横方向あるいは縦方向のいずれか）に３つ以上のコンテナが並び、それらをリンクにより連結している場合にも容易に拡張できる。すなわち、図１６の（Ｂ）に示されるように、コンテナ１７０１，１７０２，１７０４と可変リンク１７０３，１７０５から構成された集合において、各コンテナ理想幅がＡc、Ｂc、Ｅｃであり、リンクの基準値がＣs、Ｆsである場合、集合の設定幅Ｄと“Ａc＋Ｂc＋Ｅｃ＋Ｃs＋Ｆs”を比較し、一致しなければそれらの差分を各コンテナとリンクに均等に分配してレイアウトを調整すればよい。
【０１１６】
また、計算対象レイアウト計算が対象とする方向に大きさが固定されたコンテナあるいはリンクが含まれている場合にも容易に拡張できる。この場合、それら固定のコンテナやリンクには算出された差分値の分配を行わないようにすればよい。
【０１１７】
また、上記ではコンテナと可変リンクに均等に差分を分配したが、可変リンクと各コンテナとに優先度を設け、優先度の高い領域に優先的に差分を分配するようにしてもよい。例えば、図１１に示したリンクのプロパティ設定ＵＩにおいて、「コンテナより優先的に可変する」というチェックボックスを設け、このチェックボックスにチェックされている場合は、可変リンクが優先的に差分が分配されるようになる。この場合、まず可変リンクの長さをその可変範囲内で調整することにより集合の幅を設定幅に一致させるようにする。可変リンクを最大値もしくは最小値としても設定幅とならない場合は、コンテナにその差分値を分配してレイアウトを調整する。すなわち、本実施形態の１つの特徴は、レイアウト調整において少なくとも可変リンクの長さの調整を行うことが重要であり、これにより見栄えのよいレイアウトを実現しようとするものである。
【０１１８】
更に、コンテナのレイアウトは、横方向と縦方向の２次元的なレイアウトを扱う場合も多い。たとえば図１６の（Ｃ）に示されるようなレイアウトの場合はレイアウト調整の対象となる集合にコンテナ１７０１，１７０２，１７０４と、リンク１７０３，１７０５が含まれる。本実施形態では、まず横方向に調整を行い、後に縦方向に調整を行う。すなわち、コンテナ１７０１と１７０２の間で、上述した手順で設定値Ｄに収まるようレイアウト調整を行い、その後、コンテナ１７０３と１７０４の間で設定Ｇに収まるようレイアウト調整を行えばよい。しかし、横方向に調整を行い、後に縦方向に調整を行うという調整方法では、ユーザが所望とする基本レイアウトからずれたレイアウト結果になることが想定される。そのため、各コンテナについて、基本パターン（縦横比）からなるべくずれないように、基本パターンの幅とレイアウト調整後の幅の差の２乗と、基本パターンの高さとレイアウト調整後の高さの差の２乗との和を求め、これをすべてのコンテナについて算出する。そして、レイアウト編集アプリケーション１２１は、各コンテナの２乗の和の合計値が最小となるように、それぞれのコンテナの幅と高さを算出してレイアウト調整を行っても良い。この手法を最小２乗法と呼ぶ。この最小２乗法を用いると、ユーザが当初設定した基本レイアウトから大きく外れることがなく、全体としてバランスのとれた最終レイアウトを決定することができる。
【０１１９】
図１８の（Ａ）〜（Ｃ）は優先順位の設定なしでのレイアウト時のＵＩ例である。
【０１２０】
図１８の（Ａ）は、あるレコードが挿入されレイアウトが決定されている状態を表している。１３０１と１３０２はアンカー、１３０３と１３０４は固定された辺、１３０５は可変の辺、１３０６は可変の辺の変化方向を示している矢印、１３０８はリンクをそれぞれ示している。この状態において、レコードを変更し、異なったサイズのコンテンツを挿入する。図１８の（Ｂ）は（Ａ）の状態に新しいコンテンツのサイズを重ねて示している。１３０９はそれぞれのコンテナに挿入されるコンテンツのサイズを表している。そして、レイアウト計算が行われる。図１８の（Ｃ）はレイアウト計算された結果を示している。計算後の各コンテナのサイズは、実際挿入されるコンテンツのサイズと同等に差異があるように計算され、且つ前述したルールを違反しないように計算される。図１８の（Ｃ）で示されるように、（Ｂ）で示した挿入されるコンテンツサイズ（１３０９）と計算後のコンテンツサイズ（１３１０）は、双方において同等な差異がある。
【０１２１】
次に、図１９、図２０を用いて、コンテナに挿入されるデータがイメージである場合の可変リンクの効果を説明する。
【０１２２】
図１９は固定サイズのリンクを使用した場合のレイアウト結果を示している。レイアウト計算方法は前述したとおりに従って行われる。例えば図１０においてコンテナ１２０３とコンテナ１２０４にそれぞれ違ったサイズのイメージデータが挿入された場合を考える。この場合、それぞれのコンテナはデータの大きさを最適とみなし、コンテナ１２０３は挿入されたイメージサイズになる枠８０４（最適コンテナサイズ）に近づこうと右方向へ、同様にコンテナ１２０４は挿入されたイメージサイズになる枠８０５（最適コンテナサイズ）に近づこうと左方向へサイズを変更しようとする。しかしコンテナ１２０３とコンテナ１２０４はアンカー１２０１とアンカー１２０２によってそれぞれ左辺１２１２と右辺１２１３の移動ができず、上記のようにサイズを変更しようとすると両者の間隔を狭めるしかない。しかしながら、コンテナ間には固定サイズのリンク８０３が設定されており、レイアウト計算時にその長さ維持されるため、コンテナ１２０３とコンテナ１２０４のサイズが変更されることになる。
【０１２３】
その結果、コンテナ１２０３とコンテナ１２０４はデータの縦横比に合わせた最適なサイズを確保することが出来ず、最終的に図１９に示すように、最適なサイズ（枠８０４、枠８０５）よりも小さくなってしまう。すなわちリンク８０３のサイズが固定であるためコンテナ８０１とコンテナ８０２は最適サイズを達成できない（図１９において、各コンテナ内の一点差線で示した範囲がデータの持つ縦横比である）。
【０１２４】
一方、図２０は図１９と同様の状態でリンクを可変サイズにした場合を示している。この場合、上記の例でコンテナ１２０３とコンテナ１２０４の間には図示の通り可変サイズのリンクが設定されている。したがって、コンテナ１２０３とコンテナ１２０４のサイズが変更される際には、リンクサイズが縮まることでコンテナ１２０３とコンテナ１２０４のサイズを図１９の例より大きくすることができる。この結果、挿入されるデータサイズに合わせた最適なサイズを達成できる、あるいはより挿入データサイズ（最適サイズ）に近いコンテナの枠を設定することが出来る。図２０はこの結果を示しており、可変リンク１２０９はレイアウト計算の結果、可変リンク９０３に示されるようなサイズ状態となる。なお、この場合コンテナ１２０３とコンテナ１２０４はそれぞれ最適なサイズ（データサイズに合った大きさ）になっている。
【０１２５】
＜第２実施形態＞
上記第１実施形態では、ユーザインターフェース１０３により可変サイズのリンクをコンテナ間に張るにおいて、まず固定リンクを設定し、その後所望のリンクを選択して図１１のごときダイアログを表示させることで可変リンクへ設定した。第２実施形態では、可変リンクの設定のためのユーザインターフェースの変形例を示す。
【０１２６】
図２１は第２実施形態によるユーザインターフェース例を示す図であり、図１０のユーザインターフェースに新たなリンクツール４０７を加えている。リンクツール４０６は固定リンクを張るためのツールであり、可変サイズのリンクに変更するには図１２に示されるような手順（第１実施形態）が必要となる。
【０１２７】
一方、リンクツール４０７はコンテナ間にリンクを張る時点ですでに可変である点に違いがある。これにより最初から可変リンクを張りたい場合にプロパティダイアログウインドウを開いて設定を固定リンクから可変リンクに変更する手間が省けるといった効果がある。リンクの設定方法は前述の方法に従って行うが、コンテナ間に張られた可変サイズのリンクにはあらかじめ設定された値（最大値、最小値、リンク時のサイズ）があることが前提となる。同一の可変領域を持ったリンクを多数のコンテナ間に張りたい場合などは、前述の効果に加え、一度可変サイズを指定しておけば迅速にコンテナ間にリンクを張れるような効果を期待できる。このリンクツール４０７を使用した際のコンテナ間に設定されるサイズ（リンク時のリンクサイズ）は、その時現在のコンテナ間の距離がそのまま保たれるのが好ましい。この設定は一般的に図１１の説明において前述したようなプロパティダイアログウインドウにおいてあらかじめ設定をしておき、リンクツール４０７を選択した時にはそこで設定された値をデフォルト値として用いてコンテナ間にリンクを張ることとなる。当然ながらリンクツール４０７を使用して張られたリンクのＵＩ表示は、コンテナ間にリンクを張る時点で前述のように固定の表示と区別したものになり、例としては図２０のリンク表示９０３のように可変を示す点線の表示等でＵＩに表示される。その後のレイアウト計算については前述のレイアウト計算ルールに従ってレイアウトされる。
【０１２８】
以上のように、上記各実施形態によれば、コンテナの最適サイズを優先することができ、コンテナがより理想に近づいたサイズでレイアウト可能となり、ユーザの望んだレイアウト結果を提供することが出来る。このため、例えば、最適でないコンテナサイズになってしまうことを回避することが容易になり、リンクのサイズが可変となることで、コンテナ間の距離をその時々に挿入されるデータ量に応じて各コンテナサイズが最適になるように柔軟に変更し、異なるデータ量のデータが入ってきたとしてもよりデータに合わせた最適サイズのコンテナサイズを計算することができ、その結果、最適なレイアウトをユーザに提供することが出来る。
【０１２９】
＜他の実施形態＞
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【０１３０】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１３１】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク
，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【０１３２】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１３３】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【０１３４】
【図１】実施形態によるバリアブルプリントシステムの構成を示す図である。
【図２】図１におけるホストコンピュータの構成の概略を示す図である。
【図３】バリアブルデータプリントの概要を説明する図である。
【図４】実施形態によるバリアブルプリントシステムの他の構成を示す図である。
【図５】メニューバー、ツールバー、ワークエリア、フローティングパレットを含む、実施形態によるユーザインターフェースの例を示す図である。
【図６】ユーザインターフェースにおけるコンテナの表示例を示す図である。
【図７】実施形態によるコンテナルールを説明する図である。
【図８】実施形態によるリンクの作成処理を説明するフローチャートである。
【図９】リンク作成時のユーザインターフェースの遷移例を示す図である。
【図１０】可変リンクによってコンテナを配置したときのユーザインターフェースにおける表示例を示す図である。
【図１１】実施形態によるリンクの設定ダイアログウインドウを示す図である。
【図１２】実施形態のユーザインターフェースにより可変リンクを設定するための処理を説明するフローチャートである。
【図１３】実施形態のレイアウトエンジンによるレイアウト計算処理を示すフローチャートである。
【図１４】実施形態のレイアウトエンジンによるレイアウト計算処理を示すフローチャートである。
【図１５】実施形態のレイアウト計算時における、コンテナの集合について説明した図である。
【図１６】実施形態によるレイアウト計算を説明するための図である。
【図１７】実施形態によるレイアウト計算処理の詳細を説明するフローチャートである。
【図１８】実施形態によるレイアウト計算処理を説明するための図である。
【図１９】固定リンクによるレイアウト結果例を示す図である。
【図２０】可変リンクによるレイアウト結果例を示す図である。
【図２１】実施形態の可変リンクツールによるコンテナ配置を示す図である。である。
【図１】
0004743909.tif 000002
【図２】
0004743909.tif 000003
【図３】
0004743909.tif 000004
【図４】
0004743909.tif 000005
【図５】
0004743909.tif 000006
【図６】
0004743909.tif 000007
【図７】
0004743909.tif 000008
【図８】
0004743909.tif 000009
【図９】
0004743909.tif 000010
【図１０】
0004743909.tif 000011
【図１１】
0004743909.tif 000012
【図１２】
0004743909.tif 000013
【図１３】
0004743909.tif 000014
【図１４】
0004743909.tif 000015
【図１５】
0004743909.tif 000016
【図１６】
0004743909.tif 000017
【図１７】
0004743909.tif 000018
【図１８】
0004743909.tif 000019
【図１９】
0004743909.tif 000020
【図２０】
0004743909.tif 000021
【図２１】
0004743909.tif 000022