JP2008117393A - 文書処理装置及び文書処理方法及びプログラム - Google Patents

文書処理装置及び文書処理方法及びプログラム Download PDF

Info

Publication number
JP2008117393A
JP2008117393A JP2007279382A JP2007279382A JP2008117393A JP 2008117393 A JP2008117393 A JP 2008117393A JP 2007279382 A JP2007279382 A JP 2007279382A JP 2007279382 A JP2007279382 A JP 2007279382A JP 2008117393 A JP2008117393 A JP 2008117393A
Authority
JP
Japan
Prior art keywords
template
layout
sub
record
container
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007279382A
Other languages
English (en)
Other versions
JP4549379B2 (ja
Inventor
Hitoshi Ozaka
斉 尾坂
Satoshi Ota
聡 太田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2007279382A priority Critical patent/JP4549379B2/ja
Publication of JP2008117393A publication Critical patent/JP2008117393A/ja
Application granted granted Critical
Publication of JP4549379B2 publication Critical patent/JP4549379B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Digital Computer Display Output (AREA)
  • Document Processing Apparatus (AREA)
  • Editing Of Facsimile Originals (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)

Abstract

【課題】レコード毎にレイアウトを変えることができるマルチレコード対応の自動レイアウト機能をもった文書処理装置及び方法を提供する。
【解決手段】テンプレートに設定されたフローエリアに定義されている条件式に基づいて、コンテンツデータを流し込むべきサブテンプレートを決定し、該コンテンツデータが流し込まれたサブテンプレートをフローエリア内に配置できない場合、所定のフローエリアを有するページを複製する。
【選択図】図22

Description

本発明は、たとえばデータベースに登録されたレコードの各フィールドを予め定めた位置に配置して文書を完成させる自動レイアウト機能を有する文書処理装置及び文書処理方法に関するものである。
近年、商品の多品種化で商品ライフが短くなっていること、インターネット利用の普及による消費者のカスタマイズサービス指向などの要因からCRM(カスタマ・リレーションシップ・マネージメント)や、One−to−One(1対1)マーケティングの必要性が注目されている。これらの手法により顧客満足度を高め、顧客の開拓や囲い込みを目指すものである。
カスタマ・リレーションシップ・マネージメントとは、顧客のデータベースをもとに、個々のニーズに即した対応を実施して、顧客の満足度を高め、会社の収益性を向上させる仕組みである。また1対1マーケティングは、データベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析して、顧客のニーズに合った提案を行うマーケティング手法であり、その代表的な適用例としてバリアブルプリントが挙げられる。ここ最近、DTP(デスクトップパブリッシング)技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発され、顧客毎に異なる量のコンテンツを最適にレイアウトした文書の作成が求められるようになった。
従来、バリアブルプリントシステムでは、ドキュメント上にレイアウト枠(コンテナともいう)が作成され、各コンテナのコンテンツとしてデータベースの一定の条件を満たすレコードやフィールドが関連づけられる。こうしてデータベースとレイアウトとを関連付けることにより、バリアブルプリントは実現されていた。
しかし、テキストおよびイメージのコンテナのサイズが固定であったため、データベース内のデータがコンテナに挿入されたときに、データ量がコンテナサイズより多いとテキストのオーバーラップおよびイメージのクリッピングが発生する。またデータ量がコンテナサイズより小さいと隙間が空いてしまう。
それらの問題を解決するための技術として、ある文字領域のサイズが大きくなった場合、隣接した領域のサイズを小さくする技術が特許文献1に開示されており、文字領域に対して文字を入力するに従い該文字領域サイズを拡張していき、該文字領域と隣接する領域サイズを縮小することが記載されている。
このように、従来の自動レイアウト技術には、入力されるテキスト量に応じて、レイアウト枠(コンテナ)のサイズを動的に変化させることが可能なものが存在する。
また、特許文献2には、複数の商品情報(商品レコード)をページ内のレイアウト領域に配置する技術も記載されている。
この技術では、レイアウト(たとえば商品名、イメージ、価格などの配置)をあらかじめ設定したマスタ部品(本件のサブテンプレートに相当)を用意しておき、商品情報ごとにどのマスタ部品を使用するかを設定する。そして、商品情報が有するデータ(商品名やイメージ、価格など)を、設定されたマスタ部品内の所定の領域に配置して、ページ内に指定されたレイアウト領域に順次配置する。なお、本願ではサブテンプレートに従って1レコードの情報を配置し、複数のサブテンプレートをフローエリアに順次配置する機能をマルチレコード機能と呼び、その動作を、サブテンプレートをフローエリアに流しこむ、と表現する。
特開平7−129658号 特開2000−48216号(段落0025〜0055、図2、図11)
しかしながら、特許文献1に記載の技術には、テキストの入力に応じて文字領域が拡大されていくことが記載されているが、文字領域のサイズが大きくなった場合、隣接した領域は間隔を保つべく縮小されてしまうため、入力されるテキスト量が増加するに従い、隣接した領域は縮小され続けてしまうといった問題点があった。
更に特許文献1では、上述したようなデータベースと各領域を関連付けてコンテンツデータを流し込むことで、顧客毎にカスタマイズした文書を作成するバリアブルプリントシステムについては考慮されていなかった。
また、特許文献2に記載の技術では、レコードごとにどのマスタ部品を使用すべきかを予め設定しなければならず、例えばレコード数が膨大な量であった場合、レコード数の増加に応じて設定するための操作回数も増加するためユーザの操作性を低下させることとなる。
また、ユーザによっては同じようなデータ属性を有するレコードは同じマスタ部品を使用したいと考えることが想定される。例えば、レコード1〜10を用いて文書を作成する場合、レコード2およびレコード5には同じ価格データが設定されているとする。この場合、ユーザはレコード内のデータ属性が同じであるレコード2および5に関しては同じマスタ部品を使用して文書を作成したいと考える場合がある。
このような場合、特許文献2に記載の技術では、レコード毎にどのマスタ部品を使用すべきかを予め設定しなければならないためレコード2で使用したマスタ部品を覚えておき、レコード5にマスタ部品を設定する際に、ユーザの記憶を頼りにマスタ部品を選択しなければならない。しかしながら、通常パンフレットやカタログを作成する際のレコード数は膨大な数となることが予想され、さらに多くの種類のマスタ部品が使用される。この際に、ユーザの記憶のみでマスタ部品を選択していく手法が最適であるとは言い難い。
また、特許文献2では、レイアウト領域に配置すべきレコード数によっては、指定されたレイアウト領域にレコードを収めることができない場合がある。1ページ分のレイアウト領域しか設定していなかった場合、特許文献2では次のレイアウト候補位置に移動して配置することになるが、次のレイアウト候補位置へ移動できない場合の処理については記載されておらず、結果として、データをレイアウトすることができないという問題が発生する。
また、このように全レコードをレイアウトすることができない場合の一般的な処理として、レイアウトすべきデータを縮小する方法などが考えられるが、レイアウトすべきデータのサイズを変更することにより、ユーザの所望とするレイアウトサイズが得られなくなる可能性がある。
このように、ユーザが当該顧客の好みそうなカタログやパンフレットを作成することを想定すると、従来技術だけではユーザに対して良好な操作性を提供しつつ、多様にわたる顧客の趣向に応じた文書を作成することが困難となる。
また、従来のマルチレコード印刷(複数のレコードを1つのドキュメントに配置して文書を印刷する機能)では、レコードの特定の項目が変更された(例えば、顧客名が変わった)ときだけ、ドキュメントを分割する(たとえば顧客別にドキュメントを分割する)という、単純な1階層の分割しかできなかった。これでは、たとえば商品毎にページを改めたい場合など、所望の位置に文書区切り(ブレークとも呼ぶ。)を挿入することができず、整然とした文書あるいは所望の区切り目を設けた文書の作成が困難であった。
本発明は上記課題を鑑みてなされたもので、ユーザの操作性を保持したまま顧客の趣向に応じた多種多様な出力結果を得ることを実現するために、テンプレート上の領域に条件式を設定し、該条件式に基づいて抽出されたレコードデータを複数種類のサブテンプレートにレイアウトし、所定の領域内に配置する自動レイアウト機能をもった文書処理装置及び方法を提供することを目的とする。
また、配置すべきデータのサイズを縮小することなく、ユーザの所望とする出力結果をえるために、抽出されたレコードを領域内に配置できない場合、該領域を有するページを生成する自動レイアウト機能をもった文書処理装置及び方法を提供することを目的とする。
また、文書の区切り挿入の自由度を高め、それにより整然としたレイアウトあるいはユーザの意志を反映したレイアウトを実現できるマルチレコード対応の自動レイアウト機能をもった文書処理装置及び方法を提供することを目的とする。
上記目的を達成するために本発明は以下の構成を有する。データベースからレイアウトすべきコンテンツデータを抽出するための抽出条件が関連づけられた領域を有する1つのテンプレートを用いてレイアウト処理を実行する文書処理装置であって、
前記抽出条件を満たすコンテンツデータを前記データベースから取得する取得手段と、
前記取得手段により取得されたコンテンツデータを前記領域内に配置することができない場合、前記抽出条件が設定された領域を有するテンプレートを新たに生成する生成手段とを有する。
あるいは、データベースからレイアウトすべきコンテンツデータを含むレコードを抽出するための抽出条件が関連づけられた領域を有する1つのテンプレートを用いてレイアウト処理を実行する文書処理装置であって、
前記コンテンツデータが入力される部分領域が配置されたサブテンプレートを作成するテンプレート作成手段と、
前記抽出条件を満たすコンテンツデータを含む複数のレコードを前記データベースから取得する取得手段と、
前記取得手段によって取得された複数のレコードの1つのレコードに含まれるコンテンツデータを前記サブテンプレートに含まれる部分領域に入力して当該サブテンプレート内のレイアウトを決定する処理を、前記複数のレコードについて実行するレイアウト手段と、
前記レイアウト手段を複数のレコードについて実行することで得られた複数のサブテンプレートを前記領域内に配置できない場合、前記抽出条件が設定された領域を有するテンプレートを新たに生成する生成手段とを有する。
本発明によれば、抽出されたレコードを領域内に配置できない場合、該領域を有するテンプレートを生成するようにしたため、配置すべきデータのサイズを縮小することなく、ユーザの所望とするレイアウト文書を作成することが可能となる。
あるいは、本発明によれば、複数のレコードの1つのレコードに含まれるコンテンツデータをサブテンプレートに含まれる部分領域に入力して当該サブテンプレート内のレイアウトを決定する処理を実行することで得られた複数のサブテンプレートを領域内に配置できない場合、抽出条件が設定された領域を有するテンプレートを新たに生成する。
[第1実施形態]
<実施形態の概要>
本発明の実施例を適用するのに好適な実施形態について説明を行う。まず発明の概略について説明する。本実施形態は、ドキュメントテンプレート(単にテンプレートとも呼ぶ。)に定義されたコンテナ(データが流し込まれる部分領域:フィールド領域とも呼ばれる。)に従って、データベースのレコード等を配置した文書を作成する、いわゆるバリアブルプリントと呼ばれる機能をコンピュータにより実現するためのコンピュータソフトウエアに関する。このソフトウエアが実行可能にロードされたコンピュータは、自動レイアウトシステム(あるいは文書処理装置)として機能する。本実施形態では特に、データをテンプレートに従って配置するのみならず、テンプレートに従って文書の一部を作成し、その文書の一部を、別途テンプレートに定義された領域(フローエリアと呼ぶ。)に挿入してドキュメントを完成させる機能(マルチレコード機能)を持つソフトウエアを開示している。挿入できる文書の一部の数はひとつのフローエリアについて一つとは限らない。さらに、テンプレートに複数のフローエリアが定義されている場合、一定の条件に従って、作成済みの文書の一部をフローエリア毎に振り分ける技術も開示される。なおフローエリア内に配置されるテンプレートを特にサブテンプレートと呼ぶ。また、フローエリアを含むテンプレートを特にマスタテンプレートと呼ぶ。
ここで、本実施形態の自動レイアウトシステムには2つの特徴的機能がある。第1は、レコードが1ページに入りきらない場合、たとえばレコード数が非常に多い場合など、新たなページにそのレコードを配置して、複数ページの文書を自動的に生成する機能である。第2は、個々のレコードについて、そのレコードに応じた形式(サブテンプレート)を用いて配置し、文書のレイアウトの自由度を高めるための機能である。次に、本発明を適用可能な本実施形態におけるコンピュータシステムの構成、およびアプリケーション構成について説明する。
<システム構成図>
図1Aはバリアブルデータドキュメントを印刷するシステム100を図示している。本明細書で示された方法は図1Bで詳しく説明される汎用コンピュータモジュール101で所定のプログラムを実行することで実践される。図1Aに記述されるプロセスは、コンピュータモジュール101で実行され、システム100上で実施可能となるレイアウト編集アプリケーションプログラム121のように、ソフトウェアの全体あるいは一部分で実行される。特にレイアウト編集や印刷のステップは、本発明の文書処理装置であるコンピュータ101によって実行されるソフトウェアの指示によって実施される。ソフトウェアは例えば以下に記述されるような記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアはコンピュータの可読媒体からコンピュータにロードされ、コンピュータ101によって実行される。そのようなソフトウェアや媒体に記録されたコンピュータプログラムを持つコンピュータの可読媒体はコンピュータプログラム製品である。コンピュータでそのコンピュータプログラム製品を使用することで、ドキュメントのレイアウト編集やバリアブルデータ印刷を行える装置として、そのコンピュータは機能する。
コンピュータモジュール101にはキーボード132やマウス133のようなポインティングデバイスなどの入力装置がつながれ、ディスプレイ装置144や状況に応じてはローカルプリンタ145を含む出力装置が連結される。入力/出力インターフェース138はコンピュータモジュール101をネットワーク接続107から接続してシステム100の他のコンピュータ装置につなげることができる。そのネットワーク接続107の典型はローカルエリアネットワーク(LAN)、あるいはワイドエリアネットワーク(WAN)である。
コンピュータモジュール101は、一般的には少なくとも1つのプロセッサーユニット135、例えば半導体のランダムアクセスメモリ(RAM)やリードオンリーメモリ(ROM)から構成されるメモリユニット136、ビデオインタフェース137を含むINPUT/OUTPUT(I/O)インターフェース、キーボード132やマウス133のためのI/Oインターフェース143を含んでいる。
記憶装置139は、一般的にはハードディスクドライブ140やフレキシブルディスクドライブ141を含んでいる。図1Bには示されていないが磁気テープドライブもまた使用される可能性がある。CD−ROMドライブ142は不揮発性のデータソースとして提供される。コンピュータモジュール101は、GNU/LINUX(登録商標)やマイクロソフト社のウィンドウズ(登録商標)のようなオペレーティングシステムに従って、あるいはコンピュータシステムの常套的なオペレーションモードによる方法によって、相互接続バス134を介して通信を行うコンピュータモジュール101に含まれる各構成要素(符号135〜符号143)を利用する。
図1Aのレイアウト編集アプリケーションプログラム121は、通常は図1Bのハードディスクドライブ140に常駐し、プロセッサ135により実行、読み込み、コントロールされる。いくつかの事例では、アプリケーションプログラム121がCD−ROMやフレキシブルディスク上にエンコードされており、対応するフレキシブルディスクドライブ142やCD−ROMドライブ141を通じて読み込まれてユーザに提供される。あるいはもう一つの方法として、アプリケーションプログラム121はネットワーク接続107からユーザによって読み込まれてもよい。さらにソフトウェアは、磁気テープまたはROMまたは集積回路、光磁気ディスクまたは無線またはコンピュータモジュール101とその他のデバイス間の赤外線通信、PCMCIAカードのようなコンピュータ可読カード、そしてEメール通信やWEBサイト上の記録情報を持つインターネットやイントラネットを含む、他の適当な大きさのコンピュータ可読媒体からコンピュータモジュール101内にロードされる可能性もある。上記の例は単に関連するコンピュータ可読メディアの一例である。他のコンピュータ可読媒体も使用される可能性はある。
またレイアウト編集アプリケーション121は、バリアブルデータ印刷(VDP)を行うよう指示し、2つのソフトウェアコンポーネントを含んでいる。これらのうち第1のコンポーネントはレイアウトエンジン105であり、これは長方形のコンテナで与えられた制限やサイズによって、コンテナを構成する矩形および線の位置を計算するためのソフトウェアコンポーネントである。なお、レイアウトエンジン105は、コンテナのみならずその他のオブジェクトについても位置等を計算することが可能である。レイアウトエンジン105は各部分領域(たとえばコンテナ)のサイズと位置を決定するアプリケーションとして動作し、図示省略したプリンタドライバに描画情報を出力することで、プリンタドライバがバリアブルデータドキュメントのイメージ描画処理を行い、印刷データを生成する。
第2のコンポーネントであるユーザインターフェース103は、ユーザにドキュメントテンプレートを作成させ、ドキュメントテンプレート内でデータソースと関連付けるメカニズムを提供する。ドキュメントテンプレートとは、たとえば定型的な文や上述したコンテナを文書上に配置した雛形となるデータである。ドキュメントテンプレートの所定の領域、たとえばコンテナ内にデータベースから取り込んだテキストや画像等のデータを流しこむことでひとつの文書が完成する。
ユーザインターフェース103とレイアウトエンジン105はコミュニケーションチャネル123を介して通信する。ドキュメント生成のためのデータソースは、一般的にデータベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバ117上にある一般的なデータベース119である。ホストコンピュータ101はネットワーク接続107によってデータベースサーバ117と通信する。バリアブルデータ印刷アプリケーション121はホストコンピュータ101か一般的に他のコンピュータで構成されるファイルサーバ115に保存されるドキュメントテンプレートを生成する。またバリアブルデータ印刷アプリケーション121はデータとマージされたドキュメントテンプレートによって構成されたドキュメントを生成する。これらのドキュメントはホストコンピュータ101のローカルファイルシステムに保存されるか、ファイルサーバ115に保存されるか、あるいはプリンタ113に直接印刷される。プリントサーバ109は直接ネットワークにつながっていないプリンタにネットワーク機能を提供するコンピュータである。プリントサーバ109とプリンタ113は一般的な通信チャネル111を介して接続される。
テンプレートデータ131はドキュメントテンプレートとも呼び、データベース等から読み出したレコードを埋め込むコンテナと呼ぶ領域や、固定されたデータ等が定義された文書の雛形データである。この構成は図23、図24を参照して後で説明する。
図34は本実施形態によるバリアブルデータプリントの概略を説明する図である。レイアウト編集アプリケーション121のユーザインターフェースモジュール103(以下、ユーザインタフェース103と記載する)により、ユーザからの操作指示に従いページ上に複数のコンテナ345〜347を配置し、各コンテナに位置やサイズに関する制約条件を付与することによりドキュメントテンプレート344が生成される。
また、ユーザインターフェース103はドキュメントテンプレート344とデータソース340(図1ではデータベース119)との関連付け、更に各コンテナとデータソース340内の各データフィールドとの関連付けを行う。各コンテナとデータソース340内の各データフィールドとの関連付けた情報は、ドキュメントテンプレート内に記述され、該ドキュメントテンプレートは、HDD140またはメモリユニット136に格納される。
また、データソース340は、レコード単位で項目データ(バリアブルデータ)が記載されているファイルであり、HDD140に格納されている。レイアウトエンジン105は、ユーザからの印刷指示もしくはプレビュー指示に応じて、ドキュメントテンプレートの各コンテナ345〜347に、関連付けられたバリアブルデータをデータソース340から読み込み、レコード単位で流し込み(例えば、データレコード1のデータフィールドA〜Cをコンテナ345〜347へ流し込む)、流し込まれるべきデータのサイズに応じて各コンテナのサイズ等を調整(レイアウト調整)する。なお、レイアウト調整の方法については後述する。
プレビュー指示の場合は、レイアウト調整されたドキュメントイメージを生成し、ビデオディスプレイ144の画面上にプレビューとして表示するべく出力される。また印刷指示の場合は、レイアウトエンジン105もしくはプリンタドライバを用いて生成したドキュメントイメージを印刷データとしてプリントサーバ109へ出力する。データレコード1,2,3…を順次処理することにより、バリアブルデータプリントが実現されることになる。
ドキュメント生成のためのデータソース(340)は、例えば、データベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバ117上の一般的なデータベース119であってもよい。この場合、ホストコンピュータ101はネットワーク107を介してデータベースサーバ117と通信し、データソースを取得できる。また、レイアウト編集アプリケーション121によって生成された、バリアブルデータプリントのためのドキュメントテンプレート(344)は、ホストコンピュータ101或いは他のコンピュータで構成されるファイルサーバ115に保存される。図1Cで上述したように、レイアウト編集アプリケーション121のレイアウトエンジン105は、データとマージされたドキュメントテンプレートによって構成されたバリアブルデータドキュメントを生成する。これらのドキュメントは、ホストコンピュータ101のローカルファイルシステムに保存されるか、ファイルサーバ115に保存されるか、あるいはプリンタ113に送信されて印刷される。プリントサーバ109はネットワークと直接にはつながっていないプリンタにネットワーク機能を提供するためのコンピュータである。プリントサーバ109とプリンタ113は一般的な通信チャネル111を介して接続される。
図2は、図1Aの構成から、レイアウトエンジン225を独立させてエンジンサーバ227によりレイアウトエンジンを実行させるための構成を示す。エンジンサーバ227は一般的なコンピュータである。ファイルサーバ115に保存されたドキュメントテンプレートは印刷や他の目的がある際、レイアウトエンジン225によってドキュメントを生成するためにデータベース119に保存されたデータと結合することができる。そのようなオペレーションはユーザインターフェース103を介して要求されるか、特定のレコードのみ印刷するように要求される。
<アプリケーション構成図>
(メインウインドウ)
図3で参照されるように、ユーザインターフェース101は、操作時にビデオディスプレイ144に表示されるアプリケーションウインドウ301によって形成されたユーザインターフェースを含んでいる。ウインドウ301は、メニューバー302とツールバー303、そしてマウス133の位置・動作によって場所を移動可能なワークエリア306とオプションのパレット311とカーソル/ポインタデバイス313から特徴付けされる。
メニューバー302は周知の技術であり、メニューオプションの階層の下に拡張される多くのメニューアイテム304を持つ。
ツールバー303は、アプリケーションの特別なモードによって非表示にする、または表示することが可能な多くのツールボタン等のウィジット305を持つ。オプションのルーラー308はワークエリア内のポインター、ページ、ライン、マージンガイド、レイアウト枠(すなわちコンテナ)またはオブジェクトの位置を示すために使われる。パレット311はバリアブルデータを読み込んで表示するライブラリのような追加機能にアクセスするために使われる。パレット311は移動、リサイズ、クローズをするためのウインドウコントロール312を持つ。
ツールバーエリア303は少なくとも、次のユーザ選択可能な「ボタン」を持つ。
(1)選択ツールボタン403:コンテナの辺を選択、移動、サイズ変更、リサイズそしてロック・ロック解除するために使われる。コンテナは、複数のコンテナの周りに選択ボックスをドラッグする、あるいは複数コンテナを選択する間にCTRLキーを押しつづけることによって、複数選択を可能にする。
(2)イメージコンテナツールボタン404:スタティック(固定)あるいはバリアブルイメージを持つコンテナを作成するために使われる。
(3)テキストコンテナツールボタン405:スタティック(固定)あるいはバリアブルテキストを持つコンテナを作成するために使われる。
(4)リンクツールボタン406:コンテナ間に関連付けを行うリンクを作成するために使われ、リンクの距離をコントロールするために使われる。
これらのボタンは、周知の技術であるように操作状況に合わせて変化するアイコンのツールチップとして実装される。
レイアウト編集アプリケーション121の図3に示したアプリケーションウインドウ301は、ページ内に各コンテナやリンクをレイアウトすることで、基本レイアウトを決定することができる。基本レイアウトとは、バリアブルデータプリントで基本となるレイアウトのことである。基本レイアウト内の各コンテナが固定コンテナである場合は、すべてのレコードの印刷結果のレイアウトは同じになる。また、基本レイアウト内の各コンテナが後述する可変コンテナである場合は、レコード単位に読み込まれるデータの量やサイズにより各コンテナのサイズや位置が、後述する制約の範囲内で変動することになる。よって、レイアウト編集アプリケーション121で作成されるドキュメントテンプレートは、あくまで基本レイアウトを決定するものであり、可変コンテナが含まれる場合は、最終的な印刷物のレイアウトは読み込まれるデータによりレイアウト調整されることになる。
(ドキュメントテンプレート)
ワークエリア306はドキュメントテンプレートのデザインを表示および編集するために使われる。これはユーザに下準備で印刷されたドキュメントの概観をデザインすること、そしてマージされたドキュメントが、バリアブルデータの量またはサイズに基づいてどのように変化するかを理解することを可能にする。
もし外部データソース(例えばデータベースのレコード等)がテンプレートにリンクされていたら、現在のドキュメントのプレビューができるように、バリアブルテキストとイメージがコンテナに表示される。
ドキュメントの構造とバリアブルデータのコンテナの描写をする視覚的な手がかりとなるオブジェクトは、カーソルをコンテナ上に移動させたときや、コンテナを選択したときにいつも表示される。
ワークエリア306はスクロールバー307とオプションのルーラ308とドキュメントテンプレート309により特徴付けられる。ドキュメントテンプレート309はページが複数あることを示すことができる。
与えられたドキュメントテンプレートのページサイズは、周知の技術によりユーザによって指定される。例えばメニューの「ファイル」から「ページ設定」を選択することでページサイズを設定するダイアログを表示し、そこでユーザが指定したページサイズが反映されることになる。それぞれのドキュメントでの実際のページ数はバリアブルデータによって変化する可能性がある。もし1ページ内に収めることができず、所定の用紙サイズのページに各コンテナを収めるような制約が基本レイアウトになかった場合、追加のページは自動的に作成される。それぞれのページ内の境界線は、ページ上の印刷可能なオブジェクトの最大幅を示す、任意のページマージン310である。
また、図3には1ページのドキュメントテンプレート309上に表示することが可能なオブジェクトの例も示されている。それらは、複数のコンテナ407、408と、固定されていない辺410、リンク412そしてスライダ413を持つ。なお、各オブジェクトの機能については後述する。
(コンテナ)
コンテナは、ドキュメントテンプレート内に固定あるいは可変のテキストやイメージが流しこまれて描画されるスペースであり、他のコンテナやオブジェクトと相互に作用しながらレイアウトされる。コンテナはポインティングデバイス133を操作してポインタ313を使い、図3のユーザインターフェースで示され、移動やサイズ調整そして再作成されることができる。
より正確にはコンテナは、設定の集まり、視覚的表現そしてインタラクションと編集動作をもっている。下記にコンテナの定義について説明する。
(1)コンテナは固定あるいは可変のコンテンツが流し込まれる。可変コンテンツは、データソース(たとえばデータベースのレコード)から取得され、異なるドキュメントでは異なるデータに応じてコンテナサイズを可変するという意味でダイナミック(動的)である。可変コンテンツとしては、アニメーション化されたもの、あるいは他の方法で時間に応じて変化するものは印刷に適合していないため含まない。固定コンテンツはひとつのテンプレートを用いて生成される全てのドキュメントで同じように表示される。けれども、可変コンテンツとリンクが設定されている場合、可変コンテンツを含むコンテナの位置やサイズの変化によって、固定コンテンツを含むコンテナはそれぞれのドキュメントで位置が異なる可能性がある。
(2)コンテナは、コンテンツに適用される背景色、ボーダー、フォントスタイルといったテキスト設定のような装飾機能を持っている。このような設定をコンテナ属性と呼ぶ。コンテナ属性は、コンテナごとに設定可能であるが、あるコンテナと同じコンテナ属性であるという設定を行うことも可能である。
(3)コンテナはドキュメントを生成したときにデータソースからのデータとマージされる。可変コンテンツはデータソースからの特定のデータとして得られ、表示あるいは印刷される。コンテナに収められるコンテンツは、例えば印刷されるか、スクリーン144上で表示されるか、あるいはその両方により出力され得る。
(4)コンテナはユーザインターフェースを持つ。例えばコンテナの編集そして表示設定のためのインタラクティブなGUIを持つ。ユーザインタフェースの要素は普通はスクリーン144上に表示される。ユーザインターフェース103は、背景色やフォントのようなコンテナの装飾機能のいくつかを表示する。そしてコンテナの設定の編集や表示を行わせるための機能も有する。ユーザインターフェース機能の目的の例としては、ボーダー、あるいは、コンテナのサイズや位置を対話的に変更、表示するための角アイコン、あるいはコンテナがデータソースからデータをマージされたとき、コンテナの動作を示すための上塗りした数、線、アイコン、テキストがある。しかしそれらの要素はドキュメント上には印刷されない。
(コンテナ制約)
コンテナはそれぞれのドキュメントで表示または印刷されるコンテンツをどのようにコンテナに収めるか制御するための制約を持つ(すなわち定義可能である)。これらの制約は、固定・可変コンテンツをコンテナと結びつけると共に、ユーザが一つのドキュメントテンプレートによって多数のドキュメントをコントロールする主要な手段である。制約の一例としては「このコンテナのコンテンツの高さは、最大値4インチです。」というものがある。他の制約の例としては「コンテナのコンテンツの左エッジは、それぞれのドキュメントで同じ水平位置で表示しなければならない。」というものもある。ここに記述される内容は、GUIを使ってこのような制約を表示、編集するためのいろいろな方法である。
イメージがページ上に定義された場所を持っているように、固定コンテンツの配置を指定するコンテンツプレイスホルダは、デジタル印刷技術でよく知られている。以下の説明において、コンテナは位置とサイズとを持ち、それらは公知の技術で知られている手法で編集され、表示することができる。ここでは、バリアブルデータ印刷における表示・編集に焦点を合わせて説明する。
ユーザは、コンテナの位置やサイズ、制約等を指定することで、ドキュメントのコンテンツのサイズおよび位置を指定することができる。複数のドキュメントが一つのドキュメントテンプレートから生成されるので、コンテナの指定可能な設定と制約を指定および表示させるためにユーザインターフェースを使わなければならない。コンテナはそのユーザインターフェースとしても利用される。
<テンプレート作成モード(コンテナ表示・編集)>
バリアブル印刷されるドキュメントの作成手順は、テンプレートを作成するテンプレート作成処理(テンプレート作成モード)と、作成されたテンプレートにコンテンツを挿入してドキュメントを作成するドキュメント作成処理(ドキュメントをプレビュー表示する場合を特にプレビューモードと呼ぶ。)という2つのフェーズに分けることができる。まず、テンプレート作成モードについて説明する。
(新規コンテナの作成方法)
コンテナは、テキストコンテナとイメージコンテナの2種類で記述される。テキストコンテナはテキスト、そして埋め込みのイメージを持つ(収納する)。イメージコンテナは、イメージだけを持つ(収納する)。可変というのは前述のとおり、レコード毎に異なり得る、という意味である。
新規テキストコンテナとイメージコンテナは、ウィジット305からマウス133でクリックして選択するテキストコンテナツール404とイメージコンテナツール405それぞれにより四角形の領域をドラッグすることによって、ドキュメントテンプレート309上に作成される。
あるいはコンテナは、同様に適切なツール404,405をアクティブにした後に、ドキュメントテンプレート309上でクリックすることによって単純に作成されてもかまわない。この場合、デフォルトサイズのコンテナが挿入されるか、新規コンテナの寸法を入れるために、ダイアログボックスが提供される。あるいは他の案が考えられるかも知れない。このようにしてユーザインターフェース上でユーザにより指定された矩形の位置およびサイズが、そのままテンプレート上におけるコンテナの位置およびサイズとして、ドキュメントテンプレートの保存時に、ドキュメントテンプレートファイルとしてハードディスク等に保存される。
(コンテナの表示方法)
コンテナの辺は、関連付けられたコンテンツがドキュメント内で表示される際の、仮想の境界線を定義するものである。コンテナをユーザインターフェイスとして利用するに際して、例えばコンテナの左辺は、関連付けられたコンテンツがどんなドキュメント内でも表示可能である最も左の辺として扱われる。同様に、コンテナの高さは生成されたドキュメントで関連付けられたコンテンツを表示可能な高さの制限として理解できるであろう。本特許提案では、ユーザインターフェース103を通してコンテナの辺あるいは大きさを変化させることを前提としている。
(ユーザインターフェースの定義)
次に、コンテンツのレイアウトを制限するために使われるいくつかのユーザインターフェイスとレイアウトの関係のルールの定義を説明する。添付した図面に示すレイアウト例もこの定義に従って表示されている。
(1)もしコンテナの左右の辺が実線なら、コンテナの幅は固定である。コンテナの幅が固定なら、関連付けられたコンテンツに割り当てられる幅は、全てのドキュメントで同じになる。しかしコンテナの高さは変わる可能性がある。
(2)もしコンテナの上下の辺が実線なら、コンテナの高さは固定である。もしコンテナの高さが固定なら、関連付けられたコンテンツに割り当てられる高さは、全てのドキュメントで同じになる。
(3)もし距離の制約が固定なら、指定された距離は全てのドキュメントで同じになる。
(4)もしコンテナの実線辺と他のコンテナを後述するリンクを用いて関連付けると、実線辺のコンテナはリンクによって関連付けられた他のコンテナによって押され、位置を変える場合がある。上下辺に対するリンクは縦方向の位置変更を、左右辺に対するリンクは横方向の位置変更をもたらす。「固定」の反対は、辺、位置、あるいはドキュメント制約がドキュメントごとに変化するかもしれないことを意味している「可変」である。可変を実現するためのユーザインターフェイスとレイアウトの関係のルールの例は、例えば以下のようである。
(5)もしコンテナの左右の辺が点線なら、コンテナの幅は可変である。コンテナの幅が可変なら、関連付けられたコンテンツに割り当てられる幅は、ドキュメントごとに変化する。
(6)もしコンテナの上下の辺が点線なら、コンテナの高さは可変である。もしコンテナの高さが可変なら、関連付けられたコンテンツに割り当てられる高さは、ドキュメントごとに変化する。
(7)もし距離の制約が可変なら、指定された距離はドキュメントごとに変化する可能性がある。距離の制約に対する設定により、最大長・最小長の制限の枠内でコンテナの距離を調整するレイアウトを行なうことができる。
(8)もしコンテナの点線辺と他のコンテナを後述するリンクを用いて関連付けると、そのコンテナはリンクによって関連付けられた他のコンテナを押し(または押され)、位置を変える場合がある。上下辺に対するリンクは縦方向の位置変更を、左右辺に対するリンクは横方向の位置変更をもたらす。
図4は、上記のルールに基づくコンテナの辺の状態を示している。一般的に、コンテナの辺の状態はドキュメントテンプレートのデザインの手助けとして表示される要素であるため、印刷物には描画されない。コンテナの制約として設定される幅・高さの最小値・最大値の設定値は、副次的なダイアログウインドウ311(図3参照)に表示される。
なお、上述したユーザインターフェース上の表示とコンテナ自身の制約あるいはコンテナ間の制約は、そのユーザインターフェースを用いるユーザの観点から説明したもので、このユーザインターフェースを実現するために実行されるプログラムの観点からは因果関係が逆となる。上記規則をプログラムの観点から言い換えると以下のようになる。
(1)もしコンテナの幅が固定であるとデータ上設定されていれば、コンテナの左右の辺を実線で表示する。
(2)もしコンテナの高さが固定であるとデータ上設定されていれば、コンテナの上下の辺を実線で表示する。
(3)もし固定値で指定された距離は、全てのドキュメントで同じ距離とする。
(4)コンテナ幅あるいは高さが固定であるとデータ上設定されており、その固定された辺について他のコンテナとの距離(コンテナ制約)が設定されている場合、当該コンテナの位置は、前記他のコンテナのサイズ等に応じて決定される。
(5)もしコンテナの幅が可変であるとデータ上設定されていれば、コンテナの左右の辺を点線で表示する。
(6)もしコンテナの高さが可変であるとデータ上設定されていれば、コンテナの上下の辺を点線で表示する。
(7)もしコンテナ間の距離の制約が可変とデータ上設定されていれば、距離の最大長・最小長の制限の枠内でコンテナの距離を調整するレイアウトを行なうことができる。
(8)コンテナ幅あるいは高さが可変であるとデータ上設定されており、その固定された辺について他のコンテナとの距離(コンテナ制約)が設定されている場合、当該コンテナの幅または高さに応じて、前記他のコンテナの位置が決定される。
図5(A)で、コンテナ501は幅が可変である。この場合、辺503は実線で表現され、可変の辺504は点線で表現される。拡縮アイコン505は、それに隣接する辺504が可変であることを示す、オプションのインジケータである。図5(B)では、コンテナ501は幅・高さ両方が可変である。図5(C)で、コンテナ501も、幅・高さ両方が可変である。また辺の操作を行うためにハンドル502もユーザインターフェース上に表示される。
<ドキュメントテンプレートのデータの例>
図23は、ドキュメントテンプレートのデータ(テンプレートデータと呼ぶ。)131の一例を示す。図23において、テンプレートデータ131は、メモリ136あるいはハードディスク140に格納されている。テンプレートデータには、以下の要素が含まれる。
(1)全体サイズ2302:テンプレート全体のページのサイズを示す。サイズは、たとえば、縦および横の長さ、または定型用紙サイズなどで示される。
(2)コンテナ情報2303:テンプレートに配置されるコンテナ毎に、そのコンテナを特定するための識別情報やコンテナの基準の位置(位置情報)、縦横それぞれの辺の長さ(サイズ情報)、コンテナを構成する辺や点の属性(属性情報)、コンテナに関連づけられるコンテンツの情報等を示す。位置情報およびサイズ情報は、図4のユーザインターフェースを介する指定によってテンプレート作成時に定義されたものである。位置情報は、コンテナの作成時にユーザにより設定された、コンテナの基準の位置である。位置が可変のコンテナであれば、コンテナに流し込まれるコンテンツのサイズ(画像サイズ、テキスト量)に応じて大きさが変更され、各コンテナの大きさにより動的に位置が変更されることになる。位置が固定されているコンテナであれば、固定された位置情報を持つ。たとえばコンテナの対角点の位置を特定できる情報を持つことで、位置とサイズとが特定できる。もちろん、全点についてテンプレート上における位置を持ってもよいし、ひとつの点についてはテンプレート上における位置の情報を持ち、他の点については相対的な位置の情報を持つようにしてもよい。すなわち、コンテナの一つの点とコンテナのサイズによって定義することもできる。また、固定されている点についてはテンプレート上における位置で定義し、可変の点については相対的な位置で定義しても良い。
属性情報は、図3および図5を参照して説明した、コンテナの辺や辺、軸またはそれらの交点等の属性を示す。ひとつのコンテナは、たとえば位置とサイズとにより、上辺、下辺、左辺、右辺、水平軸、垂直軸、各角点、中心点、幅、高さが定まる。それら各要素について、可変であるか、固定されているかが属性情報により定義される。図4のユーザインターフェースによりドキュメントテンプレートを作成した場合、コンテナの辺や点や軸を選択した状態で、パレット311内に表示されるメニュー「固定する」「可変とする」などから、オペレータが所望の項目を選択することで、選択された点や辺に対応して、コンテナ情報2303に「固定」「可変」いずれかの属性が書き込まれる。コンテナ作成直後の既定値はたとえばすべて「可変」としておく。なおこの例では、ひとつの辺や軸について「固定」であるとは、辺や軸の長さや長手方向の位置ではなく、長手方向に直交する方向についての位置が固定されていることを意味している。また、点や辺の属性を設定することで、自動的にその他の点や辺の属性が定まる場合には、その属性も書き込む。たとえば角点を「固定」と指定した場合、それを挟む辺も「固定」とされる。これは逆も同様である。またたとえば、中心点の位置を「固定」と指定すると、中心点の属性に「固定」と書き込まれると共に、水平軸及び垂直軸の属性も「固定」と書き込まれる。この場合、幅や高さは可変のままであれば、幅および高さの属性は「可変」のまま維持される。
関連づけられるコンテンツに関する情報(コンテンツ関連情報)には、たとえば、それがテキストコンテナであるかイメージコンテナであるかの種別を示す情報や、そのコンテナに挿入されるデータソースの識別子、たとえばデータベース名、レコード名、フィールド名等の一部又は全部、コンテンツを抽出するための条件式などの関連付け情報が含まれる。また、テキストコンテナの場合には、フォントに関する情報、たとえばフォント種類やサイズ、色、斜体や太字、下線等の文字修飾情報等もコンテンツ関連情報に含まれる。コンテナ情報2303は、ドキュメントテンプレートに設けられたコンテナの数だけ保持される。
(3)リンク情報2304:リンクとはコンテナ間の関連付けるオブジェクトでありコンテナ制約のひとつである。リンク情報は特に、リンクで結ばれた2つのコンテナ間の距離を一定(固定リンク)や可変範囲(可変リンク)とする旨の情報である。リンク情報としては、たとえば、水平方向及び垂直方向それぞれについて、2つのコンテナの識別子、およびそれらコンテナの対向する辺の間にリンクが設定されたことを示す情報や、リンクに沿った方向についてのコンテナ間の距離などを含む。リンク情報は定義されたリンク毎に保持される。リンク情報の形態としては、水平方向及び垂直方向それぞれについて、各コンテナの辺の位置を保持し、その辺の間にリンクが設定された旨を示す情報を保持してもよい。
(4)固定情報2305:可変部分以外の固定部分を定義するための情報が含まれる。たとえば、当該テンプレートが適用されて生成される全ドキュメント(全レコード)に共通の文や画像等が定義できる。文や画像については、そのデータそのものを含まずに、位置情報を定義するだけでも良い。もちろん、テンプレート上において配置される位置を定義するための情報も含む。
図24には、マルチレコード機能のために用いられるテンプレートデータ131'の一例を示す。このデータももちろんメモリ等に保存されている。図24では、ドキュメントテンプレート中にフローエリアという、他のテンプレートをサブテンプレートとして流し込める領域が定義される。1つのフローエリアには、マルチレコードに対応した数のサブテンプレートが流し込まれることになる。図24においては、テンプレートデータ131'には、フローエリア情報2401が含まれる。フローエリア情報は、テンプレートに含まれるフローエリアの数だけテンプレートデータに保持されている。フローエリア情報2401には、以下の要素が含まれる。
(5)全体の位置やサイズ、フロータイプ等を示すフローエリアの属性情報2402:位置やサイズは図23で説明した通りである。フロータイプは、フローエリアにサブテンプレートを流し込むパターンを定義する符号である。フローエリアに流し込むサブテンプレートの数はマルチレコードのキーカラムにより決定され、可変であるため、フローエリアに流し込むサブテンプレート数により、フローエリア内のサブテンプレートのレイアウトを定義する情報がフロータイプである。
(6)サブテンプレート情報2403:サブテンプレート情報2403には、サブテンプレートに配置されるコンテンツと、そのサブテンプレートにしたがってレイアウトされたコンテンツ(これを本明細書ではレイアウト済みコンテンツと呼ぶことにする。)が流し込まれるフローエリアとの対応付けを示す配置情報が含まれる。サブテンプレート情報2403は、たとえば、フローエリアに挿入されるテンプレートを識別するための情報である。その情報には、たとえばテンプレートデータのファイル(テンプレートファイル)の名称などを含む。また、レイアウト済みコンテンツを配置するための配置条件や、どのような順序でレイアウト済みコンテンツを挿入するかを指定するフロータイプも含まれていてもよい。配置条件としては、サブテンプレートによるレイアウト対象となるデータベースの検索条件(検索式)などが保持される。また、フロータイプとしては、Z型、N型、V型など、予め用意した選択肢の内から指定させ、指定されたフロータイプを示す識別子が保持される。あるいは、データベースのレコードに配置情報フィールドを設け、その値と一致する配置条件の値に対応するフローエリアに、そのレイアウト済みコンテンツを挿入するなどしても良い。
さらに本実施形態に特徴的な情報として、フローエリアに挿入されるサブテンプレートを特定するための条件情報2403aが含まれる。たとえば、サブテンプレートに関連づけられたデータベースのレコードのうちの特定のフィールドの値に応じて相異なるサブテンプレートを対応させる条件情報2403aを、サブテンプレート情報として持つことができる。これにより、当該フィールドの値に応じたサブテンプレートがそのレコードのために使用される。
(7)マルチレコード情報2404:フローエリアに関連づけられるデータベース名および各レコードにおけるフィールド名等の識別子が含まれる。指定されたフィールド名について同一の値を有するレコードが指定されたデータベースからフェッチ(読み込まれ)されて、ひとつのフローエリアにレイアウトされる。対象となるレコードがフローエリアのサイズに比して相当多い場合もあり得る。そのような場合にはフローエリアは複数のページにわたるよう拡張されて、それらレコードがレイアウトされる。
<リンクの設定方法>
図6はリンクの設定方法のUI例を示している。まず、リンクを設定するためには、リンクを設定するためのコンテナ(最低2つ)を作成する。2つのコンテナを作成してリンクを設定する場合の例を示している。次に、前述したリンクツールを選択した状態にする。図6では、コンテナを作成し、リンクツールが選択されていた状態から、リンクを設定する動作を示している。図6(A)−(C)を順に説明していく。
図6(A)の0601と0602は、前述した図3の407と408と同じであり、固定されている辺を意味する。0603はマウスポインタを意味している。まず、リンクを設定する片方のコンテナをクリックして選択する。次に図6(B)で示されるように、もう片方のコンテナまでマウスポインタを移動して、クリックする。図6(B)の0604は、図6(A)でクリックをした位置と移動したマウスポインタを結んだ線を示しており、どの位置にリンクが設定されるのかをユーザに示すUIである。図6(B)で2度目のクリックが終わった後、設定した場所に0605で示されるリンクUIが表示され、コンテナは図6(C)の状態になる。0606は、点線で示されている辺であり、前述した通り可変の辺を示している。このようなデザインでは、左のコンテナ0601は右方向に可変のサイズをとれる。また右のコンテナ0602は左方向に可変のサイズをとれる。そのあいだをリンクで接続したことにより、左右のコンテナはその間の距離を保ったまま、相互にサイズを可変に調整するように動作する。
この処理を図23のデータ処理の観点から説明すると以下のようになる。たとえば、コンテナを作成することにより、コンテナ情報3303が定義される。そして、レイアウト編集アプリケーション121は、選択された2つのコンテナ間にリンクが設定された旨を、リンク情報として記憶する。そしてリンクが設定された2つのコンテナの対向する辺の属性を必要に応じて変更する。たとえば、対向する辺の少なくとも一方が可変であれば、辺の属性を変更する必要はない。しかし、双方が固定であれば、リンクを設定する意義が失われるために、少なくとも一方を可変とする。図6の例では、両方を可変に変更している。もちろん、辺の属性が変更された場合には、レイアウト編集アプリケーション121は、変更された属性についてコンテナ情報3303に含まれる属性が変更された辺についてその属性情報を書き換える。
なお、上記記載では「対向する」との表現を用いているが、線どうしが見かけ上対向する場合のほか、線自体は対向していなくとも(すなわち2つの線の長手方向の投影が重複しなくとも)、線の延長線が対向する関係にあれば、その延長線の間でリンクを設定することができる。本明細書ではこのように延長線が対向する場合も含めて、リンクで関連づけられたコンテナに関しては、辺が「対向する」と表現することにする。すなわち、たとえばテンプレートの対角に沿って配置された小コンテナ間にもリンクを設定できる。
以上のように、リンクで関連づけられたコンテナの対向する辺の一方が可変で他方が固定であれば、コンテンツサイズに応じて可変の辺は移動する可能性がある。そして、その可変の辺の移動量に応じて、固定辺の側のコンテナは、コンテナ自体が平行移動する(アンカーがない場合)。リンクで定義されたコンテナ間の距離(リンクに沿った方向についての距離)は維持される。双方の辺が可変であれば、コンテンツのサイズに応じて量コンテナのサイズが可変となるが、コンテナ間の距離はこの場合も維持される。
<プレビューモード(レイアウト計算)>
図7(A)はプレビューモードにおけるレイアウト計算のフローを示している。レイアウト計算は、ドキュメントテンプレートのコンテナに実データが挿入された場合に、コンテンツのデータサイズ等に応じてコンテナサイズやコンテナ配置を再計算する処理である。図7(A)では、プレビューモードが指定された場合を例としているために、テンプレートにコンテンツを挿入して生成されたドキュメントは、ディスプレイ144に表示される。しかし、印刷モードが指定された場合には、プレビュー表示に変えて、ドキュメントは印刷出力される。なお、本願におけるフローチャートの各処理は情報処理装置(ホストコンピュータ)内のプロセッサ135によって実行されることとなる。
図7において、まずレイアウト編集アプリケーション121は、プレビューモードが選択されたことを認識する(ステップ0701)。本実施形態の自動レイアウトシステムによる動作モードには、コンテナを作成してそのコンテナ間に関連付けを行い、レイアウトを定義したドキュメントテンプレートを作成するレイアウト設定モードと、作成したレイアウト(テンプレート)にレコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードとが含まれる。
このプレビューモードにおいて、実際のレコードが挿入されてレイアウトが計算される。プレビューモードは表示上でのレイアウト計算である。実際に印刷する場合においてもレコードを挿入してレイアウトを計算するが、その際の計算方法もプレビューモードと同じである。
プレビューモードになったら、レイアウト編集アプリケーション121は、プレビューするレコードが選択されたことを認識する(ステップ0702)。レコードの選択はオペレータに指定されたレコードを選択するものとしても良いし、指定されたデータベースから順次レコードを選択しても良い。レコードの選択が行われると、レイアウト編集アプリケーション121は、そのレコードをテンプレートに従ってレイアウトするために計算を行い(ステップ0703)、フローエリアがテンプレートに含まれていれば、フローエリアについてサブテンプレートに従ってデータを配置する(ステップS0704)。レイアウト編集アプリケーション121は、ステップ0703,S0704の計算結果に従ってレコードをレイアウトし、それを表示し(ステップ0705)、他のレコードについてもプレビューを行うかどうかを判断する(ステップ0706)。この判断はオペレータの指示に基づいても良いし、予め指定された範囲についてのプレビューが終了したか判断するものでもよい。ステップ0706で、レイアウト編集アプリケーション121は、他のレコードについてプレビューを行う必要がないと判断した場合は、プレビューモードを終了する(ステップ0707)。
一方、他のレコードについてプレビューを行うのであれば、レイアウト編集アプリケーション121は、他のレコードを選択して再度レイアウト計算を行い、レコードをレイアウトしてそのプレビューを行う(ステップ0708)。プレビューモードでなく印刷時においては、印刷対象のレコード全てについて順にレイアウトの計算を行う。したがって、ステップ0701、0707は存在しない。またステップ0706では、印刷対象の全てのレコードについて印刷が終了したか否かが判断される。
(レイアウト計算手順)
図7(B)は、図7(A)のステップ0703におけるレイアウト計算の詳細を示したフロー図である。また、図8はそのときのUI表示例を示した図である。なお図7(B)に限らず、本実施形態で説明するフローチャートは、図1A、図1Bあるいは図2のコンピュータにより実行される。
まず、レイアウト編集アプリケーション121は、レイアウトを計算するコンテナの集合を求める(ステップ0710)。レイアウト計算は、リンクにより関連付けられたコンテナを一つの集合として行われる。例えば図32を参照すると、ページ上に4つのコンテナがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナAとコンテナB、そしてコンテナCとコンテナDがリンクによって関連付けされている。したがって、コンテナAおよびコンテナBが集合1、コンテナCおよびコンテナDが集合2となる。すなわち、図23に示すテンプレートデータのリンク情報2304を参照し、リンクにより関連づけられたコンテナ群を、ひとつのコンテナ集合と判定できる。
次に、ステップ0710で求めたコンテナの集合から、レイアウト編集アプリケーション121は、レイアウトを計算するために一つコンテナの集合を選択する(ステップ0711)。これは、たとえばテンプレートデータのリンク情報中における出現順などに従えばよい。そして、レイアウト編集アプリケーション121は、選択したコンテナの集合について、レイアウトの計算を行う。ここでは、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う(ステップ0712)。
レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとそのコンテンツが挿入されるコンテナサイズとができるだけ同じサイズとなるように行われる。コンテナサイズが固定されている場合には、コンテンツの方が変倍されてコンテナに収められるか、あるいはコンテンツの一部がコンテナに収められる。コンテナ集合に3つ以上のコンテナが含まれる場合にも、各コンテンツのサイズに応じたコンテナサイズ(すなわち各可変の辺の長さ)を計算し、その中点からリンク情報で定義される距離の位置を、辺の位置として決定する。リンクされた辺が固定辺であるコンテナについては、その位置を、関連づけられたコンテナの辺の移動に応じて移動させる。
以上のようにして、リンクで関連づけられたコンテナを1組として、サイズが可変のコンテナについてはそのサイズを、位置が可変のコンテナについてはその位置を決定する。
上記要領でレイアウの最適化計算を行い、その計算結果がルールに違反していた場合、レイアウト編集アプリケーション121は、再度ルールを違反しないように計算をする(ステップ0713)。ここでルールとは、テンプレート作成時にユーザによって設定される制限であり、コンテナのサイズと位置、リンクの長さなどである。制限は、テンプレートデータ内のコンテナ情報に含まれる辺や点等の属性情報とリンク情報とにより定義されている。特、属性情報において「固定」の値を有する項目とリンク情報がレイアウト上の制限となる。そこで、ステップ0712のレイアウト計算を終了した後、「固定」という属性を持つ計算後の各コンテナの辺や点の位置、サイズ等の項目について、テンプレートデータ中のコンテナ情報と比較し、値が相違している項目があれば制約違反と判定される。また、リンクについても、リンク情報に含まれるリンク長さ(コンテナ間の距離)と、ステップ0712のレイアウト計算終了後のリンクが設定されたコンテナ間の距離とが相違していれば、制約違反と判定される。
ルールに違反しないようにレイアウトが計算されたら、そのコンテナ集合のレイアウトは完成される。そして、レイアウト編集アプリケーション121は、ステップ0711〜ステップ0713のステップをページ上のすべてのコンテナの集合について施し、ページ全体のレイアウトを計算する(ステップ0714)。
なお、テンプレートデータにフローエリア情報が含まれている場合には、ステップ704で、レイアウト計算においてフローエリア内のサブテンプレートのレイアウトを行う必要がある。この処理は、後述する図10,図14,図16A,16B等で説明する。これらの図はプレビューモードではなくテンプレート作成モードの処理であるが、テンプレート作成モードにおいてもそのプレビュー表示を行っており、プレビュー表示の処理については同様だからである。
図8(A)〜(C)はレイアウト計算時のUI例である。図8(A)は、あるレコードが挿入されレイアウトが決定されている状態を表している。0801と0802は固定された辺、0803は可変の辺、0804と0805は可変の辺の変化方向を示している矢印、0806はリンクをそれぞれ示している。この状態において、レコードを変更し、異なったサイズのコンテンツを挿入する。図8(B)は図8(A)の状態に新しいコンテンツのサイズを重ねて示している。0807はそれぞれのコンテナに挿入されるコンテンツのサイズを表している。そして、レイアウト計算が行われる。図8(C)はレイアウト計算された結果を示している。計算後の各コンテナのサイズは、実際挿入されるコンテンツのサイズと同等に差異があるように計算され、且つ前述したルールを違反しないように計算される。図8(C)で示されるように、図8(B)で示した挿入されるコンテンツサイズ0807と計算後のコンテンツサイズ0808は、双方において同等な差異がある。
しかし、単純に同等の差異をもってコンテナサイズを変更するだけでは、図8のような横方向のみのレイアウト計算の場合は問題ないが、図33のように縦方向および横方向を考慮したレイアウト計算を行わなければならない場合、対応できなくなる可能性がある。横方向と縦方向の2次元的なレイアウトを扱う図33の場合、図7(B)のレイアウト計算方法を用いて、まず横方向に調整を行い、後に縦方向に調整を行う。すなわち、コンテナ3301と3302の間で、上述した手順で設定値Dに収まるようレイアウト調整を行い、その後、コンテナ3302と3303の間で設定Gに収まるようレイアウト調整を行えばよい。しかし、横方向に調整を行い、後に縦方向に調整を行うという調整方法では、ユーザが所望とする基本レイアウトからずれたレイアウト結果になることが想定される。
そのため、各コンテナについて、基本パターン(縦横比)からなるべくずれないように、基本パターンの幅とレイアウト調整後の幅の差の2乗と、基本パターンの高さとレイアウト調整後の高さの差の2乗との和を求め、これをすべてのコンテナについて算出する。そして、レイアウト編集アプリケーション121は、各コンテナの2乗の和の合計値が最小となるように、それぞれのコンテナの幅と高さを算出してレイアウト調整を行っても良い。
この最小2乗法を用いてレイアウト調整を行うことにより、ユーザが当初設定した基本レイアウトから大きく外れることがなく、全体としてバランスのとれた最終レイアウトを決定することができる。なお、コンテナ間には後述する可変リンクが設定されているため、流し込まれるコンテンツデータのサイズに応じて後述するようにリンクサイズは変更する。本願記載のレイアウト編集アプリケーションはこのようなレイアウト調整ユニットを備えることにより、割り当てられたデータサイズに応じて複数の部分表示領域(コンテナ)の配置位置を調整することが可能となる。
<マルチレコード(マルチデータ)機能>
マルチレコードについて概要を説明する。通常のドキュメントテンプレートでは、1レコードが1ドキュメントに対応しているが、サブテンプレートに対応するマルチレコードは、基準となる項目が変化するブレイク(区切り)が発生するまでのレコードが流し込まれるものであるため、1ドキュメント内に複数のレコードが入ることになる。よって、通常のドキュメントテンプレートに対応するバリアブルデータのデータベースと、サブテンプレートに対応するバリアブルデータのマルチレコードのデータベースとは異なるデータベースとすることが望ましい。
図9は、マルチレコードとそのレイアウト方法の概要の一例を示した図である。0901はドキュメント、0902はページ、0903はサブテンプレート、0904はデータベースを示している。0904で示すデータベースを見てみると、No1〜7のデータが表示されている。1レコード1ドキュメントのバリアブルプリントでは、7つレコードがあるので、この場合7ドキュメントが作成される。しかし、多レコード1ドキュメントのマルチレコードをサポートするバリアブルプリントでは、次のような処理を行う。まずマルチレコードを指定するカラムをユーザが任意に指定する。指定はたとえばテンプレート作成時になされる。この指定されたフィールドを特定するための情報は、図24のマルチレコード情報2404の一部として保存される。この例ではフィールド名:Nameが指定されたものとする。すると、その指定されたフィールドの値が同じレコードは、1ドキュメントにレイアウトされるレコードであると判定されて、これも別途指定されたサブテンプレート(図24のサブテンプレート情報に保存される。)を用いてレイアウトされ、1つのフローエリアに流しこまれる。図9の例では、No1〜4のレコードはフィールドNameの値が「Tom」であるため、ひとつのフローエリアに流しこまれ、ひとつのドキュメント上にレイアウトされる。No5〜7のレコードは、フィールドNameの値が「Nancy」であるため、「Tom」と同じテンプレートを用いて、しかし異なるドキュメント上にレイアウトされる。すなわち、いったん「Tom」のドキュメントを完結させ、「Nancy」のドキュメントを作成する。このように指定カラムのデータが変更されることに応じて、新しいドキュメントが作成されることとなる。
具体的には、たとえばテンプレートデータにおける設定に従って「Tom」のドキュメントにフッタ等を付加(不図示)してから改ページする。これにより「Tom」のドキュメントは完結する。次にそれまでと同じテンプレートデータを用いて、「Nancy」のドキュメントのヘッダ等を新たなページに付加する(不図示)。そしてテンプレートに定義されたフローエリアに、これもサブテンプレート情報として設定されたサブテンプレートを用いて、NAMEフィールドの値が「Tom」のレコードについてレイアウトしてフローエリアに流しこむ。これが通常のマルチレコードである。
ただし本実施形態では、NancyとTomとでは、同じテンプレートデータを用いるが、個々のレコードについて同じサブテンプレートを用いるとは限らない。別途指定した条件に応じたサブテンプレートを用いることができるためである。
<テンプレート作成モード処理の全体フロー>
図10、11は本発明に係るレイアウト編集システムによるテンプレート作成モードの処理フローとその説明UIを示している。図10のフローの各ステップを図11のUI図と合わせながら説明していく。レイアウト編集アプリケーション121が実行され、新たなテンプレートの作成の指示をユーザが入力することで、図11の画面(ただし矩形1104,1106,1105は除く。)が表示される。図10の手順は、その状態からユーザの指示に応じて遂行されるレイアウト編集アプリケーションの手順である。
まず、レイアウト編集アプリケーション121が、図11のアイコン1103が押下されたことを認識することにより、フローエリア作成モードへと遷移し(S1001)、ページマージンのエリア1102において、ユーザのマウスのドラッグによる矩形をフローエリアとして描画する(S1002)。レイアウト編集アプリケーション121は、描画された矩形の位置およびサイズを、フローエリア1106の位置及びサイズとしてテンプレートデータの一部としてメモリユニット136に保存する(S1003)。コンテナ1104や1105は、フローエリア1106外に定義されるテキストコンテナやイメージコンテナである。これらのコンテナは、フローエリア内にコンテンツを流しこむ処理とは関係がないが、たとえばヘッダ、フッタとして設けておくことができる。これらコンテナもまた、入力されたその位置及びサイズがテンプレートデータの一部としてメモリユニット136に保存される。フローエリア1106は、それらのコンテナとは色や線種などの矩形UIを異ならせることにより、ユーザに視覚的に認識しやすいようにする。
次に、レイアウト編集アプリケーション121は、作成されたフローエリアにマルチレコードフィールドを関連づける(S1004)。これは、たとえばフローエリアに関連づけられるデータベース名および各レコードにおけるフィールド名等の識別子を入力する処理である。操作上は、たとえばフローエリアをクリックするなどして対象のフローエリアを特定し、そこで一定の操作の流れに従ってこれら必要な情報を入力させる。その情報が図24に示すテンプレートデータのマルチレコード情報としてメモリユニット136に保存される。これはステップS1006,S1007のプロパティと同時に入力することもできる。
次に、レイアウト編集アプリケーション121は、作成されたフローエリアに各種設定を施すかどうかを判断する(S1005)。プロパティを設定するのであれば、レイアウト編集アプリケーション121が、フローエリアでマウスポインタをクリックされたことを認識することなどにより、プロパティダイアログを表示する(S1006)。そして、レイアウト編集アプリケーションは、表示されたプロパティダイアログを用いて設定された内容を認識して、設定する(S1007)。プロパティダイアログおよび設定方法については、後で詳細に記述する。なお、設定された各種情報はメモリユニット136に保持されることとなる。フローエリアの作成および設定が終了したら、レイアウト編集アプリケーション121は、レイアウトをプレビューするかどうかを確認し(S1008)、プレビューするのであれば、プレビューモードへ遷移して、レイアウト計算を行う(S1009)。このレイアウト計算は図7Bで示したフローと同じ処理を行う。
次に、レイアウト編集アプリケーション121は、設定されているフローエリアのレイアウト計算を行う(S1010)。この処理については後で図17を参照して詳細に記述する。最後にレイアウト結果を表示する(S1011)。ステップS1009,S1010,S1011は、図7AのステップS0703,S0704,S0705に相当する。
(フローエリアのプロパティ設定)
図12はフローエリアの各種設定(プロパティ設定)を行う設定ダイアログの例を示している。これが、図10のフローチャート中のステップ1006で表示され、その内容をS1007にて反映させるダイアログのUI例となる。なお、文中のサブテンプレートおよび条件式についてはフローチャートの後で説明する。
まず、ユーザがラジオボタン1202によってまずフローエリアに関連付けるものがサブテンプレートであるか、それとも条件式であるかを選択する。その後、サブテンプレートの関連づけが選択されている場合には、リストボックス1203からフローエリアで使用するサブテンプレートをユーザが指定する。あるいは条件式の関連づけが選択されている場合には、リストボックス1204からフローエリアで使用する条件式をユーザが指定する。サブテンプレートおよび条件式は、編集中のドキュメントテンプレート内に、あるいはテンプレート外であっても所定の場所に、それぞれの特有なUI手段によって別途作成できる。また、条件式は後述する図15のUIにより作成することができる。しかし他の手法としては別のファイルに保存され、この設定ダイアログからはファイルを指定することによって選択指定できるものとしてもかまわない。本実施形態では、ドキュメントテンプレート内のフローエリアに対してそれぞれ複数のサブテンプレートおよび条件式を作成できるが、リストボックスから選択するという特性上からも、それぞれが固有の名前を持ち識別できるように設計されるべきである。その他に、本設定ダイアログからは、サブテンプレートをフローエリアに流しこむ際のフローの方向(すなわちコンテンツを並べる方向)を選択欄1205から選択する。コンテンツの間隔は、縦は設定欄1206、横は設定欄1207で設定することが可能である。
以上の設定を確定するには、OKボタン1208を押下する。OKボタンが押されると、そのときの設定が図24のフローエリア情報2401としてメモリユニット136に保存される。たとえば、着目フローエリアがサブテンプレートと関連づけられたのかそれとも条件式と関連づけられたかを示すフラグ情報、そのフラグ情報に応じてサブテンプレート名あるいは条件式名(条件式ファイルの名称)、フロー方向、間隔という情報が、サブテンプレート情報2403および属性情報2402として保存される。また、キャンセルボタン1209を押下すると指定された各種設定はすべてキャンセルされ、保存されない。
(サブテンプレートのレイアウト例)
前述したサブテンプレートについて、概要を説明する。図13はサブテンプレートのレイアウト例(つまりサブテンプレートを用いてデータをレイアウトした例という意味。以下同じ。)を示している。サブテンプレートは、イメージコンテナ、テキストコンテナを任意数配置して、そのコンテナにレコードのどのデータ(フィールド)を割り当てるかを設定した状態で、テンプレートとして保存してあるデータを指す。同じレイアウトを一つのドキュメントで数多く使う場合に便利である。サブテンプレート内に配置されるコンテナは、前記イメージコンテナ、テキストコンテナと同様であり、各コンテナ間にはリンクを設定することも可能である。したがって、サブテンプレート内に配置されたコンテナに対して、図7Bに記載のレイアウト計算方法を適用することにより、レイアウトサイズを最適に変化させることが可能である。
図13はサブテンプレートのレイアウト例を示している。1302と1305はイメージコンテナ、1303と1306はテキストコンテナ、1307はリンクを示している。
図13では、サブテンプレート1301と1302に配置された各コンテナに流し込まれるイメージ、テキストのコンテンツサイズが異なるため、レコードごとにそれぞれ最適なレイアウトを計算してレイアウトを変更している。そのため、同じサブテンプレートを用いているにもかかわらず、サブテンプレート1301と1302ではコンテナ(部分表示領域)の位置およびサイズが異なるレイアウトとなる。なお、サブテンプレート内におけるレイアウト方法は上述した図7(B)の処理を用いて、レイアウト調整を行うこととする。
(サブテンプレート条件式)
サブテンプレート条件式は、ひとつのフローエリアに対して複数種類のサブテンプレートを選択的に割り当てることができる。なお、条件式はデータベースから条件に一致するコンテンツを抽出するための式でもあるため、本願では抽出条件ともいい、該条件式(抽出条件)が設定されたフローエリアを有するテンプレートが作成されることとなる。また、フローエリアには、サブテンプレートあるいは条件式のいずれかひとつを関連付けることができる。もし、フローエリアに対してサブテンプレートを関連付けた場合、取得されたレコードは関連付けられたサブテンプレート内に流し込まれることとなる。なお、サブテンプレートを関連付ける際に条件式を設定し、該条件式に適合するレコードのみをフローエリアに関連付けられたサブテンプレートに流し込むようにしても構わない。
また、条件式には条件適合時に適用されるサブテンプレートの識別情報を含む。図15は条件式を設定するUI例であり、フローエリアに設定された条件式に適合するレコードが、該条件式と関連付けられているサブテンプレートと関連付けられて、コンテナに流し込まれることとなる。そして、レコードが流し込まれたサブテンプレートがフローエリアに配置されることとなる。
この入力領域は、条件式に名前を付けるテキストボックス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(で終わる)」などさまざまな条件が用意される。
さらに、複雑な条件式を設定するためには、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処理文にはサブテンプレート名が入力(選択)される。このように、条件式を通して、さまざまな値を取るレコードのそれぞれに、条件に合ったサブテンプレートを自動的に選択することができ、ひとつの条件式においてさまざまなレイアウトを実現することが可能になる。この条件式をフローエリアに関連付けることによって、ひとつのフローエリアにおいて、さまざまなレイアウトを持った複数種類のサブテンプレートをフローエリア内に配置することが可能になる。
ユーザは条件を入力すると、最後にOKボタン1514を押す。OKボタン1514の押下により、UIで設定されたサブテンプレート条件を示す情報が、サブテンプレート情報2403の一部としてメモリユニット136に保存される。このサブテンプレート条件式は、たとえば、図15のUIに記述された(選択された)テキストをそのまま保存したテキストファイルなど、条件と条件が満たされた場合のサブテンプレートを特定できる情報であれば良い。図15の例では、「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」をサブテンプレート条件式の示す情報として保存する。このまま保存しても、簡単な文法で記述されており、しかも図15のようなUIから入力されるので文法的な誤りなどが発生する余地がない。そのために、簡単なプログラムでその条件の記述をパースして適合するサブテンプレートを決定することができる。
このように条件式にはデータベースからレイアウトするためのコンテンツデータを抽出するための条件と、該条件に該当した場合に使用するサブテンプレートを関連付けて保持している。よって、抽出されたコンテンツデータは、どのサブテンプレートに配置すべきかが関連付け情報としてメモリユニット136に保持される。また、上述したように複数の条件式を設定することが可能であるため、抽出されたコンテンツデータの各々は、それぞれ関連付けられたサブテンプレートがあるため、各コンテンツデータが配置された複数種類のサブテンプレートがフローエリアにレイアウトされることとなる。
<フローエリアのレイアウト方法>
図17は、レイアウト編集アプリケーションプログラム121による、フローエリア内のレイアウト計算のフローを示している。図17の手順は、図10のステップS1010や、図7AのステップS0704で実行される。なおここでは、フローエリアが一つ設定されているときの説明をする。複数のフローエリアが設定されているテンプレートに関しては、S1701〜S1715の手順をフローエリア毎に繰り返せばよい。
まず、レイアウト編集アプリケーションプログラム121は、レイアウトするためのデータを、フローエリアに関連付けられているデータベースから取得し(S1701)、レイアウトするレコードの数をnに代入する(S1702)。詳細にはレイアウト編集アプリケーションを構成するモジュールの1つであるユーザインタフェースがレイアウトするためのレコードを含むデータベースと通信することにより、取得すべきレコード数を認識することができる。
レイアウトするレコードの数が0であった場合には、レイアウトの処理は行う必要がないので、処理を行わず終了する(1703)。次に、レイアウト編集アプリケーション121は、1つめのレコードからチェックをするためにレコードのチェック用の変数kに1を代入する(S1704)。また、レイアウトされるサブテンプレートの数を代入する変数Numに0を代入する(S1705)。そして、レイアウト編集アプリケーション121は、k番目のレコードのデータをデータベースから読み出す(S1706)。なお、読み出されたレコードのコンテンツデータは一時的にメモリユニット136に保持される。
次にレイアウト編集アプリケーション121は、着目フローエリアに関するフローエリア情報2401を参照して、サブテンプレートが関連付けられているか、それとも条件式が関連付けられているかを判定する(S1707)。条件式が関連付けられている場合、レイアウト編集アプリケーション121は、後述する図16Aのフローチャートに基づき、k番目のレコードをサブテンプレートに従ってレイアウトする(S1708)。図16Aの手順では、フローエリアにサブテンプレートが関連付けられている場合はそのサブテンプレート情報を読み出し、条件式が関連付けられている場合はステップ1708で条件式を評価し、その結果得られたサブテンプレートを読み出して、k番目のレコードついて、読み出したサブテンプレートに従ってレイアウトを行う。一方、フローエリアに条件式が関連づけられていないと判定された場合には、図14のフローチャートに基づき、そのフローエリアに関連づけられたサブテンプレートに従ってk番目のレコードをレイアウトする(S1709)。ステップS1708、S1709でサブテンプレートに従ってレイアウトされたデータはフローエリアに流しこまれるまでメモリユニット136に保存される。保存されるのは、レイアウト計算の結果得られた、コンテンツを流しこんだ後の各コンテナの相対的な位置関係とサイズおよびコンテナの内容である。たとえば、サブテンプレート上で適当な座標原点を決め、その座標系で各コンテナの位置とサイズとが示されたコンテナの位置及びサイズ情報が保存される。あわせて、コンテナ内に収めるためにコンテンツについても、同じ座標系で位置とその位置に配置されるデータを示す情報とが保存される。これらをレイアウト済みサブテンプレート情報と呼ぶことにする。
サブテンプレートのレイアウトが終了したら、レイアウト編集アプリケーション121は、変数Numを1増やし(S1710)、次のデータに処理を進めるため、変数kを1増やす(S1711)。そして、レイアウト編集アプリケーション121は、レコードするデータ数nとkを比較する(S1712)。もし、kがn未満であるなら、ステップS1706へ進み、そのk番目のデータについて、処理を繰り返す。kがn以上であるなら、サブテンプレートのレイアウトは終了し、フローエリアにレイアウトされたサブテンプレートをレイアウトする処理へと進む。
フローエリアにサブテンプレートをレイアウトするために、レイアウト編集アプリケーション121は、フローエリア情報2401からフローエリアのサイズを取得し(S1713)、レイアウトするサブテンプレートのサイズを取得する(S1714)。詳細には後述する図16のフローチャートによりコンテンツデータを配置すべきサブテンプレートが特定され、さらにサブテンプレート内におけるレイアウトの最適化処理の実行結果がメモリユニット136に保持されているため、レイアウトするサブテンプレートのサイズを取得することが可能となる。なお、本実施形態では、サブテンプレートの外枠のサイズは、サブテンプレート内のコンテナのサイズによって決定する。すなわち、サブテンプレート内での自由なレイアウト処理によって、サブテンプレートのレイアウト後の大きさは、レコードの内容に依存して変化する。そして、サブテンプレートに流し込まれたレコードによるレイアウト結果は上述した通りメモリユニット136に保持されているため、レイアウト編集アプリケーション121は、レイアウトすべきサブテンプレートのサイズを取得することが可能となる。なお、ユーザによってはサブテンプレートの外枠サイズは一定であることを望む場合も考えられるため、所定の処理によりサブテンプレートの外枠サイズを固定にするか可変にするか切り替えられるようにしても構わない。
レイアウト編集アプリケーションは、フローエリア情報2401に設定されているフロー方向とフロー間隔を適用しながらコンテンツデータがレイアウトされたレイアウト済みのサブテンプレートをフローエリア内に配置する(S1715)。なお、フロー方向とはサブテンプレートの配置方法であり、フロー間隔とはサブテンプレート間の間隔を指す。ここで、フローエリアに配置されるのは、ステップS1708及びステップS1709で保存されたレイアウト済みサブテンプレート情報である。すなわち、具体的には、ステップS1715では、レイアウト済みサブテンプレート内の相対的な座標系で定義されたコンテナの位置及びサイズと、コンテンツの位置及び内容とを、フローエリアの座標系に変換する。このとき、フローエリアに納まらないレイアウト済みテンプレートがあれば、サブテンプレートのサイズについて縮小変換を行う必要がある。なお、サブテンプレートの縮小変換を行いたくない場合は、後述するページ繰り返し機能により対応することも可能である。
(サブテンプレートのレイアウト(条件式なし))
ステップS1709におけるサブテンプレートこのレイアウト処理のフローは図14に示す通りである。図14において、まずレイアウト編集アプリケーションは、データベースからレイアウトするためのデータを取得し、(S1401)。サブテンプレート内の各コンテナにレイアウトするコンテンツデータのサイズを取得する(S1402)。詳細には、上述したようにレイアウト編集アプリケーション121を構成するモジュールの1つであうユーザインタフェースがデータベースとの関連付け処理を行うことにより、データベースのデータを参照することが可能となり、その際に該データを解釈することによりサイズ等を取得できる。なお、ステップS1401とS1402は同時でも良い。S1402の処理は、レイアウト編集アプリケーション121が、S1401により取得したデータの情報を解析することによりコンテンツデータのサイズを取得することが可能となる。なお、取得されたコンテンツデータのサイズはメモリユニット136に保持されることとなる。
レイアウト編集アプリケーションは、S1402により取得したデータサイズに基づいて、各コンテナについてレイアウト計算を行い(S1403)、レイアウトを最適化する(S1404)。最適化の方法は前述した通り図7Aの処理を用いて実行される。
レイアウト編集アプリケーション121は、S1404により最適化されたレイアウトを決定し(S1405)、レイアウトするデータを流し込み(S1406)、表示する(S1407)。なお、S1405により決定されたレイアウトは一時的にメモリユニットに保持されることとなる。また、S1407の表示はドキュメントが完成したときにまとめて行うのであれば、ステップS1407は不要である。
(サブテンプレートのレイアウト(条件式あり))
図16(A)、図16(B)は、図17のステップS1708において、フローエリアに条件式が設定されている場合に、データベースレコードから条件判定を行い、レコードを挿入するためのサブテンプレートを選択する処理のフローチャートである。
図16(A)においては、レイアウト編集アプリケーション121はまず、データベースからレイアウトするためのデータを取得する(S1601)。
次に、レイアウト編集アプリケーション121は、データをレイアウトするサブテンプレートを決定する(S1602)。なお、現在対象としているレコードのコンテンツデータがフローエリアに設定されている条件と合致しない場合は、該対象レコードをレイアウトすることなく次のレコードを対象とする。つまり、条件式に合致するコンテンツデータを有するレコードがレイアウトの対象レコードとして取り扱われる。なお、この詳細については図16(B)で説明する。
次に、レイアウト編集アプリケーション121は、各コンテナにレイアウトするデータのサイズを渡す(S1603)。詳細には、レイアウト編集アプリケーションがS1601により取得されたデータを解析することにより、レイアウトすべきデータのサイズを認識でき、該データのサイズと各コンテナを関連付けることによりS1603の処理は実現される。
そして、レイアウト編集アプリケーション121は、S1603により渡されたデータサイズに基づいて、各コンテナにおいてレイアウト計算し(S1604)、レイアウトを最適化する(S1605)。最適化の方法は前述した通り、コンテンツデータのサイズに応じて調整されるものである。
レイアウト編集アプリケーション121は、最適化されたレイアウトを決定し(S1606)、レイアウトするデータを流し込み(S1607)、フローエリアにレイアウトして表示する(S1608)。なお、表示はドキュメントが完成したときにまとめて行うのであれば、ステップS1608は不要である。
図16(B)は、図16(A)中のサブテンプレートを決定する処理S1602の詳細を記述したフローチャートである。
レイアウト編集アプリケーション121は、着目フローエリアのフローエリア情報2401に基づいてサブテンプレート条件式ファイルを読み、条件式の最初のIF文を取り出し(S1611)、ステップS1601で受け取ったレコードからIF文の判定対象としているフィールドの値を取り出す(S1612)。なお、データベースから取得した各レコードのフィールドの値は、データベースと通信することにより取得しても構わないし、各レコードのフィールドの値をメモリユニット136に保持することにより、レイアウト編集アプリケーションがメモリユニット136を参照して、フィールドの値を取り出すようにしても構わない。
レイアウト編集アプリケーション121は、S1612により取り出した各フィールドの値がS1611により取り出した条件に合致するかどうかを判定する(S1613)。すなわち、条件式はメモリユニット136に保持されているため、レイアウト編集アプリケーション121がメモリユニットを参照することにより具体的なフィールド値で評価することが可能となり、S1613に記載の判定処理を行える。
レイアウト編集アプリケーション121が、フローエリアに設定されている条件式と判定対象として取り出したフィールドの値が合致すると判定した場合、すなわち評価の結果が真であった場合、その条件に該当するUSE処理を選択し、そこに記述されたサブテンプレート名をメモリユニット136(サブテンプレート情報2403)に保存する(S1614)。この処理により現在対象としており、条件式と合致すると判定されたレコードが有するコンテンツデータを配置するためのサブテンプレートが関連付けられて保持される。なお、この関連付けられた情報も上述の関連付け情報の1つとしてメモリユニットに保持される。
レイアウト編集アプリケーション121は、S1613により合致しないと判定した場合、別のIF文があるかどうかを判定する(S1615)。あれば同様にIF文の判定を続けるため、S1611の処理へ入る。最後にどのIF文にも合致しなかったレコードは、ELSE文のUSE処理を選択し、該当するサブテンプレート名を保存する(S1616)。
なお、図16(B)の処理では、S1616があることにより、条件に適合しないレコードもサブテンプレートに流し込まれることとなる。しかし、ELSE文に使用すべきサブテンプレートが指定されていない場合、条件に適合しないレコードはサブテンプレートに流し込まないようにしても構わない。つまり、ELSEの場合に使用すべきサブテンプレートを指定しないことにより、サブテンプレートに流し込まれるレコードをフローエリアに設定された条件式に適合するものに絞り込むことが可能となる。
以上の処理により、複数種類のサブテンプレートを使用する条件式が設定されている場合、フローエリアには複数種類のレイアウト済みサブテンプレートが配置されることとなる。さらに条件式によっては取得した全レコードをサブテンプレートに流し込むのか、または条件式に適合したレコードのみをサブテンプレートに流し込むのかを切り替えることができる。
図18(A)は、フローエリア内にサブテンプレートがレイアウトされた例を示している。図18(A)で、1801はページマージン、1802と1803は固定のコンテナ、1804はフローエリア、1805はサブテンプレートを示している。また1806は横フロー間隔であり、1807は縦フロー間隔を現している。フローエリアに4つのサブテンプレートがレイアウトされており、フローエリアの左上を起点として、前記フローエリアの設定ダイアログで設定された適切なフロー間隔を空けてそれぞれが配置されている。
フローエリアにおいて使用される各サブテンプレートは、条件式の結果得られたもので、そのサブテンプレート内の詳細なレイアウトデザインは流し込まれるレコードに含まれるコンテンツデータのサイズが異なるため、レイアウト結果もまちまちである。
図18(B)は、そのような条件式に基づいて得られたさまざまなサブテンプレートによって、フローエリア内のフローが行われている様子を示す。1804はフローエリアであり、その中に1805で表されていたサブテンプレートの詳細レイアウトが記述されている。このように、フローエリアのサイズは、いくつのサブテンプレートがレイアウトされても固定である。もしフローエリアのサイズをはみ出るようなサブテンプレートのレイアウトサイズがあった場合、フローエリアからはみ出る部分はクリッピングされて表示されない。最後に、レイアウト結果を表示して終了する(S1716)。
なお、サブテンプレートがフローエリアからはみ出ると判定された場合、フローエリアに収まるようにサブテンプレートを縮小することも考えられる。よって、サブテンプレートがフローエリアをはみ出すと判定された場合、クリッピング処理をするか、縮小処理をするかを指定するためのダイアログが表示されるようにしても構わない。また、図18の(B)には条件式より4種類のレイアウト済みのサブテンプレートが配置されている様子を表している。
以上の手順によりフローエリアに配置されるレコードの所望のフィールドの値に応じて、当該レコードの配置のために所望のサブテンプレートを指定することができる。このため、文書におけるオブジェクトのレイアウトの自由度が高くなり、より高品質の文書を作成することができる。
また、フローエリアに対して設定される条件式により、全レコードを流し込むのか条件式に適合したレコードのみを流し込むのかを設定することが可能となり、ユーザが所望とするレイアウトを簡易に作成することが可能となる。
図25に具体例を示す。図25(A)に示すフローエリアが定義されたテンプレート2502aにおいて、そのフローエリアには条件式2501が関連づけられ、サブテンプレート情報2403として保存されている。この条件式2501により、フィールドデータAが1であれば、そのレコードにはサブテンプレート2503が、フィールドデータAが2であれば、そのレコードにはサブテンプレート2504が、それ以外の場合にはそのレコードにはサブテンプレート2504が使用されることとなる。レイアウト対象のデータベースには、レコード2506,2507が含まれている。
ここで図25(B)に示すように最初にレコード2506をフェッチする。この場合、図17、図16の手順にしたがって、このレコードについてまず条件式「フィールドデータA=1」が評価され、真でないので次に「フィールドデータA=2」が評価される。結局この条件も真でないので、その場合のUSE文によりサブテンプレート2505を用いてレコード2506はレイアウトされる。これがレイアウト例2502bである。ただし、図17の手順では、サブテンプレートをフローエリアに流しこむのはすべてのレコードについてレイアウトしてからなので、図25(B)のようなプレビュー表示は行われない。
次にレコード2507がフェッチされる。この場合には条件式「フィールドデータA=1」が真であるので、その場合のUSE文によりサブテンプレート2503を用いてレコード2507はレイアウトされる。
以上より、レコード2506および2507の判定処理が終了し、流し込むべきサブテンプレートが決定されたため、実際にレコードに含まれる各コンテンツデータがサブテンプレート内の関連付けられた各コンテナにおいてレイアウト調整されることによりレイアウト2502cが得られることとなる。このように、レコード毎に相異なるサブテンプレートをユーザが設定した条件式に基づいて使用できる。
[第2実施形態]
従来、フローエリアは1ページの範囲内に限られ、1ページの範囲内にサブテンプレートを収める処理を行うことによって、はがきなど紙面の限られたドキュメントに対応したレイアウト結果を実現することを目的としていた。そのため、多数のページにわたってサブテンプレートをレイアウトすることは考慮されていない。しかし、顧客ごとにカスタマイズされたドキュメントを作るというニーズの中からは、ページ数を限定せず、顧客の興味の範囲に応じて、自由なページ数の加減のあるドキュメントを作成するという場面が存在する。
本発明の第2実施形態では、フローエリア内にサブテンプレートをレイアウトした結果、サブテンプレートが領域外にオーバーフローする際、フローエリアを有する新しいページを自動的に生成して、そこへ溢れたサブテンプレートを連続してレイアウトする方法を含んだ自動レイアウトシステムについて説明する。なお、このような機能を繰り返しページ機能という。
この方法の利点は、ひとつのフローエリアを定義しておけば、そのフローエリアに関連づけられたデータベースのレコードはすべてそのフローエリアの定義に従ってレイアウト処理でき、ひとつの文書としてまとめることができることである。なお第1実施形態と共通する部分(図面やその説明)については記載を省略する。
<複数ページの中の繰り返しページ>
図19は、複数のページを持つドキュメントに対して、テンプレート作成モードにおいて、フローエリアを挿入する際に呼び出す設定ダイアログのUI例である。ラジオボタン1902からフローエリアのON/OFFを選択し、ONの場合に、テキストボックス1903において、フローエリアを配置するページ番号を設定する。ここで、開始ページは1以上であり、終了ページはそのドキュメントの最大ページ以下になるように、UIによって入力は制限される。
さらにテキストボックス1904において、配置されたフローエリアの中から、繰り返しインスタンスを生成してサブテンプレートをフローしていく繰り返しページ範囲を設定する。繰り返しページについては後述する。ここで繰り返しページの開始ページは、フローエリアの開始ページ以上であり、終了ページはフローエリアの終了ページ以下であるように、UIによって入力を制限される。また少なくとも1ページは必ず繰り返しページとなるように制限される。これは、ドキュメントの先頭部分と末尾部分には、それぞれ繰返しになじまないヘッダやフッタが含まれることがあるためである。
すなわちフローエリアの開始ページから、繰返しページの設定における開始ページの前のページまでが、繰り返されないページである。また、繰返しページの設定における終了ページの後のページから、フローエリアの終了ページまでが繰り返されないページである。
設定ダイアログでOKを押下した場合、設定したページ範囲にしたがってフローエリアが各ページに挿入され、これらの情報は、複数のページをひとまとめにした複数ページにわたるテンプレート情報としてメモリユニット136に保存される。
ひとまとめにするために、たとえばグループの識別情報を、テンプレート情報に持たせることで、ひとまとまりとして扱うことができる。また、設定したラジオボタン1902を示すフローエリア繰返しフラグや、各種ページの設定は、ページごとにフローエリア情報2401の一部としてメモリユニット136に保存される。ただし、フローエリアの位置をのぞけば他の属性情報やサブテンプレート情報、マルチレコード情報は各ページについて同一である。そこで、フローエリアの位置以外の情報については、同一グループに属するテンプレートについては、たとえば先頭ページについて設定された情報を参照する。
<フローエリアの位置制御>
複数のページにわたって配置されたフローエリアは、それぞれのページでそれぞれの位置と大きさを占めることができる。図20は、各ページにおいてフローエリアの位置と大きさを調整するためのUI例を示している。2001はマージンエリア、2004のフローエリア自体は前述のように、線種や色によって通常のコンテナとは異なる表現でわかりやすく表示されるが、図20のように、フローエリアはレイアウト編集領域内において、図形描画ソフトウェアで公知かつ一般的な、サイズ変更ハンドル2003によってサイズを変更することが可能である。フローエリアにおいては、その存在可能領域をマージンエリア内に限定することが適当である。なお、フローエリアサイズが変更された場合、変更後のサイズがフローエリアの情報としてメモリユニット136に保持される。
<繰り返しページ>
図21は、1ドキュメント中の複数のページにわたってフローエリアを配置されている様子と、そのフローエリアに実際のデータを挿入したときにレイアウト済みページの生成される様子の概念図である。
図21(A)の2102は繰り返しページである。2101と2103は繰り返しページではないが、フローエリアの存在するページである。2104はフローエリアをあらわしている。すなわち、図21(A)のテンプレートは、図19に示す例に従って構成されている。また2105と2106は通常のコンテナをあらわしている。これらの通常コンテナはフローエリアとは関係を持たない。通常のコンテナには、そこに関連づけられたコンテンツが収められ、マルチレコード処理の対象とはならない。
フローエリア2104は複数ページにまたがってはいるが、連続したひとつのエリアとしてレイアウト処理アプリケーションに扱われる。すなわち、フローエリアの位置およびサイズを除き、その他のフローエリア情報は共通に参照される。すなわち、フローエリアを繰り返す指定が行われた場合、ユーザは、指定したページに従って複数ページのテンプレートを定義する必要がある。このとき、フローエリアの位置以外の属性は、すべて共通とする。
この様に構成することで、実際のデータを挿入したときには、この図では2101〜2103の3ページに跨るフローエリア全体を使ってデータベースのレコードをすべて配置していくことになる。
図21(B)に、図21(A)のように設定されたフローエリアに対して実際のデータを挿入し、レイアウト済みドキュメントが得られた状態を示す。2107は1種類のサブテンプレートをあらわしている。ただし、簡単のため実際にフローされるサブテンプレートやコンテナの細部はごく省略して表記している。図21(B)では、繰り返しページに指定された図21(A)での2つ目のページ2102が、レコードの数に応じて自動的に生成され繰り返されていることが示されている。つまり、図21では21個のレコードをフローエリアに流すことになっていたが、図21(A)に記載のページ2101〜ページ2103のフローエリアのみでは、21個のレコードをレイアウトしたサブテンプレートを収めることができないため、全レコードがフローエリアに配置されるまで繰り返しページに指定された2102が自動的に生成されることとなる。
なお、本実施例では予め繰り返しページを指定する場合について記述したが、自動的に繰り返しページが指定されるようにしても良い。その場合、一例としてフローエリアの面積が一番大きいページを繰り返しページとすることが考えられる。これは、サブテンプレートが一番多く配置されるページ(つまり、一番大きいフローエリアを有するページ)を繰り返しページに指定することにより、無駄なページが繰り返し生成されることを防ぐことが可能となるためである。
このように複数のページにまたがってフローエリアが存在する場合、ページの性格によって、どのページを繰り返しページにするかを設定できるとドキュメントの表現力向上に効果がある。図21の例でいえば、1ページ目のフローエリアは例えば顧客名を通常コンテナ部に記載して、顧客へのあいさつ文を載せることが考えられる。そのあとからマルチレコードによるレコードデータをフローエリアに表示し、繰り返しページで多数のレコードデータを処理した後、3ページ目のフローエリアで、販売担当者名をいれ、結びのあいさつ文を載せることが考えられる。このように、複数のページにおいて、同じようなレコードデータを多数配置するドキュメントの形態をとりつつも、ページによってその内容に多様性を持たせることが可能になるのである。
<レイアウト処理のフロー>
図22は、本発明の実施形態2における、レイアウト済みコンテンツをフローエリアに流しこむ際のフローチャートである。図22の処理は、第1実施形態における図17のステップS1715として実行される。このフローチャートでは、サブテンプレートを複数のページからなるフローエリアに配置する方法を記述している。
まず、レイアウト編集アプリケーション121は、フローエリア内に配置するサブテンプレート数を取得し、nに代入する(S2001)。この数は、図17のステップS1712で確定した値kもしくはnである。もしnが0だった場合には(S2002)、フローエリアにレイアウトする必要はないので、処理を行わず終了する(S2003)。ここまでの処理の詳細については上述してあるため省略する。
次にレイアウト編集アプリケーション121は、変数kを1に初期化する(S2204)。ドキュメントの先頭に、繰り返しページではないフローエリアの存在するページがあるかどうかの情報を取得し、あれば、文書の先頭において繰返しでないページに相当するテンプレート情報をテンプレートデータから読み出す。レイアウト編集アプリケーション121は、その繰り返しページでない開始ページをs、終了ページすなわち繰り返しページの直前のページをeに代入する(S2205)。この情報は、図19のUIによるユーザ入力によりメモリユニット136に保存されたフローエリア情報から読み出される。
次に、レイアウト編集アプリケーション121は、ページs〜eに、読み出したテンプレートのフローエリア情報にしたがって、先頭から順に着目ページ内(ページs〜e)に収まるだけのサブテンプレートを順にフローしていき(S2206)、フローが終わった時点で、ページs〜eに収まったサブテンプレートの数を求めてtとする(S2207)。この時点でレイアウト編集アプリケーション121は、kにtを代入し(S2208)、kとnとを比較する(S2209)。なお、kの値はメモリユニット136に一時的に保持される。もしkがn未満であるならば全てのサブテンプレートがフローエリアに配置されていないこととなるため、ステップS2210に進む。もしkがnに達していたら、すべてのサブテンプレートをフローし終えたことになるので処理を終了する。
レイアウト編集アプリケーション121は、まず現在のレイアウト済みページ数pをメモリユニット136に一時的に記憶する(S2210)。次に、レイアウト編集アプリケーション121は、文書の末尾において繰返しでない部分に相当するテンプレート情報をテンプレートデータから読み出す。ドキュメントの後尾から繰り返しページでないフローエリアの存在するページ番号(繰り返しページ範囲に指定された直後のページから最終ページ)を取得し、開始ページをs、終了ページをeに代入する(S2211)。これらの情報も、図19のUIによるユーザ入力によりメモリユニット136に保存されたフローエリア情報から読み出される。
レイアウト編集アプリケーション121は、ページs〜eに、読み出したテンプレートのフローエリア情報にしたがって先頭から順に収まるだけのサブテンプレートを順にフローしていき(S2212)、そのフロー処理が終了したら、ページs〜eに収まったサブテンプレートの数を取得しtとする(S2213)。その次に、レイアウト編集アプリケーション121は、k+tとnとを比較する(S2214)。kの値については上述した通りメモリユニット136に一時的に保持されているため、レイアウト編集アプリケーション121は、kの値を認識することができる。k+tがn未満であったらステップS2215に進む。k+tがnに達していたら、繰返しページを用いずにすべてのサブテンプレートをフローし終えたことになるので処理を終了する。
S2214までの処理を終えても図22に記載のフローチャートの処理が終了しない場合、先頭の繰り返しページでないページと後尾の繰り返しページでないページとを合わせてもレイアウトすべきレコード(レイアウト済みのサブテンプレート)がすべて収まらないと判断される。
そこで、レイアウト編集アプリケーション121は、ステップS2212においてフローしたpより後ろのレイアウト済みページのインスタンス(レイアウトしたデータ)を破棄する(S2215)。つまり、繰り返しページに対してS2212においてフローしたpより後(繰り返しページ範囲に指定された直後のページから最終ページ)のレイアウト済みインスタンスを流し込むためにS2215の処理が行われることとなる。
レイアウト編集アプリケーション121は、繰返しページ部分に相当するテンプレート情報をメモリユニット136から読み出す。そしてドキュメント内の繰り返しフローエリアのページ番号を取得し、開始ページをs、終了ページをeとする(S2216)。これらの情報もメモリユニット136に保持されているフローエリア情報2401から得る。
レイアウト編集アプリケーション121は、繰り返しページs〜eのフローエリアに対して収まるだけのサブテンプレート(レイアウト済みインスタンス)をフローする(S2217)。レイアウト編集アプリケーション121は、繰り返しページs〜eに収まったサブテンプレートの数を取得してtに代入し(S2218)、kにtを加えて再度kに代入する(S2219)。ここで、kとnを比較する(S2220)。S2220においてレイアウト編集アプリケーションがNoと判定した場合、つまりS2202で取得した全サブテンプレートを流し込めると判定された場合、図22におけるフローチャートの処理を終了する。
しかし、S2220でYesと判定された場合、再度S2210へと進む。S2210の処理に入った後、S2211からS2213までの処理を行い、S2214により再度Yesと判定された場合、S2201で取得した全サブテンプレート(レイアウト済みインスタンス)を先頭の繰り返しページでないページおよび1つめの繰り返しページおよび後尾の繰り返しページでないページにあるフローエリアを用いても収めることができないこととなる。よって、再度S2215へと進み繰り返しフローエリアを含むページが生成されることとなる。以上の処理をS2220でNoと判定されるまで繰り返すことにより、繰り返しページが全サブテンプレートを流し込めると判断されるまで自動的に生成され続ける。なお、この生成しょりは所定のページを複製することにより生成するものであっても構わない。
ここで、以上の処理を詳細に説明するために図21を用いて具体的に説明する。まずS2201により取得されたサブテンプレート(レイアウト済みインスタンス)から、ページ2101のフローエリアに収まるだけのサブテンプレートを流し込む。ここまでがS2201からS2208である。
続いて、取得した全サブテプレートが流し込まれていないと判定された場合(S2209)、残りのサブテンプレートをページ2103のフローエリアに流し込む。ここまでがS2210からS2213である。
そして、ページ2101および2103のフローエリアを用いてもS2101で取得した全サブテンプレートを流し込むことができないと判定された場合(S2214)、ページ2103に流し込んだサブテンプレートを削除して、該サブテンプレートを繰り返しページであるページ2102のフローエリアに流し込む。ここまでの処理がS2215からS2219である。以上の処理により、S2101で取得されたサブテンプレートが順次ページ2101および2102のフローエリアに流し込まれることとなる。
ここでS2101において取得した全サブテンプレートが収まったか否かを判定し(S2220)、収まりきらないと判定した場合、ページ2103のフローエリアへ収まりきらなかったサブテンプレートを再び流し込む。ここまでの処理によっても全サブテンプレートが流し込まれないと判定された場合(S2214−Yes)、再びS2215へと進み、繰り返しページであるページ2102が生成され、該生成されたページ2102のフローエリアにサブテンプレートが流し込まれることとなる。以上の処理を繰り返すことにより、図21(B)に記載されているように、全サブテンプレートが収まるまで繰り返しページである2102のみが繰り返して複製(生成)されることとなる。
なお、繰り返しページとして複数ページを指定した場合、取得するサブテンプレート数によっては、空白ページが生じてしまうことが考えられる。例えば繰り返しページとして3つのページ群を指定した場合、取得したサブテンプレートを収めることができないことにより、繰り返しページ群が生成されることとなるが、この際に生成されるのは3つのページ群が生成されることとなる。しかし、取得されたサブテンプレート数によっては新たに生成された繰り返しページ群の2ページ目までで収まってしまい、繰り返しページに指定された3ページ目が空白になることが想定される。この場合、空白ページはユーザの設定により自動的に削除されることとなる。
このように、本実施形態においては、フローエリアにテンプレートが納まらない場合には、自動的に新しいページを生成して、1ページのフローエリアに入りきらないサブテンプレートを連続してフローさせることにより、ページ制限のないドキュメントを作成することを目的とする。なお、生成される新しいページはユーザによって予め指定された繰り返しページであるためユーザの意図を反映したページを構成することが可能となるだけでなく、上述したように自動的に繰り返しページが設定されるようにすることにより、ユーザの操作性を向上することが可能となる。
また、繰り返しページ直前までのページおよび繰り返しページを用いることにより、全てのレイアウト済みサブテンプレートを配置できた場合(S2220−Yesの場合)、図22のフローチャートは終了することとなるが、フッタページが指定されており、フッタページに出力すべきコンテンツデータがある場合には、フッタページを加えた上で処理を終了する。
また、本実施形態では、複数ページにわたってひとつの連続したフローエリアを定義することができる点に注目して記述しており、特に複数のフローエリアを1ドキュメント中に配置することについては言及していない。しかし、もちろん複数のフローエリアをそれぞれ複数ページにわたって配置することは可能であることはいうまでもない。
本発明によれば、データベースから抽出したレコードデータの内容(値)に応じて異なったサブテンプレートを選択して、選択されたサブテンプレートに対してレコードを挿入する。そして、その挿入処理をレコードごとに繰り返すことによって、多種のサブテンプレートとレコードの結びついた部分レイアウトが得られる。そのレイアウト済みサブテンプレートを、フローエリアに順にフローさせることで、従来の流し込みでは実現できない、複雑なレイアウト切り替えを繰り返すフローレイアウトを実現することができる。
また、多数のレコードをフローした結果としてサブテンプレートが1つのフローエリアからあふれてしまう場合、自動的にレイアウトエリア(フローエリア)を含むページを追加生成して、自由度の高いページ数をもつドキュメントを作成することが可能になる。これは、カタログなどの、項目数があらかじめ定まらない、ある程度類似しているが詳細なレイアウト構造が異なるような部分レイアウトを、羅列して表現するようなドキュメントを作成する際に非常に有効な効果となる。
[第3実施形態]
本実施形態では、第1実施形態及び第2実施形態をさらに発展させたものであり、単にフローエリアを複数ページに拡張するのみならず、サブテンプレート間やフローエリアとコンテナとの間などで、区切ることができるレイアウト編集アプリケーションプログラムを説明する。そのために、第2実施形態を下敷きとして、それと共通するする部分、および第1実施形態と共通する部分については説明は省略し、相違する部分について説明する
<サブテンプレート条件式>
条件式は、ひとつのフローエリアに対して複数のサブテンプレートを割り当てるための仕組みである。フローエリアには、サブテンプレートあるいは条件式のいずれかひとつを関連付けることができる。図26は、条件式を設定するUI例の図である。これは第1実施形態と同様である。ただし、本実施形態では、サブテンプレート情報として保存される条件式に、さらにサブテンプレートと同じ条件で区切り情報を含めて入力することができる。
図26は、データベースからひとつのレコードを受け取って処理を行う、ひとつの条件式を設定するためのUI例である。この入力領域は、条件式に名前を付けるテキストボックス2602と、もっとも基本的な条件判定を構成する要素であるIF文2603とELSE文2604のペアを最低限有している。
IF文の入力領域においては、条件の判定対象となるフィールドの選択を行うリストボックス2605と、判定の論理式を設定するリストボックス2606、判定に用いられる値を入力するテキストボックス2607、条件判定が正だったときに動作を決定する、該レコードを挿入するためのサブテンプレートを決定するTHEN_USE処理文2608。さらに、サブテンプレートが変更されるときに付帯するBreak処理(文書区切り処理)を選択するWITH処理文2609、同じく条件判定結果が不正だったときに該レコードを挿入するためのサブテンプレートを決定するELSE_USE処理文2604からなっている。
判定の論理式2606には、EQUAL(等しい)、NOT EQUAL(等しくない)、LESS_THAN(小さい)、LARGER_THAN(大きい)、START_WITH(で始まる)、END_WITH(で終わる)などさまざまな条件が用意される。また、論理式2606で判定される判定値2607に"FieldNN"という具合に、Field値を指定した場合には、2605に入力されたField値と2607に入力されたField値同士を判定し、例えば、マルチレコードのようにレコードのカテゴリが変更された時点で、新規のドキュメントを生成するマルチレコード印刷が可能となる。
さらに判定の論理式として「change(変化)」も設定可能である。判定の論理式「change」とは、あるフィールド値のデータ値が変更される度に後述するBreak処理を設定する場合に有効である。判定式「change」を設定することによる有効点について一例を挙げて具体的に説明する。
例えば、膨大な量のレコード情報を用いて、改ドキュメントを伴うレイアウト処理を実行することを想定する。この際、ユーザが設定する条件式の例としては「IF field01 EQUAL value01 with DocumentBreak」および「IF field01 EQUAL value02 WITH DocumentBreak」および「IF field01 EQUAL value03 WITH DocumentBreak」といった設定処理を「field01」に想定されるデータ数分だけ繰り返さなければならない。すなわち想定されるデータ数が多いほど、条件式が増加してしまい煩雑になってしまう。ここで上述した「change」を用いることにより条件式は1つで済む。つまり「IF field01 change value with DocumentBreak」と設定することによりフィールド値1のデータが変更される度に改ドキュメントが実行されるため、想定されるデータ数分だけ条件式を設定する必要はなくなり、ユーザの操作性を向上させることができる。
さらに、WITH処理文には、これまでのレコードレイアウト処理を中断し、フッタページを印刷した後、新しくヘッダページから新しいレコードを印刷するDocBreak(改ドキュメント)。また、これまでのレコードフローを中断し、新しいページを生成後、新しいレコードフローを始めるPageBreak(改ページ)。さらには、次のフローエリアから新しくレコードフローを開始するLineBreak(改行)、Break処理せず、フローを継続するNoneBreak(継続)の4種類のBreak処理が用意される。
さらに、複雑な条件式を設定するためには、IF文中に複合条件を設定するためにAND/OR接続文コンボボックス2610を有する。このコンボボックスでANDまたはORの複合条件を選択すると、IF文中に条件行が1行追加される。ANDの場合、複数の条件がすべて正であるときのみ、ORの場合いずれかの条件が正であるときにIF文判定が真であると判定される。
また、さらに複雑な条件分岐を設定するためには、ELSE_IF文追加ボタン2611を有する。2611を押下すると、前述IF文とELSE文の間に、あらたにELSE_IF文が追加挿入される。ELSE_IF文の内容と動作は、IF文における内容と同じである。IF文が不正のときにひとつ下のELSE_IF文を判定し、さらに不正のときにもうひとつ下のELSE_IF文を判定し、これを続けて最後にELSE文を判定する、という順に処理を行う。2612は選択されているELSE_IF文を削除する削除ボタンである。ELSE_IF文が多くなった場合、スクロールバー2613を使って条件のリストを表示することが可能である。
いずれかのIF文あるいはELSE_IF文で真と判定された場合、関連するUSE処理文、WITH処理文が実行される。このように、条件式を通して、さまざまな値を取るレコードのそれぞれに、条件に合ったサブテンプレートを自動的に選択することができ、また、選択されたサブテンプレートに付帯するBreak処理を併用することで、ひとつの条件式においてさまざまなレイアウトを実現することが可能になる。
この条件式をフローエリアに関連付けることによって、ひとつのフローエリアにおいて、さまざまなレイアウトを持った複数種類のサブテンプレートをエリア内にフローすることが可能になる。
ユーザは図26のUIから条件を入力すると、最後にOKボタン2615を押す。OKボタン2615の押下により、UIで設定されたサブテンプレート条件を示す情報(サブテンプレート条件式)が、サブテンプレート情報2403の一部としてメモリユニット136に保存される。このサブテンプレート条件式は、たとえば、図26のUIに記述された(選択された)テキストをそのまま保存したテキストファイルなど、条件と条件が満たされた場合のサブテンプレートを特定できる情報であれば良い。図26の例では、「IF field01 EQUAL value01 AND field02 EQUAL vlue02 THEN USE subtemplate01 WITH PageBreak ELSEE IF field01 EQUAL value03 AND field02 EQUAL vlue04 THEN USE subtemplate02 WITH PageBreak ELSE USE subtemplate03 WITH PageBreak」をサブテンプレート条件式を示す情報として保存する。このまま保存しても、簡単な文法で記述されており、しかも図26のようなUIから入力されるので文法的な誤りなどが発生する余地がない。そのために、簡単なプログラムでその条件の記述をパースして適合するサブテンプレートを決定することができる。
<レイアウト処理>
図27Aは、フローエリアに対して条件式(抽出条件およびブレーク処理)が設定されているテンプレートにおいて、条件判定を行い、条件式に応じたレイアウト処理を実行するためのフローチャートである。図27Aは、第1実施形態の図7AのステップS703,S0704や、図10のステップS1009,S1010を合わせた処理となっている。
なおここでは、テンプレートは、ヘッダページ、フローエリアを含む繰返しページ、フッタページで構成された例で説明する。図27Aにおいては、まず、レイアウト編集アプリケーション121は、レイアウトするデータをデータベースから取得して(S2701)、レコードの終了かどうか判定する(S2702)。レイアウト編集アプリケーション121は、現在どのレコードを対象としているかを一時的に保持しながら処理を行うため、S2702の判定が可能となる。レイアウト編集アプリケーション121は、S2702によりレコードの終了を判定した場合、S2713へ進みフッタページのレイアウト処理を実行して、図27Aのフローチャートの処理を終了する。なお、S2701により取得したレイアウトするレコードの数が0であった場合は、レイアウト処理を実行することはできないため、S2713によるフッタページのレイアウト処理を実行することなく本フローチャートの処理を終了する。
次に、レイアウト編集アプリケーション121は、最初のレコードかどうか判定する(S2703)。最初のレコードであれば、レイアウト編集アプリケーション121は、ヘッダページのレイアウト処理を実行する(S2704)。詳細には、取得したレコードの内、所定のコンテンツデータを用いてヘッダページを作成することを指す。その際、ヘッダページレイアウト処理は、第1実施形態の図7Aや図14のフローチャートで説明したサブテンプレートのレイアウトの最適化処理と同様に実現される。これは、サブテンプレートが通常のテンプレートと同じくレイアウト定義され、データベースのコンテンツを流し込む際のレイアウト最適化処理が施されることを意味する。
次に、レイアウト編集アプリケーション121は、取得したレコードのコンテンツデータとフローエリアに設定されている条件式から、該取得したレコードのコンテンツデータを配置可能であるか否かを判断し、配置すべきレコードのコンテンツデータであると判断された場合、該条件式に基づいてサブテンプレートおよびBreak処理を特定する(S2705)。詳細には、レイアウト編集アプリケーション121が、フローエリア情報としてメモリユニット136に保存されているサブテンプレート条件式を読み出し、その条件式と取得したレコードに含まれるコンテンツデータを認識することにより条件に適合するサブテンプレート名およびBreak(区切り)処理の内容を特定できる。
次に、レイアウト編集アプリケーション121は、特定した情報に基づいて、Break処理が定義されているか、さらにBreak処理が発生するか否かを判定する(S2706)。まずBreak処理が定義されているか否かの判定は、レイアウト編集アプリケーション121が、S2705によってBreak処理を特定しているため、Break処理が設定されているかを判定可能である。
また、Break処理が発生するか否かについては、現在対象としている1つ前のレコードのコンテンツデータを一時的に保持しておき、現在の対象レコードのコンテンツデータと比較することにより、判定を行う。具体的には、Break処理を実行するために指定されているフィールド値(データ項目)の値が変更されていればBreak発生と判断される。
S2706の判定の結果、「Breakの設定なし」、または「Breakの発生なし」のいずれか1つを判定した場合現在対象としているレコードのコンテンツデータをサブテンプレートに配置して、上述したようにサブテンプレート内においてレイアウト調整を行い、フローエリアに配置される。(S2714)。すなわちフローエリア情報において指定されている間隔を空けて、レイアウト済みサブテンプレートをフローエリアに配置する。
S2706によりBreak設定がされており、かつBreak処理が発生すると判断された場合、レイアウト編集アプリケーション121は、DocBreak(改ドキュメント)が指定されているかどうかを判定する(S2707)。なお、S2707の判定処理は、S2705によってBreak処理を特定することにより、どのBreak処理が設定されているかを判定可能である。つまり、レイアウト編集アプリケーション121が、フローエリア情報を読み出すことによりBreak処理が特定されることとなる。
S2707により、DocBreak(改ドキュメント)が指定されていると判定された場合、これまでの出力結果を一旦完了するため、レイアウト編集アプリケーション121は、フローエリアに対するレコードの流し込みを中断し、フッタページを新規に生成して、レイアウト処理する(S2708)。その際、同じ処理を繰り返さないように、事前にBreak設定をクリアしておく必要がある。とはいえ、フローエリア情報のサブテンプレート条件式に含まれるBreak設定をクリアすると、設定自体が変更されることになるので、たとえば、着目レコードに関する改ドキュメントのブレーク処理は完了している旨のBreak済みフラグを設け、これをセットする。このBreak済みフラグをセットすることにより、再度S2705、S2706の処理を繰り返す必要がなくなる。
したがって、レイアウト編集アプリケーション121は、ステップS2706においてこのBreak済みフラグがセットされていないことも判定し、ブレークの設定があっても、Break済みフラグがセットされていれば「いいえ」と判定する。そして、レイアウト編集アプリケーション121はS2714へと処理を進め、現在対象としているレコードをサブテンプレートに配置して、対象ページのフローエリアにレイアウトすることとなる。このブレーク完了フラグは着目レコードのレイアウトが終えたならリセットされる。
なお、S2708におけるフッタページレイアウト処理はヘッダページレイアウト処理と同様、第1実施形態の図7(A)、図14のフローチャートで説明したサブテンプレートのレイアウトの最適化処理と同様に実現される。
その後、レイアウト編集アプリケーション121は、再度ヘッダページレイアウト処理(S2704)に戻り、新しくドキュメントを作成する処理から繰り返す。なお、S2708によりフッタページレイアウト処理が終了したあとに、S2704に戻った場合、事前にBreak設定がクリア(すなわちBreak済みフラグがセット)されているため、再度同じ処理を繰り返すことはなく、Break定義されていないと判定される(S2706)。したがって通常のレイアウトを実行し、レコードに格納されたコンテンツをページ上に配置する(S2711)。この結果、レコード処理の途中で改ドキュメントが発生し、マルチレコード印刷が実現される。
上記改ドキュメントが設定されていることにより、配置すべきコンテンツデータを配置する際に、ドキュメントを改めることができるため、データ属性が変更されるごとに新しいドキュメントが生成されることとなる。
次に、S2707の判定の結果、改ドキュメントの設定がされていないと判定された場合、レイアウト編集アプリケーション121は、PageBreak(改ページ)が設定されているかどうかを判定する(S2709)。S2709の判定処理はS2707と同様であるため詳細な説明は省略する。
判定の結果、PageBreak(改ページ)が設定されている場合には、レイアウト編集アプリケーション121は、これまでのフローを中断し、新しくページを作成する(S2710)。改ページのためにフローエリアを含んだ新規ページを作成した後、レイアウト編集アプリケーション121は、新規ページのフローエリアに対して現在対象としているレコードのコンテンツデータのサイズを取得し、通常のレイアウトを実行し、レコードに格納されたコンテンツをページ上に配置する(S2714)。この結果、レイアウト済みのサブテンプレートのフローがフローエリア内で新規のフローとして再開される。
これにより、データ属性が変更されるごとに新しいページが生成されるため、例えば、あるユーザに複数の商品を提案する際の、カスタマイズカタログとして、同じ商品群を1つのページに構成することが可能となる。なおPageBreakについても、やはりBreak済みフラグをDocBreakと同じ要領で用いる。なお、Break済みフラグには、DocBreakであったのか、PageBreakであったのかといったBreak属性情報を持たせることができる。
S2709でPageBreak設定がされていないと判定された場合、レイアウト編集アプリケーション121は、LineBreak(改行)が設定されているかどうかを判定する(S2711)。なお、S2711の判定処理は、S2707の判定処理と同様であるため詳細な説明は省略する。
判定の結果、LineBreak(改行)が設定されている場合、レイアウト編集アプリケーション121は、現在のフローエリアから次の行に当たるフローエリアの左端にレイアウト開始ポイントを移動する(S2712)。詳細には、レイアウト編集アプリケーションを構成するモジュールの1つであるレイアウトエンジンがコンテンツデータの配置位置を認識することが可能である。よって、レイアウトエンジンが1つ前のレコードをレイアウトしたサブテンプレート位置を認識して、一時的にメモリユニットに保持しておき、そこからサブテンプレート分改行して、左端にレイアウト開始ポイントを移動することによりS2712の処理が実現される。
その後、通常のレイアウトを実行し、レコードに格納されたコンテンツをページ上のフローエリアに配置する(S2714)。レイアウト編集アプリケーション121はS2714の処理が終了した場合、対象レコードを次へ進める処理をしておき再度S2701へ戻り、次のレコードを取得する処理に入る。
この結果、フローエリアの途中で改行が発生することになる。この場合の改行は、サブテンプレートにレイアウトされたレコードの高さ分移動することを示している。なおLineBreakについても、やはりブレーク済みフラグをDocBreakと同じ要領で用いる。
上記改行が設定されていることにより、データ属性の異なるコンテンツデータを配置する際に、行を改めることができるため、同じデータ属性のサブテンプレートを同じ行にレイアウトすることが可能となる。
以上のBreak処理から、ヘッダページ、フローエリア、フッタページで構成されるドキュメントが、条件式に定義された各種のBreak処理によって、自在に構成を変更できることになり、フローエリアに設定されたBreak処理に従って、改ドキュメントなら新規文書を作成することにより文書を区切ってコンテンツデータを配置し、改ページならば新規ページをさく製することにより文書を区切ってコンテンツデータを配置して出力結果を得ることが可能となり、マルチレコード印刷時における多彩な出力結果を得ることができる。
図27Bは、図27A中のサブテンプレートを決定する処理S2705の詳細を記述したフローチャートである。レイアウト編集アプリケーション121は条件式の最初のIF文を取り出し(S2721)、S2701で受け取ったレコードからIF文の判定対象としているフィールドの値を取り出す(S2722)。なお、上述した通り条件式はフローエリア情報としてメモリユニットに保存されているため、レイアウト編集アプリケーション121が、メモリユニットを参照することにより、S2721およびS2722の処理は可能となる。
続いてレイアウト編集アプリケーション121は、現在対象としているレコードのフィールドの値がS2721により取り出された条件式に合致するかどうかを判定する(S2723)。詳細には、レイアウト編集アプリケーションが現在対象としているレコードのコンテンツデータをメモリユニット136に一時的に保持しておき、フローエリア情報として保持されている条件式と比較することによりS2723の処理が実現される。
レイアウト編集アプリケーションはS2121により取り出された条件式と判定対象としているフィールド値が合致すると判定した場合、その条件文のUSE処理を選択し、サブテンプレートを決定する(S2725)。なお、使用するサブテンプレートが決定した場合、レイアウト編集アプリケーションは現在対象としているレコードと使用するサブテンプレートを対応付けて、メモリユニット136に保持する。
S2723により合致しないと判定された場合、レイアウト編集アプリケーション121は、別の条件式があるかどうかを判定する(S2724)。なお、S2724の判定処理もS2723の処理と同様である。S2724によりレイアウト編集アプリケーションが、別の条件式があれば同様に該別の条件式を用いてS2723の判定を実行する。
レイアウト編集アプリケーション121は、現在対象としているレコードのコンテンツデータがどの条件式にも合致しないと判定した場合、ELSE文のUSE処理を選択し、サブテンプレートを決定する(S2726)。なお、ELSE文に関してはユーザにより設定されない場合もありえるため、ELSE文の条件式が無ければS2726の処理は省略されることとなる。
最後に、レイアウト編集アプリケーション121は、WITH文で定義されているBreak処理を取得して、メモリユニット136に保持する(S2727)。
<サブテンプレート>
次に図27AのステップS2714におけるサブテンプレートのレイアウト処理について、レイアウト処理フローを図28を参照して説明する。
まず、レイアウト編集アプリケーション121は、各コンテナにレイアウトするためのデータのサイズを取得する(S2801)。そして、S2801により取得したデータサイズに基づいて、レイアウト編集アプリケーション121は、各コンテナにおいてレイアウト計算を行い(S2802)、レイアウトを最適化する(S2803)。なおレイアウトの計算処理およびレイアウト最適化の方法は第1実施形態で説明した通りである。
レイアウト編集アプリケーション121は上記処理により最適化されたレイアウトを決定し(S2804)、レイアウトするデータを流し込む(S2805)。この処理も第1実施形態で説明したとおりである。
次に、フローエリアにサブテンプレートをレイアウトするために、レイアウト編集アプリケーション121は、フローエリアのサイズを取得し(S2806)、レイアウトするサブテンプレートのサイズを取得する(S2807)。上述した通り、フローエリアのサイズおよびサブテンプレートのサイズはメモリユニット136に保持されているため、サイズ取得可能である。なお、本実施形態では、サブテンプレートの外枠のサイズは、上述した通りサブテンプレート内のコンテナに流し込まれるレコードの内容によって決定する可変サイズであっても、流し込まれるレコードに依存しない固定サイズであっても構わない。
レイアウト編集アプリケーション121は、フローエリア内に、設定されているフロー方向とフロー間隔を適用しながらサブテンプレートを配置する(S2808)。最後に、レイアウト結果を表示して終了する(S2809)。最後の表示処理は、図28を呼び出すプログラムで行われるために、なくともよい。
なお、ステップS2801〜S2805は、図14のステップS1402〜S1406と同様であるし、ステップS2806〜S2809は、図17のステップS1713〜S1716と同様である。
(フローエリアのBreak例)
図27の処理を図29および図35を用いて具体的に説明する。図29は、DocBreak(改ドキュメント)処理により、複数のドキュメントが生成された例を示している。
図29の2901はサブテンプレートを流し込むために設定されたフローエリアであり、フローエリアにはサブテンプレート2902)、サブテンプレート2903、サブテンプレート2904のいずれかを用いるための条件式が設定されている。条件式には、レコードの宛先フィールド(データA)が「1」であれば、THEN USE "サブテンプレート2902" WITH "DocBreak"を実行することが設定されている。さらに、レコードの宛先フィールド(データA)が「2」であれば、THEN USE "サブテンプレート2903" WITH "DocBreak"を実行することが設定されている。レコードの宛先フィールドが「3」であれば、THEN USE "サブテンプレート2904" WITH "DocBreak"を実行することが設定されている。
つまり、データAの項目が変更することに応じて、改ドキュメントが実行されることとなる。
ここで図27Aと図29を用いて処理の流れを具体的に説明する。レイアウト編集アプリケーション121は、データ2900にある「レコード1」を取得する。ここでレコード1は最初のレコードであるため、関連付け情報に従ってレコード1に含まれるデータAの「1」がヘッダページのコンテナにレイアウトされることとなる。ここまでの処理が図27のS2701〜S2704に該当する。
レイアウト編集アプリケーション121は、レコード1の「データA=1」であることを認識すると共に、メモリユニット136の条件式を参照して「レコードの宛先フィールド(データA)が「1」であれば、THEN USE "サブテンプレート1" WITH "DocBreak"」を認識する。以上より、レコード1に関してはサブテンプレート1を使用することが特定されると共に、改ドキュメントが設定されていることも認識する。
しかしながら、レコード1においては前レコードとの比較により所定のフィールド値が変更することにより発生するBreak処理が生じないため、レコード1のコンテンツデータをサブテンプレートへ流し込むS2714の処理へ進むこととなる。この処理が図27AのS2706に該当する。なお、レコード1のコンテンツデータは上述したように一時的にメモリユニット136に保持されることとなる。
続いてレイアウト編集アプリケーション121はS2714の後、S2701へ戻り、次のレコード2を対象レコードとして処理を進める。レコード2はレコードの終了ではなく、さらに最初のレコードでもないためS2705へと進む。ここでレイアウト編集アプリケーションはレコード2のコンテンツデータ「データA=2」と条件式「レコードの宛先フィールド(データA)が「2」であれば、THEN USE "サブテンプレート2" WITH "DocBreak"」により、レコード2で使用されるサブテンプレートはサブテンプレート2であると特定すると共に、改ドキュメントが設定されていることも認識する。
さらに、レイアウト編集アプリケーション121は、一時的に保持しているレコード1のコンテンツデータとレコード2のコンテンツデータを比較すると、レコード1では「データA=1」であったのに対し、レコード2では「データA=2」に変化していることが認識できる。これにより、レコード2を流し込む際にBreak処理が発生することとなる。
以上から、レイアウト編集アプリケーションはS2706の処理において、「Break処理設定あり」および「Break処理発生」を認識するため、S2707へと処理を進める。ここでレコード2に該当する条件式には「改ドキュメント」が設定されているため、レイアウト編集アプリケーションはレコード1用のフッタページ2907を作成する。なお、ここで使用されるコンテンツデータはレコード1に含まれるコンテンツデータである。さらに、レイアウト編集アプリケーション121は、上述したBreak済みフラグを設定する。
ここまでの処理により図29に記載したドキュメント(a)を構成する2905および2906および2907が生成される。続いてレイアウト編集アプリケーション121は、S2704に処理を進め、レコード2用のヘッダページ2908を作製する。なお、上述したBreak済みフラグが設定されているため、S2705の処理は省略され、さらにS2706では「いいえ」と判定される。これにより、レコード2のコンテンツデータはサブテンプレート2に配置され、新規文書であるドキュメント(b)のページ2909のフローエリアに対してレイアウトされることとなる。
続いてレコード3、レコード4についても同様の処理を行うと、レコード3および4に関しては「データA=2」であり、レコード2のデータAと同じためBreak処理は発生しない。よって、レイアウト編集アプリケーション121は、S2714へと処理を進めレコード3および4のコンテンツデータはドキュメント(b)のフローエリアへとレイアウトされることとなる。なお、通常であればレコード4のコンテンツデータもドキュメント(b)のページ2909のフローエリアへレイアウトされるべきであるが、流し込まれるコンテンツデータが多く、1つのフローエリアに納めることができなかったため、繰り返しページ機能により新たにページ2910が生成されている。
このように、サブテンプレートが変更されることに応じてドキュメントを変更することが可能となる。
続いて、図27および図35を用いてにPageBreak(改ページ)の具体例を示す。例えばデータ3500に含まれるレコードを流し込む場合を想定する。
3501はサブテンプレートを流し込むために設定されたフローエリアであり、フローエリアにはサブテンプレート3502、サブテンプレート3503、サブテンプレート3504のいずれかを用いるための条件式が設定されている。条件式の1つ目は、データAが変化(change)すれば、WITH"DocBreak"が設定されている。つまり、データAが変化することに応じて改ドキュメントが実行されることとなる。そして条件式の2つ目には、データBが「X」であれば、THEN USE "サブテンプレート3502" WITH "PageBreak"を実行することが設定されている。さらに、データBが「Y」であれば、THEN USE "サブテンプレート3503" WITH "PageBreak"を実行することが設定されている。データBが「Z」であれば、THEN USE "サブテンプレート3504" WITH "PageBreak"を実行することが設定されている。つまり、データBのデータ値が変更することに応じて、改ページが実行される。
ここで図27Aと図35を用いて処理の流れを具体的に説明する。レイアウト編集アプリケーション121は、データ3500にある「レコード1」を取得する。ここでレコード1は最初のレコードであるため、関連付け情報に従ってレコード1に含まれるデータAの「1」がヘッダページのコンテナにレイアウトされる。
レイアウト編集アプリケーション121は、レコード1の「データA=1」および「データB=X」であることを認識すると共に、メモリユニット136の条件式を参照して「データBが「X」であれば、THEN USE "サブテンプレート3502" WITH "PageBreak"」を認識する。以上より、レコード1に関してはサブテンプレート3502を使用することが特定されると共に、改ページが設定されていることも認識する。しかしながら、レコード1においてはBreak処理が生じないため、レコード1のコンテンツデータをサブテンプレート3502へ流し込むS2714の処理へ進む。なお、レコード1のコンテンツデータは上述したように一時的にメモリユニット136に保持されることとなる。
続いてレイアウト編集アプリケーション121はS2714の後、S2701へ戻り、次のレコード2を対象レコードとして処理を進める。レコード2はレコードの終了ではなく、さらに最初のレコードでもないためS2705へと進む。ここでレイアウト編集アプリケーション121は、レコード2の「データB=Y」および条件式「データBが「Y」であれば、THEN USE "サブテンプレート3503" WITH "PageBreak"」を認識することにより、レコード2において使用するサブテンプレートを3503と特定すると共に、改ページが設定されていることも認識する。
さらに、レイアウト編集アプリケーション121は、一時的に保持しているレコード1のコンテンツデータとレコード2のコンテンツデータを比較すると、レコード1は「データA=1」であったのに対し、レコード2も「データA=1」であるため改ドキュメントは発生しない。しかしながら、レコード1の「データB=X」であったのに対し、レコード2の「データB=Y」であるため、Break処理(改ページ処理)が発生する。つまり、レイアウト編集アプリケーション121は、S2706において「Break設定あり」および「Break処理発生」と認識するため、S2707へと進みレコード2に対して実行すべきBreak処理を特定する。
上述した通り、レコード2に適用される条件式は「データBが「Y」であれば、THEN USE "サブテンプレート3503" WITH "PageBreak"」であるため、改ページが実行されると特定できる。よってレイアウト編集アプリケーション121は、S2709により「Yes」と判定し、新規ページ3507を生成する。
レイアウト編集アプリケーションはレコード2のコンテンツデータをサブテンプレート3503に配置して、S2710において新たに生成されたページ3507のフローエリアにレイアウトする。
また、レコード3および4は「データA=1」であり、「データB=Y」であるため改ドキュメントおよび改ページは実行されない。よって、レイアウト編集アプリケーション121は、ページ3507のフローエリアにレコード3および4のコンテンツデータをレイアウトする。なお、通常であればレコード4のコンテンツデータものページ3507のフローエリアへレイアウトされるべきであるが、流し込まれるコンテンツデータが多く、1つのフローエリアに納めることができなかったため、繰り返しページ機能により新たにページ3508が生成されている。
さらに、レコード5に関しても上述の処理を実行する。レコード5のコンテンツデータは「データA=1」であり、「データB=Z」であるため、改ドキュメントは実行されないが、改ページ処理が実行される。
よって、レイアウト編集アプリケーション121は、レコード5のコンテンツデータを配置するために、サブテンプレート3504にレコード5のコンテンツデータを配置して、改ページ処理により新たに生成されたページ3509のフローエリアにレイアウトすることとなる。
続いてレイアウト編集アプリケーション121は、レコード7を対象レコードとして処理を進める。レコード7のコンテンツデータは「データA=2」であるため、レコード1〜6のデータAとは異なるデータ値となっている。よって、条件式1である「データAが「change」WITH"DocBreak"」が適用され、改ドキュメントであると特定される。すなわちレイアウト編集アプリケーションは、レコード7において「Break処理の設定あり」および「Break処理が発生」と判定するため、S2707へと処理を進める。
さらに、レイアウト編集アプリケーション121は、設定されているBreak処理が改ドキュメントであるため、フッタページ3510を生成して、上述したBreak完了フラグを設定する。
これにより、レイアウト編集アプリケーションは、レコード1〜6を用いてページ3505〜ページ3510から構成される1つの文書を生成し、レコード7から新規文書の作成処理にはいる。Break処理として改行が設定されていた場合、上述したものと同様の処理が行われることとなる。
なお、フローエリアをブレークにより分割した場合、分割された各フローエリアについては同一の属性情報を持つものとして、レイアウト等の処理が行われる。
[第4実施形態]
本発明の第4実施形態は、テンプレートに定義された条件式をオーバーライド(上書き)できる外部条件式ファイルとして利用する場合の処理を示している。テンプレートには、条件式が図30で示すようなXML準拠の形式で記述されており、テンプレートの定義自体もXML準拠のタグ形式となっている。ここでは、テンプレート自体のフォーマットは関係ないので説明は割愛する。
図30は、外部条件式ファイルとなる条件式ファイルのフォーマットを示している。図26の条件式設定UIの設定内容を保存する際の形式と同じであり、UI画面に表示された内容をそのままタグ形式に当てはめたものとなり、<CONDITIONAL>タグ、<IF>タグ、<ELSEIF>タグ、<ELSE>タグで構成される。また、<IF>タグには、判断式を記述する<FIELD>タグ、判断結果を記述する<USE>タグが含まれる。<USE>タグには、WITH識別子にBreak種別が記述される。<CONDITIONAL>タグには、条件式を識別するための名称が記述される。<IF>タグの<FIELD>タグには、Field名、判断文、判定値の組が定義され、複数の判断文がある場合には、AND識別子、OR識別子で繋ぐことができる。<ELSEIF>タグは、<IF>タグと同様に記述され、<IF>タグの分岐先となる。最後に、<ELSE>タグは、どの判断文にも一致しない場合の分岐先であり、<USE>タグのみ記述される。
図31は、外部条件式ファイルをオーバーライド(上書き)する処理を記述したフローチャートである。図31の処理は、第3実施形態の図27Aの先頭において行われる。
レイアウト編集アプリケーションを構成するモジュールの1つであるレイアウトエンジン225は、入力パラメータで指定されたテンプレートをメモリ136に読み込む(S3101)。XML準拠のファイルフォーマットであるため、レイアウトエンジン225は、テンプレートファイルをパースしてXMLのオブジェクトツリーに展開する(S3102)。次に、レイアウト編集アプリケーション121は、入力パラメータに外部条件式ファイルがあるかどうか判定する(S3103)。この判定は、たとえば外部条件式ファイルについては特定の拡張子や名称を与えておくことで実現できる。判定の結果外部条件式がある場合に、レイアウト編集アプリケーション121は、条件式ファイルをメモリ136に読み込む(S3104)。次に、条件式をパースして条件式オブジェクトツリーに展開する(S3105)。次に、レイアウト編集アプリケーション121は、ステップS3101で読み込んだテンプレートに記述された条件式オブジェクトツリーを、外部参照で読み込んだ条件式オブジェクトツリーで書き換える(1906)。XML準拠であるため、オブジェクト単位の入れ換え処理は既知の技術で可能となる。その後、図S27Aで説明したBreak処理を実行(S3107)することで、テンプレートに設定された条件式を印刷時に動的に変更することができるため、流し込むバリアブルデータに応じて、サブテンプレートの変更条件を変更することができるため、より多彩なバリアブルプリントが実現できる。
なお、条件式オブジェクトツリーの評価は、たとえばツリー構造にしたがってスタックマシンにより演算子を実行することで実現できる。また、上記手順においては、条件式をパースする前にXML形式のまま条件式の上書きを行ってからパースしても良い。
このように構成することで、条件式をたとえばテキストエディタなどで編集して設定することが可能となる。
以上のように、本発明に係る各実施形態のレイアウト編集システムによれば、データベースから抽出したレコードデータの内容(フィールド値)に応じて異なったサブテンプレートを選択して、選択されたサブテンプレートに対してレコードを挿入する。そして、その挿入処理をレコードごとに繰り返すことによって、多種のサブテンプレートとレコードの結びついた部分レイアウトが得られる。その多種の部分レイアウトを、レイアウトエリアに順にフローさせることで、従来の流し込みでは実現できない、複雑なレイアウト切り替えを繰り返すフローレイアウトを実現することができる。
また、その多種の部分レイアウトを製本時の章に見立て、改ページBreak処理によってページ制御することで小冊子のようなドキュメントを生成することが可能となる。また、ヘッダあるいはフッタを構成するテンプレートで改ドキュメントBreak処理した場合には、顧客毎のドキュメントを1つのテンプレートとマルチレコードで同時に生成することが可能となる。
これは、カスタマイズカタログの様に、顧客毎にアピールする商品カテゴリが違うようなドキュメントを一度に生成するオンデマンド印刷で非常に有効となる。
なお、本発明は、複数の機器(例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
本発明の実施形態に係るコンピュータシステム構成図 本発明の実施形態に係るコンピュータシステム構成図 本発明の実施形態に係るコンピュータモジュールの概略図 本発明の実施形態に係るメニューバー、ツールバー、ワークエリア、フローティングパレットを含む典型的なアプリケーションのメインウインドウとコンテナ間のリンクを持つ典型的なコンテナの一例を示す図 本発明の実施形態に係るインターフェイスの一例によるコンテナの表現の16パターンの一例を示す図 本発明の実施形態に係る典型的なコンテナルールの一例を示す図 本発明の実施形態に係るリンクを作成するUIの一例を示す図 本発明の実施形態に係るレイアウト計算のフローの一例を示す図 本発明の実施形態に係るレイアウト計算のフローの一例を示す図 本発明の実施形態に係る図7のフローに対応するUIの一例を示す図 本発明の実施形態に係るマルチレコードの概要図 第1実施形態における全体フローの一例を示す図 第1実施形態における図10のUIの一例を示す図 第1実施形態におけるフローエリアの設定ダイアログのUIの一例を示す図 第1実施形態におけるサブテンプレートのレイアウトの一例を示す図 第1実施形態におけるサブテンプレートのレイアウトフローの一例を示す図 第1実施形態における条件式の設定UIの一例を示す図 第1実施形態における条件式を判定するフローの一例を示す図 第1実施形態における条件式を判定するフローの一例を示す図 第1実施形態におけるフローエリア内レイアウト計算フローの一例を示す図 第1実施形態におけるサブテンプレートのレイアウトの一例を示す図 複数ページにわたるフローエリアを設定するUIの一例を示す図 フローエリアの位置とサイズを変更するUIの一例を示す図 繰り返しのあるフローエリアとそれにデータを挿入したときの概念図 複数ページにわたるフローエリアにサブテンプレートをレイアウトするフローの一例を示す図 テンプレートデータの構成の一例を示す図 マルチレコードのテンプレートデータの構成の一例を示す図 第1実施形態のレイアウト編集システムの動作を説明する概略図 第3実施形態における条件式の設定UI例を示す図 第3実施形態におけるレイアウト処理フローの図 第3実施形態におけるテンプレート決定処理のフロー図 第3実施形態におけるサブテンプレートのレイアウトフロー図 第3実施形態におけるBreak処理の例を示す図 第4実施形態における外部参照できる条件式のフォーマットを示す図 第4実施形態における外部条件式の読み込み処理フロー図 レイアウト計算時におけるコンテナの集合について説明した図 レイアウト最適化処理を説明するための図 バリアブルプリントの一例を示した図 第3実施形態におけるBreak処理の例を示す図

Claims (12)

  1. データベースからレイアウトすべきコンテンツデータを抽出するための抽出条件が関連づけられた領域を有する1つのテンプレートを用いてレイアウト処理を実行する文書処理装置であって、
    前記抽出条件を満たすコンテンツデータを前記データベースから取得する取得手段と、
    前記取得手段により取得されたコンテンツデータを前記領域内に配置することができない場合、前記抽出条件が設定された領域を有するテンプレートを新たに生成する生成手段と
    を有することを特徴とする文書処理装置。
  2. 前記生成手段は、前記取得手段により取得されたコンテンツデータが収まるまで前記領域を有するテンプレートを繰り返し生成することを特徴とする請求項1に記載の文書処理装置。
  3. 前記生成手段は、前記領域を有する所定のテンプレートを複製することを特徴とする請求項1または2に記載の文書処理装置。
  4. データベースからレイアウトすべきコンテンツデータを含むレコードを抽出するための抽出条件が関連づけられた領域を有する1つのテンプレートを用いてレイアウト処理を実行する文書処理装置であって、
    前記コンテンツデータが入力される部分領域が配置されたサブテンプレートを作成するテンプレート作成手段と、
    前記抽出条件を満たすコンテンツデータを含む複数のレコードを前記データベースから取得する取得手段と、
    前記取得手段によって取得された複数のレコードの1つのレコードに含まれるコンテンツデータを前記サブテンプレートに含まれる部分領域に入力して当該サブテンプレート内のレイアウトを決定する処理を、前記複数のレコードについて実行するレイアウト手段と、
    前記レイアウト手段を複数のレコードについて実行することで得られた複数のサブテンプレートを前記領域内に配置できない場合、前記抽出条件が設定された領域を有するテンプレートを新たに生成する生成手段と
    を有することを特徴とする文書処理装置。
  5. 取得手段と生成手段とを有する文書処理装置における、データベースからレイアウトすべきコンテンツデータを抽出するための抽出条件が関連づけられた領域を有する1つのテンプレートを用いてレイアウト処理を実行するための文書処理方法であって、
    取得手段が、前記抽出条件を満たすコンテンツデータを前記データベースから取得する取得工程と、
    生成手段が、前記取得工程により取得されたコンテンツデータを前記領域内に配置することができない場合、前記抽出条件が設定された領域を有するテンプレートを新たに生成する生成工程と
    を有することを特徴とする文書処理方法。
  6. 前記生成工程は、前記取得工程により取得されたコンテンツデータが収まるまで前記領域を有するテンプレートを繰り返し生成することを特徴とする請求項5に記載の文書処理方法。
  7. 前記生成工程では、前記領域を有する所定のテンプレートを複製することを特徴とする請求項5または6に記載の文書処理方法。
  8. テンプレート作成手段と取得手段と生成手段とレイアウト手段と生成手段とを有する文書処理装置により実行される、データベースからレイアウトすべきコンテンツデータを含むレコードを抽出するための抽出条件が関連づけられた領域を有する1つのテンプレートを用いてレイアウト処理を実行するための文書処理方法であって、
    テンプレート作成手段が、前記コンテンツデータが入力される部分領域が配置されたサブテンプレートを生成するテンプレート作成工程と、
    取得手段が、前記抽出条件を満たすコンテンツデータを含む複数のレコードを前記データベースから取得する取得工程と、
    レイアウト手段が、前記取得工程によって取得された複数のレコードの1つのレコードに含まれるコンテンツデータを前記サブテンプレートに含まれる部分領域に入力して当該サブテンプレート内のレイアウトを決定する処理を、前記複数のレコードについて実行するレイアウト工程と、
    生成手段が、前記レイアウト工程を複数のレコードについて実行することで得られた複数のサブテンプレートを前記領域内に配置できない場合、前記抽出条件が設定された領域を有するテンプレートを新たに生成する生成工程と
    を有することを特徴とする文書処理方法。
  9. データベースからレイアウトすべきコンテンツデータを抽出するための抽出条件が関連づけられた領域を有する1つのテンプレートを用いてレイアウト処理を実行するためのプログラムであって、
    前記抽出条件を満たすコンテンツデータを前記データベースから取得する取得手段と、
    前記取得手段により取得されたコンテンツデータを前記領域内に配置することができない場合、前記抽出条件が設定された領域を有するテンプレートを新たに生成する生成手段と
    してコンピュータを機能させることを特徴とするプログラム。
  10. 前記生成手段は、前記取得手段により取得されたコンテンツデータが収まるまで前記領域を有するテンプレートを繰り返し生成することを特徴とする請求項9に記載のプログラム。
  11. 前記生成手段は、前記領域を有する所定のテンプレートを複製することを特徴とする請求項9または10に記載のプログラム。
  12. データベースからレイアウトすべきコンテンツデータを含むレコードを抽出するための抽出条件が関連づけられた領域を有する1つのテンプレートを用いてレイアウト処理を実行するプログラムであって、
    前記コンテンツデータが入力される部分領域が配置されたサブテンプレートを生成するテンプレート作成手段と、
    前記抽出条件を満たすコンテンツデータを含む複数のレコードを前記データベースから取得する取得手段と、
    前記取得手段によって取得された複数のレコードの1つのレコードに含まれるコンテンツデータを前記サブテンプレートに含まれる部分領域に入力して当該サブテンプレート内のレイアウトを決定する処理を、前記複数のレコードについて実行するレイアウト手段と、
    前記レイアウト手段を複数のレコードについて実行することで得られた複数のサブテンプレートを前記領域内に配置できない場合、前記抽出条件が設定された領域を有するテンプレートを新たに生成する生成手段と
    してコンピュータを機能させることを特徴とするプログラム。
JP2007279382A 2007-10-26 2007-10-26 文書処理装置及び文書処理方法及びプログラム Expired - Fee Related JP4549379B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007279382A JP4549379B2 (ja) 2007-10-26 2007-10-26 文書処理装置及び文書処理方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007279382A JP4549379B2 (ja) 2007-10-26 2007-10-26 文書処理装置及び文書処理方法及びプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2005054534A Division JP4095617B2 (ja) 2005-02-28 2005-02-28 文書処理装置及び文書処理方法及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2008117393A true JP2008117393A (ja) 2008-05-22
JP4549379B2 JP4549379B2 (ja) 2010-09-22

Family

ID=39503209

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007279382A Expired - Fee Related JP4549379B2 (ja) 2007-10-26 2007-10-26 文書処理装置及び文書処理方法及びプログラム

Country Status (1)

Country Link
JP (1) JP4549379B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011210128A (ja) * 2010-03-30 2011-10-20 Dainippon Printing Co Ltd 組版装置、小組作成方法及び小組作成プログラム
JP2014053040A (ja) * 2013-11-20 2014-03-20 Canon Inc 情報処理装置、情報処理方法及びプログラム
JP2019205128A (ja) * 2018-05-25 2019-11-28 京セラドキュメントソリューションズ株式会社 画像処理装置及び画像形成装置
JP2020186917A (ja) * 2019-05-09 2020-11-19 株式会社島津製作所 分析装置のレポート作成装置、方法およびプログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61241865A (ja) * 1985-04-19 1986-10-28 Hitachi Ltd 文書編集装置
JPH06187333A (ja) * 1992-12-15 1994-07-08 Fuji Xerox Co Ltd 文書作成装置
JPH07129658A (ja) * 1993-11-02 1995-05-19 Toppan Printing Co Ltd レイアウトデザイン装置
US5845303A (en) * 1994-12-06 1998-12-01 Netpodium, Inc. Document processing using frame-based templates with hierarchical tagging
JP2001067345A (ja) * 1999-08-30 2001-03-16 Hitachi Ltd 文書作成装置
JP2002297572A (ja) * 2001-03-30 2002-10-11 Seiko Epson Corp ディジタルコンテンツ作成システム及びディジタルコンテンツ作成プログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61241865A (ja) * 1985-04-19 1986-10-28 Hitachi Ltd 文書編集装置
JPH06187333A (ja) * 1992-12-15 1994-07-08 Fuji Xerox Co Ltd 文書作成装置
JPH07129658A (ja) * 1993-11-02 1995-05-19 Toppan Printing Co Ltd レイアウトデザイン装置
US5845303A (en) * 1994-12-06 1998-12-01 Netpodium, Inc. Document processing using frame-based templates with hierarchical tagging
JP2001067345A (ja) * 1999-08-30 2001-03-16 Hitachi Ltd 文書作成装置
JP2002297572A (ja) * 2001-03-30 2002-10-11 Seiko Epson Corp ディジタルコンテンツ作成システム及びディジタルコンテンツ作成プログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011210128A (ja) * 2010-03-30 2011-10-20 Dainippon Printing Co Ltd 組版装置、小組作成方法及び小組作成プログラム
JP2014053040A (ja) * 2013-11-20 2014-03-20 Canon Inc 情報処理装置、情報処理方法及びプログラム
JP2019205128A (ja) * 2018-05-25 2019-11-28 京セラドキュメントソリューションズ株式会社 画像処理装置及び画像形成装置
JP2020186917A (ja) * 2019-05-09 2020-11-19 株式会社島津製作所 分析装置のレポート作成装置、方法およびプログラム
JP7322494B2 (ja) 2019-05-09 2023-08-08 株式会社島津製作所 分析装置のレポート作成装置、方法およびプログラム

Also Published As

Publication number Publication date
JP4549379B2 (ja) 2010-09-22

Similar Documents

Publication Publication Date Title
JP4095617B2 (ja) 文書処理装置及び文書処理方法及びコンピュータプログラム
JP4208858B2 (ja) レイアウト処理方法およびレイアウト処理装置およびレイアウト処理プログラム
JP4756870B2 (ja) 文書処理装置及び文書処理方法並びにプログラム
JP4332477B2 (ja) レイアウト調整方法及び装置並びにプログラム
CN105723358B (zh) 用于交互式站点与应用的自动转换的系统和方法
KR100716084B1 (ko) 레이아웃 조정 방법 및 장치
US7500203B2 (en) Document processing method and system
US7814417B2 (en) Document processing method and system therefor
JP5252933B2 (ja) 文書処理装置、文書処理方法、及びプログラム
JP5173246B2 (ja) 情報処理装置および情報処理方法およびプログラム
US8788936B2 (en) Information processing apparatus and method
JP2008129702A (ja) 情報処理装置および制御方法および制御プログラム
JP2007328029A (ja) 情報処理装置および情報処理方法および情報処理プログラム
JP2006171979A (ja) レイアウト処理方法およびレイアウト処理装置およびレイアウト処理プログラム
US20100131566A1 (en) Information processing method, information processing apparatus, and storage medium
JP2009110391A (ja) 情報処理装置および制御方法および制御プログラム
JP4549379B2 (ja) 文書処理装置及び文書処理方法及びプログラム
CN101727042B (zh) 信息处理设备和信息处理设备的控制方法
JP2006107038A (ja) 情報処理装置および原稿編集方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
JP2006293430A (ja) 情報処理装置及び情報処理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100525

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100702

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100706

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130716

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees