(57)【特許請求の範囲】
【請求項１】
複数ページで構成される文書データに含まれるオブジェクトの配置を変更する情報処理装置であって、
各印刷用紙に対して前記文書データを所定のページ数ずつ割り当てて印刷する集約印刷のための情報を含む印刷体裁情報を取得する印刷体裁取得手段と、
前記文書データに含まれるオブジェクトの配置を変更することによって前記文書データを構成する複数ページを最大限削減する場合の最大削減ページ数を算出する最大削減数算出手段と、
前記文書データに含まれる総ページ数と前記最大削減ページ数と前記印刷体裁情報とに基づいて、前記集約印刷がされる場合に前記印刷用紙に空白のページを出さずに前記印刷用紙を最大限削減する場合の削減目標ページ数を算出する印刷目標ページ数算出手段と、
前記削減目標ページ数までページが削減されるように前記文書データに含まれるオブジェクトの配置を変更することにより、前記文書データを構成するページを削減するページ削減手段とを備える
ことを特徴とする情報処理装置。
【請求項２】
前記文書データに含まれる複数のオブジェクトのうち、近傍に位置するオブジェクト同士をグループ化して複数のグループを生成するグループ生成手段を更に備え、
前記最大削減数算出手段は、前記文書データに含まれるオブジェクトの配置を、前記グループ生成手段で生成されたグループ単位で変更することによって前記文書データを構成する複数ページを最大限削減する場合の最大削減ページ数を算出する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記印刷体裁情報は、前記集約印刷のための情報と、両面印刷を行うか否かの情報とを含む
ことを特徴とする請求項１記載の情報処理装置。
【請求項４】
ページを削減する場合に処理対象となる前記文書データのページの組み合わせと、各組み合わせに対する削減の優先度とを示すリストを生成する削減ページリスト生成手段をさらに備え、
前記ページ削減手段は、前記生成されたリストの優先度に基づいて削減処理の対象となるページの順を特定して、前記削減目標ページ数までページが削減されるように前記文書データに含まれるオブジェクトの配置を変更することにより、前記文書データを構成するページを削減する
ことを特徴とする請求項１記載の情報処理装置。
【請求項５】
複数ページで構成される文書データに含まれるオブジェクトの配置を変更する情報処理装置の制御方法であって、
前記情報処理装置の印刷体裁取得手段が、各印刷用紙に対して前記文書データを所定のページ数ずつ割り当てて印刷する集約印刷のための情報を含む印刷体裁情報を取得する印刷体裁取得工程と、
前記情報処理装置の最大削減数算出手段が、前記文書データに含まれるオブジェクトの配置を変更することによって前記文書データを構成する複数ページを最大限削減する場合の最大削減ページ数を算出する最大削減数算出工程と、
前記情報処理装置の印刷目標ページ数算出手段が、前記文書データに含まれる総ページ数と前記最大削減ページ数と前記印刷体裁情報とに基づいて、前記集約印刷がされる場合に前記印刷用紙に空白のページを出さずに前記印刷用紙を最大限削減する場合の削減目標ページ数を算出する印刷目標ページ数算出工程と、
前記情報処理装置のページ削減手段が、前記削減目標ページ数までページが削減されるように前記文書データに含まれるオブジェクトの配置を変更することにより、前記文書データを構成するページを削減するページ削減工程と
を備えることを特徴とする情報処理装置の制御方法。
【請求項６】
コンピュータを、請求項１乃至４のいずれか１項に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷された文書の総ページ数を削減する情報処理装置、情報処理装置の制御方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
文書を印刷する際に、用紙節約のため、元文書のデータを加工し、再レイアウトする技術が提案されている。具体的には、行間や、図と図の隙間といったコンテンツ間の余白を詰めることで、削除可能な空白のみを有するページを作成する技術が提案されている。下記の特許文献１は、原稿の総ページ数を求め、総ページ数が用紙の面に配置されるページ数で割り切れるか否かを判断する。そして、割り切れないと判断された場合に、用紙の面に配置されるページ数で割り切れるように原稿のレイアウトを変更する画像形成方法を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１５０６９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１が開示する画像形成方法は、印刷用紙を節約するために、単に総ページ数を用紙の面に配置されるページ数で割ったときの余りのページ数を減らす。したがって、この画像形成方法によれば、印刷用紙に複数のページを割り当てる集約印刷をした場合、最終印刷用紙の一部に空白ページが生じるという問題があった。例えば、１枚の印刷用紙の面に４ページを配置するとき、レイアウトを変更してページ数を削減した場合、最終印刷用紙に３ページのみが配置され、１ページ分の空白が生じる可能性がある。
【０００５】
本発明は、集約印刷をする場合にも印刷用紙に空白ページを生じさせないようにページ削減処理を行う情報処理装置、情報処理装置の制御方法、及びコンピュータプログラムの提供を目的とする。
【課題を解決するための手段】
【０００６】
本発明の一実施形態の情報処理装置は、複数ページで構成される文書データに含まれるオブジェクトの配置を変更する情報処理装置であって、各印刷用紙に対して前記文書データを所定のページ数ずつ割り当てて印刷する集約印刷のための情報を含む印刷体裁情報を取得する印刷体裁取得手段と、前記文書データに含まれるオブジェクトの配置を変更することによって前記文書データを構成する複数ページを最大限削減する場合の最大削減ページ数を算出する最大削減数算出手段と、前記文書データに含まれる総ページ数と前記最大削減ページ数と前記印刷体裁情報とに基づいて、前記集約印刷がされる場合に前記印刷用紙に空白のページを出さずに前記印刷用紙を最大限削減する場合の削減目標ページ数を算出する印刷目標ページ数算出手段と、前記削減目標ページ数までページが削減されるように前記文書データに含まれるオブジェクトの配置を変更することにより、前記文書データを構成するページを削減するページ削減手段とを備える。
【発明の効果】
【０００７】
本発明の情報処理装置によれば、印刷用紙に複数のページを割り当てる集約印刷をした場合であっても、最終印刷用紙の一部に空白ページが生じるのを防止することができるという効果がある。
【図面の簡単な説明】
【０００８】
【図１】本実施形態のシステム構成例を示す図である。
【図２】プロセッサによるオブジェクト情報の管理例を説明する図である。
【図３】オブジェクトの情報の例を示す図である。
【図４】文書データ構造の一例を示す図である。
【図５】コンピュータの機能ブロック図の一例である。
【図６】実施形態１によるページ削減処理を示すフローチャートである。
【図７】実施形態１による再レイアウトの例を説明する図である。
【図８】削減可能なページ数を算出する処理を示すフローチャートである。
【図９】削減可能なページ数の算出例を説明する図である。
【図１０】オブジェクトのグループ化処理を示すフローチャートである。
【図１１】オブジェクトのグループ化処理の例を説明する図である。
【図１２】ページの最大削減数を算出する処理を示すフローチャートである。
【図１３】削減目標ページ数を算出する処理を示すフローチャートである。
【図１４】優先度を設定してページを削減する処理の例を説明する図である。
【図１５】優先度を設定して削減するページの候補を探索する処理を示すフローチャートである。
【図１６】ページを探索して優先度を設定する処理の例を説明する図である。
【発明を実施するための形態】
【０００９】
図１は、実施形態１のシステム構成例を示す図である。図１に示すシステムは、コンピュータ１と、プリンタ２と、ディスプレイ装置３とを備える。コンピュータ１は、本実施形態の情報処理装置である。コンピュータ１は、印刷レイアウト済みの文書データについて間締め処理を実行する。間締め処理は、文書データに含まれる行間等の空白部を詰める処理である。コンピュータ１が間締め処理を実行することにより、文書の総ページ数を削減することができる。また、コンピュータ１は、プリンタ２に対して上記間締め処理された文書データを送信し、この文書データを印刷させる。また、コンピュータ１は、ディスプレイ装置３に対して各種の表示データを送信し、この表示データを表示させる。本実施形態において、文書データは、例えばＰＤＦ（Portable Document Format）等の、ページに配置されるオブジェクトを含むデータである。プリンタ２は、コンピュータ１からの指示に従って文書データを印刷する。また、ディスプレイ装置３は、コンピュータ１からの指示に従って表示データを表示する。
【００１０】
コンピュータ１は、プロセッサ１１、Ｉ／Ｏ（Input/  Output）インタフェース１２、１６、メモリ１３を備える。また、コンピュータ１は、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory ）ドライブ１４、ビデオインタフェース１５、記憶装置１７を備える。プロセッサ１１乃至記憶装置１７は、システムバス１８を介して互いに接続されている。プロセッサ１１は、コンピュータ１全体を制御する。プロセッサ１１は、例えば、ＣＰＵ（Central Processing Unit ）である。プロセッサ１１は、ネットワークインタフェース１６及びＩ／Ｏインタフェース１６を通じてネットワーク１９から文書データを外部装置から受信する。プロセッサ１１が、受信した文書データを解析する。この文書データの解析結果は、例えば、オブジェクトリストを含む。オブジェクトリストは、オブジェクト情報のリストである。オブジェクト情報は、文書データに含まれるオブジェクトに関する情報である。プロセッサ１１は、オブジェクトリストを記憶装置１７に記憶して管理する。本実施形態に特有の動作として、プロセッサ１１は、上記文書データの解析結果に基づいて文書データをブロック化し、該ブロック化結果に基づいて文書データの段組構成を検知する。そして、プロセッサ１１は、検知した段組構成に応じて、文書データに含まれるブロック間の空白を詰める間締め処理を行う。
【００１１】
Ｉ／Ｏインタフェース１２は、キーボード４、マウス５を介して入力された情報をコンピュータ１に入力する。Ｉ／Ｏインタフェース１６は、コンピュータ１からプリンタ２に対する文書データの送信を媒介する。また、Ｉ／Ｏインタフェース１６は、ネットワークを通じて外部装置と通信する。ネットワークは、例えば、ＬＡＮ（Local Area Network）や、ＷＡＮ（Wide Area Network ）等である。
【００１２】
メモリ１３は、ＲＡＭ（Random Access Memory）とＲＯＭ（Read Only Memory）とを備える記憶手段である。ＲＡＭは、プロセッサ１１が処理に用いる作業領域を有する。ＲＯＭには、コンピュータ１の制御方法を実現するためのコンピュータプログラムとデータとが予め記憶されている。ＣＤ−ＲＯＭドライブ１４は、不揮発性の記憶媒体であるＣＤ−ＲＯＭが格納される装置である。ビデオインタフェース１５は、コンピュータ１からディスプレイ装置３への表示データの送信を媒介する。記憶装置１７は、例えば、文書データやオブジェクトリストを記憶する。図１に示す例では、記憶装置１７は、ＨＤＤ（Hard Disk Drive ）とＦＤＤとを備える。ＦＤＤは、Ｆｌｏｐｐｙ（登録商標）  Ｄｉｓｋ  Ｄｒｉｖｅの略語である。記憶装置１７が、磁気テープドライブを備えるようにしてもよい。
【００１３】
図２は、プロセッサによるオブジェクト情報の管理例を説明する図である。プロセッサ１１は、オブジェクト情報をリスト構造の形式でオブジェクトリスト２０１に格納する。各々のオブジェクト情報は、オブジェクトＩＤ２０３、オブジェクト種類２０４、左上座標２０５、右下座標２０６、オブジェクト固有情報２０７を含む。オブジェクトＩＤ２０３は、オブジェクトを一意に識別する識別子である。オブジェクト種類２０４は、オブジェクトの種類を示す。オブジェクトの種類は、例えば、図形、文字列、イメージ、グループ等を含む。オブジェクト種類２０４に設定されているグループは、このオブジェクト種類２０４に対応するオブジェクトが、複数のオブジェクトがグループ化されたものであることを示す。グループ化とは、２つ以上のオブジェクトをひとまとめにして、一つのオブジェクトとする処理のことを指す。このひとまとめにされたオブジェクトをグループと呼称する。グループ化の対象となるオブジェクトとは、文字や画像を始めとするあらゆるオブジェクトである。もちろん、グループそのものもグループ化の対象となり、その場合、グループに対応するオブジェクト情報は階層的に保持される。オブジェクトがグループ化された場合、オブジェクト情報内のオブジェクトＩＤはブロックのＩＤを示す。なお、本実施形態において、１つのオブジェクトからなるグループや内部にオブジェクトを保持しないグループも構造上可能である。
【００１４】
左上座標２０５はオブジェクトの左上座標を示す。右下座標は、オブジェクトの右下の座標を示す。オブジェクト固有情報２０７は、オブジェクトに固有の属性情報を示す。オブジェクト固有情報２０７は、例えばオブジェクトの種類が図形である場合の線の太さ、線種等を示す情報である。また、オブジェクト固有情報２０７は、例えばオブジェクトの種類が文字列である場合の文字の書体、サイズ等を示す情報である。オブジェクト情報内のオブジェクト種類２０４にグループが設定されている場合、オブジェクト固有情報２０７には、オブジェクトリスト２０２へのポインタ情報が設定される。オブジェクトリスト２０２内のオブジェクト情報は、上記オブジェクト情報に対応するグループ化されたオブジェクトに含まれるオブジェクトのオブジェクト情報である。
【００１５】
図３は、オブジェクト情報の例である。例えば、図３（Ｂ）に示すオブジェクト情報は、図３（Ａ）中に示す、左上座標が（２０，３４），右下座標が（８１，６５）である矩形の図形オブジェクトを示す。図４は、本実施形態において処理対象となる文書データの構造の一例を示す図である。コンピュータ１は、例えば図４（Ａ）に示すＰＤＦフォーマット文書を処理対象とする。図４（Ａ）に示すＰＤＦフォーマット文書は、始点（２０，３４）から、順次、（８１，３４）、（８１，６５）、（２０，６５）、（２０，３４）を結ぶ図形を示す。図４（Ｂ）は、図４（Ａ）に示すＰＤＦフォーマット文書から読み込まれた図形オブジェクトに対応するオブジェクト情報を示す。このオブジェクト情報は、左上座標（２０，３４）、右下座標（８１，６５）の長方形に対応する図形オブジェクトを示す。
【００１６】
図５は、コンピュータの機能ブロック図の一例である。コンピュータ１は、印刷体裁取得部５０１、グループ生成部５０２、最大削減数算出部５０３、印刷目標ページ数算出部５０４、削減ページリスト生成部５０５、ページ削減部５０６を備える。本実施形態では、図１に示すメモリ１３内のＲＯＭに印刷体裁取得部５０１からページ削減部５０６までの機能を実現するコンピュータプログラムが予め記憶されている。プロセッサ１１が、ＲＯＭ内の上記コンピュータプログラムを読み出して実行することにより、本実施形態の情報処理装置の制御方法が実現される。
【００１７】
印刷体裁取得部５０１は文書データの印刷体裁情報を取得する。グループ生成部５０２は、文書データの各ページ内において近傍に位置するオブジェクト同士をグループとしてまとめる。最大削減数算出部５０３は、ページ削減処理を限界まで行った場合に最大で何ページを削減することが可能なのかを算出する。印刷目標ページ数算出部５０４は、削減可能なページ数と印刷体裁情報に基づいて、印刷用紙の最終ページに空白ページを出さずに印刷用紙を最大限削減するためには何ページを削減することが可能なのかを算出する。削減ページリスト生成部５０５は、削減すべきページのリストを作成するとともに、優先的に削減すべきページの組み合わせを決定する。ページ削減部５０６は、ページのリストに基づいて、ページを削減する。
【００１８】
図６は、本発明の実施形態１の情報処理装置のページの削減処理を示すフローチャートである。図７は、ページの削減処理の具体例を示す図である。以下、図６のフローチャートを、図７を参照しながら説明する。なお、以下の説明において、印刷用紙とは、文書を印刷されたときの用紙をいうものとし、ページとは文書データにおけるページをいう。なお、本願のフローチャートはＣＰＵ１１がメモリから関連するプログラムを読み出して実行することで実現される。
【００１９】
まず、コンピュータ１の印刷体裁取得部５０１が文書データの印刷体裁情報を取得する（ステップＳ６０１）。印刷体裁情報は、各印刷用紙の面に複数ページを割り当てる集約印刷におけるページ割り当て情報や両面印刷を行うか否かの情報を含む、印刷用紙１枚当たりに何ページが配置されるかを示す情報である。次に、グループ生成部５０２は、文書データの各ページ内において近傍に位置するオブジェクト同士をグループとしてまとめる（ステップＳ６０２）。例えば、図７において、グループ生成部５０２は、ページ７０１に存在する各行ごとの文字オブジェクトや図形オブジェクトをグループ７０６、７０７としてまとめる。
【００２０】
次に、最大削減数算出部５０３は、ページ削減処理を限界まで行った場合に最大で何ページを削減することが可能なのかを算出する（ステップＳ６０３）。例えば、図７では、ページ７０１〜７０５の５つに対してページ数の削減を行う場合、最大削減数算出部５０３は文書７１２に示すように「２ページ」を削減可能であると算出する。次に、印刷目標ページ数算出部５０４は、ステップＳ６０３で算出した削減可能なページ数（すなわち、「２ページ」）とステップＳ６０１で取得した印刷体裁情報に基づいて、次の処理を行う。すなわち、印刷目標ページ数算出部５０４は、最終印刷用紙に空白ページを出さずに、印刷用紙を最大限削減するためには何ページ分の印刷用紙を削減することが可能なのかを算出する（ステップＳ６０４）。ここでいう空白ページとはいわゆる端数ページ、すなわち集約印刷時における最終印刷用紙に配置されたページのうち空白のページをいう。例えば、図７に示す文書７１２では、１枚の印刷用紙上に４ページを割り付けたとしても、３ページしか存在しないため、１ページ分の空白ページが発生する。このため、印刷目標ページ数算出部５０４は、２ページ削減するのではなく、１ページ削減するのが適当であると判断し、「１ページ」を削減目標ページ数に設定する。
【００２１】
次に、ページ削減部５０６は、ステップＳ６０４で求めた削減目標ページ数がゼロ以上か否かを判定し（ステップＳ６０５）、削減目標ページが存在する場合はステップＳ６０６に移行する。削減目標ページ数がゼロである場合とは、ページ数の削減ができない場合、あるいはページ数は削減できるものの結果として印刷用紙を減らす事ができない場合をいう。削減目標ページ数がゼロの場合は、フローを終了する。
【００２２】
次に、ページ削減部５０６は、ページリスト（詳細は後述する）に基づいて、ページ削減処理を行う（ステップＳ６０６）。ページ削減処理とは、例えばページ７０２、７０３の２ページを対象とした場合、グループ７０８〜７１０の下にグループ７１１を移動させることでページ７１５を空白ページにする処理を指す。グループ７１１をグループ７１０の下に移動できない場合は、ページ削減部５０６はグループ７０８〜７１０の間に存在する空白（余白）を詰めた後にグループ７１１を移動させる。空白を詰める際には、ページ削減部５０６はあらかじめ設定されている必要最低限の空白を残すものとし、必要に応じてページ上端とグループ７０８の間の空白も詰める。
【００２３】
ページ削減部５０６は、２ページ間のグループの移動によってもページの削減ができない場合は、ページ７０３内のグループを上から順に可能な限り移動する。複数のページを対象としたページ削減処理は、グループの移動操作を全ページに対して繰り返し行うことによって行う。この際、通常はページ先頭から削減目標ページ数となるまでページ削減処理を行い、図７に示すページ７１３〜７１７のような結果を得る。しかし、場合によっては、文書の末尾から順にページ削減処理を行ってもよい。
【００２４】
図８は、実施形態１のコンピュータ１のグループ生成部５０２がページ内の近傍に位置するオブジェクト同士をグループ化し、全ページ分のグループのリストを生成する処理を示す。図９は、実施形態１によるグループのリストを生成する処理の具体例を示す図である。
【００２５】
まず、グループ生成部５０２は未処理のページを順次取得していく（ステップＳ８０１）。ページの情報はドキュメント情報９１１にリストとして格納されており、グループ生成部５０２はこのドキュメント情報９１１に従ってページ先頭から順に取得する。次に、グループ生成部５０２は、ページ内において近傍に位置するオブジェクト同士をグループにまとめる（ステップＳ８０２）。例えば、図９の例では、グループ生成部５０２は、ページ９０１のオブジェクトをグループ９０３、９０４としてまとめる。この際、グループ生成部５０２はページ情報９１２の内容を更新し、グループのリストを作成する。グループのリストとは、グループという属性を持ったオブジェクトをいうが、以下の説明では単にグループと呼称する。グループのリスト９１３にはグループ内に存在するオブジェクトをリスト９１５として管理しており、ここからグループ内のオブジェクトに対する編集操作や情報の取得を行うことができる。
【００２６】
グループ生成部５０２は、続いてグループの生成を行うと同時にグループ情報リスト９１８を作成する（ステップＳ８０３）。このグループ情報リスト９１８は、全てのページのグループを順次取得できるようにするために作成されるもので、グループのリスト９１３の末尾グループの直後にリスト９１４の先頭リストが続く構造を有する。概略としては、図９の９０６の例のように、ページ移動を行うことなく、次々とドキュメント上のグループにアクセスできる状態となる。このグループ情報リスト９１８内のグループ９２３には、該当グループにアクセスする際に必要な格納ページ番号やグループの持つオブジェクトＩＤを始めとする情報がグループ情報リスト９１９として格納されている。グループ生成部５０２は、続いて未処理のページが存在するかどうかの判定を行う（ステップＳ８０４）。未処理ページが存在する場合は、ステップＳ８０１に移行し、未処理ページが存在しない場合はフローを終了する。
【００２７】
図１０は、ＰＤＦデータ構造の文書、すなわちオブジェクトの読み出し順序がランダムである文書に対して、本発明の実施形態１のコンピュータ１がグループの生成を行うフローを示す。図１１は、実施形態１によるＰＤＦデータ構造に対する処理の具体例を示す図である。図１１において、ページ１１０１内において、文書内の各単語が別々のオブジェクトに分断されており、かつオブジェクトが取得できる順序もランダムとなっている。グループ生成部５０２は、ページ１１０１内のこれらオブジェクトをグループにまとめる処理を行う。
【００２８】
まず、グループ生成部５０２は、このＰＤＦデータ構造に対して未処理のオブジェクトのうち、先頭のオブジェクトを読み込む（ステップＳ１００１）。次に、グループ生成部５０２は、読み込んだオブジェクトが既に読み込まれているオブジェクトとＹ軸上で重なっているか否かを判断する（ステップＳ１００２）。例えば、オブジェクト１１０５が読み込まれた場合、既に読み込まれているオブジェクト１１０４とＹ軸上で重なっていないため、グループ生成部５０２はオブジェクト１１０４、１１０５を別々のグループとする（ステップＳ１００３）。次に、オブジェクト１１０８が読み込まれると、オブジェクト１１０８はオブジェクト１１０６とＹ軸上で重なるため、グループ生成部５０２は、重なっているオブジェクト１１０６及び１１０８を１つのグループ１１０９にまとめる（ステップＳ１００４）。オブジェクト１１０６がグループオブジェクトであった場合は、グループ生成部５０２は、一旦グループ化を解除してからオブジェクト１１０８を加え、再度グループ化を行う。また、読み込まれたオブジェクト１１０８がページ上の複数のオブジェクト、例えばオブジェクト１１０６、１１０７の両方と重なっていた場合、グループ生成部５０２は重なっている全てのオブジェクト１１０６、１１０７、１１０８をグループ化する。
【００２９】
次に、グループ生成部５０２は、そのページ内に未処理のオブジェクトが存在しているかどうかを判定する（ステップＳ１００５）。未処理のオブジェクトが存在する場合は、再度ステップＳ１００１に戻り、グループ生成部５０２がそのオブジェクトを読み込む。これらの処理を繰り返すことによって、複数のオブジェクトがランダムに読み出されるページ１１０１が複数のオブジェクトがＹ軸に沿ってグループ化されたページ１１０２に再構成される。
【００３０】
全てのオブジェクトの処理を終えたらステップＳ１００６に移り、グループ生成部５０２はページに配置されたオブジェクト間の全空白を走査する。次に、グループ生成部５０２は、走査した値のうち既定の閾値以下の値を持つ空白を抽出する（ステップＳ１００７）。次に、グループ生成部５０２は、抽出された空白が閾値以下であるところの隣接したグループ同士をグループ化する（ステップＳ１００８）。これによってページ１１０２がページ１１０３のように再構成される。
【００３１】
図１２は、本発明の実施形態１であるコンピュータ１における最大削減数算出部５０３が文書を最大で何ページまで削減できるか（すなわち最大削減ページ数）を算出する処理を示すフローである。図７の文書７１２の例では、最大削減数算出部５０３は２ページ削減することが可能であると算出する。この処理を概略的に説明すると、最大削減数算出部５０３は文書内の全てのグループを配置するために何ページ必要であるかを求める。すなわち、文書７１２の例では、最大削減数算出部５０３が全てのコンテンツの配置には３ページが必要であるということを求め、総ページ数である５ページから必要ページ数である３ページを引くことで、２ページ分を削減することが可能であると算出する。この処理は具体的には以下のように行われる。
【００３２】
まず、最大削減数算出部５０３は、グループ情報リスト９１８を用いてその文書データ内に存在する次のグループを取得する（ステップＳ１２０１）。次に、最大削減数算出部５０３は、取得したグループの高さを合計値に加えた値を求める（ステップＳ１２０２）。具体的には、初期状態ではグループの高さの合計値の値はゼロである。最初にステップＳ１２０１が実行されると、合計値は最初に取得したグループの高さ（例えば図９におけるグループ９０７の高さ）となる。２回目にステップＳ１２０１が実行されると、２つめのグループ９０８が取得され、合計値は２つのグループ９０７、９０８の高さを合計した値となる。ここでの合計値は、単純に各グループの高さを合計したものではなく、例えばグループ間の空白等のページに配置する上で必要な空白分の値も含まれている。
【００３３】
最大削減数算出部５０３は、求めた合計値がページの高さを超えるか否かを判定する（ステップＳ１２０３）。図９の例において、ステップＳ１２０１の処理によってグループ９１０まで取得されたとき、グループの高さの合計値、すなわちグループ９０７〜９１０の高さの合計値が１ページの高さを上回る。この場合はステップＳ１２０４に移行する。一方、ステップＳ１２０１の処理によって取得されたグループがグループ９０８又は９０９である状態では、合計値がページの高さより小さいため、ステップＳ１２０６に戻って、最大削減数算出部５０３は次のグループを取得する。
【００３４】
ステップＳ１２０４において最大削減数算出部５０３がグループ９１０を取得すると、最大削減数算出部５０３は合計値（グループ９０７〜９１０の高さの合計値）をゼロにリセットして、合計値をグループ９１０の高さに再設定する（ステップＳ１２０４）。続いて、最大削減数算出部５０３はページのカウント値を１つ上げる（ステップＳ１２０５）。具体的には、図９の例において最大削減数算出部５０３は、グループ９１０を取得してＳ１２０３およびＳ１２０４の処理を行った後に、ページのカウント値を０から１に増加させる。カウントが１であるということは、オブジェクト９０９までを配置するために１ページが必要であるということを意味する。次に、最大削減数算出部５０３は未処理のグループが存在しているか否かを判定する（ステップＳ１２０６）。未処理グループが存在する場合は、ステップＳ１２０１に戻り、最大削減数算出部５０３は次のグループを取得する。全てのグループの処理が完了すると、フローはステップＳ１２０７に移る。最大削減数算出部５０３は、総ページ数からカウント値を引き、さらに１ページ引くことによって、最大削減数を求める（ステップＳ１２０７）。
【００３５】
図１３は、本発明の実施形態１であるコンピュータ１における印刷目標ページ数算出部５０４の処理を示すフローチャートである。この処理は、印刷目標ページ数算出部５０４は、空白ページ（端数ページ）が出ないようにページの削減を行う場合に何ページ削減するのが適正であるかを求める処理である。
【００３６】
まず、印刷目標ページ数算出部５０４は文書の総ページ数（Ｔ）と最大削減数（Ｓ）を求める（ステップＳ１３０１）。総ページ数（Ｔ）はドキュメントの情報９１１（図９）の総ページ数９１６から取得し、最大削減数（Ｓ）は図１２のフローで求めた値を使用する。印刷目標ページ数算出部５０４は印刷紙面上に配置されるページ数（Ｎ）を求める（ステップＳ１３０２）。本実施形態１においては、片面に４ページが印刷されることが設定されているので、Ｎの値は４となる。両面印刷である場合は裏表の各紙面上に印刷されるページ数の合計がＮの値となる。例えば、片面４ページが裏表に印刷される場合、Ｎの値は８となる。表に４ページ印刷され、且つ裏に２ページ印刷される場合、Ｎの値は６となる。印刷目標ページ数算出部５０４は、総ページ数（Ｔ）を配置ページ数（Ｎ）で割った値（Ｔ／Ｎ）と、総ページ数−最大削減数（Ｔ−Ｓ）を配置ページ数（Ｎ）で割った値（（Ｔ−Ｓ）／Ｎ）を比較する。値（Ｔ／Ｎ）と値（（Ｔ−Ｓ）／Ｎ）を比較した結果に基づいて、印刷目標ページ数算出部５０４は、印刷に必要な用紙の枚数を減らせるかどうかを判定する（ステップＳ１３０３）。たとえば、総ページ数が６ページであり（Ｔ＝６）、用紙に配置されるページ数が４であり（Ｎ＝４）、図１２により得られた削減数が１である場合（Ｓ＝１）、（Ｔ／Ｎ）の算出結果が１．５となる。一方、（Ｔ−Ｓ）／Ｎの算出結果が１．２５となる。つまり、削減処理を行う場合も２枚の用紙が使用され、削減処理を行わない場合も２枚の用紙が使用される。よって、枚数は減らせないと判断される。一方、Ｔ＝９、Ｎ＝４、Ｓ＝２である場合、（Ｔ／Ｎ）の算出結果が２．２５となる。一方、（Ｔ−Ｓ）／Ｎの算出結果が１．７５となる。つまり、つまり、削減処理を行う場合は１枚の用紙が使用され、削減処理を行わない場合は２枚の用紙が使用される。よって、枚数は減らせると判断される。印刷に必要な用紙の枚数を減らせる場合は、印刷目標ページ数算出部５０４は、削減後の必要な紙の枚数に配置ページ数（Ｎ）を掛けた値と総ページ数の差を削減目標ページ数とする（ステップＳ１３０４）。具体的には、図７の文書７１２の例において、総ページ数「５」から、印刷に必要な紙の枚数「１」と１枚あたりに配置されるページ数「４」をかけた値を引いて得られた値「１」を削減目標ページ数とする。印刷に必要な紙の枚数が減らせない場合は削減目標ページ数に０を設定する（ステップＳ１３０５）。
【００３７】
以上述べたように、本実施形態の情報処理装置によれば、印刷用紙に複数のページを割り当てる集約印刷が設定された場合であっても、最終印刷用紙の一部に空白ページが生じるのを防止することができるという効果がある。
【００３８】
（実施形態２）
続いて、本発明の実施形態２である情報処理装置について説明する。実施形態１では、ページの削減を前から順に行っていたが、その結果、図１４に示す文書１４０８のようにレイアウトが大きく変化してしまうことがある。しかし、限界までページの削減を行わないのであれば、ページ削減の処理の順序を変えることによってドキュメントのレイアウト変化を抑えることができる場合がある。例えば、図１４の例において、１ページを削減するためにページ１４０１〜１４０３のコンテンツを移動させると３ページ分のコンテンツが入り混じってしまう。一方、ページ１４０２、１４０３の２ページにおける移動によってページを削減した方がレイアウトの変化はより少なくなる。さらに、ページ１４０２、１４０３の組み合わせによって１ページ削減する方法と、ページ１４０４、１４０５の組み合わせによって１ページ削減する方法の２通りの選択肢がある。実施形態２は、レイアウトの変化が少ないページ１４０４、１４０５の組み合わせを選択し、ページ削減処理を行い、ページ１４０９、１４１０の結果を得る。実施形態２によるページの組み合わせの選択方法やその選択がレイアウトに与える影響について以下に説明する。
【００３９】
図１５は、本発明の実施形態２の情報処理装置であるコンピュータ１の削減ページリスト生成部５０５が行う処理を示すフローである。この処理は、削減すべきページのリストを作成するとともに、優先的に削減すべきページの組み合わせを決定する。なお、図１５は、図６のＳ６０５とＳ６０６の間で実行される。実施形態２において、このフローは全体の処理を示す図６のフローのステップＳ６０６の前に実行される。なお、図６のステップＳ６０６では、優先に削減すべきページの組み合わせを削減ページリストとして作成するため、ページ削減部５０６はそのリストに従ってページの削減順序を決定する。この処理を、図１６の具体例を参照しながら説明する。
【００４０】
まず、削減ページリスト生成部５０５は、空白ページ（端数ページ）が発生するか否か、すなわち、総ページ数と最大削減数の差（Ｔ−Ｓ）の算出結果を配置ページ数（Ｎ）で割ったときの余りが０にならないかを判定する（ステップＳ１５０１）。空白ページが発生しない場合は、基本的に限界まで行間の空白を詰めてページ削減を行えば良いため、削減ページリスト生成部５０５は優先順位のリストを生成せずにフローを終了する。空白ページが発生する場合は、削減ページリスト生成部５０５は探索ページ範囲を決定する（ステップＳ１５０２）。
【００４１】
このページ削減処理においては、２ページ分のコンテンツを１ページに収めることでページ削減を行う場合、または、３ページ分のコンテンツを２ページに収めることでページ削減を行う場合等が考えられる。探索ページ範囲とは、１ページを削減するための処理の対象となるページの範囲をいう。一般に、探索ページ範囲に含まれるページ数が多いほどページの削減は行いやすいが、その分レイアウトが変化するページ数も多くなってしまう。このため、レイアウトが変化するページ数が少なくなるように、探索ページ範囲の初期値は２ページに設定されている。そして、順次１ページずつ探索ページ範囲を拡張していく。探索ページ範囲の算出方法の一例について説明する。まず１枚の用紙の高さを特定する。その後、１ページ目においてオブジェクトが配置されていない空白部分の高さと２ページ目においてオブジェクトが配置されていない空白部分の高さとの和が、１枚の用紙の高さを超えたかを判定する。ここで、空白部分の高さの和が１枚の用紙の高さを超えた場合、探索ページ範囲は１−２ページと特定される。一方、１ページ目と２ページ目の空白部分の高さの和が１枚の用紙の高さを超えない場合、さらに３ページ目の空白部分の高さを１ページ目と２ページ目の空白部分の高さの和に加える。その結果が空白部分の高さの和が１枚の用紙の高さを超えた場合、探索ページ範囲は１−３ページと特定される。
【００４２】
削減ページリスト生成部５０５は、次の探索ページ範囲の取得、すなわち次に何ページから何ページを対象としてページ削減処理の判定を行うのかを決定する（ステップＳ１５０３）。具体的には、図１４の例において、探索ページ範囲が２ページの場合、削減ページリスト生成部５０５はまずページ１４０１、１４０２を探索対象ページ群として取得し、次にページ１４０２、１４０３を探索対象ページ群として取得する。
【００４３】
ステップＳ１５０４〜Ｓ１５０７では、探索対象ページ群でページ削減が可能なのか否かという判断、および削減対象となるページの優先度の決定を行う。具体的な例として、図１６を用いて説明する。図１６は、ページ１６０１−１６０２とページ１６１１−１６１２の４ページで構成された文書を示す。また探索ページ範囲のページ群としてページ１６０１、１６０２の組み合わせと、ページ１６１１、１６１２の組み合わせの２つが特定され、この２つについての優先度の決定処理を説明する。
【００４４】
まず、ページ１６０１、１６０２の組み合わせによってページを削減する場合、削減ページリスト生成部５０５は、グループ１６０４の下部の空白にグループ１６０５、１６０６が収まると判断できる。そのため、グループ１６０５、１６０６をグループ１６０４の下部に移動させ、ページ１６０３を得る。一方、ページ１６１１、１６１２の組み合わせによってページを削減する場合、グループ１６１４の下部の空白にグループ１６１５、１６１６が収まらない。このため、削減ページリスト生成部５０５は、グループ間の空白１６１７、１６１８を詰めてページの削減を行い、ページ１６１３を得る。これら２つの場合を比較すると、ページ１６１３は元のページ１６１１に対してコンテンツ間の空白を詰めることで得られる。一方、ページ１６０３では空白を詰めないため空白１６０７、１６０８、１６０９、１６１０の値は変化していない。よって、ページ１６０３の方がページ１６１３よりもコンテンツのレイアウトの変化は少ない。すなわち、オブジェクトの移動のみが行われ、空白は変更がない。
【００４５】
このように、ページ削減処理には「行間空白を詰めながらページ削減」する方法と「行間を詰めずにページ削減」する方法がある。本実施形態２においては、これら２つの方法のうち「行間を詰めずにページ削減」できる方法に対する優先度を高めている。そして、ステップＳ１５０４では、削減ページリスト生成部５０５は「行間を詰めずにページ削減」が可能か否かを判定する。可能な場合は、削減ページリスト生成部５０５は、対象となっているページの組み合わせを、削減ページリスト１６２１内の要素１６２２に優先度「高」として追加する（ステップＳ１５０５）。また、不可能な場合は、削減ページリスト生成部５０５は「行間空白を詰めながらページ削減」が可能か否かを判定する。削減可能な場合は、削減ページリスト生成部５０５は、対象となっているページの組み合わせを削減ページリスト１６２１内の要素１６２２に優先度「低」として追加する（ステップＳ１５０７）。
【００４６】
削減ページリスト生成部５０５は、処理ページがさらに存在しているかどうかを判定する（ステップＳ１５０８）。最終ページに到達していた場合には、処理はステップＳ１５０９に進む。次に、削減ページリスト生成部５０５は、削減ページリスト１６２１内の削減ページ候補の数が削減目標ページ数に達しているか否かを判定する（ステップＳ１５０９）。削減目標ページ数に達している場合は、処理を終了する。削減目標ページ数に達していない場合は、探索ページ範囲を拡大して、再度ページ先頭から処理を再開する。このような処理によって、削減ページリスト生成部５０５は、削減する対象となるページの組み合わせとその優先度を含むリストを生成する。その後、Ｓ６０６のページ削減処理において、優先度の高いページから順次削減処理が実行される。具体的には、例えば図１６において削減目標ページが１ページである場合、ページ１６１１とページ１６１２との間で削減処理を行うよりもページ１６０１とページ１６０２との間で削減処理を行った方がレイアウト変更が少ない。よって、ページ１６０１と１６０２の間で図１６の削減処理を行い、ページ１６１１と１６１２の間では削減処理は行われない。
【００４７】
本実施形態の情報処理装置によれば、印刷用紙に複数のページを割り当てる集約印刷をした場合であっても、最終印刷用紙の一部に空白ページが生じるのを防止することができるという効果がある。また、削減の対象となるページに優先度を設定し、優先度の高いページから順次削減を行うため、ページ削減後のコンテンツのレイアウトの変更が最小限に抑えられるという効果がある。
【００４８】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【００４９】
１  コンピュータ
２  プリンタ
３  ディスプレイ装置
【図１】
0005675445.tif 000002
【図２】
0005675445.tif 000003
【図３】
0005675445.tif 000004
【図４】
0005675445.tif 000005
【図５】
0005675445.tif 000006
【図６】
0005675445.tif 000007
【図７】
0005675445.tif 000008
【図８】
0005675445.tif 000009
【図９】
0005675445.tif 000010
【図１０】
0005675445.tif 000011
【図１１】
0005675445.tif 000012
【図１２】
0005675445.tif 000013
【図１３】
0005675445.tif 000014
【図１４】
0005675445.tif 000015
【図１５】
0005675445.tif 000016
【図１６】
0005675445.tif 000017