帳票作成装置、帳票作成システム、制御方法、及びプログラム
【課題】二次帳票の生成元となる帳票の帳票データを用いて、ユーザの所望するレイアウトを有する当該二次帳票を自動生成することを目的とする。
【解決手段】ユーザが利用を望む二次帳票の生成元となる帳票の帳票データを検索し(ステップS100からステップS104)、ユーザが所望するレイアウトを編集するためのレイアウト編集画面を出力後(ステップS106)、当該所望するレイアウトを選定してレイアウト編集画面へ表示し(ステップS108)、レイアウト編集画面にて、レイアウトに対して帳票データの配置先を矩形指定し(ステップS110)、当該矩形の領域に適合するように帳票データの編集を行うことで二次帳票を生成して表示する(ステップS112及びステップS114)。
【解決手段】ユーザが利用を望む二次帳票の生成元となる帳票の帳票データを検索し(ステップS100からステップS104)、ユーザが所望するレイアウトを編集するためのレイアウト編集画面を出力後(ステップS106)、当該所望するレイアウトを選定してレイアウト編集画面へ表示し(ステップS108)、レイアウト編集画面にて、レイアウトに対して帳票データの配置先を矩形指定し(ステップS110)、当該矩形の領域に適合するように帳票データの編集を行うことで二次帳票を生成して表示する(ステップS112及びステップS114)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子帳票から二次帳票を生成するための技術に関するものである。
【背景技術】
【0002】
電子帳票システムでは、保存されている帳票を検索し、その検索ヒット結果を寄せ集め、その検索ヒットデータを埋め込んだ二次帳票(名寄せ帳票)を生成する仕組みを持っている。この機能により、帳票の中から必要なデータのみで構成される帳票を作成して業務で利用することができることがメリットとなっている。
【0003】
例えば、日付、顧客名、取引履歴などを有している1年分の膨大な帳票から二次帳票を生成することにより、月度単位の帳票や、特定の顧客との取引履歴のみを有する帳票を生成し、業務で活用することが可能である。
【0004】
従来の二次帳票を作成する方法としては、帳票が保有する帳票データから特定の検索条件に該当する帳票データを名寄せするという、経理や監査による検閲の観点で機能が提供されている。
【0005】
しかしながら、昨今、電子帳票の業務利用が促進されるにつれ、二次帳票に求められる要件も変化してきている。例えば、検索前の帳票とは異なるレイアウトの二次帳票を作成して業務に利用したい、あるいは、検索ヒットしたデータの一部を用いた二次帳票を作成して業務に利用したい、などが挙げられる。
【0006】
しかし、前記の観点で提供している機能では元となる帳票と同じレイアウトの二次帳票しか作成することができない。
【0007】
そこで、2次元形式の表データをユーザが所望するレイアウトをもつ帳票に変更を行うことが可能な帳票作成方法が存在する。(例えば、特許文献1参照)
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2004−152314号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、特許文献1に記載の技術は、表形式のデータをインプットとし、その表上の基準位置を設定し、その基準位置からの相対位置情報(上下左右)を設定することで複数レコードにまたがった情報を1レコードと見なすことを可能として、出力対象帳票にレイアウトし帳票を生成するというものである。
【0010】
従って、インプットとなるデータレコードから相対位置情報を元に自由度の高いデータ切り出しを実現するものであり、元データを自由なレイアウトに配置し、データの表示形態や表示位置をレイアウトに適合するよう自動的に調整された二次帳票を作成することを実現するものではない。
【0011】
本発明は上記の課題を解決するためになされたものであり、二次帳票の生成元となる帳票データから取り出されたデータを、自由なレイアウト位置に配置するだけでなく、データの表示形態や表示位置をレイアウトに適合するように自動的に調整して配置することで、自由なレイアウトの二次帳票を作成することができる帳票作成装置、情報処理装置、帳票作成方法、情報処理方法、プログラム及びコンピュータ読み取り可能な記録媒体を提供することを目的とする。
【課題を解決するための手段】
【0012】
上記目的を達成するための第1の発明は、帳票から二次帳票を生成する帳票生成装置であって、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、を備えたことを特徴とする帳票生成装置である。
【0013】
上記目的を達成するための第2の発明は、クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムであって、前記クライアント装置は、前記帳票の表示を制御する表示手段と、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、を備え、前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、前記帳票生成装置は、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段を備えたことを特徴とする帳票生成システムである。
【0014】
上記目的を達成するための第3の発明は、帳票から二次帳票を生成する帳票生成装置の制御方法であって、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、を実行することを特徴とする帳票生成装置の制御方法である。
【0015】
上記目的を達成するための第4の発明は、クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムの制御方法であって、前記クライアント装置は、前記帳票の表示を制御する表示手段と、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、を実行し、前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、前記帳票生成装置は、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手を実行することを特徴とする帳票生成システムである。
【0016】
上記目的を達成するための第5の発明は、帳票から二次帳票を生成する帳票生成装置において実行されるプログラムであって、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、を機能させることを特徴とするプログラムである。
【0017】
上記目的を達成するための第6の発明は、クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムにおいて実行されるプログラムであって、前記クライアント装置を、前記帳票の表示を制御する表示手段と、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、を機能させ、前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、前記帳票生成装置を、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段を機能させることを特徴とするプログラムである。
【発明の効果】
【0018】
本発明によれば、ユーザは、二次帳票の生成元となる帳票データから取り出されたデータの配置先に関する領域に対して細かに考慮することなく簡便な設定方法で、ユーザの所望するレイアウトへ当該帳票データの自動編集を行った後に二次帳票を生成することが可能となるため、ユーザにとっての作業負荷を軽減する、という効果を奏する。
【図面の簡単な説明】
【0019】
【図1】本発明の実施形態に係る帳票サーバを含む帳票生成システムの概略構成を示す構成図である。
【図2】本発明の実施形態に係る帳票サーバのハードウェアの概略構成を示す構成図である。
【図3】本発明の実施形態に係る帳票生成システムにおける名寄せ帳票の作成に関する全体の流れのフローチャートである。
【図4】本発明の実施形態に係る帳票生成システムにおけるレイアウト編集画面表示処理の詳細を示すフローチャートである。
【図5】本発明の実施形態において名寄せレイアウト編集ボタンなどが配置されるツールバーの一例を示した構成図である。
【図6】本発明の実施形態における検索結果ファイルのデータの構成例を示す構成図である。
【図7】本発明の実施形態における帳票データが持つ文字データの構成例を示す図である。
【図8】本発明の実施形態における帳票データを構成する文字データの集合を模式的に示す図である。
【図9】本発明の実施形態に係る帳票生成システムにおけるフォーム設定処理の詳細を示すフローチャートである。
【図10】本発明の実施形態においてフォームの設定画面の構成例を示す構成図である。
【図11】本発明の実施形態においてイメージファイルを選択する画面の構成例を示す構成図である。
【図12】本発明の実施形態において帳票一覧から帳票を選択する画面の構成例を示す構成図である。
【図13】本発明の実施形態においてレイアウト編集画面の表示例を示す図である。
【図14】本発明の実施形態に係る帳票生成システムにおけるデータレイアウト設定処理の詳細を示すフローチャートである。
【図15】本発明の実施形態において矩形情報フォーマットを模式的に示す図である。
【図16】本発明の実施形態において矩形情報フォーマットを複数保持する配列を模式的に示す図である。
【図17】本発明の実施形態に係る帳票生成システムにおける二次帳票作成処理の詳細を示すフローチャートである。
【図18】本発明の実施形態に係る帳票生成システムにおける罫線解析処理の詳細を示すフローチャートである。
【図19】本発明の実施形態において罫線の情報を保持する配列のデータ構成例を示す構成図である。
【図20】本発明の実施形態に係る帳票生成システムにおける矩形内罫線解析処理の詳細を示すフローチャートである。
【図21】本発明の実施形態において矩形罫線Y座標配列のデータ構成例を示す構成図である。
【図22】本発明の実施形態において矩形罫線マップ領域のデータ構成例を示す構成図である。
【図23】本発明の実施形態に係る帳票生成システムにおけるデータ配置処理の詳細を示すフローチャートである。
【図24】本発明の実施形態においてレイアウト条件データフォーマットの一例を模式的に示す図である。
【図25】本発明の実施形態に係る帳票生成システムにおける移動データ抽出処理の詳細を示すフローチャートである。
【図26】本発明の実施形態に係る帳票生成システムにおける文字列幅フィット処理の詳細を示すフローチャートである。
【図27】本発明の実施形態に係る帳票生成システムにおける文字列幅取得処理の詳細を示すフローチャートである。
【図28】本発明の実施形態に係る帳票生成システムにおける文字間ピッチ調整処理の詳細を示すフローチャートである。
【図29】本発明の実施形態に係る帳票生成システムにおける文字サイズ調整処理の詳細を示すフローチャートである。
【図30】本発明の実施形態に係る帳票生成システムにおけるY座標配置処理の詳細を示すフローチャートである。
【図31】本発明の実施形態に係る帳票生成システムにおける罫線フィット配置処理の詳細を示すフローチャートである。
【図32】本発明の実施形態において配置Y座標管理マップ領域のデータ構成例を示す構成図である。
【図33】本発明の実施形態において罫線間への文字データの配置を模式的に示す図である。
【発明を実施するための形態】
【0020】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【0021】
図1は、本発明に実施形態に係る帳票サーバを含む帳票生成システムの概略構成を示す図である。図1において、101は、帳票サーバであり、電子帳票(以下、単に帳票と称す)のデータ(帳票データ)を記録し、ネットワーク104を介してクライアントPC102、103に対して、帳票の閲覧や検索等のサービスを提供する。クライアントPC102、103は、帳票の閲覧及び計算結果の取得を行う者が使用するクライアント端末であり、ネットワーク104を介して、帳票サーバ101とデータの送受信が可能である。
【0022】
ネットワーク104は、例えばLAN(Local Area Network)やインターネット等である。なお、図1のネットワーク104上に接続される各種端末の構成は飽くまでも一例であり、用途や目的に応じて様々な構成例がある。
【0023】
次に、図1に示した帳票サーバ101のハードウェア構成について、図2を用いて説明する。図2は、図1に示した帳票サーバ101のハードウェア構成例を示す図である。図2において、CPU(中央演算装置)201は、システムバス204に接続される各デバイスを統括的に制御するとともに、各種プログラムを実行することで様々な機能を実現する。
【0024】
RAM202は、CPU201の主メモリであり、ワークエリア、一時退避領域等として機能する。ROM203あるいは外部メモリ211には、CPU21の制御プログラムであるオペレーティングシステム(OS)や、帳票サーバ101において様々な機能を実現するためのプログラムが記憶されている。
【0025】
入力コントローラ205は、入力部209からの入力を制御する。この入力部209としては、例えば、キーボード、マウス等のポインティングデバイスが挙げられる。表示コントローラ206は、表示部210の表示を制御する。この表示部210としては、例えば、CRTや液晶ディスプレイ等が挙げられる。
【0026】
外部メモリコントローラ(MC)207は、ブートプログラム、各種のアプリケーション、ユーザファイル、編集ファイルを記憶する外部メモリ211へのアクセスを制御する。加えて、各サーバあるいは各クライアントの各種機能を実現するための各種テーブル、パラメータが記憶されている。この外部メモリ211としては、ハードディスク(HD)やフレキシブルディスク(FD)、磁気テープドライブ等が挙げられる。
【0027】
通信I/Fコントローラ208は、ネットワーク104を介して外部機器との通信制御処理を実行する。本実施形態における帳票サーバ101の有する様々な機能を実現するためのプログラム212は、外部メモリ211に記憶されており、必要に応じてRAM202にロードされることによりCPU201によって実行される。さらに、プログラム212の処理に用いる帳票ファイル213やインデックスファイル214も、外部メモリ211に記憶されており、これらについての詳細な説明は後述する。
【0028】
帳票ファイル213は、帳票の表示用データ(帳票データ)であり、単数又は複数のファイルによって構成され、単数又は複数のページを含有している。帳票サーバ101の内部においては、複数の帳票ファイル213のうち同じ種類のものをグループ化して管理しており、それぞれの帳票ファイル213はそのグループの中の世代と呼ばれる。
【0029】
インデックスファイル(領域情報ファイル)214は、帳票ファイル213のデータの中から、ユーザが指定した領域のデータと、データの位置(座標)を抜き出して蓄えたファイルであり、帳票データの検索処理専用のファイルである。
【0030】
インデックスファイル214のキー文字列には数値、文字、日付の3種類のデータが含まれている。インデックスファイル214にはユーザが任意の名称を与えることができ、異なる種類の帳票に関連したインデックスファイルであっても、与えられた名称で管理することが可能である。
【0031】
なお、クライアントPC102、103のハードウェア構成も帳票サーバ101と同様である。しかし、クライアントPC102、103におけるプログラム212は、帳票を表示するためのクライアントモジュールであり、帳票サーバ101のものとは異なる。
【0032】
また、クライアントPC102、103において帳票ファイル213は、表示するために必要な部分のみを帳票サーバ101との通信により受信するもので、クライアントPC102、103が元来保持していることはないものである点で異なる。また、クライアントPC102、103では、帳票の表示、もしくは任意の帳票に対する検索条件の指定および二次帳票作成の条件の指定等が可能である。
【0033】
次に、帳票システムの基本的な処理フローについて、図3を用いて説明する。
【0034】
図3は、本発明の実施形態に係る帳票システムにおいて二次帳票の作成に関する全体の流れを示すフローチャートである。
【0035】
ステップS100では、クライアントPC102(以下、クライアントPC102とクライアントPC103とは、同様な役割を有するため、クライアントPC102について記載する。)における処理であり、帳票データに対する検索条件設定(具体的な条件を記載)を検知すると、ステップS102では、帳票サーバ101によって、帳票データの検索処理を行う。
【0036】
そしてステップS104では、クライアントPC102の画面に、ステップS102における検索処理の結果である検索ヒット結果を表示する。尚、ステップS100からS104までの処理は、従来から帳票システムで一般的に実現されている処理である。
【0037】
ステップS106では、二次帳票を作成するための帳票データを編集するためのレイアウト編集画面を表示する。尚、本ステップにおける処理の詳細は、図4を用いて後述する。
【0038】
ステップS108では、二次帳票で利用するフォームを設定する処理である。二次帳票では自由なレイアウトの背景フォームを選択できるものとし、その選択を行う処理である。尚、本ステップにおける処理の詳細は、図9を用いて後述する。
【0039】
ステップS110では、ステップS106において表示したレイアウト編集画面を用いて、具体的な帳票データのレイアウトを設定する処理である。尚、本ステップにおける処理の詳細は、図14を用いて後述する。
【0040】
ステップS112では、ステップS110までに設定された二次帳票を作成するための情報に基づいて、二次帳票を作成する処理である。尚、本ステップにおける処理の詳細は、図17を用いて後述する。
【0041】
ステップS114では、ステップS112によって作成した二次帳票をクライアントPC102の画面に表示する処理である。尚、本ステップにおける処理は、従来の帳票システムで実現されている処理であり、詳細については説明を割愛する。
【0042】
次に図4に示すフローチャートを用いて本発明の実施形態に係る帳票性ステムにおけるレイアウト編集画面表示の処理について説明する。
【0043】
レイアウト編集画面の表示は、クライアントPC102と帳票サーバ101の双方で処理を担当している。図では左側をクライアントPC102での処理、右側を帳票サーバ101での処理として表記している。
【0044】
ステップS200では、名寄せレイアウト編集ボタンが押下されたことを検知したか否かを判定し、検知したと判定した場合は、ステップS202へ処理を進める。
【0045】
名寄せレイアウト編集ボタンは、通常ツールバーなどに置かれ、その形態の一例を図5に示す。クライアントPC102では、様々な機能を利用するためにツールバーなどに数種類のボタンを配置している。図中で示しているボタンが名寄せレイアウト編集ボタンの例である。
【0046】
図4に戻り、ステップS200において名寄せレイアウト編集ボタンの押下を検知しない場合は、名寄せレイアウト編集ボタンの押下を引き続き待ち受ける。
【0047】
ステップS202では、クライアントPC102からプレビューデータの作成要求を帳票サーバ101に対して行い、ステップS204では、帳票サーバ101がプレビューデータの作成要求に従い、プレビューデータを取得するために、空のページイメージを生成している。
【0048】
ステップS206では、ステップS100において設定された検索条件から、検索領域の上限のY座標と下限のY座標を取得して、その座標を変数Y1と変数Y2に記憶している。通常、帳票システム100における検索では、検索対象としたい領域を指定し、検索を行う。ここで取り出している上限のY座標と下限のY座標は、その検索対象として指定した領域の座標のことを示している。
【0049】
ステップS208では、検索結果ファイルをオープンする。検索結果ファイルとは、ステップS102の検索処理において検索した結果、ヒットしたレコード(以下、検索ヒットレコード)をファイルとして帳票サーバ101が保持しているものである。但し、検索ヒットレコードは、ファイルに記憶しなくとも帳票サーバ101が備えたメモリなどに記憶していてもよい。
【0050】
図6を用いて検索結果ファイルの内容を説明する。検索結果ファイルには検索ヒットレコードが記憶されている一例が示されおり、検索ヒットレコードは、1件あたり、図示するように検索対象となった帳票データを有する帳票ID、ページ番号、検索ヒット上端Y座標、検索ヒット下端Y座標という情報からなり、その検索結果ファイルは、検索ヒット数分のレコードを保持している。
【0051】
ステップS210は、検索結果ファイルに記憶された検索ヒットレコード数分のループ上端を示しており、ステップ212では、検索結果ファイルに記憶された検索ヒットレコードの先頭から順番に1レコードを取得する。
【0052】
ステップS214では、検索ヒットレコードの帳票IDから特定される検索元帳票が既に帳票生成システム100においてファイルオープンしているか否かを確認するが、これは、無駄にファイルをオープンしないための処理であり、同一ファイルがオープンされていなければ、ステップS216により検索元帳票ファイルをオープンし、ステップS218へ処理を進める。
【0053】
S218では、検索元帳票ファイルから、検索ヒットレコードの1レコードに該当する帳票データを取り出す。検索ヒットレコードの持つページ番号と検索ヒット上端Y座標と検索ヒット下端Y座標とから帳票データを抽出することは容易である。
【0054】
尚、帳票データについて、図7を用いて説明する。帳票データはさまざまなデータを持つが本発明で重要となるのは文字データである。文字データは、図に示すとおり、文字の座標X、座標Y、フォント情報、文字という情報である。また、帳票データは、図8に示すように、文字データの集合であると言える。
【0055】
ステップS218において取り出す帳票データも文字データの集合であり、帳票データから検索ヒットY座標の上端と下端の間に挟まれるY座標を持つ文字データを取り出せばよい。
【0056】
ステップS220では、ページイメージに対して変数Y1に記憶してある座標に取り出した文字データを配置する。
【0057】
ステップS222では、ステップS220において配置した文字データの持つ行ピッチの値をY1に加算して次の検索ヒットレコードに該当する文字データ(帳票データ)を配置するY座標を算出している。
【0058】
ステップS224では、変数Y1と変数Y2を比較し、変数Y1が変数Y2より小さければ、S226のループ終端に達し、ステップS210のループ先頭に戻って処理を継続する。変数Y1が変数Y2以上になれば、1ページ分の帳票に対するデータを配置する領域にデータを埋め尽くしたと判断し、ループを抜ける。
【0059】
ステップS228では、生成した1ページ分のページデータを帳票サーバ101からクライアントPC101に送信し、ステップS230では、ステップS228において送信されたページデータをクライアントPC102が受信し、クライアントPC102の画面に表示する。尚、表示されるページデータは、背景フォームと合成されていないため、背景に罫線などはなく、文字データのみのページイメージで表示される。
【0060】
次に図9に示すフローチャートを用いて本発明の実施形態に係る帳票生成システム100におけるフォーム設定処理について説明する。
【0061】
ステップS300では、図5に示す説明したボタンと同様のフォーム選択ボタン(不図示)が押下されたか否かを検知し、押下を検知しない場合は、引き続き押下を待ち受け、押下されたことを検知した場合は、ステップS302へ処理を進める。
【0062】
ステップS302では、イメージファイルパス保存領域、流用フォーム帳票ID保存領域、イメージ保存領域なる領域を確保し、初期化を行う。
【0063】
ステップS304では、図10に示す名寄せフォーム設定ダイアログ300をクライアントPC102の画面に表示する。
【0064】
このダイアログでは、イメージファイルを指定するか、登録済み帳票のフォームを利用するかの何れかを選択することが可能であり、本ステップでは、イメージファイルの指定が選択されたことを検知した時、つまりファイル選択ボタン302が押下されたことを検知することにより、ステップS308へ処理を進め、ステップS308では、図11に示すようなフォーム選択ダイアログ320を表示して、クライアントPC102に存在するイメージファイルを選択させることができる。
【0065】
図11に示すように、本実施形態では、form1.emfという拡張メタファイルが選択されているが、ユーザが選択するファイルは、ビットマップイメージやJPEGイメージなどの画像ファイルや、EMF(拡張メタファイル)やSVG(Scalable Vector Graphics)などの描画命令を持つベクタイメージファイル等を選択することができる。またその他のフォーム作成ツールなどで生成されたファイルを選択してもよい。
【0066】
ここでファイルが選択された状態のままで保存ボタン322が押下されたことを検知した時に、選択されたファイルが確定し、確定したファイルの記憶領域に関するファイルパスを取得して、取得したファイルパスをファイルパス表示欄304へ表示する。
【0067】
本ステップで名寄せフォーム設定ダイアログ300に備えられたOKボタン310が押下されたことを検知した後、ステップS310では、ファイルパス表示欄304に表示されたファイルパスを取得し、次のステップS312では、ステップS310において取得したファイルパスをイメージファイルパス保存領域に記憶する。
【0068】
ステップS314では、ステップS310において取得したファイルパスを用いてイメージファイルを読み込み、イメージ保存領域に記憶した後、ステップS340へ処理を進める。
【0069】
また、ユーザが登録済み帳票のフォームを利用する場合は、ステップS306において、帳票選択ボタン306が押下されたことを検知して、ステップS316へ処理を進め、ステップS316では、帳票サーバ101へ帳票の一覧を要求する。
【0070】
ステップ318では、クライアントPCからの要求に応じて、帳票サーバ101は、帳票一覧データを送信し、ステップS320では、クライアントPC102は、受信した帳票一覧データを利用して、図12に示す帳票一覧画面に帳票一覧の表示を行う。
【0071】
ステップS322では、ユーザによって帳票一覧画面に表示された帳票から該帳票が選択されたか否かを検知し、つまり帳票がマウスクリックなどにより選択されたことを検知した場合は、ステップS324へ処理を進める。
【0072】
ステップS324では、クリックされた帳票に応じた帳票を一意に識別するための帳票IDを取得し、名寄せフォーム設定ダイアログ300の帳票ID表示欄308に表示し、OKボタン310が押下されたことを検知した後、ステップS326では、クライアントPC102は、名寄せフォーム設定ダイアログ300に表示された帳票IDを取得し、取得した帳票IDの持つフォームイメージを取得するために、帳票サーバ101に該帳票IDの情報を送信して要求を行う。
【0073】
ステップS328では、帳票サーバ101は、ステップS326において送信されたフォームイメージ取得の要求を受信し、ステップ330では、受信した帳票IDに該当する帳票データを特定し、特定した帳票データが保有しているフォームイメージを取得して、ステップS332では、帳票サーバ1010は、ステップS330において取得したフォームイメージをクライアントPC102に送信している。
【0074】
ステップS334では、クライアントPC102は、ステップS332において送信されたフォームイメージを受信し、ステップS336では、クライアントPC102は、ステップS334で受信したフォームイメージをイメージ保存領域に記憶する。
【0075】
ステップS338では、ステップS324において取得した帳票IDを流用フォーム帳票ID保存領域に記憶し、その後、イメージファイル指定の際と同様に、ステップS340へ処理を進める。
【0076】
ステップS340では、イメージ保存領域に記憶したフォームイメージをレイアウト編集画面に背景として表示する。
【0077】
ここで、フォームイメージと文字データが合成されたレイアウト編集画面が表示されていることになるが、図13に示すようにフォームイメージが持つ罫線と、文字データはきれいに一致していない状況となる。このレイアウト編集画面を用いたステップS110によるデータレイアウト処理により、指定したフォームイメージに適切に文字データを配置する条件を設定する。
【0078】
図14に示すフローチャートを用いて本発明の実施形態に係る帳票システムにおけるデータレイアウト設定の処理を説明する。
【0079】
ステップS400では、矩形情報配列を確保し初期化し、ステップS402では、クライアントPC102に対して、ユーザによってなされる任意のアクションを検知するまで待機する。ここでいうアクションとは、マウスポインタのクリックや、マウスのクリック&ムーブ等により矩形領域が作成される、等のアクション示す。
【0080】
ステップS404では、マウスのクリックを検知した際に、例えば、図5に示すようなツールバーのモードの切り替えボタンが押された、または名寄せ作成ボタンが押されたか、またはその他かを判定している。尚、モードには、矩形作成を行うモードと、作成された矩形同士を移動元から移動先というように関連付けを行うモードがある。
【0081】
モードの切り替えボタンが押下されたことを検知した場合、ステップS406へ処理を進め、名寄せ作成ボタンが押下されたことを検知した場合、ステップS442へ処理を進める。
【0082】
ステップS406では、前述したようにモードには、2通りのモードが存在するため、何れのモードにて処理を行うのかをユーザに選択させるため、矩形作成モードあるいは矩形関連付モードを選択可能とするボタン等(不図示)を表示し、矩形作成モードが選択されたことを検知した場合、ステップS408へ処理を進め、矩形関連付モードが選択されたことを検知した場合、ステップS422へ処理を進める。
【0083】
尚、本ステップにおけるモードの切り分けは、前述のようなモードを選択するためのボタン等を表示せず、既に作成された矩形が選択された(矩形関連付モード)、あるいは、新規で矩形が作成された(矩形作成モード)等の操作によってモードを切り分けても良い。
【0084】
ステップS408では、矩形が作成される処理を待機しており、矩形が作成されたことを検知した場合は、ステップS410へ処理を進め、それ以外の操作の場合は、ステップS402へ処理を進める。
【0085】
ステップS410では、作成された矩形の座標X、座標Y、幅Width、高さHeightを取得し、次のステップS412では、矩形情報保存領域Rを生成する。
【0086】
ここで矩形情報保存領域Rとは、図15で示すような情報を保持しており、矩形IDは、作成する矩形毎にユニークとなるよう採番されたIDを記憶する領域であり、ここでは1以上の整数からユニークなIDを割り当てるものとしている。
【0087】
また、X、Y、W、Hは、それぞれ順に矩形左上点のX座標、矩形左上点のY座標、矩形の幅、矩形の高さを記憶する領域である(本実施形態では、左上の座標から右がX座標の増加、下がY座標の増加、といったような座標からなる。)。
【0088】
移動元矩形IDは、当該矩形が帳票データをレイアウトするに際し、帳票データが元々配置されている移動先矩形を示すものとして設定された場合に、移動元矩形の矩形IDを記憶する領域である。この領域は初期状態を0として設定しておくことで、矩形IDが0である矩形は、移動先矩形として設定されていないと判断することができる。
【0089】
ステップS414では、新規作成された矩形用のユニークなIDを採番し、矩形情報保存領域Rの矩形IDに設定し、同様にステップS416によって、ステップS410において取得した座標値をRに設定する。ステップS416に示すR.Xは、矩形情報保存領域RのX、R.Yは、矩形情報保存領域RのY、R.Wは、矩形情報保存領域RのW、R.Hは、矩形情報保存領域RのHを示している。
【0090】
以降も同様に、R.X、R.Y、R.W、及びR.Hに示すように所定の情報に対して、該情報の陽を示す場合には、「所定の情報.要素」といったように記載を簡略化して説明を行っている。
【0091】
ステップS418では、前述した通り、矩形が新規で作成されたものであるため、移動元矩形IDの領域には、初期状態として0を設定する。
【0092】
ステップS420では、新規生成された矩形情報保存領域Rを矩形情報配列に追加している。この配列は、図16に示すように、図15の矩形情報を複数保持する配列である。その後、ステップS402へ処理を進め、アクションを検知する処理を行う。
【0093】
ステップS422では、矩形関連付けモードとなった場合の処理を示しており、既に作成済みの矩形がクリックにより選択されるのを待ち受けている。ここで、既に移動先矩形と設定されていない矩形をクリックした場合には、移動元矩形を選択したと判断し、ステップS424へ進める。それ以外の場合は、ステップS402へ処理を進める。
【0094】
ステップS424では、図16に示す矩形情報配列からクリックされた矩形の情報を取得し、ステップS426では、ステップS424において取得した矩形情報から、矩形の中心点の座標を算出する。
【0095】
ステップS426に示すR.X、R.Y、R.W、及びR.Hは、矩形情報保存領域Rの各要素に対応していることを前述したが、矩形情報配列は、矩形情報保存領域Rから構成されているため、本ステップでは、矩形情報配列から矩形の情報を取得しているが、当然のことながら、矩形情報保存領域RのR.X、R.Y、R.W、及びR.Hと矩形情報配列の矩形の情報とは、同一内容を示しているため、同一の符号を用いて説明している。
【0096】
ステップS428では、求めた移動元矩形の中心点からマウスポインタ座標に向けての矢印表示を行う。これは、移動先矩形を設定する操作を行うに際し、移動元矩形として何を選択したか、どの方向へ移動するか?などを視覚的にユーザに視認させるためである。
【0097】
ステップS430からステップS434では、ステップS422同様に作成済の矩形をクリックにより選択されるのを待ち受けているが、ここでは移動先矩形として選択されていない矩形をクリックした場合にのみ、次のステップS436へ処理を進める。移動先矩形として選択されていないことは、矩形情報配列の移動元矩形IDが0であることによって、判断が可能である。
【0098】
ステップS436では、ステップS426と同様に移動先矩形の中心点の座標を算出し、次のステップS438では、移動元矩形の中心座標から移動先矩形の中心座標への矢印を表示する。もちろんこのタイミングでマウスポインタへの矢印の表示は、クリアする。
【0099】
ステップS440では、移動元矩形IDを矩形情報保存領域Rの移動元矩形IDに設定し、矩形情報配列の移動元矩形IDを更新することで、1通りの移動設定は完了である。同様な方法で、ユーザは、矩形の関連付けを複数行うことが可能である。
【0100】
ステップS404において、モードの切り替えを行わないと判定した場合は、ステップS442へ処理を進め、ステップS442では、名寄せ作成ボタンが押下されたか否かを判定し、名寄せ作成ボタンが押下されていない場合は、ステップS402へ処理を進めるが、押下されたことを検知した場合は、ステップS444へ処理を進める。
【0101】
ステップS444では、レイアウトの設定を行う対象とすべく矩形の移動元、移動先の関連付け設定が1つ以上設定されているか否かを判定し、設定されていると判定した場合は、データレイアウト設定処理が終了となり、ステップS112へ処理を進め、設定されていないと判定した場合は、ステップS402へ処理を進める。尚、設定が行われたか否かについては、矩形情報配列の移動元矩形IDに0以外のデータが設定されているか否かによって判定し、0以外のデータが設定されている場合は、レイアウト設定が完了していると判定し、0以外のデータが設定されていない場合は、レイアウト設定が完了していないと判定することができる。
【0102】
次に図17に示すフローチャートを用いて本発明の実施形態に係る帳票処理システムにおける名寄せ帳票作成処理を説明する。
【0103】
ステップS500では、クライアントPC102から帳票サーバ101へ名寄せ帳票作成の指示に際して、レイアウト条件を送信する。送信するレイアウト条件データの一例を図24に示す。
【0104】
レイアウト条件は、前記の矩形情報配列、及びフォーム情報を送信する。ここでフォーム情報は、ステップS108においてイメージファイル指定がなされた場合は、フォーム種別にイメージファイルを示す2、イメージファイルのサイズ、イメージ保存領域に保存されているイメージファイルを送信し、一方、登録済みの帳票のフォームを利用するとした場合は、フォーム種別に帳票のフォームを流用することを示す1、流用フォーム帳票ID保存領域に記憶した帳票IDを送信する。
【0105】
ステップS502では、帳票サーバ101は、ステップS500において送信されたレイアウト条件を受信し、ステップS504では、後の処理のために、改ページフラグの領域確保及び、フラグをTRUEでの初期化、またヒットデータ配列Hの領域を確保している。更に、ステップS506では、フォームイメージ領域Fを確保している。
【0106】
ステップS508では、ステップS502において受信したレイアウト条件に含まれるフォーム情報が、イメージファイル指定か、帳票のフォームを流用するのかを判定しており、具体的には、レイアウト条件のフォーム種別によって判定を行っている。
【0107】
帳票のフォームを流用するかを判定した場合、つまりフォーム種別が1の場合、ステップS510へ処理を進め、ステップ510では、ステップS502において受信したレイアウト条件に含まれる流フォーム帳票IDに該当する帳票IDを有する帳票からフォームイメージを取得し、イメージファイル指定であった場合、つまりフォーム種別が2の場合、ステップS512へ処理を進める。
【0108】
ステップS512では、ステップS508においてイメージ指定と判定した場合は、ステップS502において受信したレイアウト条件に含まれるイメージファイルをフォームイメージ領域Fにフォームデータとして記憶し、ステップS508において、帳票のフォームを流用すると判定した場合、ステップS510に於いて取得したフォームイメージをフォームイメージ領域Fにフォームデータとして記憶する。
【0109】
ステップS514では、ステップS512においてフォームイメージ領域Fに記憶したフォームデータに含まれる罫線情報を解析する処理であり、本ステップにおける詳細の処理については、図18を用いて後述する。
【0110】
ステップS516では、ステップS514において解析された罫線情報をレイアウト条件である矩形情報と交錯する罫線を矩形毎に抽出する矩形内罫線解析処理を行うが、本ステップにおける詳細の処理については、図20を用いて後述する。
【0111】
ステップS518では、検索結果ファイルをオープンし、ステップS520は、検索結果ファイルに記憶された検索ヒットレコード数分のループ上端を示しており、ステップ522では、検索結果ファイルに記憶された検索ヒットレコードの先頭から順番に1レコードを取得する。尚、ここで取得する検索結果は、ステップ212において図6を用いて説明したものと同一内容である。
【0112】
ステップS524では、改ページフラグがTRUEであるかFALSEであるかを判定している。このループにおいてステップS524を初めて処理する場合は、改ページフラグの初期値よりTRUEとして処理される。
【0113】
TRUEの場合は、改ページが発生したとみなし、ステップS526において、空のページイメージを生成する。これは単に1ページ分の文字データやフォームデータを記憶するためのメモリ領域の確保を意味している。
【0114】
ステップS528では、フォームイメージ領域Fに記憶されているフォームデータをページの背景に設定する。
【0115】
ステップS530では、改ページフラグを一旦FALSEとし、次の改ページに備える。
【0116】
ステップS532では、検索ヒットレコードの1レコードの帳票IDに該当する帳票がオープン済みであるか否かを確認する。これは無用に二重で帳票がオープンされることを避ける処理である。オープンされていない場合は、ステップS534にて、当該1レコードの帳票IDを有する検索元帳票ファイルをオープンし、オープンされている場合は、ステップS536へ処理を進める。
【0117】
ステップS536では、オープンされている検索元帳票ファイルから、検索結果に対応する文字データをヒットデータ配列Hに記憶する。この処理は、ステップS218で説明した処理と同一内容あり、図8に示したデータ構造で、ヒットデータ配列Hは構成される。
【0118】
ステップS538では、ヒットデータ配列Hに記憶された文字データをレイアウト条件に従って、自動的に表示形態、表示サイズなどを調整して帳票の各ページに配置する処理であるが、本ステップにおける処理の詳細については図23を用いて後述する。
【0119】
ステップS540は、ループ終端であり、すべての検索ヒットレコード数分の処理が終了した場合に、ループを抜ける。このタイミングで帳票サーバ101に名寄せ帳票のイメージが完成する。
【0120】
ステップS542では、ステップS540において生成した名寄せ帳票データをクライアントPC102へ送信し、ステップS544では、ステップS542において送信された、名寄せ帳票データを受信した後、ステップS114において、クライアントPC102に名寄せ帳票を表示する。
【0121】
次に図18に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける罫線解析処理を説明する。
【0122】
ステップS600では、フォームイメージ領域Fに記憶されているフォームデータが、描画命令を持つ前述のEMFやSVG、その他のベクターグラフィックスか否かを判定し、ベクターグラフィックスであると判定した場合は、ベクターグラフィックスであると判定しない場合は、処理を終了する。
【0123】
ステップS602では、罫線配列Kを確保、初期化するが、罫線配列Kの内容については、後述する。
【0124】
ステップS604では、ベクターグラフィックスを読み込み、命令数分ループ処理を開始することを示しており、ループの回転の都度、順次命令を読み込む。
【0125】
ステップS606では、命令が線分描画命令であるか否かを判定し、線分描画命令であると判定した場合は、ステップS610へ処理を進め、線分描画命令であると判定しない場合は、ステップS616へ処理を進める。尚、線分描画命令とは、直線を描画するための命令を指す。
【0126】
ステップS608では、ステップS606における線分描画命令が平行線分であるか否かを判定し、平行線分であると判定した場合は、ステップS612へ処理を進め、平行線分であると判定しない場合は、ステップS614へ処理を進める。
【0127】
本ステップにおける平行線分であるか否かの判定とは、表現を変えると、横罫線であるか否かを判定している。この判定は、線分の始点と終点が同じY座標を持つかを評価することで簡単に判定できる。
【0128】
ステップS612では、平行線分と判定された線分の始点と終点のX座標、Y座標を罫線配列Kに追加記憶してステップS614に示すループ終端に進む。
【0129】
尚、罫線配列Kの内容を図19に示す。罫線配列Kの配列の1要素には前記した線分の始点と終点のX座標、Y座標が記憶されるように構成されている。
【0130】
ステップS616では、命令が多角形描画の命令であるか否かを判定し、多角形描画の命令であると判定した場合、ステップS610へ処理を進め、多角形描画の命令であると判定しない場合、ステップS614へ処理を進める。
【0131】
多角形を処理するのは、フォームの罫線を表現するために、線分だけでなく、四角形なども用いられることがあるためである。
【0132】
ステップS618では、多角形を複数の線分に分割する。多角形の描画命令では、それぞれの頂点のX座標、Y座標を持つため、複数の線分に容易に分割することが可能である。
【0133】
ステップS620は、分割した線分数分のループ上端を示しており、ステップS622では、ステップS618において分割した線分を順次読み込み、ステップS624では、線分が平行線分であるか否かを判定する。
【0134】
平行線分であると判定した場合は、ステップS626へ処理を進め、平行線分であると判定しない場合は、ステップS628に示すループ終端に進む。尚、ステップS624及びステップS626における処理は、ステップS610及びステップS612で説明した処理と同一内容である。
【0135】
この一連の罫線解析処理によって、フォームデータから平行線分の情報のみを抜きだして記憶する罫線配列Kを生成できる。
【0136】
次に図20に示すフローチャートを用いて本発明の実施形態に係る帳票処理システムにおける矩形内罫線解析処理を説明する。
【0137】
ステップS700では、罫線配列Kについて、1つ以上の要素が記憶されているか否かを判定し、記憶されていると判定した場合は、ステップS702へ処理を進め、記憶していると判定しない場合は、処理を終了する。
【0138】
これは、フォームデータがベクターグラフィックスでなかった場合や、ベクターグラフィックスであった場合でも、横罫線を表す平行線分が発生しなかった場合を判断するためである。この場合、罫線配列Kには、1つも要素が記憶されていないことになる。
【0139】
ステップS702では、後の処理で利用する矩形罫線Y座標配列を記憶するための矩形罫線マップ領域Mを生成する。矩形罫線Y座標配列と矩形罫線マップ領域Mの詳細については後述する。
【0140】
ステップS704では、矩形情報領域Aと罫線情報領域Bを確保する。
【0141】
ステップS706は、矩形情報配列に記憶された矩形数分のループ上端を示している。
【0142】
ステップS708では、ステップS500において送信されたレイアウト条件に含まれる矩形情報配列から矩形情報を取得し、矩形情報領域Aに記憶する。矩形情報配列および矩形情報領域Aは、それぞれ前述した図16、図15で例示したデータを持つ。
【0143】
ステップS710では、矩形情報領域Aが持つ移動元矩形IDが0より大きい値が設定されているか否かを判定し、0の場合は、移動元矩形が設定されていないことから、移動先矩形ではないと判定でき、図20における本処理では、移動先矩形と交差する線分の情報を解析することを目的とするため、この場合は、ループ終端であるステップSS730へ処理を進め、次のループ処理へ進み、移動元矩形IDが設定されている場合は、ステップS712へ処理を進める。
【0144】
ステップS712では、矩形罫線Y座標配列Cを生成する。矩形罫線Y座標配列は、図21にて示すように、矩形の線分のY座標のみを要素とする配列である。ここに記憶する情報は、前記の平行線分から抽出されるY座標であり、平行線分は同じY座標の始点、終点をもつことから一つのY座標を持つ領域のみを要素とすることで目的を達成できる。また、この配列は後の処理で、Y座標をキーに昇順でソートされ、活用される。
【0145】
ステップS714は、ステップS514において生成した罫線配列Kに記憶された要素数分のループ上端である。
【0146】
ステップS716では、罫線配列Kから次の要素を罫線情報領域Bに記憶し、ステップS718では、矩形情報領域A及び罫線情報領域Bを用いて、矩形の領域と罫線が交差するかを判定し、矩形の領域と罫線が交差すると判定した場合は、ステップS720へ処理を進め、矩形の領域と罫線が交差すると判定しない場合は、ステップS722へ処理を進める。
【0147】
本ステップは、矩形情報領域Aの持つ、X、Y、W、Hから定まる各頂点の座標と、罫線情報Bが持つX1、Y1、X2、Y2の値を用いて以下の条件が成り立つことで、矩形の領域と罫線が交差することを判定できる。
【0148】
A.X≧B.X1、かつA.X+A.W≦B.X2、かつA.Y≦B.Y1、かつA.Y+A.H≧B.Y1
【0149】
ステップS720では、矩形罫線Y座標配列Cに線分のY座標であるB.Y1を追加記憶し、ステップS722は、ループ終端を示している。
【0150】
ステップS724では、ステップS714からステップS722までのループで構築された矩形罫線Y座標配列Cに記憶された要素が存在するか否かを判定し、要素が存在しない場合は、矩形と罫線が交差しなかったと判断され、ステップS730へ処理を進め、次のループ処理を行う。
【0151】
要素が存在した場合は、ステップS726へ処理を進め、矩形罫線Y座標配列Cの要素を前述の通り、昇順でソートする。
【0152】
ステップS728では、矩形罫線マップ領域Mに処理中の矩形情報領域Aの持つ矩形IDをキーにして、矩形罫線Y座標配列Cを追加記憶する。
【0153】
ここで、図22を用いて、矩形罫線マップ領域Mを説明する。図22では、マップ構造を図示しているが、ここでは、矩形IDをキーに、バリューに矩形罫線配列Cとしてマップ構造を構成している。
【0154】
一般にマップ構造は、ユニークなキーに対するデータを持つ方法である。このようにして、記憶された矩形罫線Y座標配列Cは、矩形IDを用いて取り出すことができる。後述する処理において、この矩形罫線マップ領域Mから矩形IDをキーに矩形罫線Y座標配列Cを取り出している。
【0155】
こうして、ループ処理が終了すると矩形内罫線解析処理の終了となり、移動先矩形と交差する横罫線の情報が矩形罫線マップ領域Mに構築されたことになる。
【0156】
次に図23に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにけるデータ配置処理を説明する。データ配置処理は、帳票データを新しいレイアウトに適合するように調整して配置する処理である。
【0157】
ステップS800では、矩形情報領域A、矩形情報領域B、文字データ配列K、平行移動量MoveX 領域、配置Y座標管理マップ領域MYを確保する。
【0158】
ステップS802は、矩形情報配列に記憶された矩形数分のループ上端を示している。
【0159】
ステップS804では、ステップS500において送信されたレイアウト条件に含まれる矩形情報配列から矩形情報を取得し、矩形情報領域Aに記憶する。矩形情報配列および矩形情報領域Aは、それぞれ前述した図16、図15で例示したデータを持つ。
【0160】
ステップS806では、矩形情報領域Aの持つ移動元矩形IDに値が設定されているかによって、移動先を表す矩形情報であるか否かを判定し、移動先を表す矩形情報でない場合は、ステップS832へ処理を進め、移動先を表す矩形情報である場合は、ステップS808へ処理を進める。
【0161】
ステップS808では、矩形情報配列から矩形情報領域Aの持つ移動元矩形IDと一致する矩形IDを持つ矩形情報を矩形情報領域Bに記憶する。これでAが移動先矩形情報、Bが移動元矩形情報となる。
【0162】
S810では、処理中の検索結果に該当するヒットデータが保持されているヒットデータ配列Hから、移動元であるBで示される矩形と交わる文字列を移動対象文字列Nとして抽出する移動データ抽出処理を行っている。尚、本ステップにおける詳細な処理については、図25を用いて説明する。
【0163】
ステップS812では、平行移動量MoveX領域と文字データC領域を確保して、初期化する。平行移動量MoveXは、移動元Bと移動先Aの平行移動距離を記憶する変数である。
【0164】
また、文字データCは、ステップS810において抽出された移動文字データ配列Nの要素を取得して記憶するための領域である。尚、文字データCは、図7で示した文字データである。また、移動文字データ配列Nに記憶した要素は、図8で示した文字データの集合である。
【0165】
ステップS814では、平行移動量MoveXに、以下の式1に示す計算式の演算結果を代入することで、平行移動距離を記憶している。
【0166】
平行移動量MoveX ← 矩形情報領域A.X
― 矩形情報領域B.X (式1)
【0167】
ステップS816は、ステップS810において抽出された移動文字データ配列Nの要素数分のループ上端を示している。
【0168】
ステップS818では、移動文字データ配列Nに記憶された次の要素を文字データCへ記憶する。
【0169】
ステップS820では、ステップS818において記憶した文字データCの持つX座標(C.Xと示す)以下の式2の計算式の演算結果を代入することで文字データCを移動先矩形領域Aに向けて、平行移動している。
【0170】
文字データC.X ← 文字データC.X + 平行移動量MoveX (式2)
【0171】
ステップS822では、移動文字データ配列Nに記憶されたステップS818で取得した現在の要素を文字データCで更新する。
【0172】
ステップS824は、ステップS816から始まるループの終端である。移動文字データ配列Nに含まれる文字データすべての平行移動が終わるまで処理を続ける。
【0173】
ステップS826では、移動文字データ配列Nで表わされる文字列の文字列幅を移動先矩形に関する矩形情報領域Aの幅に収まるようにフィットする文字列幅フィット処理である。尚、本ステップにおける詳細な処理については、図26を用いて説明する。
【0174】
ステップS828は、移動文字データ配列Nで表わされる文字列を移動先矩形領域Aに適切に配置するためにY座標を調整し配置するY座標配置処理である。本ステップにおける詳細な処理については、図27を用いて説明する。
【0175】
ステップS803では、矩形情報領域Aによって示される矩形に対して適切に配置された移動文字データ配列Nをページイメージに追加している。
【0176】
ここまでの、ステップS802からステップS832までのループにおける処理をすべて行うことで、複数設定される移動先の矩形に対して、検索ヒットレコードの帳票データを適切に配置することができる。
【0177】
次に図25に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける移動データ抽出処理を説明する。移動データ抽出処理は、処理中の検索結果に該当する検索ヒットデータが保持されているヒットデータ配列Hから、移動元である矩形情報領域Bで示される矩形に内包する文字データを移動対象文字として抽出する処理である。
【0178】
ステップS900では、文字データM、移動文字データ配列Nを確保、初期化する。
【0179】
ステップS902では、ステップS536においてヒットデータ配列Hに記憶した要素数分のループ上端である。
【0180】
ステップS904では、ステップS536においてヒットデータ配列Hに記憶した次の要素を文字データMに記憶し、ステップS906では、文字データMの文字位置を取得する。
【0181】
ステップS908では、文字データMが、矩形情報領域Bの内部に位置するか否かを判定し、内部に位置していると判定した場合は、ステップS910へ処理を進め、内部に一致していると判定しない場合は、ステップS912へ処理を進める。本ステップ、ステップS906において取得した文字位置と矩形情報領域Bから特定される矩形の座標を比較することで容易に判定できる。
【0182】
ステップS912では、移動文字データ配列Nに文字データMを追加記憶する。その後、ステップS912に示すループ終端に至る。ステップS902に示すループ終了条件を満たして本処理を終えることで移動文字データ配列Nが構築される。
【0183】
次に図26に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける文字列幅フィット処理を説明する。
【0184】
ステップS1000では、文字列幅MOJIW、超過幅OVERW、文字データC、及び文字平行移動量MOVEを確保する。
【0185】
ステップS1002では、矩形情報領域Aから矩形の幅を示すA.Wを取得する。
【0186】
ステップS1004では、文字幅取得処理を実行し、移動文字データ配列Nから文字列幅MOJIWを取得する。尚、本ステップにおける詳細な処理は、図27を用いて説明する。
【0187】
ステップS1006では、ステップS1004において取得した文字列幅MOJIWが、矩形の幅A.Wよりも大きいか否かを判定し、大きいと判定した場合は、本ステップは、文字列幅を調整する処理を行うためにステップS1008へ処理を進め、大きいと判定しない場合、つまり同じまたは小さい場合は、幅の調整の必要はないため処理を終了する。
【0188】
ステップS1008では、超過幅OVERWに文字列幅が超過した幅を記憶する。
【0189】
ステップS1010では、文字間のピッチを調整し、矩形幅に文字列幅を納めるように試みる処理である。尚、本ステップにおける詳細な処理は、図28を用いて説明する。
【0190】
ステップS1012では、ステップS1010における処理によって文字列幅の縮小を試みた結果を評価するために、ステップS1004と同じ文字列幅取得処理を行っている。
【0191】
ステップS1014では、ステップS1006と同じ文字列幅と矩形幅の評価を行っている。ここで文字列幅が矩形幅に収まっていれば、問題ないため文字列幅フィット処理を終える。再び超過していた場合は、ステップS1016へ処理を進める。
【0192】
ステップS1016では、超過幅OVERWの再計算を行う。
【0193】
ステップS1018では、文字のサイズと文字間のピッチを調整し、矩形幅に文字列幅を納めるようにする処理である。本ステップにおける詳細な処理については、図29を用いて説明するこの処理を終えると文字列幅が矩形幅に収まるように自動的に調整される。
【0194】
次に図27に示すフローチャートを用いて本発明に実施形態に係る帳票生成システムにおける文字列幅取得処理を説明する。文字データが複数記憶されている配列、文字データ配列から文字列の横幅を取得する処理である。
【0195】
ステップS1100では、変数MINX、変数MAXX、文字列幅MOJIW、文字データCの領域を確保する。
【0196】
ステップS1102では、初期化として、変数MINXに十分大きな整数を記憶する。例えば、4バイトで表現できる整数の最大値である2147483647等である。また、変数MAXXに十分に小さな整数を代入する。例えば4バイトで表現できる整数の最小値である
―2147483648等である。
【0197】
ステップS1104は、移動文字データ配列Nに記憶された要素数分のループ状態である。
【0198】
ステップS1106では、移動文字データ配列Nに記憶された次の要素を取り出し文字データCに記憶する。
【0199】
ステップS1108では、ステップS1106において記憶した文字データCが持つ情報であるX座標が、変数MINXより小さいか否かを判定し、小さいと判定した場合は、ステップS1110へ処理を進め、小さいと判定しない場合は、ステップS1112へ処理を進める。
【0200】
ステップS1110では、変数MINXにステップS1108におけるX座標を記憶する。
【0201】
ステップS1112では、取り出した文字データCが持つ情報である文字の右端の座標(X+W、Wは、文字データのフォント情報のサイズを示す。)が変数MAXXより大きいか否かを判定し、大きいと判定した場合は、ステップS1114へ処理を進め、大きいと判定しない場合は、ステップS1116へ処理を進める。
【0202】
ステップS1114では、変数MXXにステップS1112におけるX+Wの値を代入する。
【0203】
ステップS1116は、ステップS1104に対するループ終端を示している。
【0204】
ステップS1118では、ループを終了した段階の変数MAXXと変数MINXとの差をとることで文字列幅MOJIWに文字列幅を代入している。以上により、文字列幅Wを算出し、本処理の呼び出し元に提供する。
【0205】
次に図28に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける文字間ピッチ調整処理を説明する。本処理では、文字同士でそれぞれさまざまな文字間ピッチを有している場合に、元データの文字配置構造を極力崩さないように文字間ピッチを縮小する処理であり、本発明において特に重要な特徴ある処理である。
【0206】
ステップS1200では、シフト幅J、削減幅T、文字データC、前文字終端座標PREVXを確保し、ステップS1202では、削減幅Tを0で初期化する。
【0207】
ステップS1204は、ループ上端を示しており、このループは、ステップS1228における判定を行う処理にて終了する。
【0208】
ステップS1206では、シフト幅Jを0で初期化する。
【0209】
ステップS1208は、前記ループの内部にあり、移動文字データ配列Nに記憶された要素数分のループ上端を示している。
【0210】
ステップS1210では、移動文字データ配列Nからループにあわせて順次要素を取り出し、文字データCに記憶する。
【0211】
ステップS1212では、ステップS1210において移動文字データ配列Nからの要素の取り出しが2回目以降であるか否かを判定し、2回目以降である場合は、ステップS1214へ処理を進め、2回目以降であると判定しない場合は、ステップS1224へ処理を進める。
【0212】
本ステップにおける判定は、移動文字データ配列Nに記憶された文字列の先頭文字と2文字目以降では処理が異なるためである。
【0213】
ステップS1214では、前文字終端座標PREVXに文字データCのX+Wで表わされる文字の右端のX座標を記憶する。このPREVXは順次文字データCを処理するに際して常に前の文字の右端座標を更新して記憶する目的で用いる。
【0214】
ステップS1214では、文字データCのXと保存されている前文字終端座標PREVXを比較し、文字データCのXが前文字終端座標PREVXより大きいと判定した場合、ステップS1216へ処理を進め、大きいと判定しない場合は、ステップS1222へ処理を進める。
【0215】
この比較は、現在処理している文字データCを前の文字の間に文字間ピッチが存在するかを確認している。つまり接触しているのであれば、前の文字との間の文字間はこれ以上削減できないことになる。
【0216】
従って、文字データCのX座標とPREVXの間に間隔があると判断された場合はYESとなり、ステップS1216へと処理を進める。
【0217】
ステップS1216では、超過幅OVERWと削減幅Tとを比較し、超過幅OVERWよりも削減幅Tが大きいと判定した場合は、まだ削減を継続する必要があるとして、ステップS1220へ処理を進め、大きいと判定しない場合は、ステップS1222へ処理を進める。
【0218】
ステップS1218では、文字データCのX座標であるC.Xの座標を左にシフトする処理であり以下の式3に示す計算式を用いている。
【0219】
文字データC.X ← C.X − J − 1 (式3)
【0220】
ここでJは、ステップS1208からステップS1226のループ処理において左方向シフトした幅の総計である。文字データC.Xをシフト幅Jと、さらに1、左にシフトすることで、本ループで処理してきた前文字までのシフト幅も同時に左にシフトする。
【0221】
ステップS1220では、削減幅Tに1を加算する。削減幅Tは、シフト幅Jと異なり本文字間ピッチ処理における削減幅の総計である。また、シフト幅に1を加算し、本ループ処理でのシフト幅総計を更新している。
【0222】
その後、ステップS1224へ処理を進め、ステップS1224では、前文字終端座標PREVXに文字データCのX+Wで表わされる文字の右端のX座標を代入して保存する。
【0223】
ステップS1226は、ステップS1208から始まるループの終端であり、次のループ処理を進める。
【0224】
ステップS1214の処理に戻り説明を続ける。ステップS1214において、大きいと判定しない場合、文字データC.Xと前文字の終端座標が一致するケースであるため、1シフト処理は行わない。
【0225】
ただし、前文字までのシフト幅Jについては、文字データCにも反映しないと、この文字が削減シフトから取り残されるため、ステップS1222においてシフト幅Jの分だけシフトしている。また、このケースでは幅の削減効果はないため、JとTに対する加算は行わず、ステップS1224へ処理を進める。
【0226】
ステップS12246までのループを1回処理すると、すべての文字間にピッチ幅が存在した場合は、それぞれ1ずつ間隔が狭まったことになる。
【0227】
ループを抜けるとステップS1228においての評価を行う。ここでは、削減幅の総計であるTが、本来削減した超過幅OVERWを上回ったかを評価している。上回っていれば、これ以上文字ピッチ幅を削減する必要はないためステップS1204からステップS1230迄のループを抜け終了となる。
【0228】
また、上回っていない場合でも、シフト幅Jが0であるか否かを評価している。Jが0であるということは、これ以上文字間ピッチに削減の余地がないということであるので、同様にステップS1204からステップS1230迄のループを抜け終了とする。
【0229】
ここで、本処理では、ステップS1208からステップS1226までのループが複数回実行される。この本処理を利用することで、文字間ピッチが一律な文字列の場合には、一律に文字間を縮めた違和感のない文字幅調整が行える。
【0230】
また、文字間ピッチが極端に広い箇所などがある場合を考えると、それは意味のある文字間ピッチの表現であると考えられる。たとえば、2、3の単語が連なった文字列で、その単語間に間隔を持たせている場合などがある。他には、英語をイメージすると分かりやすい。
【0231】
以下のような文章がある場合、例えばThisとisの間は広い文字間ピッチにより文字列が表現されていると考えられる。
This is a pen
【0232】
このような場合には、Thisとisの間は極力削減せずに、文字間ピットを残さないと文章として成り立たなくなる。
【0233】
このようなケースに対応するために、広い間隔を削減するのではなく、文字列全体の配置表現を変更しないような処理フローを実現したのが、この文字間ピッチ調整処理である。
【0234】
この処理を終了しても、Jが0と判定されて終了した場合には、本来、超過幅OVERW分削減したかったにも関わらず、文字列全体の幅が削減できていない場合がある。そのために、ステップS1018における文字サイズ調整処理が用意されている。
【0235】
次に図29に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける文字サイズ調整処理を説明する。本処理では、文字サイズを縮小することで文字間ピッチを生み出し、その文字ピッチを詰めることで文字列全体のサイズを縮小することを実現している処理であり、本発明において特に重要な特徴ある処理である。
【0236】
ステップS1300では、縮小前文字幅ORGW、縮小後文字幅NEWW,シフト幅J、文字データCを確保する。
【0237】
ステップS1302は、ループ上端であり、ステップS1324の判定処理によってループを抜ける仕組みとなっている。
【0238】
ステップS1304では、シフト幅Jに0を記憶しており、ステップS1302からステップS1328におけるループの先頭処理にて都度0に初期化される。
【0239】
ステップS1306では、移動文字データ配列Nに記憶された要素数分のループ上端である。
【0240】
ステップS1308では、移動文字データ配列Nに記憶された要素を取り出し、文字データCに記憶する。
【0241】
ステップS1310では、文字データCのX座標であるC.Xにこれまでのシフト幅Jを反映する。ループの1回転目である1文字目では、Jが0であるためシフトしない。
【0242】
ステップS1312では、文字データCの文字幅を取得し、縮小前文字幅ORGWに記憶する。
【0243】
ステップS1314では、文字データCのフォントサイズを1ポイント小さくする。ここでは文字データCの持つフォント情報を更新する。
【0244】
ステップS1316では、文字データCの文字幅を再度取得し、縮小後文字幅NEWWに記憶する。
【0245】
ステップS1318では、文字データCが持っている情報であるWにNEWWの値を記憶することで文字幅Wを更新する。
【0246】
ステップS1320では、シフト幅JにORGWとNEWWとの差である縮小幅とこれまでのシフト幅Jを加算した値をJに記憶し更新している。
【0247】
ステップS1322は、ループ終端を示し、移動文字データ配列Nに記憶された要素数分処理するとループを抜ける。ここで求める削減幅を達成したタイミングでループを抜けないのは、一連の文字列のフォントを一律に調整することで見た目の良さを実現するためである。
【0248】
ループを抜けたあと、ステップS1324では、シフト幅Jが達成したかった縮小幅である超過幅OVERW以上の値となり、目的を達成したか否かを判定し、達成したと判定した場合は、処理を終了する。また、達成していないと判定した場合は、ステップS1326へ処理を進める。
【0249】
ステップS1326では、超過幅の残りを算出している。超過幅OVERWからシフト幅Jを減算した値が残りの超過幅である。
【0250】
ステップS1328は、ループ終端であり、前述の処理により目的の文字列幅の削減が達成されるまで繰り返す。
【0251】
次に図30に示すフローチャートを用いて本発明に実施形態に係る帳票生成システムにおけるY座標配置処理を説明する。本処理は前述までの処理によって調整された文字列を移動先の矩形に適切なY座標を設定し配置する処理である。
【0252】
ステップS1400では、矩形罫線マップ領域Mに処理対象の矩形IDのデータが存在するか否かを確認し、存在すると判定した場合は、ステップS1404へ処理を進め、存在すると判定しない場合は、ステップS1402へ処理を進める。
【0253】
矩形罫線マップ領域Mに処理対象の矩形IDのデータが存在する場合とは、現在の配置対象の矩形に罫線が存在することを意味している。
【0254】
ステップS1402では、行ピッチ配置処理を行う。この処理は配置対象の移動文字データ配列Nが持っている行ピッチに従って、移動先矩形の上端座標から、順次Y座標を移動して配置していく処理であり、一般的な手法である。移動先の矩形の下端座標に達した場合には、図17で用意されている改ページフラグをTRUEにすることで次回は新しいページイメージに対する配置処理となる。
【0255】
罫線が存在した場合には、ステップS1404において、罫線フィット配置処理を行う。本ステップにおける詳細な処理については、図31を用いて説明する。
【0256】
次に図31に示すフローチャートを用いて本発明の実施形態に係る帳票生成ステムにおける罫線フィット配置処理を説明する。本処理は、移動先の矩形に罫線が存在する場合、その罫線に沿って文字列を配置していく処理であり、本発明において重要な特徴な処理であると言える。
【0257】
ステップS1500では、罫線Y座標Y1
、罫線Y座標Y2、矩形罫線Y座標配列K、対象罫線インデックスKIDX、罫線中間Y座標MIDY、文字高さH、文字Y座標Y3の領域を確保する。
【0258】
ステップS1502では、配置Y座標管理マップMYに矩形情報領域Aの矩形IDに対応するデータが存在するか否かを判定し、存在すると判定した場合は、ステップS1506へ処理を進め、存在すると判定しない場合は、ステップS1504へ処理を進める。
ここで、配置Y座標管理マップMYの構造について、図32を用いて説明する。
【0259】
配置Y座標管理マップMYは、マップ構造を持ち、キーに矩形IDを利用することで矩形IDに対して一意なバリューを返すことができるように構成されている。
【0260】
バリューは、罫線フィット配置処理からこのマップを利用する場合は、対象罫線インデックスを記憶するように利用する。
【0261】
ここで、矩形IDに対して対象罫線インデックスを記憶することとし、そのインデックスには文字列を罫線にフィットして配置したときの基準罫線のインデックスを記憶しておくことによって、罫線を持つ矩形に対して文字列を配置する処理の際に、次の配置において基準として扱う罫線が特定できるようにしている。
【0262】
ステップS1504では、配置Y座標管理マップMYに以下のような初期データを設定する。
キー:矩形情報領域Aの矩形ID
バリュー:0
このバリュー:0は、矩形罫線Y座標配列Kの先頭の罫線を示している。
【0263】
ステップS1506では、配置Y座標管理マップMYから以下のキーで対象罫線インデックスを取得する。
キー:矩形情報領域Aの矩形ID
すると、対象罫線インデックスが取得できるので、KIDXに記憶する。
【0264】
ステップS1508では、矩形罫線マップ領域Mから、矩形IDをキーにして矩形罫線Y座標配列Cを取得する。
【0265】
ステップS1510では、ステップS1508において取得した矩形罫線Y座標配列Cを矩形罫線Y座標配列Kに記憶する。
【0266】
ステップS1512では、矩形罫線Y座標配列Kから、インデックスKIDXの要素を取得し、罫線Y座標Y1に記憶する。
【0267】
ステップS1514では、矩形罫線Y座標配列Kから、インデックスKIDX+1の要素を取得し、罫線Y座標Y2に記憶する
【0268】
このY1とY2は、本処理でデータを配置する位置の上下の二本の罫線が持つY座標である。
【0269】
ステップS1516では、罫線中間Y座標を以下の式4に示す計算式を用いて算出する。
【0270】
MIDY ← ( Y2 − Y1 )÷ 2 + Y1 (式4)
【0271】
この式の意味は、罫線Y座標Y1と罫線Y座標Y2との差で示されるY座標の間隔を算出し、それを罫線間隔と判断し、その罫線間隔の2分の1だけY1座標に加算した位置が罫線中間Y座標とする意味である。
【0272】
ステップS1518は、移動文字データ配列Nに記憶された要素数分のループ上端を示している。
【0273】
ステップS1520では、移動文字データ配列Nの要素を取得し、文字データCへ記憶する。
【0274】
ステップS1522では、文字データCの文字の高さを取得し、Hに記憶する。
【0275】
ステップS1524では、文字の配置Y座標を、以下の式5に示す計算式を用いて算出する。
【0276】
Y3 ← MIDY − ( H ÷ 2 ) (式5)
【0277】
この式5の意味は、文字データCの高さの半分を、先に算出した罫線の中間Y座標から差し引いた値Y3を求めることである。このY3座標を文字データCの書き出し位置とすることで、文字データCの上下の中間線と2本の罫線の中間位置が一致するように文字データを配置することができる。
【0278】
この例を図33に示しておく。この方式によって適切に配置されているのが左のAである。その他、×印をつけている文字配置例は、この処理実現したい文字配置位置ではない。
【0279】
ステップS1526では、前述の通り、Y3を文字データC.Yに設定する。
【0280】
ステップS1528では、移動文字データ配列NのステップS1520で取得した現在の要素を文字データCで更新することで文字の配置位置を確定する。
【0281】
ステップS1530は、ループの終端を示しており、移動文字データ配列Nに記憶されたすべての文字が適切に配置された後、ループを抜ける。
【0282】
ステップS1532では、矩形罫線Y座標配列Kに、KIDX+2の要素が存在する否かを判定し、存在すると判定した場合は、ステップS1538へ処理を進め、存在すると判定しない場合は、ステップS1534へ処理を進める。本ステップは、最下端の罫線とその上の罫線の間に文字データを配置したため、次の配置位置はなく、改ページすべきか否かを判定している。
【0283】
ステップS1534では、改ページフラグをTRUEに設定し、次のステップS1536では、配置Y座標管理マップMYの矩形情報領域Aのキーに対応するバリューを0に設定することによって、改ページ後の処理罫線を先頭に戻している。
【0284】
ステップS1538では、配置Y座標管理マップMYの矩形情報領域Aのキーに対応するバリューを1つ増やすことによって、次の文字データを配置する処理の際に取り扱う罫線を一つ進めている。
【0285】
本処理によって、罫線が存在する移動先矩形へ文字データを配置する際に、罫線に沿った適切な文字データ配置を実現している。
【0286】
以上のように、本実施形態においては、帳票データのレイアウトを変更する際に、データの移動先の表示領域の幅に自動的に文字データを適合するように配置するように構成している。また、背景のフォームイメージの罫線などに自動的に適合するように構成している。従って、本実施形態によれば、帳票データのレイアウトを変更した二次帳票を作成する際に、データの移動先の領域の設定を視覚的に行うにあたり、微妙な領域指定やデータの繰り返し行数などの設定の必要がなく、簡便に設定し二次帳票を作成することが可能となる。
【0287】
次に、本発明の発展的な利用方法について説明する。
本発明では、図9で示したフォーム設定および図14で示したデータレイアウト接て処理によって、データのレイアウトを変更する設定条件を生成しているが、これらの情報は、サーバやファイルなどに記憶しておくことで、レイアウト変更条件のテンプレートとして利用することもできる。
【0288】
テンプレートとしての利用であれば、利用者はテンプレートを選択する、またはテンプレートが保存されているファイルを選択する操作のみで、2度目以降のレイアウト編集処理は割愛することができ、利便性の高い利用方法を構成することができる。
【0289】
また、本発明の説明では、検索結果からの二次帳票の作成に主眼をおいたが、検索を行わずに元の帳票データに対してレイアウト編集設定を行い、二次帳票を作成するように構成することもできる。
【0290】
この場合は、図3で示した処理のステップS100〜S104の処理を行わずにステップS106からの処理を行うことで実現可能である。この場合は、検索ヒットデータの情報に基づいて元帳票から帳票データを抽出するのではなく、元帳票から移動元矩形の領域に存在する文字データを抽出する点のみを変更すればよい。
【0291】
この実施形態によると、帳票データの名寄せ帳票を作成するのではなく、レイアウトを変更する手段、および帳票データから必要でないデータを削除する手段としても本発明を利用することができる。
【0292】
本発明によれば、ユーザは、二次帳票の生成元となる帳票データから取り出されたデータの配置先に関する領域に対して細かに考慮することなく簡便な設定方法で、ユーザの所望するレイアウトへ当該帳票データの自動編集を行った後に二次帳票を生成することが可能となるため、ユーザにとっての作業負荷を軽減することができる。
【0293】
以上、実施形態例を詳述したが、本発明は、例えば、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0294】
帳票生成システムにおける実施態様を記載しているが、クライアントPCの機能を帳票サーバに備え、帳票サーバ単体の構成で実施することも可能であり、あるいは、帳票サーバの機能をクライアントPCに備え、クライアントPC単体の構成で実施することも可能である。
【0295】
また、本発明におけるプログラムは、各処理方法をコンピュータが実行可能(読み取り可能)なプログラムであり、本発明の記憶媒体は、各処理方法をコンピュータが実行可能なプログラムが記憶されている。
【0296】
なお、本発明におけるプログラムは、各装置の処理方法ごとのプログラムであってもよい。
【0297】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読取り実行することによっても、本発明の目的が達成されることは言うまでもない。
【0298】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
【0299】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
【0300】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータで稼働しているOS等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0301】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0302】
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。
【0303】
この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0304】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステム、あるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【0305】
100 帳票サーバ
101 クライアントPC
102 クライアントPC
103 ネットワーク103
201 CPU
202 RAM
203 ROM
204 システムバス
205 入力コントローラ
206 表示コントローラ
207 外部メモリコントローラ
208 通信I/Fコントローラ
209 入力部
210 表示部
211 外部メモリ
212 プログラム
213 帳票ファイル
214 インデックスファイル
【技術分野】
【0001】
本発明は、電子帳票から二次帳票を生成するための技術に関するものである。
【背景技術】
【0002】
電子帳票システムでは、保存されている帳票を検索し、その検索ヒット結果を寄せ集め、その検索ヒットデータを埋め込んだ二次帳票(名寄せ帳票)を生成する仕組みを持っている。この機能により、帳票の中から必要なデータのみで構成される帳票を作成して業務で利用することができることがメリットとなっている。
【0003】
例えば、日付、顧客名、取引履歴などを有している1年分の膨大な帳票から二次帳票を生成することにより、月度単位の帳票や、特定の顧客との取引履歴のみを有する帳票を生成し、業務で活用することが可能である。
【0004】
従来の二次帳票を作成する方法としては、帳票が保有する帳票データから特定の検索条件に該当する帳票データを名寄せするという、経理や監査による検閲の観点で機能が提供されている。
【0005】
しかしながら、昨今、電子帳票の業務利用が促進されるにつれ、二次帳票に求められる要件も変化してきている。例えば、検索前の帳票とは異なるレイアウトの二次帳票を作成して業務に利用したい、あるいは、検索ヒットしたデータの一部を用いた二次帳票を作成して業務に利用したい、などが挙げられる。
【0006】
しかし、前記の観点で提供している機能では元となる帳票と同じレイアウトの二次帳票しか作成することができない。
【0007】
そこで、2次元形式の表データをユーザが所望するレイアウトをもつ帳票に変更を行うことが可能な帳票作成方法が存在する。(例えば、特許文献1参照)
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2004−152314号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、特許文献1に記載の技術は、表形式のデータをインプットとし、その表上の基準位置を設定し、その基準位置からの相対位置情報(上下左右)を設定することで複数レコードにまたがった情報を1レコードと見なすことを可能として、出力対象帳票にレイアウトし帳票を生成するというものである。
【0010】
従って、インプットとなるデータレコードから相対位置情報を元に自由度の高いデータ切り出しを実現するものであり、元データを自由なレイアウトに配置し、データの表示形態や表示位置をレイアウトに適合するよう自動的に調整された二次帳票を作成することを実現するものではない。
【0011】
本発明は上記の課題を解決するためになされたものであり、二次帳票の生成元となる帳票データから取り出されたデータを、自由なレイアウト位置に配置するだけでなく、データの表示形態や表示位置をレイアウトに適合するように自動的に調整して配置することで、自由なレイアウトの二次帳票を作成することができる帳票作成装置、情報処理装置、帳票作成方法、情報処理方法、プログラム及びコンピュータ読み取り可能な記録媒体を提供することを目的とする。
【課題を解決するための手段】
【0012】
上記目的を達成するための第1の発明は、帳票から二次帳票を生成する帳票生成装置であって、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、を備えたことを特徴とする帳票生成装置である。
【0013】
上記目的を達成するための第2の発明は、クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムであって、前記クライアント装置は、前記帳票の表示を制御する表示手段と、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、を備え、前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、前記帳票生成装置は、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段を備えたことを特徴とする帳票生成システムである。
【0014】
上記目的を達成するための第3の発明は、帳票から二次帳票を生成する帳票生成装置の制御方法であって、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、を実行することを特徴とする帳票生成装置の制御方法である。
【0015】
上記目的を達成するための第4の発明は、クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムの制御方法であって、前記クライアント装置は、前記帳票の表示を制御する表示手段と、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、を実行し、前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、前記帳票生成装置は、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手を実行することを特徴とする帳票生成システムである。
【0016】
上記目的を達成するための第5の発明は、帳票から二次帳票を生成する帳票生成装置において実行されるプログラムであって、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、を機能させることを特徴とするプログラムである。
【0017】
上記目的を達成するための第6の発明は、クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムにおいて実行されるプログラムであって、前記クライアント装置を、前記帳票の表示を制御する表示手段と、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、を機能させ、前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、前記帳票生成装置を、前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段を機能させることを特徴とするプログラムである。
【発明の効果】
【0018】
本発明によれば、ユーザは、二次帳票の生成元となる帳票データから取り出されたデータの配置先に関する領域に対して細かに考慮することなく簡便な設定方法で、ユーザの所望するレイアウトへ当該帳票データの自動編集を行った後に二次帳票を生成することが可能となるため、ユーザにとっての作業負荷を軽減する、という効果を奏する。
【図面の簡単な説明】
【0019】
【図1】本発明の実施形態に係る帳票サーバを含む帳票生成システムの概略構成を示す構成図である。
【図2】本発明の実施形態に係る帳票サーバのハードウェアの概略構成を示す構成図である。
【図3】本発明の実施形態に係る帳票生成システムにおける名寄せ帳票の作成に関する全体の流れのフローチャートである。
【図4】本発明の実施形態に係る帳票生成システムにおけるレイアウト編集画面表示処理の詳細を示すフローチャートである。
【図5】本発明の実施形態において名寄せレイアウト編集ボタンなどが配置されるツールバーの一例を示した構成図である。
【図6】本発明の実施形態における検索結果ファイルのデータの構成例を示す構成図である。
【図7】本発明の実施形態における帳票データが持つ文字データの構成例を示す図である。
【図8】本発明の実施形態における帳票データを構成する文字データの集合を模式的に示す図である。
【図9】本発明の実施形態に係る帳票生成システムにおけるフォーム設定処理の詳細を示すフローチャートである。
【図10】本発明の実施形態においてフォームの設定画面の構成例を示す構成図である。
【図11】本発明の実施形態においてイメージファイルを選択する画面の構成例を示す構成図である。
【図12】本発明の実施形態において帳票一覧から帳票を選択する画面の構成例を示す構成図である。
【図13】本発明の実施形態においてレイアウト編集画面の表示例を示す図である。
【図14】本発明の実施形態に係る帳票生成システムにおけるデータレイアウト設定処理の詳細を示すフローチャートである。
【図15】本発明の実施形態において矩形情報フォーマットを模式的に示す図である。
【図16】本発明の実施形態において矩形情報フォーマットを複数保持する配列を模式的に示す図である。
【図17】本発明の実施形態に係る帳票生成システムにおける二次帳票作成処理の詳細を示すフローチャートである。
【図18】本発明の実施形態に係る帳票生成システムにおける罫線解析処理の詳細を示すフローチャートである。
【図19】本発明の実施形態において罫線の情報を保持する配列のデータ構成例を示す構成図である。
【図20】本発明の実施形態に係る帳票生成システムにおける矩形内罫線解析処理の詳細を示すフローチャートである。
【図21】本発明の実施形態において矩形罫線Y座標配列のデータ構成例を示す構成図である。
【図22】本発明の実施形態において矩形罫線マップ領域のデータ構成例を示す構成図である。
【図23】本発明の実施形態に係る帳票生成システムにおけるデータ配置処理の詳細を示すフローチャートである。
【図24】本発明の実施形態においてレイアウト条件データフォーマットの一例を模式的に示す図である。
【図25】本発明の実施形態に係る帳票生成システムにおける移動データ抽出処理の詳細を示すフローチャートである。
【図26】本発明の実施形態に係る帳票生成システムにおける文字列幅フィット処理の詳細を示すフローチャートである。
【図27】本発明の実施形態に係る帳票生成システムにおける文字列幅取得処理の詳細を示すフローチャートである。
【図28】本発明の実施形態に係る帳票生成システムにおける文字間ピッチ調整処理の詳細を示すフローチャートである。
【図29】本発明の実施形態に係る帳票生成システムにおける文字サイズ調整処理の詳細を示すフローチャートである。
【図30】本発明の実施形態に係る帳票生成システムにおけるY座標配置処理の詳細を示すフローチャートである。
【図31】本発明の実施形態に係る帳票生成システムにおける罫線フィット配置処理の詳細を示すフローチャートである。
【図32】本発明の実施形態において配置Y座標管理マップ領域のデータ構成例を示す構成図である。
【図33】本発明の実施形態において罫線間への文字データの配置を模式的に示す図である。
【発明を実施するための形態】
【0020】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【0021】
図1は、本発明に実施形態に係る帳票サーバを含む帳票生成システムの概略構成を示す図である。図1において、101は、帳票サーバであり、電子帳票(以下、単に帳票と称す)のデータ(帳票データ)を記録し、ネットワーク104を介してクライアントPC102、103に対して、帳票の閲覧や検索等のサービスを提供する。クライアントPC102、103は、帳票の閲覧及び計算結果の取得を行う者が使用するクライアント端末であり、ネットワーク104を介して、帳票サーバ101とデータの送受信が可能である。
【0022】
ネットワーク104は、例えばLAN(Local Area Network)やインターネット等である。なお、図1のネットワーク104上に接続される各種端末の構成は飽くまでも一例であり、用途や目的に応じて様々な構成例がある。
【0023】
次に、図1に示した帳票サーバ101のハードウェア構成について、図2を用いて説明する。図2は、図1に示した帳票サーバ101のハードウェア構成例を示す図である。図2において、CPU(中央演算装置)201は、システムバス204に接続される各デバイスを統括的に制御するとともに、各種プログラムを実行することで様々な機能を実現する。
【0024】
RAM202は、CPU201の主メモリであり、ワークエリア、一時退避領域等として機能する。ROM203あるいは外部メモリ211には、CPU21の制御プログラムであるオペレーティングシステム(OS)や、帳票サーバ101において様々な機能を実現するためのプログラムが記憶されている。
【0025】
入力コントローラ205は、入力部209からの入力を制御する。この入力部209としては、例えば、キーボード、マウス等のポインティングデバイスが挙げられる。表示コントローラ206は、表示部210の表示を制御する。この表示部210としては、例えば、CRTや液晶ディスプレイ等が挙げられる。
【0026】
外部メモリコントローラ(MC)207は、ブートプログラム、各種のアプリケーション、ユーザファイル、編集ファイルを記憶する外部メモリ211へのアクセスを制御する。加えて、各サーバあるいは各クライアントの各種機能を実現するための各種テーブル、パラメータが記憶されている。この外部メモリ211としては、ハードディスク(HD)やフレキシブルディスク(FD)、磁気テープドライブ等が挙げられる。
【0027】
通信I/Fコントローラ208は、ネットワーク104を介して外部機器との通信制御処理を実行する。本実施形態における帳票サーバ101の有する様々な機能を実現するためのプログラム212は、外部メモリ211に記憶されており、必要に応じてRAM202にロードされることによりCPU201によって実行される。さらに、プログラム212の処理に用いる帳票ファイル213やインデックスファイル214も、外部メモリ211に記憶されており、これらについての詳細な説明は後述する。
【0028】
帳票ファイル213は、帳票の表示用データ(帳票データ)であり、単数又は複数のファイルによって構成され、単数又は複数のページを含有している。帳票サーバ101の内部においては、複数の帳票ファイル213のうち同じ種類のものをグループ化して管理しており、それぞれの帳票ファイル213はそのグループの中の世代と呼ばれる。
【0029】
インデックスファイル(領域情報ファイル)214は、帳票ファイル213のデータの中から、ユーザが指定した領域のデータと、データの位置(座標)を抜き出して蓄えたファイルであり、帳票データの検索処理専用のファイルである。
【0030】
インデックスファイル214のキー文字列には数値、文字、日付の3種類のデータが含まれている。インデックスファイル214にはユーザが任意の名称を与えることができ、異なる種類の帳票に関連したインデックスファイルであっても、与えられた名称で管理することが可能である。
【0031】
なお、クライアントPC102、103のハードウェア構成も帳票サーバ101と同様である。しかし、クライアントPC102、103におけるプログラム212は、帳票を表示するためのクライアントモジュールであり、帳票サーバ101のものとは異なる。
【0032】
また、クライアントPC102、103において帳票ファイル213は、表示するために必要な部分のみを帳票サーバ101との通信により受信するもので、クライアントPC102、103が元来保持していることはないものである点で異なる。また、クライアントPC102、103では、帳票の表示、もしくは任意の帳票に対する検索条件の指定および二次帳票作成の条件の指定等が可能である。
【0033】
次に、帳票システムの基本的な処理フローについて、図3を用いて説明する。
【0034】
図3は、本発明の実施形態に係る帳票システムにおいて二次帳票の作成に関する全体の流れを示すフローチャートである。
【0035】
ステップS100では、クライアントPC102(以下、クライアントPC102とクライアントPC103とは、同様な役割を有するため、クライアントPC102について記載する。)における処理であり、帳票データに対する検索条件設定(具体的な条件を記載)を検知すると、ステップS102では、帳票サーバ101によって、帳票データの検索処理を行う。
【0036】
そしてステップS104では、クライアントPC102の画面に、ステップS102における検索処理の結果である検索ヒット結果を表示する。尚、ステップS100からS104までの処理は、従来から帳票システムで一般的に実現されている処理である。
【0037】
ステップS106では、二次帳票を作成するための帳票データを編集するためのレイアウト編集画面を表示する。尚、本ステップにおける処理の詳細は、図4を用いて後述する。
【0038】
ステップS108では、二次帳票で利用するフォームを設定する処理である。二次帳票では自由なレイアウトの背景フォームを選択できるものとし、その選択を行う処理である。尚、本ステップにおける処理の詳細は、図9を用いて後述する。
【0039】
ステップS110では、ステップS106において表示したレイアウト編集画面を用いて、具体的な帳票データのレイアウトを設定する処理である。尚、本ステップにおける処理の詳細は、図14を用いて後述する。
【0040】
ステップS112では、ステップS110までに設定された二次帳票を作成するための情報に基づいて、二次帳票を作成する処理である。尚、本ステップにおける処理の詳細は、図17を用いて後述する。
【0041】
ステップS114では、ステップS112によって作成した二次帳票をクライアントPC102の画面に表示する処理である。尚、本ステップにおける処理は、従来の帳票システムで実現されている処理であり、詳細については説明を割愛する。
【0042】
次に図4に示すフローチャートを用いて本発明の実施形態に係る帳票性ステムにおけるレイアウト編集画面表示の処理について説明する。
【0043】
レイアウト編集画面の表示は、クライアントPC102と帳票サーバ101の双方で処理を担当している。図では左側をクライアントPC102での処理、右側を帳票サーバ101での処理として表記している。
【0044】
ステップS200では、名寄せレイアウト編集ボタンが押下されたことを検知したか否かを判定し、検知したと判定した場合は、ステップS202へ処理を進める。
【0045】
名寄せレイアウト編集ボタンは、通常ツールバーなどに置かれ、その形態の一例を図5に示す。クライアントPC102では、様々な機能を利用するためにツールバーなどに数種類のボタンを配置している。図中で示しているボタンが名寄せレイアウト編集ボタンの例である。
【0046】
図4に戻り、ステップS200において名寄せレイアウト編集ボタンの押下を検知しない場合は、名寄せレイアウト編集ボタンの押下を引き続き待ち受ける。
【0047】
ステップS202では、クライアントPC102からプレビューデータの作成要求を帳票サーバ101に対して行い、ステップS204では、帳票サーバ101がプレビューデータの作成要求に従い、プレビューデータを取得するために、空のページイメージを生成している。
【0048】
ステップS206では、ステップS100において設定された検索条件から、検索領域の上限のY座標と下限のY座標を取得して、その座標を変数Y1と変数Y2に記憶している。通常、帳票システム100における検索では、検索対象としたい領域を指定し、検索を行う。ここで取り出している上限のY座標と下限のY座標は、その検索対象として指定した領域の座標のことを示している。
【0049】
ステップS208では、検索結果ファイルをオープンする。検索結果ファイルとは、ステップS102の検索処理において検索した結果、ヒットしたレコード(以下、検索ヒットレコード)をファイルとして帳票サーバ101が保持しているものである。但し、検索ヒットレコードは、ファイルに記憶しなくとも帳票サーバ101が備えたメモリなどに記憶していてもよい。
【0050】
図6を用いて検索結果ファイルの内容を説明する。検索結果ファイルには検索ヒットレコードが記憶されている一例が示されおり、検索ヒットレコードは、1件あたり、図示するように検索対象となった帳票データを有する帳票ID、ページ番号、検索ヒット上端Y座標、検索ヒット下端Y座標という情報からなり、その検索結果ファイルは、検索ヒット数分のレコードを保持している。
【0051】
ステップS210は、検索結果ファイルに記憶された検索ヒットレコード数分のループ上端を示しており、ステップ212では、検索結果ファイルに記憶された検索ヒットレコードの先頭から順番に1レコードを取得する。
【0052】
ステップS214では、検索ヒットレコードの帳票IDから特定される検索元帳票が既に帳票生成システム100においてファイルオープンしているか否かを確認するが、これは、無駄にファイルをオープンしないための処理であり、同一ファイルがオープンされていなければ、ステップS216により検索元帳票ファイルをオープンし、ステップS218へ処理を進める。
【0053】
S218では、検索元帳票ファイルから、検索ヒットレコードの1レコードに該当する帳票データを取り出す。検索ヒットレコードの持つページ番号と検索ヒット上端Y座標と検索ヒット下端Y座標とから帳票データを抽出することは容易である。
【0054】
尚、帳票データについて、図7を用いて説明する。帳票データはさまざまなデータを持つが本発明で重要となるのは文字データである。文字データは、図に示すとおり、文字の座標X、座標Y、フォント情報、文字という情報である。また、帳票データは、図8に示すように、文字データの集合であると言える。
【0055】
ステップS218において取り出す帳票データも文字データの集合であり、帳票データから検索ヒットY座標の上端と下端の間に挟まれるY座標を持つ文字データを取り出せばよい。
【0056】
ステップS220では、ページイメージに対して変数Y1に記憶してある座標に取り出した文字データを配置する。
【0057】
ステップS222では、ステップS220において配置した文字データの持つ行ピッチの値をY1に加算して次の検索ヒットレコードに該当する文字データ(帳票データ)を配置するY座標を算出している。
【0058】
ステップS224では、変数Y1と変数Y2を比較し、変数Y1が変数Y2より小さければ、S226のループ終端に達し、ステップS210のループ先頭に戻って処理を継続する。変数Y1が変数Y2以上になれば、1ページ分の帳票に対するデータを配置する領域にデータを埋め尽くしたと判断し、ループを抜ける。
【0059】
ステップS228では、生成した1ページ分のページデータを帳票サーバ101からクライアントPC101に送信し、ステップS230では、ステップS228において送信されたページデータをクライアントPC102が受信し、クライアントPC102の画面に表示する。尚、表示されるページデータは、背景フォームと合成されていないため、背景に罫線などはなく、文字データのみのページイメージで表示される。
【0060】
次に図9に示すフローチャートを用いて本発明の実施形態に係る帳票生成システム100におけるフォーム設定処理について説明する。
【0061】
ステップS300では、図5に示す説明したボタンと同様のフォーム選択ボタン(不図示)が押下されたか否かを検知し、押下を検知しない場合は、引き続き押下を待ち受け、押下されたことを検知した場合は、ステップS302へ処理を進める。
【0062】
ステップS302では、イメージファイルパス保存領域、流用フォーム帳票ID保存領域、イメージ保存領域なる領域を確保し、初期化を行う。
【0063】
ステップS304では、図10に示す名寄せフォーム設定ダイアログ300をクライアントPC102の画面に表示する。
【0064】
このダイアログでは、イメージファイルを指定するか、登録済み帳票のフォームを利用するかの何れかを選択することが可能であり、本ステップでは、イメージファイルの指定が選択されたことを検知した時、つまりファイル選択ボタン302が押下されたことを検知することにより、ステップS308へ処理を進め、ステップS308では、図11に示すようなフォーム選択ダイアログ320を表示して、クライアントPC102に存在するイメージファイルを選択させることができる。
【0065】
図11に示すように、本実施形態では、form1.emfという拡張メタファイルが選択されているが、ユーザが選択するファイルは、ビットマップイメージやJPEGイメージなどの画像ファイルや、EMF(拡張メタファイル)やSVG(Scalable Vector Graphics)などの描画命令を持つベクタイメージファイル等を選択することができる。またその他のフォーム作成ツールなどで生成されたファイルを選択してもよい。
【0066】
ここでファイルが選択された状態のままで保存ボタン322が押下されたことを検知した時に、選択されたファイルが確定し、確定したファイルの記憶領域に関するファイルパスを取得して、取得したファイルパスをファイルパス表示欄304へ表示する。
【0067】
本ステップで名寄せフォーム設定ダイアログ300に備えられたOKボタン310が押下されたことを検知した後、ステップS310では、ファイルパス表示欄304に表示されたファイルパスを取得し、次のステップS312では、ステップS310において取得したファイルパスをイメージファイルパス保存領域に記憶する。
【0068】
ステップS314では、ステップS310において取得したファイルパスを用いてイメージファイルを読み込み、イメージ保存領域に記憶した後、ステップS340へ処理を進める。
【0069】
また、ユーザが登録済み帳票のフォームを利用する場合は、ステップS306において、帳票選択ボタン306が押下されたことを検知して、ステップS316へ処理を進め、ステップS316では、帳票サーバ101へ帳票の一覧を要求する。
【0070】
ステップ318では、クライアントPCからの要求に応じて、帳票サーバ101は、帳票一覧データを送信し、ステップS320では、クライアントPC102は、受信した帳票一覧データを利用して、図12に示す帳票一覧画面に帳票一覧の表示を行う。
【0071】
ステップS322では、ユーザによって帳票一覧画面に表示された帳票から該帳票が選択されたか否かを検知し、つまり帳票がマウスクリックなどにより選択されたことを検知した場合は、ステップS324へ処理を進める。
【0072】
ステップS324では、クリックされた帳票に応じた帳票を一意に識別するための帳票IDを取得し、名寄せフォーム設定ダイアログ300の帳票ID表示欄308に表示し、OKボタン310が押下されたことを検知した後、ステップS326では、クライアントPC102は、名寄せフォーム設定ダイアログ300に表示された帳票IDを取得し、取得した帳票IDの持つフォームイメージを取得するために、帳票サーバ101に該帳票IDの情報を送信して要求を行う。
【0073】
ステップS328では、帳票サーバ101は、ステップS326において送信されたフォームイメージ取得の要求を受信し、ステップ330では、受信した帳票IDに該当する帳票データを特定し、特定した帳票データが保有しているフォームイメージを取得して、ステップS332では、帳票サーバ1010は、ステップS330において取得したフォームイメージをクライアントPC102に送信している。
【0074】
ステップS334では、クライアントPC102は、ステップS332において送信されたフォームイメージを受信し、ステップS336では、クライアントPC102は、ステップS334で受信したフォームイメージをイメージ保存領域に記憶する。
【0075】
ステップS338では、ステップS324において取得した帳票IDを流用フォーム帳票ID保存領域に記憶し、その後、イメージファイル指定の際と同様に、ステップS340へ処理を進める。
【0076】
ステップS340では、イメージ保存領域に記憶したフォームイメージをレイアウト編集画面に背景として表示する。
【0077】
ここで、フォームイメージと文字データが合成されたレイアウト編集画面が表示されていることになるが、図13に示すようにフォームイメージが持つ罫線と、文字データはきれいに一致していない状況となる。このレイアウト編集画面を用いたステップS110によるデータレイアウト処理により、指定したフォームイメージに適切に文字データを配置する条件を設定する。
【0078】
図14に示すフローチャートを用いて本発明の実施形態に係る帳票システムにおけるデータレイアウト設定の処理を説明する。
【0079】
ステップS400では、矩形情報配列を確保し初期化し、ステップS402では、クライアントPC102に対して、ユーザによってなされる任意のアクションを検知するまで待機する。ここでいうアクションとは、マウスポインタのクリックや、マウスのクリック&ムーブ等により矩形領域が作成される、等のアクション示す。
【0080】
ステップS404では、マウスのクリックを検知した際に、例えば、図5に示すようなツールバーのモードの切り替えボタンが押された、または名寄せ作成ボタンが押されたか、またはその他かを判定している。尚、モードには、矩形作成を行うモードと、作成された矩形同士を移動元から移動先というように関連付けを行うモードがある。
【0081】
モードの切り替えボタンが押下されたことを検知した場合、ステップS406へ処理を進め、名寄せ作成ボタンが押下されたことを検知した場合、ステップS442へ処理を進める。
【0082】
ステップS406では、前述したようにモードには、2通りのモードが存在するため、何れのモードにて処理を行うのかをユーザに選択させるため、矩形作成モードあるいは矩形関連付モードを選択可能とするボタン等(不図示)を表示し、矩形作成モードが選択されたことを検知した場合、ステップS408へ処理を進め、矩形関連付モードが選択されたことを検知した場合、ステップS422へ処理を進める。
【0083】
尚、本ステップにおけるモードの切り分けは、前述のようなモードを選択するためのボタン等を表示せず、既に作成された矩形が選択された(矩形関連付モード)、あるいは、新規で矩形が作成された(矩形作成モード)等の操作によってモードを切り分けても良い。
【0084】
ステップS408では、矩形が作成される処理を待機しており、矩形が作成されたことを検知した場合は、ステップS410へ処理を進め、それ以外の操作の場合は、ステップS402へ処理を進める。
【0085】
ステップS410では、作成された矩形の座標X、座標Y、幅Width、高さHeightを取得し、次のステップS412では、矩形情報保存領域Rを生成する。
【0086】
ここで矩形情報保存領域Rとは、図15で示すような情報を保持しており、矩形IDは、作成する矩形毎にユニークとなるよう採番されたIDを記憶する領域であり、ここでは1以上の整数からユニークなIDを割り当てるものとしている。
【0087】
また、X、Y、W、Hは、それぞれ順に矩形左上点のX座標、矩形左上点のY座標、矩形の幅、矩形の高さを記憶する領域である(本実施形態では、左上の座標から右がX座標の増加、下がY座標の増加、といったような座標からなる。)。
【0088】
移動元矩形IDは、当該矩形が帳票データをレイアウトするに際し、帳票データが元々配置されている移動先矩形を示すものとして設定された場合に、移動元矩形の矩形IDを記憶する領域である。この領域は初期状態を0として設定しておくことで、矩形IDが0である矩形は、移動先矩形として設定されていないと判断することができる。
【0089】
ステップS414では、新規作成された矩形用のユニークなIDを採番し、矩形情報保存領域Rの矩形IDに設定し、同様にステップS416によって、ステップS410において取得した座標値をRに設定する。ステップS416に示すR.Xは、矩形情報保存領域RのX、R.Yは、矩形情報保存領域RのY、R.Wは、矩形情報保存領域RのW、R.Hは、矩形情報保存領域RのHを示している。
【0090】
以降も同様に、R.X、R.Y、R.W、及びR.Hに示すように所定の情報に対して、該情報の陽を示す場合には、「所定の情報.要素」といったように記載を簡略化して説明を行っている。
【0091】
ステップS418では、前述した通り、矩形が新規で作成されたものであるため、移動元矩形IDの領域には、初期状態として0を設定する。
【0092】
ステップS420では、新規生成された矩形情報保存領域Rを矩形情報配列に追加している。この配列は、図16に示すように、図15の矩形情報を複数保持する配列である。その後、ステップS402へ処理を進め、アクションを検知する処理を行う。
【0093】
ステップS422では、矩形関連付けモードとなった場合の処理を示しており、既に作成済みの矩形がクリックにより選択されるのを待ち受けている。ここで、既に移動先矩形と設定されていない矩形をクリックした場合には、移動元矩形を選択したと判断し、ステップS424へ進める。それ以外の場合は、ステップS402へ処理を進める。
【0094】
ステップS424では、図16に示す矩形情報配列からクリックされた矩形の情報を取得し、ステップS426では、ステップS424において取得した矩形情報から、矩形の中心点の座標を算出する。
【0095】
ステップS426に示すR.X、R.Y、R.W、及びR.Hは、矩形情報保存領域Rの各要素に対応していることを前述したが、矩形情報配列は、矩形情報保存領域Rから構成されているため、本ステップでは、矩形情報配列から矩形の情報を取得しているが、当然のことながら、矩形情報保存領域RのR.X、R.Y、R.W、及びR.Hと矩形情報配列の矩形の情報とは、同一内容を示しているため、同一の符号を用いて説明している。
【0096】
ステップS428では、求めた移動元矩形の中心点からマウスポインタ座標に向けての矢印表示を行う。これは、移動先矩形を設定する操作を行うに際し、移動元矩形として何を選択したか、どの方向へ移動するか?などを視覚的にユーザに視認させるためである。
【0097】
ステップS430からステップS434では、ステップS422同様に作成済の矩形をクリックにより選択されるのを待ち受けているが、ここでは移動先矩形として選択されていない矩形をクリックした場合にのみ、次のステップS436へ処理を進める。移動先矩形として選択されていないことは、矩形情報配列の移動元矩形IDが0であることによって、判断が可能である。
【0098】
ステップS436では、ステップS426と同様に移動先矩形の中心点の座標を算出し、次のステップS438では、移動元矩形の中心座標から移動先矩形の中心座標への矢印を表示する。もちろんこのタイミングでマウスポインタへの矢印の表示は、クリアする。
【0099】
ステップS440では、移動元矩形IDを矩形情報保存領域Rの移動元矩形IDに設定し、矩形情報配列の移動元矩形IDを更新することで、1通りの移動設定は完了である。同様な方法で、ユーザは、矩形の関連付けを複数行うことが可能である。
【0100】
ステップS404において、モードの切り替えを行わないと判定した場合は、ステップS442へ処理を進め、ステップS442では、名寄せ作成ボタンが押下されたか否かを判定し、名寄せ作成ボタンが押下されていない場合は、ステップS402へ処理を進めるが、押下されたことを検知した場合は、ステップS444へ処理を進める。
【0101】
ステップS444では、レイアウトの設定を行う対象とすべく矩形の移動元、移動先の関連付け設定が1つ以上設定されているか否かを判定し、設定されていると判定した場合は、データレイアウト設定処理が終了となり、ステップS112へ処理を進め、設定されていないと判定した場合は、ステップS402へ処理を進める。尚、設定が行われたか否かについては、矩形情報配列の移動元矩形IDに0以外のデータが設定されているか否かによって判定し、0以外のデータが設定されている場合は、レイアウト設定が完了していると判定し、0以外のデータが設定されていない場合は、レイアウト設定が完了していないと判定することができる。
【0102】
次に図17に示すフローチャートを用いて本発明の実施形態に係る帳票処理システムにおける名寄せ帳票作成処理を説明する。
【0103】
ステップS500では、クライアントPC102から帳票サーバ101へ名寄せ帳票作成の指示に際して、レイアウト条件を送信する。送信するレイアウト条件データの一例を図24に示す。
【0104】
レイアウト条件は、前記の矩形情報配列、及びフォーム情報を送信する。ここでフォーム情報は、ステップS108においてイメージファイル指定がなされた場合は、フォーム種別にイメージファイルを示す2、イメージファイルのサイズ、イメージ保存領域に保存されているイメージファイルを送信し、一方、登録済みの帳票のフォームを利用するとした場合は、フォーム種別に帳票のフォームを流用することを示す1、流用フォーム帳票ID保存領域に記憶した帳票IDを送信する。
【0105】
ステップS502では、帳票サーバ101は、ステップS500において送信されたレイアウト条件を受信し、ステップS504では、後の処理のために、改ページフラグの領域確保及び、フラグをTRUEでの初期化、またヒットデータ配列Hの領域を確保している。更に、ステップS506では、フォームイメージ領域Fを確保している。
【0106】
ステップS508では、ステップS502において受信したレイアウト条件に含まれるフォーム情報が、イメージファイル指定か、帳票のフォームを流用するのかを判定しており、具体的には、レイアウト条件のフォーム種別によって判定を行っている。
【0107】
帳票のフォームを流用するかを判定した場合、つまりフォーム種別が1の場合、ステップS510へ処理を進め、ステップ510では、ステップS502において受信したレイアウト条件に含まれる流フォーム帳票IDに該当する帳票IDを有する帳票からフォームイメージを取得し、イメージファイル指定であった場合、つまりフォーム種別が2の場合、ステップS512へ処理を進める。
【0108】
ステップS512では、ステップS508においてイメージ指定と判定した場合は、ステップS502において受信したレイアウト条件に含まれるイメージファイルをフォームイメージ領域Fにフォームデータとして記憶し、ステップS508において、帳票のフォームを流用すると判定した場合、ステップS510に於いて取得したフォームイメージをフォームイメージ領域Fにフォームデータとして記憶する。
【0109】
ステップS514では、ステップS512においてフォームイメージ領域Fに記憶したフォームデータに含まれる罫線情報を解析する処理であり、本ステップにおける詳細の処理については、図18を用いて後述する。
【0110】
ステップS516では、ステップS514において解析された罫線情報をレイアウト条件である矩形情報と交錯する罫線を矩形毎に抽出する矩形内罫線解析処理を行うが、本ステップにおける詳細の処理については、図20を用いて後述する。
【0111】
ステップS518では、検索結果ファイルをオープンし、ステップS520は、検索結果ファイルに記憶された検索ヒットレコード数分のループ上端を示しており、ステップ522では、検索結果ファイルに記憶された検索ヒットレコードの先頭から順番に1レコードを取得する。尚、ここで取得する検索結果は、ステップ212において図6を用いて説明したものと同一内容である。
【0112】
ステップS524では、改ページフラグがTRUEであるかFALSEであるかを判定している。このループにおいてステップS524を初めて処理する場合は、改ページフラグの初期値よりTRUEとして処理される。
【0113】
TRUEの場合は、改ページが発生したとみなし、ステップS526において、空のページイメージを生成する。これは単に1ページ分の文字データやフォームデータを記憶するためのメモリ領域の確保を意味している。
【0114】
ステップS528では、フォームイメージ領域Fに記憶されているフォームデータをページの背景に設定する。
【0115】
ステップS530では、改ページフラグを一旦FALSEとし、次の改ページに備える。
【0116】
ステップS532では、検索ヒットレコードの1レコードの帳票IDに該当する帳票がオープン済みであるか否かを確認する。これは無用に二重で帳票がオープンされることを避ける処理である。オープンされていない場合は、ステップS534にて、当該1レコードの帳票IDを有する検索元帳票ファイルをオープンし、オープンされている場合は、ステップS536へ処理を進める。
【0117】
ステップS536では、オープンされている検索元帳票ファイルから、検索結果に対応する文字データをヒットデータ配列Hに記憶する。この処理は、ステップS218で説明した処理と同一内容あり、図8に示したデータ構造で、ヒットデータ配列Hは構成される。
【0118】
ステップS538では、ヒットデータ配列Hに記憶された文字データをレイアウト条件に従って、自動的に表示形態、表示サイズなどを調整して帳票の各ページに配置する処理であるが、本ステップにおける処理の詳細については図23を用いて後述する。
【0119】
ステップS540は、ループ終端であり、すべての検索ヒットレコード数分の処理が終了した場合に、ループを抜ける。このタイミングで帳票サーバ101に名寄せ帳票のイメージが完成する。
【0120】
ステップS542では、ステップS540において生成した名寄せ帳票データをクライアントPC102へ送信し、ステップS544では、ステップS542において送信された、名寄せ帳票データを受信した後、ステップS114において、クライアントPC102に名寄せ帳票を表示する。
【0121】
次に図18に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける罫線解析処理を説明する。
【0122】
ステップS600では、フォームイメージ領域Fに記憶されているフォームデータが、描画命令を持つ前述のEMFやSVG、その他のベクターグラフィックスか否かを判定し、ベクターグラフィックスであると判定した場合は、ベクターグラフィックスであると判定しない場合は、処理を終了する。
【0123】
ステップS602では、罫線配列Kを確保、初期化するが、罫線配列Kの内容については、後述する。
【0124】
ステップS604では、ベクターグラフィックスを読み込み、命令数分ループ処理を開始することを示しており、ループの回転の都度、順次命令を読み込む。
【0125】
ステップS606では、命令が線分描画命令であるか否かを判定し、線分描画命令であると判定した場合は、ステップS610へ処理を進め、線分描画命令であると判定しない場合は、ステップS616へ処理を進める。尚、線分描画命令とは、直線を描画するための命令を指す。
【0126】
ステップS608では、ステップS606における線分描画命令が平行線分であるか否かを判定し、平行線分であると判定した場合は、ステップS612へ処理を進め、平行線分であると判定しない場合は、ステップS614へ処理を進める。
【0127】
本ステップにおける平行線分であるか否かの判定とは、表現を変えると、横罫線であるか否かを判定している。この判定は、線分の始点と終点が同じY座標を持つかを評価することで簡単に判定できる。
【0128】
ステップS612では、平行線分と判定された線分の始点と終点のX座標、Y座標を罫線配列Kに追加記憶してステップS614に示すループ終端に進む。
【0129】
尚、罫線配列Kの内容を図19に示す。罫線配列Kの配列の1要素には前記した線分の始点と終点のX座標、Y座標が記憶されるように構成されている。
【0130】
ステップS616では、命令が多角形描画の命令であるか否かを判定し、多角形描画の命令であると判定した場合、ステップS610へ処理を進め、多角形描画の命令であると判定しない場合、ステップS614へ処理を進める。
【0131】
多角形を処理するのは、フォームの罫線を表現するために、線分だけでなく、四角形なども用いられることがあるためである。
【0132】
ステップS618では、多角形を複数の線分に分割する。多角形の描画命令では、それぞれの頂点のX座標、Y座標を持つため、複数の線分に容易に分割することが可能である。
【0133】
ステップS620は、分割した線分数分のループ上端を示しており、ステップS622では、ステップS618において分割した線分を順次読み込み、ステップS624では、線分が平行線分であるか否かを判定する。
【0134】
平行線分であると判定した場合は、ステップS626へ処理を進め、平行線分であると判定しない場合は、ステップS628に示すループ終端に進む。尚、ステップS624及びステップS626における処理は、ステップS610及びステップS612で説明した処理と同一内容である。
【0135】
この一連の罫線解析処理によって、フォームデータから平行線分の情報のみを抜きだして記憶する罫線配列Kを生成できる。
【0136】
次に図20に示すフローチャートを用いて本発明の実施形態に係る帳票処理システムにおける矩形内罫線解析処理を説明する。
【0137】
ステップS700では、罫線配列Kについて、1つ以上の要素が記憶されているか否かを判定し、記憶されていると判定した場合は、ステップS702へ処理を進め、記憶していると判定しない場合は、処理を終了する。
【0138】
これは、フォームデータがベクターグラフィックスでなかった場合や、ベクターグラフィックスであった場合でも、横罫線を表す平行線分が発生しなかった場合を判断するためである。この場合、罫線配列Kには、1つも要素が記憶されていないことになる。
【0139】
ステップS702では、後の処理で利用する矩形罫線Y座標配列を記憶するための矩形罫線マップ領域Mを生成する。矩形罫線Y座標配列と矩形罫線マップ領域Mの詳細については後述する。
【0140】
ステップS704では、矩形情報領域Aと罫線情報領域Bを確保する。
【0141】
ステップS706は、矩形情報配列に記憶された矩形数分のループ上端を示している。
【0142】
ステップS708では、ステップS500において送信されたレイアウト条件に含まれる矩形情報配列から矩形情報を取得し、矩形情報領域Aに記憶する。矩形情報配列および矩形情報領域Aは、それぞれ前述した図16、図15で例示したデータを持つ。
【0143】
ステップS710では、矩形情報領域Aが持つ移動元矩形IDが0より大きい値が設定されているか否かを判定し、0の場合は、移動元矩形が設定されていないことから、移動先矩形ではないと判定でき、図20における本処理では、移動先矩形と交差する線分の情報を解析することを目的とするため、この場合は、ループ終端であるステップSS730へ処理を進め、次のループ処理へ進み、移動元矩形IDが設定されている場合は、ステップS712へ処理を進める。
【0144】
ステップS712では、矩形罫線Y座標配列Cを生成する。矩形罫線Y座標配列は、図21にて示すように、矩形の線分のY座標のみを要素とする配列である。ここに記憶する情報は、前記の平行線分から抽出されるY座標であり、平行線分は同じY座標の始点、終点をもつことから一つのY座標を持つ領域のみを要素とすることで目的を達成できる。また、この配列は後の処理で、Y座標をキーに昇順でソートされ、活用される。
【0145】
ステップS714は、ステップS514において生成した罫線配列Kに記憶された要素数分のループ上端である。
【0146】
ステップS716では、罫線配列Kから次の要素を罫線情報領域Bに記憶し、ステップS718では、矩形情報領域A及び罫線情報領域Bを用いて、矩形の領域と罫線が交差するかを判定し、矩形の領域と罫線が交差すると判定した場合は、ステップS720へ処理を進め、矩形の領域と罫線が交差すると判定しない場合は、ステップS722へ処理を進める。
【0147】
本ステップは、矩形情報領域Aの持つ、X、Y、W、Hから定まる各頂点の座標と、罫線情報Bが持つX1、Y1、X2、Y2の値を用いて以下の条件が成り立つことで、矩形の領域と罫線が交差することを判定できる。
【0148】
A.X≧B.X1、かつA.X+A.W≦B.X2、かつA.Y≦B.Y1、かつA.Y+A.H≧B.Y1
【0149】
ステップS720では、矩形罫線Y座標配列Cに線分のY座標であるB.Y1を追加記憶し、ステップS722は、ループ終端を示している。
【0150】
ステップS724では、ステップS714からステップS722までのループで構築された矩形罫線Y座標配列Cに記憶された要素が存在するか否かを判定し、要素が存在しない場合は、矩形と罫線が交差しなかったと判断され、ステップS730へ処理を進め、次のループ処理を行う。
【0151】
要素が存在した場合は、ステップS726へ処理を進め、矩形罫線Y座標配列Cの要素を前述の通り、昇順でソートする。
【0152】
ステップS728では、矩形罫線マップ領域Mに処理中の矩形情報領域Aの持つ矩形IDをキーにして、矩形罫線Y座標配列Cを追加記憶する。
【0153】
ここで、図22を用いて、矩形罫線マップ領域Mを説明する。図22では、マップ構造を図示しているが、ここでは、矩形IDをキーに、バリューに矩形罫線配列Cとしてマップ構造を構成している。
【0154】
一般にマップ構造は、ユニークなキーに対するデータを持つ方法である。このようにして、記憶された矩形罫線Y座標配列Cは、矩形IDを用いて取り出すことができる。後述する処理において、この矩形罫線マップ領域Mから矩形IDをキーに矩形罫線Y座標配列Cを取り出している。
【0155】
こうして、ループ処理が終了すると矩形内罫線解析処理の終了となり、移動先矩形と交差する横罫線の情報が矩形罫線マップ領域Mに構築されたことになる。
【0156】
次に図23に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにけるデータ配置処理を説明する。データ配置処理は、帳票データを新しいレイアウトに適合するように調整して配置する処理である。
【0157】
ステップS800では、矩形情報領域A、矩形情報領域B、文字データ配列K、平行移動量MoveX 領域、配置Y座標管理マップ領域MYを確保する。
【0158】
ステップS802は、矩形情報配列に記憶された矩形数分のループ上端を示している。
【0159】
ステップS804では、ステップS500において送信されたレイアウト条件に含まれる矩形情報配列から矩形情報を取得し、矩形情報領域Aに記憶する。矩形情報配列および矩形情報領域Aは、それぞれ前述した図16、図15で例示したデータを持つ。
【0160】
ステップS806では、矩形情報領域Aの持つ移動元矩形IDに値が設定されているかによって、移動先を表す矩形情報であるか否かを判定し、移動先を表す矩形情報でない場合は、ステップS832へ処理を進め、移動先を表す矩形情報である場合は、ステップS808へ処理を進める。
【0161】
ステップS808では、矩形情報配列から矩形情報領域Aの持つ移動元矩形IDと一致する矩形IDを持つ矩形情報を矩形情報領域Bに記憶する。これでAが移動先矩形情報、Bが移動元矩形情報となる。
【0162】
S810では、処理中の検索結果に該当するヒットデータが保持されているヒットデータ配列Hから、移動元であるBで示される矩形と交わる文字列を移動対象文字列Nとして抽出する移動データ抽出処理を行っている。尚、本ステップにおける詳細な処理については、図25を用いて説明する。
【0163】
ステップS812では、平行移動量MoveX領域と文字データC領域を確保して、初期化する。平行移動量MoveXは、移動元Bと移動先Aの平行移動距離を記憶する変数である。
【0164】
また、文字データCは、ステップS810において抽出された移動文字データ配列Nの要素を取得して記憶するための領域である。尚、文字データCは、図7で示した文字データである。また、移動文字データ配列Nに記憶した要素は、図8で示した文字データの集合である。
【0165】
ステップS814では、平行移動量MoveXに、以下の式1に示す計算式の演算結果を代入することで、平行移動距離を記憶している。
【0166】
平行移動量MoveX ← 矩形情報領域A.X
― 矩形情報領域B.X (式1)
【0167】
ステップS816は、ステップS810において抽出された移動文字データ配列Nの要素数分のループ上端を示している。
【0168】
ステップS818では、移動文字データ配列Nに記憶された次の要素を文字データCへ記憶する。
【0169】
ステップS820では、ステップS818において記憶した文字データCの持つX座標(C.Xと示す)以下の式2の計算式の演算結果を代入することで文字データCを移動先矩形領域Aに向けて、平行移動している。
【0170】
文字データC.X ← 文字データC.X + 平行移動量MoveX (式2)
【0171】
ステップS822では、移動文字データ配列Nに記憶されたステップS818で取得した現在の要素を文字データCで更新する。
【0172】
ステップS824は、ステップS816から始まるループの終端である。移動文字データ配列Nに含まれる文字データすべての平行移動が終わるまで処理を続ける。
【0173】
ステップS826では、移動文字データ配列Nで表わされる文字列の文字列幅を移動先矩形に関する矩形情報領域Aの幅に収まるようにフィットする文字列幅フィット処理である。尚、本ステップにおける詳細な処理については、図26を用いて説明する。
【0174】
ステップS828は、移動文字データ配列Nで表わされる文字列を移動先矩形領域Aに適切に配置するためにY座標を調整し配置するY座標配置処理である。本ステップにおける詳細な処理については、図27を用いて説明する。
【0175】
ステップS803では、矩形情報領域Aによって示される矩形に対して適切に配置された移動文字データ配列Nをページイメージに追加している。
【0176】
ここまでの、ステップS802からステップS832までのループにおける処理をすべて行うことで、複数設定される移動先の矩形に対して、検索ヒットレコードの帳票データを適切に配置することができる。
【0177】
次に図25に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける移動データ抽出処理を説明する。移動データ抽出処理は、処理中の検索結果に該当する検索ヒットデータが保持されているヒットデータ配列Hから、移動元である矩形情報領域Bで示される矩形に内包する文字データを移動対象文字として抽出する処理である。
【0178】
ステップS900では、文字データM、移動文字データ配列Nを確保、初期化する。
【0179】
ステップS902では、ステップS536においてヒットデータ配列Hに記憶した要素数分のループ上端である。
【0180】
ステップS904では、ステップS536においてヒットデータ配列Hに記憶した次の要素を文字データMに記憶し、ステップS906では、文字データMの文字位置を取得する。
【0181】
ステップS908では、文字データMが、矩形情報領域Bの内部に位置するか否かを判定し、内部に位置していると判定した場合は、ステップS910へ処理を進め、内部に一致していると判定しない場合は、ステップS912へ処理を進める。本ステップ、ステップS906において取得した文字位置と矩形情報領域Bから特定される矩形の座標を比較することで容易に判定できる。
【0182】
ステップS912では、移動文字データ配列Nに文字データMを追加記憶する。その後、ステップS912に示すループ終端に至る。ステップS902に示すループ終了条件を満たして本処理を終えることで移動文字データ配列Nが構築される。
【0183】
次に図26に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける文字列幅フィット処理を説明する。
【0184】
ステップS1000では、文字列幅MOJIW、超過幅OVERW、文字データC、及び文字平行移動量MOVEを確保する。
【0185】
ステップS1002では、矩形情報領域Aから矩形の幅を示すA.Wを取得する。
【0186】
ステップS1004では、文字幅取得処理を実行し、移動文字データ配列Nから文字列幅MOJIWを取得する。尚、本ステップにおける詳細な処理は、図27を用いて説明する。
【0187】
ステップS1006では、ステップS1004において取得した文字列幅MOJIWが、矩形の幅A.Wよりも大きいか否かを判定し、大きいと判定した場合は、本ステップは、文字列幅を調整する処理を行うためにステップS1008へ処理を進め、大きいと判定しない場合、つまり同じまたは小さい場合は、幅の調整の必要はないため処理を終了する。
【0188】
ステップS1008では、超過幅OVERWに文字列幅が超過した幅を記憶する。
【0189】
ステップS1010では、文字間のピッチを調整し、矩形幅に文字列幅を納めるように試みる処理である。尚、本ステップにおける詳細な処理は、図28を用いて説明する。
【0190】
ステップS1012では、ステップS1010における処理によって文字列幅の縮小を試みた結果を評価するために、ステップS1004と同じ文字列幅取得処理を行っている。
【0191】
ステップS1014では、ステップS1006と同じ文字列幅と矩形幅の評価を行っている。ここで文字列幅が矩形幅に収まっていれば、問題ないため文字列幅フィット処理を終える。再び超過していた場合は、ステップS1016へ処理を進める。
【0192】
ステップS1016では、超過幅OVERWの再計算を行う。
【0193】
ステップS1018では、文字のサイズと文字間のピッチを調整し、矩形幅に文字列幅を納めるようにする処理である。本ステップにおける詳細な処理については、図29を用いて説明するこの処理を終えると文字列幅が矩形幅に収まるように自動的に調整される。
【0194】
次に図27に示すフローチャートを用いて本発明に実施形態に係る帳票生成システムにおける文字列幅取得処理を説明する。文字データが複数記憶されている配列、文字データ配列から文字列の横幅を取得する処理である。
【0195】
ステップS1100では、変数MINX、変数MAXX、文字列幅MOJIW、文字データCの領域を確保する。
【0196】
ステップS1102では、初期化として、変数MINXに十分大きな整数を記憶する。例えば、4バイトで表現できる整数の最大値である2147483647等である。また、変数MAXXに十分に小さな整数を代入する。例えば4バイトで表現できる整数の最小値である
―2147483648等である。
【0197】
ステップS1104は、移動文字データ配列Nに記憶された要素数分のループ状態である。
【0198】
ステップS1106では、移動文字データ配列Nに記憶された次の要素を取り出し文字データCに記憶する。
【0199】
ステップS1108では、ステップS1106において記憶した文字データCが持つ情報であるX座標が、変数MINXより小さいか否かを判定し、小さいと判定した場合は、ステップS1110へ処理を進め、小さいと判定しない場合は、ステップS1112へ処理を進める。
【0200】
ステップS1110では、変数MINXにステップS1108におけるX座標を記憶する。
【0201】
ステップS1112では、取り出した文字データCが持つ情報である文字の右端の座標(X+W、Wは、文字データのフォント情報のサイズを示す。)が変数MAXXより大きいか否かを判定し、大きいと判定した場合は、ステップS1114へ処理を進め、大きいと判定しない場合は、ステップS1116へ処理を進める。
【0202】
ステップS1114では、変数MXXにステップS1112におけるX+Wの値を代入する。
【0203】
ステップS1116は、ステップS1104に対するループ終端を示している。
【0204】
ステップS1118では、ループを終了した段階の変数MAXXと変数MINXとの差をとることで文字列幅MOJIWに文字列幅を代入している。以上により、文字列幅Wを算出し、本処理の呼び出し元に提供する。
【0205】
次に図28に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける文字間ピッチ調整処理を説明する。本処理では、文字同士でそれぞれさまざまな文字間ピッチを有している場合に、元データの文字配置構造を極力崩さないように文字間ピッチを縮小する処理であり、本発明において特に重要な特徴ある処理である。
【0206】
ステップS1200では、シフト幅J、削減幅T、文字データC、前文字終端座標PREVXを確保し、ステップS1202では、削減幅Tを0で初期化する。
【0207】
ステップS1204は、ループ上端を示しており、このループは、ステップS1228における判定を行う処理にて終了する。
【0208】
ステップS1206では、シフト幅Jを0で初期化する。
【0209】
ステップS1208は、前記ループの内部にあり、移動文字データ配列Nに記憶された要素数分のループ上端を示している。
【0210】
ステップS1210では、移動文字データ配列Nからループにあわせて順次要素を取り出し、文字データCに記憶する。
【0211】
ステップS1212では、ステップS1210において移動文字データ配列Nからの要素の取り出しが2回目以降であるか否かを判定し、2回目以降である場合は、ステップS1214へ処理を進め、2回目以降であると判定しない場合は、ステップS1224へ処理を進める。
【0212】
本ステップにおける判定は、移動文字データ配列Nに記憶された文字列の先頭文字と2文字目以降では処理が異なるためである。
【0213】
ステップS1214では、前文字終端座標PREVXに文字データCのX+Wで表わされる文字の右端のX座標を記憶する。このPREVXは順次文字データCを処理するに際して常に前の文字の右端座標を更新して記憶する目的で用いる。
【0214】
ステップS1214では、文字データCのXと保存されている前文字終端座標PREVXを比較し、文字データCのXが前文字終端座標PREVXより大きいと判定した場合、ステップS1216へ処理を進め、大きいと判定しない場合は、ステップS1222へ処理を進める。
【0215】
この比較は、現在処理している文字データCを前の文字の間に文字間ピッチが存在するかを確認している。つまり接触しているのであれば、前の文字との間の文字間はこれ以上削減できないことになる。
【0216】
従って、文字データCのX座標とPREVXの間に間隔があると判断された場合はYESとなり、ステップS1216へと処理を進める。
【0217】
ステップS1216では、超過幅OVERWと削減幅Tとを比較し、超過幅OVERWよりも削減幅Tが大きいと判定した場合は、まだ削減を継続する必要があるとして、ステップS1220へ処理を進め、大きいと判定しない場合は、ステップS1222へ処理を進める。
【0218】
ステップS1218では、文字データCのX座標であるC.Xの座標を左にシフトする処理であり以下の式3に示す計算式を用いている。
【0219】
文字データC.X ← C.X − J − 1 (式3)
【0220】
ここでJは、ステップS1208からステップS1226のループ処理において左方向シフトした幅の総計である。文字データC.Xをシフト幅Jと、さらに1、左にシフトすることで、本ループで処理してきた前文字までのシフト幅も同時に左にシフトする。
【0221】
ステップS1220では、削減幅Tに1を加算する。削減幅Tは、シフト幅Jと異なり本文字間ピッチ処理における削減幅の総計である。また、シフト幅に1を加算し、本ループ処理でのシフト幅総計を更新している。
【0222】
その後、ステップS1224へ処理を進め、ステップS1224では、前文字終端座標PREVXに文字データCのX+Wで表わされる文字の右端のX座標を代入して保存する。
【0223】
ステップS1226は、ステップS1208から始まるループの終端であり、次のループ処理を進める。
【0224】
ステップS1214の処理に戻り説明を続ける。ステップS1214において、大きいと判定しない場合、文字データC.Xと前文字の終端座標が一致するケースであるため、1シフト処理は行わない。
【0225】
ただし、前文字までのシフト幅Jについては、文字データCにも反映しないと、この文字が削減シフトから取り残されるため、ステップS1222においてシフト幅Jの分だけシフトしている。また、このケースでは幅の削減効果はないため、JとTに対する加算は行わず、ステップS1224へ処理を進める。
【0226】
ステップS12246までのループを1回処理すると、すべての文字間にピッチ幅が存在した場合は、それぞれ1ずつ間隔が狭まったことになる。
【0227】
ループを抜けるとステップS1228においての評価を行う。ここでは、削減幅の総計であるTが、本来削減した超過幅OVERWを上回ったかを評価している。上回っていれば、これ以上文字ピッチ幅を削減する必要はないためステップS1204からステップS1230迄のループを抜け終了となる。
【0228】
また、上回っていない場合でも、シフト幅Jが0であるか否かを評価している。Jが0であるということは、これ以上文字間ピッチに削減の余地がないということであるので、同様にステップS1204からステップS1230迄のループを抜け終了とする。
【0229】
ここで、本処理では、ステップS1208からステップS1226までのループが複数回実行される。この本処理を利用することで、文字間ピッチが一律な文字列の場合には、一律に文字間を縮めた違和感のない文字幅調整が行える。
【0230】
また、文字間ピッチが極端に広い箇所などがある場合を考えると、それは意味のある文字間ピッチの表現であると考えられる。たとえば、2、3の単語が連なった文字列で、その単語間に間隔を持たせている場合などがある。他には、英語をイメージすると分かりやすい。
【0231】
以下のような文章がある場合、例えばThisとisの間は広い文字間ピッチにより文字列が表現されていると考えられる。
This is a pen
【0232】
このような場合には、Thisとisの間は極力削減せずに、文字間ピットを残さないと文章として成り立たなくなる。
【0233】
このようなケースに対応するために、広い間隔を削減するのではなく、文字列全体の配置表現を変更しないような処理フローを実現したのが、この文字間ピッチ調整処理である。
【0234】
この処理を終了しても、Jが0と判定されて終了した場合には、本来、超過幅OVERW分削減したかったにも関わらず、文字列全体の幅が削減できていない場合がある。そのために、ステップS1018における文字サイズ調整処理が用意されている。
【0235】
次に図29に示すフローチャートを用いて本発明の実施形態に係る帳票生成システムにおける文字サイズ調整処理を説明する。本処理では、文字サイズを縮小することで文字間ピッチを生み出し、その文字ピッチを詰めることで文字列全体のサイズを縮小することを実現している処理であり、本発明において特に重要な特徴ある処理である。
【0236】
ステップS1300では、縮小前文字幅ORGW、縮小後文字幅NEWW,シフト幅J、文字データCを確保する。
【0237】
ステップS1302は、ループ上端であり、ステップS1324の判定処理によってループを抜ける仕組みとなっている。
【0238】
ステップS1304では、シフト幅Jに0を記憶しており、ステップS1302からステップS1328におけるループの先頭処理にて都度0に初期化される。
【0239】
ステップS1306では、移動文字データ配列Nに記憶された要素数分のループ上端である。
【0240】
ステップS1308では、移動文字データ配列Nに記憶された要素を取り出し、文字データCに記憶する。
【0241】
ステップS1310では、文字データCのX座標であるC.Xにこれまでのシフト幅Jを反映する。ループの1回転目である1文字目では、Jが0であるためシフトしない。
【0242】
ステップS1312では、文字データCの文字幅を取得し、縮小前文字幅ORGWに記憶する。
【0243】
ステップS1314では、文字データCのフォントサイズを1ポイント小さくする。ここでは文字データCの持つフォント情報を更新する。
【0244】
ステップS1316では、文字データCの文字幅を再度取得し、縮小後文字幅NEWWに記憶する。
【0245】
ステップS1318では、文字データCが持っている情報であるWにNEWWの値を記憶することで文字幅Wを更新する。
【0246】
ステップS1320では、シフト幅JにORGWとNEWWとの差である縮小幅とこれまでのシフト幅Jを加算した値をJに記憶し更新している。
【0247】
ステップS1322は、ループ終端を示し、移動文字データ配列Nに記憶された要素数分処理するとループを抜ける。ここで求める削減幅を達成したタイミングでループを抜けないのは、一連の文字列のフォントを一律に調整することで見た目の良さを実現するためである。
【0248】
ループを抜けたあと、ステップS1324では、シフト幅Jが達成したかった縮小幅である超過幅OVERW以上の値となり、目的を達成したか否かを判定し、達成したと判定した場合は、処理を終了する。また、達成していないと判定した場合は、ステップS1326へ処理を進める。
【0249】
ステップS1326では、超過幅の残りを算出している。超過幅OVERWからシフト幅Jを減算した値が残りの超過幅である。
【0250】
ステップS1328は、ループ終端であり、前述の処理により目的の文字列幅の削減が達成されるまで繰り返す。
【0251】
次に図30に示すフローチャートを用いて本発明に実施形態に係る帳票生成システムにおけるY座標配置処理を説明する。本処理は前述までの処理によって調整された文字列を移動先の矩形に適切なY座標を設定し配置する処理である。
【0252】
ステップS1400では、矩形罫線マップ領域Mに処理対象の矩形IDのデータが存在するか否かを確認し、存在すると判定した場合は、ステップS1404へ処理を進め、存在すると判定しない場合は、ステップS1402へ処理を進める。
【0253】
矩形罫線マップ領域Mに処理対象の矩形IDのデータが存在する場合とは、現在の配置対象の矩形に罫線が存在することを意味している。
【0254】
ステップS1402では、行ピッチ配置処理を行う。この処理は配置対象の移動文字データ配列Nが持っている行ピッチに従って、移動先矩形の上端座標から、順次Y座標を移動して配置していく処理であり、一般的な手法である。移動先の矩形の下端座標に達した場合には、図17で用意されている改ページフラグをTRUEにすることで次回は新しいページイメージに対する配置処理となる。
【0255】
罫線が存在した場合には、ステップS1404において、罫線フィット配置処理を行う。本ステップにおける詳細な処理については、図31を用いて説明する。
【0256】
次に図31に示すフローチャートを用いて本発明の実施形態に係る帳票生成ステムにおける罫線フィット配置処理を説明する。本処理は、移動先の矩形に罫線が存在する場合、その罫線に沿って文字列を配置していく処理であり、本発明において重要な特徴な処理であると言える。
【0257】
ステップS1500では、罫線Y座標Y1
、罫線Y座標Y2、矩形罫線Y座標配列K、対象罫線インデックスKIDX、罫線中間Y座標MIDY、文字高さH、文字Y座標Y3の領域を確保する。
【0258】
ステップS1502では、配置Y座標管理マップMYに矩形情報領域Aの矩形IDに対応するデータが存在するか否かを判定し、存在すると判定した場合は、ステップS1506へ処理を進め、存在すると判定しない場合は、ステップS1504へ処理を進める。
ここで、配置Y座標管理マップMYの構造について、図32を用いて説明する。
【0259】
配置Y座標管理マップMYは、マップ構造を持ち、キーに矩形IDを利用することで矩形IDに対して一意なバリューを返すことができるように構成されている。
【0260】
バリューは、罫線フィット配置処理からこのマップを利用する場合は、対象罫線インデックスを記憶するように利用する。
【0261】
ここで、矩形IDに対して対象罫線インデックスを記憶することとし、そのインデックスには文字列を罫線にフィットして配置したときの基準罫線のインデックスを記憶しておくことによって、罫線を持つ矩形に対して文字列を配置する処理の際に、次の配置において基準として扱う罫線が特定できるようにしている。
【0262】
ステップS1504では、配置Y座標管理マップMYに以下のような初期データを設定する。
キー:矩形情報領域Aの矩形ID
バリュー:0
このバリュー:0は、矩形罫線Y座標配列Kの先頭の罫線を示している。
【0263】
ステップS1506では、配置Y座標管理マップMYから以下のキーで対象罫線インデックスを取得する。
キー:矩形情報領域Aの矩形ID
すると、対象罫線インデックスが取得できるので、KIDXに記憶する。
【0264】
ステップS1508では、矩形罫線マップ領域Mから、矩形IDをキーにして矩形罫線Y座標配列Cを取得する。
【0265】
ステップS1510では、ステップS1508において取得した矩形罫線Y座標配列Cを矩形罫線Y座標配列Kに記憶する。
【0266】
ステップS1512では、矩形罫線Y座標配列Kから、インデックスKIDXの要素を取得し、罫線Y座標Y1に記憶する。
【0267】
ステップS1514では、矩形罫線Y座標配列Kから、インデックスKIDX+1の要素を取得し、罫線Y座標Y2に記憶する
【0268】
このY1とY2は、本処理でデータを配置する位置の上下の二本の罫線が持つY座標である。
【0269】
ステップS1516では、罫線中間Y座標を以下の式4に示す計算式を用いて算出する。
【0270】
MIDY ← ( Y2 − Y1 )÷ 2 + Y1 (式4)
【0271】
この式の意味は、罫線Y座標Y1と罫線Y座標Y2との差で示されるY座標の間隔を算出し、それを罫線間隔と判断し、その罫線間隔の2分の1だけY1座標に加算した位置が罫線中間Y座標とする意味である。
【0272】
ステップS1518は、移動文字データ配列Nに記憶された要素数分のループ上端を示している。
【0273】
ステップS1520では、移動文字データ配列Nの要素を取得し、文字データCへ記憶する。
【0274】
ステップS1522では、文字データCの文字の高さを取得し、Hに記憶する。
【0275】
ステップS1524では、文字の配置Y座標を、以下の式5に示す計算式を用いて算出する。
【0276】
Y3 ← MIDY − ( H ÷ 2 ) (式5)
【0277】
この式5の意味は、文字データCの高さの半分を、先に算出した罫線の中間Y座標から差し引いた値Y3を求めることである。このY3座標を文字データCの書き出し位置とすることで、文字データCの上下の中間線と2本の罫線の中間位置が一致するように文字データを配置することができる。
【0278】
この例を図33に示しておく。この方式によって適切に配置されているのが左のAである。その他、×印をつけている文字配置例は、この処理実現したい文字配置位置ではない。
【0279】
ステップS1526では、前述の通り、Y3を文字データC.Yに設定する。
【0280】
ステップS1528では、移動文字データ配列NのステップS1520で取得した現在の要素を文字データCで更新することで文字の配置位置を確定する。
【0281】
ステップS1530は、ループの終端を示しており、移動文字データ配列Nに記憶されたすべての文字が適切に配置された後、ループを抜ける。
【0282】
ステップS1532では、矩形罫線Y座標配列Kに、KIDX+2の要素が存在する否かを判定し、存在すると判定した場合は、ステップS1538へ処理を進め、存在すると判定しない場合は、ステップS1534へ処理を進める。本ステップは、最下端の罫線とその上の罫線の間に文字データを配置したため、次の配置位置はなく、改ページすべきか否かを判定している。
【0283】
ステップS1534では、改ページフラグをTRUEに設定し、次のステップS1536では、配置Y座標管理マップMYの矩形情報領域Aのキーに対応するバリューを0に設定することによって、改ページ後の処理罫線を先頭に戻している。
【0284】
ステップS1538では、配置Y座標管理マップMYの矩形情報領域Aのキーに対応するバリューを1つ増やすことによって、次の文字データを配置する処理の際に取り扱う罫線を一つ進めている。
【0285】
本処理によって、罫線が存在する移動先矩形へ文字データを配置する際に、罫線に沿った適切な文字データ配置を実現している。
【0286】
以上のように、本実施形態においては、帳票データのレイアウトを変更する際に、データの移動先の表示領域の幅に自動的に文字データを適合するように配置するように構成している。また、背景のフォームイメージの罫線などに自動的に適合するように構成している。従って、本実施形態によれば、帳票データのレイアウトを変更した二次帳票を作成する際に、データの移動先の領域の設定を視覚的に行うにあたり、微妙な領域指定やデータの繰り返し行数などの設定の必要がなく、簡便に設定し二次帳票を作成することが可能となる。
【0287】
次に、本発明の発展的な利用方法について説明する。
本発明では、図9で示したフォーム設定および図14で示したデータレイアウト接て処理によって、データのレイアウトを変更する設定条件を生成しているが、これらの情報は、サーバやファイルなどに記憶しておくことで、レイアウト変更条件のテンプレートとして利用することもできる。
【0288】
テンプレートとしての利用であれば、利用者はテンプレートを選択する、またはテンプレートが保存されているファイルを選択する操作のみで、2度目以降のレイアウト編集処理は割愛することができ、利便性の高い利用方法を構成することができる。
【0289】
また、本発明の説明では、検索結果からの二次帳票の作成に主眼をおいたが、検索を行わずに元の帳票データに対してレイアウト編集設定を行い、二次帳票を作成するように構成することもできる。
【0290】
この場合は、図3で示した処理のステップS100〜S104の処理を行わずにステップS106からの処理を行うことで実現可能である。この場合は、検索ヒットデータの情報に基づいて元帳票から帳票データを抽出するのではなく、元帳票から移動元矩形の領域に存在する文字データを抽出する点のみを変更すればよい。
【0291】
この実施形態によると、帳票データの名寄せ帳票を作成するのではなく、レイアウトを変更する手段、および帳票データから必要でないデータを削除する手段としても本発明を利用することができる。
【0292】
本発明によれば、ユーザは、二次帳票の生成元となる帳票データから取り出されたデータの配置先に関する領域に対して細かに考慮することなく簡便な設定方法で、ユーザの所望するレイアウトへ当該帳票データの自動編集を行った後に二次帳票を生成することが可能となるため、ユーザにとっての作業負荷を軽減することができる。
【0293】
以上、実施形態例を詳述したが、本発明は、例えば、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0294】
帳票生成システムにおける実施態様を記載しているが、クライアントPCの機能を帳票サーバに備え、帳票サーバ単体の構成で実施することも可能であり、あるいは、帳票サーバの機能をクライアントPCに備え、クライアントPC単体の構成で実施することも可能である。
【0295】
また、本発明におけるプログラムは、各処理方法をコンピュータが実行可能(読み取り可能)なプログラムであり、本発明の記憶媒体は、各処理方法をコンピュータが実行可能なプログラムが記憶されている。
【0296】
なお、本発明におけるプログラムは、各装置の処理方法ごとのプログラムであってもよい。
【0297】
以上のように、前述した実施形態の機能を実現するプログラムを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムを読取り実行することによっても、本発明の目的が達成されることは言うまでもない。
【0298】
この場合、記録媒体から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記憶した記録媒体は本発明を構成することになる。
【0299】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
【0300】
また、コンピュータが読み出したプログラムを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、コンピュータで稼働しているOS等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0301】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0302】
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。
【0303】
この場合、本発明を達成するためのプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
【0304】
さらに、本発明を達成するためのプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステム、あるいは装置が、本発明の効果を享受することが可能となる。なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【0305】
100 帳票サーバ
101 クライアントPC
102 クライアントPC
103 ネットワーク103
201 CPU
202 RAM
203 ROM
204 システムバス
205 入力コントローラ
206 表示コントローラ
207 外部メモリコントローラ
208 通信I/Fコントローラ
209 入力部
210 表示部
211 外部メモリ
212 プログラム
213 帳票ファイル
214 インデックスファイル
【特許請求の範囲】
【請求項1】
帳票から二次帳票を生成する帳票生成装置であって、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、
を備えたことを特徴とする帳票生成装置。
【請求項2】
前記データ配置設定手段は、前記配置先の領域幅に対して配置する帳票データの文字間ピッチを調整することを特徴とする請求項1に記載の帳票生成装置。
【請求項3】
前記データ配置設定手段は、前記配置先の領域幅に対して配置する帳票データの文字サイズを調整することを特徴とする請求項1または2に記載の帳票生成装置。
【請求項4】
前記データ配置設定手段は、前記配置先の領域から平行線分を抽出し、抽出した平行線分の位置を用いて配置する帳票データの文字の配置位置を調整することを特徴とする請求項1乃至3の何れか1項に記載の帳票生成装置。
【請求項5】
前記データ配置設定手段は、前記配置先の領域と交差する前記平行線分を抽出することを特徴とする請求項4に記載の帳票生成装置。
【請求項6】
前記データ配置設定手段は、前記平行線分を前記配置先のレイアウトの描画命令から抽出することを特徴とする請求項3または4に記載の帳票生成装置。
【請求項7】
前記レイアウト受付手段は、帳票のレイアウト、あるいは前記帳票以外のレイアウトの選択を受付けることを特徴とする請求項1乃至6の何れか1項に記載の帳票生成装置。
【請求項8】
前記帳票の表示を制御する表示手段を更に備え、
前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記表示手段は、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、
前記レイアウト受付手段は、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けることを特徴とする請求項1乃至7の何れか1項に記載の帳票生成装置。
【請求項9】
前記レイアウト受付手段は、帳票の帳票データを矩形、及び前記配置先を矩形にて特定することを特徴とする請求項8に記載の帳票生成装置。
【請求項10】
前記受付手段によって受付けた前記帳票の帳票データの配置先を記憶する記憶手段と、
前記記憶手段によって記憶された前記帳票の帳票データの配置先を選択する選択手段と、
前記データ配置設定手段は、前記選択手段によって選択された配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成することを特徴とする請求項1乃至9の何れか1項に記載の帳票生成装置。
【請求項11】
クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムであって、
前記クライアント装置は、
前記帳票の表示を制御する表示手段と、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
を備え、
前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、
前記帳票生成装置は、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段を備えたことを特徴とする帳票生成システム。
【請求項12】
帳票から二次帳票を生成する帳票生成装置の制御方法であって、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、
を実行することを特徴とする帳票生成装置の制御方法。
【請求項13】
クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムの制御方法であって、
前記クライアント装置は、
前記帳票の表示を制御する表示手段と、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
を実行し、
前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、
前記帳票生成装置は、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手を実行することを特徴とする帳票生成システム。
【請求項14】
帳票から二次帳票を生成する帳票生成装置において実行されるプログラムであって、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、
を機能させることを特徴とするプログラム。
【請求項15】
クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムにおいて実行されるプログラムであって、
前記クライアント装置を、
前記帳票の表示を制御する表示手段と、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
を機能させ、
前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、
前記帳票生成装置を、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段を機能させることを特徴とするプログラム。
【請求項1】
帳票から二次帳票を生成する帳票生成装置であって、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、
を備えたことを特徴とする帳票生成装置。
【請求項2】
前記データ配置設定手段は、前記配置先の領域幅に対して配置する帳票データの文字間ピッチを調整することを特徴とする請求項1に記載の帳票生成装置。
【請求項3】
前記データ配置設定手段は、前記配置先の領域幅に対して配置する帳票データの文字サイズを調整することを特徴とする請求項1または2に記載の帳票生成装置。
【請求項4】
前記データ配置設定手段は、前記配置先の領域から平行線分を抽出し、抽出した平行線分の位置を用いて配置する帳票データの文字の配置位置を調整することを特徴とする請求項1乃至3の何れか1項に記載の帳票生成装置。
【請求項5】
前記データ配置設定手段は、前記配置先の領域と交差する前記平行線分を抽出することを特徴とする請求項4に記載の帳票生成装置。
【請求項6】
前記データ配置設定手段は、前記平行線分を前記配置先のレイアウトの描画命令から抽出することを特徴とする請求項3または4に記載の帳票生成装置。
【請求項7】
前記レイアウト受付手段は、帳票のレイアウト、あるいは前記帳票以外のレイアウトの選択を受付けることを特徴とする請求項1乃至6の何れか1項に記載の帳票生成装置。
【請求項8】
前記帳票の表示を制御する表示手段を更に備え、
前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記表示手段は、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、
前記レイアウト受付手段は、前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けることを特徴とする請求項1乃至7の何れか1項に記載の帳票生成装置。
【請求項9】
前記レイアウト受付手段は、帳票の帳票データを矩形、及び前記配置先を矩形にて特定することを特徴とする請求項8に記載の帳票生成装置。
【請求項10】
前記受付手段によって受付けた前記帳票の帳票データの配置先を記憶する記憶手段と、
前記記憶手段によって記憶された前記帳票の帳票データの配置先を選択する選択手段と、
前記データ配置設定手段は、前記選択手段によって選択された配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成することを特徴とする請求項1乃至9の何れか1項に記載の帳票生成装置。
【請求項11】
クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムであって、
前記クライアント装置は、
前記帳票の表示を制御する表示手段と、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
を備え、
前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、
前記帳票生成装置は、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段を備えたことを特徴とする帳票生成システム。
【請求項12】
帳票から二次帳票を生成する帳票生成装置の制御方法であって、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、
を実行することを特徴とする帳票生成装置の制御方法。
【請求項13】
クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムの制御方法であって、
前記クライアント装置は、
前記帳票の表示を制御する表示手段と、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
を実行し、
前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、
前記帳票生成装置は、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手を実行することを特徴とする帳票生成システム。
【請求項14】
帳票から二次帳票を生成する帳票生成装置において実行されるプログラムであって、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段と、
を機能させることを特徴とするプログラム。
【請求項15】
クライアント装置及び帳票生成装置がネットワークを介して接続された帳票から二次帳票を生成する帳票生成システムにおいて実行されるプログラムであって、
前記クライアント装置を、
前記帳票の表示を制御する表示手段と、
前記二次帳票のレイアウトに対する前記帳票の帳票データの配置先を受付けるレイアウト受付手段と、
を機能させ、
前記表示手段は、前記レイアウト受付手段によって帳票の帳票データを特定した後、前記帳票を表示せず、前記帳票の帳票データ及び前記二次帳票のレイアウトを表示し、
前記帳票生成装置を、
前記配置先の領域に合わせて前記帳票データを設定して前記二次帳票を生成するデータ配置設定手段を機能させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【公開番号】特開2012−133568(P2012−133568A)
【公開日】平成24年7月12日(2012.7.12)
【国際特許分類】
【出願番号】特願2010−284846(P2010−284846)
【出願日】平成22年12月21日(2010.12.21)
【出願人】(390002761)キヤノンマーケティングジャパン株式会社 (656)
【出願人】(312000206)キヤノンMJアイティグループホールディングス株式会社 (259)
【出願人】(301015956)キヤノンソフトウェア株式会社 (364)
【公開日】平成24年7月12日(2012.7.12)
【国際特許分類】
【出願日】平成22年12月21日(2010.12.21)
【出願人】(390002761)キヤノンマーケティングジャパン株式会社 (656)
【出願人】(312000206)キヤノンMJアイティグループホールディングス株式会社 (259)
【出願人】(301015956)キヤノンソフトウェア株式会社 (364)
[ Back to top ]