以下、本発明の実施の形態について図面を用いて詳細に説明する。
<<実施形態1>>
<システム構成>
まず、実施形態1の情報処理システム及び、その構成要素であるホストコンピュータのハードウェア構成について、図1A及び図1Bを用いて説明する。
図1Aは本発明の実施形態1の情報処理システムの構成例を示す図である。また、図1Bは本発明の実施形態1の情報処理システムの一構成要素であるホストコンピュータのハードウェア構成を示す図である。
尚、図1A中のホストコンピュータ以外の各種コンピュータ(例えば、データベースサーバ117、ファイルサーバ115及びプリントサーバ109)も、例えば、図1Bのハードウェア構成と同等のハードウェア構成を有している。
図1Aにおいて、情報処理システム100は、ネットワーク107を介して、本発明の情報処理装置であるホストコンピュータ101、データベースサーバ117、ファイルサーバ115及びプリントサーバ109が相互に接続されている。
データベースサーバ117は、データベース119を備えている。また、プリントサーバ109は、プリンタ113を接続しており、ネットワーク107を介して受信する印刷データを適宜プリンタ113に出力して、その印刷データを印刷させることが可能である。
図1Aの情報処理システム100は、特に、バリアブルデータドキュメントを印刷するバリアブルプリントシステムの構成例を示している。実施形態1で説明されるバリアブルプリント処理は、レイアウト編集装置として機能するホストコンピュータ101(汎用コンピュータモジュールによって構成される)で実現される。
バリアブルプリントシステム100上で実施可能となるレイアウト編集アプリケーション121は、ホストコンピュータ101において、その全体あるいは一部分が実行される。特に、レイアウト編集に関する処理や、バリアブルデータドキュメントの印刷に関する処理は、ホストコンピュータ101によって実行されるソフトウェアにより実現される。
レイアウト編集アプリケーション121等のソフトウェアやコンピュータプログラムはコンピュータ可読媒体に格納され、そのコンピュータ可読媒体からホストコンピュータ101のメモリ136にロードされ、実行される。そのようなソフトウェアやコンピュータプログラムを格納したコンピュータ可読媒体は、コンピュータプログラム製品である。そして、例えば、ホストコンピュータ101において、そのコンピュータプログラム製品を使用することにより、バリアブルデータドキュメントのレイアウト編集やバリアブルプリントに好適な装置が提供されることになる。
図1Bに示されるように、ホストコンピュータ101には、I/O(入出力)インタフェース143を介してキーボード132や、ポインティングデバイスであるマウス133が入力装置として接続される。また、出力装置としてのディスプレイ装置144がビデオインタフェース137を介して接続される。更に、プリンタ145をI/Oインタフェース138を介して接続することも可能である。
また、I/Oインタフェース138は、ホストコンピュータ101を、ネットワーク107へ接続する機能も有する。これにより、ネットワーク107を介して、バリアブルプリントシステム100内の他のコンピュータ装置(外部機器)にホストコンピュータ101を接続することができる。ネットワーク107の典型的な例としては、ローカルエリアネットワーク(LAN)、あるいはワイドエリアネットワーク(WAN)が挙げられる。
また、図1Bに示すように、ホストコンピュータ101は、少なくとも1つのプロセッサ135、例えば、半導体メモリである、ランダムアクセスメモリ(RAM)やリードオンリーメモリ(ROM)から構成されるメモリ136を含んでいる。記憶装置139は、プログラム等の各種データを格納するコンピュータ可読媒体との間でデータのやり取りが可能なハードディスクドライブ(HDD)140やフロッピー(登録商標)ディスクドライブ(FDD)141を含む。
尚、図1Bには示されていないが、磁気テープドライブやメモリカード等の各種記憶装置も記憶装置139として使用することが可能である。CD−ROMドライブ142は、不揮発性のデータソースとして提供される(もちろん、CD−ROMによってコンピュータプログラムを提供してもよい)。
ホストコンピュータ101は、相互接続バス134を介して、ホストコンピュータ101の各種構成要素135〜134と通信する。この通信は、例えば、GNU/LINUXやマイクロソフトウインドウズ(登録商標)のようなオペレーティングシステムや、典型的にはオペレーティングシステムに従う形で実現される。あるいは、この通信は、関連のある技術で知られているもので形成されたコンピュータシステムの常套的なオペレーションモードによる方法によって、実現される。即ち、上述の各種構成要素135〜143は、相互接続バス134を介して通信可能に接続されており、ホストコンピュータ101にインストールされたオペレーティングシステムにより利用される。
尚、図1Bに示すホストコンピュータ101の例としては、IBM互換PC(パーソナルコンピュータ)やSUNのSparcstation、あるいはそれらを含んだコンピュータシステムが考えられる。
<レイアウト編集アプリケーションの概要>
実施形態1では、レイアウト編集アプリケーション121は、ハードディスクドライブ140に常駐し、プロセッサ135による実行や読込が制御される。レイアウト編集アプリケーション121の媒介記憶装置とネットワーク107からフェッチされるデータは、ハードディスクドライブ140に呼応してメモリ136を使用する。
一つの例では、レイアウト編集アプリケーション121のエンコードされたプログラムが、CD−ROMやフロッピー(登録商標)ディスク上に格納される。そして、対応するCD−ROMドライブ142やフロッピー(登録商標)ディスクドライブ141を通じて読み込まれ、ハードディスクドライブ140にインストールされる。
あるいは、別の例として、レイアウト編集アプリケーション121は、ネットワーク107からホストコンピュータ101内に読み込まれて、ハードディスクドライブ140にインストールされてもよい。
更に、レイアウト編集アプリケーション121を含む各種ソフトウェアは、磁気テープまたはROMまたは集積回路、光磁気ディスクからホストコンピュータ101内にロードされてもよい。または、ホストコンピュータ101とその他のデバイス間における赤外線等の無線通信からホストコンピュータ101内にロードされてもよい。または、PCMCIAカードのようなコンピュータ可読カード、そしてEメール通信やWEBサイト上の記録情報を持つインターネットやイントラネットを含む他の適当なコンピュータからホストコンピュータ101内にロードされてもよい。これらは、コンピュータ可読媒体の例であり、他のコンピュータ可読媒体が使用されてもよいことは明らかである。
図1Aにおいて、レイアウト編集アプリケーション121は、ホストコンピュータ101にバリアブルプリント(バリアブルデータプリント(VDP)ともいう)を実現させるものである。このレイアウト編集アプリケーション121は、2つのソフトウェアコンポーネント、即ち、レイアウトエンジン105とユーザインタフェース103を含んでいる。
レイアウトエンジン105は、描画領域(部分領域)であるコンテナ(矩形の範囲)に与えられたサイズや位置の制限にしたがって、データベース119にレコード単位で格納されているバリアブルデータから1レコードずつ読み込む。そして、その読み込んだバリアブルデータとコンテナの制限とから、読み込んだバリアブルデータが流し込まれるコンテナのサイズや位置等のレイアウトを計算するソフトウェアコンポーネントである。
また、レイアウトエンジン105は、更に、コンテナに割り当てられたバリアブルデータを描画し、バリアブルデータドキュメントのイメージを生成する処理も行う。但し、本発明は、これに限るものではなく、レイアウトエンジン105は、各部分領域(コンテナ)のサイズと位置を決定するアプリケーションとして動作し、プリンタドライバ(不図示)に描画情報を出力する。これにより、プリンタドライバがバリアブルデータドキュメントのイメージ描画処理を行い、印刷データを生成してもよい。
ユーザインタフェース103は、ユーザによるコンテナのレイアウトや属性設定を可能とし、ユーザにドキュメントテンプレートを作成させる。また、ユーザインタフェース103は、ドキュメントテンプレート内の各コンテナとデータソース(データべース119上のバリアブルデータ(コンテンツ))とを関連付けるメカニズムを提供する。
UIモデルアナライザ104は、ユーザインタフェース103が提供するコンテナや、アンカー、スライダー、リンク等のユーザインタフェース要素をレイアウトエンジン105が認識できる内部形式に変換する。即ち、UIモデルアナライザ104により、レイアウトエンジン105に変更を加えることなく、ユーザインタフェース103を他の表示/入力形式のユーザインタフェースに容易に置換可能になる。
ユーザインタフェース103とUIモデルアナライザ104は、通信チャネル123を介して通信する。また、UIモデルアナライザ104とレイアウトエンジン105は、通信チャネル124を介して通信する。
バリアブルデータドキュメント生成のためのデータソースは、一般的には、データベースアプリケーションを実行している、他のコンピュータで構成されるデータベースサーバ117上にある典型的なデータベース119が挙げられる。
ホストコンピュータ101は、ネットワーク107を介して、データベースサーバ117と通信する。レイアウト編集アプリケーション121は、ホストコンピュータ101、あるいは、一般的には、他のコンピュータで構成されるファイルサーバ115に保存されるドキュメントテンプレートを生成する。
また、レイアウト編集アプリケーション121は、コンテナに流し込まれるコンテンツであるバリアブルデータ(コンテンツデータ)とマージされたドキュメントテンプレートによって構成されたバリアブルデータドキュメントを生成する。これらのバリアブルデータドキュメントは、ホストコンピュータ101のローカルファイルシステム、ファイルサーバ115に保存される、あるいはプリントサーバ109を介してプリンタ113に直接印刷される。
ここで、プリントサーバ109は、直接ネットワーク107に接続されていないプリンタ113に、ネットワーク機能を提供するコンピュータである。プリントサーバ109とプリンタ113は、典型的な通信チャネル111(例えば、USB、IEEE1394、無線LAN等)を介して接続される。
次に、バリアブルプリントシステム100の別構成例について、図1Cを用いて説明する。
図1Cは本発明の実施形態1の情報処理システムの別構成を示す図である。
図1Cは、ネットワーク107上にエンジンサーバ227を追加して、このエンジンサーバ227にレイアウトエンジン225を構成した例を示している。つまり、ホストコンピュータ101内のレイアウトエンジン105を、エンジンサーバ227内で実現した構成である。この構成の場合、ホストコンピュータ101の処理負荷を軽減することができる。
尚、このエンジンサーバ227は、他のサーバと同様、典型的なコンピュータである。また、ファイルサーバ115に保存されたドキュメントテンプレートは、印刷や他の目的がある際、レイアウトエンジン225によってドキュメントを生成するためにデータベース119に保存されたデータと結合することができる。そのようなオペレーションは、ユーザインタフェース103を介して要求されるか、特定のレコードのみ印刷するように要求される。
次に、バリアブルデータプリントの概略について、図2を用いて説明する。
図2は本発明の実施形態1のバリアブルデータプリントの概略を説明するための図である。
レイアウト編集アプリケーション121のユーザインタフェース103により、ユーザからの操作指示に従いページ上に複数のコンテナ181〜183を配置する。そして、各コンテナに位置やサイズに関する制約条件を付与することによりドキュメントテンプレート180が生成される。
また、ユーザインタフェース103は、ドキュメントテンプレート180とデータソース190(例えば、データベース119)との関連付け、更に各コンテナとデータソース190内の各データフィールドとの関連付けを行う。各コンテナとデータソース190内の各データフィールドとの関連付けを示す関連付け情報は、ドキュメントテンプレート180内に記述され、該ドキュメントテンプレート180は、HDD140に格納される。また、データソース190は、レコード単位で項目データが記載されているファイルであり、HDD140に格納されている。
レイアウトエンジン105は、ユーザからの印刷指示もしくはプレビュー指示に応じて、ドキュメントテンプレート180の各コンテナ181〜182に、関連付け情報で関連付けられたデータをデータソース190から読み込む。次に、その読み込んだデータをレコード単位で流し込み(例えば、データレコード1のデータフィールドA〜Cをコンテナ181〜183へ流し込む)、流し込まれたデータに応じて各コンテナのサイズ等を調整(レイアウト調整)する。
プレビュー指示の場合は、レイアウト調整されたドキュメントイメージを生成し、ディスプレイ装置144の画面上にプレビューとして表示するべく出力される。また、印刷指示の場合は、レイアウトエンジン105もしくはプリンタドライバを用いて生成したドキュメントイメージを印刷データとしてプリントサーバ109へ出力する。データレコード1,2,3…を順次処理することにより、バリアブルデータプリントが実現されることになる。
<レイアウト編集アプリケーションの説明>
以下、レイアウト編集アプリケーション121について説明する。
まず、ユーザインタフェース103によって実現されるユーザインタフェースの一例について、図3を用いて説明する。
[メインウインドウ]
図3は本発明の実施形態1のユーザインタフェースの一例を示す図である。
図3に示すように、ユーザインタフェース103は、操作時にアプリケーションウインドウ301によって形成されたユーザインタフェースをディスプレイ装置144に表示させる。このアプリケーションウインドウ301は、メニューバー302、ツールバー303、ワークエリア306とオプションのパレット311を有する。
メニューバー302とツールバー303は非表示にしたり、画面上の色々な場所に移動することが可能である。また、ワークエリア306は、マウス133の操作によってその場所を移動させることが可能である。また、パレット311はオプションであり、目的に応じて表示/非表示を制御することができる。更に、カーソル/ポインタ313は、マウス133の指示位置を表示する。
メニューバー302は、周知の技術として知られているように、メニューオプションの階層の下に拡張される多くのメニューアイテム304を有する。
ツールバー303は、アプリケーションの特別なモードによって非表示状態にする、または表示状態にすることが可能な多くのツールボタンとウィジット(部品)305を有する。
ルーラー308はオプションであり、ワークエリア306内のポインタ、ページ、ライン、マージンガイド、コンテナまたはオブジェクトの位置を示すために使用される。
パレット311は、バリアブルデータライブラリのような追加機能にアクセスするために使われる。パレット311は、移動、リサイズ、クローズをするためのウインドウコントロール312を有する。また、パレット311は、ワークエリア306の前面に表示したり、あるいはオブジェクトの背面に隠すことができる。更に、パレット311は、アプリケーションウインドウ301の範囲内のみにその表示を制限したり、アプリケーションウインドウ301の外側にその一部或いは全体を表示することが可能である。
ツールバー303には、図4に示されるような、ユーザが選択可能な複数種類の『ボタン』403〜406が配置されている。
(1)選択ツールボタン403:コンテナの辺を選択、移動、サイズ変更、リサイズそしてロック/ロック解除のために使われる。コンテナの選択は、コンテナの周囲に選択ボックスをドラッグすることによりなされる。また、キーボード132上のCTRLキーを押しながら、複数のコンテナについて選択操作をすることによって、複数のコンテナを選択可能である。
(2)テキストコンテナツールボタン404:スタティックあるいはバリアブルテキストを有するコンテナを作成するために使用される。
(3)イメージコンテナツールボタン405:スタティックあるいはバリアブルイメージを有するコンテナを作成するために使用される。
(4)リンクツールボタン406:コンテナ間に関連付けを行うリンクを作成するために使われ、リンクの距離をコントロールするためにも使用される。
尚、これらのボタンは、周知の技術で知られているように、操作状況に合わせて変化するアイコンのツールチップとして実装される。
また、アプリケーションウインドウ301は、ページ内に各コンテナやリンクをレイアウトすることで、基本レイアウトを決定することができる。基本レイアウトとは、バリアブルデータプリントで基本となるレイアウトのことである。基本レイアウト内の各コンテナが固定コンテナである場合は、すべてのレコードの印刷結果のレイアウトは同じになる。
また、基本レイアウト内の各コンテナが可変コンテナである場合は、レコード単位に読み込まれるデータの量やサイズにより各コンテナのサイズや位置が、制約の範囲内で変動することになる。
よって、レイアウト編集アプリケーション121で作成されるドキュメントテンプレートは、あくまで基本レイアウトを決定するものである。そのため、動的コンテナが含まれる場合は、最終的な印刷物のレイアウトは読み込まれるデータによりレイアウト調整されることになる。
[ドキュメントテンプレート]
図3において、ワークエリア306は、ドキュメントテンプレート(180:基本レイアウト)のデザインを表示・編集するために使われる。これは、ユーザがドキュメントテンプレートをデザインする過程において、印刷されるドキュメントの概観をユーザに提示することを可能とする。これにより、ユーザは、データソース(190)とマージされたドキュメントが、バリアブルデータの量・サイズに基づいてどのように変化するかを容易に理解することができる。
また、データソースがドキュメントテンプレートに関連付けられていた場合は、現在のドキュメントのプレビューができるように、対応するバリアブルテキストやイメージがレイアウトされた各コンテナに表示される。
ドキュメントテンプレートにおけるドキュメント構造とコンテナを描写する視覚的な手がかり(コンテナの枠線、アンカー、スライダー、リンク等)は、ドキュメントテンプレート作成時には常に表示される。また、バリアブルデータを流し込むプレビュー時には、視覚的な手がかりは、カーソルをコンテナ上に移動させたときや、コンテナを選択したときに表示される。
ワークエリア306は、スクロールバー307と、オプションのルーラー308と、ドキュメントテンプレート309を含む。ドキュメントテンプレート309は、ページが複数あることを示すことができる。また、ドキュメントテンプレート309は、図2のドキュメントテンプレート180に相当するものである。
与えられたドキュメントテンプレートのページサイズは、周知の技術を用いて、ユーザによって指定される。例えば、メニューの「ファイル」から「ページ設定」を選択することでページサイズを設定するダイアログを表示し、そこでユーザが指定したページサイズが反映されることになる。
それぞれのドキュメントでの実際のページ数は、関連付けられたデータソース内のバリアブルデータによって変化する可能性がある。これは、ドキュメントテンプレート内に動的表のように、バリアブルデータの量により大きさが変更されるフィールドが設定されている場合である。つまり、この場合には、1ページ内にバリアブルデータをフィットできないバリアブルデータが読み込まれると、追加のページが自動的に作成されるからである。
それぞれのページ内に示される境界線310は、ページ上の印刷可能なオブジェクトの最大幅を示す、任意のページマージンである。
また、図4では、1ページのドキュメントテンプレート309上に表示され得るオブジェクトの例を示している。
このようなオブジェクトとしては、コンテナ407、408と、任意に適用するアンカーアイコン409、固定されている辺411、414、固定されていない辺410、リンク412、そしてスライダー413がある。
アンカーアイコン409は、コンテナの矩形の角、辺、またはコンテナの中央に設定することが可能である。アンカーアイコン409が設定されると、設定された個所の位置が固定となる。つまり、図4の例では、アンカーアイコン409は、コンテナ407の左上の角に設定されている。そのため、コンテナ407はバリアブルデータが流し込まれ、バリアブルデータの画像サイズもしくはテキスト量が多い場合には、右方向及び下方向に拡大可能であることを示している。
一方、アンカーアイコン409が辺に設定されている場合は、その辺が固定となり、その他の3辺の各方向に拡大可能である。また、アンカーアイコン409がコンテナの中央に設定されている場合は、コンテナの中央位置が固定となり、コンテナ矩形の中央位置が変わらないように、4方向に拡大可能である。
リンク412についての詳細は後述するが、これは、コンテナ407とコンテナ408が関連付けられていることを示しており、このリンク412に設定されている長さ(範囲指定可能)を保ちつつ、コンテナ408が右方向に移動可能であることを示している。スライダー413は、設定されている辺と水平方向に移動可能であることを示している。
[コンテナ]
次に、データベース中の各レコードに含まれる複数種類のデータフィールドのデータを差し込むためのフィールド領域であるコンテナについて説明する。
コンテナは、ドキュメントテンプレート内にバリアブルデータファイルから固定あるいは可変のテキスト/イメージ(複数種類のデータフィールドのデータ)が流し込まれ、描画されるフィールド領域(これを部分領域と呼ぶ)である。そして、このコンテナは、図4に示されるように他のコンテナやオブジェクトと共にレイアウトされる。ユーザインタフェース103を介して、ユーザからの操作指示により、コンテナは、マウス133の操作により移動、サイズ調整、再作成される。
より正確には、コンテナは、設定の集まり、視覚的表現、そしてインタラクションと編集動作をもっている。以下、実施形態1におけるコンテナの定義を示す。
(1)コンテナは、固定あるいは可変のコンテンツを持つ。可変コンテンツ(バリアブルデータ)は、データソースから取得したデータがドキュメント毎、つまり、レコード毎に異なる可能性があるという意味でダイナミック(動的)であるということができる。但し、実施形態1の可変コンテンツは、アニメーション化されたもの、あるいは他の方法で時間的に変化するコンテンツは印刷には適していないため、ここでは、意図していない。
同様に、固定コンテンツは、コンテナを使って生成される全てのドキュメントで、同じように表示される。しかしながら、可変コンテンツとリンクが設定されている場合、可変コンテンツの影響を受けて、固定コンテンツはそれぞれのドキュメントで位置が異なる可能性がある。
(2)コンテナは、コンテンツに適用される背景色、ボーダー、フォント・スタイルのようなテキスト設定と同様の装飾機能を持っている。このような設定を、コンテナ属性と呼ぶ。コンテナ属性は、各コンテナごとに設定可能であるが、あるコンテナと同じコンテナ属性であるという設定を行うことも可能である。
(3)コンテナは、ドキュメントを生成する際にデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、印刷された出力物において可視である。可変コンテンツは、データソースからの特定のデータの表示を提供する。コンテナのこの表現は、例えば、印刷されるか、ディスプレイ装置144のスクリーン上に表示されるか、その両方が可能である。
(4)コンテナは、図4に示されるように視覚的な手がかりとしてのユーザインタフェースを有している。例えば、コンテナの編集そして表示設定のためのインタラクティブなグラフィカルユーザインタフェース(GUI)を有する。GUIコンポーネントは、ディスプレイ装置144のスクリーン上に表示されるが、ドキュメントとしては印刷されない。レイアウト編集アプリケーション121のユーザインタフェース103は、背景色やフォントのようなコンテナの装飾機能のいくつかを表示し、さらにコンテナの設定の編集や表示を可能にするための機能を有している。
ユーザインタフェースの機能の特別な目的の例としては、ボーダー、あるいは、コンテナのサイズや位置を対話的に変更、表示するための角アイコンがある。あるいは、コンテナがデータソースからデータをマージされたとき、コンテナの動作を示すための上塗りした数、線、アイコン、テキストがある。
[コンテナの制約]
コンテナはそれぞれのドキュメントで表示されるコンテンツをどのように結びつけるかの制御に関する制約がある。これらの制約(固定/可変コンテンツをコンテナと結びつけることを含む)は、ユーザが一つのドキュメントテンプレートから多数のドキュメントの生成をコントロールする主要な方法である。
制約の一つの例には、『このコンテナのコンテンツの高さは最大4インチです』がある。また、別の制約の例には、『コンテナのコンテンツの左辺は、それぞれのドキュメントにおいて同じ水平位置で表示しなければならない』がある。ここに記述される内容は、GUIを使ってこのような制約を表示、編集するためのいろいろな方法である。
イメージがページ上に定義された場所を持っているように、固定コンテンツの配置を指定するコンテンツプレイスホルダーは、デジタル印刷技術でよく知られている。コンテナは、位置とサイズを持ち、それらは公知の技術で知られている手法で編集され、表示される。よって、以下の説明では、バリアブルデータプリントに特化した方法における表示・編集に焦点を合わせる。
コンテナを用いることにより、ユーザは、ドキュメントにおけるコンテンツのサイズ(描画サイズ)や位置を指定することが可能となる。いく種類ものドキュメントが一つのドキュメントテンプレートから生成されるので、コンテナに多数の可能性と制約を設定することになるが、これらの設定(指定)や表示のために所定のユーザインタフェースが利用される。
1つのコンテナの辺は、関連付けられたコンテンツがドキュメント内で表示される仮想の境界線を定義する。従って、コンテナの左辺を論じることは、関連付けられたコンテンツが、各ドキュメントにおいて、表示可能であるエリア内の最も左の辺を論じることと同じである。
同様に、コンテナの高さを論じることは、生成されたドキュメントで関連付けられたコンテンツの高さの制約を論じることとして理解される。本明細書では、ユーザインタフェース103を参照して、コンテナの辺あるいは大きさを論じるところで、この区別は明らかにされるであろう。
以下の記載において、コンテンツの表示を制限するために使われるある値を定義している用語『固定』は、全てのドキュメントで同じである。
(1)コンテナの幅が固定である場合、関連付けられたコンテンツに割り当てられる幅は、全てのドキュメントで同じになる。
(2)コンテナの高さが固定である場合、関連付けられたコンテンツに割り当てられる高さは、全てのドキュメントで同じになる。
(3)距離(リンクの長さ)が固定である場合、指定された距離は全てのドキュメントにおける制約となる。
(4)コンテナの左右辺が固定の場合、ページに関する辺の水平位置は全てのドキュメントで同じであることを意味している。但し、コンテナの高さあるいは垂直方向の位置は、変化する可能性がある。例えば、コンテナの左辺が固定である場合、関連付けられたコンテンツの表示位置は、全てのドキュメントでその左辺の位置は同じ水平位置となる。しかしながら、あるドキュメントではページの上の方に表示され、他のドキュメントではページの下の方に表示される可能性がある。
(5)コンテナの上下辺が固定の場合、ページにおける辺の垂直位置は全てのドキュメントで同じとなることを意味している。但し、コンテナの幅あるいは水平位置はドキュメントによって変わる可能性がある。
(6)コンテナの垂直軸は、コンテナの右辺と左辺に平行で、それらの中間に位置される仮想の垂直線である。もしコンテナの垂直軸が固定なら、当該コンテナの左右辺の水平位置の平均(即ち、左右の中央位置)は、すべてのドキュメントで同じとなる。この制約において、コンテナの幅は変化する可能性がある。しかしながら、左右辺が垂直軸にもっとも遠いものからもっともものまで、垂直軸は全てのドキュメントで同じ水平位置となる。尚、コンテナの高さと垂直位置はこの制約によって影響されない。
(7)同様に、もし水平軸が固定なら、コンテナの上辺と下辺の平均が同一の垂直方向位置に配置される。但し、コンテナの幅と水平位置はこの制約によって影響されることはない。
(8)水平軸と垂直軸の両方が固定である場合、コンテナの中心位置が固定されていることを意味する。但し、コンテナの幅・高さは、この制約によって影響されない。
(9)コンテナの角位置、コンテナの辺の中間位置、あるいはコンテナの中心位置が固定である場合、それぞれの位置はすべてのドキュメントで同じ場所となる。例えば、もしコンテナの左上角が固定なら、配置されたコンテナの左上位置が全てのドキュメントで同じになることを意味している。
(10)垂直辺あるいは垂直軸は、ページの左辺もしくは右辺、あるいは左ページマージンもしくは右ページマージン、あるいは他の水平位置に関連付けされて固定することができる。同様に、水平辺あるいは水平軸はページの上辺もしくは下辺、あるいは上下ページマージン、あるいは他の垂直位置に関連付けされて固定することができる。
『固定』の反対は、コンテナの辺、軸、角、中間位置、あるいはドキュメント制約がドキュメント間(レコード間)で変化するかもしれないことを意味する『可変』である。例えば、ページ内では、バリアブルデータのサイズや量により、動的にレイアウトが変更されることを期待する。一方で、特定のコンテナについては、大きさや位置を固定にしたり、また、ページの角のコンテナの四隅は固定にしたいということを所望する場合がある。
そのため、レイアウト編集アプリケーション121では、各コンテナ(部分領域)について、辺、軸、角、中間位置等を固定にするか、可変にするかを適宜設定できるようにしている。これにより、ユーザはドキュメントテンプレート180の基本レイアウトを決定する場合に、ユーザが所望とするように基本レイアウトを作成することができる。
[コンテナ表示・編集]
−−新規コンテナの作成方法−−
コンテナは、テキストコンテナとイメージコンテナの2種類で記述される。テキストコンテナはテキストおよび埋め込みのイメージを有する。イメージコンテナは、イメージだけを有する。
図4で示されるように、新規のテキストコンテナあるいはイメージコンテナは、テキストコンテナツールボタン404あるいはイメージコンテナツールボタン405をマウス133でクリックし、ドキュメントテンプレート309上に四角形をドラッグする。これによって、当該ドキュメントテンプレート309上に作成される。
あるいは、コンテナは、所望のテキストコンテナツールボタン404あるいはイメージコンテナツールボタン405をアクティブにした後に、ドキュメントテンプレート309上で単にクリックすることによって作成されるようにしてもよい。この場合、マウス133のクリック操作に応じてデフォルトサイズのコンテナがテンプレート上に挿入されるとともに、当該新規コンテナの寸法等を設定するためのダイアログボックスあるいは他のプロンプトが提供される。
尚、コンテナサイズは、自動的に前もって定義されるようにしてもよいし、あるいは、計算されたスキーマによって作成・配置される等、種々の方法が考えられる。ここで、生成されたコンテナをマウス等の入力装置により選択し、右クリックでプロパティを指示する等の操作を行うことにより、コンテナのプロパティダイアログが表示され、コンテナの制約を設定することができる。
[コンテナの表示方法]
図5(A)から(D)は、コンテナの辺に関する表示ルールを例示している。
レイアウト編集アプリケーション121は、コンテナの辺の状態を表現するために、実線503(アイテム)あるいは点線504を用いて辺を表す。これに加えて、アンカーアイコン506、507、509(コンテナの辺の近くに描画される線、形状、アイコン)を用いる。更に、ハンドル502(移動、修正するために領域の辺上あるいは近傍に描画されるコントロール点)、スライダー413(辺の両側に描画される短い並行線、図4参照)、拡縮アイコン505、色を用いる。
図5(A)〜(D)に示されるコンテナ表示方法のルールは、以下の通りである。
(1)それぞれの辺を固定するために、実線で描画する。
(2)幅が固定の場合は、左と右の辺を実線で描画する。
(3)高さが固定の場合は、上と下の辺を実線で描画する。
(4)軸は描画しない。
(5)(1)〜(3)によって描画されていないそれぞれの辺の近くには、拡縮アイコンが描画され、それらの辺を点線で描画する。
(6)垂直辺と水平辺、あるいは垂直軸と水平軸のそれぞれのペアで、もし両者が固定なら、それらの交差点にアンカーが描画される。
(7)それぞれの固定辺で、もし辺のどこにもアンカーが描画されていなければ、辺の中央にスライダーが描画される。
(8)垂直及び水平辺、あるいは垂直及び水平軸のそれぞれのペアで、アンカーやスライダーが描画されていない場合、それらの交差点にハンドルが描画される。
ルール(1)、(2)、(3)で定義された線は、前述したように固定あるいは制限されているため実線で描画される。ルール(5)のように、可変の辺は、点線で描画される。ルール(6)、(7)、(8)で定義された固定された点は、アンカーを表示し、いくつかの固定された辺は、スライダーを表示し、他はハンドルを表示する。
上記のルールは、ユーザにより後で設定された制約が優先される。つまり、後で別の制約が設定された場合、上記のルールが描画されるべき辺に影響すれば、実線や点線の描画内容が変更されることになる。例えば、もしコンテナがとても小さくアイコンがお互い重なるか、あるいは他の表示機能を不明瞭にするならば、アイコンは異なって、あるいは省略されて描画される可能性がある。
可変の辺が描画される場所は、コンテナのコンテンツに依存する。後に説明するように、ドキュメントテンプレートにコンテンツがマージされて、ユーザインタフェースで可視になることを意味する、『動的な校正処理』が使われる。代わりの実行は、すべてのドキュメントで平均化されるコンテナのコンテンツエリアで、あるいは、可変の辺がユーザインタフェースで、どこにレイアウトされるべきか決定するほかの手段で使われることができる。
これらのコンテンツ表現は、コンテナの各辺の状態を表示するグラフィック機能を提供する。その表現の解釈は、下記の通りである。
(1)図4の辺410のように、点線は、コンテナのコンテンツに依存してドキュメント内の辺の位置が変化することを意味する。
(2)実線の辺414は固定されている、あるいはコンテナの幅・高さが固定されている(コンテナ408では、4辺が実線であり、両方が固定されている)ために制限された辺であることを意味する。
(3)アンカーは、辺および軸が交差した場所が固定されていることを意味する。それゆえ、アンカー点は、すべてのドキュメントの水平、垂直位置で現れることになる。アンカーは当然固定される。図4のアイコン409は、辺414の交差する位置が固定されていることを意味しているアンカーアイコンの例である。
(4)スライダーは、関係付けられた辺の長さが固定されているが、並行移動する可能性があることを意味する。例えば、図4で、スライダー413は、コンテナ408のコンテンツが、ドキュメント内で特定のダイアグラムで表される位置の、左あるいは右に表示されるかもしれない。
例えば、コンテナ408と関連付けられている(リンク設定されている)コンテナ407に流し込まれるデータの画像サイズもしくはテキスト量が少ない場合は、コンテナ407のサイズが小さくなる。そのため、コンテナ408は、左方向にスライド(並行移動)してレイアウトされて表示されることになる。また、コンテナ407のサイズが大きくなる場合は、逆にコンテナ408は右方向にスライドしてレイアウトされることになる。
これらのアイコン・辺のいくつかあるいは全ては、どのツール、どのコンテナを、選択・ハイライトあるいはアクティブにするかによって、描画されたりされなかったりする。一般的に、コンテナの辺・アイコンはドキュメントテンプレートのデザインの手助けであるため、印刷物には描画されない。
尚、前述したように、コンテナの幅・高さの基本値・最小値・最大値の基本パターンの設定は、副次的なダイアログウインドウに表示される。
図5(A)で、コンテナ501は、幅・高さの両方が固定されていない(可変である)。固定された辺503は実線で表現され、可変の辺504は点線で表現されている。拡縮アイコン505は、隣接する辺504が可変であることを示す。他の形態のインジケータを代わりにあるいは追加的に用いてもよい。
図5(B)において、コンテナ501は、幅・高さ両方が可変である。アンカーアイコン506が、交差している両方の辺503の角の位置が固定されていることを明示的に表すべく追加されている。
図5(C)において、コンテナ501は、コンテナの幅及び高さの両方が可変であり、任意のアンカーアイコン507で示されるような中心点の周りを平等に広がるという状態を示している。即ち、コンテナ501は、アンカーアイコン507を中心に拡大あるいは縮小が可能である。ここでの拡大/縮小は、アンカーアイコン507の位置が常にコンテナ501の中心点となるようにレイアウト調整される。
図5(D)において、コンテナ501は、上辺508が固定されているが、幅・高さの両方が可変である。上辺508の中心に位置付けられて示されるアンカーアイコン509は、固定されている。そしてコンテナ501の左辺・右辺(502)は、アンカーアイコン509を通って垂直な中心軸(垂直軸)の周りを、拡大・縮小する。
[リンク]
リンクは、コンテナとコンテナの関連を示している。関連とは、コンテナ間の距離を示しており、リンクによって関連付けられたコンテナ同士は、互いのレイアウト変更の影響を受けて動的レイアウト計算を実行する。例えば、上述のように、図4のリンク412は、コンテナ407とコンテナ408とを関連づけている。リンクの設定方法、及びリンクで関連付けられたコンテナの動的レイアウト計算方法については、後述する。
[リンクの設定方法]
次に、コンテナ同士を関連付けるためのリンクの設定について説明する。
図6は本発明の実施形態1のリンクの設定処理を示すフローチャートである。また、図7は本発明の実施形態1のリンク設定時のユーザインタフェースの遷移例を示す図である。以下、図6及び図7を用いてコンテナにリンクを設定する方法について説明する。
まず、ステップS601において、レイアウト編集アプリケーション121は、ユーザインタフェースのワークエリア306上に編集対象の選択されたドキュメントテンプレートを表示する。リンクを設定するためには、リンクを設定するためのコンテナ(最低2つ)がドキュメントテンプレート上に作成されている必要がある。図7(A)〜(C)では、ステップS601で、2つのコンテナを作成してリンクを設定する場合のユーザインタフェースの遷移例を示している。
次に、ステップS602において、レイアウト編集アプリケーション121は、リンクツールを選択状態にする(図4のボタン406をクリックすることにより選択状態となる)。
図7(A)において、コンテナ701と702はすべて固定されている辺で構成されているものとする。また、703と704は、図4の409と同じであり、アンカーを意味する。705は、マウスポインタを意味している。
さて、リンクツールが選択状態となっている間に、ユーザはリンクを設定する2つのコンテナの内の一方(コンテナ701とする)をクリックして選択する。この操作に応じて、レイアウト編集アプリケーション121のユーザインタフェース103は、第1のコンテナが選択されたことを認識し(ステップS603)、選択されたコンテナを特定する情報を保持する。
また、以降のマウスカーソルの移動に応じた軌跡を画面に表示するようにする。例えば、図7(B)における線分706は、(A)の状態におけるクリック位置と現在のマウスポインタ705の位置とを結んだ線を示しており、このUIによりどの位置にリンクが設定されるのかをユーザに明示することができる。
次に、ユーザは、図7(B)で示されるように、もう一方のコンテナ(コンテナ702)までマウスポインタ705を移動してクリックする。この操作に応じて、ユーザインタフェース103は第2のコンテナが選択されたことを認識し(ステップS604)、選択されたコンテナを特定する情報を保持する。
レイアウト編集アプリケーション121は、ステップS603で選択された第1のコンテナと、ステップS604で選択された第2のコンテナとの間にリンクを設定する。
こうして、ユーザにより選択された2つのコンテナ701、702の間にリンクが設定されると、リンク707を表示する(ステップS605)。更に、このリンク設定を受けて、コンテナの表示状態は、図7(C)の状態になる(ステップS606)。
即ち、リンクが設定されたことにより、コンテナのUIが自動的に変更される。ここでは、リンクによって関連付けられた辺が可変となり、点線で示されている状態を示している。つまり、図7(C)において、708は点線で示されている辺であり、前述した通り可変の辺を示すものである。
尚、図7(C)のようなコンテナの辺の状態の変化は、リンクを設定したことによりコンテナの辺を可変にする必要が生じたことにより自動的に実行されたものである。これは、リンクを設定したにもかかわらず全ての辺が固定であるという矛盾の発生を防ぐことを目的としている。また、709は図5の505と同じで、リンクを設定したことにより、コンテナが変化できる方向をユーザに視覚的に示したマークである。また、図7(C)の例では、左のコンテナの右辺と右のコンテナの左辺が可変な状態へ変化したが、これは一例であり、例えば、右コンテナが図4のスライダー413を持つ設定に変化しても構わない。
<レイアウトエンジンによるレイアウト計算処理>
[レイアウト計算方法(全体フロー)]
実施形態1のレイアウト編集アプリケーション121は、少なくとも2つのモードを備えている。1つのモードは、ユーザインタフェース103を用いてコンテナを作成し、そのコンテナ間に関連付け(リンク設定)を行ってレイアウトを作成するレイアウトモードである。もう1つのモードは、レイアウトエンジン105により、作成したレイアウトにデータソースの各レコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードである。
このプレビューモードにおいて、実際のレコードが挿入され、レイアウトを計算する。但し、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レイアウトエンジン105が各コンテナにデータを挿入してレイアウトを計算するが、その際の計算方法はプレビューモードと同じである。
図8は本発明の実施形態1のレイアウト計算処理を示すフローチャートである。
まず、プレビューモードが選択される(ステップS801)。プレビューモードになったら、レイアウト編集アプリケーション121は、ユーザにプレビューするレコードをデータソースより選択させ、選択されたレコードの各フィールドデータを各コンテナに挿入する(ステップS802)。
各コンテナへフィールドデータを挿入すると、レイアウト編集アプリケーション121は、そのレコードをレイアウトするためのレイアウト計算を行い、必要に応じてレイアウト調整を行う(ステップS803)。尚、ステップS803におけるレイアウト計算の詳細については後述する。
そして、レイアウト編集アプリケーション121は、ステップS803で計算されたレイアウトを表示(プレビュー)する(ステップS804)。レイアウト編集アプリケーション121は、他のレコードについてもプレビューを行うか否かをユーザの指示により判定する(ステップS805)。ステップS805で、他のレコードについてプレビューを行う必要がない場合(ステップS805でNO)、プレビューモードを終了する(ステップS807)。
一方、他のレコードについてプレビューを行う場合(ステップS805でYES)、レイアウト編集アプリケーション121は、他のレコードを選択して再度レイアウト計算を行い、プレビューを行う(ステップS806)。
尚、プレビューモードでなく印刷時においては、印刷するレコード全てについて順にレイアウトの計算を行う。従って、ステップS804は存在せず、ステップS805は印刷するレコードを全て処理したかの判断を行う。ステップS803で、レイアウト計算された結果を、描画出力して出力し、プリンタドライバを用いて印刷データとして生成し、プリンタに印刷データが出力される。この場合、全てのレコード(印刷対象の指定された全レコード)について印刷データの出力が終了した時点で、本処理を終了することになる。
[レイアウト計算方法(詳細)]
次に、上記ステップS803のレイアウト計算の詳細について、図9を用いて説明する。
図9は本発明の実施形態1のレイアウト計算処理の詳細を示すフローチャートである。
尚、図9は、レイアウト計算処理(動的レイアウト計算処理)についてのみ説明するためのフローチャートであるため、バリアブルデータプリントの1レコードの印刷/プレビュー時のレイアウト計算処理に相当する。複数レコードの場合は、下記の処理が繰り返されることになる。
また、この動的レイアウト計算処理は、ドキュメントテンプレートに対して、データベース119から各レコードのコンテンツを流し込み(マージ)、各コンテナ属性と、各コンテンツの量・サイズに応じて、動的にレイアウト計算を行う。更に、図9の処理は、レイアウト編集アプリケーション121のレイアウトエンジン105が、プロセッサ135及びメモリ136を用いて動作する制御となる。
まず、レイアウト編集アプリケーション121は、レイアウトを計算するコンテナの集合を設定する(ステップS901)。レイアウト計算は、関連付けられたコンテナを一つの集合として計算を行う。
例えば、図10を参照すると、ページ上に4つのコンテナがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナAとコンテナB、そしてコンテナCとコンテナDがリンクによって関連付けされている。
従って、コンテナA、Bが集合1、コンテナC、Dが集合2となる。即ち、リンクによって接続されたコンテナ群を一つの集合として特定する。前述したように、1101はアンカー、1102は固定された辺、1103はコントローラ、1104は可変の辺の変化方向を示している矢印、1105は可変の辺、1106はリンク、そして、1107はスライダーを示している。
次に、レイアウト編集アプリケーション121は、ステップS901で設定したコンテナの集合から、レイアウトを計算するために一つを選択する(ステップS902)。そして、選択したコンテナの集合について、レイアウトの計算を行う。
まず、選択したコンテナの集合に含まれる可変要素である2つのコンテナA、Bについて、流し込まれるデータの画像サイズもしくはテキスト量から各コンテナがなにも制約を受けない場合の大きさを計算する。
具体的には、レイアウト編集アプリケーション121は、コンテナAが画像データ用コンテナであるか、テキスト用コンテナであるかを判定する。この判定は、前述したように、コンテナに対して設定されている属性により判定できる。
次に、レイアウト編集アプリケーション121は、コンテナAに流し込まれるデータを読み込む。そして、コンテナAが画像データ用コンテナである場合は、その画像データのサイズ(幅、高さのピクセル数、及び解像度)がコンテナAの制約を受けない場合の大きさになる。
また、コンテナAがテキスト用コンテナである場合は、そのテキストデータも文字数と、コンテナAのコンテナ属性で指定されている文字属性に基づいて、コンテナAに流し込まれるべきデータ量を計算できる。この文字属性には、例えば、フォントタイプ、フォントサイズ、文字ピッチ、行ピッチ等がある。
ここで、テキスト用コンテナの場合は、コンテナAの縦横比が制約を考えないと決定できないため、制約を当てはめる。図10の例では、コンテナAは、左上及び左下の角にアンカーが設定されているため、高さ(縦方向)が固定となる。よって、レイアウト編集アプリケーション121は、コンテナAの基本パターンとして設定されている幅(横方向)のコンテナAに、計算したデータ量(テキスト量)の文字を流し込めるか否かを判定する。
すべての文字を流し込めると判定された場合は、コンテナAは、基本パターンで設定されているサイズ(幅、高さ)に変更はない。また、すべての文字を流し込めないと判定された場合は、コンテナAは、アンカー設定により高さが固定であるため、横方向に伸びることになる。ここで、レイアウト編集アプリケーション121は、コンテナAの幅がどれだけになると、計算したデータ量の文字を流し込めるかを計算し、コンテナAのサイズを算出する。
次に、レイアウト編集アプリケーション121は、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う(ステップS903)。
レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとレイアウトされるサイズとの差が、できる限り同じになるように行われる。
レイアウト編集アプリケーション121は、ステップS902で算出したコンテナの集合のサイズ、つまり、コンテナAとコンテナBとリンク1106(ここでは固定リンク)の合計サイズを計算する。そして、この合計サイズと、基本レイアウトにおける当該コンテナの集合のサイズ(図10の例ではコンテナAとコンテナBのそれぞれのアンカーアイコンの距離に相当する)との差を計算する。コンテナAやコンテナBの幅が大きくなると、前ステップで計算されている場合は、差分値が発生する。レイアウト編集アプリケーション121は、この差分値をコンテナの集合の各要素に均等に分配することでレイアウト調整を行う。
次に、レイアウト編集アプリケーション121は、レイアウトの最適化を行い、そのレイアウトがルールに違反しているか否かを判定する(ステップS904)。ルールに違反していない場合(ステップS904でYES)、ステップS905に進む。一方、ルールに違反している場合(ステップS904でNO)、ステップS903に戻り、再度ルールを違反しないように計算をする。
ここでルールとは、レイアウト作成時にユーザによって設定される制限であり、コンテナのサイズの可変範囲や位置の制限、可変リンクの場合はリンクの長さの変化の制限などである。ルールを違反しないようにレイアウトが計算されたら、その集合のレイアウトは完成される。
そして、ステップS902〜ステップS904の処理をページ上のすべての集合について施し、レイアウト編集アプリケーション121は、ページ全体のレイアウトの計算が終了したか否かを判定する(ステップS905)。計算が終了していない場合(ステップS905でNO)、ステップS902に戻る。一方、計算が終了している場合(ステップS905でYES)、処理を終了する。
次に、上述のレイアウト計算時のUI例について、図11を用いて説明する。
図11は本発明の実施形態1のレイアウト計算処理におけるユーザインタフェースの一例を示す図である。
図11(A)は、あるレコードが挿入されレイアウトが決定されている状態を表している。1001と1002はアンカー、1003と1004は固定された辺、1005は可変の辺、1006は可変の辺の変化方向を示している矢印、1008はリンクをそれぞれ示している。この状態において、レコードを変更し、異なったサイズのコンテンツを挿入する。
図11(B)は、図11(A)の状態に新しいコンテンツのサイズを重ねて示している。1009はそれぞれのコンテナに挿入されるコンテンツのサイズを表している。そして、レイアウト計算が行われる。
図11(C)は、レイアウト計算された結果を示している。計算後の各コンテナのサイズは、実際に挿入されるコンテンツのサイズと同等に差異があるように計算され、且つ前述したルールを違反しないように計算される。図11(C)で示されるように、図11(B)で示した挿入されるコンテンツサイズ1009と計算後のコンテンツサイズ(1010は、双方において同等な差異がある。
[可変リンクの設定]
図12は本発明の実施形態1の可変リンクの設定のためのユーザインタフェースの一例を示す図である。
図12では、図4と同様に、アプリケーションウインドウ301とツールバー303が構成されている。図12の状態では、ドキュメントテンプレート309上にコンテナ1203とコンテナ1204が存在する。それぞれのコンテナはアンカーアイコン1201、アンカーアイコン1202と固定された辺1205、辺1206を含んで構成されている。
コンテナ1203と1204の間には、可変サイズのリンク1209があり、コンテナ1203とコンテナ1204を結んでいる。コンテナ1203とコンテナ1204の間には、リンク1209が設定されているのでそれぞれの右辺1207と左辺1208は点線で表現されている。このため、各コンテナにインジケーター1210、インジケーター1211が表示され、それぞれ辺1207と辺1208が可変であることを示している。
図13は本発明の実施形態1のリンク設定機能を実現するユーザインタフェースの一例を示す図である。
ここでは、リンク1209の情報(リンクプロパティ)をセットするためのユーザインタフェースであるダイアログウインドウ1401の例を示している。このダイアログウインドウ1401は、タイトルバー1402、ツールボタン1403、ダイアログウインドウ1401の開閉を行うボタン1404、各種の情報をセットするエリア1409で構成されている。
このダイアログウインドウ1401では、リンクタイプが可変長(1407)のリンクであるか、あるいは固定長(1406)のリンクであるかの択一的な選択を行えるラジオボタンからなるリンクタイプフィールド1405が構成されている。
リンクタイプが可変の場合には、リンクの長さの最小値フィールド1410(最小距離)、最大値フィールド1412(最大距離)、ならびに基準値フィールド1411(距離)からなるリンク距離フィールド1408が構成されている。
図13のダイアログウインドウ1401は、例えば、図6及び図7で説明したリンクの設定操作によって2つのコンテナ間にリンクを設定した後に、この設定されたリンクをクリック等の操作によって選択したときに表示される。あるいは、リンクを設定した直後に、当該リンクに関するダイアログウインドウ1401が自動的に表示されるようにしてもよい。ここで、各コンテナ間の距離の基準値は、データを流し込んだ際に各コンテナのサイズが変更されない場合に用いられるリンクの長さである。
次に、可変リンクの設定方法について、図14を用いて説明する。
図14は本発明の実施形態1の可変リンクの設定処理を示すフローチャートである。
例えば、図10のコンテナAとコンテナBの間に、図6及び図7で説明したリンクの設定操作によって、2つのコンテナ間にリンクを設定すると、まず、固定サイズのリンクが設定される。そして、このリンクを選択して、図14に示す処理を実行することにより、当該リンクを固定サイズのリンク1106(図10)の状態から可変サイズのリンク1209(図12)へと変更することができる。
まず、マウス133により所望のリンク(例えば、図10のリンク1106)を選択状態とする(ステップS1302)。次に、リンクプロパティを表示させるための所定の操作が行われる。これにより、レイアウト編集アプリケーション121のユーザインタフェース103は、選択状態のリンク(以下、対象リンクという)に対応したダイアログウインドウ1401(図13)を表示する(ステップS1303)。
尚、リンクの選択操作としては、コンテナの基本パターンの設定時と同様に、マウス133の右クリックあるいはキーボード132の特定のキーの操作等、いかなるものであってもよい。
表示されるダイアログウインドウ1401には、選択されたリンクの現在の状態が示される。本例では、リンク1106が選択されたので、この段階ではリンクサイズは固定であり、リンクタイプフィールド1405においては、固定長を示す距離1406が選択されている。
このダイアログウインドウ1401において、リンクを固定サイズから可変サイズに変更するために、リンクタイプフィールド1405において、リンクサイズを可変に設定するために、可変長ボタン1407を選択する(ステップS1304)。
これにより、リンク距離フィールド1408内に配置されている最大距離フィールド1412、最小距離フィールド1410、基準値フィールド1411が有効になり、数値の設定が可能となる。ユーザは、リンクの可変サイズを設定するために、そのリンクの長さの最大値を最大距離フィールド1412に、最小値を最小距離フィールド1410に、現在の値を基準値フィールド1411に設定する(ステップS1305)。
設定を終えると、ユーザは一般的なダイアログウインドウ開閉ボタン1404によって当該設定の適用を指示する。ユーザインタフェース103は、この指示を検出すると、当該対象リンクに上記設定状態を反映させる。この結果、図12のリンク1209に示すような状態にリンクのUI表示を変更する(ステップS1306)。
以上のダイアログウインドウ1401の設定情報は、例えば、メモリ136に格納される。
次に、レイアウト結果の一例について、図15及び図16を用いて説明する。
図15は本発明の実施形態1の固定サイズのリンクを使用した場合のレイアウト結果を示す図である。尚、コンテナの属性に基づきコンテナにコンテンツが流し込まれたレイアウト結果を表示するためのデータは、メモリまたはハードディスク等の記憶装置に記憶されている。
レイアウト計算方法は、前述したとおりに従って行われる。例えば、図15において、コンテナ1203とコンテナ1204にそれぞれ違ったサイズのイメージデータが挿入された場合を考える。この場合、それぞれのコンテナはデータの大きさを最適とみなし、コンテナ1203は挿入されたイメージサイズになる枠1504(最適コンテナサイズ)に近づこうと右方向へサイズを変更しようとする。同様に、コンテナ1204は挿入されたイメージサイズになる枠1505(最適コンテナサイズ)に近づこうと左方向へサイズを変更しようとする。
しかし、コンテナ1203とコンテナ1204はアンカーアイコン1201とアンカーアイコン1202によってそれぞれ左辺1212と右辺1213の移動ができないため、上記のようにサイズを変更しようとすると両者の間隔を狭めるしかない。しかしながら、コンテナ1203と1204間には固定サイズのリンク1503が設定されており、レイアウト計算時にその長さが維持されるため、コンテナ1203とコンテナ1204のサイズが変更されることになる。
その結果、コンテナ1203とコンテナ1204は、データの縦横比に合わせた最適なサイズを確保することができず、最終的に、図15に示すように、最適なサイズ(枠1504、枠1505)よりも小さくなってしまう。即ち、リンク1503のサイズが固定であるため、コンテナ1203とコンテナ1204は最適サイズを達成できない(図15において、各コンテナ内の一点差線で示した範囲がデータの持つ縦横比である)。
一方、図16は図15と同様の状態でリンクを可変サイズにした場合を示している。
この場合、上記の例で、コンテナ1203とコンテナ1204の間には図示の通り可変サイズのリンク1603が設定されている。従って、コンテナ1203とコンテナ1204のサイズが変更される際には、リンクサイズが縮まることでコンテナ1203とコンテナ1204のサイズを、図15の例より大きくすることができる。
この結果、挿入されるデータサイズに合わせた最適なサイズを達成できる、あるいはより挿入データサイズ(最適サイズ)に近いコンテナの枠を設定することができる。図16はこの結果を示しており、図12の可変リンク1209はレイアウト計算の結果、可変リンク1603に示されるようなサイズ状態となる。尚、この場合、コンテナ1203とコンテナ1204はそれぞれ最適なサイズ(データサイズに合った大きさ)になっている。
次に、実施形態1の特徴的な構成について、以下、説明する。
実施形態1では、ドキュメントテンプレート(単に、テンプレートとも呼ぶ)に定義されたコンテナ(データが流し込まれる部分領域:フィールド領域とも呼ばれる)に従って、データベースのレコード等を配置した文書を作成する。
また、実施形態1では、特に、データをテンプレートに従って配置するのみならず、テンプレートに従ってドキュメントの一部を作成する。そして、そのドキュメントの一部を、別途テンプレートに定義された領域(フローエリアと呼ぶ)に挿入してドキュメントを完成させる機能(マルチレコード機能)を有している。挿入できるドキュメントの一部の数は、ひとつのフローエリアについて一つとは限らない。さらに、ドキュメントテンプレートに複数のフローエリアが定義されている場合、一定の条件に従って、作成済みのドキュメントの一部をフローエリア毎に振り分けることも可能である。
次に、マルチレコード機能について、図17Aを用いて説明する。
<マルチレコード(マルチデータ)機能>
図17Aは本発明の実施形態1のマルチレコード機能を説明するための図である。
通常のドキュメントテンプレート(図2)では、1レコードが1ドキュメントに対応しているが、サブテンプレートに対応するマルチレコードは、基準となる項目が変化するブレイク(切れ目)が発生するまでのレコードが流し込まれるものである。そのため、1ドキュメント内に複数のレコードが入ることになる。よって、通常のドキュメントテンプレートに対応するバリアブルデータのデータベースと、サブテンプレートに対応するバリアブルデータのマルチレコードのデータベースとは異なるデータベースとすることが望ましい。
図17Aは、マルチレコードとそのレイアウト方法の概要を示している。データベース11204は、ドキュメント11201、ページ11202、サブテンプレート11203、データベース11204を含む。図17Aでは、データベース11204には、レコード1〜7が含まれている。1レコードを1ドキュメントにレイアウトする通常のバリアブルプリントでは、7つレコードがあるので、この場合、7つのドキュメントが作成される。
一方、多レコード(マルチレコード)を1ドキュメントにレイアウトするマルチレコード機能をサポートするバリアブルプリントでは、次のような処理を行う。まず、マルチレコードを指定する基準の項目であるカラム(フィールド)をユーザが指定しておく。この指定されるカラムをキーカラムと呼ぶ。
尚、キーカラムをマルチデータ条件と呼ぶ場合もある。この例では、フィールド名:Nameがキーカラムとして指定されたものとする。すると、その指定されたフィールドの値が同じレコード群は、1ドキュメントにレイアウトされるレコード群となる。
この例では、レコード1〜4はキーカラムであるNameフィールドの値が同一の「Tom」であるため、ひとつのドキュメントにレイアウトされる。レコード5〜7は、Nameフィールドの値が同一の「Nancy」であるため、ブレイクが発生し、もうひとつのドキュメントにレイアウトされる(図17A参照)。もちろん、マルチレコードが指定されたフィールドの値が異なるレコードは、別々のドキュメントにレイアウトされる。
図17Aのドキュメントのページ11202が、それぞれ異なるレイアウトとして作成されているのは、ドキュメント毎にマルチレコードの数が異なるためである。マルチレコードの数により、どのようにサブテンプレートがレイアウトされるかは、例えば、フローエリアの属性情報に基づくことになる。例えば、4つのサブテンプレートの場合は、図17Aの上図のようにレイアウトされ、3つのサブテンプレートの場合は、図17Aの下図のようにレイアウトされることになる。
ここで、ドキュメントテンプレートに対して、サブテンプレートをフローエリアに配置すると、サブテンプレートのサイズによっては、フローエリア内に無駄なスペースができる場合があり、見た目が悪くなるケースが想定される。
特に、従来では、サブテンプレートのサイズが配置候補のフローエリアのサイズを超えた場合、サブテンプレートの回り込み(空き領域への移動)が発生し、ユーザの意図しない出力ページ数の増加や余白の挿入が生じていた。また、意図しない出力結果を防ぐには、予めフローエリアのサイズが不足する自体を想定したサブテンプレートを準備する必要があった。
そこで、本発明の実施形態1では、サブテンプレートのサイズに対してフローエリアのサイズが不足している場合に、フローエリアのサイズに合わせてサブテンプレートに定義されたデータのレイアウトを変更する構成を実現する。
まず、実施形態1のサブテンプレートのレイアウト処理について、図17Bを用いて説明する。
図17Bは本発明の実施形態1のサブテンプレートのレイアウト処理を示すフローチャートである。また、図18は本発明の実施形態1のドキュメントテンプレートのフローエリアに設定するサブテンプレート例を示す図である。図19は本発明の実施形態1の図18のサブテンプレートにバリアブルデータを挿入して、ドキュメントテンプレートのフローエリアにサブテンプレートを配置した配置例を示す図である。
以下、図18、図19の具体例を交えて、図17Bのフローチャートの説明を行う。
図18では、イメージコンテナ1801とテキストコンテナ1802をリンク1803で関連付けた単純なサブテンプレートを示している。サブテンプレートは、その中にイメージコンテナやテキストコンテナ等を配置して、その配置されたコンテナに対して、データベース上のどのデータ(バリアブルデータ)を割り当てるかを設定した状態で保存されるテンプレートデータである。データ自体は通常のドキュメントテンプレートと特に相違する点はない。
サブテンプレートは、同じレイアウトを一つのドキュメントで数多く使う場合や、他ドキュメントで流用する場合に便利である。サブテンプレート内に配置されるイメージコンテナ、テキストコンテナ間にはリンクを設定することが可能である。従って、レイアウトするデータによって、レイアウトサイズ(位置も)を最適に変化させることが可能である。
また、サブテンプレートは、ドキュメントテンプレート上に定義されるフローエリアにのみ連続して配置することができるテンプレートであり、同じレイアウトを1つのドキュメントテンプレート上で良く使う場合に使用される。
サブテンプレート内に配置されるコンテナは、ドキュメントテンプレート上に直接配置されるイメージコンテナ、テキストコンテナと同様である。そして、図15、16で説明したことと同様に、レイアウトするデータによって、レイアウトサイズを動的に変化させることが可能である。
サブテンプレートへのバリアブルデータのレイアウトフローは、図17BのステップS1701からステップS1706に示される。
まず、ステップS1701で、レイアウト編集アプリケーション121は、レイアウトするデータを取得する。次に、ステップS1702で、レイアウト編集アプリケーション121は、サブテンプレートを構成する各コンテナにレイアウトするデータのサイズを取得する。次に、ステップS1703で、レイアウト編集アプリケーション121は、取得したデータサイズに基いて、各コンテナにおいてレイアウト計算を行う。
そして、ステップS1704で、レイアウト編集アプリケーション121は、サブテンプレート内のコンテナのレイアウトの最適化を行う。レイアウトの最適化の手法に関しては、上述の図8、図9と同様である。ステップS1705で、レイアウト編集アプリケーション121は、ステップS1704で最適化されたレイアウトを決定する。ステップS1706で、レイアウト編集アプリケーション121は、最適化されたレイアウトの各コンテナに対してバリアブルデータを挿入する。
次に、ステップS1707以降のフローで、フローエリアに対してサブテンプレートを流し込む処理を実行する。
ステップS1707で、レイアウト編集アプリケーション121は、まず、サブテンプレートの流し込み先であるフローエリアの現在残っているサイズ(配置領域サイズ)を取得する。ここで、取得するサイズ情報は、フローエリアの幅及び高さである。
ステップS1708で、レイアウト編集アプリケーション121は、ステップS1706でバリアブルデータを各コンテナに挿入したサブテンプレート(バリアブルデータ挿入後のサブテンプレート)のサイズを取得する。ここで、取得するサイズ情報は、バリアブルデータ挿入後のサブテンプレートの幅及び高さである。
ステップS1709で、レイアウト編集アプリケーション121は、ステップS1707で取得したフローエリアのサイズとステップS1708で取得したサブテンプレートのサイズの比較を行う。このとき、サブテンプレートのサイズ(幅もしくは高さ)がフローエリアのサイズ以下である場合(ステップS1709でYES)、レイアウト編集アプリケーション121は、フローエリアにサブテンプレートを流し込むことが可能であると判定する。そして、ステップS1710で、レイアウト編集アプリケーション121は、フローエリアに対してサブテンプレートを流し込み、レイアウト結果をドキュメントに配置する。
一方、ステップS1709で、サブテンプレートのサイズがフローエリアのサイズより大きい場合(ステップS1709でNO)、レイアウト編集アプリケーション121は、フローエリアにサブテンプレートを流し込むことが可能でないと判定する。そして、ステップS1711で、レイアウト編集アプリケーション121は、フローエリアに収まるサイズへのサブテンプレートのレイアウト構造の再定義を行うか否かを判定する。換言すれば、サブテンプレートのレイアウト構造の再定義の可否を判定する。
特に、本発明では、サブテンプレートのレイアウト構造の再定義を行うか否かの設定を指定するためのユーザインタフェース(図28)を構成している。このユーザインタフェースの詳細に関しては後述するが、このユーザインタフェースでは、サブテンプレートのレイアウト構造の再定義の可否の設定を行うことができる。
そのため、ステップS1711で、レイアウト編集アプリケーション121は、サブテンプレートのレイアウト構造の再定義を許可するか否かを判定する。この判定は、図28のユーザインタフェースで設定される設定情報に基づいて、フローエリアに合わせたサブテンプレートのレイアウト構造の再定義設定が指定されているか否かで判定する。
ステップS1711において、サブテンプレートのレイアウト構造の再定義が許可されていない場合(ステップS1711でNO)、ステップS1714に進む。ステップS1714で、レイアウト編集アプリケーション121は、フローエリア内でサブテンプレートを配置することのできる位置までサブテンプレートを移動する回り込み処理を行う。
尚、フローエリア内でのサブテンプレートの回り込み処理に関しては後述する。
一方、サブテンプレートのレイアウト構造の再定義が許可されている場合(ステップS1711でYES)、レイアウト編集アプリケーション121は、ステップS1712で、サブテンプレートのレイアウト構造の再定義を行う。尚、サブテンプレートのレイアウト構造の再定義に関しては後述する。
次に、ステップS1713で、レイアウト編集アプリケーション121は、ステップS1712におけるフローエリアのサイズに収まるサブテンプレートのレイアウト構造の再定義の結果を判定する。この判定は、レイアウト構造の再定義が成功したか否かを判定する。そして、サブテンプレートのレイアウト構造の再定義が成功した場合(ステップS1713でYES)、ステップS1710に進む。ステップS1710で、レイアウト編集アプリケーション121は、再定義されたフローエリアに対してサブテンプレートを流し込み、レイアウト結果をドキュメントに配置する。
一方、ステップS1713において、サブテンプレートのレイアウト構造の再定義に失敗した場合(ステップS1713でNO)、ステップS1714に進む。ステップS1714で、レイアウト編集アプリケーション121は、フローエリア内でサブテンプレートを配置することのできる位置までサブテンプレートを移動する回り込み処理を行う。
次に、サブテンプレートをフローエリアに流し込む処理の具体例を図19を用いて説明する。
図19では、ドキュメント1901上のフローエリア1902内に対して2個のバリアブルデータが図18に示すレイアウト構造を持つサブテンプレート1903、1907を介して正常に流し込まれる例を示している。
バリアブルデータは、イメージコンテナ1904とテキストコンテナ1906がリンク1905で接続されたサブテンプレート1903に流し込まれる。また、バリアブルデータは、イメージコンテナ1908とテキストコンテナ1910がリンク1909で接続されたサブテンプレート1907に流し込まれる。
サブテンプレート1903のサイズとサブテンプレート1907のサイズとの和がフローエリア1902よりも小さいため、サブテンプレート1903と1907はドキュメント1901上に水平方向に並んで配置される。
図20は、図19の状態のドキュメント1901上にさらにもう1個のサブテンプレートを配置する場合を示している。ドキュメント1901上では、既にフローエリア1902が定義されている。ここに、新たに、イメージコンテナ2004、テキストコンテナ2006及び両者を接続するリンク2005が定義されているサブテンプレート2003を配置する場合には、通常、フローエリア2007に流し込まれることになる。
但し、この場合、サブテンプレート2003の高さがフローエリア2007の高さを超えているために、サブテンプレート2003はドキュメント1901上に配置することはできない。そして、従来の構成では、このような状況では、サブテンプレートの回り込み処理を行う。このサブテンプレートの回り込み処理に関しては後述する。
これに対し、本発明では、図17BのステップS1711において、フローエリア2007に収まらないサブテンプレート2003のレイアウト構造を再定義するか否かを判定する。そして、その判定結果に基づいて、レイアウト構造を再定義する。これにより、より適切なレイアウト構造のサブテンプレート配置を行うことが可能となる。
以下、このサブテンプレートのレイアウト構造の再定義処理(ステップS1712)について、図21を用いて説明する。
図21は本発明の実施形態1のサブテンプレートのレイアウト構造の再定義処理を示すフローチャートである。
まず、ステップS2101で、レイアウト編集アプリケーション121は、サブテンプレートのレイアウト構造の再定義を行うことができるか否かを判定する。サブテンプレートのレイアウト構造の再定義を行うことができる場合(ステップS2101でYES)、ステップS2102に進む。一方、サブテンプレートのレイアウト構造の再定義を行うことができない場合(ステップS2101でNO)、サブテンプレートのレイアウト構造を再定義前に戻して、処理を終了する。レイアウト構造の再定義を行うことができない場合の具体例は、図25で後述する。特に、図25に示す例は、サブテンプレートのレイアウト構造の再定義に失敗した例を示している。
ステップS2102で、レイアウト編集アプリケーション121は、レイアウトの再定義対象のコンテナを判別する。
図20の例では、レイアウト編集アプリケーション121は、サブテンプレート2003のサイズがフローエリア2007のサイズ(高さ)を上回る原因となるコンテナをサブテンプレート2003のレイアウト構造から判別する。この場合、サブテンプレート2003の高さがフローエリア2007を上回る原因は、テキストコンテナ2006であることが分かる。そのため、このテキストコンテナ2006が再定義対象のコンテナと判別する。
そして、実施形態1では、ステップS2102で、既に定義済みのサブテンプレート2003のサイズをフローエリア2007のサイズに合うようにテキストコンテナ2006のレイアウト構造を再定義する。但し、テキストコンテナ2006には、リンク2005を介してイメージコンテナ2004が接続されている。この場合は、テキストコンテナ2006に接続されている全てのリンク、コンテナを含めてレイアウト構造の再定義対象となる。
次に、ステップS2103で、レイアウト編集アプリケーション121は、レイアウト構造の再定義対象のコンテナからリンクを解除する。
図20の例では、レイアウト構造の再定義対象となるテキストコンテナ2006からリンク2005を解除する。これによって、リンク2005が無効になるため、同様にイメージコンテナ2004からリンク2005を解除する。
次に、ステップS2104で、レイアウト編集アプリケーション121は、リンクを解除した再定義対象のコンテナをフローエリア内で再配置する。
図20の例では、リンク2005を解除したイメージコンテナ2004とテキストコンテナ2006をフローエリア2007内に再配置する。
このステップS2104における、コンテナの再配置の過程を図22を用いて説明する。
図22は本発明の実施形態1のコンテナの再配置の過程を説明するための図である。
図22では、まず、フローエリア2007に対して、イメージコンテナ2004を配置する。次に、レイアウト構造の再定義対象であるテキストコンテナ006をフローエリア2007の空いている領域に配置する。そして、この配置によって、図20のコンテナの配置は、図23に示すような配置となる。つまり、図23は、図20の状態のドキュメント1901上のサブテンプレート2003に対する、ステップS2104によるレイアウト構造の再定義結果を示している。
つまり、ステップS2104の処理で、ドキュメント1901上のフローエリアに、バリアブルデータが挿入されたイメージコンテナ2004、テキストコンテナ2006が本来定義されていたサブテンプレート2003と異なるレイアウト構造で配置される。
これによって、サブテンプレート2003のサイズがフローエリア2303のサイズのに合う形のサブテンプレート2304に変形され、ドキュメント1901上に3レコード分のバリアブルデータを適切に流し込むことが可能となる
尚、ステップS2104に対し、フローエリア内のどの位置からコンテナを配置するか、フローエリア内にコンテナをどの順番で配置するかの設定は、後述するユーザインタフェース(図26)で行う。
図21の説明に戻る。
ステップS2105で、レイアウト編集アプリケーション121は、ステップS2104の処理によるコンテナのレイアウト構造の再定義の結果、サブテンプレートがフローエリアに収まるか否かを判定する。フローエリアに収まる場合(ステップS2105でYES)、ステップS2106に進む。図23に示す例では、サブテンプレート2304がフローエリア2007に収まる場合の例となる。
ステップS2106で、レイアウト編集アプリケーション121は、再定義されたレイアウトの各コンテナに対してバリアブルデータを挿入する。
一方、フローエリアに収まらない場合(ステップS2105でNO)、ステップS2101に戻り、再度、レイアウト構造の再定義を行うことができるか否かを判定する。
次に、図17BのステップS1714の回り込み処理の具体例について、図24を用いて説明する。
図24は本発明の実施形態1のフローエリア内でのサブテンプレートの回り込み処理を説明するための図である。
上述のように、フローエリアのサイズに対して、サブテンプレートのサイズが大きく、かつサブテンプレートのレイアウト構造の再定義が許可されていない場合には、フローエリア内でサブテンプレートの回り込み処理を行う。
この例では、ドキュメント2401に対して、サブテンプレート2403はサブテンプレート2402の隣には配置することはできない。そこで、この場合、2種類のサブテンプレートをドキュメント2401内の空き領域へ移動する回り込み処理を試行する。
サブテンプレート2402を配置したドキュメント2401のフローエリア中にサブテンプレート2403のサイズよりも大きい空き領域を有する場合は、その空き領域にサブテンプレート2403を配置する。
また、サブテンプレート2402を配置したドキュメント2401のフローエリア中の空き領域がサブテンプレート2403のサイズよりも小さい場合は、新たにドキュメント2404を作成する。そして、そのドキュメント2404上のフローエリアにサブテンプレート2403を配置する。
このように、回り込み処理では、フローエリア中の空き領域に基づいて、その空き領域に配置対象のサブテンプレートを配置する、あるいは新規に作成したドキュメントテンプレート上の新規のフローエリアに配置対象のサブテンプレートを配置する。
次に、図21のステップS2101で、サブテンプレートのレイアウト構造の再定義を行えない(再定義の失敗)場合の具体例について、図25を用いて説明する。
図25は本発明の実施形態1のサブテンプレートのレイアウト構造の再定義を行えない(再定義の失敗)場合の具体例を説明するための図である。
図25に示すように図20の状態のサブテンプレート2003に対してレイアウト構造の再定義を行った場合に、サブテンプレート2504が得られたとする。ここで、サブテンプレート2504のサイズは、フローエリア2007のサイズより大きくなっている。そのため、サブテンプレート2504は、これ以上のレイアウト構造の再定義を行うことができない。
この場合は、図20のサブテンプレート2003は、レイアウト構造の再定義を行うことができないものと判定し、図25のサブテンプレート2504のレイアウト構造を図20のサブテンプレート2003に戻す。そして、この場合には、ステップS1714で、フローエリア内でサブテンプレートを配置することのできる位置までサブテンプレートの回り込み処理を行う。
次に、レイアウト構造の再定義を行う場合における、サブテンプレート内でのコンテナのフロー(流し込み)設定を行うためのユーザインタフェース例について、図26を用いて説明する。
図26は本発明の実施形態1のコンテナのフロー設定を行うためのユーザインタフェース例を示す図である。
このユーザインタフェース2601では、構成されている設定項目(ラジオボタン)を用いて、ドキュメント上のフローエリアに対して、設定した回り込み方向に従って、フローエリア中の空き領域に対してコンテナを配置する設定(配置ルール)が可能である。
図26では、ラジオボタン2602から2606のいずれか1つを選択することで、サブテンプレート内のコンテナのフロー方向を設定する。
ラジオボタン2602は、サブテンプレートの上端を起点に、フローエリアに対して上から下の縦方向にコンテナを配置するためのボタンである。
ラジオボタン2603は、サブテンプレートの上左端を起点にサブテンプレートに対して左から右の横方向にコンテナを配置し、横方向にコンテナが配置できなくなったら、コンテナの配置を1行下げ、再度左から右の横方向に配置するためのボタンである。
ラジオボタン2604は、サブテンプレートの上左端を起点にサブテンプレートに対して上から下の縦方向にコンテナを配置し、縦方向にコンテナが配置できなくなったら、コンテナの配置を1列右に移動し、再度上から下の横方向に配置するためのボタンである。
ラジオボタン2605は、サブテンプレートの上右端を起点にサブテンプレートに対して右から左の横方向にコンテナを配置し、横方向にコンテナが配置できなくなったら、コンテナの配置を1行下げ、再度右から左の横方向に配置するためのボタンである。
ラジオボタン2606は、サブテンプレートの上右端を起点にサブテンプレートに対して上から下の縦方向にコンテナを配置し、縦方向にコンテナが配置できなくなったら、コンテナの配置を1列左に移動し、再度上から下の横方向に配置するためのボタンである。
そして、OKボタン2607を押下すると、ユーザインタフェース2601で設定したコンテナの回り込み設定を回り込み設定情報としてメモリ136に記憶する。一方、キャンセルボタン2608を押下すると、ユーザインタフェース2601で設定した回り込み設定をキャンセルし、ユーザインタフェース2601の表示を終了する。
次に、ユーザインタフェース2601で設定された回り込み設定情報に従う、サブテンプレート内でのコンテナのフロー例について、図27を用いて説明する
図27は本発明の実施形態1のサブテンプレート内でのコンテナのフロー例を示す図である。
尚、図27の説明においては、フローエリア内でのサブテンプレートのフローも同様の設定及び挙動をするものとする。また、この設定及び挙動については、図26のユーザインタフェース2601と同様のフローエリア用のユーザインタフェースを構成することで実現できる。
図27では、1からN個(Nは整数)のコンテナ2701〜270n(コンテナ1〜コンテナN)をサブテンプレート2706に、ユーザインタフェース2601で設定された回り込み設定情報に従ってフロー配置するものとする。
サブテンプレート2707は、ユーザインタフェース2601で、ラジオボタン2602を選択した場合のフロー例である。この場合、コンテナ2701、2702、270nは上から順に縦に配置される。
サブテンプレート2708は、ユーザインタフェース2601で、ラジオボタン2603を選択した場合のフロー例である。この場合、コンテナ2701、2702はサブテンプレート2708の左上を起点に、左から右の横方向に配置される。コンテナ2703を横方向に配置できなくなったら、コンテナ2703はサブテンプレート2708内を下方向にフローし、再度左端を起点に配置される。コンテナ2704、270nも同様の手順で配置される。
サブテンプレート2709は、ユーザインタフェース2601で、ラジオボタン2604を選択した場合のフロー例である。この場合、コンテナ2701、2702、2703はサブテンプレート2709の左上を起点に、上から下の縦方向に配置される。コンテナ2704を縦方向に配置できなくなったら、コンテナ2704はサブテンプレート2079内を右方向にフローし、再度左端を起点に配置される。コンテナ2705も同様の手順で配置される。
サブテンプレート2710は、ユーザインタフェース2601で、ラジオボタン2605を選択した場合のフロー例である。コンテナ2701、2702はサブテンプレート2710の右上を起点に、右から左の横方向に配置される。コンテナ2703を横方向に配置できなくなったら、コンテナ2703はサブテンプレート2710内を下方向にフローし、再度右端を起点に配置される。コンテナ2704、270nも同様の手順で配置される。
サブテンプレート2711は、ユーザインタフェース2601で、ラジオボタン2606を選択した場合のフロー例である。コンテナ2701、2702、2703はサブテンプレート2711の右上を起点に、上から下の縦方向に配置される。コンテナ2704を縦方向に配置できなくなったら、コンテナ2704はサブテンプレート2711内を左方向にフローし、再度右端を起点に配置される。コンテナ2705も同様の手順で配置される。
次に、フローエリアに対して、サブテンプレートのレイアウト構造の再定義設定及び、コンテナ配置の際の外部余白設定を行うためのユーザインタフェース例について、図28を用いて説明する。このユーザインタフェースで設定された設定情報は、図17BのステップS1711の判定に用いられる。
図28は本発明の実施形態1のサブテンプレートのレイアウト構造の再定義設定及び、コンテナ配置の際の外部余白設定を行うためのユーザインタフェース例を示す図である。
このユーザインタフェース2801では、構成されている設定項目(ラジオボタン、チェックボックス等)を用いて、サブテンプレートのレイアウト構造の再定義設定及び、コンテナ配置の際の外部余白設定を行うことができる。
ラジオボタン2802及び2803は、フローエリアに対して、サブテンプレートのレイアウト構造の再定義を行うか否かを設定するためのボタンである。ここでの設定情報に基づいて、ステップS1711でサブテンプレートのレイアウト構造の再定義を行うか、従来どおりのフローエリアの回り込み処理を行うかが決定される。
チェックボックス2804は、ラジオボタン2803を選択した場合のみ有効になるチェックボックスである。ここでは、サブテンプレート内で設定されているコンテナ間のリンクを解消し、再配置されたコンテナに対して外部余白を設定するか否かの設定を行うことができる。
特に、チェックボックス2804を選択した場合は、テキストボックス2805で上下左右の外部余白の大きさを決定する。ここでの上下左右とは、ドキュメントの天地左右(上下左右辺)に対応する。
そして、OKボタン2806を押下すると、ユーザインタフェース2801で設定した設定(レイアウト構造の再定義設定及びコンテナ配置の際の外部余白設定)を設定情報としてメモリ136に記憶する。一方、キャンセルボタン2807を押下すると、ユーザインタフェース2801で設定した設定をキャンセルし、ユーザインタフェース2801の表示を終了する。
以上説明したように、実施形態1によれば、フローエリアに収まるサイズにサブテンプレートのレイアウト構造を再調整することで、できる限りユーザが意図するレイアウトのドキュメントを作成することができる。また、ユーザの意図をより反映させるためにサブテンプレートを複数準備することなく、最適なレイアウトが実現することができる。
<<実施形態2>>
上述の実施形態1の図17B及び図21のフローチャートに示す処理では、サブテンプレートのレイアウト構造を一時的に再定義することで、配置候補のフローエリアのサイズに応じるようにサブテンプレートのサイズを調整することが可能である。
ここで、実施形態1では、図26及び図28に示すユーザインタフェースによって指定したフローエリアに対して、配置するサブテンプレートを構成するコンテナ、リンク全ての要素に対して、再定義の設定を行うものである。但し、サブテンプレートを構成するコンテナ、リンクによっては、再定義を行うことで、むしろユーザの意図が損なわれる場合も考えられる。
そこで、実施形態2では、図29に示すユーザインタフェースを用いて、サブテンプレートを構成するリンクを介して再定義時の挙動を制御する構成について説明する。つまり、実施形態2では、再定義時のリンク設定を行うためのユーザインタフェースを構成している。
図29は本発明の実施形態2のリンクに関する設定のためのユーザインタフェース例を示す図である。
図29では、サブテンプレートに定義されたレイアウト構造を構成するリンクに対して、レイアウト構造を一時的に再定義する際に、リンク解除の許可の設定を行うためのユーザインタフェース例を示している。つまり、構成されている設定項目(ラジオボタン)を用いて、ユーザインタフェース2901では、サブテンプレートに定義されたレイアウト構造を構成するリンクに対して、レイアウト構造を一時的に再定義する際に、リンク解除の許可の設定を行うことができる。
ラジオボタン2902及び2903では、サブテンプレートで定義されたリンクに対して、再定義時に、再定義対象となるコンテナとのリンク解除の設定を行うためのボタンである。この設定は、サブテンプレート内で定義されているリンクに対して個別に行うことができる。
ラジオボタン2902は、設定したリンクがサブテンプレートの再定義時に再定義対象となるコンテナと接続されている場合、そのリンクを解除するためのボタンである。
ラジオボタン2903は、設定したリンクがサブテンプレートの再定義時に再定義対象となるコンテナと接続されている場合、そのリンクを解除しないためのボタンである。
そして、OKボタン2904を押下すると、ユーザインタフェース2901で設定したリンク設定を設定情報としてメモリ136に記憶する。一方、キャンセルボタン2905を押下すると、ユーザインタフェース2901で設定したリンク設定をキャンセルし、ユーザインタフェース2901の表示を終了する。
次に、図29のユーザインタフェース2901を用いて、リンクに関する設定に基づくサブテンプレートの配置例について、図30を用いて説明する。
図30は本発明の実施形態2のサブテンプレートの配置例を示す図である。
図30では、図29のユーザインタフェース2901を用いて、リンクに関する設定を行ったサブテンプレート3003、3004を、ドキュメント3001上のフローエリア3002に配置する例を示している。
サブテンプレート3003には、イメージコンテナ3005及び3006と、テキストコンテナ3007がレイアウトされている。イメージコンテナ3005とイメージコンテナ3006間はリンク3008で接続されている。また、イメージコンテナ3006とテキストコンテナ3007間はリンク3009で接続されている。
また、サブテンプレート3004には、イメージコンテナ3010及び3011と、テキストコンテナ3012がレイアウトされている。イメージコンテナ3010とイメージコンテナ3011間はリンク3013で接続されている。また、イメージコンテナ3011とテキストコンテナ3012間はリンク3014で接続されている。
また、リンク3008と3013については、図29のユーザインタフェース2901のラジオボタン2902によって、再定義時にリンクを解除するための設定が行われているとする。更に、リンク3009と3014については、図29のユーザインタフェース2901のラジオボタン2902によって、再定義時にリンクを解除しないための設定が行われていないとする。
この時の設定状態は、リンク3009については、イメージコンテナ3006の下にはテキストコンテナ3007を常に配置するというユーザの意図が反映されている。また、リンク3014については、イメージコンテナ3011の下にはテキストコンテナ3012を常に配置するというユーザの意図が反映されている。
ここで、サブテンプレート3004は、コンテンツの挿入によって、イメージコンテナ3011がフローエリア3002の範囲を超える。このとき、図28のユーザインタフェース2801のラジオボタン2803(再定義設定)が選択されている場合は、ステップS1712で、イメージコンテナ3011を再定義対象とし、サブテンプレート3004の再定義が行われることになる。
ここで、実施形態1の構成に従って、図30のサブテンプレート3004を再定義を行う場合には、サブテンプレート3004内の再定義対象のイメージコンテナ3011を再配置することで、サブテンプレート3004の再定義を行うことになる。この場合、サブテンプレート3004内のリンク3013及び3014は解除され、図31に示すような構成となる。
一方、実施形態2の構成では、リンク解除の設定の有無に基づいて、サブテンプレートの再定義を行うことになる。
以下、実施形態2における、サブテンプレートのレイアウト構造の再定義処理について、図32を用いて説明する。
図32は本発明の実施形態2のサブテンプレートのレイアウト構造の再定義処理を示すフローチャートである。
尚、図32のフローチャートは、基本的には実施形態1の図21のフローチャートに準ずる。
まず、ステップS3201で、レイアウト編集アプリケーション121は、サブテンプレートのレイアウト構造の再定義を行うことができるか否かを判定する。ここでの判定方法は、図21のステップS2101と同様である。
サブテンプレートのレイアウト構造の再定義を行うことができる場合(ステップS3201でYES)、ステップS3202に進む。一方、サブテンプレートのレイアウト構造の再定義を行うことができない場合(ステップS3201でNO)、サブテンプレートのレイアウト構造を再定義前に戻して、処理を終了する。
ステップS3202で、レイアウト編集アプリケーション121は、レイアウトの再定義対象のコンテナを判別する。
図30の例では、レイアウト編集アプリケーション121は、サブテンプレート3004のサイズがフローエリア3002のサイズ(幅)を上回る原因となるコンテナをサブテンプレート3004のレイアウト構造から判別する。この場合、サブテンプレート3004の幅がフローエリア3002を上回る原因は、イメージコンテナ3011であることが分かる。そのため、このイメージコンテナ3011が再定義対象のコンテナと判別される。
そして、実施形態2では、サブテンプレートのレイアウト構造の再定義対象となるコンテナを判別した後、新たに、ステップS3203を実行する。つまり、ステップS3203で、レイアウト編集アプリケーション121は、再定義対象のコンテナに接続されているリンクを解除できるか否かを判定する。これは、図29のユーザインタフェース2901で設定される設定情報に基づいて判定する。
リンクを解除できない場合(ステップS3203でNO)、ステップS3204に進む。一方、リンクを解除できる場合(ステップS3203でYES)、ステップS3205に進む。
特に、リンクを解除できる場合は、ステップS3205〜ステップS3207の処理を実行する。これらの処理は、図21のステップS2104〜ステップS2106に対応するため、その詳細は省略する。
一方、リンクを解除できない場合は、ステップS3204で、レイアウト編集アプリケーション121は、再定義対象のコンテナの再判別を行う。
具体例を、図30を用いて説明する。
イメージコンテナ3011は、リンク3013によってイメージコンテナ3010に接続されている。また、イメージコンテナ3011はリンク3014によってテキストコンテナ3012と接続されている。
リンク3013は、ラジオボタン2902(図29)によって、リンクを解除するに設定されているため、イメージコンテナ3011との接続は解除される。また、リンク3014は、ラジオボタン2903(図29)によって、リンクを解除しないに設定されているため、イメージコンテナ3011との接続は解除されない。
このため、ステップS3204では、レイアウト編集アプリケーション121は、イメージコンテナ3011とリンク3013で接続されているテキストコンテナ3012をレイアウトの再定義対象として拡大して、サブテンプレートの再定義処理を実行する。
この処理後、ステップS3203の判定を経て、ステップS3205では、レイアウト編集アプリケーション121は、イメージコンテナ3011とリンク3014で接続されているテキストコンテナ3012をフローエリア3004内に配置することになる。
この場合の配置例は、図33のようになる。つまり、図33に示されるように、イメージコンテナ3011とテキストコンテナ3012を接続するリンク3014は解除せずに、サブテンプレート2304内にフローした、レイアウト構造が新たに定義されることになる。
以上説明したように、実施形態2によれば、実施形態1で説明した効果に加えて、ユーザの意図に応じて、リンクの解除の可否を踏まえたサブテンプレートのレイアウト構造を再定義することができる。これにより、よりユーザが意図するレイアウトのドキュメントを作成することができる。
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図に示すフローチャートに対応したプログラム)を、システムあるいは装置に直接あるいは遠隔から供給する。そして、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
プログラムを供給するための記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスクがある。また、更に、記録媒体としては、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などがある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、その接続先のホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。また、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。