説明

情報処理装置および制御方法および制御プログラム

【課題】 様々なサイズのサブテンプレートを所定の領域内に配置する場合、空白が多く生じるため見栄えの良いレイアウト結果を得ることができなかった。
【解決手段】 各行または列に配置された複数のサブテンプレートのサイズの差を用いて、新たな行または列の開始位置を決定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、自動レイアウトシステムにおける装置/媒体、およびレイアウト手法に関するものである。
【背景技術】
【0002】
近年、商品の多品種化で商品ライフサイクルが短くなっていること、インターネット利用の普及による消費者のカスタマイズサービス指向などの要因からCRM、One−to−Oneマーケティングの必要性が注目されている。これらの手法により顧客満足度を高め、顧客の開拓や囲い込みを目指すものである。なお、CRMとは、Customer Relationship Managementの略語である。
【0003】
One−to−Oneマーケティングとはデータベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析、顧客のニーズに合った提案を行うものである。その代表的な手法としてバリアブルプリントが挙げられる。ここ最近ではDTP(デスクトップパブリッシング)技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発されている。そのなかで、顧客毎に異なるサイズのコンテンツを最適にレイアウトすることが求められるようになった。
【0004】
従来、バリアブルプリントシステムは、ドキュメント上にコンテナ等によりテンプレートを作成し、データベースとテンプレートを関連付けることにより出力物を生成していた。なお、コンテナとはデータベースのコンテンツデータが挿入される領域を指す。
【0005】
しかし、テキストおよびイメージのコンテナのサイズが固定であったため、データベース内のコンテンツデータがコンテナに挿入されたときに、データ量がコンテナサイズより大きい場合、テキストのオーバーラップおよびイメージの欠けが発生する。
【0006】
また、逆にデータサイズがコンテナサイズより小さい場合、コンテナに多くの隙間が生じてしまい、いずれにしても見栄えの良いユーザが所望とする出力物を生成することができなかった。
【0007】
その問題を解決するために、自動レイアウトシステムが開示されている。自動レイアウトシステムは、テキストおよびイメージのコンテナのサイズに従って、コンテナのサイズを決定する技術である。
【0008】
しかしコンテナのサイズが大きくなった場合、同ドキュメント上の他のコンテナに重なってしまう問題が発生する。またフォントサイズを調節する場合はテキストの量が大きい場合、フォントサイズが小さくなりすぎる問題が発生しうる。
【0009】
これらの問題を解決するためのさらなる自動レイアウトの技術として、あるコンテナのサイズが大きくなった場合に、該コンテナと関連付けられた他のコンテナのサイズを小さくする技術が特許文献1に開示されている。
【0010】
また、従来のバリアブルプリントシステムにおいて、1レコードを1ドキュメントにレイアウトする技術だけでなく、複数のレコードを1ドキュメントにレイアウトするマルチレコードの技術も知られている。この技術により、顧客毎に異なる数のレコードをテンプレートに配置することが可能になり、各顧客に対してよりカスタマイズされたドキュメントを作成することができる。
【0011】
そして、上述のような「自動レイアウト技術」に対して、フローエリアと称される新たな領域をテンプレートに配置し、基本となる形状が定められたサブテンプレートを該フローエリア内部に配置する技術が、特許文献2に開示されている。また、特許文献2では、フローエリアに配置されるサブテンプレートのサイズをコンテンツデータに従って変更することも記載されている。
【0012】
また、複数種類のサブテンプレートをフローエリアに配置する技術が特許文献3に開示されている。
【特許文献1】特開2000−48216号公報
【特許文献2】特開2006−74226号公報
【特許文献3】特開2006−243805号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
しかしながら、上述した特許文献2のように、コンテナのサイズだけでなくサブテンプレートのサイズもコンテンツデータに依存して変更すると、様々なサイズのサブテンプレートがフローエリア内に配置されることになる。
【0014】
また、特許文献3のように、複数種類のサブテンプレートをフローエリアに配置することでも、様々なサイズのサブテンプレートがフローエリアに配置されることになる。
【0015】
つまり、上述したように様々なサイズのサブテンプレートをフローエリア内に順次並べて配置すると、高さが不揃いになるため、空白が生じるおそれがあった。
【0016】
ここで、上記課題を詳細に説明するために図19を用いる。図19に記載された1801〜1807はコンテンツデータが挿入されたサブテンプレートを指している。例えば、フローエリア内に配置すべきサブテンプレートが1801〜1807のように異なる場合、2行目に配置されるサブテンプレートは、1行目の垂直方向に最大サイズを有するサブテンプレート1802より下から配置される。
【0017】
一方、単に余白を詰めて配置すると2行目に配置されるサブテンプレートの開始位置が不揃いとなってしまい、見栄えが悪くなるおそれがあった。
【0018】
そのため、従来の自動レイアウト技術では、図18の1808、1809、1810のような隙間が生じてしまい、隙間の少ない出力物を得たいというユーザの意図を実現することができなくなるおそれがあった。
【課題を解決するための手段】
【0019】
上記課題を解決するために本願は、データベースからレイアウトすべきコンテンツデータを含むレコードを抽出するための抽出条件が設定された領域を有する1つのテンプレートと、コンテンツデータとを用いてレイアウト処理を実行する情報処理装置であって、前記コンテンツデータが入力される部分領域が配置されたサブテンプレートを生成するテンプレート作成手段と、前記抽出条件を満たすコンテンツデータを含む複数のレコードを前記データベースから取得する取得手段と、前記取得手段によって取得された複数のレコードの1つのレコードに含まれるコンテンツデータを前記サブテンプレートに含まれる部分領域に入力して当該サブテンプレート内のレイアウトを決定する処理を、前記複数のレコードについて実行するレイアウト手段と、前記レイアウト手段を複数のレコードについて実行することで得られた複数のサブテンプレートを前記領域内の第1の行または第1の列に配置する配置手段と、前記配置手段によって配置された複数のサブテンプレートのサイズの差を用いて、前記配置手段によって配置されなかったサブテンプレート用に第2の行または第2の列の開始位置を決定する決定手段とを有することを特徴とする。
【発明の効果】
【0020】
本発明は、ユーザが所望とする見栄えの良いレイアウト結果を出力することが可能となる。
【発明を実施するための最良の形態】
【0021】
本発明の実施例を適用するのに好適な実施例について説明を行う。
【0022】
本発明の実施例を説明する前に、本発明を適用可能なシステム構成、およびアプリケーション構成について説明する。
【0023】
[システム構成図]
【実施例1】
【0024】
図1Aはバリアブルデータドキュメントを印刷するシステム100を図示している。本命最初にて説明された技術は、図2で詳しく説明される汎用コンピュータ101(情報処理装置)により実践される。
【0025】
本願で説明される処理プロセスは、コンピュータ101内で実行され、システム100上で実施可能となるレイアウト編集アプリケーションプログラム121のようにソフトウェアの全体、あるいは一部分で実行される。特にレイアウト編集や印刷処理は、コンピュータ101のソフトウェアの指示によって実行される。ソフトウェアは例えば以下に記述されるような記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアはコンピュータの可読媒体からコンピュータにロードされ、コンピュータ101によって実行される。そのコンピュータでコンピュータプログラム製品を使用することにより、ドキュメントのレイアウト編集やバリアブルデータ印刷が実行される。
【0026】
コンピュータ101はキーボード132やマウス133のようなポインティングデバイスなどの入力装置、ディスプレイ装置144、ローカルプリンタ145を含む出力装置と接続されている。
【0027】
入力/出力インターフェイス138は、コンピュータモジュール101をネットワーク接続107から他のコンピュータ装置につなぐために利用される。そのネットワーク接続107の典型はローカルエリアネットワーク(LAN)、あるいはワイドエリアネットワーク(WAN)である。
【0028】
コンピュータ101は典型的に少なくとも1つのプロセッサーユニット135、例えば半導体のランダムアクセスメモリ(RAM)やリードオンリーメモリ(ROM)から構成されるメモリユニット136を備える。
【0029】
また、コンピュータ101は、ビデオインタフェイス137を含むINPUT/OUTPUT(I/O)インターフェイス、キーボード132やマウス133のためのI/Oインターフェイス143を含む。
【0030】
記憶装置139は典型的にハードディスクドライブ140やフロッピー(登録商標)ディスクドライブ141を含む。図には示されていないが磁気テープドライブなども使用される可能性がある。CD−ROMドライブ142は不揮発性のデータソースとして提供される。
【0031】
コンピュータ101はLINUXやマイクロソフトウィンドウズ(登録商標)のようなオペレーティングシステムや相互接続バス134を介して、コンポーネント135から143を利用する。
【0032】
図1に示すレイアウト編集アプリケーション121は、典型的にハードディスクドライブ140に常駐し、プロセッサ135により実行される。
【0033】
レイアウト編集アプリケーション121の媒介記憶装置とネットワーク1020からフェッチされるデータはハードディスクドライブ140に呼応して半導体メモリ136を使用する。いくつかの例では、レイアウト編集アプリケーション121がCD−ROMやフロッピー(登録商標)ディスク上でエンコードされ、対応するドライブ142や141を通じて読み込まれユーザに提供される。
【0034】
または、レイアウト編集アプリケーション121は、ネットワーク接続107からユーザによって読み込まれても良い。さらにレイアウト編集アプリケーション121は、磁気テープ、ROM、集積回路、光磁気ディスク、無線、赤外線通信、PCMCIAカードのようなコンピュータ可読カード、そしてEメール通信を通してコンピュータ101に導入されても良い。
【0035】
また、WEBサイト上の記録情報を持つインターネットやイントラネットを含む、他の適当な大きさのコンピュータ可読媒体からコンピュータモジュール101内にロードされても良い。
【0036】
図1のレイアウト編集アプリケーション121は2つのソフトウェアコンポーネントを含んでいる。
【0037】
1つ目のコンポーネントはレイアウトエンジン105である。レイアウトエンジン105は、ユーザにより設定された制限情報等を用いてテンプレート上のレイアウト処理を決定するための処理を実行する。
【0038】
2つ目のコンポーネントは、ユーザインターフェイス103である。ユーザインターフェイス103は、ユーザにドキュメントテンプレートを作成させる機能、ドキュメントテンプレートとデータソースとを関連付ける機能等を提供する。
【0039】
ユーザインターフェイス103とレイアウトエンジン105はコミュニケーションチャネル123を介して通信する。ドキュメントの生成に利用されるデータソースは、例えばデータベースサーバー117に記憶されたデータベース119である。
【0040】
ホストコンピュータ101はネットワーク接続107を用いて、データベースサーバー117からデータを取得する。
【0041】
レイアウト編集アプリケーション121は、ホストコンピュータ101か一般的に他のコンピュータで構成されるファイルサーバー115に保存されるドキュメントテンプレートを利用する。
【0042】
またレイアウト編集アプリケーション121は、データベースサーバーから取得されたデータとドキュメントテンプレートとをマージすることで、出力用の文書(ドキュメント)を生成する。
【0043】
これらのドキュメントはホストコンピュータ101のローカルファイルシステムに保存されるか、ファイルサーバー115に保存されるか、プリンタ113にて印刷される。
【0044】
プリントサーバー109は、ホストコンピュータ101に直接つながっていないプリンタにネットワーク機能を提供する。プリントサーバー109とプリンタ113は典型的な通信チャネル111を介して接続される。
【0045】
なお、レイアウトエンジン105は、ホストコンピュータだけでなく、他の情報処理装置であるエンジンサーバにて実行されても良い。
【0046】
図31は、本発明の一実施形態におけるバリアブルデータプリントの概略を説明する図である。レイアウト編集アプリケーション121は、ユーザからの操作指示に従いページ上に複数のコンテナ3101〜3103を配置し、各コンテナに位置やサイズに関する制約条件を付与することによりドキュメントテンプレート3100を生成する。
【0047】
また、レイアウト編集アプリケーション121は、ドキュメントテンプレート3100とデータソース3107との関連付け、更に各コンテナとデータソース3107内の各データフィールドとの関連付け(3104〜3105)を行う。各コンテナとデータソース190内の各データフィールドとの関連付けを示す関連付け情報は、ドキュメントテンプレート内に記述されメモリユニット136に格納される。また、データソース3107は、レコード単位で項目データが記載されているファイルである。
【0048】
レイアウトエンジン105は、ユーザからの印刷指示もしくはプレビュー指示に応じて、ドキュメントテンプレートの各コンテナ3101〜3103に、関連付け情報で関連付けられたデータをデータソース3107から読み込み、レコード単位で流し込む。例えば、レコード1のデータフィールドA〜Cをコンテナ3101〜3103へ流し込む。流し込まれたデータに応じて各コンテナのサイズ等を調整(レイアウト調整)する。
【0049】
ドキュメント生成のためのデータソース(3107)は、例えば、データベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバ117上の一般的なデータベース119であってもよい。この場合、ホストコンピュータ101はネットワーク107を介してデータベースサーバ117と通信し、データソースを取得できる。
【0050】
[アプリケーション構成図]
[メインウインドウ]
図3で参照されるように、ユーザインターフェイス103は、操作時にビデオディスプレイ144に表示されるアプリケーションウインドウ301を表示する。
【0051】
ウインドウ301は、メニューバー302とツールバー303、そしてマウス133の位置・動作によって場所を移動可能なワークエリア306とオプションのパレット311を備える。なお、カーソル/ポインタデバイス313は、マウス等の入力装置により移動する。
【0052】
メニューバー302は周知の技術であり、メニューオプションの階層の下に拡張される多くのメニューアイテム304を持つ。
【0053】
ツールバー303は、アプリケーションの特別なモードによって非表示にする、または表示することが可能な多くのツールボタン等のウィジット305を持つ。
【0054】
オプションのルーラー308はワークエリア内のポインター、ページ、ライン、マージンガイド、コンテナまたはオブジェクトの位置を示すために使われる。
【0055】
パレット311はバリアブルデータを読み込んで表示するライブラリのような追加機能にアクセスするために使われる。パレット311は移動、リサイズ、クローズをするためのウインドウコントロール312を持つ。
【0056】
ツールバーエリア303は少なくとも、次のユーザ選択可能な『ボタン』を持つ。
【0057】
選択ツールボタン:コンテナの辺を選択、移動、サイズ変更、リサイズそしてロック・ロック解除するために使われる。ユーザは、複数のコンテナの周りに選択ボックスをドラッグする、あるいは、CTRLキーを押しつづけた状態で複数のコンテナを指示することで、複数のコンテナを選択することが可能となる。
イメージコンテナツールボタン:イメージデータが入力されるコンテナ(部分領域)を作成するために使用される。
テキストコンテナツールボタン:テキストデータが入力されるコンテナ(部分領域)を作成するために使用される。
リンクツールボタン:コンテナ間の距離を設定するために使用される。
【0058】
[ドキュメントテンプレート]
ワークエリア306はドキュメントテンプレートのデザインを表示・編集するために使われる。これによりユーザは、ドキュメントの概観、マージされたドキュメントが、コンテンツデータ(バリアブルデータ)の量・サイズに基づいてどのように変化するかを理解できる。
【0059】
データベースがテンプレートと関連付けられていた場合、レイアウト編集アプリケーション121は、テンプレートのコンテナ内にコンテンツデータ(テキストデータ、イメージデータ)が入力された出力結果を表示する。これにより、ユーザは、現在のドキュメントの内容を確認することが可能となる。
【0060】
ドキュメントの構造、バリアブルデータコンテナの描写をする視覚的な手がかりは、カーソルをコンテナ上に移動させたときや、コンテナを選択したときにいつも表示される。
【0061】
ワークエリア306は、スクロールバー307とルーラー308とユーザにより作成されたテンプレート309を含む。テンプレート309はテンプレート中のページが複数あることを示すことができる。
【0062】
与えられたドキュメントテンプレートのページサイズは、周知の技術としてユーザによって指定される。それぞれのドキュメントでの実際のページ数は、バリアブルデータによって変化するかもしれない。もし1ページ内にフィットできなかった時、追加のページは自動的に作成される場合がある。
【0063】
それぞれのページ内の境界線は、ページ上の印刷可能なオブジェクトの最大幅を示す、任意のページマージン310である。
【0064】
また、図3には1ページのテンプレート309上に表示することが可能なオブジェクトの例を含んでいる。それらのオブジェクトの例は、複数のコンテナ407、408、固定されていない辺410、固定された辺411、413、414、そしてリンク412である。
【0065】
[コンテナ]
コンテナは、ドキュメントテンプレート内に配置され、コンテンツデータが入力される領域である。レイアウト編集アプリケーション121は、当該コンテナのサイズ、位置を、テンプレートに設定された制限情報、当該コンテナに入力されるコンテンツデータのサイズ等を用いて決定する。
【0066】
コンテナは、例えばポインティングデバイス313を用いて矩形を描くことで生成、移動、サイズ変更される。
【0067】
なお、ユーザは、コンテナに対して所望とする制限情報を設定することが可能となる。
コンテナは、固定あるいは可変のコンテンツデータが入力される。可変のコンテンツデータとは、同じ項目であってもレコード単位に異なるデータを指す。
【0068】
一方、固定のコンテンツデータは、複数レコードの同じ項目について同一のデータを指す。コンテナを使って生成される全てのドキュメントで、同じに表示される。
【0069】
コンテナは、コンテンツに適用される背景色、ボーダー、フォントスタイルのようなテキスト属性が設定される。
【0070】
なお、コンテナに入力されたコンテンツデータは、後述するレイアウト編集処理が実行された後、出力(印刷、表示等)される。
【0071】
コンテナに対して設定された制限情報は、表示される。しかし、基本的にそれらの制限情報は印刷されない。ユーザインターフェイス103は、背景色やフォントのようなコンテナの装飾機能のいくつかを表示する。
【0072】
[コンテナに対する制約]
レイアウト時に適用される制約条件が、コンテナに対して設定される。これらの制約条件の一例は、「このコンテナの高さは、最大値4インチ」、「コンテナの左エッジは固定」等である。
【0073】
以下に記述される内容は、GUIを使ってこのような制約条件を表示、編集するための方法である。
【0074】
イメージがページ上に定義された場所を持っているように、固定コンテンツの配置を指定するコンテンツプレイスホルダーは、デジタル印刷技術でよく知られている。
【0075】
コンテナは位置とサイズを持ち、それらは公知の技術で知られている手法で編集、表示される。
【0076】
ユーザは、コンテナに対して、テンプレート上におけるサイズ・位置を指定できる。
【0077】
[コンテナ表示・編集]
[新規コンテナの作成方法]
コンテナは、テキストコンテナとイメージコンテナの2種類を含む。テキストコンテナにはテキストデータが入力され、一方、イメージコンテナには、イメージデータが入力される。
【0078】
新規テキストコンテナとイメージコンテナは、ウィジット305のテキストまたはイメージのコンテナツールボタンが選択された後、マウス133を用いて矩形を生成することでテンプレート309上に生成される。
【0079】
また、コンテナは、同様にコンテナツールボタンをアクティブにした後に、ドキュメントテンプレート309上でクリックすることによって単純に作成されてもかまわない。この場合、デフォルトサイズのコンテナが作成されるか、新規コンテナの寸法を入れるためのダイアログボックスが提供される。
【0080】
[コンテナの表示方法]
コンテナの辺は、関連付けられたコンテンツがドキュメント内で表示される際の仮想の境界線を定義するものである。コンテナをユーザインターフェイスとして利用する際、例えばコンテナの左辺は、関連付けられたコンテンツがドキュメント内において表示可能である最も左の辺として扱われる。同様に、コンテナの高さは生成されたドキュメントで関連付けられたコンテンツを表示可能な高さの制限となる。本願では、ユーザは、ユーザインターフェイス103を用いて通コンテナの辺あるいは大きさを設定できることを前提としている。
【0081】
下記では、コンテンツのレイアウトを制限するために使われるいくつかのユーザインターフェイスとレイアウトの関係のルールを定義している。
【0082】
コンテナの左右の辺が実線である場合、コンテナの幅は固定である。コンテナの幅が固定なら、関連付けられたコンテンツに割り当てられる幅は、全てのレコードで同じになる。しかしコンテナの高さはレコード毎に変わる可能性がある。
【0083】
コンテナの上下の辺が実線である場合、コンテナの高さは固定である。コンテナの高さが固定なら、関連付けられたコンテンツに割り当てられる高さは、全てのレコードで同じになる。しかしコンテナの幅はレコード毎に変わる可能性がある。
【0084】
距離の制約が固定なら、指定された距離は全てのドキュメントで同じになる。
【0085】
コンテナの実線辺に他のコンテナを関連付けた場合、コンテナは他のコンテナによって押され、位置を変える場合がある。上下辺に対する制約は縦方向の位置変更を、左右辺に対する制約は横方向の位置変更をもたらす。
【0086】
「固定」の反対は、辺、位置、あるいはドキュメント制約がドキュメントごとに変化するかもしれないことを意味している『可変』である。可変を実現するためのユーザインターフェイスの一例を以下に示す。
【0087】
コンテナの左右の辺が点線なら、コンテナの幅は可変である。コンテナの幅が可変なら、関連付けられたコンテンツに割り当てられる幅は、レコードごとに変化する。
【0088】
コンテナの上下の辺が点線なら、コンテナの高さは可変である。コンテナの高さが可変なら、関連付けられたコンテンツに割り当てられる高さは、レコードごとに変化する。
【0089】
距離の制約が可変なら、指定された距離はレコードごとに変化する可能性がある。距離の制約に対する設定により、最大長・最小長の制限の枠内でコンテナの距離を調整するレイアウトを行なうことができる。
【0090】
コンテナの点線辺に他のコンテナを関連付けると、そのコンテナは関連付けられた他のコンテナによって押され、位置を変える場合がある。上下辺に対する制約は縦方向の位置変更を、左右辺に対する制約は横方向の位置変更をもたらす。
【0091】
コンテナに対して設定された制約条件(可変、固定、幅・高さの最小値・最大値)は、ビデオディスプレイ144に表示される。
【0092】
[リンクの設定方法]
図4はリンクの設定方法のUI例を示している。
【0093】
リンクを設定するためには、リンクによって結合するためのコンテナ(最低2つ)を作成する。
【0094】
図4は、2つのコンテナを作成してリンクを設定する場合の例を示している。次に、前述したリンクツールを選択する。図4は、コンテナを作成し、リンクツールが選択されていた状態から、リンクを設定する動作を示している。図4のA−Cを順に説明していく。
【0095】
図4(A)の0601と0602は、コンテナである。0603はマウスポインタを意味している。まず、リンクを設定する片方のコンテナをクリックして選択する。次に図6(B)で示されるように、もう片方のコンテナまでマウスポインタを移動して、クリックする。図6(B)の0604は図4(A)でクリックをした位置と移動したマウスポインタを結んだ線を示しており、どの位置にリンクが設定されるのかをユーザに示すUIである。
【0096】
図4(B)で2度目のクリックが終わった後、設定した場所に0605で示されるリンクUIが表示され、コンテナは図4(C)の状態になる。
【0097】
0606は、点線で示されている辺であり、可変の辺を示している。図4(C)のテンプレートでは、コンテンツデータの挿入に従って左のコンテナ0601の右辺は移動する。また右のコンテナ0602の左辺はコンテンツデータの挿入に従って移動する。コンテナ間をリンクで接続することにより、左右のコンテナはその間の距離を保ったまま、相互にサイズを可変に調整する。
【0098】
[レイアウト計算方法(全体フロー)]
図5はレイアウト計算のフローチャートを示している。
【0099】
まず、レイアウト編集アプリケーション121は、プレビューモードを選択する(S0701)。
【0100】
レイアウト編集アプリケーション121は、テンプレート上に複数のコンテナを作成し、その複数のコンテナ間をリンクによって関連付ける等の処理を実行するテンプレート作成モードを有している。
【0101】
また、レイアウト編集アプリケーション121は、テンプレートのコンテナに対してデータベースのレコードに含まれるコンテンツデータを挿入して、コンテンツデータがコンテナに挿入された後のレイアウト結果をプレビューするプレビューモードを有している。このプレビューモードにおいて、レイアウト編集アプリケーション121は、実際のレコードに基づいてレイアウト処理を実行する。プレビューモードは、表示上でのレイアウト計算であるが、印刷する場合においても同じ処理が実行される。
【0102】
S0701においてプレビューモードが設定された場合、レイアウト編集アプリケーション121は、プレビューするレコードに含まれるコンテンツデータを各コンテナに挿入し(S0702)、レイアウト計算(レイアウト処理ともいう)を実行する(S0703)。そして、レイアウト編集アプリケーション121は、S0703により得られたレイアウト結果を表示する(0704)。
【0103】
ここで、他のレコードについてプレビューすることが選択された場合(S0705−Yes)、レイアウト編集アプリケーション121は、ユーザの入力によって選択された他のレコードを選択し(S0706)、レイアウト計算を実行する。プレビューモードでなく印刷時においては、印刷するレコードについてレイアウトの計算を行う。したがって、S0705、0707は存在しない。全てのレコードについて印刷が終了した時点で終了する。
【0104】
[レイアウト計算方法]
図6は図5のS0703のレイアウト計算の詳細を示したフロー図である。また、図8はレイアウト計算のUI表示例を示した図である。
【0105】
レイアウト編集アプリケーションは、テンプレート内に配置されたコンテナの集合を特定する(S0710)。なお、コンテナの集合とは、リンクによって結合された複数のコンテナである。レイアウト計算は、リンクによって関連付けられたコンテナの集合に対して実行される。
【0106】
続いて、レイアウト編集アプリケーション121は、S0710で特定されたコンテナの集合から、レイアウトを計算するために1つの集合を選択し(S0711)、選択したコンテナの集合について、レイアウトの計算を行う。
【0107】
レイアウト編集アプリケーション121は、レイアウトされるコンテナ(コンテンツデータ)のサイズが、実際のコンテンツデータのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う(S0712)。レイアウトの最適化の一例は、リンクにより関連付けられた各コンテナにおいて、各コンテナに挿入されるコンテンツのサイズとレイアウトされた結果のサイズとの差が等しくなるように実行される。つまり、図7のコンテナ808に挿入されるコンテンツデータのサイズと計算後の当該コンテンツデータのサイズとの差が、コンテナ809に挿入されるコンテンツデータのサイズと計算後の当該コンテンツデータのサイズとの差と等しくなるように計算される。
【0108】
レイアウトの最適化を行い、ルールに違反していた場合、レイアウト編集アプリケーション121は、再度ルールを違反しないように計算をする(0713)。ここで記述したルールとは、レイアウト作成時にユーザによって設定される制約条件のことであり、コンテナのサイズと位置、辺の状態、リンクの長さなどである。ルールを違反しないようにレイアウトが計算されたら、その集合のレイアウトは完成される。そして、S0711〜0713のステップをページ上のすべての集合について施し、ページ全体のレイアウトを計算する(0714)。
【0109】
図7の(A)から(C)はレイアウト計算時のUI例である。
【0110】
図7の(A)は、あるレコードのコンテンツデータが挿入されレイアウトが決定されている状態を表している。0801と0802は固定された辺、0803は可変の辺、0804と0805は可変の辺の変化方向を示している矢印、0806はリンクをそれぞれ示している。0808と0809はコンテナを指す。この状態において、レイアウト編集アプリケーション121は、レコードを変更し、異なったサイズのコンテンツデータを各コンテナに挿入する。
【0111】
図7(B)は、図7(A)の状態に新しいコンテンツデータのサイズを重ねて示している。0807はそれぞれのコンテナに挿入されるコンテンツデータのサイズを表している。そして、レイアウト計算が行われる。図7(C)はレイアウト計算された結果を示している。計算後の各コンテナサイズは、左コンテナに挿入すべきコンテンツデータのサイズとレイアウト計算後のコンテナのサイズとの差が、右コンテナに挿入すべきコンテンツデータのサイズとレイアウト計算後のコンテナのサイズとの差と等しくなるように計算される。この差異は、上述したように制約条件を満たす必要がある。
【0112】
図7(C)で示されるように、図7(B)で示した挿入されるコンテンツサイズ(0807)と計算後のコンテンツサイズ(0810)は、双方において同等な差異がある。
【0113】
[マルチレコード]
マルチレコードについて、概要を説明する。
【0114】
図8は、マルチレコードとそのレイアウト方法の概要を示した図である。
【0115】
0901はドキュメント、0902はページ、0903はサブテンプレート、0904はデータベースを示している。0904で示すデータベースを見てみると、No1〜7のデータが表示されている。なお、データベース0904において横方向に並べられたデータがコンテンツデータであり、複数のコンテンツデータの集合が1つのレコードとなる。つまり、レコード1は、「Tom」、「10000」、「xxxCamera」等のコンテンツデータを含む。ここで、1レコードについて1つのドキュメントを作成するバリアブルプリントを実行する場合、図9では7つレコードがデータベースに保持されているので、7つのドキュメントが作成される。
【0116】
しかし、複数のレコードから1つのドキュメントを作成するマルチレコード機能を実行するバリアブルプリントでは、次のような処理を行う。まずマルチレコードを指定するカラムをユーザが任意に指定する、この例ではフィールド名:Nameが指定されたものとする。すると、そのフィールド名が同じレコードは、1ドキュメントにレイアウトされるレコードであると認識する。この例では、No1〜4のレコードはNameがTomであるため、レコード1〜4が1ページ目に配置され、一方、レコード5〜7は、2ページ目に配置される。
【0117】
[フローエリアの設定フロー]
図9は、発明の実施形態のバリアブルプリントシステムにおいて、マルチレコード機能を実行するための示すフローチャートである。
【0118】
レイアウト編集アプリケーション121は、ユーザの操作に基づいて、エリア作成モードを選択する(ステップS1001)。S1001の処理は、レイアウト編集アプリケーション121が、例えば、図10において、アプリケーションウインドウ1101上のエリア作成ツールボタン1103の選択を認識することによって実現する。
【0119】
次に、レイアウト編集アプリケーション121は、ページエリア1107においてマウス133のドラッグ操作に基づいて矩形領域1106を描画し、表示する(ステップS1002)。
【0120】
この描画された矩形領域1106は、フローエリアとして認識される(ステップS1003)。図11では、フローエリアは1つであるが、複数のフローエリアを設定しても構わない。また、図11における1104、1106は、上述したコンテナを指す。尚、フローエリアは、それらのコンテナとは色や線種等の矩形UIを異ならせることにより、ユーザに視覚的に認識しやすいようにする。つまり、フローエリアは、コンテナとは識別可能に表示される。
【0121】
次に、レイアウト編集アプリケーション121は、作成したフローエリアにマルチレコードフィールドを関連付ける(ステップS1004)。
【0122】
続いて、レイアウト編集アプリケーション121は、作成したフローエリアに対するフローエリアプロパティの設定の有無を判定する(ステップS1005)。設定操作がない場合(ステップS1005でNO)、ステップS1008に進む。一方、設定が指示された場合(ステップS1005でYES)、ステップS1006に進む。
【0123】
尚、設定操作は、例えば、設定操作対象のフローエリアをマウスポインタでクリックする等により実現する。
【0124】
設定操作が指示された場合、レイアウト編集アプリケーション121は、フローエリア設定ダイアログ(図11)を表示し(ステップS1006)、フローエリア設定ダイアログへの設定内容に基づいて各種設定をフローエリアに反映する(ステップS1007)。
【0125】
レイアウト編集アプリケーション121は、ドキュメントのプレビュー操作の有無を判定する(ステップS1008)。プレビュー操作がない場合(ステップS1008でNO)、処理を終了する。一方、プレビュー操作がある場合(ステップS1008でYES)、ステップS1009に進む。
【0126】
次に、レイアウト編集アプリケーション121は、データベースからコンテンツデータを取得し、各コンテナ(例えば1104、1105)に取得したコンテンツを挿入し、レイアウト計算を実行して、コンテナの位置とサイズを確定する(ステップS1009)。
【0127】
次に、レイアウト編集アプリケーション121は、設定されているフローエリアについてレイアウト計算を実行する(ステップS1010)。レイアウト編集アプリケーション121は、図14等で後述する抽出条件と複数種類のサブテンプレートとをフローエリアに設定する。そして、抽出条件を満たすコンテンツデータを含むレコードをデータベースから取得し、当該コンテンツデータと、各サブテンプレートの使用条件とを用いてレコード毎に使用すべきサブテンプレートを特定する。レイアウト編集アプリケーション121は、取得された1レコード目のコンテンツデータと、1レコード目用に特定されたサブテンプレートとを用いて図13にて後述するレイアウト処理を実行する。S1010では、以上の処理を、取得された複数のレコードについて繰返し実行する。
【0128】
そして、レイアウト編集アプリケーション121は、レイアウト計算されたレイアウト結果を出力(プレビュー、印刷等)する(ステップS1011)。
【0129】
[プロパティ設定フロー]
図11はフローエリアの各種設定(プロパティ設定)を行う設定ダイアログの例を示している。
【0130】
図11の設定画面が、前述の図10のフローチャート中のS1006で表示され、その内容がS1007にてフローエリアに対して反映される。
【0131】
なお、文中のサブテンプレートおよび条件式については後述する。
【0132】
ユーザがラジオボタン1202を選択することにより、レイアウト編集アプリケーション121は、フローエリアに対して設定すべき内容がサブテンプレートであるのか、条件式であるのかを選択する。
【0133】
ここで、サブテンプレートの設定が選択された場合、レイアウト編集アプリケーションは、リストボックス1203から選択されたサブテンプレートをフローエリアに対して設定する。一方、条件式の設定が選択された場合、レイアウト編集アプリケーション121は、リストボックス1204から選択された条件をフローエリアに対して設定する。なお、フローエリアに対して設定される条件式は、当該フローエリアに配置されるレコードをデータベースから抽出するための条件であるため、抽出条件と呼ばれることもある。
【0134】
サブテンプレートおよび条件式は、編集中のドキュメントテンプレート内に、それぞれの特有なUI手段によって設定できるものとする。しかし他の手法としては別のファイルに保存され、この設定ダイアログからはファイルを指定することによって選択指定できるものとしてもかまわない。本実施例では、複数のサブテンプレートおよび条件式を作成できるが、リストボックスから選択するという特性上からも、すべてが一意な名前を持ち識別できるように保持される。
【0135】
その他に、本設定ダイアログからは、サブテンプレートを配置する際の配置方向1205をリストボックス1206から選択し、サブテンプレートの間隔を縦1207、横1208で設定する。1206のドロップダウンリストから選択できるフローの方向として、左から右、左上から右向き、右上から左向き等が上げられる。なお、方向の種類としてはここに挙げたものに限定されるわけではなく、他の種類を随時備えてもかまわない。
【0136】
以上の設定を確定するには、1210で示すOKボタンを押下する。また、1211のキャンセルボタンを押下すると指定された各種設定はすべてキャンセルされる。
【0137】
[サブテンプレート]
前述したサブテンプレートについて、概要とレイアウトフローを説明する。図13、14はそれぞれサブテンプレートのレイアウト例とレイアウトフローを示している。
【0138】
サブテンプレートは、任意数のイメージコンテナ、テキストコンテナが配置され、そのコンテナにレコードのどのコンテンツデータ(どの項目)を割り当てるかを設定できる。
【0139】
サブテンプレートは、同じレイアウトを一つのドキュメントで数多く使う場合に便利である。サブテンプレート内に配置されるコンテナは、前記イメージコンテナ、テキストコンテナと同様であり、各コンテナ間にはリンクを設定することも可能である。したがって、レイアウトするデータによって、レイアウトサイズを最適に変化させることが可能である。図13はサブテンプレートのレイアウト例を示している。1302と1305はイメージコンテナ、1303と1306はテキストコンテナ、1307はリンクを示している。イメージ、テキストのコンテンツサイズが異なるため、異なるレコードに対してそれぞれ最適なレイアウトを計算してレイアウトが変更された様子を示している。
【0140】
ここで、サブテンプレートにおけるレイアウト処理について、図13を用いて説明する。サブテンプレートこのレイアウト処理のフローは図13に示す通りである。
【0141】
レイアウト編集アプリケーションは、データベースからレイアウトするためのレコードを取得し(S1401)、サブテンプレート内の各コンテナに挿入するコンテンツデータのサイズを取得する(S1402)。詳細には、上述したようにレイアウト編集アプリケーション121を構成するモジュールの1つであるユーザインタフェースがデータベースとの関連付け処理を行う。その結果、レイアウト編集アプリケーション121は、データベースのコンテンツデータを参照することが可能となり、その際に該データを解釈することによりサイズ等を取得できる。なお、ステップS1401とS1402は同時でも良い。
【0142】
S1402の処理は、レイアウト編集アプリケーション121が、S1401により取得したデータの情報を解析することによりコンテンツデータのサイズを取得することが可能となる。なお、取得されたコンテンツデータのサイズはメモリユニット136に保持されることとなる。
【0143】
レイアウト編集アプリケーション121は、S1402により取得したデータサイズに基づいて、各コンテナについてレイアウト計算を行い(S1403)、テンプレートのレイアウトを最適化する(S1404)。最適化の方法は前述した通り図7Aの処理を用いて実行される。
【0144】
レイアウト編集アプリケーション121は、S1404により最適化されたテンプレートのレイアウトを決定し(S1405)、コンテンツデータを各コンテナに挿入して(S1406)、表示する(S1407)。なお、S1405により決定されたレイアウトは一時的にメモリユニットに保持されることとなる。また、S1407の表示はドキュメントが完成したときにまとめて行うのであれば、ステップS1407は不要である。また、サブテンプレートのサイズはコンテンツデータのサイズに基づいて変更される。
【0145】
[条件式]
(サブテンプレート条件式)
サブテンプレート条件式は、ひとつのフローエリアに対して複数種類のサブテンプレートを選択的に割り当てることができる。この条件式(抽出条件)によって抽出されたレコードに含まれるコンテンツデータは、フローエリアに設定されたサブテンプレート内のコンテナに挿入される。
【0146】
また、条件式には条件適合時に適用されるサブテンプレートの識別情報を含む。図14は条件式を設定するUI例であり、フローエリアに設定された条件式に適合するレコードが、該条件式と関連付けられているサブテンプレートのコンテナに挿入される。そして、レコードのコンテンツデータが挿入されたサブテンプレートがフローエリアに配置される。
【0147】
入力領域は、条件式に名前を付けるテキストボックス1502と、もっとも基本的な条件判定を構成する要素であるIF文1503とELSE文1504のペアを最低限有している。IF文の入力領域においては、条件の判定対象となるフィールドの選択を行うリストボックス1505と、判定の論理式を設定するリストボックス1506を有している。さらに、入力領域は、判定に用いられる値を入力するテキストボックス1507、条件判定が正だったときに使用されるサブテンプレートを決定するTHEN_USE処理文1508を有する。さらに、入力領域は、同じく条件判定結果が不正だったときに該レコードを挿入するためのサブテンプレートを決定するELSE_USE処理文1504からなっている。判定の論理式1506には、「EQUAL(等しい)」、「NOT_EQUAL(等しくない)」等が用意されている。その他の論理式は、「LESS_THAN(小さい)」、「LARGER_THAN(大きい)」、「START_WITH(で始まる)」、「END_WITH(で終わる)」等が挙げられる。
【0148】
さらに、複雑な条件式を設定するためには、IF文中に複合条件を設定するためにAND/OR接続文コンボボックス1509を有する。このコンボボックスでANDまたはORの複合条件を選択すると、IF文中に条件行が1行追加される。ANDの場合、複数の条件がすべて正であるときのみ、ORの場合いずれかの条件が正であるときにIF文判定が真であると判定される。また、さらに複雑な条件分岐を設定するためには、ELSE_IF文追加ボタン1510を有する。ボタン1510を押下すると、前述IF文とELSE文の間に、あらたにELSE_IF文が追加挿入される。ELSE_IF文の内容と動作は、IF文における内容と同じである。IF文が不正のときにひとつ下のELSE_IF文を判定し、さらに不正のときにもうひとつ下のELSE_IF文を判定し、これを続けて最後にELSE文を判定する、という順に処理を行う。1511は選択されているELSE_IF文を削除する削除ボタンである。ELSE_IF文が多くなった場合、スクロールバー1512を使って条件のリストを表示することが可能である。いずれかのIF文あるいはELSE_IF文で真と判定された場合、そのUSE処理文が実行される。USE処理文にはサブテンプレート名が入力(選択)される。このように、条件式を通して、さまざまな値を取るレコードのそれぞれに、条件に合ったサブテンプレートを自動的に選択することができ、ひとつの条件式においてさまざまなレイアウトを実現することが可能になる。この条件式をフローエリアに関連付けることによって、ひとつのフローエリアにおいて、さまざまなレイアウトを持った複数種類のサブテンプレートをフローエリア内に配置することが可能になる。
【0149】
ユーザは条件を入力すると、最後にOKボタン1514を押す。OKボタン1514の押下により、UIで設定されたサブテンプレート条件を示す情報が、サブテンプレート情報2403の一部としてメモリユニット136に保存される。このサブテンプレート条件式は、たとえば、図14のUIに記述された(選択された)テキストをそのまま保存したテキストファイルなど、条件と条件が満たされた場合のサブテンプレートを特定できる情報であれば良い。図14の例では、「IF field01 EQUAL value01 AND field02 EQUAL vlue02 THEN USE subtemplate01 ELSEE IF field01 EQUAL value03 AND field02 EQUAL vlue04 THEN USE subtemplate02 ELSE USE subtemplate03」をサブテンプレート条件式の示す情報として保存する。このまま保存しても、簡単な文法で記述されており、しかも図14のようなUIから入力されるので文法的な誤りなどが発生する余地がない。そのために、簡単なプログラムでその条件の記述をパースして適合するサブテンプレートを決定することができる。
【0150】
このように条件式にはデータベースからレイアウトするためのコンテンツデータを抽出するための条件と、該条件に該当した場合に使用するサブテンプレートを関連付けて保持している。よって、抽出されたコンテンツデータは、どのサブテンプレートに配置すべきかが関連付け情報としてメモリユニット136に保持される。また、上述したように複数の条件式を設定することが可能である。そのため、複数種類のサブテンプレートがフローエリアに配置されることとなる。
【0151】
[サブテンプレートのフロー]
ここで、サブテンプレートがフローエリアに配置される様子について述べる。
【0152】
図16では、複数のコンテナ1601がリンク1602により関連付けられたサブテンプレート1604をフローエリアに配置する様子について説明する。
【0153】
当該サブテンプレートが設定されたフローエリアの抽出条件により、2つのレコードが抽出され両者をサブテンプレート1604に割り当てる。
【0154】
その結果、抽出されたレコードに含まれるコンテンツデータのサイズが異なるため、図13のレイアウト処理を実行した結果、サイズの小さいコンテンツデータを含むレコードが割り当てられたサブテンプレートは、1605となる。一方、サイズの大きいコンテンツデータを含むレコードが割り当てられたサブテンプレートは、1606となる。
【0155】
ここで、サイズの小さいコンテンツデータを含むレコードとサイズの大きいコンテンツデータを含むレコードとが交互に保存されたデータベースを用意し、図11で設定されるフローエリアのフロー方向に従って当該フローエリア内にサブテンプレートを配置する。その結果、図16のようなレイアウト結果が出力される。
【0156】
図16は、フローエリア1701には、図11の「左上から右向き」というフロー方向が適用されている。図17は、図11の「左上から下向き」というフロー方向が適用されている。それぞれ図中の矢印は、サブテンプレートの配置方向を認識しやすくするために付加されたもので、実際のレイアウト上にこのような矢印が表示されるというわけではない。
【0157】
ここで、簡便のため図18のように、各コンテナにコンテンツデータがレイアウトされたサブテンプレートを、単純な矩形1711で代用して表現する。つまり、矩形1711はサブテンプレートのサイズを示す。
【0158】
ここで図19は、複数のサブテンプレートをフローエリア内に配置した結果を示している。図中の8つの矩形1801から1807は、図18で用いた矩形1711と同じであり、簡略的に示されたレイアウト済みのサブテンプレートである。図18の楕円形の塗りつぶし領域1808から1810は、その領域にはサブテンプレートが配置されず、余白となっていることを表している。ここでも、矢印はサブテンプレートのフローの方向を模式的に表すために付加されている。
【0159】
この図に示されるように、サブテンプレートは、割り当てられるレコードのコンテンツデータにしたがって、様々なサイズにて出力されるため、フローエリアのレイアウト上には余白が生じることがある。
【0160】
また、図14に示した条件式を用いて、複数種類のサブテンプレートをフローエリア内に配置する場合、図19のようにフローエリア内に余白が生じることは容易に予測できる。
【0161】
そこで、本願発明では、図20に示すような、可能な限り隙間の少ないレイアウト結果を出力することを目的としている。なお、図21は、従来技術により生じる課題を説明するための図であり、1行目としてサブテンプレート2101と2102とをフローエリア内に配置した結果、2行目の1番目のサブテンプレート2103は、サブテンプレート2102よりも下に配置される。そのため、フローエリア2104には1901のような空白が生じることを示している。
【0162】
図22は本発明の全体フローを示している。図22がメインフロー、図23から24がサブフローである。
【0163】
なお、図22では、サブテンプレートを行単位(水平方向単位)にフローエリアの領域内に配置することを前提としているが、設定されたフロー方向によっては、本フローチャートの処理を列単位(垂直方向単位)に置き換えれば良い。
【0164】
また、本願ではフロー開始位置を決定するための行または列を第2の行または第2の列と記載する場合がある。一方、フロー開始位置を決定するための行または列の前行または前列を第1の行または第1の列と記載する場合がある。
【0165】
まず、レイアウト編集アプリケーション121は、フローエリア内に既に配置済みの前行(第1の行)があるかを確認する(S2002)。そしてS2002において、配置済みの前行(第1の行)があると判定された場合、レイアウト編集アプリケーション121は、新たな行(第2の行)の開始点を決定するために基準のサブテンプレートを探す(S2003)。一方、既に配置済みの行がなければ、レイアウト編集アプリケーション121は、フローの開始位置を、フローエリアの先頭ポイントに設定する(S2011)。
【0166】
S2003の処理の結果、基準となるサブテンプレートが見つかった場合、レイアウト編集アプリケーション121は、現在対象としている新たな行(第2の行)のフローの開始位置をS2003にて検索された基準となるサブテンプレートに基づいて決定する。なお、フローエリアの設定において行間隔(図12の1207にて設定可能)が設定されている場合、レイアウト編集アプリケーション121は、この時点で設定されている間隔を空けてフロー開始位置をさらに下にずらす(S2005)。
【0167】
その後、レイアウト編集アプリケーション121は、決定されたフロー開始位置を基準として、その開始位置よりも下方向に既に配置済みの前行から飛び出すサブテンプレートがないか否かを判定し、その飛び出しの位置とサイズを記憶する(S2006)。また、レイアウト編集アプリケーション121は、既に配置済みの前行において最大の高さを持ったサブテンプレートの領域を記憶する(S2007)。
【0168】
レイアウト編集アプリケーション121は、新たな行に配置されるサブテンプレートと、既に配置された行から新たな行に飛び出しているサブテンプレートとが重複するか否かをチェックする(S2022)。S2022の処理は後述する図24の処理により算出された飛び出し領域情報を用いることで、レイアウト編集アプリケーション121は、S2022の判定処理を実現できる。
【0169】
S2022において重複すると判定された場合、レイアウト編集アプリケーション121は、S2022において対象としているサブテンプレートを重複しない領域に移動する(S2023)。つまり、レイアウト編集アプリケーション121は、後述する図24の処理により算出された飛び出し領域情報を用いることで、当該飛び出し領域を超えた配置可能な位置に対象としているサブテンプレートを移動する。一方、S2022においてNoと判定された場合は、後述するS2033の処理に移る。
【0170】
ここで、レイアウト編集アプリケーション121は、S2023において移動した位置でサブテンプレートを配置した場合、行の終端をはみ出すか否かを判定する(S2024)。S2024において、レイアウト編集アプリケーション121は、はみ出すと判定した場合、さらに対象としているサブテンプレートは行内で先頭にあたるサブテンプレートかどうかを判定する(S2025)。一方、S2024にてNoと判定された場合、後述するS2033の処理に移る。
【0171】
S2025において先頭のサブテンプレートであると判定された場合、レイアウト編集アプリケーション121は、新たな行におけるサブテンプレートのフロー開始位置を既に配置された行の最大の高さを持つサブテンプレートより下に設定する(S2026)。この際、S2007で記憶した値が用いられる。
【0172】
その後、S2026にて設定されたフロー開始位置から該当のサブテンプレートを配置した場合、レイアウト編集アプリケーション121は、当該サブテンプレートが、フローエリアをあふれるかどうかを判定する(S2031)。ここで溢れると判定された場合、レイアウト編集アプリケーション121は、改ページ処理を実行して新しいフローエリアを含むページを生成する(S2032)。
【0173】
S2031において溢れないと判定された場合、S2026にて設定された開始位置を用いて、同一行内に配置すべき他のサブテンプレートをフローエリア内に配置する(S2033)。
【0174】
その後、レイアウト編集アプリケーション121は、次のサブテンプレートの配置位置を、フロー方向の設定にしたがって、配置を行ったサブテンプレートの次の位置に移動する(S2034)。具体的には、今回は左上から右方向へ行内での配置を実行しているため、レイアウト編集アプリケーション121は、配置を行ったサブテンプレートの右隣に次のサブテンプレートが配置されるように配置位置を決定する。
【0175】
そして、レイアウト編集アプリケーション121は、新たな行のサブテンプレート情報に、配置済みのサブテンプレートの位置やサイズの情報を追加して記憶する(S2035)。ここで格納された情報はフローチャートの図23、24にて利用される。
【0176】
S2025でNoと判定された場合、同一行内に配置すべき全てのレコードについてS2022からS2035の処理を実行したか否かを判定する(S2036)。
【0177】
そして、S2032の処理を行った場合、または、同一行内に配置すべき全てのレコードについてS2022からS2035の処理を実行した場合、フローエリア内の全ての行について図22の処理を実行したかを判定する(S2037)。
【0178】
次に、図22のS2003で行っているフローの開始点を調整する基準のサブテンプレートを探す処理について、図23を用いて説明する。
【0179】
レイアウト編集アプリケーション121は、新たに配置する行より一つ前の行に配置されたサブテンプレートの高さの平均値を算出する(S2050)。
【0180】
続いて、レイアウト編集アプリケーション121は、前行に配置された各サブテンプレートの高さを計算し、前行に配置されたサブテンプレートの中で最も高いサブテンプレートか否かを判定する(S2052)。
【0181】
S2052において、最も高いサブテンプレートではないと判定された場合、レイアウト編集アプリケーション121は、S2050にて算出した平均値と現在対象としているサブテンプレートの高さとの差を計算する。そして、レイアウト編集アプリケーション121は、この計算結果を当該サブテンプレート用の値としてメモリ上の配列Dに保存する(S2053)。
【0182】
S2053の処理の後、レイアウト編集アプリケーション121は、前行の全てのサブテンプレートについてS2052、S2053の処理を実行したかを判定する(S2054)。
【0183】
S2054において、前行の全てのサブテンプレートに対してS2052、2053の処理を実行した場合、メモリの配列Dを用いて、各サブテンプレートの差分値を昇順にソートする(S2055)。
【0184】
続いて、レイアウト編集アプリケーション121は、現在対象としているサブテンプレートの高さと前行において一番高いサブテンプレートの高さとの比が基準値以上であるか否かを判定する(S2056)。つまり、レイアウト編集アプリケーション121は、一番高いサブテンプレートの高さと現在判定対象となっているサブテンプレートの高さとの差が所定値以上あるか否かを判定する。
【0185】
サブテンプレートの高さと前行の一番高いサブテンプレートの高さとの比が基準値以上である場合、レイアウト編集アプリケーション121は、現在判定対象であるサブテンプレートの高さを記憶すると共に基準のサブテンプレートとして特定する(S2057)。
【0186】
一方、S2056において、サブテンプレートの高さと前行の一番高いサブテンプレートの高さとの比が基準値以上でない場合、レイアウト編集アプリケーション121は、前行の全サブテンプレートについてS2056の処理を実行したか判定する(S2058)。
【0187】
ここで、全てについて判定処理を実行した場合、レイアウト編集アプリケーション121は、フロー開始点を調整する基準のサブテンプレートが見つからなかったということを記憶する(S2058)。
【0188】
以上、本処理によってこれから処理を開始する行の開始位置を決めるために使用されるサブテンプレートを特定することが可能となる。
【0189】
また、本願では平均値を用いて図23の処理を実行しているが、平均値に限る必要はない。例えば、前行において最大の高さを有するサブテンプレートの中点を図23の平均値として図23の処理を実行しても良い。
【0190】
次に、前述のS2006で行っている、現在対象としている新たな行の開始位置から飛び出したサブテンプレートの位置を計算する処理について、図24を参照しながら説明する。
【0191】
レイアウト編集アプリケーション121は、前行に配置されたサブテンプレートの1つについて、図22のS2005にて決定されたフロー開始位置を越える(跨ぐ)か否かを判定する(S2071)。
【0192】
S2071にて飛び出すと判定された場合、レイアウト編集アプリケーション121は、当該飛び出すサブテンプレートの飛び出し領域を保存する(S2072)。つまり、S2072の処理を実行することで、レイアウト編集アプリケーション121は、前行から飛び出したサブテンプレートを禁止領域として配置処理を実行することが可能となる。
【0193】
さらにレイアウト編集アプリケーション121は、飛び出し部分の領域情報をひとつのサブテンプレートとして登録する(S2073)。つまり、飛び出し部分の領域情報は、次行のサブテンプレート情報と同様に扱われ、次の行を配置する場合のサブテンプレート情報としてフローチャート図22、23で利用される。
【0194】
以上の図22の処理を図19に適用した場合、2行目(2705から2708)のフロー開始位置は、図27の2203のように図19と比較して上方向に移動される。さらに、レイアウト編集アプリケーション121は、フロー開始位置2203を飛び出したサブテンプレート2702との重なりを避けて2行目のサブテンプレート2706を配置することも可能となる。一方、3行目の開始位置も同様の処理により決定することが可能となる。なお、現在対象としている行についてサブテンプレートが配置された場合、次行用に前行に配置したサブテンプレートのサイズと現在対象としている行に配置されたサブテンプレートのサイズとの和を用いて、次行用に図22−24の処理を実行する。図27を用いて具体的に説明する。レイアウト編集アプリケーション201は、3行目の開始位置を決定するために、サブテンプレート2701と2705との和、2702のサイズ、2703と2707との和、2703と2708との和を用いて図22−24の処理を実行する。ここで、2行目の最大サイズであるサブテンプレート2701と2705との和とサブテンプレート2707との差が所定値以上であるため、図22―24の結果、3行目の開始位置は2204となる。
【0195】
なお、このようなフロー方法を有効・無効にするためには、図25、26のような設定入力領域が考えられる。
【0196】
図25は本フロー方法を「スマートフロー」と呼称し、当該チェックボックスがチェックされている場合、レイアウト編集アプリケーション121は、図22から24の処理を実行し、一方チェックされていなければ、図22から24の処理の実行を実行しない。
【0197】
図26はさらに、フローチャート図23で使用される基準値を設定できるようにしたものである。
【0198】
本実施例の処理を用いることにより、可能な限り空白が生じないレイアウト結果を出力することが可能となる。
【0199】
なお、図22〜24では、行の開始位置を決定するための処理について説明してきたが、上述したように列の開始位置についても同様の処理で決定することができる。その際、図22〜24において考慮していた「高さ」は「幅」に置き換える必要がある。また、垂直方向に関する処理は、水平処理に変更する必要がある。
【実施例2】
【0200】
本発明の実施例2は、より多様なサブテンプレートの配置状況に対応するための処理に関する。
【0201】
図28は、図23のフローチャートを改良したものである。変更点は、ステップ2301の判断処理である。S2301において、レイアウト編集アプリケーション121は、現在判定対象となっているサブテンプレートの幅が、ユーザにより設定された幅の基準値を超えるかどうかを判定する。具体的に、レイアウト編集アプリケーション121は、判定対象となっているサブテンプレートの幅が、当該サブテンプレートを配置するためのフローエリアの幅を占める割合を計算することにより、S2301の判定処理を実行する。
【0202】
S2031において、越えると判定された場合、レイアウト編集アプリケーション121は、当該サブテンプレートの高さを、次行のフロー基準位置として保存する(S2057)。
その他の処理は、図23と同等であるので説明は省略する。
【0203】
ここで、システムで規定される幅基準値とは、システムで固定的に保持されてもよいが、図29のような設定入力領域から、入力領域2401のような値を使って設定することができてもよい。
【0204】
なお、ここでは、基準値をサブテンプレートとフローエリアの幅の比として規定しているが、例えば、ミリメートルなどの絶対値で指定しても良い。
【0205】
本実施例2のように、サブテンプレートの幅を用いて基準となるサブテンプレートを特定することで、次行のフロー位置に対して大きな影響を与えるサブテンプレートを特定できる。その結果、その他の処理を省略でき効率的に次行の開始位置を決定することができると共に、サブテンプレートの高さだけでなく幅も考慮することで、より適切なフロー開始位置を決めることが可能となる。
【0206】
例えば、図30では、サブテンプレート3001から3003がフローエリアに配置されている。ここで、実施例1の処理を実行するとサブテンプレート3002から2行目のフロー開始位置3004との間の空白3005に、2行目のサブテンプレートが配置されることになる。しかしながら、その空白3005は、そもそも小さいため無視しても良い場合に、本実施例の処理を用いることで効率的に、かつ、見栄えの良いレイアウト処理を実行することが可能となる。
【0207】
なお、図22から図24、図28は、サブテンプレートを用いて本願の処理を実行したが、サブテンプレートを単なる図形、イメージ等のオブジェクトに置き換えても構わない。
【0208】
なお本発明は、複数の機器(例えばホストコンピュータ、インタフェース機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。また本発明の目的は、前述の実施形態の機能を実現するプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータが記憶媒体に格納された制御プログラムを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0209】
また、本発明には、プログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた場合についても、本発明は適用される。その場合、書き込まれたプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される。
【0210】
また、発明の実施の形態は、本発明を中核として構成される装置又は方法を説明している。このため本実施形態には本発明の本質的部分に加えて付加的な構成要件も記載されている。すなわち発明の実施の形態において説明した装置又は方法の構成要件を備えることは、本発明を成立させるための十分条件ではあるものの、必要条件ではない。
【図面の簡単な説明】
【0211】
【図1】本発明のコンピュータシステム構成図
【図2】本発明のコンピュータモジュールの概略図
【図3】本発明のメニューバー、ツールバー、ワークエリア、フローティングパレットを含む典型的なアプリケーションのメインウインドウとコンテナ間のリンクを持つ典型的なコンテナの一面
【図4】本発明のリンクを作成するUI図例
【図5】本発明におけるレイアウト計算のフロー
【図6】本発明におけるレイアウト計算のフロー
【図7】本発明における図7のフローに対応するUI例
【図8】本発明におけるマルチレコードの概要図
【図9】本発明におけるフローエリア処理の全体フロー
【図10】本発明におけるフローエリアのUI例
【図11】本発明におけるフローエリアの設定ダイアログのUI例
【図12】本発明におけるサブテンプレートのレイアウト例
【図13】本発明におけるサブテンプレートのレイアウトフロー
【図14】本発明における条件式の設定UI例
【図15】本発明におけるサブテンプレートのレイアウト例
【図16】本発明におけるレイアウト結果の一例を示す図
【図17】本発明におけるレイアウト結果の一例を示す図
【図18】本発明のサブテンプレートの簡略図
【図19】本発明の課題を説明するための一例を示す図
【図20】本発明の実行結果の一例を示す図
【図21】本発明の課題を説明するための一例を示す図
【図22】本発明のフローチャート
【図23】本発明のフローチャート
【図24】本発明のフローチャート
【図25】本発明におけるフローエリアの設定ダイアログのUI例
【図26】本発明におけるフローエリアの設定ダイアログのUI例
【図27】本発明の実行結果の一例を示す図
【図28】本発明のフローチャート
【図29】本発明におけるフローエリアの設定ダイアログのUI例
【図30】本発明の実行結果の一例を示す図
【図31】バリアブルプリントの概念の一例を説明するための図
【符号の説明】
【0212】
101 情報処理装置
121 レイアウト編集アプリケーション

【特許請求の範囲】
【請求項1】
データベースからレイアウトすべきコンテンツデータを含むレコードを抽出するための抽出条件が設定された領域を有する1つのテンプレートと、コンテンツデータとを用いてレイアウト処理を実行する情報処理装置であって、
前記コンテンツデータが入力される部分領域が配置されたサブテンプレートを生成するテンプレート作成手段と、
前記抽出条件を満たすコンテンツデータを含む複数のレコードを前記データベースから取得する取得手段と、
前記取得手段によって取得された複数のレコードの1つのレコードに含まれるコンテンツデータを前記サブテンプレートに含まれる部分領域に入力して当該サブテンプレート内のレイアウトを決定する処理を、前記複数のレコードについて実行するレイアウト手段と、
前記レイアウト手段を複数のレコードについて実行することで得られた複数のサブテンプレートを前記領域内の第1の行または第1の列に配置する配置手段と、
前記配置手段によって配置された複数のサブテンプレートのサイズの差を用いて、前記配置手段によって配置されなかったサブテンプレートのために第2の行または第2の列の開始位置を決定する決定手段とを有することを特徴とする情報処理装置。
【請求項2】
前記決定手段は、前記第2の行の開始位置を決定する場合、前記配置手段によって配置された複数のサブテンプレートにおいて最大の高さを有するサブテンプレートと他のサブテンプレートとの高さとの差が所定値以上であると判定された場合、当該他のサブテンプレートの高さを用いて、前記第2の行の開始位置を決定することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記決定手段は、前記第2の列の開始位置を決定する場合、前記配置手段によって配置された複数のサブテンプレートにおいて最大の幅を有するサブテンプレートと他のサブテンプレートとの幅との差が所定値以上であると判定された場合、当該他のサブテンプレートの幅を用いて、前記第2の列の開始位置を決定することを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記配置手段によって配置された複数のサブテンプレートにおいて、前記決定手段によって決定された前記第2の行または第2の列の開始位置を跨ぐサブテンプレートの領域を特定する特定手段とを更に備え、
前記配置手段は、前記特定手段によって特定された前記第2の行または第2の列の開始位置を跨ぐサブテンプレートの領域と、前記決定手段によって決定された前記第2の行または第2の列の開始位置とを用いて、前記第2の行または第2の列に配置すべきサブテンプレートを配置することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項5】
領域内の第1の行または第1の列に配置すべき複数のオブジェクトを配置する配置手段と、
前記配置手段によって配置された複数のオブジェクトのサイズの差が、所定値以上であるか否かを判定する判定手段と、
前記判定手段によって、前記複数のオブジェクトの差が所定値以上であると判定された場合、前記所定値以上の差を埋めるべき位置を、前記領域の第2の行または第2の列に配置すべきオブジェクトの配置位置として決定する決定手段とを有することを特徴とする情報処理装置。
【請求項6】
データベースからレイアウトすべきコンテンツデータを含むレコードを抽出するための抽出条件が設定された領域を有する1つのテンプレートと、コンテンツデータとを用いてレイアウト処理を実行する情報処理装置における制御方法であって、
前記コンテンツデータが入力される部分領域が配置されたサブテンプレートを生成するテンプレート作成工程と、
前記抽出条件を満たすコンテンツデータを含む複数のレコードを前記データベースから取得する取得工程と、
前記取得工程によって取得された複数のレコードの1つのレコードに含まれるコンテンツデータを前記サブテンプレートに含まれる部分領域に入力して当該サブテンプレート内のレイアウトを決定する処理を、前記複数のレコードについて実行するレイアウト工程と、
前記レイアウト工程を複数のレコードについて実行することで得られた複数のサブテンプレートを前記領域内の第1の行または第1の列に配置する配置工程と、
前記配置工程によって配置された複数のサブテンプレートのサイズの差を用いて、前記配置工程によって配置されなかったサブテンプレートのために第2の行または第2の列の開始位置を決定する決定工程とを有することを特徴とする制御方法。
【請求項7】
前記決定工程は、前記第2の行の開始位置を決定する場合、前記配置工程によって配置された複数のサブテンプレートにおいて最大の高さを有するサブテンプレートと他のサブテンプレートとの高さとの差が所定値以上であると判定された場合、当該他のサブテンプレートの高さを用いて、前記第2の行の開始位置を決定することを特徴とする請求項6に記載の制御方法。
【請求項8】
前記決定工程は、前記第2の列の開始位置を決定する場合、前記配置工程によって配置された複数のサブテンプレートにおいて最大の幅を有するサブテンプレートと他のサブテンプレートとの幅との差が所定値以上であると判定された場合、当該他のサブテンプレートの幅を用いて、前記第2の列の開始位置を決定することを特徴とする請求項6に記載の制御方法。
【請求項9】
前記配置工程によって配置された複数のサブテンプレートにおいて、前記決定工程によって決定された前記第2の行または第2の列の開始位置を跨ぐサブテンプレートの領域を特定する特定工程とを更に備え、
前記配置工程は、前記特定工程によって特定された前記第2の行または第2の列の開始位置を跨ぐサブテンプレートの領域と、前記決定工程によって決定された前記第2の行または第2の列の開始位置とを用いて、前記第2の行または第2の列に配置すべきサブテンプレートを配置することを特徴とする請求項6乃至8のいずれか1項に記載の制御方法。
【請求項10】
領域内の第1の行または第1の列に配置すべき複数のオブジェクトを配置する配置工程と、
前記配置工程によって配置された複数のオブジェクトのサイズの差が、所定値以上であるか否かを判定する判定工程と、
前記判定工程によって、前記複数のオブジェクトの差が所定値以上であると判定された場合、前記所定値以上の差を埋めるべき位置を、前記領域の第2の行または第2の列に配置すべきオブジェクトの配置位置として決定する決定工程とを有することを特徴とする制御方法。
【請求項11】
データベースからレイアウトすべきコンテンツデータを含むレコードを抽出するための抽出条件が設定された領域を有する1つのテンプレートと、コンテンツデータとを用いてレイアウト処理を実行する情報処理装置において実行することが可能な制御プログラムであって、
前記コンテンツデータが入力される部分領域が配置されたサブテンプレートを生成するテンプレート作成工程と、
前記抽出条件を満たすコンテンツデータを含む複数のレコードを前記データベースから取得する取得工程と、
前記取得工程によって取得された複数のレコードの1つのレコードに含まれるコンテンツデータを前記サブテンプレートに含まれる部分領域に入力して当該サブテンプレート内のレイアウトを決定する処理を、前記複数のレコードについて実行するレイアウト工程と、
前記レイアウト工程を複数のレコードについて実行することで得られた複数のサブテンプレートを前記領域内の第1の行または第1の列に配置する配置工程と、
前記配置工程によって配置された複数のサブテンプレートのサイズの差を用いて、前記配置工程によって配置されなかったサブテンプレートのために第2の行または第2の列の開始位置を決定する決定工程とを備えたことを特徴とするコンピュータに読み取り可能な制御プログラム。
【請求項12】
前記決定工程は、前記第2の行の開始位置を決定する場合、前記配置工程によって配置された複数のサブテンプレートにおいて最大の高さを有するサブテンプレートと他のサブテンプレートとの高さとの差が所定値以上であると判定された場合、当該他のサブテンプレートの高さを用いて、前記第2の行の開始位置を決定することを特徴とする請求項11に記載の制御プログラム。
【請求項13】
前記決定工程は、前記第2の列の開始位置を決定する場合、前記配置工程によって配置された複数のサブテンプレートにおいて最大の幅を有するサブテンプレートと他のサブテンプレートとの幅との差が所定値以上であると判定された場合、当該他のサブテンプレートの幅を用いて、前記第2の列の開始位置を決定することを特徴とする請求項11に記載の制御プログラム。
【請求項14】
前記配置工程によって配置された複数のサブテンプレートにおいて、前記決定工程によって決定された前記第2の行または第2の列の開始位置を跨ぐサブテンプレートの領域を特定する特定工程とを更に備え、
前記配置工程は、前記特定工程によって特定された前記第2の行または第2の列の開始位置を跨ぐサブテンプレートの領域と、前記決定工程によって決定された前記第2の行または第2の列の開始位置とを用いて、前記第2の行または第2の列に配置すべきサブテンプレートを配置することを特徴とする請求項11乃至13のいずれか1項に記載の制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate


【公開番号】特開2009−110391(P2009−110391A)
【公開日】平成21年5月21日(2009.5.21)
【国際特許分類】
【出願番号】特願2007−283546(P2007−283546)
【出願日】平成19年10月31日(2007.10.31)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】