次に本発明を実施するための最良の形態について図面を参照して説明する。
<システム構成の説明>
〔第1実施形態〕
図1は、本発明の第1実施形態を示す情報処理装置を適用可能な情報処理システムの一例を示す図である。本例は、サーバPCに対してクライアントからの指示/操作を実現する情報処理システム例である。なお、サーバPC、クライアントPCは、後述するようなハードウエア資源、ソフトウエア資源を備えている。
図1において、101はローカルエリアネットワーク(LAN)で、例えばイーサネット(登録商標)等で構築されている。
クライアント用パーソナルコンピュータ(以下「クライアントPC」)111,112,113及び、サーバ用パーソナルコンピュータ(以下「サーバPC」)121は、LAN101を介して通信可能に接続されている。
また、サーバPC121は、図3に示す文書生成アプリケーション302を実行して印刷用ドキュメント作成処理を行う。また、サーバPC121は、クライアントPC111,112,113の指示を受け、指示したクライアントPCの閲覧アプリケーション(ブラウザ)に対して処理結果を返す処理を行う。
但し、本実施形態においては、サーバPCおよびクライアントPC間の通信手法については特に限定するものではない。
クライアントPC111,112,113内の構成は、LAN101に接続できる一般的なPCであれば、特に限定するものではないため、説明を省略する。
図2は、図1に示したサーバPC121及び各クライアントPCのハードウエアの構成を説明するブロック図である。
図2おいて、201はビデオRAM(VRAM)で、CRT表示装置(CRT)202の画面に表示される文字、イメージを展開記憶する。203はビットムーブユニット(BMU)で、メモリ間あるいはメモリと各デバイス間のデータ転送をコントロールする。
204は入力に関する各種キーを備えたキーボード(KeyBorard)であり、205は画面上でアイコンなどを指し示すためなどに用いられるポインティングデバイス(PD)である。
206はCPUで、ROM208に記憶された制御プログラム(本実施形態に係るプログラムやエラー処理プログラムをはじめ、後述する本発明を実現するためのプログラムも記憶されている)に基づいて本装置の各部を制御する。
209はRAMで、上述した各プログラムをCPU206が実行するときにワークエリア、エラー処理時の一時退避エリアとして用いられる。210はハードディスクドライブ(HDD)、211はフレキシブルディスクドライブ(FDD)、をそれぞれ示す。
なお、各ディスクには後述するアプリケーションプログラムやデータ、データベース、ライブラリなどの保存用に用いられる。
212はネットワークインタフェース(NET−I/F)を示し、クライアントPC111,112,113との間でネットワークを経由してデータ転送を行うためにネットワーク上でデータ制御、診断を行う。
207は上述した各ユニット間を接続するI/Oバスである。I/Oバス207は、アドレスバス、データバス及び制御バスからなる。
上記構成において、装置に電源を投入すると、CPU(206)はROM(208)のブートプログラムにしたがって装置を初期化し、HDD(210)らOSのロードを行い、その後で各種アプリケーション等を動作させることになる。
なお、本実施形態の装置は、凡用の情報処理装置(パーソナルコンピュータ等)を基礎としているので、プログラムはハードディスク等に記憶されているものとしたが、もちろんROMに記憶させるようにしてもよい。また、記憶媒体の種別によって本発明が限定されるものでもない。
図3は、図1に示したサーバPC121における文書生成のワークフローを説明するブロック図である。
図3において、301はWebアプリケーションで、サーバPC121が備える、例えばHDD210にインストールされ、RAM209にロードされて実行される。302は文書生成アプリケーションで、Webアプリケーション301から出力データ303を受け取ってドキュメントを生成する。なお、アプリケーションを、以後APと略記する。
ここで、出力データ303は、データベース307のデータを印刷するためにWebAP301によって生成され文書生成AP302に送られるデータである。
なお、文書生成アプリケーション302は、データベース307から出力データ303を取得して印刷用ドキュメント304を再出力する場合に、前回分出力データ306に設定されている改ページ位置に基づいて印刷ドキュメントのページ構成を調整する。なお、ページ構成の調整処理例については後述する。なお、文書生成アプリケーション302を以下文書生成AP302と記す。
ここで、印刷用ドキュメント304は、文書生成AP302が出力データ303と前回分出力データ306とを元に生成する。305はフィードバックデータで、文書生成AP302がWebAP301に返すデータである。フィードバックデータ305には、文書生成AP302により改ページ位置が設定されている。フィードバックデータ305は、WebAP301を介してデータベース307に登録される。
306は前回分の出力データで、WebAP301が文書生成AP302に送る。文書生成AP302は、出力データ303から印刷ドキュメント304を出力する際に、Webアプリケーション301を介して前回分出力データ306を取得して、前回分出力データ306に設定された改ページ位置を参照する。そして、文書生成AP302は、前回分出力データ306に設定された改ページ位置に基づいて、出力する印刷用ドキュメント304のページ構成を調整する。ここで、ページ構成の調整は、出力データのページ構成に比較して発生する差し替えページ数が少なくなるように、例えば図11,図12に示す手順でページ構成を調整する。
なお、文書生成アプリケーション302は、印刷ドキュメント304のページ構成を調整する場合、ページ構成の調整で発生する差し替えページ数を、図12に示す特定の関数で評価することにより、差し替えページ数が少なくなるように調整する。
307はデータベースで、WebAP301で扱うデータを格納している。
なお、WebAP301がデータベース307から読み出す出力データであって、前回の出力データがある場合は、データベース307から前回分出力データ306を参照して、設定された改ページ位置に基づいて印刷ドキュメントのページ構成を調整する。
なお、文書生成AP302は、WebAP301との応答が可能であれば、サーバPC121に搭載されていても良いし、他の機器に搭載されていても良い。
また、本実施形態では、WebAP301は、データベース307から読み出す出力データが文書生成AP302によってどのように編集されるかを管理していない。このため、WebAP301は、出力データが文書生成AP302で生成されるページ割付け後のレイアウトについては予測できないものとする。
これは、WebAP301を介してデータベース307から読み出される一度読み出された出力データが、文書生成AP302により作成される出力データで、前回の出力データのページ構成と異なるページ構成となる場合があるからである。
つまり、一度読み出した出力データに編集、例えばテキスト、イメージ等を挿入したり、削除したりすると、全体としてページ挿入が発生したり、ページ削除が発生してページ構成が変更する。
そこで、本実施形態では、そのようなページ構成の変化に適応して、前回分出力データ306に挿入された改ページ位置に基づいて、文書生成AP302が以下の処理を行う。
つまり、文書生成AP302が前回分出力データから作成され印刷ドキュメント304のページ構成で差し替えページ数が少なくなるようにページ構成を調整する。以下、図4〜図6に示すフローチャートを参照して、上記ページ構成の比較処理を含む本実施形態におけるデータ処理について説明する。
図4は、本実施形態を示す情報処理装置における第1のデータ処理手順の一例を示すフローチャートである。本例は、図3に示したWebAP301と文書生成アプリケーション302のそれぞれで連携する処理例である。ここで、WebAP301は、データベース307から複数ページから構成される出力データを取得する所定のアプリケーションとして機能する。所定のアプリケーションは、Webアプリに限らず、複数ページからなる出力データを処理可能ならば、他の所定のアプリケーションであってもよい。
また、複数の出力データは、文書生成AP302の処理で、その都度、ページ編集処理がなされることで、順次改訂された複数ページからなる新たな出力データが生成され、データベース307にフィードバック転送されてフィードバックデータ305として再登録される。ここで、再登録されたデータは、WebAP301により、出力データ303または前回分出力データ306として再度読み出される。
なお、S401〜S404、S411〜S417は各ステップを示す。また、S401〜S404は、図3に示したWebAP301による処理ステップで、S411〜S417は文書生成AP302による処理ステップである。さらに、各ステップは、CPU206が例えばHDD210から制御プログラムをRAM209にロードして実行することで実現される。
まず、S401で、WebAP301は、文書生成AP302に出力データを送る。次に、S402で、WebAP301が前回に文書生成AP302からフィードバックされた前回分出力データ306がデータベース307にあるかどうかを判断する。ここで、前回分出力データ306があるとWebAP301が判断した場合は、S403で、前回分出力データ306を文書生成AP302に送り、S404へ進む。
一方、S402で、前回分出力データ306がないとWebAP301が判断した場合は、S404で、文書生成AP302が送り返してきたフィードバックデータ305を受け取ってデータベース307に保管し、処理を終了する。
これにより、文書生成AP302の改行設定機能により改ページ位置が設定された出力データ(フィードバックデータ305に対応する)がデータベース307に転送されて再登録される。なお、フィードバックデータ305は、WebAP301を介して、データベース307に再登録される。
一方、文書生成AP302は、S411で、WebAP301から出力データ303を受け取ったらページ拡張機能が有効になっているかどうかを判断する。ここで、ページ拡張機能が有効であると文書生成AP302が判断した場合は、S412で、文書生成AP302がWebAP301から前回分出力データ306を受け取ったかどうかを判断する。
ここで、文書生成AP302が前回分出力データ306を受け取っていると判断した場合は、S413で、前回分出力データ306の改ページ位置に今回分の出力データ303を挿入する。これにより、データベース307から取得される出力データに対して改ページ位置が設定される。
次に、S414で、文書生成AP302は後述する図5、図6に示すフローチャ−トにしたがって出力データ303のページ構成を調整しながら印刷用ドキュメント304を出力する。
ここで、ページ構成の調整は、図6に示すアルゴリムで、出力データのページ構成が、差し替えページ数が少なくなるようにページ構成を調整する。なお、本実施形態では、上記ページ構成の調整処理には、図6に示すように、図12に示す関数に基づく比較処理も含まれる。
そして、S415で、文書生成AP302は印刷ドキュメント304にて行われた改ページ位置を出力データ303に反映させる。
次に、S416で、文書生成AP302は、WebAP301に出力データ303をフィードバックデータ305として送り返し、本処理を終了する。
一方、S411で、文書生成AP302によりページ拡張機能が有効になっていないと判断した場合、あるいは、S412で、前回分出力データ306を受け取っていないと判断した場合は、S417へ進む。
そして、S417で、文書生成AP302が出力データ303にしたがってそのまま印刷ドキュメント304を出力し、S415に移行する。
図5は、本実施形態を示す情報処理装置における第2のデータ処理手順の一例を示すフローチャートである。本例は、S414で文書生成AP302が出力データ303のページ構成を調整しながら印刷用ドキュメントを出力する処理例である。
S501〜S510は各ステップを示し、本処理は、文書生成AP302による処理ステップである。さらに、各ステップは、CPU206が例えばHDD210から制御プログラムをRAM209にロードして実行することで実現される。
まず、S501で、文書生成AP302は、出力データ303が前回分出力データ306に対しての差し替えページ数が可能な限り少なくなるようにページ構成Aを作成する。次に、S502で、文書生成AP302は、ページ構成Aをコピーしてページ構成BとしRAM29に保持する。そして、S503で、図6に示すフローチャートにしたがってページ構成Aの1ページ目以降をブランクページで最適化する。
そして、S504で、文書生成AP302は、ページ構成Bに拡張ページがあるかどうかを判断する。ここで、文書生成AP302により拡張ページがあると判断した場合は、S505で、文書生成AP302は、ページ構成Bの最後の拡張ページを通常の複数のページに分割する。
次に、S506で、文書生成AP302は、図6に示すフローチャートにしたがってページ構成Bの1ページ目移行をブランクページで最適化する。さらに、S507で、文書生成AP302は、ページ構成Aのコストよりページ構成Bのコストの方が小さいかどうかを判断する。
ここで、文書生成AP302がページ構成Aのコストよりページ構成Bのコストの方が小さいと判断した場合は、S508で、文書生成AP302は、S501で作成したページ構成Aを破棄する。そして、S509で、文書生成AP302は、ページ構成Bをコピーしてページ構成AとしてRAM209に保持して、S504に戻る。
一方、S507で、文書生成AP302がページ構成Aのコストよりページ構成Bのコストの方が小さくないと判断した場合も、S504に戻る。
また、S504で、文書生成AP302がページ構成Bに拡張ページが無いと判断した場合は、文書生成AP302は、S501で作成したページ構成Aにしたがって、前回分出力データ306に対しての差し替えページのみについて印刷ドキュメント304を出力して、本処理を終了する。
本実施形態では、データベース307から読み出した化ページ位置が設定された出力データのページ構成を文書生成AP302が調整する場合、ページ構成の調整で発生する差し替えページ数を、例えば図12に示すような特定の関数で評価する。
これにより、文書生成AP302が、差し替えページ数が少なくなるページ構成を決定することができる。つまり、S507の評価に基づく比較判断でいずれかのページ構成が破棄されて、差し替えページ数が少なくなるページ構成が決定される。このような関数による評価に基づいて決定されたページ構成の例を図11等に示す。
図6は、本実施形態を示す情報処理装置における第3のデータ処理手順の一例を示すフローチャートである。本例は、S506で文書生成AP302により文書生成AP302が、あるページ構成XのあるN番目のページ以降について、そのコストが最も低くなるように拡張ページをブランクページで相殺する処理例である。つまり、発生する差し替えページ数が少なくなるようにページ構成を調整する例である。
S601〜S621は各ステップを示し、本処理は、文書生成AP302による処理ステップである。さらに、各ステップは、CPU206が例えばHDD210から制御プログラムをRAM209にロードして実行することで実現される。また、後述するフローチャートにおいて、各変数は、それぞれRAM209で保持管理される。
まず、S601で、文書生成AP302は、ページ構成Xをコピーしてページ構成Yとし、S602で、文書生成AP302は、変数iにNを代入し、S603で、変数iが最終ページ番号未満であるかどうかを判断する。
ここで、文書生成AP302により変数iが最終ページ番号未満であると判断した場合は、S604で、文書生成AP302がページ構成Yのiページ目が拡張ページやブランクページではない通常のページであるかどうかを判断する。
そして、文書生成AP302が通常のページでないと判断した場合は、S605で、文書生成AP302がページ構成Yのiページ目が拡張ページであるかどうかを判断する。ここで、文書生成AP302が拡張ページであると判断した場合は、S606で、文書生成AP302が変数Nestに「1」を代入して、S608へ進む。
一方、S605で、文書生成AP302が拡張ページでないと判断した場合は、S607で文書生成AP302が変数Nestに「−1」を代入して、S608へ進む。
次に、S608で、文書生成AP302が変数jに「i+1」を代入し、S609で、変数jが最終ページ番号以下であるかどうかを判断する。そして、文書生成AP302により変数jが最終ページ番号以下であると判断した場合は、S610で、文書生成AP302は、ページ構成Yのiページ目が通常のページであるかどうかを判断する。
ここで、文書生成AP302が通常のページでないと判断した場合は、S611で、ページ構成Yのjページ目が拡張ページであるかどうかを判断する。ここで、文書生成AP302が拡張ページであると判断した場合は、S612で、文書生成AP302が変数Nestに「1」を加えて、S614へ進む。
一方、S611で、文書生成AP302が拡張ページでないと判断した場合は、S613で、文書生成AP302が変数Nestから「1」を減じ、S614へ進む。
次に、S614で、文書生成AP302により変数Nestが「0」であるかどうかを判断する。ここで、文書生成AP302により変数Nestが「0」であると判断した場合は、S615で、ページ構成Yのiページ目からjページ目までの拡張ページとブランクページの数が同一なのでそれらを相殺したページ構成Zを作成する。
そして、S616で、文書生成AP302が図6に示すフローチャートにしたがってページ構成Zのj+1ページ目以降をブランクページで最適化する。そして、S617で、文書生成AP302は、ページ構成Zのコストがページ構成Xのコストより小さいかどうかを判断する。ここで、文書生成AP302がページ構成Zのコストがページ構成Xのコストより小さいと判断した場合は、S618で、文書生成AP302がページ構成Xを破棄する。
そして、S619で、文書生成AP302がページ構成Zをコピーしてページ構成Xとし、S620で、文書生成AP302が変数iに「1」を加えて、S603へ戻る。
そして、S603で、文書生成AP302により変数iが最終ページ番号未満でないと判断した場合は、本処理を終了する。
一方、S604で、文書生成AP302がページ構成Yのiページ目が通常のページであると判断した場合は、S620に移行する。
また、S610で、文書生成AP302がページ構成Yのiページ目が通常のページであると判断した場合、またはS614で、変数Nestが「0」でないと判断した場合は、S621で、文書生成AP302が変数jに「1」を加える。そして、S609で、文書生成AP302により変数jが最終ページ番号以下であるか、S617でページ構成Zのコストがページ構成Xのコストより小さくないと判断した場合は、S620に移行する。
図7〜図13は、本実施形態を示す情報処理装置における文書生成処理例を説明する図である。以下、文書生成AP302で前回分の出力に対して差し替えのコストが少なくなるように印刷用ドキュメントを出力するワークフローを説明する。ここで、差し替えコストは、文書生成AP302が図12に示す特定の関数により算出する。
図7は、図3に示したWebAP301が一度目に生成した出力データ303の例を示す。
図7において、701〜704は、WebAP301が生成した出力データ303の出力データ要素であり、説明を簡明にするためにそれぞれが1ページ以内で印刷されるサイズであることを想定している。
705は出力データで、出力データ要素701、702、703、704から成り、図3に示した出力データ303に対応する。
図8は、図3に示した文書生成AP302が、図7で示した出力データ303の例を元に生成した印刷ドキュメント304の例を示す。
図8において、801〜804はページで、それぞれ出力データ要素701、702、703、704に対して、ページとその番号「1、2、3、4」を割り当てたものである。
805は、ページ801、802、803、804から成る印刷用ドキュメントで、図3に示した印刷ドキュメント304に対応する。
図9は、図3に示したWebAP301が二度目に生成した出力データ303の例を示す。
図9において、901、902は、それぞれ出力データ要素701と出力データ要素702、出力データ要素702と出力データ要素703の間に新規に挿入された出力データ要素である。なお、本実施形態では、説明を簡明にするためにそれぞれが1ページ以内で印刷されるサイズであることを想定している。
また、出力データ要素703は二度目の生成時点では削除されているものとする。
903は出力データで、出力データ要素701、901、702、902、704から成り、図3に示した出力データ303に対応する。
図10は、図3に示した文書生成AP302が、図9で示した出力データ303の例を元に生成したページ構成の1つ目を示す。
図10において、1001は拡張ページで、出力データ要素701と出力データ要素901にページとその番号「1」を割り当てたものである。
1002は拡張ページで、出力データ要素702と出力データ要素902にページとその番号「2」を割り当てたものである。1003はブランクページで、削除された出力データ要素703にページとその番号「3」を割り当てたものである。
1004はページで、出力データ要素704に印刷ページとその番号「4」を割り当てたものである。1005はページ構成で、拡張ページとなるページ1001、1002と拡張ページと、ブランクのページ1003、ページ1004から成るように決定された例である。ここで、拡張ページとは、編集により出力データ要素が増えて1ページが拡張されたものである。
図11は、図3に示した文書生成AP302が、図9で示した出力データ303の例を元に生成したページ構成の2つ目を示す。
図11において、1101は拡張ページで、出力データ要素701と出力データ要素901にページとその番号「1」を割り当てたものである。
1102はページで、出力データ要素702にページとその番号「2」を割り当てたものである。
1103はページで、出力データ要素902にページとその番号「3」を割り当てたものである。1104はページ、出力データ要素704にページとその番号「4」を割り当てたものである。1105はページ構成で、拡張ページとなるページ1101、ページ1102、1103、1104から成るように決定された例である。
図12は、図3に示した文書生成AP302が生成する印刷ドキュメント304のページ構成のコストを評価する特定の関数の例を示す。
図12において、1201は、印刷ドキュメント304のページ構成の差し替えコストを評価する関数Costの例であり、関数1201は、下記式により特定される。本関数1201は、拡張ページ数にその重み係数を乗じた値と、差し替えページ数にその重みを乗じた値との和をそのコストとしており、各重み係数は「1」としている。
関数Cost(N,M)=Wn×N+Wm×M
ここで、Wnは、拡張ページ数の重み係数を示し、本実施形態では、「1」としている。Wmは、差し替えページ数の重み係数を示し、本実施形態では、「1」としている。
Nは拡張ページ数を示し、Mは差し替えページ数を示す。
図13は、図3に示した文書生成AP302が、図9で示した出力データ303の例を元に生成したページ構成の3つ目を示す。
図13において、1301はページで、出力データ要素701にページとその番号「1」を割り当てたものである。1302はページで、出力データ要素901にページとその番号「2」を割り当てたものである。
1303はページで、出力データ要素702にページとその番号「3」を割り当てたものである。1304はページで、出力データ要素902にページとその番号「4」を割り当てたものである。
1305はページで、出力データ要素704にページとその番号「5」を割り当てたものである。1306はページ構成で、ページ1301、1302、1303、1304、1105から成る例である。
以下に、文書生成アプリケーション302による図7、図8によって示した印刷ドキュメントの生成処理について、図4で示したフローチャートにしたがって説明する。尚、ページ拡張機能は有効になっているものとする。
WebAP301は、図4に示すS401で、出力データ705を文書生成AP302に送り、S402で前回の出力データがあるかどうかを判断し、無いので前回の出力データは送らない。
そして、出力データ705を受け取った文書生成AP302は、S411で、ページ拡張機能が有効になっているかどうかをチェックし、ここでは上述のように有効になっているので、S412に進む。
そして、S412で、文書生成AP302は、前回の出力データがあるかどうかを判断する。ここで、前回の出力データは無いので、文書生成AP302は、S417で、出力データ705にしたがって図8に示す印刷ドキュメント805を出力する。
そして、S415で、文書生成AP302は、印刷ドキュメント805の改ページ位置を出力データ705の、出力データ要素702の直前、出力データ要素703の直前、出力データ要素704の直前に挿入する。
これにより、改ページ位置が設定されたフィードバックされる出力データ(フィードバックデータ305に対応する)が生成される。
そして、S416で、文書生成AP302は、出力データをフィードバックデータ305としてWebAP301に送り返し、処理を終了する。
そして、文書生成AP302からフィードバックデータ305を受け取ったWebAP301は、S404で、フィードバックデータ305をデータベース307に保管し、処理を終了する。
以下に、図9、図10、図11、図12、図13によって示した印刷ドキュメントの出力処理を、図4、図5、図6で示したフローチャートにしたがって説明する。
WebAP301はS401で、図9に示す出力データ903を文書生成AP302に送り、S402で、文書生成AP302は、前回の出力データがあるかどうかをチェックする。ここでは、WebAP301は、前回の出力データ705があると判断するので、S403で、WebAP301は、前回の出力データ705を文書生成AP302に送る。
そして、WebAP301から出力データ903を受け取った文書生成AP302は、S411で、ページ拡張機能が有効になっているかどうかをチェックする。ここで、有効になっているので、S412で、文書生成AP302は、前回の出力データがあるかどうかを判断する。
ここで、文書生成AP302は、前回の出力データ705があると判断するので、S413で、文書生成AP302は、前回の出力データ705に含まれている改ページ位置を出力データ903の、出力データ要素702の直前に挿入する。
同様に、文書生成AP302は、出力データ要素703の直前に改ページ位置を挿入する。同様に、文書生成AP302は、出力データ要素704の直前に改ページ位置を挿入する。
しかし、出力データ903には、出力データ要素703は削除されて無いので、文書生成AP302は、代わりに出力データ要素704の直前にもう1つ改ページ位置を挿入し、S414において処理は図5に移行する。
そして、図5に示すS501で、文書生成AP302は、出力データ903が前回分の出力データ705に対しての差し替えページ数が可能な限り少なくなるように、図10に示す挿入された改ページ位置にしたがってページ構成1005を作成する。これがページ構成Aに対応する。
そして、S502で、文書生成AP302は、ページ構成Aをコピーしてページ構成Bとし、S503で、処理は図6に示す処理に移行する。
つまり、ページ構成Aはページ構成Xの別名を得て、S601で、文書生成AP302は、ページ構成Xをコピーしてページ構成Yとする。
そして、S602で、文書生成AP302は、変数iに「1」を代入し、S603で、文書生成AP302は、変数iがページ構成Xの最終ページ番号である「4」より小さいかどうかを判断する。ここで、文書生成AP302は、最終ページ番号である「4」より小さいと判断し、S604で、文書生成AP302は、ページ構成Yの1ページ目である図10に示すページ1001が通常のページであるかどうかを判断する。
ここで、ページ1001は拡張ページであって通常のページではないので、S605で、文書生成AP302は、ページ構成Y1005の1ページ目が拡張ページであるかどうかを判断する。
ここで、ページ1001は拡張ページなので、S606で、文書生成AP302は、変数Nestに「1」を代入し、S608で、文書生成AP302は、変数jに「2(=i+1)」を代入し、S609で、文書生成AP302は、変数jがページ構成X1005の最終ページ番号である「4」以下であるかどうかを確認する。
ここで、変数jは「4」以下なので、S610で、文書生成AP302は、ページ構成Yの2ページ目のページ1002が通常のページであるかどうかを判断する。ここで、ページ1002は拡張ページであって通常のページではないので、S611で、文書生成AP302は、ページ構成Yの2ページ目のページ1002が拡張ページであるかどうかを判断する。
ここで、ページ1002は拡張ページなので、S612で、文書生成AP302は、Nestに「1」を加えて「2」とし、S614で、文書生成AP302は、変数Nestが「0」であるかどうかを判断する。ここで、変数Nestは、「2」であって「0」ではないので、S621で、文書生成AP302は、変数jに「1」を加えて「3」とする。
そして、S609で、文書生成AP302は、変数jがページ構成Xの最終ページ番号である「4」以下であるかどうかを確認し、ここで、変数jは「4」以下なので、S610で、文書生成AP302は、ページ構成Yの3ページ目のページ1003が通常のページであるかどうかを判断する。
ここで、ページ1003はブランクページであって通常のページではないので、S611で、文書生成AP302は、ページ構成Yの3ページ目のページ1003が拡張ページであるかどうかを判断する。
ここで、ページ1003はブランクページであって拡張ページではないので、S613で、文書生成AP302は、変数Nestから「1」を減じて「1」とする。
そして、S614で、文書生成AP302は、変数Nestが「0」であるかどうかを判断し、「1」であって「0」ではないので、S621で、文書生成AP302は、変数jに「1」を加えて「4」とする。
そして、S609で、文書生成AP302は、変数jがページ構成Xの最終ページ番号である「4」以下であるかどうかを判断する。ここで、変数jが「4」以下なので、S610で、文書生成AP302は、ページ構成Yの4ページ目となるページ1004が通常のページであるかどうかを判断する。
ここで、ページ1004は通常のページなので、S621で、文書生成AP302は、変数jに「1」を加えて「5」とする。
そして、S609で、文書生成AP302は、変数jがページ構成Xの最終ページ番号である「4」以下であるかどうかを判断する。ここで、変数jが「4」以下ではないので、S620で、文書生成AP302は、変数iに「1」を加えて「2」とする。ここで、S603で、文書生成AP302は、変数iがページ構成Xの最終ページ番号である「4」より小さいかどうかを判断する。ここで、変数iが「4」より小さいので、S604で、文書生成AP302は、ページ構成Yの2ページ目のページ1002が通常のページであるかどうかを判断する。
ここで、ページ1002は拡張ページであって通常のページではないので、S605で、文書生成AP302は、ページ構成Yの1ページ目のページ1001が拡張ページであるかどうかを判断する。
ここで、ページ1001は拡張ページなので、S606で、文書生成AP302は、変数Nestに「1」を代入し、S608で、文書生成AP302は、変数jに「3」を代入する。そして、S609で、文書生成AP302は、変数jがページ構成Xの最終ページ番号である「4」以下であるかどうかを判断する。ここで、変数jが「4」以下なので、S610で、文書生成AP302は、ページ構成Yの3ページ目となるページ1003が通常のページであるかどうかを判断する。
ここで、ページ1003はブランクページであって通常のページではないので、S611で、文書生成AP302は、ページ構成Yの3ページ目となるページ1003が拡張ページであるかどうかを判断する。
ここで、ページ1003はブランクページであって拡張ページではないのでS613で、文書生成AP302は、変数Nestから「1」を減じて「0」とする。そして、S614で、文書生成AP302は、変数Nestが「0」であるかどうかを判断する。ここで、変数Nestは「0」なので、S615で、文書生成AP302は、ページ構成Yの2ページ目から3ページ目までの拡張ページとブランクページを相殺したページ構成Zを作成する。
そして、S616で、文書生成AP302は、ページ構成Zをブランクページで最適化するが、ブランクページが無いので説明を割愛する。
そして、S617で、文書生成AP302は、ページ構成Zのコストがページ構成Xのコストより小さいかどうかを判断する。
なお、図12に示した関数1201に従うと、ページ構成Z1105の拡張ページ数は「1」で差し替えページ数は「2」なので、その差し替えコストは「3」である。
また、ページ構成Xの拡張ページ数は「2」で差し替えページ数は「2」なのでその差し替えコストは「4」であり、ページ構成Zのコストの方が小さいので、S618で、文書生成AP302は、ページ構成Xは破棄する。
そして、S619で、文書生成AP302は、ページ構成Zをコピーしてページ構成Xとし、S620で、文書生成AP302は、変数iに「1」を加えて「3」とする。そして、S603で、文書生成AP302は、変数iがページXの最終ページ番号「4」より小さいかどうかを判断し、小さいので、S604で、文書生成AP302は、ページ構成Yの3ページ目となるページ1003が通常のページであるかどうかを判断する。
ここで、ページ1003はブランクページであって通常のページではないので、S605で、文書生成AP302は、ページ構成Yの3ページ目となるページ1003が拡張ページであるかどうかを判断する。ここで、3ページ目となるページ1003は拡張ページではないので、S607で、文書生成AP302は、変数Nestに「−1」を代入する。
そして、S608で、変数jに「4」を代入し、S609で、文書生成AP302は、変数jがページ構成Xの最終ページ番号「4」以下であるかどうかを判断する。ここで、変数jが「4」以下なので、S610で、文書生成AP302は、ページ構成Y1005の4ページ目となるページ1004が通常のページであるかどうかを判断する。
ここで、ページ1004は通常のページなので、S621で、文書生成AP302は、変数jに「1」を加えて「5」とする。そして、S609で、変数jがページ構成Xの最終ページ番号「4」以下であるかどうかを判断する。ここで、変数jが「4」以下ではないので、S620で、文書生成AP302は、変数iに「1」を加えて「4」とする。
そして、S603で、文書生成AP302は、変数iがページ構成Xの最終ページ番号「4」より小さいかどうかを判断し、小さくないので、図6の処理は終了して、図5に示すS503に戻る。
そして、S504で、文書生成AP302は、ページ構成Bに拡張ページがあるかどうかを判断する。ここで、拡張ページはあるので、S505で、文書生成AP302は、ページ構成Bの最後の拡張ページとなるページ1002を通常の複数のページに分割してページ構成Bとする。
そして、S506で、文書生成AP302は、ページ構成Bをブランクページで最適化するが、ブランクページが無いので説明を割愛する。
そして、S507で、文書生成AP302は、ページ構成Aのコストよりページ構成Bのコストが小さいかどうかを判断する。ここで、図12に示した関数1201に従うと、ページ構成Aの拡張ページ数は「1」で差し替えページ数は「2」なので、その差し替えコストは「3」である。また、ページ構成Bの拡張ページ数は「1」で差し替えページ数は「2」なので、その差し替えコストは「3」である。
ここで、ページ構成Bのコストは小さくないので、S504で、文書生成AP302は、ページ構成Bに拡張ページがあるかどうかを判断する。ここで、ページ構成Bには拡張ページがあるので、S505で、文書生成AP302は、ページ構成Bの最後の拡張ページとなるページ1101を通常の複数のページに分割してページ構成Bとする。
そして、S506で、文書生成AP302は、ページ構成Bをブランクページで最適化するが、ブランクページが無いので説明を割愛する。
そして、S507で、文書生成AP302は、ページ構成Aのコストよりページ構成Bのコストが小さいかどうかを判断する。
ここで、図12に示した関数1201に従うと、ページ構成Aの拡張ページ数は「1」で差し替えページ数は「2」なので、その差し替えコストは「3」ある。
また、ページ構成Bの拡張ページ数は「0」で差し替えページ数は「4」なので、その差し替えコストは「4」である。ここで、ページ構成Bのコストは小さくないので、S504で、ページ構成Bに拡張ページがあるかどうかを判断する。
ここで、構成Bには拡張ページが無いので、S510で、文書生成AP302は、ページ構成Aにしたがって、図11に示す差し替えページ1101、1103を印刷ドキュメント304として出力し、図5に示す処理は終了して、図4に示すS414に戻る。
そして、S415で、文書生成AP302は、印刷ドキュメント1105の改ページ位置を出力データ903の、出力データ要素702の直前、出力データ要素902の直前、出力データ要素704の直前に挿入する。
そして、S416で、文書生成AP302は、出力データ903をフィードバックデータとしてWebAP301に送り返し、処理を終了する。
そして、出力データ903を受け取ったWebAP301は、S404で、出力データ903をデータベース307に保管し、処理を終了する。
本実施形態によれば、ドキュメント作成用データにおいて、一部のページの印刷容量を拡張することにより、印刷されたドキュメントに含まれる差し替えページ数を抑制することが可能となる。
さらに、差し替えページ数以外の要素をも差し替えにかかるコストと見做し、そのコストを計算している。これにより、印刷されたドキュメントに含まれるページの差し替えに際する、差し替えページ数以外の要素をも考慮に入れたコストを抑制することが可能となる。
さらに、拡張ページの印刷容量拡張分を近隣のブランクページで相殺することにより、拡張ページ数を抑制することが可能となる。
さらに、ドキュメント作成用データを調整する手段を利用するかどうかを切り替えることにより、ユーザの判断でページ構成の調整処理を選択することが可能となる。
〔第2実施形態〕
以下、図14に示すメモリマップを参照して本発明に係る情報処理装置で読み取り可能なデータ処理プログラムの構成について説明する。
図14は、本発明に係る情報処理装置で読み取り可能な各種データ処理プログラムを格納する記憶媒体のメモリマップを説明する図である。
なお、特に図示しないが、記憶媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報,作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、各種プログラムをコンピュータにインストールするためのプログラムや、インストールするプログラムが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
本実施形態における図4,図5,図6に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD−ROMやフラッシュメモリやFD等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
以上のように、前述した実施形態の機能を実現するソフトウエアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
したがって、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVDなどを用いることができる。
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、該ホームページから本発明のコンピュータプログラムそのもの、もしくは、圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバやftpサーバ等も本発明の請求項に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけではない。例えばそのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行う。そして、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込ませる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本発明は上記実施形態に限定されるものではなく、本発明の趣旨に基づき種々の変形(各実施形態の有機的な組合せを含む)が可能であり、それらを本発明の範囲から除外するものではない。
本発明の様々な例と実施形態を示して説明したが、当業者であれば、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されるのではない。