(57)【要約】【課題】  電子文書の作成時にレイアウトエラーが発生すると、コンテンツの一部が欠けた電子文書がクライアントに配信される。この電子文書を受信したユーザは、望む情報を充分に閲覧できない。【解決手段】  文書テンプレートの定義に従い、レコードごとに管理されるコンテンツを複数のコンテナに挿入して電子文書を生成する(S3001)。その際、コンテナにコンテンツを挿入した際のオーバフローを検出し(S3002)、オーバフローしたデータをアノテーション形式のデータとして電子文書に付加する(S3003)。【選択図】  図26
2007316873.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ領域を有するテンプレートのレイアウトを該複数のデータ領域に入力されるコンテンツデータに応じて動的に変更し、電子文書を生成する情報処理方法であって、
前記データ領域に前記コンテンツデータを挿入し、前記コンテンツデータのオーバフローが検出された場合、前記オーバフローしたデータを前記電子文書に付加する付加ステップを有することを特徴とする情報処理方法。
【請求項２】
前記付加ステップは、前記オーバフローしたデータをアノテーション形式のデータとして前記電子文書に付加し、
さらに、前記アノテーション形式のデータを前記電子文書とは別に表示する表示ステップを有することを特徴とする請求項1に記載された情報処理方法。
【請求項３】
文書テンプレートの定義に従い、レコードごとに管理されるコンテンツを複数のコンテナに挿入して電子文書を生成する情報処理方法であって、
前記コンテナにコンテンツを挿入した際のオーバフローを検出する検出ステップと、
前記オーバフローしたデータをアノテーション形式のデータとして前記電子文書に付加する付加ステップとを有することを特徴とする情報処理方法。
【請求項４】
前記付加ステップは、前記コンテナに収まらなかった前記コンテンツのテキストデータを前記オーバフローしたデータとすることを特徴とする請求項1に記載された情報処理方法。
【請求項５】
前記付加ステップは、前記コンテナに挿入した前記コンテンツの画像データが予め定めた縮小率よりも縮小された場合、前記縮小前の画像データを前記オーバフローしたデータとすることを特徴とする請求項3または請求項4に記載された情報処理方法。
【請求項６】
前記付加ステップは、前記オーバフローの発生位置に関する情報を前記アノテーション形式のデータに付加することを特徴とする請求項3から請求項5の何れかに記載された情報処理方法。
【請求項７】
さらに、前記アノテーション形式のデータに付加された前記位置情報に基づき、前記アノテーション形式のデータの存在を示すマーカを付加した、前記電子文書に相当する文書を表示するステップを有することを特徴とする請求項6に記載された情報処理方法。
【請求項８】
さらに、前記マーカに対するユーザの操作に応じて、前記アノテーション形式のデータを、前記文書とは別に表示するステップを有することを特徴とする請求項7に記載された情報処理方法。
【請求項９】
文書テンプレートの定義に従い、レコードごとに管理されるコンテンツを複数のコンテナに挿入した電子文書を受信する受信ステップと、
前記電子文書にアノテーション形式のデータが付加されている場合、前記アノテーション形式のデータが含む位置情報に基づき、前記アノテーション形式のデータの存在を示すマーカを付加した、前記電子文書に相当する文書の表示データを生成する生成ステップとを有することを特徴とする情報処理方法。
【請求項１０】
さらに、前記マーカに対するユーザの操作に応じて、前記文書とは別に、前記アノテーション形式のデータを表示する表示データを生成するステップを有することを特徴とする請求項9に記載された情報処理方法。
【請求項１１】
さらに、前記電子文書に前記アノテーション形式のデータが付加されている場合、前記アノテーション形式のデータが含む位置情報に基づき、前記アノテーション形式のデータの存在を示すマーカを付加した、前記電子文書に相当する文書の印刷データを形成する第一の形成ステップと、
前記文書とは別に、前記マーカに関連付けた前記アノテーション形式のデータを印刷する印刷データを形成する第二の形成ステップとを有することを特徴とする請求項9または請求項10に記載された情報処理方法。
【請求項１２】
さらに、前記電子文書に前記アノテーション形式のデータとしてテキストデータが付加されている場合、前記アノテーション形式のデータが含む位置情報に基づき、前記テキストデータがオーバフローした領域の印刷条件を調整する調整ステップと、
前記印刷条件の調整により前記領域に前記テキストデータを含めた、前記電子文書に相当する文書の印刷データを形成する形成ステップを有することを特徴とする請求項9または請求項10に記載された情報処理方法。
【請求項１３】
文書テンプレートの定義に従い、レコードごとに管理されるコンテンツを複数のコンテナに挿入して電子文書を生成する情報処理装置であって、
前記コンテナにコンテンツを挿入した際のオーバフローを検出する検出手段と、
前記オーバフローしたデータをアノテーション形式のデータとして前記電子文書に付加する付加手段とを有することを特徴とする情報処理装置。
【請求項１４】
文書テンプレートの定義に従い、レコードごとに管理されるコンテンツを複数のコンテナに挿入した電子文書を受信する受信手段と、
前記電子文書にアノテーション形式のデータが付加されている場合、前記アノテーション形式のデータが含む位置情報に基づき、前記アノテーション形式のデータの存在を示すマーカを付加した、前記電子文書に相当する文書の表示データを生成する生成手段とを有することを特徴とする情報処理装置。
【請求項１５】
情報処理装置を制御して、請求項1から請求項12の何れかに記載された情報処理を実現することを特徴とするコンピュータプログラム。
【請求項１６】
請求項15に記載されたコンピュータプログラムが記録されたことを特徴とするコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レイアウトシステムにおける装置/媒体、およびレイアウト手法に関するものである。
【０００２】
特に、クライアントからの指示に基づき、選択されたコンテンツをテンプレートに流し込んでレイアウトを行い、結果のドキュメントをクライアントに送信する装置/媒体に関するものである。
【背景技術】
【０００３】
近年、商品の多品種化による商品の短命化や、インターネットの普及による消費者のカスタマイズサービス指向などの要因から、CRM(Customer Relationship Management)、One-to-Oneマーケティングが注目されている。これらの手法により、顧客満足度を高め、顧客の開拓や囲い込みを目指そうとする。
【０００４】
One-to-Oneマーケティングは、データベースマーケティングの一種である。顧客の年齢、性別、趣味、嗜好、購買履歴など個人に属する情報をデータベース化し、その内容を分析して、顧客のニーズに合った提案を行う。その代表的な手法として、バリアブルプリントが挙げられる。近年、デスクトップパブリッシング(DTP)技術の進展とディジタル印刷装置の普及に伴い、顧客ごとに文書をカスタマイズして出力するバリアブルプリントシステムが開発された。バリアブルプリントシステムには、顧客ごとに異なるボリュームのコンテンツを最適レイアウトすることが求められる。
【０００５】
また、Webページでテンプレートと、そのテンプレートに流し込むコンテンツを選択して、その結果得られる電子文書をクライアントに送信するシステムが存在する。このようなシステムは、ユーザの好みに応じてカスタマイズされた電子カタログを配信する際などに利用される。このようなシステムの一部は、コンテンツやテンプレートを管理し、提供するコンテンツサーバによって形成される。また、このようなシステムは、ユーザの選択に応じた電子文書を生成するためにレイアウトシステムを利用する。
【０００６】
自動レイアウトシステムは、テキストやイメージなどコンテンツのボリュームに応じて、テンプレートに従い配置したコンテナのサイズやコンテナ間の距離を変更することができる。つまり、各コンテナのサイズやコンテナ間隔を可変に設定することができる。そのため、自動レイアウトシステムは、一つのテンプレートにより、様々なボリュームのコンテンツと、それらコンテンツの組み合わせに対応することができる。
【０００７】
しかし、自動レイアウトシステムは、異なるコンテンツや、コンテンツの組み合わせの違いなどにより、各コンテナのサイズやコンテナ間隔に設定した可変範囲を超えるデータが流し込まれることがある。この場合、テキストがコンテナに収まり切らないテキストオーバフローや、イメージがコンテナに収まり切らないイメージオーバフローなどのレイアウトエラーが発生する。
【０００８】
ユーザがレイアウトエラーの発生をチェックし、レイアウトエラーを修正するためにテンプレートを再編集するためのテンプレートエディタがある。テンプレートエディタには、コンテンツをテンプレートに流し込んでレイアウトする際にプリフライト（preflight、事前点検）を行い、そのプリフライト結果をユーザに通知する校正機能を備えるものが存在する。テンプレートを編集するユーザ（以下「テンプレート編集者」と呼ぶ）は、プリフライト結果を参照してテンプレートを再編集し、レイアウトエラーが発生しないテンプレートになるよう、各コンテナのサイズやコンテナ間隔の可変範囲やレベルを変更する。
【０００９】
なお、プリフライトとは、DTPなどの分野において、出力前にデータをチェックして、文書の品質を管理する処理である。例えば、フォント、リンクと画像、カラーとインキ、プリント設定についてのチェック、フォントの適否、画像のリンク更新の不備、カラーモードなどのチェックを行う。
【００１０】
テンプレート編集者は、コンテンツサーバからテンプレートに流し込むコンテンツをダウンロードした後、校正機能を用いて、レイアウトエラーが発生しないテンプレートの作成、編集作業を行う。
【００１１】
一方、コンテンツサーバの管理者は、テンプレート編集者によって作成されたレイアウトエラーが発生しないテンプレートをコンテンツサーバに登録する。そして、電子文書を要求するユーザがWebページ上でテンプレートを選択可能にするために、Webページ上にテンプレートを配置する。
【００１２】
また、レイアウトエラーが発生した場合、コンテンツサーバは、レイアウトエラーを検知してログファイルに記録する。しかし、コンテンツサーバは、レイアウトエラーになった場合も、コンテンツの一部が欠けた電子文書をクライアントに配信する。このような電子文書を受信したユーザは、望む情報を充分に閲覧できない場合がある。
【００１３】
コンテンツの欠けを補う技術として、コンテンツがプレビュー画面に表示し切れない場合に、ヘルプを表示したり、電子文書のメモ書き技術を利用した電子付箋によって、コンテンツの欠けを補う技術がある（例えば特許文献1）。
【００１４】
しかし、コンテンツサーバが扱うコンテンツは、随時、管理者によって追加、更新される。そのため、校正機能を用いてレイアウトエラーが発生しないように編集したテンプレートも、新コンテンツまたは新コンテンツと既存コンテンツの組み合わせによりレイアウトエラーを発生させる可能性がある。言い替えれば、レイアウトシステムは、コンテンツがうまく収まるように動的にレイアウトを調整するが、その調整にも限界がある。
【００１５】
テンプレート編集者は、レイアウトエラーが発生すると、ログファイルを参照して問題が発生したテンプレートを特定し、そのテンプレートを修正する。その際、テンプレートで問題が起きたコンテンツのレコード群、および、そのレコード群がテンプレートに流し込まれた順序をログから判定する。そして、そのレコード群をマニュアル指定し、コンテンツサーバからレコード群をダウンロードする。そして、レコード群の流し込み順をマニュアル指定して、テンプレートエディタによってレイアウトエラーを再現する。
【００１６】
このように、レイアウトエラーが発生した場合のテンプレート修正作業は手間のかかる作業である。
【００１７】
【特許文献１】特開2005-129062号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
本発明は、レイアウトエラーによりオーバフローが発生した電子文書の、オーバフローしたデータを補完することを目的とする。
【００１９】
また、レイアウトエラーの検知を容易にすることを他の目的とする。
【課題を解決するための手段】
【００２０】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００２１】
本発明にかかる情報処理は、複数のデータ領域を有するテンプレートのレイアウトを該複数のデータ領域に入力されるコンテンツデータに応じて動的に変更し、電子文書を生成する情報処理方法であって、前記データ領域に前記コンテンツデータを挿入し、前記コンテンツデータのオーバフローが検出された場合、前記オーバフローしたデータを前記電子文書に付加する付加ステップを有することを特徴とする。
【００２２】
また、文書テンプレートの定義に従い、レコードごとに管理されるコンテンツを複数のコンテナに挿入して電子文書を生成する際に、前記コンテナにコンテンツを挿入した際のオーバフローを検出し、前記オーバフローしたデータをアノテーション形式のデータとして前記電子文書に付加することを特徴とする。
【００２３】
また、文書テンプレートの定義に従い、レコードごとに管理されるコンテンツを複数のコンテナに挿入した電子文書を受信し、前記電子文書にアノテーション形式のデータが付加されている場合、前記アノテーション形式のデータが含む位置情報に基づき、前記アノテーション形式のデータの存在を示すマーカを付加した、前記電子文書に相当する文書の表示データを生成することを特徴とする。
【発明の効果】
【００２４】
本発明によれば、レイアウトエラーによりオーバフローが発生した電子文書の、オーバフローしたデータを補完することができる。
【００２５】
また、レイアウトエラーの検知を容易にすることができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明にかかる実施例の情報処理を図面を参照して詳細に説明する。
【実施例１】
【００２７】
［システムの構成］
図1はユーザの要求に応じてバリアブルデータから電子カタログを生成し、ユーザに配信する電子カタログ配信システム100の構成例を示すブロック図である。
【００２８】
管理者用コンピュータ101が実行するテンプレート編集アプリケーション121は、ソフトウェアコンポーネントであるユーザインタフェイス(UI) 128とレイアウトエンジン127を含む。UI 128は、ユーザに表示を提供し、コンテンツサーバ103が管理するデータベース(DB) 119内のデータとデータソースを関連付けるメカニズムを提供する。また、レイアウトエンジン127は、詳細は後述するが、矩形範囲として与えられる制限やサイズによって、矩形と線の位置を演算する。なお、UI 128とレイアウトエンジン127は、通信チャネル123を介して通信する。
【００２９】
管理者用コンピュータ101は、Webブラウザ122をインタフェイスとして、ネットワーク107に接続されたコンテンツサーバ103、ファイルサーバ104、レイアウトサーバ105、Webサーバ106、プリンタサーバ108などと通信する。また、ユーザコンピュータ102は、Webブラウザ125をインタフェイスとして、ネットワーク107に接続されたWebサーバ106などと通信する。なお、ネットワーク107は、ローカルエリアネットワーク(LAN)やインターネットなどの広域ネットワーク(WAN)である。
【００３０】
Webブラウザ122、125は、Webページを閲覧するためのアプリケーションである。Webブラウザ122、125は、Webサーバ106などが提供するWebページのアクセスや、Webサーバ106などが提供するリクエストフォーム（HTMLフォームなど）を介してWebサーバ106などへ情報を送信する処理などを行う。また、管理者用コンピュータ101のWebブラウザ122は、通信チャネル124を介して、テンプレート編集アプリケーション121と通信するとともに、テンプレート編集アプリケーション121とWebサーバ106間などのデータの送受信を仲介する。
【００３１】
Webサーバ106は、Webブラウザ122、125に送信したリクエストフォームの返信を受信すると、当該フォームに記載されたユーザの要求内容に応じて、コンテンツサーバ103に文書の生成を依頼する。つまり、ユーザから要求されたコンテンツと文書テンプレートによる電子文書の生成をコンテンツサーバ103に依頼し、コンテンツサーバ103が生成した電子文書をレスポンスとしてWebブラウザ122、125に返す。なお、コンテンツサーバ103はアプリケーションサーバでもある。
【００３２】
ファイルサーバ104は、ファイルシステムに文書テンプレートを含む様々なデータを格納し、要求されたデータを要求元のサーバなどに供給する。
【００３３】
レイアウトサーバ105のレイアウトエンジン126は、コンテンツサーバ103から供給されたデータと、ファイルサーバ104から供給された文書テンプレートを、レイアウトエンジン126によって結合し、レイアウトを行って電子文書を生成する。管理者用コンピュータ101のレイアウトエンジン127は、レイアウトサーバ105のレイアウトエンジン126と同様の機能を有する。従って、レイアウトエンジン126は、レイアウトエンジン127と通信してレイアウトエンジン127から受信した情報に基づき、上記の演算を代行し、その演算結果をレイアウトエンジン127に返す。こうすれば、管理者用コンピュータ101の演算能力をレイアウトサーバ105が補い、レイアウト編集処理を高速化することができる。
【００３４】
［コンピュータの構成］
図2は管理者用コンピュータ101の構成例を示すブロック図である。なお、ユーザコンピュータ102や上記のサーバも図2とほぼ同様の構成を有する。
【００３５】
CPU 135は、上記のテンプレート編集アプリケーション121やWebブラウザ122のようなソフトウェアの全体または一部を実行する。とくに、レイアウト編集に伴い必然的に生じる表示処理は、CPU 135が、システムバス134を介して後述する構成を制御することで実現される。
【００３６】
ハードディスクドライブ(HDD) 139やメモリ136のROMは、オペレーティグシステム(OS)、テンプレート編集アプリケーション121、Webブラウザ122のようなソフトウェアを格納する。
【００３７】
CPU 135は、I/O 143に接続されたキーボード132やポインティグデバイス133を介して入力されるユーザ指示に従い、HDD 139、CDROMドライブ142に挿入されたCDROMなどに格納されたプログラムやデータをメモリ136のRAMにロードする。また、ネットワークインタフェイスカード(NIC) 138を介してネットワーク107に接続されたファイルサーバ104にアクセスし、ファイルサーバ104が提供するプログラムやデータをダウンロードする。そして、プログラムを実行し、データを処理して、その経過や結果をビデオインタフェイス(I/F) 137に接続されたモニタ144に表示する。そして、ユーザの指示に従い、プログラムの実行結果やデータの処理結果を出力する。
【００３８】
プログラムの実行結果やデータの処理結果の出力としては、HDD 139への格納、NIC 138を介してネットワーク107に接続されたコンテンツサーバ103やファイルサーバ104へのアップロードなどがある。あるいは、USB (Universal Serial Bus)などの汎用I/F 140に接続されたローカルのプリンタ145による印刷などでもよい。勿論、NIC 138を介してネットワーク107に接続されたプリンタサーバ108に印刷データを送り、USBなどの汎用I/F 129によってプリンタサーバ108に接続されたプリンタ109を利用して印刷することもできる。
【００３９】
［ユーザインタフェイス］
図3はUI 128が提供するウィンドウ301を示す図である。なお、ウィンドウ301はモニタ144に表示される。
【００４０】
ウィンドウ301は、表示/非表示が切替可能なメニューバー302を備える。また、モニタ144のスクリーン上の任意位置に移動して配置可能なフローディングツールバー303と、同様にフローティング状態のワークエリア306およびパレット311を備える。
【００４１】
メニューバー302のメニューアイテム304の何れかをクリックすると、ドロップダウン表示により、メニューが階層表示される。ツールバー303は、例えばファイルメニューの環境設定メニューによって非表示/表示が設定可能な多くのツールボタン305やウィジット（widget、部品）を備える。
【００４２】
ワークエリア306内には、カーソルポインタ313が表示される。また、非表示/表示が設定可能なルーラ308は、ワークエリア306内のポインタ、文書テンプレート309、ライン、マージンガイド310、コンテナまたはオブジェクトの位置を示すために使われる。また、ワークエリア306は、スクロールガイド307によりスクロール可能である。また、文書テンプレート309は、頁が複数あることを示すことができる。
【００４３】
パレット311は、移動、リサイズおよびクローズするためのウィンドウコントロール312をもち、可変データライブラリのような追加機能のアクセス用である。パレット311の配置として、ワークエリア306の前面に表示する、または、オブジェクトの背面に隠すを選ぶことができる。また、パレット311の配置制限として、ウィンドウ301の範囲内、ウィンドウ301の外側で部分的表示、または、ウィンドウ301の外側で全体表示を選ぶことができる。
【００４４】
図4はツールバー303に表示可能な代表的なボタン305を示す図である。
【００４５】
選択ツールボタン403は、コンテナの辺を選択、移動、サイズ変更し、そしてロック、ロック解除するためのボタンである。コンテナの周りに選択ボックスをドラッグする、または、キーボード132の例えばCTRLキーをお押しながらコンテナを選択するなどにより、複数のコンテナが選択可能である。
【００４６】
イメージコンテナツールボタン405は、スタティックまたは可変イメージをもつコンテナを作成するために使う。テキストコンテナツールボタン404は、スタティックまたは可変テキストをもつコンテナを作成するために使う。リンクツールボタン406は、コンテナ間の距離をコントロールするリンクを作成するために使う。
【００４７】
これらのボタンは、操作状況に合わせて変化するアイコンのツールチップとして、UI 128に実装される。
【００４８】
［文書テンプレート］
ワークエリア306は、文書テンプレート309のデザインを表示、編集するために使う。ユーザは、準備段階において、文書の表示概観をデザインし、そしてマージされた文書が可変データのボリュームやサイズに基づき、どのように変化するかを理解することができる。
【００４９】
もし、外部データソースが文書テンプレートにリンクされている場合、現在の文書をプレビューすることができるように、可変テキストとイメージがそれらのコンテナに表示される。
【００５０】
文書の構造と可変データのコンテナを描写する視覚的な手掛りは、カーソルポインタ313をコンテナ上に移動したときや、コンテナを選択したときにいつも表示される。
【００５１】
与えられた文書テンプレート309の頁サイズはウィンドウサイズによって指定される。各文書の実際の頁数は、可変データによって変化する可能性がある。もし、一頁内にフィットできなかった場合は、追加頁が自動生成される。
【００５２】
各頁内の境界線（マージンガイド310）は、頁上の表示可能なオブジェクトの最大幅を示す。
【００５３】
また、図4には文書テンプレート309に設定したオブジェクトの例を示す。コンテナ407、408は、任意位置に設定可能なアンカ409により固定された辺414、非固定の辺410、辺410と辺411を結ぶリンク412、そしてスライダ413をもつ。
【００５４】
［コンテナ］
コンテナは、文書テンプレート309内の固定または可変テキスト、イメージをもつスペースで、他のコンテナやオブジェクトとともにレイアウトされる。コンテナは、カーソルポインタ313によって、移動し、リサイズし、そして再作成することが可能である。より正確には、コンテナは、設定の集合、視覚的表現、そして相互作用(interaction)と編集動作をもつ。コンテナを定義すると次のようになる。
【００５５】
コンテナは、固定または可変のコンテンツをもつ。可変コンテンツは、データソースから取得し、異なる文書では異なるかもしれない、という意味で動的である。可変コンテンツは、短時間に変更されたり、アニメーションコンテンツを含むことを意図しない。同様に、固定コンテンツは、コンテナを使って生成するすべての文書において同様に表示される。しかし、可変コンテナ（動的オブジェクト）の動作によって、固定コンテンツは、各文書において位置が異なるかもしれない。
【００５６】
コンテナは、コンテンツに適用される背景色、ボーダ、フォント、スタイルのような、テキスト設定のような装飾機能をもつ。
【００５７】
コンテナは、文書生成時にデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、表示および印刷物上で可視である。可変コンテンツは、データソースから特定のデータの表示をもたらす。コンテナのこの表現は、例えば印刷されるか、モニタ144に表示されるか、その両方が可能である。
【００５８】
コンテナは、ユーザインタフェイスをもつ。例えばコンテナの編集、そして表示設定のためのインタラクティブなグラフィカルユーザインタフェイス(GUI)をもつ。インタフェイスの要素は、コンテナの編集時はモニタ144に表示されるが、文書の表示時は表示されず、印刷時は印刷されない。UI 128は、背景色やフォントのようなコンテナの装飾機能の幾つかを表示し、コンテナ編集や表示設定を許容するための機能を追加する。UI 128の特別な機能には、例えばボーダまたはコンテナのサイズや位置を対話的に変更し、表示するための角アイコンがある。さらに、コンテナがデータソースからデータをマージされた場合にコンテナの動作を示すために上書きされる数、線、アイコン、テキストがある。
【００５９】
［コンテナの制約］
コンテナは、各文書によって表示されるコンテンツを、どのように結び付けるかを制御する制約がある。これらの制約は（固定、可変コンテンツをコンテナと結び付けるとともに）、ユーザが一つの文書テンプレートから、多数の文書の生成を制御する主要な方法である。制約の一例は『このコンテナのコンテンツの高さは、最大値4インチです』である。制約のもう一つの例は『コンテナのコンテンツの左端は、各文書で同じ水平位置に表示しなければならない』である。ここに記述される内容は、GUIを使って、このような制約を表示、編集するための様々な方法である。
【００６０】
イメージが頁上に定義された場所をもつように、固定コンテンツの配置を指定するコンテンツプレイスホルダはディジタル印刷技術ではよく知られている。以下では、コンテナは編集可能な位置とサイズをもち、表示されると想定するかもしれない。ここでは、可変データの印刷に特化した方法による表示、編集に焦点を合わせて説明する。
【００６１】
ユーザは、コンテナにより、文書のコンテンツのサイズ、位置を指定することが可能である。幾つかの文書は、一つの文書テンプレートから生成される。従って、コンテナに多数の可能性と制約を指定し、表示するためのUIが必要になる。
【００６２】
一つのコンテナの辺は、関連付けられたコンテンツが文書内で表示される仮想の境界線を定義する。ここでコンテナの左辺を論じることは、関連付けられたコンテンツがどんな文書内でも表示可能な最左端の辺を論じることと同じである。同様に、コンテナの高さを論じることは、作成された文書に関連付けられたコンテンツの高さの制約を論じることである。以下で、UI 128を参照して、コンテナの辺または大きさを論じる際に、上記の区別を明らかにする。
【００６３】
以下では、コンテンツの表示を制限するために使う、幾つかの値を定義する用語『固定』は、すべての文書で同じである。
【００６４】
もし、コンテナの幅が固定ならば、関連付けられたコンテンツに割り当てられる幅は、すべての文書で同じになる。もし、コンテナの高さが固定ならば、関連付けられたコンテンツに割り当てられる高さは、すべての文書で同じになる。
【００６５】
もし、距離の制約が固定ならば、指定された距離は、すべての文書のための制約である。もし、コンテナの左右辺が固定ならば、辺の水平位置が、頁に関して、すべての文書で同じである。しかし、コンテナの高さまたは垂直方向の位置は可変である。例えば、もしコンテナの左辺が固定ならば、関連付けられたコンテンツは、一つの文書では頁の上部近くに表示され、他の文書では頁の下部近くに表示されるかもしれないが、左辺はすべてのケースで同じ水平位置にある。
【００６６】
もし、コンテナの上下辺が固定ならば、コンテナの高さおよび辺の垂直位置が、頁に関して、すべての文書で同じである。しかし、コンテナの幅または水平位置は可変である。
【００６７】
コンテナの垂直軸は、コンテナの左右辺が平行で、それらの中間に位置する想像上の垂直線である。もし、コンテナの垂直軸が固定ならば、コンテナの左右辺の水平位置の平均は、すべての文書で同じである。この制約でも、コンテナの幅は変化可能である。左右辺の両方が異なる文書では、左右辺は垂直軸に遠いかもしれないし近いかもしれないが、垂直軸はすべての文書で同じ水平位置にある。しかし、コンテナの高さと水平位置は、この制約に影響されない。
【００６８】
同様に、もし、水平軸が固定ならば、コンテナの上下辺の垂直位置を制約するが、コンテナの高さは、この制約に影響されない。
【００６９】
また、水平、垂直軸の両方が固定ならば、コンテナの中心位置が固定されることを意味する。しかし、コンテナの幅、高さは、この制約に影響されない。
【００７０】
もし、コンテナの角、コンテナの辺の中間位置、または、コンテナの中心位置が固定ならば、すべての文書の同じ場所、そしてコンテナに関連付けられた同じ場所に、コンテンツが表示される。例えば、コンテナの左上角が固定ならば、配置されたコンテナの左上位置がすべての文書で同じになる。
【００７１】
垂直辺または軸は、頁の左辺または右辺、左マージンまたは右マージン、あるいは、他の水平位置に関連して固定である。同様に、水平辺または軸は、頁の上辺または下辺、マージン、あるいは、他の垂直位置に関連して固定である。用語『固定』は、すべての文書が同じ頁サイズであれば文書間に相違はないから、文書間で頁サイズが変わる場合にのみ重要になる。
【００７２】
用語『固定』の反対語『可変』は、辺、軸、角、中間位置または文書の制約が、文書間で変化するかもしれないことを意味する。しかし、文書の特定な設定でそうする必要がないかもしれない。例えば、変更による辺の実際の好ましい位置のような、他の外部制約があるが、もし外部制約が適用されないならば、辺は非固定としてラベル付けされてるので、辺の位置を変更することができる。
【００７３】
［コンテナ表示、編集］
●新規コンテナの作成方法
コンテナには、テキストコンテナとイメージコンテナの二種類がある。テキストコンテナはテキストと、埋め込みイメージをもつ。イメージコンテナは、イメージだけをもつ。
【００７４】
新規コンテナは、図4に示すテキストコンテナツールボタン404またはイメージコンテナツールボタン405をクリックして、文書テンプレート309に矩形をドラッグして作成する。他の方法としては、テキストコンテナツールボタン404またはイメージコンテナツールボタン405をクリックしてアクティブにした後、文書テンプレート309の任意位置をクリックしても、新規のコンテナを作成可能である。
【００７５】
既定サイズのコンテナを挿入するか、新規のコンテナサイズを設定するためのダイアログボックスまたは他のプロンプトが表示される。幾つかのコンテナは自動的に、前もって定義されたか、計算されたスキーマによって作成され配置される。
【００７６】
●コンテナの表示
設定されたコンテナの状態は、グラフィカルな表現で描画されるのが好ましい。幾つかの辺の状態は、幾つかの状況を分けて表現するために、グラフィック表示より少なくなるかもしれない。
【００７７】
図5はコンテナの模範的な辺ルールを例示する図である。
【００７８】
テンプレート編集アプリケーション121は、辺の状態を表現するために、実線503または破線504で辺を描き、アンカ506、507、509、ハンドル502、スライダ（図4に符号413で示す）、拡縮アイコン505、そして色を有す。なお、ハンドル502は、辺を移動、修正するためのコントロール点である。
【００７９】
図5におけるコンテナ表示ルールは次のとおりである。
(1)固定の辺は、実線で描画し、その中央付近にアンカ509を描画する
(2)幅が固定のコンテナは、左右辺を実線で描画する
(3)高さが固定のコンテナは、上下辺を実線で描画する
(4)軸は描画しない
(5)未描画の辺は、破線で描画し、その近傍に拡縮アイコン505を描画する
(6)交差する辺（または軸）が固定ならば、その交点にアンカ506（または507）
を描画する
(7)固定の辺で、アンカ509が非描画であれば、その中央付近にスライダ413を
描画す
(8)交差する辺（または軸）にアンカやスライダが非描画であれば、その交点
にハンドルを描画する
【００８０】
ルール1から3で保証する線は、もしそれらが固定または制限されているならば、破線で描画する。ルール5で保証する可変の辺は、破線で描画される。ルール6から8で保証する固定辺にはアンカを表示し、幾つかの固定辺にはスライダを表示し、他はハンドルを表示する。
【００８１】
上記において、辺は一度だけ描画されることが必要である。そして、ルールが描画すべき辺に及べば、その後、ルールが再び描画すべき辺に及ぶことはない。例えばコンテナがとても小さくてアイコンが互いに重なる、または、他の表示機能を不明瞭にするならば、アイコンをより簡略化する、または、アイコンを省略してもよい。
【００８２】
可変の辺の描画位置は、コンテナのコンテンツに依存する。後述するように、文書テンプレートにコンテンツがマージされて、UI 128によって可視になることを意味する『動的な校正処理』が使われる。また、すべての文書で平均化されるコンテナのコンテンツエリア、あるいは、可変の辺を、UI 128上のどこにレイアウトすべきかを決定する代替手段を使用してもよい。
【００８３】
これらのコンテンツ表現は、コンテナの辺の状態を表示するグラフィカル手段を提供する。その表現の解釈は、次のとおりである。
・図4に示す破線410は、コンテナのコンテンツに依存し、文書内の辺の位置
を意味する
・実線は制限された辺を意味する。何故ならば、図4の辺414、あるいは、
コンテナの幅または高さが固定されている。なお、図4のコンテナ408は、
幅と高さが固定されている
・アンカは、辺または軸の交点が固定されていることを意味する。それ故、
アンカ点は、すべての文書の水平、垂直位置に現れる。当然、アンカは
固定される。図4に示すアンカ409は、交差する辺414が固定であることを
意味するアンカの例である
・スライダは、対応する辺が固定であることを意味するが、コンテナは
辺に沿う多くの位置『スライドの長さ』で位置が決定される。例えば
図4に示すスライダ413は、コンテナ408のコンテンツが、文書内の特定の
ダイアグラムで表される位置の、左または右に表示されるかもしれない
【００８４】
これらのアイコン、辺の幾つかまたはすべては、どのツール、どのコンテナを選択し、ハイライトまたはアクティブにするかによって、描画されたりされなかったりする。一般に、コンテナの辺、アイコンは文書テンプレートのデザインの手助けであるため、コンテンツが表示状態の場合は表示されない。
【００８５】
また、コンテナの幅、高さの最小、最大値の設定は、副次的なダイアログウィンドウに表示される。
【００８６】
図5(a)に示すコンテナ501は幅、高さとも可変であり、固定辺503は実線で、可変の辺504は破線で表現される。拡縮アイコン505は、隣接する辺504が可変であることを示す。
【００８７】
図5(b)に示すコンテナ501は幅、高さとも可変である。アンカ506により、辺503の交点が固定されていることが示される。
【００８８】
図5(c)に示すコンテナ501は幅、高さとも可変である。アンカ507と拡縮アイコン505により、コンテナ501の中心から任意にコンテナを拡大または縮小可能であることが示される。
【００８９】
図5(d)に示すコンテナ501は、上辺508が固定されていることを除けば、幅、高さとも可変である。上辺508の中央近傍に配置されたアンカ509により、上辺508が固定されていることが示される。そして、拡縮アイコン505により、下辺の移動により、コンテナを垂直方向に拡大または縮小可能であることが示される。
【００９０】
［リンク］
リンクは、コンテナとコンテナの関連を示す。関連とは、コンテナ間の距離を示し、リンクによって関連付けられたコンテナ同士は、互いのレイアウト変更の影響を受けてレイアウトを計算する。図4に示すリンク412は、コンテナ407と408を関連付ける。リンクの設定方法、リンクで関連付けられたコンテナのレイアウトの計算方法は後述する。
【００９１】
●リンクの設定
図6はリンクの設定方法を示すフローチャートで、テンプレート編集アプリケーション121がユーザに提供する処理である。また、図7はUI 128の表示例を示す。これらを用いて、コンテナにリンクを設定する方法を説明をする。
【００９２】
リンクを設定する場合、ユーザは、リンクを設定する最低二つのコンテナを作成する(S601)。図8は、二つのコンテナを作成してリンクを設定する例を示している。
【００９３】
次に、ユーザは、リンクツールボタン406をクリックして選択状態にする(S602)。図7は、コンテナを作成し、リンクツールボタン406を選択し、リンクを設定する動作を示す。
【００９４】
図7(a)に示す辺701と702はアンカ703のよって固定された辺である。ユーザは、リンクを設定する片方のコンテナにカーソルポインタ705を移動してクリックし、当該コンテナを選択する(S603)。
【００９５】
次に、図7(b)に示すように、ユーザは、カーソルポインタ705を他方のコンテナに移動し、クリックする(S604)。図7(b)に示すライン706は、図7(a)におけるクリック位置とカーソルポインタ705の移動後の位置を結ぶ直線で、どの位置にリンクが設定されるかを示すユーザインタフェイスである。
【００９６】
ステップS604の後、図7(c)に示すように、リンク707が表示される(S605)。また、リンク707の設定により、コンテナの表示も自動的に変更される(S606)。
【００９７】
図7(c)の破線で示される辺708は、前述したように可変の辺である。このようにコンテナの辺の状態が変化するのは、リンクの設定により、コンテナの辺を可変にする必要があるためである。リンクを設定したにもかかわらず、すべての辺が固定という矛盾を防ぐために、自動的に行われる処理である。
【００９８】
また、図7(c)に示す拡縮アイコン709は、リンクの設定により、コンテナを変化可能な方向をユーザに視覚的に示すマークである。図7(c)の例では、左のコンテナの右辺と、右のコンテナの左辺が可変になったが、これは一例で、右コンテナが図4に示すスライダ413をもつ設定に変化しても構わない。
【００９９】
［レイアウト計算］
テンプレート編集アプリケーション121は、コンテナを作成して、コンテナ間の関連付けを行い、レイアウトを作成するレイアウトモードを備える。また、作成したレイアウトにレコードのコンテンツを挿入し、実際にコンテンツが挿入された後のレイアウト結果をプレビューするプレビューモードを備える。ユーザがプレビューモードを選択すると、テンプレート編集アプリケーション121は、実際のレコードのコンテンツを挿入し、レイアウトを計算する。なお、プレビューモードは表示上でのレイアウト計算で、印刷時は、コンテンツを挿入して記録紙サイズに合わせたレイアウトを計算する。その計算方法は同じである。なお、レコードとは、図1に示すDB 119に記録された情報の単位である。
【０１００】
図8はレイアウト計算のフローチャートで、ユーザがプレビューモードを選択すると、テンプレート編集アプリケーション121が実行する処理である。
【０１０１】
まず、プレビューするレコードのコンテンツを選択し、レイアウトに挿入して(S802)、レイアウトを計算する(S803)。続いて、計算したレイアウトを表示し(S804)、他のレコードをプレビューするか否かをユーザに問い合わせる(S805)。ユーザが他のレコードをプレビューする必要はないと判断した場合は、プレビューモードを終了する(S807)。
【０１０２】
また、他のレコードをプレビューする場合は、他のレコードに移動して(S806)、そのコンテンツを選択し、レイアウトに挿入して(S802)、再びレイアウトを計算し(S803)、プレビューする(S804)。
【０１０３】
なお、印刷時は、印刷するコンテンツすべてについて、順にレイアウトを計算する。従って、ステップS805、S807の処理は存在しない。そして、すべてのコンテンツについて印刷が終了した時点で印刷処理を終了する。
【０１０４】
●レイアウトの計算方法
図9はレイアウトの計算(S803)の詳細を示すフローチャートである。
【０１０５】
まず、レイアウトを計算するコンテナの集合を求める(S901)。レイアウト計算は、関連付けられたコンテナを一つの集合として計算を行う。
【０１０６】
図10は頁上に四つのコンテナがレイアウトされた例を示す図である。図10の各コンテナは関連付けが設定されていて、コンテナAとBが、そしてコンテナCとDがリンク1106によって関連付けされている。この場合、コンテナA、Bが集合1、コンテナC、Dが集合2になる。なお、前述したように、1101はアンカ、1102は固定辺、1103はハンドル、1104は拡縮アイコン、1105は可変の辺、1106はリンク、そして1107はスライダを示す。
【０１０７】
次に、求めたコンテナの集合から、レイアウトを計算するために一つの集合を選択し、選択した集合についてレイアウトを計算する(S902)。続いて、レイアウトするコンテナのサイズと、実際のコンテンツのサイズの差ができるだけ小さくなるように、レイアウトを最適化する(S903)。レイアウトの最適化は、サイズの動的変化が可能なように関連付けられたコンテナそれぞれに挿入されるコンテンツのサイズと、レイアウトするコンテナのサイズの差が、それらコンテナ間でできるだけ同じになるようにする。そして、レイアウトの最適化後、ルール違反を判定し(S904)、ルール違反がある場合は再びルール違反しないように再計算する(S903)。このルールは、レイアウト作成時にユーザによって設定される制限で、コンテナのサイズと位置、リンクの長さなどである。ルール違反のないレイアウトを計算すると、その集合のレイアウトは完成する。そして、ステップS905の判定により、ステップS902〜S904の処理を頁上のすべての集合について実行し、頁全体のレイアウトを決定する。
【０１０８】
図11はレイアウト計算時のUI 128の表示例を示す図である。
【０１０９】
図11(a)は、あるコンテンツが挿入され、レイアウトが決定された状態を表す。1001、1002はアンカ、1003、1004は固定辺、1005は可変の辺、1006は拡縮アイコン、1008はリンクである。この状態において、コンテンツを変更し、サイズが異なるコンテンツを挿入する。
【０１１０】
図11(b)は、図11(a)のレイアウト状態に、別のコンテンツを重ねた状態を示す。1009はそれぞれのコンテナに挿入されるコンテンツのサイズを表す。
【０１１１】
図11(c)は、レイアウトの計算結果を示す。計算後の各コンテナのサイズは、実際に挿入するコンテンツのサイズと同等の差をもつように計算され、かつ、前述したルール違反がないように計算される。図11(b)に示す挿入するコンテンツサイズ1009と、図11(c)に示す計算後のコンテンツサイズ1010は、各コンテナにおいて同等の差をもつ。
【０１１２】
［可変リンクの設定］
図12は一般的な可変リンクの状態を示す図である。
【０１１３】
図4とほぼ同様に、ウィンドウ301にはツールバー303と文書テンプレート309が表示され、文書テンプレート309上にコンテナ1203、1204が存在する。各コンテナは、アンカ1201、1202によって固定された辺1205、1206からなる。各コンテナ1203と1204の間には、可変サイズのリンク1209があり、各コンテナを結んでいる。なお、このような状態のコンテナ1203、1204を「エッジコンテナ」と呼ぶ場合がある。リンク1209が設定されているので、各コンテナの右辺1207と左辺1208は破線で表現され、拡縮アイコン1210、1211が表示される。つまり、辺1207、1208が可変であることが示されている。
【０１１４】
図13はリンク1209のプロパティを設定するダイアログ1401の一例を示す図である。
【０１１５】
プロパティ設定ダイアログ1401は、タイトルバー1402、ツールボタン1403、ダイアログの設定を適用したりダイアログを閉じたりするボタン1404、各種情報を設定する領域1409で構成される。リンクの種類領域1405のラジオボタン1406、1407により、可変長または固定長のリンクを設定することができる。また、可変長のリンクの場合は、リンクの距離領域1408のテキストボックス1410〜1412により、リンクの距離の最大値、最小値、現在の値を設定することができる。
【０１１６】
図14はリンクの設定方法を示すフローチャートで、図6に示したリンクの設定方法を踏まえ、例えば図15に示すコンテナAとBの間に張られた固定長のリンク1503を、図12に示す可変長のリンク1209に変更する操作を示す。なお、図14に示す処理は、テンプレート編集アプリケーション121がユーザに提供する処理である。
【０１１７】
ユーザは、カーソルポインタを移動してリンク1503をクリックし選択し(S1302)、マウス133の操作またはキーボード132のキー操作により、図13に示すダイアログ1401を表示する(S1303)。この時点では、リンク1503は固定長であるから、ラジオボタン1406が選択されている。
【０１１８】
次に、ユーザは、ラジオボタン1407を選択してリンク1503を可変長に変更する(S1304)。この操作により、リンクの距離領域1408に配置されたテキストボックス1410〜1412が有効になり、数値設定が可能になる。ユーザは、リンク1503の可変長を設定するために、テキストボックス1410〜1412に適切な値を設定する(S1305)。次に、ユーザがボタン1404を押して設定を適用すると、図12に示すリンク1209のような表示状態に変化する(S1306)。なお、このダイアログ1401の設定情報は、メモリ136の所定領域に格納される。
【０１１９】
図15は固定長のリンク1503を使用する場合のレイアウト結果を示している。このレイアウト計算は前述したように行われる。
【０１２０】
例えば、図15のコンテナ1501と1502にサイズが違うコンテンツが挿入される場合を想定する。各コンテンツのサイズを最適と考え、コンテナ1501は、挿入されるコンテンツのサイズになるように、符号1504で示すサイズ（最適コンテナサイズ）に近付こうと、右方向に拡大する。同様に、コンテナ1502も、挿入されるコンテンツのサイズになるように、符号1505で示す最適コンテナサイズに近付こうと、左方向に拡大する。
【０１２１】
しかし、コンテナ1501と1502の間には固定長のリンク1503が設定され、コンテナ1501の左辺とコンテナ1502の右辺はアンカによって固定されている。そのため、レイアウトの計算時に優先的に計算されるコンテナ1501と1502のサイズが変更される。その結果、コンテナ1501と1502は、コンテンツのサイズに合った最適なサイズを確保することはできず、最適コンテナサイズ1504、1505よりも小さいコンテナサイズになる。言い換えれば、リンク1503が固定長であるため、コンテナ1501と1502は最適コンテナサイズを達成できない。
【０１２２】
図16は可変長のリンク1603を使用する場合のレイアウト結果を示している。このレイアウト計算は前述したように行われる。
【０１２３】
コンテナ1501と1502の間に、可変長のリンク1603が設定されていると、コンテナ1501と1502のサイズを変更する際に、リンク1603のサイズを縮めることができる。その結果、コンテナ1501と1502のサイズを、図15の例よりも拡大することが可能で、コンテンツのサイズに合った最適コンテナサイズを達成するか、あるいは、より最適コンテナサイズに近いサイズを得ることができる。
【０１２４】
［コンテナのプロパティ］
図17はコンテナのプロパティを設定するダイアログ1701の一例を示す図である。プロパティ設定ダイアログ1701は、マウス203によってコンテナを選択し、マウス203の右ボタンをクリックすると表示されるメニューから呼び出すことができる。また、キーボード132のAltキーを押しながらマウス203によってコンテナを選択すると表示されるメニューから呼び出すこともできる。なお、図17には、コンテナの各辺（エッジ）を可変にするか否か、および、それに伴う設定に関してのみ表示する。
【０１２５】
プロパティ設定ダイアログ1701は、タイトルバー1702、ツールボタン1703、ダイアログの設定を適用したりダイアログを閉じたりするボタン1704、各種情報を設定する領域1751で構成される。辺の状態グループボックス1711には、コンテナの各辺を可変にし、コンテナ自体を可変に設定にするチェックボックス1712〜1715がある。チェックボックス1712〜1715の何れかをチェックすると、コンテナサイズグループボックス1721が利用可能になる。図17に示す例では、右辺を可変にするチェックボックス1714だけがチェックされているので、コンテナは横方向（右方向）にしかサイズを変化することができない。そのため、コンテナサイズグループボックス1721の、コンテナの幅を設定するサイズテキストボックス1724、1726が入力可能になるが、コンテナの高さを設定するテキストボックス1728、1730は入力不可のままである。
【０１２６】
また、図形1722、1723は、コンテナの幅と高さのサイズの指定を視覚的に補助する画像である。テキストボックス1724にはコンテナの幅の最小値を設定する。テキストボックス1726にはコンテナの幅の最大値を設定する。同様に、テキストボックス1728、1730にはコンテナの高さの最小値、最大値を設定する。また、リストボックス1727、1731はコンテナサイズの単位を設定するものである。図17は単位に「mm」が選択された例を示すが、「inch」や「pixel」なども選択可能である。
【０１２７】
図18はコンテナのプロパティを設定する際のテンプレート編集アプリケーション121の処理例を示すフローチャートである。
【０１２８】
まず、コンテナが選択され、プロパティの設定メニューが選択されたか否かを判定する(S1802)。コンテナが選択され、プロパティの設定メニューが選択さると、プロパティ設定ダイアログ1701を表示する(S1803)。
【０１２９】
次に、何れかの辺の状態が可変に設定されたか否かを判定し(S1804)、可変に設定された場合は、コンテナサイズグループボックス1721を利用可能にする(S1805)。
【０１３０】
次に、「適用」ボタン1704が押されたか否かを判定し(S1806)、「適用」ボタン1704が押された場合はプロパティ設定ダイアログ1701の設定を選択されたコンテナに適用し(S1807)、処理をステップS1802に戻す。
【０１３１】
次に、「閉じる」ボタン1704が押されたか否かを判定し(S1808)、「閉じる」ボタン1704が押された場合は、プロパティ設定ダイアログ1701の設定を元に戻す(S1809)。言い替えればプロパティ設定ダイアログ1701の設定を選択されたコンテナに適用せずに、処理をステップS1802に戻す。また、「適用」「閉じる」ボタン1704の何れも押されていない場合は処理をステップS1804に戻す。
【０１３２】
［レイアウトチェック機能］
図19はテンプレート編集アプリケーション121のメニューバー302を示す図で、ツールメニュー304の「可変データ/レイアウトのチェック(C)...」メニュー項目2002を示している。メニュー項目2002はプレビューモードでのみ有効である。つまり、テンプレート編集アプリケーション121が、文書テンプレートに可変データを流し込み、レイアウトエンジン127によりレイアウトが行われた状態でのみ、メニュー項目2002は選択可能である。
【０１３３】
図20はテンプレート編集アプリケーション121のレイアウトチェック機能を説明するフローチャート、図21、図22は可変データ/レイアウトのチェックダイアログ2101を示す図である。
【０１３４】
まず、プレビューモードか否かを判定し(S1901)、プレビューモードであれば「可変データ/レイアウトのチェック(C)...」メニュー項目2002が選択され、レイアウトエラーのチェックが指示されたか否かを判定する(S1902)。レイアウトエラーのチェックが指示された場合は、図21に示すチェックダイアログ2101を表示する(S1903)。また、ステップS1901とS1902を繰り返し、プレビューモードが解除されると処理を終了する。
【０１３５】
ユーザがチェックダイアログ2101の「開始」ボタン2102を押すと、チェックの開始が指示されたと判定し(S1904)、レイアウトエンジン127を用いてプリフライトを行いながら再レイアウトを行う(S1905)。そして、再レイアウトの終了を判定し(S1906)、図22に示すように、プリフライト結果をチェックダイアログ2101に表示し、レイアウトエラーをユーザに通知する(S1907)。
【０１３６】
図22に示す該当数リストボックス2203には、チェック項目それぞれに該当するエラー数を一覧表示される。該当数リストボックス2203の一列目は該当するレコード番号を表示し、二列目以降はそれぞれのチェック項目におけるエラー数を表示する。チェック項目には、例えば以下が存在する。
─────────┬───────────────────────
チェック項目    │  チェック内容
─────────┼───────────────────────
テキスト        │テキストがコンテナ内に収まらないときに発生する
オーバフロー    │テキストオーバフロー
─────────┼───────────────────────
イメージ        │イメージがコンテナに入り切らないときに発生する
オーバフロー    │イメージオーバフロー
─────────┼───────────────────────
コンテナ        │データベースに値が存在しないため、値の流し込み
│ができない空のオブジェクトが存在するか否か
─────────┼───────────────────────
一般的なエラー  │一般的なエラー
─────────┴───────────────────────
【０１３７】
図22に示すエラー/警告リストボックス2204には、該当数リストボックス2203で選択されたレコードのエラー/警告詳細が一覧表示される。エラー/警告リストボックス2204の一列目はエラーアイコンまたは警告アイコンを表示し、二列目はエラーが発生した頁番号を表示し、三列目はエラー/警告の内容説明を表示する。
【０１３８】
該当数リストボックス2203でレコードが選択されると(S1908)、エラー/警告リストボックス2204に詳細を一覧表示する(S1909)。また、「終了」ボタンが押されると(S1910)、処理を終了する。
【０１３９】
ユーザは、レイアウトチェックの結果を参照して、レイアウトエラーが発生しない文書テンプレート、または、想定外のレイアウトを生成しない文書テンプレートの編集作業を行う。
【０１４０】
［サーバによるレイアウトチェック］
コンテンツサーバ103は、Webサーバ106を介して、Webブラウザ122または125からレイアウトチェックが要求されると、レイアウトサーバ105に文書生成を要求する。図23はコンテンツサーバ103によるレイアウトチェック処理を説明するフローチャートである。
【０１４１】
まず、Webブラウザからレイアウトチェックを要求されたか否かを判定する(S2301)。要求された場合は、その要求に応じた文書テンプレートおよび可変データの指定、実データ、並びに、文書フォーマットの指定をレイアウトサーバ105に送信して、文書生成を要求する(S2302)。
【０１４２】
その際、コンテンツサーバ103の設定ファイルに、プリフライト結果の取得が設定されているか否かを判定し(S2303)、設定されている場合はレイアウト時にプリフライトを実行するようレイアウトサーバ105に追加要求する(S2304)。下記はプリフライト結果の取得を設定ファイルに設定するXML記述である。
【０１４３】
＜?xml version = "1.0" encoding = "Shift_JIS" ?＞
＜layout-server＞
＜request＞
＜layout＞
＜option＞
＜proofing＞1＜/proofing＞  ＜!-- if 1, request the preflight --＞
＜/option＞
＜/layout＞
＜/request＞
＜/layout-server＞
要求後、レイアウトサーバ105のレスポンスを待つ(S2305)。そして、レスポンスとして生成された文書を受信する(S2306)。
【０１４４】
さらに、レイアウト時のプリフライト実行を要求した場合は(S2307)、レイアウトサーバ105からプリフライト結果を受信する(S2308)。そして、受信したプリフライト結果をチェックし(S2309)、レイアウトエラーが発生したか否かを判定する(S2310)。もし、レイアウトエラーが発生した場合は、レイアウトエラーを、要求時の文書テンプレートおよび可変データの指定値とともに、DB 119の所定領域にレイアウトエラー履歴として保存する(S2311)。
【０１４５】
そして、レイアウトサーバ105が生成した文書を、レイアウトチェックを要求したWebブラウザに返すために、Webサーバ106に送信し(S2312)、処理を終了する。
【０１４６】
［文書の配信］
図24は自動レイアウトシステムによるレイアウト調整とコンテンツの挿入の結果として、ユーザに配信される文書（例えばPDF文書）の一例を示す図である。
【０１４７】
図24に示す文書はテキストとイメージから構成されている。レイアウトの結果、領域2401を占めるテキストには、文章が途中で切れるテキストオーバフローが発生している。もし、文章の切れ目の直前が句点の場合、一見、オーバフローもなく、正しくレイアウトされているように見える。しかし、句点の後に、重要な文章が存在する可能性がある。
【０１４８】
図25はテキストのオーバフローを説明する図である。この例では、コンテナに収めたい文章は「XX月XX日、午前中は晴れだった。しかし、午後は雨だった。」である。しかし、テキストオーバフローが発生して、コンテナに挿入された文章が「XX月XX日、午前中は晴れだった。」で切れてしまい、コンテナに収まり切らない「しかし、午後は雨だった。」が切り捨てられた文章が配信される。これを受信したユーザは、文章の切れがよいので、文章が途中で切れていることに気付かず、正しい文章と判断する可能性がある。
【０１４９】
つまり、ユーザがレイアウトエラーを確認できない状態にあり、受信した文章が句点やピリオドで切れた、所謂切れのよい文章だと、必要な情報がオーバフローによって失われているのにも関わらず、ユーザは正しい文章と判断する可能性がある。従って、文章が途中で切れる場合に、切れた文章（のデータを以下「オーバフローデータ」と呼ぶ）を別データとして文書に持たせる仕組みが必要である。
【０１５０】
また、コンテナサイズが小さく、イメージが大幅に縮小されてしまう場合をイメージオーバフローと定義する。イメージの縮小による画素の間引きが発生し、たくさんの画素を間引くと、そのイメージが表す情報を捕らえることができない。従って、縮小により画素の50%以上が間引きされる場合などの閾値を設け、閾値を超える縮小が発生した場合はイメージオーバフローとして、元のサイズのイメージを別データとして文書に持たせる仕組みが必要である。例えば、図24の領域2405にはカレンダのイメージが挿入されるが、ある縮小率よりも縮小すれば日付の文字が判読できなくなり、本来の情報をユーザに伝えることはできない。従って、データを補完する仕組みが必要である。なお、文書に持たせる元のサイズの画像データも以下では「オーバフローデータ」と呼ぶ。
【０１５１】
自動レイアウトを行った結果、オーバフローが発生し、本来、文書に必要なデータがコンテナに収まり切らない場合、オーバフローしたデータを電子文書のアノテーションとして文書に埋め込む方法が考えられる。PDF文書のような構造化された文書において、表示、印刷可能なコンテンツ以外に、通常は表示、印刷されないアノテーション形式のデータとして、オーバフローしたデータを文書に埋め込めばよい。
【０１５２】
なお、アノテーション(annotation)は、コンパイルされたプログラムの中に情報として意味付けされたオブジェクトを残すことを意味する。プログラムのソースコードに記述するコメントとは異なり、プログラム的に残すため、プログラムから注釈情報にアクセスすることができる。従って、アノテーションから情報を取り出して文書を自動生成するツールを作成することができる。なお、アノテーションは、ソースコードに記述してオブジェクトとして存在するにも関わらず、プログラムの挙動には関わらない。
【０１５３】
［オーバフローデータのアノテーション］
図26はオーバフローデータをアノテーション形式のデータとして文書に埋め込む処理を説明するフローチャートである。この処理はレイアウトサーバ105が行う。
【０１５４】
レイアウトサーバ105は、文書テンプレートのコンテナに、用意されたコンテンツを挿入し(S3001)、オーバフローが発生したか否かを判定する(S3002)。オーバフローが発生した場合は、オーバフローデータをアノテーション形式のデータとして文書に埋め込む(S3003)。そして、ステップS3004の判定により、すべてのコンテナにコンテンツを挿入するまでステップS3001〜S3003の処理を繰り返す。
【０１５５】
アノテーション形式のデータを埋め込んだ電子文書を配信する場合、PDFに代表される、文書データが構造化された電子文書が好ましい。構造化された電子文書は、通常、プレビューや印刷するデータ以外に、注釈（アノテーション）の形でデータを埋め込むことができる。
【０１５６】
図27はアノテーション形式のデータが埋め込まれたPDF文書のある一頁の記述例を示す図である。
【０１５７】
領域2601の8 0 objには、ある一頁を構成する情報群が揃っていて、頁サイズ、頁を構成するコンテンツの記述のほか、アノテーションのオブジェクトを示す記述「Annots 9 0 R」がある。なお、「9 0 R」は間接参照を行っている場合の表記方法で、この場合、「Annots」が「9 0 obj」のオブジェクトを間接参照していることを表す。そして、オブジェクト番号「9 0 obj」のアノテーション群リスト2602の記述からアノテーション形式のデータ（オブジェクト）として10 0 obj、11 0 objがあることがわかる。
【０１５８】
オブジェクト番号10 0 objの記述2603には、アノテーションオブジェクトとしてテキストデータが記述されている。また、オブジェクト番号11 0 objの記述2604は、イメージのアノテーションオブジェクトを示し、イメージの内容は12 0 obj（領域2605）と、13 0 obj（領域2606）に記述されている。
【０１５９】
［アノテーションの表示］
アノテーション形式のデータは、プレビュー時または電子文書を受信したユーザコンピュータ102における電子文書の閲覧時になど、例えばWebブラウザに組み込んだプラグインソフトによって表示することができる。
【０１６０】
アノテーション形式のデータは、テキストやイメージの実体データと、文書上の位置情報をもつ。例えば、図27の例では、10 0 objの記述2603におけるRect[...]や、11 0 objの記述2604におけるRect[...]が位置情報である。
【０１６１】
図28はアノテーション形式のデータをもつ文書の表示を説明する図である。
【０１６２】
上記の位置情報に対応する文書上の位置にはマーカ（ホバーリング用のポイント）2703や2706を表示する。ユーザが、符号2704や2705で示すようにマーカ2703や2706にカーソルが合わせたり、マーカ2703や2706をクリックするなどの操作を行うと、ポップアップウィンドウ2701や2702を開く。このポップアップウィンドウ2701や2702により、アノテーション形式のデータとして文書に埋め込まれたオーバフローデータを、文書表示とは独立に表示する。
【０１６３】
レイアウトエラーが起源のオーバフローデータのアノテーション形式のデータについて、その経緯を示すフラグをもたせ、他のアノテーションとは異なるプレビューを行うことが好ましい。そうすれば、ユーザは、ポップアップウィンドウに表示されるテキストが、自動レイアウトの結果、コンテナに収まり切らなかったテキストであることを知ることができる。また、ポップアップウィンドウに表示されるイメージが、縮小の度合が大きく、元のサイズのイメージを別途用意する必要が生じたイメージであることを知ることができる。
【０１６４】
図31はアノテーション形式のデータをもつ文書を表示する処理を説明するフローチャートである。
【０１６５】
まず、Webサーバ106から受信した電子文書を開き(S3101)、アノテーション形式のデータが存在するか否かを判定する(S3102)。当該データが存在しなければ電子文書に相当する文書をモニタ144に表示する(S3103)。一方、当該データが存在する場合は、アノテーション形式のデータに付加された位置情報に基づきマーカを付加した、電子文書に相当する文書をモニタ144に表示する(S3104)。そして、マーカが操作されたか否かを判定し(S3105)、操作された場合は、ポップアップウィンドウを開き、そのマーカに対応するオーバフローデータをモニタ144に表示する(S3106)。
【０１６６】
なお、ステップS3103で電子文書に相当する文書をモニタ144に表示するとともに、モニタ144上の別ウィンドウにオーバフローデータを表示してもよい。その場合、ステップS3105、S3106の処理は省略する。
【０１６７】
そして、ユーザから文書を閉じる指示を受けたか否かを判定し(S3107)、当該指示を受けた場合は電子文書を閉じ(S3108)、処理を終了する。
【０１６８】
［アノテーションの印刷］
アノテーション形式のデータは、プレビュー時または電子文書を受信したユーザコンピュータ102における電子文書の閲覧時になど、例えばWebブラウザに組み込んだプラグインソフトによって印刷することができる。
【０１６９】
図29は、図24に示した電子文書の印刷例を示す図である。
【０１７０】
電子文書にアノテーションが存在する場合、印刷した文書2801の、アノテーションで補うべきテキストやイメージに対応する位置に通し番号（図29の例では通し番号2803、2804）のようなマーカを付加する。そして、マーカで紐付けしたオーバフローデータを含む注釈一覧2802を別途印刷する。
【０１７１】
図32はアノテーション形式のデータをもつ文書を印刷する処理を説明するフローチャートである。
【０１７２】
まず、Webサーバ106から受信した電子文書を開き(S3201)、アノテーション形式のデータが存在するか否かを判定する(S3202)。当該データが存在しなければ電子文書に相当する文書をプリンタ145によって印刷する(S3203)。一方、当該データが存在する場合は、アノテーション形式のデータに付加された位置情報に基づきマーカを付加した、電子文書に相当する文書2801をプリンタ145によって印刷する(S3204)。続いて、マーカで紐付けしたオーバフローを含む注釈一覧2802をプリンタ145によって印刷する(S3205)。そして、電子文書を閉じ(S3206)、処理を終了する。
【０１７３】
図30は、図24に示した電子文書の別の印刷例を示す図である。
【０１７４】
アノテーション形式で電子文書に埋め込まれたオーバフローデータのテキストが、領域2401からオーバフローしたテキストであることは、上記の位置情報から判定することができる。そこで、領域2401の文字サイズを小さくするなどして、符号2901で示すように、領域2401にオーバフローしたテキストを追加して印刷する。つまり、領域2401のテキストと、オーバフローデータのテキストが領域2401に収まるように、印刷時の文字サイズ、文字間隔、または、行間隔などの印刷条件を調整して、印刷を行う。
【０１７５】
図30に示す方法では、アノテーション形式で電子文書に埋め込まれたオーバフローデータのイメージを補完することはできない。従って、アノテーション形式で電子文書に埋め込まれたオーバフローデータがテキストだけであれば図30に示す方法を採用する。オーバフローデータがイメージ、または、テキストとイメージの場合は図29に示す方法を採用すればよい。こうすれば、オーバフローデータがテキストだけの場合は、注釈の一覧を印刷する必要がなく、印刷量を抑えることができる。
【０１７６】
また、オーバフローデータのテキストを追加して印刷する場合の文字サイズなどの制限を設定可能にすることが望ましい。そして、例えば文字サイズが下限値以下になる場合は、オーバフローデータがテキストだけの場合も、図29に示す方法を採用する。
【０１７７】
図33はアノテーション形式のデータをもつ文書を印刷する処理を説明するフローチャートである。
【０１７８】
まず、Webサーバ106から受信した電子文書を開き(S3301)、アノテーション形式のデータが存在するか否かを判定する(S3302)。当該データが存在しなければ電子文書に相当する文書をプリンタ145によって印刷する(S3303)。一方、当該データが存在する場合は、アノテーション形式のデータがテキストデータだけか否かを判定する(S3304)。画像データが含まれる場合は図32に示した処理に移行する(S3305)。
【０１７９】
アノテーション形式のデータがテキストデータだけの場合は、アノテーション形式のデータに付加された位置情報に基づき、オーバフローデータを追加するために文字領域の印刷条件を調整する(S3306)。そして、印刷条件が制限を満たすか否かを判定し(S3307)、例えば文字サイズ≧下限値のように制限を満たす場合は、オーバフローデータを追加した、電子文書に相当する文書をプリンタ145によって印刷する(S3308)。また、制限を満たさない場合は、図32に示した処理に移行する(S3305)。そして、電子文書を閉じ(S3309)、処理を終了する。
【０１８０】
レイアウトエラーが発生すれば、コンテンツの一部が欠損した電子文書を配信することになる。レイアウトエラーの修正には、文書テンプレートを再編集したり修正する作業が必要である。上記の実施例のように、サーバ側で発生したレイアウトエラーを補完するデータを電子文書に付加して配信すれば、クライアント側でコンテンツの欠損を補完することができ、文書テンプレートを再編集したり修正する作業を低減することができる。
【０１８１】
また、従来、テンプレート編集者などは、サーバのログを参照してレイアウトエラーの発生を検知するしかなかった。しかし、上記の実施例のように、サーバ側で発生したレイアウトエラーを補完するデータを電子文書に付加して配信すれば、どのようなレイアウトエラーが発生したかを具体的に、短時間に検知することができる。
【０１８２】
［他の実施例］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０１８３】
また、本発明の目的は、上記実施例の機能を実現するソフトウェアを記録した記憶媒体（記録媒体）をシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ（CPUやMPU）が前記ソフトウェアを実行することでも達成される。この場合、記憶媒体から読み出されたソフトウェア自体が上記実施例の機能を実現することになり、そのソフトウェアを記憶した記憶媒体は本発明を構成する。
【０１８４】
また、前記ソフトウェアの実行により上記機能が実現されるだけでなく、そのソフトウェアの指示により、コンピュータ上で稼働するオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、それによって上記機能が実現される場合も含む。
【０１８５】
また、前記ソフトウェアがコンピュータに接続された機能拡張カードやユニットのメモリに書き込まれ、そのソフトウェアの指示により、前記カードやユニットのCPUなどが実際の処理の一部または全部を行い、それによって上記機能が実現される場合も含む。
【０１８６】
本発明を前記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するソフトウェアが格納される。
【図面の簡単な説明】
【０１８７】
【図１】レイアウトシステムを提供する情報処理システムの構成例を示すブロック図、
【図２】ホストコンピュータの構成例を示すブロック図、
【図３】ユーザインタフェイスが提供するウィンドウを示す図、
【図４】ツールバーに表示可能な代表的なボタンを示す図、
【図５】コンテナの模範的な辺ルールを例示する図、
【図６】リンクの設定方法を示すフローチャート、
【図７】UIの表示例を示す図、
【図８】レイアウト計算のフローチャート、
【図９】レイアウトの計算の詳細を示すフローチャート、
【図１０】頁上に四つのコンテナがレイアウトされた例を示す図、
【図１１】レイアウト計算時のUIの表示例を示す図、
【図１２】一般的な可変リンクの状態を示す図、
【図１３】リンクの情報を設定するダイアログの例を示す図、
【図１４】リンクの設定方法を示すフローチャート、
【図１５】固定長のリンクを使用する場合のレイアウト結果を示す図、
【図１６】可変長のリンクを使用する場合のレイアウト結果を示す図、
【図１７】コンテナのプロパティを設定するダイアログの一例を示す図、
【図１８】コンテナのプロパティを設定する際のテンプレート編集アプリケーションの処理例を示すフローチャート、
【図１９】テンプレート編集アプリケーションのメニューバーを示す図、
【図２０】テンプレート編集アプリケーションのレイアウトチェック機能を説明するフローチャート、
【図２１】可変データ/レイアウトのチェックダイアログを示す図、
【図２２】可変データ/レイアウトのチェックダイアログを示す図、
【図２３】コンテンツサーバによるレイアウトチェック処理を説明するフローチャート、
【図２４】自動レイアウトシステムによるレイアウト調整とコンテンツの挿入の結果として、ユーザに配信される文書の一例を示す図、
【図２５】テキストのオーバフローを説明する図、
【図２６】オーバフローデータをアノテーション形式のデータとして文書に埋め込む処理を説明するフローチャート、
【図２７】アノテーション形式のデータが埋め込まれたPDF文書のある一頁の記述例を示す図、
【図２８】アノテーション形式のデータをもつ文書のプレビューを説明する図、
【図２９】図24に示した電子文書の印刷例を示す図、
【図３０】図24に示した電子文書の別の印刷例を示す図、
【図３１】アノテーション形式のデータをもつ文書を表示する処理を説明するフローチャート、
【図３２】アノテーション形式のデータをもつ文書を印刷する処理を説明するフローチャート、
【図３３】アノテーション形式のデータをもつ文書を印刷する処理を説明するフローチャートである。
【図１】
2007316873.tif 000003
【図２】
2007316873.tif 000004
【図３】
2007316873.tif 000005
【図４】
2007316873.tif 000006
【図５】
2007316873.tif 000007
【図６】
2007316873.tif 000008
【図７】
2007316873.tif 000009
【図８】
2007316873.tif 000010
【図９】
2007316873.tif 000011
【図１０】
2007316873.tif 000012
【図１１】
2007316873.tif 000013
【図１２】
2007316873.tif 000014
【図１３】
2007316873.tif 000015
【図１４】
2007316873.tif 000016
【図１５】
2007316873.tif 000017
【図１６】
2007316873.tif 000018
【図１７】
2007316873.tif 000019
【図１８】
2007316873.tif 000020
【図１９】
2007316873.tif 000021
【図２０】
2007316873.tif 000022
【図２１】
2007316873.tif 000023
【図２２】
2007316873.tif 000024
【図２３】
2007316873.tif 000025
【図２４】
2007316873.tif 000026
【図２５】
2007316873.tif 000027
【図２６】
2007316873.tif 000028
【図２７】
2007316873.tif 000029
【図２８】
2007316873.tif 000030
【図２９】
2007316873.tif 000031
【図３０】
2007316873.tif 000032
【図３１】
2007316873.tif 000033
【図３２】
2007316873.tif 000034
【図３３】
2007316873.tif 000035