(57)【特許請求の範囲】
【請求項１】
文書データの最初のページから最終のページの方向に走査していき１ページを減らすために要する第１のページ範囲を抽出し、前記第１のページ範囲の最終のページから前記第１のページ範囲を抽出する際に走査した方向とは逆方向に走査していき１ページを減らすために要する第２のページ範囲を抽出する抽出手段と、
前記第２のページ範囲に含まれるページ数が前記第１のページ範囲に含まれるページの数よりも少ない場合、前記第２のページ範囲に含まれるページの空白領域を削減することでページ削減処理を実行するページ削減手段と、
を有する情報処理装置。
【請求項２】
前記第１のページ範囲と、前記第２のページ範囲と、の差分のページをページ削減処理の対象から除外するページとして選定する選定手段を更に有する請求項１記載の情報処理装置。
【請求項３】
前記抽出手段は、更に、最後のページから前記第１のページ範囲を抽出する際に走査した方向とは逆方向に走査していき、１ページを減らすために要する第３のページ範囲を抽出し、前記第３のページ範囲に含まれるページ数が前記第２のページ範囲に含まれるページ数よりも少ない場合、前記第１のページ範囲と、前記第３のページ範囲と、の差分のページをページ削減処理の対象から除外するページとして選定する請求項１又は２記載の情報処理装置。
【請求項４】
前記抽出手段は、ページを走査していき、ページに含まれるオブジェクトの高さに基づき、１ページを減らすために要するページ範囲を抽出する請求項１乃至３何れか１項記載の情報処理装置。
【請求項５】
前記抽出手段は、更に、前記オブジェクトの幅に基づき、１ページを減らすために要するページ範囲を抽出する請求項４記載の情報処理装置。
【請求項６】
情報処理装置が実行する情報処理方法であって、
文書データの最初のページから最終のページの方向に走査していき１ページを減らすために要する第１のページ範囲を抽出し、前記第１のページ範囲の最終のページから前記第１のページ範囲を抽出する際に走査した方向とは逆方向に走査していき１ページを減らすために要する第２のページ範囲を抽出する抽出ステップと、
前記第２のページ範囲に含まれるページ数が前記第１のページ範囲に含まれるページの数よりも少ない場合、前記第２のページ範囲に含まれるページの空白領域を削減することでページ削減処理を実行するページ削減ステップと、
を含む情報処理方法。
【請求項７】
コンピュータに、
文書データの最初のページから最終のページの方向に走査していき１ページを減らすために要する第１のページ範囲を抽出し、前記第１のページ範囲の最終のページから前記第１のページ範囲を抽出する際に走査した方向とは逆方向に走査していき１ページを減らすために要する第２のページ範囲を抽出する抽出ステップと、
前記第２のページ範囲に含まれるページ数が前記第１のページ範囲に含まれるページの数よりも少ない場合、前記第２のページ範囲に含まれるページの空白領域を削減することでページ削減処理を実行するページ削減ステップと、
を実行させるためのプログラム。
【請求項８】
前記コンピュータに、前記第１のページ範囲と、前記第２のページ範囲と、の差分のページをページ削減処理の対象から除外するページとして選定する選定ステップを更に実行させるための請求項７記載のプログラム。
【請求項９】
前記抽出ステップでは、更に、最後のページから前記第１のページ範囲を抽出する際に走査した方向とは逆方向に走査していき、１ページを減らすために要する第３のページ範囲を抽出し、前記第３のページ範囲に含まれるページ数が前記第２のページ範囲に含まれるページ数よりも少ない場合、前記第１のページ範囲と、前記第３のページ範囲と、の差分のページをページ削減処理の対象から除外するページとして選定する請求項７又は８記載のプログラム。
【請求項１０】
前記抽出ステップでは、ページを走査していき、ページに含まれるオブジェクトの高さに基づき、１ページを減らすために要するページ範囲を抽出する請求項７乃至９何れか１項記載のプログラム。
【請求項１１】
前記抽出ステップでは、更に、前記オブジェクトの幅に基づき、１ページを減らすために要するページ範囲を抽出する請求項１０記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、文書データによる印刷物の出力用紙枚数を削減するためにページ削減処理が行われている（特許文献１）。
ここで、ページ削減処理とは、行間や図と図の隙間をはじめとするコンテンツ間の余白を詰めることで、削除可能な空白のみのページを作るというものである。
【０００３】
特許文献１の技術では、まず選択ページに再レイアウトが可能な十分な余白があるかを判定している。また、特許文献１の技術では、判定で十分な余白が無いと判断された場合、選択ページ以降で再レイアウト可能な余白を持つページがあるかを探索していき、見つかった場合は、対象ページまで移動処理を行う。
これらの処理によって、ユーザがページ上のオブジェクトの配置状態を確認し、どのページが再レイアウト可能な組み合わせかを逐一判断する必要が無くなる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２３１３７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、先行技術ではドキュメント前方から逐次処理を行うため、ページ削減ができない領域に対しても無駄な処理が行われていた。
【０００６】
本発明はこのような問題点に鑑みなされたもので、効率的なページ削減処理を実現することを目的とする。
【課題を解決するための手段】
【０００７】
そこで、本発明の情報処理装置は、文書データの最初のページから最終のページの方向に走査していき１ページを減らすために要する第１のページ範囲を抽出し、前記第１のページ範囲の最終のページから前記第１のページ範囲を抽出する際に走査した方向とは逆方向に走査していき１ページを減らすために要する第２のページ範囲を抽出する抽出手段と、前記第２のページ範囲に含まれるページ数が前記第１のページ範囲に含まれるページの数よりも少ない場合、前記第２のページ範囲に含まれるページの空白領域を削減することでページ削減処理を実行するページ削減手段と、を有する。
【発明の効果】
【０００８】
本発明によれば、効率的なページ削減処理を実現できる。
【図面の簡単な説明】
【０００９】
【図１】文書処理システムのハードウェア構成等の一例を示す図である。
【図２】ページ削減処理で扱う余白削減処理について説明するための図である。
【図３】コンピュータ１０１の本実施形態に係る主な処理に関するソフトウェア構成を示す図である。
【図４】主な処理に付随する処理に関するソフトウェアも加えたソフトウェア構成を示す図である。
【図５】レイアウト処理の主な処理の一例を示すフローチャートである。
【図６】Ｓ４０２の処理の詳細を示すフローチャートである。
【図７】ページ削減処理で除外するページを走査する処理を示す図である。
【図８】Ｓ６０２の処理の詳細を示すフローチャートである。
【図９】印刷体裁情報に合わせて削減ページ数を調整する処理の一例を示すフローチャートである。
【図１０】Ｓ９０１の処理の詳細を示すフローチャートである。
【図１１】最終ページ部分の処理を行う上での効果を説明するための図である。
【図１２】実施形態１と実施形態３との処理の差分の処理を示すフローチャートである。
【図１３】最終ページ部分の処理を説明するための図である。
【図１４】オブジェクトの縮小処理も加えた余白削減処理を説明するための図である。
【図１５】実施形態１と実施形態４との処理の差分の処理を示すフローチャート（その１）である。
【図１６】実施形態１と実施形態４との処理の差分の処理を示すフローチャート（その２）である。
【図１７】余白削減処理判定の拡張処理を説明するための図である。
【図１８】実施形態１と実施形態５との処理の差分の処理を示すフローチャートである。
【図１９】余白削減処理における追加判定の設定画面の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面に基づいて説明する。
【００１１】
＜実施形態１＞
図１は、文書処理システムのハードウェア構成等の一例を示す図である。
文書処理システムの一例として、コンピュータ１０１に対し、キーボード１３２やマウス１３３を始めとするポインティングデバイス上からデータの入力、編集操作をすることで処理を行うシステムを用いて説明を行う。このコンピュータ１０１は、典型的に少なくともひとつのＣＰＵ１３５と半導体のランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）から構成されるメモリユニット１３６とを含んでいる。加えて、コンピュータ１０１は、ビデオインタフェイス１３７、キーボード１３２やマウス１３３のためのＩ／Ｏインタフェイス１４３も含んでいる。また、コンピュータ１０１は、ハードディスクドライブ１４０やＳＳＤ１４１を始めとする記憶装置１３９も含んでおり、ここにＬＩＮＵＸ（登録商標）やウィンドウズ（登録商標）のようなオペレーションシステムが格納される。また、コンピュータ１０１は、ネットワークインタフェイス１３８を有し、ネットワークインタフェイス１３８を介してネットワーク１０７やプリンタ等に接続される。
ＣＰＵ１３５が記憶装置１３９に記憶されたプログラムを実行されることによって後述するコンピュータのソフトウェア構成やフローチャートに係る処理が実現される。
なお、特に断らない限り以下に示す実施形態の機能が実行されるのであれば、単体の機器であっても複数の機器から成るシステムであっても、以下に示す実施形態を適応できるものとする。或いは、実行されるソフトウェア（プログラム）がコンピュータのシステムに組み込まれたプリンタドライバであっても、或いはプリンタ等の印刷装置上で動作するオペレーティングシステムに組み込まれるものであってもよい。また、ＬＡＮ、ＷＡＮを始めとするネットワークを介して接続され処理されるシステムであっても、同様に以下に示す実施形態を適用できるものとする。
なお、コンピュータ１０１は、情報処理装置の一例である。
【００１２】
本実施形態を説明するにあたって、予め基本的な処理となるページ削減処理の説明を行う。
図２のページ５０１と５０２とを例に、ページ削減処理で扱う余白削減処理について説明する。
余白削減処理とは、ページ内の行間や段落間の余白を埋めるようにページ内オブジェクトの再配置を行う処理を指す。コンピュータは、ページ５０１の下部に存在している余白を埋めるように、ページ５０２の上部に存在しているオブジェクトを移動させる。その後、コンピュータは、ページ５０２の下部のオブジェクトをページ上部に移動させることで、ページ５０７、５０８の結果を得る。以後、このようにページ内の余白を削減する処理を余白削減処理と呼称する。この処理で、オブジェクトがページ間を跨いで移動する際の、オブジェクトの移動元であるページ５０８のことを移動元ページ、オブジェクトの移動先であるページ５０７のことを移動先ページと呼称する。
【００１３】
ページ削減処理とは、上記の余白削減処理を、空白ページができるか、或いは最終ページに到達するまで繰り返す処理を指す。ページ５０１〜５０６にページ削減処理を適用した結果はページ５０７〜５１２となる。ここでの、空白ページとはページ５１１のようにコンテンツが全て無くなった状態のページを指す。
なお、コンピュータ１０１は、空白スペースのような目に見えないオブジェクトや背景として検出されている画像、ヘッダ・フッタのような編集対象から外れているオブジェクトのみから構成されるページを空白ページとみなす。また、ここで言うオブジェクトとは、文字やベクター描画等のことを言う。また、以下に示す実施形態では、コンピュータ１０１は、オブジェクトをひとまとめにしたグループもオブジェクトとして扱う。加えて、以下に示す実施形態では、コンピュータ１０１は、注釈等の本文とは別の領域に付加されている情報も編集対象として扱える場合は、同様にオブジェクトとして扱う。
【００１４】
図３、図４は、コンピュータ１０１のソフトウェア構成の一例を示す図である。ソフトウェア構成を説明するに際し、図２を用いて説明する。ここで、図３は、コンピュータ１０１の本実施形態に係る主な処理に関するソフトウェア構成を示す図である。図４は、主な処理に付随する処理に関するソフトウェアも加えたソフトウェア構成を示す図である。
まず、図２の例で、ページ５０１〜５０６に対してページ削減処理をかけた場合の処理結果は、ページ５０７〜５１２となり、６ページ間の処理で１ページ削減することができた。しかしながら、ページ５０１〜５０６の区間で１ページ削減するだけでよいなら、ページ５０５のオブジェクトをページ５０４の下部に移動させるだけでも事足りる。つまり、この際、ページ５０１、５０２の間のオブジェクトの移動処理や、ページ５０６のオブジェクト移動は特に行う必要が無いといえる。
これを踏まえ、除外ページ選定部２０１では、複数のページから構成される文書データに対してページ削減処理を行う上で不要なページの抽出を行う。図２の例では、ページ５０１〜５０３、５０６をページ削減処理の対象から外す。この結果を用いてページ削減部２０２では、ページ５０４、５０５のみを対象としてページ削減処理を行う。この処理でページ５１３の結果を得ることができる。除外ページ選定部２０１は、内部的にページ削減可能範囲算出部２０３を呼び出している。ページ削減可能範囲算出部２０３は、開始ページから１ページ削減するために必要なページ範囲を探索する。ここでのページ範囲とは、例えば図２のページ５０１を開始ページとした場合、初めて空白ページができるページ５０５を範囲の終端とした、ページ５０１〜５０５までの範囲を指す。詳細な算出方法は後述する。本実施形態のレイアウト処理の主な処理はこれらの処理を行うことであり、それによって必要最低限の処理でページ削減の効果を得ることができる。
【００１５】
また、ページ削減可能範囲算出部２０３は、必要に応じて３０１〜３０３の各部を呼び出すことができる。これらの各部の処理は後述する実施形態３、又は実施形態４で説明する。削減到達目標ページ算出部３０４は、用紙１枚あたりに複数ページを割り付ける印刷を行う等、最大限ページを削減しつつ指定された割り付けに最適化したページ数の算出を行う処理である。ページ削減部２０２では、この削減目標ページになるようにページ削減処理を行う。削減到達目標ページ算出部３０４の処理の詳細は、後述する実施形態２で説明する。縮小余白削減処理部３０５は、必要に応じてページ中のオブジェクトに縮小処理をかけながら余白削減処理を行う。縮小余白削減処理部３０５の処理の詳細は、後述する実施形態５で説明する。
【００１６】
図５は、レイアウト処理の主な処理の一例を示すフローチャートである。ここでは図２を例として説明を行う。なお、実施する際の詳細処理は後述するため、ここでは処理の概要を述べる。
ステップＳ４０１では、ＣＰＵ１３５は、ドキュメントの取得処理を行う。この処理でＣＰＵ１３５は、記憶装置１３９或いはネットワークインタフェイス１３８を介してドキュメントのデータを読み込み、メモリユニット１３６に格納する。
ステップＳ４０２では、ＣＰＵ１３５は、図２のページ５０１〜５０６を含むドキュメントから除外ページ５０１〜５０３、５０６を選出する。ＣＰＵ１３５は、選出したページを識別する情報として、メモリユニット１３６に格納されているドキュメントデータのページ部分に除外を意味するフラグを設定する。なお、このデータは、除外ページのリストとしてメモリユニット１３６上に設定されてもよい。なお、より具体的にはこのステップの処理は、除外ページ選定部２０１が行う処理である。
【００１７】
ステップＳ４０３では、ＣＰＵ１３５は、処理を行う次のページを取得する。この処理では、基本的に未処理のページがドキュメントの先頭に近い順に読み込まれ、先頭の連続した２ページが移動先ページ、移動元ページの順に読み込まれる。例外的に移動元ページがページ５１１のように空白ページであった場合は、連続したページではなく空白ページの次のページ、例えばページ５１２が読み込まれる。
ステップＳ４０４では、ＣＰＵ１３５は、読み込んだページが除外ページ対象かどうかを判定する。移動先、移動元ページの何れかが除外ページとして設定されていた場合は、ＣＰＵ１３５は、処理をスキップし次のページの読み込み処理に移る。
除外ページとして設定されていない場合は、ＣＰＵ１３５は、移動先、移動元ページ間で余白削減処理を行う（Ｓ４０５）。
ステップＳ４０６では、ＣＰＵ１３５は、処理していないページがあれば次のページの読み込み処理（Ｓ４０３）に移り、処理すべきページがなければ図５に示す処理を終了する。
以上の処理によって、必要の無い余白削減処理を節減しつつページ削減を行うことが可能となる。
【００１８】
図６は、Ｓ４０２の処理の詳細を示すフローチャートである。ここでは、図７を用いて説明する。
ＣＰＵ１３５は、計算を行う前に、１ページ削減するために必要なページ範囲を保持する領域ＬｉｓｔＸ、ＬｉｓｔＹの初期化を行う（Ｓ６０１）。この領域ＬｉｓｔＸ、ＬｉｓｔＹはメモリユニット１３６に一時的に保持される値であり、開始ページから終了ページまでの値を示す値が格納されている。この際、データの持ち方として開始ページと終了ページとの２つの数値データが保持されている。例えば、図７のページ８０１〜８０５をＬｉｓｔＸに格納する場合は開始ページと終了ページとを表す「８０１、８０５」が保存されている。その他のデータの持ち方として、ＣＰＵ１３５は、該当する全てのページ番号、例えば図７のページ８０１〜８０５を表す場合、「８０１、８０２、８０３、８０４、８０５」を順次、数値データのリストとして保持してもよい。なお、この除外ページ選定の処理はページ削減処理のシミュレートを仮想的に行うだけであり、オブジェクトの移動を始めとする編集操作は行われないものとする。
開始ページは、最初のページの一例である。終了ページは、最後のページの一例である。
【００１９】
図７のＰｒｏｃｅｓｓ：１の処理「１−Ａ」では、ＣＰＵ１３５は、ドキュメントの先頭から順方向に１ページ削減するために必要なページ範囲（第１のページ範囲）を計算する（Ｓ６０２）。ここでの順方向は、ドキュメントの先頭ページから後方ページに向かう方向であるとし、逆に後方から先頭ページに向かう方向を逆方向と定義する。ステップＳ６０２の処理の詳細は後述するため、ここでは結果のみ述べるが、処理「１−Ａ」でページ８０１を開始ページとしてステップＳ６０２の処理を行うとページ８０１〜８０５の範囲が１ページを削減するために必要なページ範囲として取得される。
そして、ＣＰＵ１３５は、この結果をＬｉｓｔＸに格納する（Ｓ６０３）。
次に処理「１−Ｂ」では、ＣＰＵ１３５は、ＬｉｓｔＸの最終ページ、ここではページ８０５から逆方向に１ページ削減するために必要なページ範囲（第２のページ範囲）を計算する（Ｓ６０５）。このとき、ページ８０４のオブジェクトが全てページ８０５の余白部分に収まるため、ＣＰＵ１３５は、ページ８０４〜８０５の範囲を結果として取得する。なお、より具体的には、このステップの処理は、ページ削減可能範囲算出部２０３が行う処理である。
そして、ＣＰＵ１３５は、逆方向の処理の結果をＬｉｓｔＹに格納する（Ｓ６０６）。
【００２０】
順方向と逆方向の処理が終了した後、ＣＰＵ１３５は、ページ範囲ＬｉｓｔＸとＬｉｓｔＹとの比較を行う（Ｓ６０７）。
ＣＰＵ１３５は、比較の結果、差分から除外するページを算出する（Ｓ６０８）。図７のＰｒｏｃｅｓｓ：１の例では、処理「１−Ａ」がページ８０１〜８０５の５ページでページ削減が可能となっているのに対し、処理「１−Ｂ」ではページ８０４〜８０５の２ページでページ削減が可能となっている。つまりページ８０１〜８０５の範囲でページ削減を行う際に必要なのは、実質、ページ８０４〜８０５の範囲だけであり、ページ８０１〜８０３の範囲は処理から除外しても結果が変わらない。したがって、ＣＰＵ１３５は、ページ８０１〜８０３を除外ページとして設定する。つまり、処理「１−Ａ」で抽出されたページ範囲に含まれるページ数より処理「１−Ｂ」で抽出されたページ範囲に含まれるページ数の方が少ないので、処理「１−Ｂ」で抽出されたページ範囲のページに対して空白領域を削減するページ削減処理が適用される。
【００２１】
ステップＳ６０９にて、図７の例では処理すべきページが残っているため、ＣＰＵ１３５は、ＬｉｓｔＸに格納された最終ページ、図７の例ではページ８０５を開始ページとしてステップＳ６０２に移行する。
次にＰｒｏｃｅｓｓ：２の処理として処理「２−Ａ」が実行される。この際、開始ページであるページ８０５は直前の処理Ｐｒｏｃｅｓｓ：１の「１−Ａ」の処理結果を用いて計算される。このときの処理結果等の説明は後述するが、図７の例では結果８０７が用いられる。以上を踏まえて、ＣＰＵ１３５は、処理「２−Ａ」を開始する。ここで、結果８０７の余白部分にページ８０６のコンテンツは入らないためページ削減は行えず、この段階で最終ページに到達した判定が結果として帰ってくる。最終ページに到達したと判定した場合（Ｓ６０４においてＹｅｓ）、ＣＰＵ１３５は、処理をステップＳ６１０へ移す。
【００２２】
ステップＳ６１０では、ＣＰＵ１３５は、走査対象ページとなったページのうち、新規に対象となったページを除外ページに設定する。図７の処理「２−Ａ」の例では、ページ８０５、８０６が処理「２−Ａ」の対象であるが、ページ８０５は直前のＰｒｏｃｅｓｓ：１の「１−Ａ」や「１−Ｂ」で処理の対象となっているため、ここで除外ページとして設定されるのはページ８０６のみとなる。
これらの処理を行うことで、ＣＰＵ１３５は、除外ページを設定した図７のＰｒｏｃｅｓｓ：３の結果を得ることができる。
【００２３】
図８は、Ｓ６０２の処理の詳細を示すフローチャートである。ここでは、図７の処理「１−Ａ」「２−Ａ」を用いて説明する。
なお、本実施形態では、ＣＰＵ１３５は、図７の例ではページを跨いでオブジェクトが移動できるかどうかの条件としてオブジェクトやページの「高さ」を基準として用いる。図７の例では、ページの高さを（１００）、オブジェクト内に書かれている数値をオブジェクトの高さとしている。例えばページ８０１には既に高さ（５０）のオブジェクトが入っており、ページ下部の余白はページの高さ（１００）からオブジェクトの高さ（５０）を引いた値、（５０）である。このとき、実際に処理をする上では、ＣＰＵ１３５は、ページ上下のマージンやオブジェクト同士が重ならないように最低限確保するオブジェクト間の余白等を計算する。
図７の「１−Ａ」の処理では、まず、ＣＰＵ１３５は、ページの取得を行う（Ｓ７０１）。より具体的に「１−Ａ」の例では、ＣＰＵ１３５は、ページ８０１内のページ情報、特に高さの値（１００）を取得し、初期化を行う。サイズ情報等の他にも、ＣＰＵ１３５は、章情報、モノクロ／カラー情報、タイトルページ等特定のページを示す付加情報等も取得するようにしてもよい。また、初期ページとして取得の対象とするのは開始ページとして指定されたページ８０１以外のページ、例えばページ８０２等でもよいものとする。
ＣＰＵ１３５は、開始の状態（開始ページの状態）を状態Ａの値とする（Ｓ７０２）。なお、後述するように、状態Ａとは、高さの合計値のことであり、初期値は０（ゼロ）である。
【００２４】
ページの高さを取得した後に、ＣＰＵ１３５は、次の処理（移動）対象となるオブジェクトの取得を行う（Ｓ７０３）。図７の例では、ページ８０２の上部のオブジェクト８０８の取得を行う。
ＣＰＵ１３５は、取得したオブジェクトの高さ（５０）とページ８０１に存在するオブジェクトの高さ（５０）との合計値（１００）を求める（Ｓ７０４）。
ＣＰＵ１３５は、この時点では算出した合計値（１００）がページの高さ（１００）の値を超えていないため取得オブジェクトはページに収まると判断する（Ｓ７０５においてＹｅｓ）。
ＣＰＵ１３５は、空白ページができてなく（Ｓ７０９においてＮｏ）、未処理のオブジェクトが存在するため（Ｓ７０８においてＹｅｓ）、次のオブジェクト（ページ８０２下部のオブジェクト８０９）の取得を行う（Ｓ７０３）。
そして、ＣＰＵ１３５は、高さの合計値（１００）に取得したオブジェクト８０９の高さ（５０）を加える（Ｓ７０４）。
この結果、合計値（１５０）がページに収まらない（ページ高さ（１００）を超える）ため（Ｓ７０５においてＮｏ）、ＣＰＵ１３５は、あふれたオブジェクト８０９の高さ（５０）で合計値を再設定する（Ｓ７０６）。
これと同時に、ＣＰＵ１３５は、次のページ８０２の取得（高さ情報の取得）を行う（Ｓ７０７）。
【００２５】
以下、ＣＰＵ１３５は、ページ８０３、８０４に対しても同様に処理を行う。より具体的には、ページ８０３のオブジェクトの高さ（１００）は合計値（５０）と足すとページに収まらない。そのため、ＣＰＵ１３５は、合計値を（１００）で初期化し、初期化した合計値（１００）とページ８０４のオブジェクトの高さ（３０）との合計値（１３０）を出す。ＣＰＵ１３５は、合計値（１３０）はページに収まらないため合計値を（３０）で初期化する。
最後に、ＣＰＵ１３５は、ページ８０５のオブジェクトを取得した段階で現高さの合計値（３０）とページ８０５のオブジェクトの高さの合計値は６０なのでページに収まり、空白ページができたと判定できる（Ｓ７０９においてＹｅｓ）。ここで、空白ページができたとは、ページ８０５の全オブジェクトがページ８０４に収まるということである。
空白ページが出来たため、ＣＰＵ１３５は、開始ページ８０１から現ページ８０５までの範囲を結果として設定する（Ｓ７１０）。そして、ＣＰＵ１３５は、ページ範囲最終ページの状態Ａを結果８０７として保存する（Ｓ７１１）。本実施形態での状態Ａとは、計算していた高さの合計値（６０）のことであり、数値「６０」が保持される。この値は、ＣＰＵ１３５によってメモリユニット１３６上に格納され、必要に応じてＣＰＵ１３５から読み出される。
【００２６】
途中結果を持ち越して処理を再開する場合、つまり図７の「２−Ａ」の処理では、ＣＰＵ１３５は、先ほど保持した状態Ａ（結果８０７）で開始ページの状態を設定する（Ｓ７０２）。結果、８０７の余白部分にページ８０６のオブジェクトは収まらず（Ｓ７０５においてＮｏ）、未処理のオブジェクトが存在しない（Ｓ７０８においてＮｏ）。そのため、ＣＰＵ１３５は、これ以上ページ削減ができないことを示すフラグとページ範囲とを結果として返す（Ｓ７１２）。
本実施形態により、空白ページ５１１を効率的に生成することが可能となる。また、無駄にオブジェクトのレイアウト変更が行われないため、印刷品質の向上を図ることもできる。
【００２７】
＜実施形態２＞
実施形態１におけるレイアウト処理では、用紙１枚あたりに複数ページを割り付ける印刷を行う場合、端数ページが発生するという問題がある。つまり、４ページ割り付ける設定で、実施形態１の処理により１２ページが９ページに削減された場合、最終の用紙部分に１ページのみが配置され、自ずと用紙の４分の３が空白になる。その結果、用紙は減らせていないので、３ページ分のページ削減処理は行われなくてもよい。
本実施形態では、ＣＰＵ１３５は、予め最大で何ページ削減するかをシミュレートし、何ページになるまで削減を行えばよいかを示す削減到達目標ページ数を決定する。これによって、印刷体裁で指定された印刷体裁情報に従って適切なページ削減処理を実現できる。このときの印刷体裁とは、表裏印刷設定や割り付け数の設定等、印刷用紙に対して何ページ分のコンテンツが割り当てられるかを示している。なお、割り付け数は、用紙の一つの面に配置されるページの数を示す。そのため、４ページ割り付けとは、用紙の一つの面に４ページが配置されることを示す。
【００２８】
図９は、印刷体裁情報に合わせて削減ページ数を調整する処理の一例を示すフローチャートである。このフローチャートは図５のフローチャートに、ステップＳ９０１、Ｓ９０２が加えられたものである。
ステップＳ９０１において、ＣＰＵ１３５は、削減到達目標ページ数の算出を行う。この処理の詳細は後述するが、例えば用紙１枚の一つの面に２ページを割り付ける設定で、５ページの文書が３ページまで削減可能であった場合、削減到達目標ページ数は４となる。なお、より具体的にはこのステップの処理は、削減到達目標ページ算出部３０４が行う処理である。
ステップＳ９０２において、ＣＰＵ１３５は、ページ削減を行った結果、ドキュメントページが削減到達目標ページ数に到達したかどうかの判定を行う。なお、ページは削減できても、用紙数が減らない場合、ＣＰＵ１３５は、余白削減処理を行わず図９に示す処理を終了する。なお、図９におけるＳ４０３からＳ４０６は実施形態１で説明済みであるため省略する。
図９の処理により、文書データにおいて削減可能なページ数が削減到達目標ページ数に到達すると判定された場合、ページ削減処理が実行される。一方、削減可能なページ数が削減到達目標ページ数に到達しない判定された場合、ページ削減処理が実行されないように、ページ削減部が制御される。
【００２９】
図１０は、Ｓ９０１の処理の詳細を示すフローチャートである。ここでは、ＣＰＵ１３５は、図８のページ削減可能範囲算出の処理を用いて、何ページ削減可能かを調べ、その結果から削減到達目標ページ数を求める。
まずステップＳ１００１において、ＣＰＵ１３５は、フローチャートで使用する変数の値の初期化を行う。ここでのページ範囲ＬｉｓｔＸは、１ページ削減するために必要なページの範囲を表している。また、削減可能ページ数Ｓとは、処理対象のドキュメントが削減可能な最大ページ数を表している。ドキュメントのページ数Ｔは、ドキュメントの総ページ数を表している。
ステップＳ１００２において、ＣＰＵ１３５は、印刷体裁情報、ここでは用紙１枚当たりに何ページ割り付ける設定か、を取得する。例えば、用紙１枚の一つの面に４ページ割り付ける場合は割り付け数Ｎに４が設定される。
【００３０】
ステップＳ１００３〜Ｓ１００６の処理では、ＣＰＵ１３５は、以下の処理を行う。つまり、ＣＰＵ１３５は、最終ページに到達するまで、１ページ削減可能なページ範囲を求める（Ｓ１００３）。そして、ＣＰＵ１３５は、結果をＬｉｓtＸに代入する（Ｓ１００４）。なお、この処理は図６のＳ６０２−Ｓ６０３にて説明しているため省略する。そして、ＣＰＵ１３５は、最終ページに到達しておらず、かつ、削減できると判断する（削減可能な判定、範囲が返ってくる）（Ｓ１００５）度に、削減可能ページ数Ｓの値をひとつ増加させていく（Ｓ１００６）。
ステップＳ１００５において最終ページに到達した（又はページ削減ができない）と判断された場合、ＣＰＵ１３５は、ステップＳ１００７へと処理を進める。
ステップＳ１００７において、ＣＰＵ１３５は、最終ページに到達した際に、総ページ数Ｔと削減可能ページ数Ｓとの差分を、割り付け数Ｎで割って端数を切り上げた値を削減目標値として設定する。例えば、ドキュメントのページ数Ｔが１０で、削減可能ページ数Ｓが３で、割り付け数Ｎが４の場合、「（Ｔ−Ｓ）  ／Ｎ」の値は１．７５となる。この値の端数を切り上げた２に、割り付け数Ｎの４をかけた値８が削減到達目標ページとなる。
つまり、本実施形態により処理ページが存在する場合、削減到達目標ページ数に到達するまでページ削減処理が実行されることになる。これらの処理によって印刷体裁情報に従って、適切なページ削減処理を実現することができる。
【００３１】
＜実施形態３＞
実施形態１の処理では、ドキュメントの最終ページはページ削減処理の対象外になることが多い。しかしながら、ドキュメントの最終ページは余白を多く含む傾向にあるため余白削減処理に加えた方がより少ないページ数でページを削減することができる。例えば、図１１の（α）は実施形態１の処理を行った際の結果を表している。実施形態１の処理ではドキュメントの最終４ページ１２０１〜１２０４のうちページ１２０１〜１２０３の３ページが対象となり（α）の結果が得られる。しかしページ１２０３、１２０４の２ページを対象としても（β）のようにページ削減を行うことができる。
本実施形態では、ＣＰＵ１３５は、実施形態１の処理の後、もう一度、最終ページから逆方向にページ削減可能範囲算出処理を行うことで、より少ないページ数で処理が行える可能性を探索する。
【００３２】
図１２は、実施形態１と本実施形態との処理の差分の処理を示すフローチャートである。図１２の処理は図６のＳ６１０の下部に挿入される。このときの例を、図１３を用いて説明する。
図１３のＰｒｏｃｅｓｓ：［Ｎ−３］、Ｐｒｏｃｅｓｓ：［Ｎ−２］の処理はＣＰＵ１３５が行う実施形態１の処理である。実施形態１では、処理「［Ｎ−２］−Ａ」の処理で、ＣＰＵ１３５は、ページ１３０１をページ削減処理の対象から外して処理を終える（Ｓ６１０）。
本実施形態では、処理「［Ｎ−１］−Ｂ」として、ＣＰＵ１３５は、ドキュメントの最終ページからページ削減可能範囲（第３のページ範囲）の探索を行う（Ｓ１１０１）。探索の結果、ページ１３０４、１３０５の２ページでページ削減可能であると判定される。ＣＰＵ１３５は、この結果と処理対象ページとの比較を行い（Ｓ１１０２）、探索の結果、ページ１３０４、１３０５の方が処理対象となるページ数が少ない場合は、除外ページの切り替えを行う。
【００３３】
図１３の例では、直前の処理「［Ｎ−３］−Ｂ」で処理の対象となったページ数（ページ１３０２〜１３０４の３ページ）よりも「［Ｎ−１］−Ｂ」で処理の対象となったページ数（ページ１３０４、１３０５の２ページ）の方が少ない。そのため、ＣＰＵ１３５は、Ｐｒｏｃｅｓｓ：［Ｎ−１］の時点で除外ページとして設定されているページ１３０５を処理対象ページとし、直前の処理「［Ｎ−３］−Ｂ」で処理対象とされていたページ１３０２、１３０３を除外ページとして設定する。このとき、ページ１３０４は直前の処理「［Ｎ−３］−Ｂ」で処理対象とされているものの別の処理「［Ｎ−１］−Ｂ」で処理対象となっている。そのため、ＣＰＵ１３５は、ページ１３０４を除外ページとはしない。
なお、より具体的には図１２の処理は、最終ページ判定部３０１が行う処理である。
これらの処理によって、処理ページ数を節減する判定を行うことができる。
【００３４】
＜実施形態４＞
実施形態１におけるレイアウト処理では、オブジェクトの移動処理でページ削減ができるかどうかを判定していた。しかしながら、ページ間で小さいオブジェクトが少量ずつ移動していき、処理が多数のページに波及する場合には対応できなかった。図１４のドキュメントの例でページ削減するためには、最終的にページ１６０３内のオブジェクトをページ１６０２の余白部に移動させなければならない。しかしそのためにはオブジェクト１６０５をページ１６０１に移動しなければならず、更にそのためにはオブジェクト１６０４を別ページに移動させなければならないといった具合にオブジェクトの移動処理が先頭ページまで波及してしまっている。
本実施形態では、ＣＰＵ１３５は、ページ内のオブジェクトに縮小処理をかけることで（図１４のページ１６０６）、編集ページの節減を行う。
【００３５】
図１５、図１６は、実施形態１と本実施形態との処理の差分の処理を示すフローチャートである。図１５は、図８のステップＳ７０４の直下に挿入され、図１６は図５のステップＳ４０５と置き換えられる。この説明の際に図１４を用いる。
図１５において、まず、ＣＰＵ１３５は、逆方向のページ削減可能範囲の探索か否か判定を行う（Ｓ１４０１）。逆方向の処理であると判断すると（Ｓ１４０１においてＹｅｓ）、ＣＰＵ１３５は、移動対象のページ内のオブジェクトが予め設定されている閾値以下の縮小率でページに収まるか否か判断する（Ｓ１４０２）。移動対象のページ内のオブジェクトが予め設定されている閾値以下の縮小率でページに収まると判断された場合（Ｓ１４０２においてＹｅｓ）、ＣＰＵ１３５は、ページに縮小フラグを設定する（Ｓ１４０３）。ＣＰＵ１３５は、縮小フラグをメモリユニット１３６に格納されているドキュメントのページ部に書き込む。このとき、このデータは縮小ページリストとしてメモリユニット１３６上に設定されてもよいし、記憶装置１３９に保存されたデータに付加情報として書き込まれてもよい。また、Ｓ１４０２のオブジェクト縮小の判定で用いられる値は、ユーザが記憶装置１３９に予め初期情報として設定した値が用いられる。それ以外にも、ＣＰＵ１３５は、設定画面を表示し、そこでユーザによって設定された値を用いるようにしてもよい。
なお、より具体的には図１５の処理は、余白削減処理の縮小判定部３０２が行う処理である。
【００３６】
図１６において、ＣＰＵ１３５は、余白削減処理を行う際に前記ページ縮小フラグが設定されているかどうかを判定する（Ｓ１５０１）。フラグが設定されていた場合（Ｓ１５０１においてＹｅｓ）、ＣＰＵ１３５は、図１４のページ１６０６のようにオブジェクトに縮小処理をかけながら余白削減処理を行う（Ｓ１５０２）。ページ縮小フラグが設定されていない場合（Ｓ１５０１においてＮｏ）、ＣＰＵ１３５は、通常の余白削減処理を行う（Ｓ１５０３）。
以上の操作で、小さいオブジェクトが複数ページに波及して行われる場合でも効果的に編集ページの節減を行うことができる。
【００３７】
＜実施形態５＞
実施形態１のページ削減処理の判定では、オブジェクトの高さでオブジェクトがページ間の移動が可能かを判断していたが、現実には高さの判断だけでは移動可否を検出できない場合、或いは移動を抑制したい場合が考えられる。高さだけでは移動可否を検出できない場合の例として図１７の（ａ）が挙げられる。オブジェクト１８０２の高さは空白スペース１８０３の高さに収まるが、オブジェクト１８０２の幅はページ１８０１の幅よりも大きいため、オブジェクト１８０２はページ１８０１に移動することができない。
また、移動を抑制したい場合の例として図１７の（ｂ）、（ｃ）が挙げられる。図１７の（ｂ）の例について、ページ１８０４はモノクロのページ、ページ１８０５がカラーページとして考える。この場合、ページ１８０５のカラーオブジェクトがページ１８０４に入ることで、ページ１８０４がカラーページ扱いとなってしまう。印刷コストの高いカラーページは増やしたくない場合、このようなオブジェクトの移動処理は抑制した方がよい。また、図１７の（ｃ）のようにページ１８０６とページ１８０７とが章を跨ぐ場合、章ごとのコンテンツ内容が混じらないようにこのページ間での移動を抑制したい場合が考えられる。このとき、章情報は本実施形態の処理を実現するソフトウェアの上位のソフトウェアから別途入力されるものとする。また、ドキュメントが構造化されている、或いは、ドキュメントの付加情報として予め設定されており、ＣＰＵ１３５によって読み出しが可能であるものとしてもよい。
【００３８】
図１８は、実施形態１と本実施形態との処理の差分の処理を示すフローチャートである。図１８の処理は図８のＳ７０５の処理の直前に挿入される。ここでは、ＣＰＵ１３５は、移動対象のオブジェクトが移動先ページの横幅に収まるかの判定（Ｓ１７０２）を行っている。また、ＣＰＵ１３５は、余白削減処理の結果、カラーページが増えるかどうかの判定（Ｓ１７０４）を行っている。更に、ＣＰＵ１３５は、余白削減処理の対象ページが章を跨いでいないかどうかの判定（Ｓ１７０６）を行っている。ここで、何れかの条件で移動できない判断がされた場合は、ＣＰＵ１３５は、オブジェクトがページに収まらない旨の判定結果を返す。このことで、移動を抑制する。これらの判定を行うかどうかはユーザが図１９のＵＩ（画面）上から設定することもできる。ＵＩ上のチェックボックス１９０１、１９０２、１９０３は、それぞれ図１８のステップＳ１７０１、Ｓ１７０３、Ｓ１７０５と対応している。チェックが入っていれば設定が有効であるとして、ＣＰＵ１３５は、その判定を行う。
なお、より具体的には図１８の処理は、余白削減処理の拡張判定部３０３が行う処理である。
これらの処理を行うことで、高さの判断だけでは移動可否を検出できない場合、或いは移動を抑制したい場合でも効果的に編集ページの節減を行うことができる。
【００３９】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００４０】
以上、上述した各実施形態によれば、効率的なページ削減処理を実現することができる。また、ページ削減に係る処理時間を削減すると共にレイアウト品質の低下を防ぐことができる。
【００４１】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図１】
0005963474.tif 000002
【図２】
0005963474.tif 000003
【図３】
0005963474.tif 000004
【図４】
0005963474.tif 000005
【図５】
0005963474.tif 000006
【図６】
0005963474.tif 000007
【図７】
0005963474.tif 000008
【図８】
0005963474.tif 000009
【図９】
0005963474.tif 000010
【図１０】
0005963474.tif 000011
【図１１】
0005963474.tif 000012
【図１２】
0005963474.tif 000013
【図１３】
0005963474.tif 000014
【図１４】
0005963474.tif 000015
【図１５】
0005963474.tif 000016
【図１６】
0005963474.tif 000017
【図１７】
0005963474.tif 000018
【図１８】
0005963474.tif 000019
【図１９】
0005963474.tif 000020