(57)【要約】【課題】文書内の段組の構成に応じて文書に含まれる余白を詰める間締め処理を行う情報処理装置を提供する。【解決手段】コンピュータ１が、文書データに含まれるオブジェクト間の空白の大きさに基づいて、オブジェクトをブロック化してブロックを生成し、上記ブロックを縦方向に分割し、分割結果に基づいて、文書データの段組構成を検知する。コンピュータ１が、検知した段組構成に複数段構成が含まれる場合に、複数段構成に対応する段組領域に含まれる段のオブジェクトを再ブロック化する。そして、コンピュータ１が、再ブロック化された段組領域を処理対象として、段組領域に含まれるブロック間の空白を詰める間締め処理を行う。【選択図】図１
2012003580.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも第１の段と第２の段の複数の段組で構成されるページにおいて、前記第１の段に含まれるオブジェクト間の空白を所定の距離まで詰めることにより前記第１の段の空白を削減する削減手段と、
前記削減手段が前記第１の段の前記オブジェクト間の空白を削減することにより生じる第１の段の下部の空白に前記第２の段の先頭のオブジェクトが収まる場合、前記第２の段の先頭のオブジェクトを第１の段の下部の空白に移動する移動手段を備えることを特徴とする情報処理装置。
【請求項２】
前記移動手段によって前記第２の段のオブジェクトが移動された後の前記第１の段の高さと前記第２の段の高さを比較する比較手段を更に有し、
前記比較手段が比較した結果、前記第１の段の高さと前記第２の段の高さの差が閾値以上である場合、前記移動手段は、前記第１の段の高さと前記第２の段の高さの差が閾値以下になるように前記第１の段のオブジェクトの一部を前記第２の段に戻すことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
少なくとも第１の段と第２の段の複数の段組で構成されるページにおいて、前記第１の段に含まれるオブジェクト間の空白を所定の距離まで詰めることにより前記第１の段の空白を削減する削減工程と、
前記削減工程によって前記第１の段の前記オブジェクト間の空白を削減することにより生じる第１の段の下部の空白に前記第２の段の先頭のオブジェクトが収まる場合、前記第２の段の先頭のオブジェクトを第１の段の下部の空白に移動する移動工程を有することを特徴とする情報処理装置の制御方法。
【請求項４】
前記移動工程によって前記第２の段のオブジェクトが移動された後の前記第１の段の高さと前記第２の段の高さを比較する比較工程を更に有し、
前記比較工程によって前記高さを比較した結果、前記第１の段の高さと前記第２の段の高さの差が閾値以上である場合、前記第１の段の高さと前記第２の段の高さの差が閾値以下になるように前記第１の段のオブジェクトの一部を前記第２の段に戻す工程を有することを特徴とする請求項３に記載の情報処理装置の制御方法。
【請求項５】
請求項３または請求項４に記載の情報処理装置の制御方法をコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及びコンピュータプログラムに関する。
【背景技術】
【０００２】
文書を印刷する際に、用紙節約のため、元文書のデータを加工し、再レイアウトする技術が提案されている。具体的には、行間や、図と図の隙間といったコンテンツ間の余白を詰める等の方法が挙げられる。下記の特許文献１は、入力されたデータを解析してオブジェクト別に分離し、移動対象となるオブジェクトを縮小し、左上に詰めていくことで生じた余白に次のオブジェクトを移動させ、削除可能な空白を作成する画像処理システムを開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−４８５２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１が開示する画像処理システムは、文書に含まれる段組の構成を考慮せずにコンテンツ間の余白を詰めていく。従って、この画像処理システムによっては、オブジェクトの掲載順序が変わってしまい、文脈に不整合を引き起こす可能性がある。
【０００５】
本発明は、文書内の段組の構成に応じて文書に含まれる余白を詰める間締め処理を行う情報処理装置、情報処理装置の制御方法、及びコンピュータプログラムの提供を目的とする。
【課題を解決するための手段】
【０００６】
本発明の一実施形態の情報処理装置は、少なくとも第１の段と第２の段の複数の段組で構成されるページにおいて、前記第１の段に含まれるオブジェクト間の空白を所定の距離まで詰めることにより前記第１の段の空白を削減する削減手段と、前記削減手段が前記第１の段の前記オブジェクト間の空白を削減することにより生じる第１の段の下部の空白に前記第２の段の先頭のオブジェクトが収まる場合、前記第２の段の先頭のオブジェクトを第１の段の下部の空白に移動する移動手段とを備える。
【発明の効果】
【０００７】
本発明の情報処理装置によれば、文書内の段組構成に応じて文書内の余剰余白を除去することができる。従って、余剰余白の除去後に、段組構成に対応する段組領域内で、文書に含まれるオブジェクトの掲載順序が変わらない。その結果、文脈に不整合を引き起こすおそれがなくなる。
【図面の簡単な説明】
【０００８】
【図１】本実施形態のシステム構成例を示す図である。
【図２】プロセッサによるオブジェクト情報の管理例を説明する図である。
【図３】オブジェクト情報の例である。
【図４】文書データの構造の一例を示す図である。
【図５】文書データのページ内の領域を説明する図である。
【図６】コンピュータの機能ブロック図の一例である。
【図７】段組構成情報の例を説明する図である。
【図８】実施例１の情報処理装置の全体動作処理を示すフローチャートである。
【図９】ブロック化処理の例を説明するフローチャートである。
【図１０】ページ内のオブジェクトの配置とブロック化を説明する図である。
【図１１】縦方向ブロック分割処理を説明するフローチャートである。
【図１２】ページ間締め処理の例を説明するフローチャートである。
【図１３】ページ間締め処理の例を説明する図である。
【図１４】段組領域再ブロック化処理の例を説明する図である。
【図１５】段組領域間締め処理の例を説明する図である。
【図１６】間締め可能なページの抽出処理を説明するフローチャートである。
【図１７】段高さ平滑化処理の例を説明するフローチャートである。
【図１８】段組領域に含まれる段の高さを揃える処理を説明するフローチャートである。
【図１９】段組領域に含まれる段の高さを揃える処理を説明する図である。
【発明を実施するための形態】
【０００９】
図１は、本実施形態のシステム構成例を示す図である。図１に示すシステムは、コンピュータ１と、プリンタ２と、ディスプレイ装置３とを備える。コンピュータ１は、本実施形態の情報処理装置である。コンピュータ１は、印刷レイアウト済みの文書データについて間締め処理を実行する。間締め処理は、文書データに含まれる行間等の空白部を詰める処理である。コンピュータ１が間締め処理を実行することにより、文書の総ページ数を削減することができる。また、コンピュータ１は、プリンタ２に対して上記間締め処理された文書データを送信し、この文書データを印刷させる。また、コンピュータ１は、ディスプレイ装置３に対して各種の表示データを送信し、この表示データを表示させる。本実施形態において、文書データは、例えばＰＤＦ（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 ）とＦＤＤとを備える。ＦＤＤは、Ｆｌｏｐｐｙ（登録商標）  Ｄｉｓｋ  Ｄｒｉｖｅの略語である。記憶装置１７が、磁気テープドライブを備えるようにしてもよい。
【００１３】
図２は、プロセッサによるオブジェクト情報の管理例を説明する図である。プロセッサ１１は、オブジェクト情報をリスト構造の形式でオブジェクトリスト２０１に格納する。各々のオブジェクト情報は、オブジェクトＩＤ２０３、オブジェクト種類２０４、左上座標２０５、右下座標２０６、オブジェクト固有情報２０７を含む。オブジェクトＩＤ２０３は、オブジェクトを一意に識別する識別子である。オブジェクト種類２０４は、オブジェクトの種類を示す。オブジェクトの種類は、例えば、図形、文字列、イメージ、グループ等を含む。オブジェクト種類２０４に設定されているグループは、このオブジェクト種類２０４に対応するオブジェクトが、複数のオブジェクトがグループ化されたものであることを示す。グループ化とは、２つ以上のオブジェクトを一つのオブジェクトにまとめる処理のことを指す。このひとまとめにされたオブジェクトをグループ又はブロックと呼称する。グループ化又はブロック化の対象となるオブジェクトとは、文字や画像を始めとするあらゆるオブジェクトである。もちろん、グループそのものもグループ化の対象となり、その場合、グループに対応するオブジェクト情報は階層的に保持される。オブジェクトがブロック化された場合、オブジェクト情報内のオブジェクトＩＤはブロックのＩＤを示す。なお、本実施形態において、１つのオブジェクトからなるグループや内部にオブジェクトを保持しないグループも構造上可能である。
【００１４】
左上座標２０５はオブジェクトの左上座標を示す。右下座標は、オブジェクトの右下の座標を示す。オブジェクト固有情報２０７は、オブジェクトに固有の属性情報を示す。オブジェクト固有情報２０７は、例えばオブジェクトの種類が図形である場合の線の太さ、線種等を示す情報である。また、オブジェクト固有情報２０７は、例えばオブジェクトの種類が文字列である場合の文字の書体、サイズ等を示す情報である。オブジェクト情報内のオブジェクト種類２０４にグループが設定されている場合、オブジェクト固有情報２０７には、オブジェクトリスト２０２へのポインタ情報が設定される。オブジェクトリスト２０２内のオブジェクト情報は、上記オブジェクト情報に対応するグループ化されたオブジェクトに含まれるオブジェクトのオブジェクト情報である。
【００１５】
図３は、オブジェクト情報の例である。例えば、図３（Ｂ）に示すオブジェクト情報は、図３（Ａ）中に示す、左上座標が（２０，３４），右下座標が（８１，６５）である矩形の図形オブジェクトを示す。
【００１６】
図４は、本実施形態において処理対象となる文書データの構造の一例を示す図である。コンピュータ１は、例えば図４（Ａ）に示すＰＤＦフォーマット文書を処理対象とする。図４（Ａ）に示すＰＤＦフォーマット文書は、始点（２０，３４）から、順次、（８１，３４）、（８１，６５）、（２０，６５）、（２０，３４）を結ぶ図形を示す。図４（Ｂ）は、図４（Ａ）に示すＰＤＦフォーマット文書から読み込まれた図形オブジェクトに対応するオブジェクト情報を示す。このオブジェクト情報は、左上座標（２０，３４）、右下座標（８１，６５）の長方形に対応する図形オブジェクトを示す。
【００１７】
図５は、コンピュータが処理対象とする文書データのページ内の領域を説明する図である。図５（Ａ）のページ６０１、図５（Ｂ）のページ６０２、図５（Ｃ）のページ６０３は、文書データに含まれるページの一例である。図５（Ａ）に示すページ６０１は、段組構成として２段組の構成（２段構成）を有する。本実施形態では、同じ段組の構成を持つ領域のことを段組領域と呼称する。また、本実施形態では、段組を構成する領域を段組領域の段と呼称する。従って、図５（Ａ）に示す例では、段６０５と段６０６とを含む領域が、上記２段構成に対応する段組領域である。また、段６０５、段６０６は、それぞれ、段組領域の段である。また、余白６０４は、段６０５と段６０６との間の余白（段組余白）である。
【００１８】
図５（Ｂ）に示すページ６０２では、領域６０７が１段組の構成（１段構成）を有する段組領域である。また、領域６０８が２段組の構成を持つ段組領域である。また、領域６０８に含まれている領域６０９、領域６１０が段組領域の段である。図５（Ｃ）に示すページ６０３では、領域６１１と領域６１２とを含む領域が２段構成を有する段組領域である。また、領域６１１、領域６１２が、それぞれ、段組領域の段である。また、ブロック６１３、６１４、６１５が、段６１１内のブロックである。また、ブロック６１６−６１８が、段６１２内のブロックである。また、領域６１９が１段構成を有する段組領域である。また、ブロック６２０が、この段組領域内の段に含まれるブロックである。
【００１９】
図６は、コンピュータの機能ブロック図の一例である。コンピュータ１は、ブロック化部１０１、縦方向分割部１０２、段組領域再ブロック化部１０３、段組領域間締め処理部１０４、ページ間締め処理部１０５、段高さ平滑化部１０６を備える。本実施形態では、図１に示すメモリ１３内のＲＯＭにブロック化部１０１乃至段高さ平滑化部１０６の機能を実現するコンピュータプログラムが予め記憶されている。プロセッサ１１が、ＲＯＭ内の上記コンピュータプログラムを読み出して実行することにより、本実施形態の情報処理装置の制御方法が実現される。
【００２０】
ブロック化部１０１は、文書データに含まれるオブジェクト間の空白を走査し、該走査によって得られるオブジェクト間の空白の大きさに基づいて、オブジェクトをブロック化して１又は複数のブロックを生成する。本実施形態においては、ブロック化部１０１は、印刷レイアウト済みの文書データを処理対象とする。ブロック化部１０１は、ブロックを生成する度に、オブジェクトリスト内のオブジェクト情報を更新する。
【００２１】
縦方向分割部１０２は、ブロック化部１０１によって生成されたブロックに含まれるオブジェクト間の空白を走査することによって得られる該オブジェクト間の空白の大きさに基づいて、ブロックを縦方向に分割する。縦方向分割部１０２は、ブロックを分割する度に、オブジェクトリスト内のオブジェクト情報を更新する。
【００２２】
段組領域再ブロック化部１０３は、縦方向分割部１０２によるブロックの分割結果に基づいて、文書データの段組構成を検知する。具体的には、段組領域再ブロック化部１０３は、横に並んだ分割されたブロックの数すなわち段の数に基づいて、文書データの段組構成を検知する。複数の段（少なくとも第１の段と第２の段）が横に並んでいる場合、段組領域再ブロック化部１０３は、この複数の段を含む段組領域の段組構成が複数段構成であると判断する。例えば、図５（Ｃ）に示すページ６０３には、段６１１と段６１２という２つの段が横に並んでいる。従って、段組領域再ブロック化部１０３は、この段６１１と段６１２とを含む段組領域の段組構成が２段構成であると判断する。段の横に他の段が並んでいない場合、段組領域再ブロック化部１０３は、この段を含む段組領域の段組構成が１段構成であると判断する。例えば、図５（Ｃ）に示すページ６０３の段組領域６１９に含まれる段は１段のみである。従って、段組領域再ブロック化部１０３は、段組領域６１９の段組構成が１段構成であると判断する。段組領域再ブロック化部１０３が文書データの段組構成を検知すると、段組領域再ブロック化部１０３は、ページ毎に段組構成情報を生成して記憶装置１７に記憶する。段組構成情報は、段組構成に関する情報である。
【００２３】
図７は、段組構成情報の例を説明する図である。図７（Ａ）は段組構成情報を示す。図７（Ｂ）中に示すページ７０２は、図７（Ａ）に示す段組構成情報に対応するページである。図７（Ｂ）中の番号１１乃至１６は、ページ７０２内のブロックのＩＤを示す。図７（Ａ）に示す段組構成情報は、ページ内段組領域情報３００、段組領域構成情報３０１及び３０２、段内ブロック情報３０３乃至３０５を含む。ページ内段組領域情報３００は、ページ内に含まれる段組領域に関する情報である。図７（Ａ）に示す例では、ページ内段組領域情報３００は、ページ番号７１４と段組領域の数７１５とポインタ７１６及び７１７を含む。ページ番号７１４は、図７（Ｂ）に示すページ７０２の識別番号である。段組領域の数７１５は、ページに含まれる段組領域の数である。ページ７０２には１段構成の段組領域７０９と２段構成の段組領域７１０という２つの段組領域が含まれる。従って、図７（Ａ）中の段組領域の数７１５には「２」が設定される。ポインタ７１６、７１７は、段組領域に対応する段組領域構成情報へのポインタである。ポインタ７１６は、段組領域構成情報３０１へのポインタであり、ポインタ７１７は、段組領域構成情報３０２へのポインタである。
【００２４】
段組領域構成情報は、段組領域の構成に関する情報である。図７（Ａ）に示す例では、段組領域構成情報３０１は、１段組の段組構成を有する段組領域７０９の構成に関する情報である。また、段組領域構成情報３０２は、２段組の段組構成を有する段組領域７１０の構成に関する情報である。段組領域構成情報３０１は、段組構成７１８と段組領域の段７１９を含む。段組構成７１８は、段組領域７０９が１段組であることを示す。段組領域の段７１９は、段組領域７０９に含まれる段である段７１１を示す。段組領域の段は、各々の段に含まれるブロックに対応する段内ブロック情報にリンクしている。例えば、段組領域の段７１９は、ブロックのＩＤが１１、１２であるブロックに対応する段内ブロック情報にリンクしている。同様に、段組領域構成情報３０２は、段組構成７２０と段組領域の段７２１及び７２２を含む。段組構成７２０は、段組領域７１０が２段組であることを示す。段組領域の段７２１は、段組領域７１０に含まれる段７１２を示す。段組領域の段７２２は、段組領域７１０に含まれる段７１３を示す。段組領域の段７２１は、ブロックのＩＤが１３、１４であるブロックに対応する段内ブロック情報にリンクしている。また、段組領域の段７２２は、ブロックのＩＤが１５、１６であるブロックに対応する段内ブロック情報にリンクしている。
【００２５】
段内ブロック情報は、各々の段に含まれるブロックに関する情報である。図７（Ａ）に示す例では、段内ブロック情報として、ブロックのＩＤが設定される。このブロックのＩＤは、段組領域再ブロック化部１０３が段組領域に含まれるオブジェクトを再ブロック化した結果生成されるブロックの識別番号である。すなわち、この例では、段内ブロック情報は、段組領域再ブロック化部１０３が生成対象とするブロックのＩＤを示す。段内ブロック情報には、段に含まれるブロックの配置順序に従って、段内の先頭のブロックに対応するブロックＩＤから段内の最後尾のブロックに対応するブロックＩＤが順次設定される。
【００２６】
図６に戻って、段組領域再ブロック化部１０３は、検知した段組構成に複数段構成が含まれる場合に、該複数段構成に対応する段組領域に含まれる段のオブジェクトを再ブロック化する。例えば、前述した図７（Ｂ）中に示すブロックのＩＤが１３であるブロックとブロックのＩＤが１４であるブロックは、段組領域再ブロック化部１０３が段７１２内のオブジェクトを再ブロック化した結果生成されたブロックである。段組領域再ブロック化部１０３は、段組領域に含まれる段のオブジェクトを再ブロック化する度に、オブジェクトリスト内のオブジェクト情報を更新する。
【００２７】
段組領域間締め処理部１０４は、オブジェクトが再ブロック化された段組領域を処理対象として、段組領域に含まれるブロック間の空白を詰める間締め処理（段組領域間締め処理）を行う。具体的には、段組領域間締め処理部１０４は、文書データのページのうち、オブジェクトが再ブロック化された段組領域を含む第１のページと第２のページとの間でブロックの移動が可能であるかを判断する。段組領域間締め処理部１０４は、第１のページと第２のページとの間でブロックの移動が可能である場合に、該第１、第２のページの上記オブジェクトが再ブロック化された段組領域に含まれる段を順次処理対象として、該段に含まれるブロック間の空白を詰める。そして、段組領域間締め処理部１０４は、該段の次に処理対象となる段の先頭ブロックを前記ブロック間の空白が詰められた段に移動する。上記先頭ブロックを移動する処理においては、段組領域間締め処理部１０４は、現在処理対象である段に含まれるブロック間の空白を詰めた場合に該空白が詰められた段に次に処理対象となる段の先頭ブロックが収まるかを判断する。段組領域間締め処理部１０４は、該空白が詰められた段に次に処理対象となる段の先頭ブロックが収まる場合に、上記次に処理対象となる段の先頭ブロックを該空白が詰められた段に移動する。
【００２８】
ページ間締め処理部１０５は、文書データのページを処理対象として、ページに含まれるブロック間の空白を詰める間締め処理（ページ間締め処理）を行う。具体的には、ページ間締め処理部１０５は、段組領域再ブロック化部１０３が検知した段組構成に１段構成のみが含まれる場合に、該段組構成に対応する段組領域を含むページに含まれるブロック間の空白を詰める。そして、ページ間締め処理部１０５は、該ページの次のページの先頭ブロックをブロック間の空白が詰められたページに移動する。
【００２９】
また、ページ間締め処理部１０５は、段高さ平滑化部１０６によって段の高さが平滑化された場合に、少なくとも該平滑化された段を含むページを処理対象としてページ間締め処理を行う。例えば、ページ間締め処理部１０５は、平滑化された段を含むページに含まれるブロック間の空白を詰めるとともに、該ページの次のページの先頭ブロックを前記ブロック間の空白が詰められたページに移動する。ページ間締め処理部１０５によるページ間締め処理、又は上記段組領域間締め処理部１０４による段組領域間締め処理によって、再レイアウトされた文書データが出力対象の文書データとして生成される。
【００３０】
段高さ平滑化部１０６は、段組領域再ブロック化部１０３が検知した段組構成に複数段構成が含まれる場合に、該複数段構成に対応する段の高さを平滑化する。
【００３１】
図８は、本発明の実施例１の情報処理装置の全体動作処理を示すフローチャートである。なお、本願のフローチャートは、ＣＰＵが処理に関連するプログラムをメモリから読み出して実行することで実現される。まず、コンピュータ１のブロック化部１０１が、文書データに含まれるオブジェクトのブロック化処理を実行する（ステップＳ１）。続いて、縦方向分割部１０２が、縦方向分割処理を行って、ステップＳ１におけるブロック化処理によって生成されたブロックを縦方向に分割する（ステップＳ２）。例えば、図１５（Ｂ）ではブロックＡ−ＣとブロックＤ−Ｆとの間にて縦方向の余白があるので、縦方向分割部１０２は、縦方向分割処理を行える。次に、段組領域再ブロック化部１０３が、縦方向分割部１０２によるブロックの分割結果に基づいて、文書データの段組構成を判断する（ステップＳ３）。段組領域再ブロック化部１０３が、文書データの段組構成が１段構成のみであると判断した場合、ページ間締め処理部１０５が、文書データのページを処理対象としてページ間締め処理を行う（ステップＳ６）。
【００３２】
段組領域再ブロック化部１０３が、文書データの段組構成に複数段構成が含まれると判断した場合は、ステップＳ４に進む。そして、段組領域再ブロック化部１０３が、複数段構成に対応する段組領域に含まれる段のオブジェクトを再ブロック化する段組領域再ブロック化処理を行う（ステップＳ４）。続いて、段組領域間締め処理部１０４が、段組領域間締め処理を行って（ステップＳ５）、処理を終了する。
【００３３】
図９は、図８のステップＳ１におけるブロック化処理の例を説明するフローチャートである。まず、ブロック化部１０１が、文書データのページ内に未処理のオブジェクトが存在するかを判断する（ステップＳ１１）。未処理のオブジェクトが存在する場合、ブロック化部１０１は、次に処理対象となるオブジェクトすなわち未処理のオブジェクトのうち先頭にあるオブジェクトの読み込みを行う（ステップＳ１５）。次に、ブロック化部１０１が、ページ内において、読み込んだオブジェクトのＹ座標が、既にページ上に配置されているオブジェクトのＹ座標と重なるかを判断する（ステップＳ１６）。読み込んだオブジェクトのＹ座標が、既に読み込まれているオブジェクトのＹ座標と重なっていない場合、ブロック化部１０１は、読み込んだオブジェクトをブロックとしてページ上に配置し（ステップＳ１８）、ステップＳ１１に戻る。
【００３４】
図１０は、ページ内のオブジェクトの配置とブロック化を説明する図である。図１０（Ａ）は、ページ上に既に配置されたオブジェクト１３０１と、上記ステップＳ１５において読み込んだオブジェクト１３０２との位置関係を示す。図１０（Ａ）に示す例では、オブジェクト１３０１とオブジェクト１３０２とはＹ座標が重なっていない。従って、ブロック化部１０１は、オブジェクト１３０２をブロックとしてページ上に配置する。
【００３５】
図９に戻って、読み込んだオブジェクトのＹ座標が、既に読み込まれているオブジェクトのＹ座標と重なっている場合、ブロック化部１０１は、重なっているオブジェクトをグループ化してブロックを生成し、ページ上に配置する（ステップＳ１７）。例えば、図１０（Ｂ）に示すように、オブジェクト１３０２の処理の次に読み込まれたオブジェクトであるオブジェクト１３０５は、オブジェクト１３０３とＹ座標が重なる。従って、ブロック化部１０１は、図１０（Ｃ）に示すように、オブジェクト１３０３と１３０５とをグループ化してブロック１３０６を生成し、ページ上に配置する。オブジェクト１３０３がブロックである場合は、ブロック化部１０１は、一旦オブジェクト１３０３のブロック化を解除してからまとめ直す。また、オブジェクト１３０５がページ上の複数のオブジェクトとＹ座標が重なっていた場合、重なっている全てのオブジェクトをブロック化する。
【００３６】
図９に戻り、未処理のオブジェクトが存在しない場合、ブロック化部１０１が、ページに配置された全てのブロックに含まれるオブジェクト間の空白を横方向（図１０の例ではＸ方向）に走査し（ステップＳ１２）、オブジェクト間の空白の大きさを検知する。この例におけるオブジェクト間の空白の大きさは、オブジェクトとオブジェクトとの間のＹ方向の空白の大きさである。続いて、ブロック化部１０１が、検知した空白の大きさが予め決められた閾値以下であるオブジェクトを含むブロックを抽出する（ステップＳ１３）。そして、ブロック化部１０１が、抽出したブロック同士をまとめてブロック化して（ステップＳ１４）、処理を終了する。ブロック化部１０１は、検知した空白の大きさが予め決められた閾値以下であるオブジェクトを含むブロックについてはまとめずに、そのまま独立したブロックとする。例えば、図１０（Ｃ）においてブロック１３０６とブロック１３０７との空白の大きさが閾値以下であれば、両者はブロックとしてまとめられる。
【００３７】
図１１は、図８のステップＳ２における縦方向分割処理を説明するフローチャートである。縦方向分割部１０２が、ブロック化部１０１によるブロック化処理によって得られるブロックを対象として、以下の処理を行う。まず、縦方向分割部１０２が、ブロックを選択する（ステップＳ２１）。続いて、縦方向分割部１０２が、選択したブロックを９０度回転させる（ステップＳ２２）。具体的には、縦方向分割部１０２が、選択したブロックのＹ座標とＸ座標とを互いに置き換える。なお、ここで回転処理を行っているのは、図９を参照して説明したブロック化処理における走査方向と統一させるためである。
【００３８】
続いて、縦方向分割部１０２が、９０度回転させた上記ブロックに含まれるオブジェクト間の空白を走査し、該走査によって得られる該オブジェクト間の空白の大きさに基づいて、該オブジェクトをブロック化する（ステップＳ２３）。例えば、図１０（Ｃ）のブロック１３０６におけるオブジェクトＡとＣとの間の空白が閾値以上であれば、両者は分けられる。次に、縦方向分割部１０２が、上記ステップＳ２３におけるブロック化により得られるブロックからブロックを順次選択し、選択したブロックのＹ座標とＸ座標とを変換して、このブロックを−９０度回転させる（ステップＳ２４）。これにより、選択したブロックがステップＳ２２の処理における回転方向と逆方向に回転する。続いて、縦方向分割部１０２が、全てのブロックについて処理を完了したかを判断する（ステップＳ２５）。処理が完了していないブロックがある場合は、上記ステップＳ２１に戻る。全てのブロックについて処理を完了した場合は、処理を終了する。上述した縦方向ブロック分割処理により、縦方向の空白で区切られた１又は複数のブロックが生成される。
【００３９】
図１２は、図８のステップＳ６におけるページ間締め処理の例を説明するフローチャートである。この例では、ページ間締め処理部１０５が、順次、図１３（Ａ）に示すページ１００１、ページ１００２をページ間締め処理の対象とする。ページ１００１は、移動先ページである。移動先ページは、移動元ページに含まれるブロックの移動先となるページである。ページ１００２は、移動元ページである。移動元ページは、移動先ページの次のページであって、移動先ページへの移動対象となるブロックが含まれるページである。
【００４０】
まず、ページ間締め処理部１０５が、移動先ページのブロック間の空白を検出する（ステップＳ６１）。例えば、ページ間締め処理部１０５は、図１３（Ａ）のページ１００１に含まれるブロック１００３乃至１００５を取得し、取得したブロックとブロックとの間の空白を検出する。
【００４１】
次に、ページ間締め処理部１０５が、移動先ページにおいて上記検出された空白を所定の距離まで詰めた場合に移動先ページに移動元ページの先頭ブロックが収まるかを判断する（ステップＳ６２）。ページ間締め処理部１０５は、例えば、図１３（Ａ）のページ１００１内のブロック１００４、１００５をブロック間の空白を所定の距離まで詰めた場合に、ページ１００２内のブロック１００６がページ１００１に収まるかを判断する。具体的には、ページ間締め処理部１０５が、検出された全ての空白からそれぞれ予めユーザによって設定されたブロック間空白の最小値（上記所定の距離に相当）を引いた値を合計して、余剰した空白（余剰空白）の高さを求める。ページ間締め処理部１０５が、移動先ページの最終ブロックと移動先ページの下端との間の空白からページの所定のマージンを引いた値をページ下部空白として求める。そして、ページ間締め処理部１０５が、余剰空白とページ下部空白とを加えた値を、間締め処理後空白として求める。ページ間締め処理部１０５が、求めた間締め処理後空白に移動元ページの先頭ブロックが収まるかを判断する。
【００４２】
間締め処理後空白に移動元ページの先頭ブロックが収まる場合、ページ間締め処理部１０５は、移動先ページに移動元ページの先頭ブロックが収まると判断する。間締め処理後空白に移動元ページの先頭ブロックが収まらない場合、ページ間締め処理部１０５は、移動先ページに移動元ページの先頭ブロックが収まらないと判断する。ページ間締め処理部１０５が、移動先ページに移動元ページの先頭ブロックが収まらないと判断した場合は処理を終了する。
【００４３】
ページ間締め処理部１０５が、移動先ページに移動元ページの先頭ブロックが収まると判断した場合、ページ間締め処理部１０５が、移動先ページ内のブロックを上記余剰余白が詰まるように移動させる（ステップＳ６３）。続いて、ページ間締め処理部１０５が、移動先ページにおける最終ブロックの下部に移動元ページの先頭ブロックを移動させる（ステップＳ６４）。例えば、ページ間締め処理部１０５が、図１３（Ａ）中のページ１００２内のブロック１００６をページ１００１内のブロック１００５の下部に移動させる。そして、ページ間締め処理部１０５が、移動元ページ内において間締め処理を行い（ステップＳ６５）、ステップＳ６１に戻る。ステップＳ６５においては、ページ間締め処理部１０５が、上記ステップＳ６４における先頭ブロックの移動により生じた空白を詰めるために、該先頭ブロックに続くブロックを順次上方に移動させる。ステップＳ６５により、図１３（Ｂ）に示すように、ページ１００１にはブロック１００３乃至１００６が配置され、ページ１００２にはブロック１００７、１００８が配置された状態となる。
【００４４】
図１２を参照して説明したように、ページ間締め処理部１０５は、現在処理対象であるページに含まれるブロック間の空白を詰めた場合に該空白が詰められたページに次に処理対象となるページの先頭ブロックが収まるかを判断する（ステップＳ６２を参照）。また、ページ間締め処理部１０５は、空白が詰められたページに次に処理対象となるページの先頭ブロックが収まる場合に、以下の処理を実行する。ページ間締め処理部１０５は、現在処理対象であるページに含まれるブロック間の空白を詰めるとともに、次に処理対象となるページの先頭ブロックを該空白が詰められたページに移動する（ステップＳ６３，Ｓ６４を参照）。これにより、文書のページに含まれる余剰余白を除去することができ、印刷用紙を節約することができる。
【００４５】
図１４は、図８のステップＳ４における段組領域再ブロック化処理の例を説明する図である。図１４（Ａ）は、段組領域再ブロック化処理の例を説明するフローチャートである。まず、段組領域再ブロック化部１０３が、縦方向分割部１０２によるブロックの分割結果に基づいて、文書データの段組構成を検知する（ステップＳ４１）。ステップＳ４１においては、段組領域再ブロック化部１０３は、更に、ページ毎に段組構成情報を生成して記憶装置１７に記憶する。次に、段組領域再ブロック化部１０３が、段組領域の段のうち、未処理の段が存在するかを判断する（ステップＳ４２）。未処理の段が存在しない場合は、処理を終了する。
【００４６】
未処理の段が存在する場合、段組領域再ブロック化部１０３が、段組構成情報を参照して、処理対象の段組領域の段を取得して（ステップＳ４３）、ステップＳ４４に進む。例えば、段組領域再ブロック化部１０３は、図１４（Ｂ）に示すページ１６０１に含まれる段組領域として、段１６０２、１６０３を含む２段構成の段組領域を取得する。また、段組領域再ブロック化部１０３は、段組構成情報（図７（Ａ）を参照）に含まれる段組領域構成情報に設定されている段組領域の段を取得する。例えば、段組領域間締め処理部１０４は、図１４（Ｂ）中の段１６０２を処理対象の段組領域の段として取得する。
【００４７】
そして、段組領域再ブロック化部１０３が、取得した段に含まれるオブジェクトをブロック化（再ブロック化）する（ステップＳ４４）。段組領域再ブロック化部１０３は、例えば、図７（Ａ）に示す段組領域構成情報を参照して、上記取得した段にリンクしている段内ブロック情報を取得する。そして、段組領域再ブロック化部１０３は、取得した段内ブロック情報に設定されているブロックのＩＤに対応するブロックに含まれるオブジェクトを再ブロック化する。段組領域再ブロック化部１０３は、図９を参照して前述したブロック化処理と同様の処理を行って、オブジェクトの再ブロック化を行う。ステップＳ４４の処理の後、処理がステップＳ４２に進む。ステップＳ４４におけるオブジェクトの再ブロック化の結果、例えば図１４（Ｃ）に示すように、図１４（Ｂ）中の段１６０２に含まれているオブジェクトがブロック１６０４乃至１６０８という５つのブロックにブロック化される。
【００４８】
図１５は、図８のステップＳ５における段組領域間締め処理の例を説明する図である。図１５（Ａ）は、段組領域間締め処理の例を説明するフローチャートである。段組領域間締め処理部１０４が段組構成情報を参照し、オブジェクトが再ブロック化された段組領域を含むページを対象に、ページの最下部の段組領域の段組領域構成情報と次のページの最上部の段組領域の段組領域構成情報とを取得する（ステップＳ５１）。段組領域間締め処理部１０４は、例えば、図１５（Ｂ）中の移動先ページの候補であるページ１８０１の最下部の段組領域の段組領域構成情報と、移動元ページの候補であるページ１８０２の最上部の段組領域の段組領域構成情報とを取得する。図１５（Ｂ）に示すページ１８０１は、段組領域１９００を含む。段組領域１９００は段１９０２と段１９０３とを含む。段１９０２はブロックＡ乃至Ｃを含む。段１９０３はブロックＤ乃至Ｆを含む。ページ１８０２は、段組領域１９０１を含む。段組領域１９０１は段１９０４と段１９０５とを含む。段１９０４はブロックＧとブロックＨとを含む。段１９０５はブロックＩとブロックＪとを含む。
【００４９】
図１５（Ａ）に戻って、段組領域間締め処理部１０４が、ステップＳ５１において取得された段組領域構成情報を用いて、間締め可能なページの抽出処理を行う（ステップＳ５２）。間締め可能なページの抽出処理は、間締め処理の対象とする移動先ページと移動元ページとを決定する処理である。続いて、段組領域間締め処理部１０４が、間締め可能なページの抽出結果に基づいて、間締め処理の対象とする移動先ページと移動元ページとが決定されたかを判断する（ステップＳ５３）。移動先ページと移動元ページとが決定されていない場合は、処理を終了する。移動先ページと移動元ページとが決定された場合は、ステップＳ５４に進む。
【００５０】
次に、段組領域間締め処理部１０４が、ステップＳ５３において決定された移動先ページ（第１のページ）と移動元ページ（第２のページ）とを選択する（ステップＳ５４）。そして、段組領域間締め処理部１０４が、移動先ページ、移動元ページに含まれる段組領域を処理対象として、段組領域に含まれるブロック間の空白を詰める間締め処理を行う（ステップＳ５５）。具体的には、段組領域間締め処理部１０４は、移動先ページ、移動元ページに含まれる段組領域の段を順次処理対象として選択し、選択した段を仮想的なページとして扱って、図１２を参照して説明したページ間締め処理と同様の方法で、間締め処理を実行する。段組領域間締め処理部１０４は、現在処理対象である移動先の段に含まれるブロック間の空白を所定の距離まで詰めた場合に該空白が詰められた段に次に処理対象となる段である移動元の段の先頭ブロックが収まるかを判断する。移動先の段は、移動先の段の次の段に含まれるブロックの移動先となる段である。移動元の段は、前の段への移動対象となるブロックが含まれる段である。すなわち、段組領域間締め処理部１０４は、少なくとも第１の段と第２の段の複数の段組で構成されるページにおいて、第１の段に含まれるオブジェクト間の空白を所定の距離まで詰めることにより第１の段の空白を削減する削減手段として機能する。段組領域間締め処理部１０４は、上記空白が詰められた移動先の段に次に処理対象となる移動元の段の先頭ブロックが収まる場合に、移動元の段の先頭ブロックを該空白が詰められた移動先の段（の最終ブロックの下部）に移動する。つまり、段組領域間締め処理部１０４は第１の段のオブジェクト間の空白を削減することにより生じる第１の段の下部の空白に第２の段の先頭のオブジェクトが収まる場合、第２の段の先頭のオブジェクトを第１の段の下部の空白に移動する移動手段として機能する。
【００５１】
図１６は、図１５（Ａ）のステップＳ５２における間締め可能なページの抽出処理を説明するフローチャートである。まず、段組領域間締め処理部１０４が、移動先ページと移動元ページとを設定する（ステップＳ５２１）。具体的には、段組領域間締め処理部１０４は、図１５（Ａ）のステップＳ５５における間締め処理が完了する度に、設定対象とする移動先ページを移動元ページの次のページに更新し、設定対象とする移動元ページを移動元ページの次のページに更新する。次に、段組領域間締め処理部１０４が、図１５（Ａ）のステップＳ５１において取得された段組領域構成情報のうち、ステップＳ５２１において設定された移動先ページと移動元ページとに対応する段組領域構成情報を用いて、以下の処理を行う。すなわち、段組領域間締め処理部１０４は、移動元ページの先頭のブロックが移動先ページに移動可能であるかを判断する（ステップＳ５２２）。
【００５２】
具体的には、段組領域間締め処理部１０４が、移動先ページに対応する段組領域構成情報を参照して、段組領域の最終段にリンクしている段内ブロック情報を取得する。そして、段組領域間締め処理部１０４が、取得した段内ブロック情報内の最後尾に設定されているブロックＩＤに対応するブロックの座標をオブジェクトリストから取得し、取得した座標を第１の座標とする。取得された第１の座標は、移動先ページの最終段の最終ブロックの座標である。また、組領域間締め処理部１０４が、移動元ページに対応する段組領域構成情報を参照して、段組領域の最初の段にリンクしている段内ブロック情報を取得する。そして、段組領域間締め処理部１０４が、取得した段内ブロック情報内の先頭に設定されているブロックＩＤに対応するブロックの座標をオブジェクトリストから取得し、第２の座標とする。第２の座標は、移動元ページの最初の段の先頭ブロックの座標である。段組領域間締め処理部１０４は、取得した第１の座標と第２の座標とに基づいて、移動元ページの最初の段の先頭ブロックが移動先ページの最終の段の最終ブロックの下部の空白に収まるかを判断する。移動元ページの最初の段の先頭ブロックが移動先ページの最終の段の最終ブロックの下部の空白に収まる場合、段組領域間締め処理部１０４は、移動元ページの先頭のブロックが移動先ページに移動可能であると判断する。移動元ページの最初の段の先頭ブロックが移動先ページの最終の段の最終ブロックの下部の空白に収まらない場合、段組領域間締め処理部１０４は、移動元ページの先頭のブロックが移動先ページに移動可能でないと判断する。
【００５３】
移動元ページの先頭のブロックが移動先ページに移動可能である場合、現在設定されている移動元ページと移動先ページを間締め処理の対象とする移動先ページと移動元ページとして決定する（ステップＳ５２５）。移動元ページの先頭のブロックが移動先ページに移動可能でない場合、段組領域間締め処理部１０４が、現在設定されている移動元ページが最終ページであるかを判断する（ステップＳ５２３）。現在設定されている移動元ページが最終ページである場合、段組領域間締め処理部１０４が、間締め処理の対象とする移動先ページと移動元ページとがないことを示す情報を処理結果として出力する（ステップＳ５２４）。現在設定されている移動元ページが最終ページでない場合、上記ステップＳ５２１に戻り、移動先ページ、移動元ページをそれぞれ一つ後ろのページに設定する。
【００５４】
図１５及び図１６を参照して説明した段組領域間締め処理により、例えば図１５（Ｂ）中に示すブロックＡ、Ｂ、Ｃの間の空白が詰められ、ブロックＤが、ブロックＣの下部に移動する。また、ブロックＥ、Ｆがページ１８０１の上方に移動するとともに、ブロックＧがブロックＦの下部に移動する。また、ブロックＨがページ１８０２の上方に移動するとともに、ブロックＩがブロックＨの下部に移動する。また、ブロックＪがページ１８０２の上方に移動する。これにより、ページ１８０１、１８０２におけるブロックの配置状態は、図１５（Ｃ）中に示す状態となる。すなわち、実施例１の情報処理装置によれば、文書内の段組構成に応じて文書内の余剰余白を除去することができ、余剰余白の除去後に、段組構成に対応する段組領域内で，文書に含まれるオブジェクトの掲載順序が変わらない。その結果、文脈に不整合を引き起こすおそれがなくなる。
【００５５】
次に、本発明の実施例２について説明する。実施例２においては、コンピュータ１が、図８のステップＳ５の処理の後に、段高さ平滑化処理、ページ間締め処理を順次実行する。段高さ平滑化処理は、複数段構成に対応する段の高さが平滑化するように、段に含まれるブロックのうち他の段に移動するブロックを決定し、決定したブロックを他の段に移動する処理である。また、コンピュータ１が段高さ平滑化処理に続いて実行するページ間締め処理は、図８のステップＳ６におけるページ間締め処理と同様の処理である。
【００５６】
図１７は、段高さ平滑化処理の例を説明するフローチャートである。まず、段高さ平滑化部１０６が、例えばユーザの操作入力に従ってページを選択するとともに、選択したページに含まれる複数段構成に対応する段組領域を選択する（ステップＳ７１）。次に、段高さ平滑化部１０６が、選択された段組領域に含まれる段の高さを揃える（ステップＳ７２）。そして、段高さ平滑化部１０６が、段の高さを揃えた段組領域と、その段組領域の下部の段組領域との間の余白が所定の距離以下になるように、下部の段組領域を上方に移動する（ステップＳ７３）。具体的には、図１９において、段組領域２００１の段の高さを揃えた場合、段組領域２００１の下部にある段組領域２００２を上方に移動する処理に相当する。
【００５７】
次に、段高さ平滑化部１０６が、選択されている段組領域がページ内で最下部に配置された段組領域であるかを判断する（ステップＳ７４）。選択されている段組領域がページ内で最下部に配置された段組領域である場合は、処理を終了する。選択されている段組領域がページ内で最下部に配置された段組領域でない場合は、処理が上記ステップＳ７１に戻り、段高さ平滑化部１０６が、次の複数段構成に対応する段組領域を選択する。
【００５８】
図１８は、図１７のステップＳ７２における段組領域に含まれる段の高さを揃える処理を説明するフローチャートである。まず、段高さ平滑化部１０６が、選択されている段組領域に含まれる段を取得する（ステップＳ７２１）。この例では、例えば、図１９（Ａ）に示すページ２０００に含まれる２段組の段組領域である段組領域２００１が選択されているものとする。図１９（Ａ）中に示す段組領域２００２は、１段組の段組領域であるので、選択されていない。段高さ平滑化部１０６は、段組領域２００１に含まれる段である段２１００と段２１０１とを取得する。
【００５９】
次に、段高さ平滑化部１０６が、取得した各々の段の高さを算出する（ステップＳ７２２）。この例では、段高さ平滑化部１０６は、段に含まれる最上部のブロックの最上端のＹ座標と、最下部のブロックの最下端のＹ座標との差を、段の高さとして算出する。次に、段高さ平滑化部１０６が、段の高さが平滑化しているかを判断する（ステップＳ７２３）。例えば、段高さ平滑化部１０６が、段組領域内に含まれる複数の段のそれぞれの高さを比較し、各段の高さの差が閾値以上か否かを判断する。すなわち、段高さ平滑化部１０６は、段組領域間締め処理部１０４によって第２の段のオブジェクトが移動された後の第１の段の高さと第２の段の高さを比較する比較手段として機能する。両者の高さの差が閾値以下である場合に、段高さ平滑化部１０６が、段の高さが平滑化していると判断する。一方、両者の高さの差が閾値を超えている場合に、段高さ平滑化部１０６が、段の高さが平滑化していないと判断する。例えば、図１９（Ａ）の段２１０１の段の高さと段２１００の段の高さの差を計算し、その差が閾値を越えているか否かが判断される。段高さ平滑化部１０６が、段の高さが平滑化していると判断した場合は、処理を終了する。段高さ平滑化部１０６が、段の高さが平滑化していないと判断した場合は、ステップＳ７２４に進む。
【００６０】
次に、ステップＳ７２４において、段高さ平滑化部１０６が、ブロックを段に再配置することができるかを判断する（ステップＳ７２４）。この例では、段高さ平滑化部１０６は、ステップＳ７２１において取得された段のいずれかに２つ以上のブロックが存在するかを判断する。取得された段のいずれかに２つ以上のブロックが存在する場合、段高さ平滑化部１０６が、ブロックを段に再配置することができると判断して、ステップＳ７２５に進む。取得された段のいずれにも２つ以上のブロックが存在しない場合、段高さ平滑化部１０６が、ブロックを段に再配置することができないと判断して、処理を終了する。
【００６１】
ステップＳ７２５において、段高さ平滑化部１０６が、段組領域に含まれるブロック群の分割点を決定する（ステップＳ７２５）。段組領域に含まれるブロック群の分割点（以下、単に分割点と記述する）は、段組領域に含まれる全てのブロックを縦（Ｙ方向）に並べることによって構成されるブロック群を分割する点である。この例では、分割点は、ブロックとブロックとの間の境界の位置にある点（境界点）である。
【００６２】
段高さ平滑化部１０６は、例えば、以下のようにして分割点を決定する。まず、段高さ平滑化部１０６が、段組領域に含まれる全てのブロックを縦（Ｙ方向）に並べることによって得られるブロック群の高さを求める。段高さ平滑化部１０６は、例えば、図１９（Ａ）中のブロック２２０１乃至２２０４を図１９（Ｂ）に示すようにＹ方向に並べた場合のブロック群の高さであるｈ１を求める。次に、段高さ平滑化部１０６が、求めた高さを段組領域内の段の数で割った値を分割基準値として算出する。分割基準値は、分割点を決める基準となる値である。この例では、図１９（Ａ）に示す段組領域２００１の段の数は２である。従って、段高さ平滑化部１０６は、図１９（Ｂ）に示すｈ１を２で割って、分割基準値としてｈ１１を算出する。
【００６３】
そして、段高さ平滑化部１０６が、分割基準値とブロック群に含まれるブロックの座標とに基づいて、分割点を決定する。具体的には、段高さ平滑化部１０６は、ブロック群において最上部に位置するブロックの上端から分割基準値だけ下方に位置する点を基準点として決定する。図１９（Ｂ）に示す例では、段高さ平滑化部１０６が、最上部のブロックであるブロック２２０１の上端からｈ１１分下方の位置にある点であるＡ点を基準点として決定する。段高さ平滑化部１０６は、ブロックとブロックとの間の境界点のうち、基準点に対応する点を分割点として決定する。例えば、基準点がブロックとブロックとの間の境界点である場合には、段高さ平滑化部１０６は、基準点を分割点として決定する。
【００６４】
ここで、基準点が、ブロック群に含まれるブロックの上端と下端との間に位置する場合がある。このブロックを以下では基準点包含ブロックと記述する。例えば、図１９（Ｂ）に示す例では、基準点であるＡ点が、ブロック２２０３の上端と下端との間に位置するので、ブロック２２０３が基準点包含ブロックである。段高さ平滑化部１０６は基準点包含ブロックと基準点包含ブロックの直上に位置するブロックとの間の境界点と、基準点包含ブロックと基準点包含ブロックの直下に位置するブロックとの間の境界点とのうち分割基準点に近い方の境界点を分割点として決定する。図１９（Ｂ）に示す例では、ブロック２２０２とブロック２２０２の直上に位置するブロック２２０１との間の境界点がＢ点である。また、ブロック２２０２とブロック２２０２の直下に位置するブロック２２０３との間の境界点がＣ点である。段高さ平滑化部１０６は、Ｂ点とＣ点のうち、基準点であるＡ点に近い方の境界点であるＢ点を分割点として決定する。
【００６５】
図１８に戻って、段高さ平滑化部１０６が、段組領域に含まれるブロック群を分割点で分割して、段組領域の各々の段に再配置するブロックを決定する（ステップＳ７２６）。例えば、段高さ平滑化部１０６は、図１９（Ｂ）に示すブロック群を分割点であるＢ点で分割する。これにより、ブロック群が上から順に分割点で分割され、複数のブロック群が順次生成される。段高さ平滑化部１０６は、分割によって生成されたブロック群に含まれるブロックを、段組領域の段に再配置するブロックとして決定する。例えば、段高さ平滑化部１０６は、分割によって最初に生成されるブロック群に含まれるブロック２２０１とブロック２２０２とを、段組領域の最初の段すなわち図１９（Ａ）中の段２１０１に再配置するブロックとして決定する。また、段高さ平滑化部１０６は、分割によって２番目に生成されるブロック群に含まれるブロック２２０３とブロック２２０４とを段組領域の２番目の段すなわち図１９（Ａ）中の段２１００に再配置するブロックとして決定する。
【００６６】
図１８に戻って、段高さ平滑化部１０６が、上記ステップＳ７２６において決定したブロックを各々の段に再配置する（ステップＳ７２７）。例えば、段高さ平滑化部１０６は、図１９（Ｃ）に示すように、段２１０１にブロック２２０１とブロック２２０２とを配置し、段２１００にブロック２２０３とブロック２２０４とを配置する。本発明の一実施形態によれば、上記ステップＳ７２７において、移動手段として機能する段組領域間締め処理部１０４が、ステップＳ７２６において再配置する段として決定されたブロックを各々の段に再配置するようにしてもよい。例えば段高さ平滑化部１０６（または段組領域間締め処理部１０４）が、移動したブロックの一部を戻すことにより段の高さが平滑化される。すなわち、段高さ平滑化部１０６は、第１の段の高さと第２の段の高さの差が閾値以上である場合、第１の段の高さと第２の段の高さの差が閾値以下になるように第１の段のオブジェクトの一部を第２の段に戻す。これにより、段組領域２００１に含まれる段の高さが平滑化する。
【００６７】
実施例２では、コンピュータ１のページ間締め処理部１０５が、段高さ平滑化処理に続いて、ページ間締め処理を実行する。図１９（Ｃ）に示す例では、段高さ平滑化部１０６による段高さ平滑化処理によって、段組領域２００１に含まれる段の高さが平滑化し、段組領域２００１と段組領域２００２との間に空白２００３が生じる。そこで、ページ間締め処理部１０５は、段組領域２００２に含まれるブロックを上方に移動させて、空白２００３を詰める。ページ間締め処理部１０５が、ページ２０００の次のページが段組領域２００２と同じ１段組の段組構成に対応する段組領域であって、次のページの先頭ブロックが段組領域２００２に含まれるブロックの下部に収まる場合に、以下の処理を行うようにしてもよい。すなわち、ページ間締め処理部１０５は、次のページの先頭ブロックを段組領域２００２に含まれるブロックの下部に移動させる。
【００６８】
実施例２の情報処理装置によれば、複数段の段組領域に含まれる段の高さが平滑化する。その結果、平滑化処理の対象となった段組領域とこの段組領域に続く段組領域との間に、例えば図１９（Ｃ）中の空白２００３のような横（Ｘ方向）に横断する空白を空けることができる。そして、実施例２の情報処理装置が、平滑化処理の対象となった段組領域に続く段組領域に含まれるブロックを上方に移動させて上記横に横断する空白を詰めることができる。その結果、例えば段組構成が複数段から１段に変わる場合でも、この１段の段組構成に対応する段組領域に含まれるブロックを一様に上方に移動させることによって、ページ内の余剰余白を除去することができる。
【００６９】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【００７０】
１  コンピュータ
２  プリンタ
３  ディスプレイ装置
【図１】
2012003580.tif 000003
【図２】
2012003580.tif 000004
【図３】
2012003580.tif 000005
【図４】
2012003580.tif 000006
【図５】
2012003580.tif 000007
【図６】
2012003580.tif 000008
【図７】
2012003580.tif 000009
【図８】
2012003580.tif 000010
【図９】
2012003580.tif 000011
【図１０】
2012003580.tif 000012
【図１１】
2012003580.tif 000013
【図１２】
2012003580.tif 000014
【図１３】
2012003580.tif 000015
【図１４】
2012003580.tif 000016
【図１５】
2012003580.tif 000017
【図１６】
2012003580.tif 000018
【図１７】
2012003580.tif 000019
【図１８】
2012003580.tif 000020
【図１９】
2012003580.tif 000021