情報処理装置、情報処理装置の制御方法、及びコンピュータプログラム
【課題】文書内の段組の構成に応じて文書に含まれる余白を詰める間締め処理を行う情報処理装置を提供する。
【解決手段】コンピュータ1が、文書データに含まれるオブジェクト間の空白の大きさに基づいて、オブジェクトをブロック化してブロックを生成し、上記ブロックを縦方向に分割し、分割結果に基づいて、文書データの段組構成を検知する。コンピュータ1が、検知した段組構成に複数段構成が含まれる場合に、複数段構成に対応する段組領域に含まれる段のオブジェクトを再ブロック化する。そして、コンピュータ1が、再ブロック化された段組領域を処理対象として、段組領域に含まれるブロック間の空白を詰める間締め処理を行う。
【解決手段】コンピュータ1が、文書データに含まれるオブジェクト間の空白の大きさに基づいて、オブジェクトをブロック化してブロックを生成し、上記ブロックを縦方向に分割し、分割結果に基づいて、文書データの段組構成を検知する。コンピュータ1が、検知した段組構成に複数段構成が含まれる場合に、複数段構成に対応する段組領域に含まれる段のオブジェクトを再ブロック化する。そして、コンピュータ1が、再ブロック化された段組領域を処理対象として、段組領域に含まれるブロック間の空白を詰める間締め処理を行う。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理装置の制御方法、及びコンピュータプログラムに関する。
【背景技術】
【0002】
文書を印刷する際に、用紙節約のため、元文書のデータを加工し、再レイアウトする技術が提案されている。具体的には、行間や、図と図の隙間といったコンテンツ間の余白を詰める等の方法が挙げられる。下記の特許文献1は、入力されたデータを解析してオブジェクト別に分離し、移動対象となるオブジェクトを縮小し、左上に詰めていくことで生じた余白に次のオブジェクトを移動させ、削除可能な空白を作成する画像処理システムを開示している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−48520号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1が開示する画像処理システムは、文書に含まれる段組の構成を考慮せずにコンテンツ間の余白を詰めていく。従って、この画像処理システムによっては、オブジェクトの掲載順序が変わってしまい、文脈に不整合を引き起こす可能性がある。
【0005】
本発明は、文書内の段組の構成に応じて文書に含まれる余白を詰める間締め処理を行う情報処理装置、情報処理装置の制御方法、及びコンピュータプログラムの提供を目的とする。
【課題を解決するための手段】
【0006】
本発明の一実施形態の情報処理装置は、少なくとも第1の段と第2の段の複数の段組で構成されるページにおいて、前記第1の段に含まれるオブジェクト間の空白を所定の距離まで詰めることにより前記第1の段の空白を削減する削減手段と、前記削減手段が前記第1の段の前記オブジェクト間の空白を削減することにより生じる第1の段の下部の空白に前記第2の段の先頭のオブジェクトが収まる場合、前記第2の段の先頭のオブジェクトを第1の段の下部の空白に移動する移動手段とを備える。
【発明の効果】
【0007】
本発明の情報処理装置によれば、文書内の段組構成に応じて文書内の余剰余白を除去することができる。従って、余剰余白の除去後に、段組構成に対応する段組領域内で、文書に含まれるオブジェクトの掲載順序が変わらない。その結果、文脈に不整合を引き起こすおそれがなくなる。
【図面の簡単な説明】
【0008】
【図1】本実施形態のシステム構成例を示す図である。
【図2】プロセッサによるオブジェクト情報の管理例を説明する図である。
【図3】オブジェクト情報の例である。
【図4】文書データの構造の一例を示す図である。
【図5】文書データのページ内の領域を説明する図である。
【図6】コンピュータの機能ブロック図の一例である。
【図7】段組構成情報の例を説明する図である。
【図8】実施例1の情報処理装置の全体動作処理を示すフローチャートである。
【図9】ブロック化処理の例を説明するフローチャートである。
【図10】ページ内のオブジェクトの配置とブロック化を説明する図である。
【図11】縦方向ブロック分割処理を説明するフローチャートである。
【図12】ページ間締め処理の例を説明するフローチャートである。
【図13】ページ間締め処理の例を説明する図である。
【図14】段組領域再ブロック化処理の例を説明する図である。
【図15】段組領域間締め処理の例を説明する図である。
【図16】間締め可能なページの抽出処理を説明するフローチャートである。
【図17】段高さ平滑化処理の例を説明するフローチャートである。
【図18】段組領域に含まれる段の高さを揃える処理を説明するフローチャートである。
【図19】段組領域に含まれる段の高さを揃える処理を説明する図である。
【発明を実施するための形態】
【0009】
図1は、本実施形態のシステム構成例を示す図である。図1に示すシステムは、コンピュータ1と、プリンタ2と、ディスプレイ装置3とを備える。コンピュータ1は、本実施形態の情報処理装置である。コンピュータ1は、印刷レイアウト済みの文書データについて間締め処理を実行する。間締め処理は、文書データに含まれる行間等の空白部を詰める処理である。コンピュータ1が間締め処理を実行することにより、文書の総ページ数を削減することができる。また、コンピュータ1は、プリンタ2に対して上記間締め処理された文書データを送信し、この文書データを印刷させる。また、コンピュータ1は、ディスプレイ装置3に対して各種の表示データを送信し、この表示データを表示させる。本実施形態において、文書データは、例えばPDF(Portable Document Format)等の、ページに配置されるオブジェクトを含むデータである。プリンタ2は、コンピュータ1からの指示に従って文書データを印刷する。また、ディスプレイ装置3は、コンピュータ1からの指示に従って表示データを表示する。
【0010】
コンピュータ1は、プロセッサ11、I/O(Input/Output)インタフェース12、16、メモリ13を備える。また、コンピュータ1は、CD−ROM(Compact Disk Read Only Memory )ドライブ14、ビデオインタフェース15、記憶装置17を備える。プロセッサ11乃至記憶装置17は、システムバス18を介して互いに接続されている。プロセッサ11は、コンピュータ1全体を制御する。プロセッサ11は、例えば、CPU(Central Processing Unit )である。プロセッサ11は、ネットワーク及びI/Oインタフェース16を通じて文書データを外部装置から受信する。プロセッサ11が、受信した文書データを解析する。この文書データの解析結果は、例えば、オブジェクトリストを含む。オブジェクトリストは、オブジェクト情報のリストである。オブジェクト情報は、文書データに含まれるオブジェクトに関する情報である。プロセッサ11は、オブジェクトリストを記憶装置17に記憶して管理する。本実施形態に特有の動作として、プロセッサ11は、上記文書データの解析結果に基づいて文書データをブロック化し、該ブロック化結果に基づいて文書データの段組構成を検知する。そして、プロセッサ11は、検知した段組構成に応じて、文書データに含まれるブロック間の空白を詰める間締め処理を行う。
【0011】
I/Oインタフェース12は、キーボード4、マウス5を介して入力された情報をコンピュータ1に入力する。I/Oインタフェース16は、コンピュータ1からプリンタ2に対する文書データの送信を媒介する。また、I/Oインタフェース16は、ネットワークを通じて外部装置と通信する。ネットワークは、例えば、LAN(Local Area Network)や、WAN(Wide Area Network )等である。
【0012】
メモリ13は、RAM(Random Access Memory)とROM(Read Only Memory)とを備える記憶手段である。RAMは、プロセッサ11が処理に用いる作業領域を有する。ROMには、コンピュータ1の制御方法を実現するためのコンピュータプログラムとデータとが予め記憶されている。CD−ROMドライブ14は、不揮発性の記憶媒体であるCD−ROMが格納される装置である。ビデオインタフェース15は、コンピュータ1からディスプレイ装置3への表示データの送信を媒介する。記憶装置17は、例えば、文書データやオブジェクトリストを記憶する。図1に示す例では、記憶装置17は、HDD(Hard Disk Drive )とFDDとを備える。FDDは、Floppy(登録商標) Disk Driveの略語である。記憶装置17が、磁気テープドライブを備えるようにしてもよい。
【0013】
図2は、プロセッサによるオブジェクト情報の管理例を説明する図である。プロセッサ11は、オブジェクト情報をリスト構造の形式でオブジェクトリスト201に格納する。各々のオブジェクト情報は、オブジェクトID203、オブジェクト種類204、左上座標205、右下座標206、オブジェクト固有情報207を含む。オブジェクトID203は、オブジェクトを一意に識別する識別子である。オブジェクト種類204は、オブジェクトの種類を示す。オブジェクトの種類は、例えば、図形、文字列、イメージ、グループ等を含む。オブジェクト種類204に設定されているグループは、このオブジェクト種類204に対応するオブジェクトが、複数のオブジェクトがグループ化されたものであることを示す。グループ化とは、2つ以上のオブジェクトを一つのオブジェクトにまとめる処理のことを指す。このひとまとめにされたオブジェクトをグループ又はブロックと呼称する。グループ化又はブロック化の対象となるオブジェクトとは、文字や画像を始めとするあらゆるオブジェクトである。もちろん、グループそのものもグループ化の対象となり、その場合、グループに対応するオブジェクト情報は階層的に保持される。オブジェクトがブロック化された場合、オブジェクト情報内のオブジェクトIDはブロックのIDを示す。なお、本実施形態において、1つのオブジェクトからなるグループや内部にオブジェクトを保持しないグループも構造上可能である。
【0014】
左上座標205はオブジェクトの左上座標を示す。右下座標は、オブジェクトの右下の座標を示す。オブジェクト固有情報207は、オブジェクトに固有の属性情報を示す。オブジェクト固有情報207は、例えばオブジェクトの種類が図形である場合の線の太さ、線種等を示す情報である。また、オブジェクト固有情報207は、例えばオブジェクトの種類が文字列である場合の文字の書体、サイズ等を示す情報である。オブジェクト情報内のオブジェクト種類204にグループが設定されている場合、オブジェクト固有情報207には、オブジェクトリスト202へのポインタ情報が設定される。オブジェクトリスト202内のオブジェクト情報は、上記オブジェクト情報に対応するグループ化されたオブジェクトに含まれるオブジェクトのオブジェクト情報である。
【0015】
図3は、オブジェクト情報の例である。例えば、図3(B)に示すオブジェクト情報は、図3(A)中に示す、左上座標が(20,34),右下座標が(81,65)である矩形の図形オブジェクトを示す。
【0016】
図4は、本実施形態において処理対象となる文書データの構造の一例を示す図である。コンピュータ1は、例えば図4(A)に示すPDFフォーマット文書を処理対象とする。図4(A)に示すPDFフォーマット文書は、始点(20,34)から、順次、(81,34)、(81,65)、(20,65)、(20,34)を結ぶ図形を示す。図4(B)は、図4(A)に示すPDFフォーマット文書から読み込まれた図形オブジェクトに対応するオブジェクト情報を示す。このオブジェクト情報は、左上座標(20,34)、右下座標(81,65)の長方形に対応する図形オブジェクトを示す。
【0017】
図5は、コンピュータが処理対象とする文書データのページ内の領域を説明する図である。図5(A)のページ601、図5(B)のページ602、図5(C)のページ603は、文書データに含まれるページの一例である。図5(A)に示すページ601は、段組構成として2段組の構成(2段構成)を有する。本実施形態では、同じ段組の構成を持つ領域のことを段組領域と呼称する。また、本実施形態では、段組を構成する領域を段組領域の段と呼称する。従って、図5(A)に示す例では、段605と段606とを含む領域が、上記2段構成に対応する段組領域である。また、段605、段606は、それぞれ、段組領域の段である。また、余白604は、段605と段606との間の余白(段組余白)である。
【0018】
図5(B)に示すページ602では、領域607が1段組の構成(1段構成)を有する段組領域である。また、領域608が2段組の構成を持つ段組領域である。また、領域608に含まれている領域609、領域610が段組領域の段である。図5(C)に示すページ603では、領域611と領域612とを含む領域が2段構成を有する段組領域である。また、領域611、領域612が、それぞれ、段組領域の段である。また、ブロック613、614、615が、段611内のブロックである。また、ブロック616−618が、段612内のブロックである。また、領域619が1段構成を有する段組領域である。また、ブロック620が、この段組領域内の段に含まれるブロックである。
【0019】
図6は、コンピュータの機能ブロック図の一例である。コンピュータ1は、ブロック化部101、縦方向分割部102、段組領域再ブロック化部103、段組領域間締め処理部104、ページ間締め処理部105、段高さ平滑化部106を備える。本実施形態では、図1に示すメモリ13内のROMにブロック化部101乃至段高さ平滑化部106の機能を実現するコンピュータプログラムが予め記憶されている。プロセッサ11が、ROM内の上記コンピュータプログラムを読み出して実行することにより、本実施形態の情報処理装置の制御方法が実現される。
【0020】
ブロック化部101は、文書データに含まれるオブジェクト間の空白を走査し、該走査によって得られるオブジェクト間の空白の大きさに基づいて、オブジェクトをブロック化して1又は複数のブロックを生成する。本実施形態においては、ブロック化部101は、印刷レイアウト済みの文書データを処理対象とする。ブロック化部101は、ブロックを生成する度に、オブジェクトリスト内のオブジェクト情報を更新する。
【0021】
縦方向分割部102は、ブロック化部101によって生成されたブロックに含まれるオブジェクト間の空白を走査することによって得られる該オブジェクト間の空白の大きさに基づいて、ブロックを縦方向に分割する。縦方向分割部102は、ブロックを分割する度に、オブジェクトリスト内のオブジェクト情報を更新する。
【0022】
段組領域再ブロック化部103は、縦方向分割部102によるブロックの分割結果に基づいて、文書データの段組構成を検知する。具体的には、段組領域再ブロック化部103は、横に並んだ分割されたブロックの数すなわち段の数に基づいて、文書データの段組構成を検知する。複数の段(少なくとも第1の段と第2の段)が横に並んでいる場合、段組領域再ブロック化部103は、この複数の段を含む段組領域の段組構成が複数段構成であると判断する。例えば、図5(C)に示すページ603には、段611と段612という2つの段が横に並んでいる。従って、段組領域再ブロック化部103は、この段611と段612とを含む段組領域の段組構成が2段構成であると判断する。段の横に他の段が並んでいない場合、段組領域再ブロック化部103は、この段を含む段組領域の段組構成が1段構成であると判断する。例えば、図5(C)に示すページ603の段組領域619に含まれる段は1段のみである。従って、段組領域再ブロック化部103は、段組領域619の段組構成が1段構成であると判断する。段組領域再ブロック化部103が文書データの段組構成を検知すると、段組領域再ブロック化部103は、ページ毎に段組構成情報を生成して記憶装置17に記憶する。段組構成情報は、段組構成に関する情報である。
【0023】
図7は、段組構成情報の例を説明する図である。図7(A)は段組構成情報を示す。図7(B)中に示すページ702は、図7(A)に示す段組構成情報に対応するページである。図7(B)中の番号11乃至16は、ページ702内のブロックのIDを示す。図7(A)に示す段組構成情報は、ページ内段組領域情報300、段組領域構成情報301及び302、段内ブロック情報303乃至305を含む。ページ内段組領域情報300は、ページ内に含まれる段組領域に関する情報である。図7(A)に示す例では、ページ内段組領域情報300は、ページ番号714と段組領域の数715とポインタ716及び717を含む。ページ番号714は、図7(B)に示すページ702の識別番号である。段組領域の数715は、ページに含まれる段組領域の数である。ページ702には1段構成の段組領域709と2段構成の段組領域710という2つの段組領域が含まれる。従って、図7(A)中の段組領域の数715には「2」が設定される。ポインタ716、717は、段組領域に対応する段組領域構成情報へのポインタである。ポインタ716は、段組領域構成情報301へのポインタであり、ポインタ717は、段組領域構成情報302へのポインタである。
【0024】
段組領域構成情報は、段組領域の構成に関する情報である。図7(A)に示す例では、段組領域構成情報301は、1段組の段組構成を有する段組領域709の構成に関する情報である。また、段組領域構成情報302は、2段組の段組構成を有する段組領域710の構成に関する情報である。段組領域構成情報301は、段組構成718と段組領域の段719を含む。段組構成718は、段組領域709が1段組であることを示す。段組領域の段719は、段組領域709に含まれる段である段711を示す。段組領域の段は、各々の段に含まれるブロックに対応する段内ブロック情報にリンクしている。例えば、段組領域の段719は、ブロックのIDが11、12であるブロックに対応する段内ブロック情報にリンクしている。同様に、段組領域構成情報302は、段組構成720と段組領域の段721及び722を含む。段組構成720は、段組領域710が2段組であることを示す。段組領域の段721は、段組領域710に含まれる段712を示す。段組領域の段722は、段組領域710に含まれる段713を示す。段組領域の段721は、ブロックのIDが13、14であるブロックに対応する段内ブロック情報にリンクしている。また、段組領域の段722は、ブロックのIDが15、16であるブロックに対応する段内ブロック情報にリンクしている。
【0025】
段内ブロック情報は、各々の段に含まれるブロックに関する情報である。図7(A)に示す例では、段内ブロック情報として、ブロックのIDが設定される。このブロックのIDは、段組領域再ブロック化部103が段組領域に含まれるオブジェクトを再ブロック化した結果生成されるブロックの識別番号である。すなわち、この例では、段内ブロック情報は、段組領域再ブロック化部103が生成対象とするブロックのIDを示す。段内ブロック情報には、段に含まれるブロックの配置順序に従って、段内の先頭のブロックに対応するブロックIDから段内の最後尾のブロックに対応するブロックIDが順次設定される。
【0026】
図6に戻って、段組領域再ブロック化部103は、検知した段組構成に複数段構成が含まれる場合に、該複数段構成に対応する段組領域に含まれる段のオブジェクトを再ブロック化する。例えば、前述した図7(B)中に示すブロックのIDが13であるブロックとブロックのIDが14であるブロックは、段組領域再ブロック化部103が段712内のオブジェクトを再ブロック化した結果生成されたブロックである。段組領域再ブロック化部103は、段組領域に含まれる段のオブジェクトを再ブロック化する度に、オブジェクトリスト内のオブジェクト情報を更新する。
【0027】
段組領域間締め処理部104は、オブジェクトが再ブロック化された段組領域を処理対象として、段組領域に含まれるブロック間の空白を詰める間締め処理(段組領域間締め処理)を行う。具体的には、段組領域間締め処理部104は、文書データのページのうち、オブジェクトが再ブロック化された段組領域を含む第1のページと第2のページとの間でブロックの移動が可能であるかを判断する。段組領域間締め処理部104は、第1のページと第2のページとの間でブロックの移動が可能である場合に、該第1、第2のページの上記オブジェクトが再ブロック化された段組領域に含まれる段を順次処理対象として、該段に含まれるブロック間の空白を詰める。そして、段組領域間締め処理部104は、該段の次に処理対象となる段の先頭ブロックを前記ブロック間の空白が詰められた段に移動する。上記先頭ブロックを移動する処理においては、段組領域間締め処理部104は、現在処理対象である段に含まれるブロック間の空白を詰めた場合に該空白が詰められた段に次に処理対象となる段の先頭ブロックが収まるかを判断する。段組領域間締め処理部104は、該空白が詰められた段に次に処理対象となる段の先頭ブロックが収まる場合に、上記次に処理対象となる段の先頭ブロックを該空白が詰められた段に移動する。
【0028】
ページ間締め処理部105は、文書データのページを処理対象として、ページに含まれるブロック間の空白を詰める間締め処理(ページ間締め処理)を行う。具体的には、ページ間締め処理部105は、段組領域再ブロック化部103が検知した段組構成に1段構成のみが含まれる場合に、該段組構成に対応する段組領域を含むページに含まれるブロック間の空白を詰める。そして、ページ間締め処理部105は、該ページの次のページの先頭ブロックをブロック間の空白が詰められたページに移動する。
【0029】
また、ページ間締め処理部105は、段高さ平滑化部106によって段の高さが平滑化された場合に、少なくとも該平滑化された段を含むページを処理対象としてページ間締め処理を行う。例えば、ページ間締め処理部105は、平滑化された段を含むページに含まれるブロック間の空白を詰めるとともに、該ページの次のページの先頭ブロックを前記ブロック間の空白が詰められたページに移動する。ページ間締め処理部105によるページ間締め処理、又は上記段組領域間締め処理部104による段組領域間締め処理によって、再レイアウトされた文書データが出力対象の文書データとして生成される。
【0030】
段高さ平滑化部106は、段組領域再ブロック化部103が検知した段組構成に複数段構成が含まれる場合に、該複数段構成に対応する段の高さを平滑化する。
【0031】
図8は、本発明の実施例1の情報処理装置の全体動作処理を示すフローチャートである。なお、本願のフローチャートは、CPUが処理に関連するプログラムをメモリから読み出して実行することで実現される。まず、コンピュータ1のブロック化部101が、文書データに含まれるオブジェクトのブロック化処理を実行する(ステップS1)。続いて、縦方向分割部102が、縦方向分割処理を行って、ステップS1におけるブロック化処理によって生成されたブロックを縦方向に分割する(ステップS2)。例えば、図15(B)ではブロックA−CとブロックD−Fとの間にて縦方向の余白があるので、縦方向分割部102は、縦方向分割処理を行える。次に、段組領域再ブロック化部103が、縦方向分割部102によるブロックの分割結果に基づいて、文書データの段組構成を判断する(ステップS3)。段組領域再ブロック化部103が、文書データの段組構成が1段構成のみであると判断した場合、ページ間締め処理部105が、文書データのページを処理対象としてページ間締め処理を行う(ステップS6)。
【0032】
段組領域再ブロック化部103が、文書データの段組構成に複数段構成が含まれると判断した場合は、ステップS4に進む。そして、段組領域再ブロック化部103が、複数段構成に対応する段組領域に含まれる段のオブジェクトを再ブロック化する段組領域再ブロック化処理を行う(ステップS4)。続いて、段組領域間締め処理部104が、段組領域間締め処理を行って(ステップS5)、処理を終了する。
【0033】
図9は、図8のステップS1におけるブロック化処理の例を説明するフローチャートである。まず、ブロック化部101が、文書データのページ内に未処理のオブジェクトが存在するかを判断する(ステップS11)。未処理のオブジェクトが存在する場合、ブロック化部101は、次に処理対象となるオブジェクトすなわち未処理のオブジェクトのうち先頭にあるオブジェクトの読み込みを行う(ステップS15)。次に、ブロック化部101が、ページ内において、読み込んだオブジェクトのY座標が、既にページ上に配置されているオブジェクトのY座標と重なるかを判断する(ステップS16)。読み込んだオブジェクトのY座標が、既に読み込まれているオブジェクトのY座標と重なっていない場合、ブロック化部101は、読み込んだオブジェクトをブロックとしてページ上に配置し(ステップS18)、ステップS11に戻る。
【0034】
図10は、ページ内のオブジェクトの配置とブロック化を説明する図である。図10(A)は、ページ上に既に配置されたオブジェクト1301と、上記ステップS15において読み込んだオブジェクト1302との位置関係を示す。図10(A)に示す例では、オブジェクト1301とオブジェクト1302とはY座標が重なっていない。従って、ブロック化部101は、オブジェクト1302をブロックとしてページ上に配置する。
【0035】
図9に戻って、読み込んだオブジェクトのY座標が、既に読み込まれているオブジェクトのY座標と重なっている場合、ブロック化部101は、重なっているオブジェクトをグループ化してブロックを生成し、ページ上に配置する(ステップS17)。例えば、図10(B)に示すように、オブジェクト1302の処理の次に読み込まれたオブジェクトであるオブジェクト1305は、オブジェクト1303とY座標が重なる。従って、ブロック化部101は、図10(C)に示すように、オブジェクト1303と1305とをグループ化してブロック1306を生成し、ページ上に配置する。オブジェクト1303がブロックである場合は、ブロック化部101は、一旦オブジェクト1303のブロック化を解除してからまとめ直す。また、オブジェクト1305がページ上の複数のオブジェクトとY座標が重なっていた場合、重なっている全てのオブジェクトをブロック化する。
【0036】
図9に戻り、未処理のオブジェクトが存在しない場合、ブロック化部101が、ページに配置された全てのブロックに含まれるオブジェクト間の空白を横方向(図10の例ではX方向)に走査し(ステップS12)、オブジェクト間の空白の大きさを検知する。この例におけるオブジェクト間の空白の大きさは、オブジェクトとオブジェクトとの間のY方向の空白の大きさである。続いて、ブロック化部101が、検知した空白の大きさが予め決められた閾値以下であるオブジェクトを含むブロックを抽出する(ステップS13)。そして、ブロック化部101が、抽出したブロック同士をまとめてブロック化して(ステップS14)、処理を終了する。ブロック化部101は、検知した空白の大きさが予め決められた閾値以下であるオブジェクトを含むブロックについてはまとめずに、そのまま独立したブロックとする。例えば、図10(C)においてブロック1306とブロック1307との空白の大きさが閾値以下であれば、両者はブロックとしてまとめられる。
【0037】
図11は、図8のステップS2における縦方向分割処理を説明するフローチャートである。縦方向分割部102が、ブロック化部101によるブロック化処理によって得られるブロックを対象として、以下の処理を行う。まず、縦方向分割部102が、ブロックを選択する(ステップS21)。続いて、縦方向分割部102が、選択したブロックを90度回転させる(ステップS22)。具体的には、縦方向分割部102が、選択したブロックのY座標とX座標とを互いに置き換える。なお、ここで回転処理を行っているのは、図9を参照して説明したブロック化処理における走査方向と統一させるためである。
【0038】
続いて、縦方向分割部102が、90度回転させた上記ブロックに含まれるオブジェクト間の空白を走査し、該走査によって得られる該オブジェクト間の空白の大きさに基づいて、該オブジェクトをブロック化する(ステップS23)。例えば、図10(C)のブロック1306におけるオブジェクトAとCとの間の空白が閾値以上であれば、両者は分けられる。次に、縦方向分割部102が、上記ステップS23におけるブロック化により得られるブロックからブロックを順次選択し、選択したブロックのY座標とX座標とを変換して、このブロックを−90度回転させる(ステップS24)。これにより、選択したブロックがステップS22の処理における回転方向と逆方向に回転する。続いて、縦方向分割部102が、全てのブロックについて処理を完了したかを判断する(ステップS25)。処理が完了していないブロックがある場合は、上記ステップS21に戻る。全てのブロックについて処理を完了した場合は、処理を終了する。上述した縦方向ブロック分割処理により、縦方向の空白で区切られた1又は複数のブロックが生成される。
【0039】
図12は、図8のステップS6におけるページ間締め処理の例を説明するフローチャートである。この例では、ページ間締め処理部105が、順次、図13(A)に示すページ1001、ページ1002をページ間締め処理の対象とする。ページ1001は、移動先ページである。移動先ページは、移動元ページに含まれるブロックの移動先となるページである。ページ1002は、移動元ページである。移動元ページは、移動先ページの次のページであって、移動先ページへの移動対象となるブロックが含まれるページである。
【0040】
まず、ページ間締め処理部105が、移動先ページのブロック間の空白を検出する(ステップS61)。例えば、ページ間締め処理部105は、図13(A)のページ1001に含まれるブロック1003乃至1005を取得し、取得したブロックとブロックとの間の空白を検出する。
【0041】
次に、ページ間締め処理部105が、移動先ページにおいて上記検出された空白を所定の距離まで詰めた場合に移動先ページに移動元ページの先頭ブロックが収まるかを判断する(ステップS62)。ページ間締め処理部105は、例えば、図13(A)のページ1001内のブロック1004、1005をブロック間の空白を所定の距離まで詰めた場合に、ページ1002内のブロック1006がページ1001に収まるかを判断する。具体的には、ページ間締め処理部105が、検出された全ての空白からそれぞれ予めユーザによって設定されたブロック間空白の最小値(上記所定の距離に相当)を引いた値を合計して、余剰した空白(余剰空白)の高さを求める。ページ間締め処理部105が、移動先ページの最終ブロックと移動先ページの下端との間の空白からページの所定のマージンを引いた値をページ下部空白として求める。そして、ページ間締め処理部105が、余剰空白とページ下部空白とを加えた値を、間締め処理後空白として求める。ページ間締め処理部105が、求めた間締め処理後空白に移動元ページの先頭ブロックが収まるかを判断する。
【0042】
間締め処理後空白に移動元ページの先頭ブロックが収まる場合、ページ間締め処理部105は、移動先ページに移動元ページの先頭ブロックが収まると判断する。間締め処理後空白に移動元ページの先頭ブロックが収まらない場合、ページ間締め処理部105は、移動先ページに移動元ページの先頭ブロックが収まらないと判断する。ページ間締め処理部105が、移動先ページに移動元ページの先頭ブロックが収まらないと判断した場合は処理を終了する。
【0043】
ページ間締め処理部105が、移動先ページに移動元ページの先頭ブロックが収まると判断した場合、ページ間締め処理部105が、移動先ページ内のブロックを上記余剰余白が詰まるように移動させる(ステップS63)。続いて、ページ間締め処理部105が、移動先ページにおける最終ブロックの下部に移動元ページの先頭ブロックを移動させる(ステップS64)。例えば、ページ間締め処理部105が、図13(A)中のページ1002内のブロック1006をページ1001内のブロック1005の下部に移動させる。そして、ページ間締め処理部105が、移動元ページ内において間締め処理を行い(ステップS65)、ステップS61に戻る。ステップS65においては、ページ間締め処理部105が、上記ステップS64における先頭ブロックの移動により生じた空白を詰めるために、該先頭ブロックに続くブロックを順次上方に移動させる。ステップS65により、図13(B)に示すように、ページ1001にはブロック1003乃至1006が配置され、ページ1002にはブロック1007、1008が配置された状態となる。
【0044】
図12を参照して説明したように、ページ間締め処理部105は、現在処理対象であるページに含まれるブロック間の空白を詰めた場合に該空白が詰められたページに次に処理対象となるページの先頭ブロックが収まるかを判断する(ステップS62を参照)。また、ページ間締め処理部105は、空白が詰められたページに次に処理対象となるページの先頭ブロックが収まる場合に、以下の処理を実行する。ページ間締め処理部105は、現在処理対象であるページに含まれるブロック間の空白を詰めるとともに、次に処理対象となるページの先頭ブロックを該空白が詰められたページに移動する(ステップS63,S64を参照)。これにより、文書のページに含まれる余剰余白を除去することができ、印刷用紙を節約することができる。
【0045】
図14は、図8のステップS4における段組領域再ブロック化処理の例を説明する図である。図14(A)は、段組領域再ブロック化処理の例を説明するフローチャートである。まず、段組領域再ブロック化部103が、縦方向分割部102によるブロックの分割結果に基づいて、文書データの段組構成を検知する(ステップS41)。ステップS41においては、段組領域再ブロック化部103は、更に、ページ毎に段組構成情報を生成して記憶装置17に記憶する。次に、段組領域再ブロック化部103が、段組領域の段のうち、未処理の段が存在するかを判断する(ステップS42)。未処理の段が存在しない場合は、処理を終了する。
【0046】
未処理の段が存在する場合、段組領域再ブロック化部103が、段組構成情報を参照して、処理対象の段組領域の段を取得して(ステップS43)、ステップS44に進む。例えば、段組領域再ブロック化部103は、図14(B)に示すページ1601に含まれる段組領域として、段1602、1603を含む2段構成の段組領域を取得する。また、段組領域再ブロック化部103は、段組構成情報(図7(A)を参照)に含まれる段組領域構成情報に設定されている段組領域の段を取得する。例えば、段組領域間締め処理部104は、図14(B)中の段1602を処理対象の段組領域の段として取得する。
【0047】
そして、段組領域再ブロック化部103が、取得した段に含まれるオブジェクトをブロック化(再ブロック化)する(ステップS44)。段組領域再ブロック化部103は、例えば、図7(A)に示す段組領域構成情報を参照して、上記取得した段にリンクしている段内ブロック情報を取得する。そして、段組領域再ブロック化部103は、取得した段内ブロック情報に設定されているブロックのIDに対応するブロックに含まれるオブジェクトを再ブロック化する。段組領域再ブロック化部103は、図9を参照して前述したブロック化処理と同様の処理を行って、オブジェクトの再ブロック化を行う。ステップS44の処理の後、処理がステップS42に進む。ステップS44におけるオブジェクトの再ブロック化の結果、例えば図14(C)に示すように、図14(B)中の段1602に含まれているオブジェクトがブロック1604乃至1608という5つのブロックにブロック化される。
【0048】
図15は、図8のステップS5における段組領域間締め処理の例を説明する図である。図15(A)は、段組領域間締め処理の例を説明するフローチャートである。段組領域間締め処理部104が段組構成情報を参照し、オブジェクトが再ブロック化された段組領域を含むページを対象に、ページの最下部の段組領域の段組領域構成情報と次のページの最上部の段組領域の段組領域構成情報とを取得する(ステップS51)。段組領域間締め処理部104は、例えば、図15(B)中の移動先ページの候補であるページ1801の最下部の段組領域の段組領域構成情報と、移動元ページの候補であるページ1802の最上部の段組領域の段組領域構成情報とを取得する。図15(B)に示すページ1801は、段組領域1900を含む。段組領域1900は段1902と段1903とを含む。段1902はブロックA乃至Cを含む。段1903はブロックD乃至Fを含む。ページ1802は、段組領域1901を含む。段組領域1901は段1904と段1905とを含む。段1904はブロックGとブロックHとを含む。段1905はブロックIとブロックJとを含む。
【0049】
図15(A)に戻って、段組領域間締め処理部104が、ステップS51において取得された段組領域構成情報を用いて、間締め可能なページの抽出処理を行う(ステップS52)。間締め可能なページの抽出処理は、間締め処理の対象とする移動先ページと移動元ページとを決定する処理である。続いて、段組領域間締め処理部104が、間締め可能なページの抽出結果に基づいて、間締め処理の対象とする移動先ページと移動元ページとが決定されたかを判断する(ステップS53)。移動先ページと移動元ページとが決定されていない場合は、処理を終了する。移動先ページと移動元ページとが決定された場合は、ステップS54に進む。
【0050】
次に、段組領域間締め処理部104が、ステップS53において決定された移動先ページ(第1のページ)と移動元ページ(第2のページ)とを選択する(ステップS54)。そして、段組領域間締め処理部104が、移動先ページ、移動元ページに含まれる段組領域を処理対象として、段組領域に含まれるブロック間の空白を詰める間締め処理を行う(ステップS55)。具体的には、段組領域間締め処理部104は、移動先ページ、移動元ページに含まれる段組領域の段を順次処理対象として選択し、選択した段を仮想的なページとして扱って、図12を参照して説明したページ間締め処理と同様の方法で、間締め処理を実行する。段組領域間締め処理部104は、現在処理対象である移動先の段に含まれるブロック間の空白を所定の距離まで詰めた場合に該空白が詰められた段に次に処理対象となる段である移動元の段の先頭ブロックが収まるかを判断する。移動先の段は、移動先の段の次の段に含まれるブロックの移動先となる段である。移動元の段は、前の段への移動対象となるブロックが含まれる段である。すなわち、段組領域間締め処理部104は、少なくとも第1の段と第2の段の複数の段組で構成されるページにおいて、第1の段に含まれるオブジェクト間の空白を所定の距離まで詰めることにより第1の段の空白を削減する削減手段として機能する。段組領域間締め処理部104は、上記空白が詰められた移動先の段に次に処理対象となる移動元の段の先頭ブロックが収まる場合に、移動元の段の先頭ブロックを該空白が詰められた移動先の段(の最終ブロックの下部)に移動する。つまり、段組領域間締め処理部104は第1の段のオブジェクト間の空白を削減することにより生じる第1の段の下部の空白に第2の段の先頭のオブジェクトが収まる場合、第2の段の先頭のオブジェクトを第1の段の下部の空白に移動する移動手段として機能する。
【0051】
図16は、図15(A)のステップS52における間締め可能なページの抽出処理を説明するフローチャートである。まず、段組領域間締め処理部104が、移動先ページと移動元ページとを設定する(ステップS521)。具体的には、段組領域間締め処理部104は、図15(A)のステップS55における間締め処理が完了する度に、設定対象とする移動先ページを移動元ページの次のページに更新し、設定対象とする移動元ページを移動元ページの次のページに更新する。次に、段組領域間締め処理部104が、図15(A)のステップS51において取得された段組領域構成情報のうち、ステップS521において設定された移動先ページと移動元ページとに対応する段組領域構成情報を用いて、以下の処理を行う。すなわち、段組領域間締め処理部104は、移動元ページの先頭のブロックが移動先ページに移動可能であるかを判断する(ステップS522)。
【0052】
具体的には、段組領域間締め処理部104が、移動先ページに対応する段組領域構成情報を参照して、段組領域の最終段にリンクしている段内ブロック情報を取得する。そして、段組領域間締め処理部104が、取得した段内ブロック情報内の最後尾に設定されているブロックIDに対応するブロックの座標をオブジェクトリストから取得し、取得した座標を第1の座標とする。取得された第1の座標は、移動先ページの最終段の最終ブロックの座標である。また、組領域間締め処理部104が、移動元ページに対応する段組領域構成情報を参照して、段組領域の最初の段にリンクしている段内ブロック情報を取得する。そして、段組領域間締め処理部104が、取得した段内ブロック情報内の先頭に設定されているブロックIDに対応するブロックの座標をオブジェクトリストから取得し、第2の座標とする。第2の座標は、移動元ページの最初の段の先頭ブロックの座標である。段組領域間締め処理部104は、取得した第1の座標と第2の座標とに基づいて、移動元ページの最初の段の先頭ブロックが移動先ページの最終の段の最終ブロックの下部の空白に収まるかを判断する。移動元ページの最初の段の先頭ブロックが移動先ページの最終の段の最終ブロックの下部の空白に収まる場合、段組領域間締め処理部104は、移動元ページの先頭のブロックが移動先ページに移動可能であると判断する。移動元ページの最初の段の先頭ブロックが移動先ページの最終の段の最終ブロックの下部の空白に収まらない場合、段組領域間締め処理部104は、移動元ページの先頭のブロックが移動先ページに移動可能でないと判断する。
【0053】
移動元ページの先頭のブロックが移動先ページに移動可能である場合、現在設定されている移動元ページと移動先ページを間締め処理の対象とする移動先ページと移動元ページとして決定する(ステップS525)。移動元ページの先頭のブロックが移動先ページに移動可能でない場合、段組領域間締め処理部104が、現在設定されている移動元ページが最終ページであるかを判断する(ステップS523)。現在設定されている移動元ページが最終ページである場合、段組領域間締め処理部104が、間締め処理の対象とする移動先ページと移動元ページとがないことを示す情報を処理結果として出力する(ステップS524)。現在設定されている移動元ページが最終ページでない場合、上記ステップS521に戻り、移動先ページ、移動元ページをそれぞれ一つ後ろのページに設定する。
【0054】
図15及び図16を参照して説明した段組領域間締め処理により、例えば図15(B)中に示すブロックA、B、Cの間の空白が詰められ、ブロックDが、ブロックCの下部に移動する。また、ブロックE、Fがページ1801の上方に移動するとともに、ブロックGがブロックFの下部に移動する。また、ブロックHがページ1802の上方に移動するとともに、ブロックIがブロックHの下部に移動する。また、ブロックJがページ1802の上方に移動する。これにより、ページ1801、1802におけるブロックの配置状態は、図15(C)中に示す状態となる。すなわち、実施例1の情報処理装置によれば、文書内の段組構成に応じて文書内の余剰余白を除去することができ、余剰余白の除去後に、段組構成に対応する段組領域内で,文書に含まれるオブジェクトの掲載順序が変わらない。その結果、文脈に不整合を引き起こすおそれがなくなる。
【0055】
次に、本発明の実施例2について説明する。実施例2においては、コンピュータ1が、図8のステップS5の処理の後に、段高さ平滑化処理、ページ間締め処理を順次実行する。段高さ平滑化処理は、複数段構成に対応する段の高さが平滑化するように、段に含まれるブロックのうち他の段に移動するブロックを決定し、決定したブロックを他の段に移動する処理である。また、コンピュータ1が段高さ平滑化処理に続いて実行するページ間締め処理は、図8のステップS6におけるページ間締め処理と同様の処理である。
【0056】
図17は、段高さ平滑化処理の例を説明するフローチャートである。まず、段高さ平滑化部106が、例えばユーザの操作入力に従ってページを選択するとともに、選択したページに含まれる複数段構成に対応する段組領域を選択する(ステップS71)。次に、段高さ平滑化部106が、選択された段組領域に含まれる段の高さを揃える(ステップS72)。そして、段高さ平滑化部106が、段の高さを揃えた段組領域と、その段組領域の下部の段組領域との間の余白が所定の距離以下になるように、下部の段組領域を上方に移動する(ステップS73)。具体的には、図19において、段組領域2001の段の高さを揃えた場合、段組領域2001の下部にある段組領域2002を上方に移動する処理に相当する。
【0057】
次に、段高さ平滑化部106が、選択されている段組領域がページ内で最下部に配置された段組領域であるかを判断する(ステップS74)。選択されている段組領域がページ内で最下部に配置された段組領域である場合は、処理を終了する。選択されている段組領域がページ内で最下部に配置された段組領域でない場合は、処理が上記ステップS71に戻り、段高さ平滑化部106が、次の複数段構成に対応する段組領域を選択する。
【0058】
図18は、図17のステップS72における段組領域に含まれる段の高さを揃える処理を説明するフローチャートである。まず、段高さ平滑化部106が、選択されている段組領域に含まれる段を取得する(ステップS721)。この例では、例えば、図19(A)に示すページ2000に含まれる2段組の段組領域である段組領域2001が選択されているものとする。図19(A)中に示す段組領域2002は、1段組の段組領域であるので、選択されていない。段高さ平滑化部106は、段組領域2001に含まれる段である段2100と段2101とを取得する。
【0059】
次に、段高さ平滑化部106が、取得した各々の段の高さを算出する(ステップS722)。この例では、段高さ平滑化部106は、段に含まれる最上部のブロックの最上端のY座標と、最下部のブロックの最下端のY座標との差を、段の高さとして算出する。次に、段高さ平滑化部106が、段の高さが平滑化しているかを判断する(ステップS723)。例えば、段高さ平滑化部106が、段組領域内に含まれる複数の段のそれぞれの高さを比較し、各段の高さの差が閾値以上か否かを判断する。すなわち、段高さ平滑化部106は、段組領域間締め処理部104によって第2の段のオブジェクトが移動された後の第1の段の高さと第2の段の高さを比較する比較手段として機能する。両者の高さの差が閾値以下である場合に、段高さ平滑化部106が、段の高さが平滑化していると判断する。一方、両者の高さの差が閾値を超えている場合に、段高さ平滑化部106が、段の高さが平滑化していないと判断する。例えば、図19(A)の段2101の段の高さと段2100の段の高さの差を計算し、その差が閾値を越えているか否かが判断される。段高さ平滑化部106が、段の高さが平滑化していると判断した場合は、処理を終了する。段高さ平滑化部106が、段の高さが平滑化していないと判断した場合は、ステップS724に進む。
【0060】
次に、ステップS724において、段高さ平滑化部106が、ブロックを段に再配置することができるかを判断する(ステップS724)。この例では、段高さ平滑化部106は、ステップS721において取得された段のいずれかに2つ以上のブロックが存在するかを判断する。取得された段のいずれかに2つ以上のブロックが存在する場合、段高さ平滑化部106が、ブロックを段に再配置することができると判断して、ステップS725に進む。取得された段のいずれにも2つ以上のブロックが存在しない場合、段高さ平滑化部106が、ブロックを段に再配置することができないと判断して、処理を終了する。
【0061】
ステップS725において、段高さ平滑化部106が、段組領域に含まれるブロック群の分割点を決定する(ステップS725)。段組領域に含まれるブロック群の分割点(以下、単に分割点と記述する)は、段組領域に含まれる全てのブロックを縦(Y方向)に並べることによって構成されるブロック群を分割する点である。この例では、分割点は、ブロックとブロックとの間の境界の位置にある点(境界点)である。
【0062】
段高さ平滑化部106は、例えば、以下のようにして分割点を決定する。まず、段高さ平滑化部106が、段組領域に含まれる全てのブロックを縦(Y方向)に並べることによって得られるブロック群の高さを求める。段高さ平滑化部106は、例えば、図19(A)中のブロック2201乃至2204を図19(B)に示すようにY方向に並べた場合のブロック群の高さであるh1を求める。次に、段高さ平滑化部106が、求めた高さを段組領域内の段の数で割った値を分割基準値として算出する。分割基準値は、分割点を決める基準となる値である。この例では、図19(A)に示す段組領域2001の段の数は2である。従って、段高さ平滑化部106は、図19(B)に示すh1を2で割って、分割基準値としてh11を算出する。
【0063】
そして、段高さ平滑化部106が、分割基準値とブロック群に含まれるブロックの座標とに基づいて、分割点を決定する。具体的には、段高さ平滑化部106は、ブロック群において最上部に位置するブロックの上端から分割基準値だけ下方に位置する点を基準点として決定する。図19(B)に示す例では、段高さ平滑化部106が、最上部のブロックであるブロック2201の上端からh11分下方の位置にある点であるA点を基準点として決定する。段高さ平滑化部106は、ブロックとブロックとの間の境界点のうち、基準点に対応する点を分割点として決定する。例えば、基準点がブロックとブロックとの間の境界点である場合には、段高さ平滑化部106は、基準点を分割点として決定する。
【0064】
ここで、基準点が、ブロック群に含まれるブロックの上端と下端との間に位置する場合がある。このブロックを以下では基準点包含ブロックと記述する。例えば、図19(B)に示す例では、基準点であるA点が、ブロック2203の上端と下端との間に位置するので、ブロック2203が基準点包含ブロックである。段高さ平滑化部106は基準点包含ブロックと基準点包含ブロックの直上に位置するブロックとの間の境界点と、基準点包含ブロックと基準点包含ブロックの直下に位置するブロックとの間の境界点とのうち分割基準点に近い方の境界点を分割点として決定する。図19(B)に示す例では、ブロック2202とブロック2202の直上に位置するブロック2201との間の境界点がB点である。また、ブロック2202とブロック2202の直下に位置するブロック2203との間の境界点がC点である。段高さ平滑化部106は、B点とC点のうち、基準点であるA点に近い方の境界点であるB点を分割点として決定する。
【0065】
図18に戻って、段高さ平滑化部106が、段組領域に含まれるブロック群を分割点で分割して、段組領域の各々の段に再配置するブロックを決定する(ステップS726)。例えば、段高さ平滑化部106は、図19(B)に示すブロック群を分割点であるB点で分割する。これにより、ブロック群が上から順に分割点で分割され、複数のブロック群が順次生成される。段高さ平滑化部106は、分割によって生成されたブロック群に含まれるブロックを、段組領域の段に再配置するブロックとして決定する。例えば、段高さ平滑化部106は、分割によって最初に生成されるブロック群に含まれるブロック2201とブロック2202とを、段組領域の最初の段すなわち図19(A)中の段2101に再配置するブロックとして決定する。また、段高さ平滑化部106は、分割によって2番目に生成されるブロック群に含まれるブロック2203とブロック2204とを段組領域の2番目の段すなわち図19(A)中の段2100に再配置するブロックとして決定する。
【0066】
図18に戻って、段高さ平滑化部106が、上記ステップS726において決定したブロックを各々の段に再配置する(ステップS727)。例えば、段高さ平滑化部106は、図19(C)に示すように、段2101にブロック2201とブロック2202とを配置し、段2100にブロック2203とブロック2204とを配置する。本発明の一実施形態によれば、上記ステップS727において、移動手段として機能する段組領域間締め処理部104が、ステップS726において再配置する段として決定されたブロックを各々の段に再配置するようにしてもよい。例えば段高さ平滑化部106(または段組領域間締め処理部104)が、移動したブロックの一部を戻すことにより段の高さが平滑化される。すなわち、段高さ平滑化部106は、第1の段の高さと第2の段の高さの差が閾値以上である場合、第1の段の高さと第2の段の高さの差が閾値以下になるように第1の段のオブジェクトの一部を第2の段に戻す。これにより、段組領域2001に含まれる段の高さが平滑化する。
【0067】
実施例2では、コンピュータ1のページ間締め処理部105が、段高さ平滑化処理に続いて、ページ間締め処理を実行する。図19(C)に示す例では、段高さ平滑化部106による段高さ平滑化処理によって、段組領域2001に含まれる段の高さが平滑化し、段組領域2001と段組領域2002との間に空白2003が生じる。そこで、ページ間締め処理部105は、段組領域2002に含まれるブロックを上方に移動させて、空白2003を詰める。ページ間締め処理部105が、ページ2000の次のページが段組領域2002と同じ1段組の段組構成に対応する段組領域であって、次のページの先頭ブロックが段組領域2002に含まれるブロックの下部に収まる場合に、以下の処理を行うようにしてもよい。すなわち、ページ間締め処理部105は、次のページの先頭ブロックを段組領域2002に含まれるブロックの下部に移動させる。
【0068】
実施例2の情報処理装置によれば、複数段の段組領域に含まれる段の高さが平滑化する。その結果、平滑化処理の対象となった段組領域とこの段組領域に続く段組領域との間に、例えば図19(C)中の空白2003のような横(X方向)に横断する空白を空けることができる。そして、実施例2の情報処理装置が、平滑化処理の対象となった段組領域に続く段組領域に含まれるブロックを上方に移動させて上記横に横断する空白を詰めることができる。その結果、例えば段組構成が複数段から1段に変わる場合でも、この1段の段組構成に対応する段組領域に含まれるブロックを一様に上方に移動させることによって、ページ内の余剰余白を除去することができる。
【0069】
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【0070】
1 コンピュータ
2 プリンタ
3 ディスプレイ装置
【技術分野】
【0001】
本発明は、情報処理装置、情報処理装置の制御方法、及びコンピュータプログラムに関する。
【背景技術】
【0002】
文書を印刷する際に、用紙節約のため、元文書のデータを加工し、再レイアウトする技術が提案されている。具体的には、行間や、図と図の隙間といったコンテンツ間の余白を詰める等の方法が挙げられる。下記の特許文献1は、入力されたデータを解析してオブジェクト別に分離し、移動対象となるオブジェクトを縮小し、左上に詰めていくことで生じた余白に次のオブジェクトを移動させ、削除可能な空白を作成する画像処理システムを開示している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−48520号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1が開示する画像処理システムは、文書に含まれる段組の構成を考慮せずにコンテンツ間の余白を詰めていく。従って、この画像処理システムによっては、オブジェクトの掲載順序が変わってしまい、文脈に不整合を引き起こす可能性がある。
【0005】
本発明は、文書内の段組の構成に応じて文書に含まれる余白を詰める間締め処理を行う情報処理装置、情報処理装置の制御方法、及びコンピュータプログラムの提供を目的とする。
【課題を解決するための手段】
【0006】
本発明の一実施形態の情報処理装置は、少なくとも第1の段と第2の段の複数の段組で構成されるページにおいて、前記第1の段に含まれるオブジェクト間の空白を所定の距離まで詰めることにより前記第1の段の空白を削減する削減手段と、前記削減手段が前記第1の段の前記オブジェクト間の空白を削減することにより生じる第1の段の下部の空白に前記第2の段の先頭のオブジェクトが収まる場合、前記第2の段の先頭のオブジェクトを第1の段の下部の空白に移動する移動手段とを備える。
【発明の効果】
【0007】
本発明の情報処理装置によれば、文書内の段組構成に応じて文書内の余剰余白を除去することができる。従って、余剰余白の除去後に、段組構成に対応する段組領域内で、文書に含まれるオブジェクトの掲載順序が変わらない。その結果、文脈に不整合を引き起こすおそれがなくなる。
【図面の簡単な説明】
【0008】
【図1】本実施形態のシステム構成例を示す図である。
【図2】プロセッサによるオブジェクト情報の管理例を説明する図である。
【図3】オブジェクト情報の例である。
【図4】文書データの構造の一例を示す図である。
【図5】文書データのページ内の領域を説明する図である。
【図6】コンピュータの機能ブロック図の一例である。
【図7】段組構成情報の例を説明する図である。
【図8】実施例1の情報処理装置の全体動作処理を示すフローチャートである。
【図9】ブロック化処理の例を説明するフローチャートである。
【図10】ページ内のオブジェクトの配置とブロック化を説明する図である。
【図11】縦方向ブロック分割処理を説明するフローチャートである。
【図12】ページ間締め処理の例を説明するフローチャートである。
【図13】ページ間締め処理の例を説明する図である。
【図14】段組領域再ブロック化処理の例を説明する図である。
【図15】段組領域間締め処理の例を説明する図である。
【図16】間締め可能なページの抽出処理を説明するフローチャートである。
【図17】段高さ平滑化処理の例を説明するフローチャートである。
【図18】段組領域に含まれる段の高さを揃える処理を説明するフローチャートである。
【図19】段組領域に含まれる段の高さを揃える処理を説明する図である。
【発明を実施するための形態】
【0009】
図1は、本実施形態のシステム構成例を示す図である。図1に示すシステムは、コンピュータ1と、プリンタ2と、ディスプレイ装置3とを備える。コンピュータ1は、本実施形態の情報処理装置である。コンピュータ1は、印刷レイアウト済みの文書データについて間締め処理を実行する。間締め処理は、文書データに含まれる行間等の空白部を詰める処理である。コンピュータ1が間締め処理を実行することにより、文書の総ページ数を削減することができる。また、コンピュータ1は、プリンタ2に対して上記間締め処理された文書データを送信し、この文書データを印刷させる。また、コンピュータ1は、ディスプレイ装置3に対して各種の表示データを送信し、この表示データを表示させる。本実施形態において、文書データは、例えばPDF(Portable Document Format)等の、ページに配置されるオブジェクトを含むデータである。プリンタ2は、コンピュータ1からの指示に従って文書データを印刷する。また、ディスプレイ装置3は、コンピュータ1からの指示に従って表示データを表示する。
【0010】
コンピュータ1は、プロセッサ11、I/O(Input/Output)インタフェース12、16、メモリ13を備える。また、コンピュータ1は、CD−ROM(Compact Disk Read Only Memory )ドライブ14、ビデオインタフェース15、記憶装置17を備える。プロセッサ11乃至記憶装置17は、システムバス18を介して互いに接続されている。プロセッサ11は、コンピュータ1全体を制御する。プロセッサ11は、例えば、CPU(Central Processing Unit )である。プロセッサ11は、ネットワーク及びI/Oインタフェース16を通じて文書データを外部装置から受信する。プロセッサ11が、受信した文書データを解析する。この文書データの解析結果は、例えば、オブジェクトリストを含む。オブジェクトリストは、オブジェクト情報のリストである。オブジェクト情報は、文書データに含まれるオブジェクトに関する情報である。プロセッサ11は、オブジェクトリストを記憶装置17に記憶して管理する。本実施形態に特有の動作として、プロセッサ11は、上記文書データの解析結果に基づいて文書データをブロック化し、該ブロック化結果に基づいて文書データの段組構成を検知する。そして、プロセッサ11は、検知した段組構成に応じて、文書データに含まれるブロック間の空白を詰める間締め処理を行う。
【0011】
I/Oインタフェース12は、キーボード4、マウス5を介して入力された情報をコンピュータ1に入力する。I/Oインタフェース16は、コンピュータ1からプリンタ2に対する文書データの送信を媒介する。また、I/Oインタフェース16は、ネットワークを通じて外部装置と通信する。ネットワークは、例えば、LAN(Local Area Network)や、WAN(Wide Area Network )等である。
【0012】
メモリ13は、RAM(Random Access Memory)とROM(Read Only Memory)とを備える記憶手段である。RAMは、プロセッサ11が処理に用いる作業領域を有する。ROMには、コンピュータ1の制御方法を実現するためのコンピュータプログラムとデータとが予め記憶されている。CD−ROMドライブ14は、不揮発性の記憶媒体であるCD−ROMが格納される装置である。ビデオインタフェース15は、コンピュータ1からディスプレイ装置3への表示データの送信を媒介する。記憶装置17は、例えば、文書データやオブジェクトリストを記憶する。図1に示す例では、記憶装置17は、HDD(Hard Disk Drive )とFDDとを備える。FDDは、Floppy(登録商標) Disk Driveの略語である。記憶装置17が、磁気テープドライブを備えるようにしてもよい。
【0013】
図2は、プロセッサによるオブジェクト情報の管理例を説明する図である。プロセッサ11は、オブジェクト情報をリスト構造の形式でオブジェクトリスト201に格納する。各々のオブジェクト情報は、オブジェクトID203、オブジェクト種類204、左上座標205、右下座標206、オブジェクト固有情報207を含む。オブジェクトID203は、オブジェクトを一意に識別する識別子である。オブジェクト種類204は、オブジェクトの種類を示す。オブジェクトの種類は、例えば、図形、文字列、イメージ、グループ等を含む。オブジェクト種類204に設定されているグループは、このオブジェクト種類204に対応するオブジェクトが、複数のオブジェクトがグループ化されたものであることを示す。グループ化とは、2つ以上のオブジェクトを一つのオブジェクトにまとめる処理のことを指す。このひとまとめにされたオブジェクトをグループ又はブロックと呼称する。グループ化又はブロック化の対象となるオブジェクトとは、文字や画像を始めとするあらゆるオブジェクトである。もちろん、グループそのものもグループ化の対象となり、その場合、グループに対応するオブジェクト情報は階層的に保持される。オブジェクトがブロック化された場合、オブジェクト情報内のオブジェクトIDはブロックのIDを示す。なお、本実施形態において、1つのオブジェクトからなるグループや内部にオブジェクトを保持しないグループも構造上可能である。
【0014】
左上座標205はオブジェクトの左上座標を示す。右下座標は、オブジェクトの右下の座標を示す。オブジェクト固有情報207は、オブジェクトに固有の属性情報を示す。オブジェクト固有情報207は、例えばオブジェクトの種類が図形である場合の線の太さ、線種等を示す情報である。また、オブジェクト固有情報207は、例えばオブジェクトの種類が文字列である場合の文字の書体、サイズ等を示す情報である。オブジェクト情報内のオブジェクト種類204にグループが設定されている場合、オブジェクト固有情報207には、オブジェクトリスト202へのポインタ情報が設定される。オブジェクトリスト202内のオブジェクト情報は、上記オブジェクト情報に対応するグループ化されたオブジェクトに含まれるオブジェクトのオブジェクト情報である。
【0015】
図3は、オブジェクト情報の例である。例えば、図3(B)に示すオブジェクト情報は、図3(A)中に示す、左上座標が(20,34),右下座標が(81,65)である矩形の図形オブジェクトを示す。
【0016】
図4は、本実施形態において処理対象となる文書データの構造の一例を示す図である。コンピュータ1は、例えば図4(A)に示すPDFフォーマット文書を処理対象とする。図4(A)に示すPDFフォーマット文書は、始点(20,34)から、順次、(81,34)、(81,65)、(20,65)、(20,34)を結ぶ図形を示す。図4(B)は、図4(A)に示すPDFフォーマット文書から読み込まれた図形オブジェクトに対応するオブジェクト情報を示す。このオブジェクト情報は、左上座標(20,34)、右下座標(81,65)の長方形に対応する図形オブジェクトを示す。
【0017】
図5は、コンピュータが処理対象とする文書データのページ内の領域を説明する図である。図5(A)のページ601、図5(B)のページ602、図5(C)のページ603は、文書データに含まれるページの一例である。図5(A)に示すページ601は、段組構成として2段組の構成(2段構成)を有する。本実施形態では、同じ段組の構成を持つ領域のことを段組領域と呼称する。また、本実施形態では、段組を構成する領域を段組領域の段と呼称する。従って、図5(A)に示す例では、段605と段606とを含む領域が、上記2段構成に対応する段組領域である。また、段605、段606は、それぞれ、段組領域の段である。また、余白604は、段605と段606との間の余白(段組余白)である。
【0018】
図5(B)に示すページ602では、領域607が1段組の構成(1段構成)を有する段組領域である。また、領域608が2段組の構成を持つ段組領域である。また、領域608に含まれている領域609、領域610が段組領域の段である。図5(C)に示すページ603では、領域611と領域612とを含む領域が2段構成を有する段組領域である。また、領域611、領域612が、それぞれ、段組領域の段である。また、ブロック613、614、615が、段611内のブロックである。また、ブロック616−618が、段612内のブロックである。また、領域619が1段構成を有する段組領域である。また、ブロック620が、この段組領域内の段に含まれるブロックである。
【0019】
図6は、コンピュータの機能ブロック図の一例である。コンピュータ1は、ブロック化部101、縦方向分割部102、段組領域再ブロック化部103、段組領域間締め処理部104、ページ間締め処理部105、段高さ平滑化部106を備える。本実施形態では、図1に示すメモリ13内のROMにブロック化部101乃至段高さ平滑化部106の機能を実現するコンピュータプログラムが予め記憶されている。プロセッサ11が、ROM内の上記コンピュータプログラムを読み出して実行することにより、本実施形態の情報処理装置の制御方法が実現される。
【0020】
ブロック化部101は、文書データに含まれるオブジェクト間の空白を走査し、該走査によって得られるオブジェクト間の空白の大きさに基づいて、オブジェクトをブロック化して1又は複数のブロックを生成する。本実施形態においては、ブロック化部101は、印刷レイアウト済みの文書データを処理対象とする。ブロック化部101は、ブロックを生成する度に、オブジェクトリスト内のオブジェクト情報を更新する。
【0021】
縦方向分割部102は、ブロック化部101によって生成されたブロックに含まれるオブジェクト間の空白を走査することによって得られる該オブジェクト間の空白の大きさに基づいて、ブロックを縦方向に分割する。縦方向分割部102は、ブロックを分割する度に、オブジェクトリスト内のオブジェクト情報を更新する。
【0022】
段組領域再ブロック化部103は、縦方向分割部102によるブロックの分割結果に基づいて、文書データの段組構成を検知する。具体的には、段組領域再ブロック化部103は、横に並んだ分割されたブロックの数すなわち段の数に基づいて、文書データの段組構成を検知する。複数の段(少なくとも第1の段と第2の段)が横に並んでいる場合、段組領域再ブロック化部103は、この複数の段を含む段組領域の段組構成が複数段構成であると判断する。例えば、図5(C)に示すページ603には、段611と段612という2つの段が横に並んでいる。従って、段組領域再ブロック化部103は、この段611と段612とを含む段組領域の段組構成が2段構成であると判断する。段の横に他の段が並んでいない場合、段組領域再ブロック化部103は、この段を含む段組領域の段組構成が1段構成であると判断する。例えば、図5(C)に示すページ603の段組領域619に含まれる段は1段のみである。従って、段組領域再ブロック化部103は、段組領域619の段組構成が1段構成であると判断する。段組領域再ブロック化部103が文書データの段組構成を検知すると、段組領域再ブロック化部103は、ページ毎に段組構成情報を生成して記憶装置17に記憶する。段組構成情報は、段組構成に関する情報である。
【0023】
図7は、段組構成情報の例を説明する図である。図7(A)は段組構成情報を示す。図7(B)中に示すページ702は、図7(A)に示す段組構成情報に対応するページである。図7(B)中の番号11乃至16は、ページ702内のブロックのIDを示す。図7(A)に示す段組構成情報は、ページ内段組領域情報300、段組領域構成情報301及び302、段内ブロック情報303乃至305を含む。ページ内段組領域情報300は、ページ内に含まれる段組領域に関する情報である。図7(A)に示す例では、ページ内段組領域情報300は、ページ番号714と段組領域の数715とポインタ716及び717を含む。ページ番号714は、図7(B)に示すページ702の識別番号である。段組領域の数715は、ページに含まれる段組領域の数である。ページ702には1段構成の段組領域709と2段構成の段組領域710という2つの段組領域が含まれる。従って、図7(A)中の段組領域の数715には「2」が設定される。ポインタ716、717は、段組領域に対応する段組領域構成情報へのポインタである。ポインタ716は、段組領域構成情報301へのポインタであり、ポインタ717は、段組領域構成情報302へのポインタである。
【0024】
段組領域構成情報は、段組領域の構成に関する情報である。図7(A)に示す例では、段組領域構成情報301は、1段組の段組構成を有する段組領域709の構成に関する情報である。また、段組領域構成情報302は、2段組の段組構成を有する段組領域710の構成に関する情報である。段組領域構成情報301は、段組構成718と段組領域の段719を含む。段組構成718は、段組領域709が1段組であることを示す。段組領域の段719は、段組領域709に含まれる段である段711を示す。段組領域の段は、各々の段に含まれるブロックに対応する段内ブロック情報にリンクしている。例えば、段組領域の段719は、ブロックのIDが11、12であるブロックに対応する段内ブロック情報にリンクしている。同様に、段組領域構成情報302は、段組構成720と段組領域の段721及び722を含む。段組構成720は、段組領域710が2段組であることを示す。段組領域の段721は、段組領域710に含まれる段712を示す。段組領域の段722は、段組領域710に含まれる段713を示す。段組領域の段721は、ブロックのIDが13、14であるブロックに対応する段内ブロック情報にリンクしている。また、段組領域の段722は、ブロックのIDが15、16であるブロックに対応する段内ブロック情報にリンクしている。
【0025】
段内ブロック情報は、各々の段に含まれるブロックに関する情報である。図7(A)に示す例では、段内ブロック情報として、ブロックのIDが設定される。このブロックのIDは、段組領域再ブロック化部103が段組領域に含まれるオブジェクトを再ブロック化した結果生成されるブロックの識別番号である。すなわち、この例では、段内ブロック情報は、段組領域再ブロック化部103が生成対象とするブロックのIDを示す。段内ブロック情報には、段に含まれるブロックの配置順序に従って、段内の先頭のブロックに対応するブロックIDから段内の最後尾のブロックに対応するブロックIDが順次設定される。
【0026】
図6に戻って、段組領域再ブロック化部103は、検知した段組構成に複数段構成が含まれる場合に、該複数段構成に対応する段組領域に含まれる段のオブジェクトを再ブロック化する。例えば、前述した図7(B)中に示すブロックのIDが13であるブロックとブロックのIDが14であるブロックは、段組領域再ブロック化部103が段712内のオブジェクトを再ブロック化した結果生成されたブロックである。段組領域再ブロック化部103は、段組領域に含まれる段のオブジェクトを再ブロック化する度に、オブジェクトリスト内のオブジェクト情報を更新する。
【0027】
段組領域間締め処理部104は、オブジェクトが再ブロック化された段組領域を処理対象として、段組領域に含まれるブロック間の空白を詰める間締め処理(段組領域間締め処理)を行う。具体的には、段組領域間締め処理部104は、文書データのページのうち、オブジェクトが再ブロック化された段組領域を含む第1のページと第2のページとの間でブロックの移動が可能であるかを判断する。段組領域間締め処理部104は、第1のページと第2のページとの間でブロックの移動が可能である場合に、該第1、第2のページの上記オブジェクトが再ブロック化された段組領域に含まれる段を順次処理対象として、該段に含まれるブロック間の空白を詰める。そして、段組領域間締め処理部104は、該段の次に処理対象となる段の先頭ブロックを前記ブロック間の空白が詰められた段に移動する。上記先頭ブロックを移動する処理においては、段組領域間締め処理部104は、現在処理対象である段に含まれるブロック間の空白を詰めた場合に該空白が詰められた段に次に処理対象となる段の先頭ブロックが収まるかを判断する。段組領域間締め処理部104は、該空白が詰められた段に次に処理対象となる段の先頭ブロックが収まる場合に、上記次に処理対象となる段の先頭ブロックを該空白が詰められた段に移動する。
【0028】
ページ間締め処理部105は、文書データのページを処理対象として、ページに含まれるブロック間の空白を詰める間締め処理(ページ間締め処理)を行う。具体的には、ページ間締め処理部105は、段組領域再ブロック化部103が検知した段組構成に1段構成のみが含まれる場合に、該段組構成に対応する段組領域を含むページに含まれるブロック間の空白を詰める。そして、ページ間締め処理部105は、該ページの次のページの先頭ブロックをブロック間の空白が詰められたページに移動する。
【0029】
また、ページ間締め処理部105は、段高さ平滑化部106によって段の高さが平滑化された場合に、少なくとも該平滑化された段を含むページを処理対象としてページ間締め処理を行う。例えば、ページ間締め処理部105は、平滑化された段を含むページに含まれるブロック間の空白を詰めるとともに、該ページの次のページの先頭ブロックを前記ブロック間の空白が詰められたページに移動する。ページ間締め処理部105によるページ間締め処理、又は上記段組領域間締め処理部104による段組領域間締め処理によって、再レイアウトされた文書データが出力対象の文書データとして生成される。
【0030】
段高さ平滑化部106は、段組領域再ブロック化部103が検知した段組構成に複数段構成が含まれる場合に、該複数段構成に対応する段の高さを平滑化する。
【0031】
図8は、本発明の実施例1の情報処理装置の全体動作処理を示すフローチャートである。なお、本願のフローチャートは、CPUが処理に関連するプログラムをメモリから読み出して実行することで実現される。まず、コンピュータ1のブロック化部101が、文書データに含まれるオブジェクトのブロック化処理を実行する(ステップS1)。続いて、縦方向分割部102が、縦方向分割処理を行って、ステップS1におけるブロック化処理によって生成されたブロックを縦方向に分割する(ステップS2)。例えば、図15(B)ではブロックA−CとブロックD−Fとの間にて縦方向の余白があるので、縦方向分割部102は、縦方向分割処理を行える。次に、段組領域再ブロック化部103が、縦方向分割部102によるブロックの分割結果に基づいて、文書データの段組構成を判断する(ステップS3)。段組領域再ブロック化部103が、文書データの段組構成が1段構成のみであると判断した場合、ページ間締め処理部105が、文書データのページを処理対象としてページ間締め処理を行う(ステップS6)。
【0032】
段組領域再ブロック化部103が、文書データの段組構成に複数段構成が含まれると判断した場合は、ステップS4に進む。そして、段組領域再ブロック化部103が、複数段構成に対応する段組領域に含まれる段のオブジェクトを再ブロック化する段組領域再ブロック化処理を行う(ステップS4)。続いて、段組領域間締め処理部104が、段組領域間締め処理を行って(ステップS5)、処理を終了する。
【0033】
図9は、図8のステップS1におけるブロック化処理の例を説明するフローチャートである。まず、ブロック化部101が、文書データのページ内に未処理のオブジェクトが存在するかを判断する(ステップS11)。未処理のオブジェクトが存在する場合、ブロック化部101は、次に処理対象となるオブジェクトすなわち未処理のオブジェクトのうち先頭にあるオブジェクトの読み込みを行う(ステップS15)。次に、ブロック化部101が、ページ内において、読み込んだオブジェクトのY座標が、既にページ上に配置されているオブジェクトのY座標と重なるかを判断する(ステップS16)。読み込んだオブジェクトのY座標が、既に読み込まれているオブジェクトのY座標と重なっていない場合、ブロック化部101は、読み込んだオブジェクトをブロックとしてページ上に配置し(ステップS18)、ステップS11に戻る。
【0034】
図10は、ページ内のオブジェクトの配置とブロック化を説明する図である。図10(A)は、ページ上に既に配置されたオブジェクト1301と、上記ステップS15において読み込んだオブジェクト1302との位置関係を示す。図10(A)に示す例では、オブジェクト1301とオブジェクト1302とはY座標が重なっていない。従って、ブロック化部101は、オブジェクト1302をブロックとしてページ上に配置する。
【0035】
図9に戻って、読み込んだオブジェクトのY座標が、既に読み込まれているオブジェクトのY座標と重なっている場合、ブロック化部101は、重なっているオブジェクトをグループ化してブロックを生成し、ページ上に配置する(ステップS17)。例えば、図10(B)に示すように、オブジェクト1302の処理の次に読み込まれたオブジェクトであるオブジェクト1305は、オブジェクト1303とY座標が重なる。従って、ブロック化部101は、図10(C)に示すように、オブジェクト1303と1305とをグループ化してブロック1306を生成し、ページ上に配置する。オブジェクト1303がブロックである場合は、ブロック化部101は、一旦オブジェクト1303のブロック化を解除してからまとめ直す。また、オブジェクト1305がページ上の複数のオブジェクトとY座標が重なっていた場合、重なっている全てのオブジェクトをブロック化する。
【0036】
図9に戻り、未処理のオブジェクトが存在しない場合、ブロック化部101が、ページに配置された全てのブロックに含まれるオブジェクト間の空白を横方向(図10の例ではX方向)に走査し(ステップS12)、オブジェクト間の空白の大きさを検知する。この例におけるオブジェクト間の空白の大きさは、オブジェクトとオブジェクトとの間のY方向の空白の大きさである。続いて、ブロック化部101が、検知した空白の大きさが予め決められた閾値以下であるオブジェクトを含むブロックを抽出する(ステップS13)。そして、ブロック化部101が、抽出したブロック同士をまとめてブロック化して(ステップS14)、処理を終了する。ブロック化部101は、検知した空白の大きさが予め決められた閾値以下であるオブジェクトを含むブロックについてはまとめずに、そのまま独立したブロックとする。例えば、図10(C)においてブロック1306とブロック1307との空白の大きさが閾値以下であれば、両者はブロックとしてまとめられる。
【0037】
図11は、図8のステップS2における縦方向分割処理を説明するフローチャートである。縦方向分割部102が、ブロック化部101によるブロック化処理によって得られるブロックを対象として、以下の処理を行う。まず、縦方向分割部102が、ブロックを選択する(ステップS21)。続いて、縦方向分割部102が、選択したブロックを90度回転させる(ステップS22)。具体的には、縦方向分割部102が、選択したブロックのY座標とX座標とを互いに置き換える。なお、ここで回転処理を行っているのは、図9を参照して説明したブロック化処理における走査方向と統一させるためである。
【0038】
続いて、縦方向分割部102が、90度回転させた上記ブロックに含まれるオブジェクト間の空白を走査し、該走査によって得られる該オブジェクト間の空白の大きさに基づいて、該オブジェクトをブロック化する(ステップS23)。例えば、図10(C)のブロック1306におけるオブジェクトAとCとの間の空白が閾値以上であれば、両者は分けられる。次に、縦方向分割部102が、上記ステップS23におけるブロック化により得られるブロックからブロックを順次選択し、選択したブロックのY座標とX座標とを変換して、このブロックを−90度回転させる(ステップS24)。これにより、選択したブロックがステップS22の処理における回転方向と逆方向に回転する。続いて、縦方向分割部102が、全てのブロックについて処理を完了したかを判断する(ステップS25)。処理が完了していないブロックがある場合は、上記ステップS21に戻る。全てのブロックについて処理を完了した場合は、処理を終了する。上述した縦方向ブロック分割処理により、縦方向の空白で区切られた1又は複数のブロックが生成される。
【0039】
図12は、図8のステップS6におけるページ間締め処理の例を説明するフローチャートである。この例では、ページ間締め処理部105が、順次、図13(A)に示すページ1001、ページ1002をページ間締め処理の対象とする。ページ1001は、移動先ページである。移動先ページは、移動元ページに含まれるブロックの移動先となるページである。ページ1002は、移動元ページである。移動元ページは、移動先ページの次のページであって、移動先ページへの移動対象となるブロックが含まれるページである。
【0040】
まず、ページ間締め処理部105が、移動先ページのブロック間の空白を検出する(ステップS61)。例えば、ページ間締め処理部105は、図13(A)のページ1001に含まれるブロック1003乃至1005を取得し、取得したブロックとブロックとの間の空白を検出する。
【0041】
次に、ページ間締め処理部105が、移動先ページにおいて上記検出された空白を所定の距離まで詰めた場合に移動先ページに移動元ページの先頭ブロックが収まるかを判断する(ステップS62)。ページ間締め処理部105は、例えば、図13(A)のページ1001内のブロック1004、1005をブロック間の空白を所定の距離まで詰めた場合に、ページ1002内のブロック1006がページ1001に収まるかを判断する。具体的には、ページ間締め処理部105が、検出された全ての空白からそれぞれ予めユーザによって設定されたブロック間空白の最小値(上記所定の距離に相当)を引いた値を合計して、余剰した空白(余剰空白)の高さを求める。ページ間締め処理部105が、移動先ページの最終ブロックと移動先ページの下端との間の空白からページの所定のマージンを引いた値をページ下部空白として求める。そして、ページ間締め処理部105が、余剰空白とページ下部空白とを加えた値を、間締め処理後空白として求める。ページ間締め処理部105が、求めた間締め処理後空白に移動元ページの先頭ブロックが収まるかを判断する。
【0042】
間締め処理後空白に移動元ページの先頭ブロックが収まる場合、ページ間締め処理部105は、移動先ページに移動元ページの先頭ブロックが収まると判断する。間締め処理後空白に移動元ページの先頭ブロックが収まらない場合、ページ間締め処理部105は、移動先ページに移動元ページの先頭ブロックが収まらないと判断する。ページ間締め処理部105が、移動先ページに移動元ページの先頭ブロックが収まらないと判断した場合は処理を終了する。
【0043】
ページ間締め処理部105が、移動先ページに移動元ページの先頭ブロックが収まると判断した場合、ページ間締め処理部105が、移動先ページ内のブロックを上記余剰余白が詰まるように移動させる(ステップS63)。続いて、ページ間締め処理部105が、移動先ページにおける最終ブロックの下部に移動元ページの先頭ブロックを移動させる(ステップS64)。例えば、ページ間締め処理部105が、図13(A)中のページ1002内のブロック1006をページ1001内のブロック1005の下部に移動させる。そして、ページ間締め処理部105が、移動元ページ内において間締め処理を行い(ステップS65)、ステップS61に戻る。ステップS65においては、ページ間締め処理部105が、上記ステップS64における先頭ブロックの移動により生じた空白を詰めるために、該先頭ブロックに続くブロックを順次上方に移動させる。ステップS65により、図13(B)に示すように、ページ1001にはブロック1003乃至1006が配置され、ページ1002にはブロック1007、1008が配置された状態となる。
【0044】
図12を参照して説明したように、ページ間締め処理部105は、現在処理対象であるページに含まれるブロック間の空白を詰めた場合に該空白が詰められたページに次に処理対象となるページの先頭ブロックが収まるかを判断する(ステップS62を参照)。また、ページ間締め処理部105は、空白が詰められたページに次に処理対象となるページの先頭ブロックが収まる場合に、以下の処理を実行する。ページ間締め処理部105は、現在処理対象であるページに含まれるブロック間の空白を詰めるとともに、次に処理対象となるページの先頭ブロックを該空白が詰められたページに移動する(ステップS63,S64を参照)。これにより、文書のページに含まれる余剰余白を除去することができ、印刷用紙を節約することができる。
【0045】
図14は、図8のステップS4における段組領域再ブロック化処理の例を説明する図である。図14(A)は、段組領域再ブロック化処理の例を説明するフローチャートである。まず、段組領域再ブロック化部103が、縦方向分割部102によるブロックの分割結果に基づいて、文書データの段組構成を検知する(ステップS41)。ステップS41においては、段組領域再ブロック化部103は、更に、ページ毎に段組構成情報を生成して記憶装置17に記憶する。次に、段組領域再ブロック化部103が、段組領域の段のうち、未処理の段が存在するかを判断する(ステップS42)。未処理の段が存在しない場合は、処理を終了する。
【0046】
未処理の段が存在する場合、段組領域再ブロック化部103が、段組構成情報を参照して、処理対象の段組領域の段を取得して(ステップS43)、ステップS44に進む。例えば、段組領域再ブロック化部103は、図14(B)に示すページ1601に含まれる段組領域として、段1602、1603を含む2段構成の段組領域を取得する。また、段組領域再ブロック化部103は、段組構成情報(図7(A)を参照)に含まれる段組領域構成情報に設定されている段組領域の段を取得する。例えば、段組領域間締め処理部104は、図14(B)中の段1602を処理対象の段組領域の段として取得する。
【0047】
そして、段組領域再ブロック化部103が、取得した段に含まれるオブジェクトをブロック化(再ブロック化)する(ステップS44)。段組領域再ブロック化部103は、例えば、図7(A)に示す段組領域構成情報を参照して、上記取得した段にリンクしている段内ブロック情報を取得する。そして、段組領域再ブロック化部103は、取得した段内ブロック情報に設定されているブロックのIDに対応するブロックに含まれるオブジェクトを再ブロック化する。段組領域再ブロック化部103は、図9を参照して前述したブロック化処理と同様の処理を行って、オブジェクトの再ブロック化を行う。ステップS44の処理の後、処理がステップS42に進む。ステップS44におけるオブジェクトの再ブロック化の結果、例えば図14(C)に示すように、図14(B)中の段1602に含まれているオブジェクトがブロック1604乃至1608という5つのブロックにブロック化される。
【0048】
図15は、図8のステップS5における段組領域間締め処理の例を説明する図である。図15(A)は、段組領域間締め処理の例を説明するフローチャートである。段組領域間締め処理部104が段組構成情報を参照し、オブジェクトが再ブロック化された段組領域を含むページを対象に、ページの最下部の段組領域の段組領域構成情報と次のページの最上部の段組領域の段組領域構成情報とを取得する(ステップS51)。段組領域間締め処理部104は、例えば、図15(B)中の移動先ページの候補であるページ1801の最下部の段組領域の段組領域構成情報と、移動元ページの候補であるページ1802の最上部の段組領域の段組領域構成情報とを取得する。図15(B)に示すページ1801は、段組領域1900を含む。段組領域1900は段1902と段1903とを含む。段1902はブロックA乃至Cを含む。段1903はブロックD乃至Fを含む。ページ1802は、段組領域1901を含む。段組領域1901は段1904と段1905とを含む。段1904はブロックGとブロックHとを含む。段1905はブロックIとブロックJとを含む。
【0049】
図15(A)に戻って、段組領域間締め処理部104が、ステップS51において取得された段組領域構成情報を用いて、間締め可能なページの抽出処理を行う(ステップS52)。間締め可能なページの抽出処理は、間締め処理の対象とする移動先ページと移動元ページとを決定する処理である。続いて、段組領域間締め処理部104が、間締め可能なページの抽出結果に基づいて、間締め処理の対象とする移動先ページと移動元ページとが決定されたかを判断する(ステップS53)。移動先ページと移動元ページとが決定されていない場合は、処理を終了する。移動先ページと移動元ページとが決定された場合は、ステップS54に進む。
【0050】
次に、段組領域間締め処理部104が、ステップS53において決定された移動先ページ(第1のページ)と移動元ページ(第2のページ)とを選択する(ステップS54)。そして、段組領域間締め処理部104が、移動先ページ、移動元ページに含まれる段組領域を処理対象として、段組領域に含まれるブロック間の空白を詰める間締め処理を行う(ステップS55)。具体的には、段組領域間締め処理部104は、移動先ページ、移動元ページに含まれる段組領域の段を順次処理対象として選択し、選択した段を仮想的なページとして扱って、図12を参照して説明したページ間締め処理と同様の方法で、間締め処理を実行する。段組領域間締め処理部104は、現在処理対象である移動先の段に含まれるブロック間の空白を所定の距離まで詰めた場合に該空白が詰められた段に次に処理対象となる段である移動元の段の先頭ブロックが収まるかを判断する。移動先の段は、移動先の段の次の段に含まれるブロックの移動先となる段である。移動元の段は、前の段への移動対象となるブロックが含まれる段である。すなわち、段組領域間締め処理部104は、少なくとも第1の段と第2の段の複数の段組で構成されるページにおいて、第1の段に含まれるオブジェクト間の空白を所定の距離まで詰めることにより第1の段の空白を削減する削減手段として機能する。段組領域間締め処理部104は、上記空白が詰められた移動先の段に次に処理対象となる移動元の段の先頭ブロックが収まる場合に、移動元の段の先頭ブロックを該空白が詰められた移動先の段(の最終ブロックの下部)に移動する。つまり、段組領域間締め処理部104は第1の段のオブジェクト間の空白を削減することにより生じる第1の段の下部の空白に第2の段の先頭のオブジェクトが収まる場合、第2の段の先頭のオブジェクトを第1の段の下部の空白に移動する移動手段として機能する。
【0051】
図16は、図15(A)のステップS52における間締め可能なページの抽出処理を説明するフローチャートである。まず、段組領域間締め処理部104が、移動先ページと移動元ページとを設定する(ステップS521)。具体的には、段組領域間締め処理部104は、図15(A)のステップS55における間締め処理が完了する度に、設定対象とする移動先ページを移動元ページの次のページに更新し、設定対象とする移動元ページを移動元ページの次のページに更新する。次に、段組領域間締め処理部104が、図15(A)のステップS51において取得された段組領域構成情報のうち、ステップS521において設定された移動先ページと移動元ページとに対応する段組領域構成情報を用いて、以下の処理を行う。すなわち、段組領域間締め処理部104は、移動元ページの先頭のブロックが移動先ページに移動可能であるかを判断する(ステップS522)。
【0052】
具体的には、段組領域間締め処理部104が、移動先ページに対応する段組領域構成情報を参照して、段組領域の最終段にリンクしている段内ブロック情報を取得する。そして、段組領域間締め処理部104が、取得した段内ブロック情報内の最後尾に設定されているブロックIDに対応するブロックの座標をオブジェクトリストから取得し、取得した座標を第1の座標とする。取得された第1の座標は、移動先ページの最終段の最終ブロックの座標である。また、組領域間締め処理部104が、移動元ページに対応する段組領域構成情報を参照して、段組領域の最初の段にリンクしている段内ブロック情報を取得する。そして、段組領域間締め処理部104が、取得した段内ブロック情報内の先頭に設定されているブロックIDに対応するブロックの座標をオブジェクトリストから取得し、第2の座標とする。第2の座標は、移動元ページの最初の段の先頭ブロックの座標である。段組領域間締め処理部104は、取得した第1の座標と第2の座標とに基づいて、移動元ページの最初の段の先頭ブロックが移動先ページの最終の段の最終ブロックの下部の空白に収まるかを判断する。移動元ページの最初の段の先頭ブロックが移動先ページの最終の段の最終ブロックの下部の空白に収まる場合、段組領域間締め処理部104は、移動元ページの先頭のブロックが移動先ページに移動可能であると判断する。移動元ページの最初の段の先頭ブロックが移動先ページの最終の段の最終ブロックの下部の空白に収まらない場合、段組領域間締め処理部104は、移動元ページの先頭のブロックが移動先ページに移動可能でないと判断する。
【0053】
移動元ページの先頭のブロックが移動先ページに移動可能である場合、現在設定されている移動元ページと移動先ページを間締め処理の対象とする移動先ページと移動元ページとして決定する(ステップS525)。移動元ページの先頭のブロックが移動先ページに移動可能でない場合、段組領域間締め処理部104が、現在設定されている移動元ページが最終ページであるかを判断する(ステップS523)。現在設定されている移動元ページが最終ページである場合、段組領域間締め処理部104が、間締め処理の対象とする移動先ページと移動元ページとがないことを示す情報を処理結果として出力する(ステップS524)。現在設定されている移動元ページが最終ページでない場合、上記ステップS521に戻り、移動先ページ、移動元ページをそれぞれ一つ後ろのページに設定する。
【0054】
図15及び図16を参照して説明した段組領域間締め処理により、例えば図15(B)中に示すブロックA、B、Cの間の空白が詰められ、ブロックDが、ブロックCの下部に移動する。また、ブロックE、Fがページ1801の上方に移動するとともに、ブロックGがブロックFの下部に移動する。また、ブロックHがページ1802の上方に移動するとともに、ブロックIがブロックHの下部に移動する。また、ブロックJがページ1802の上方に移動する。これにより、ページ1801、1802におけるブロックの配置状態は、図15(C)中に示す状態となる。すなわち、実施例1の情報処理装置によれば、文書内の段組構成に応じて文書内の余剰余白を除去することができ、余剰余白の除去後に、段組構成に対応する段組領域内で,文書に含まれるオブジェクトの掲載順序が変わらない。その結果、文脈に不整合を引き起こすおそれがなくなる。
【0055】
次に、本発明の実施例2について説明する。実施例2においては、コンピュータ1が、図8のステップS5の処理の後に、段高さ平滑化処理、ページ間締め処理を順次実行する。段高さ平滑化処理は、複数段構成に対応する段の高さが平滑化するように、段に含まれるブロックのうち他の段に移動するブロックを決定し、決定したブロックを他の段に移動する処理である。また、コンピュータ1が段高さ平滑化処理に続いて実行するページ間締め処理は、図8のステップS6におけるページ間締め処理と同様の処理である。
【0056】
図17は、段高さ平滑化処理の例を説明するフローチャートである。まず、段高さ平滑化部106が、例えばユーザの操作入力に従ってページを選択するとともに、選択したページに含まれる複数段構成に対応する段組領域を選択する(ステップS71)。次に、段高さ平滑化部106が、選択された段組領域に含まれる段の高さを揃える(ステップS72)。そして、段高さ平滑化部106が、段の高さを揃えた段組領域と、その段組領域の下部の段組領域との間の余白が所定の距離以下になるように、下部の段組領域を上方に移動する(ステップS73)。具体的には、図19において、段組領域2001の段の高さを揃えた場合、段組領域2001の下部にある段組領域2002を上方に移動する処理に相当する。
【0057】
次に、段高さ平滑化部106が、選択されている段組領域がページ内で最下部に配置された段組領域であるかを判断する(ステップS74)。選択されている段組領域がページ内で最下部に配置された段組領域である場合は、処理を終了する。選択されている段組領域がページ内で最下部に配置された段組領域でない場合は、処理が上記ステップS71に戻り、段高さ平滑化部106が、次の複数段構成に対応する段組領域を選択する。
【0058】
図18は、図17のステップS72における段組領域に含まれる段の高さを揃える処理を説明するフローチャートである。まず、段高さ平滑化部106が、選択されている段組領域に含まれる段を取得する(ステップS721)。この例では、例えば、図19(A)に示すページ2000に含まれる2段組の段組領域である段組領域2001が選択されているものとする。図19(A)中に示す段組領域2002は、1段組の段組領域であるので、選択されていない。段高さ平滑化部106は、段組領域2001に含まれる段である段2100と段2101とを取得する。
【0059】
次に、段高さ平滑化部106が、取得した各々の段の高さを算出する(ステップS722)。この例では、段高さ平滑化部106は、段に含まれる最上部のブロックの最上端のY座標と、最下部のブロックの最下端のY座標との差を、段の高さとして算出する。次に、段高さ平滑化部106が、段の高さが平滑化しているかを判断する(ステップS723)。例えば、段高さ平滑化部106が、段組領域内に含まれる複数の段のそれぞれの高さを比較し、各段の高さの差が閾値以上か否かを判断する。すなわち、段高さ平滑化部106は、段組領域間締め処理部104によって第2の段のオブジェクトが移動された後の第1の段の高さと第2の段の高さを比較する比較手段として機能する。両者の高さの差が閾値以下である場合に、段高さ平滑化部106が、段の高さが平滑化していると判断する。一方、両者の高さの差が閾値を超えている場合に、段高さ平滑化部106が、段の高さが平滑化していないと判断する。例えば、図19(A)の段2101の段の高さと段2100の段の高さの差を計算し、その差が閾値を越えているか否かが判断される。段高さ平滑化部106が、段の高さが平滑化していると判断した場合は、処理を終了する。段高さ平滑化部106が、段の高さが平滑化していないと判断した場合は、ステップS724に進む。
【0060】
次に、ステップS724において、段高さ平滑化部106が、ブロックを段に再配置することができるかを判断する(ステップS724)。この例では、段高さ平滑化部106は、ステップS721において取得された段のいずれかに2つ以上のブロックが存在するかを判断する。取得された段のいずれかに2つ以上のブロックが存在する場合、段高さ平滑化部106が、ブロックを段に再配置することができると判断して、ステップS725に進む。取得された段のいずれにも2つ以上のブロックが存在しない場合、段高さ平滑化部106が、ブロックを段に再配置することができないと判断して、処理を終了する。
【0061】
ステップS725において、段高さ平滑化部106が、段組領域に含まれるブロック群の分割点を決定する(ステップS725)。段組領域に含まれるブロック群の分割点(以下、単に分割点と記述する)は、段組領域に含まれる全てのブロックを縦(Y方向)に並べることによって構成されるブロック群を分割する点である。この例では、分割点は、ブロックとブロックとの間の境界の位置にある点(境界点)である。
【0062】
段高さ平滑化部106は、例えば、以下のようにして分割点を決定する。まず、段高さ平滑化部106が、段組領域に含まれる全てのブロックを縦(Y方向)に並べることによって得られるブロック群の高さを求める。段高さ平滑化部106は、例えば、図19(A)中のブロック2201乃至2204を図19(B)に示すようにY方向に並べた場合のブロック群の高さであるh1を求める。次に、段高さ平滑化部106が、求めた高さを段組領域内の段の数で割った値を分割基準値として算出する。分割基準値は、分割点を決める基準となる値である。この例では、図19(A)に示す段組領域2001の段の数は2である。従って、段高さ平滑化部106は、図19(B)に示すh1を2で割って、分割基準値としてh11を算出する。
【0063】
そして、段高さ平滑化部106が、分割基準値とブロック群に含まれるブロックの座標とに基づいて、分割点を決定する。具体的には、段高さ平滑化部106は、ブロック群において最上部に位置するブロックの上端から分割基準値だけ下方に位置する点を基準点として決定する。図19(B)に示す例では、段高さ平滑化部106が、最上部のブロックであるブロック2201の上端からh11分下方の位置にある点であるA点を基準点として決定する。段高さ平滑化部106は、ブロックとブロックとの間の境界点のうち、基準点に対応する点を分割点として決定する。例えば、基準点がブロックとブロックとの間の境界点である場合には、段高さ平滑化部106は、基準点を分割点として決定する。
【0064】
ここで、基準点が、ブロック群に含まれるブロックの上端と下端との間に位置する場合がある。このブロックを以下では基準点包含ブロックと記述する。例えば、図19(B)に示す例では、基準点であるA点が、ブロック2203の上端と下端との間に位置するので、ブロック2203が基準点包含ブロックである。段高さ平滑化部106は基準点包含ブロックと基準点包含ブロックの直上に位置するブロックとの間の境界点と、基準点包含ブロックと基準点包含ブロックの直下に位置するブロックとの間の境界点とのうち分割基準点に近い方の境界点を分割点として決定する。図19(B)に示す例では、ブロック2202とブロック2202の直上に位置するブロック2201との間の境界点がB点である。また、ブロック2202とブロック2202の直下に位置するブロック2203との間の境界点がC点である。段高さ平滑化部106は、B点とC点のうち、基準点であるA点に近い方の境界点であるB点を分割点として決定する。
【0065】
図18に戻って、段高さ平滑化部106が、段組領域に含まれるブロック群を分割点で分割して、段組領域の各々の段に再配置するブロックを決定する(ステップS726)。例えば、段高さ平滑化部106は、図19(B)に示すブロック群を分割点であるB点で分割する。これにより、ブロック群が上から順に分割点で分割され、複数のブロック群が順次生成される。段高さ平滑化部106は、分割によって生成されたブロック群に含まれるブロックを、段組領域の段に再配置するブロックとして決定する。例えば、段高さ平滑化部106は、分割によって最初に生成されるブロック群に含まれるブロック2201とブロック2202とを、段組領域の最初の段すなわち図19(A)中の段2101に再配置するブロックとして決定する。また、段高さ平滑化部106は、分割によって2番目に生成されるブロック群に含まれるブロック2203とブロック2204とを段組領域の2番目の段すなわち図19(A)中の段2100に再配置するブロックとして決定する。
【0066】
図18に戻って、段高さ平滑化部106が、上記ステップS726において決定したブロックを各々の段に再配置する(ステップS727)。例えば、段高さ平滑化部106は、図19(C)に示すように、段2101にブロック2201とブロック2202とを配置し、段2100にブロック2203とブロック2204とを配置する。本発明の一実施形態によれば、上記ステップS727において、移動手段として機能する段組領域間締め処理部104が、ステップS726において再配置する段として決定されたブロックを各々の段に再配置するようにしてもよい。例えば段高さ平滑化部106(または段組領域間締め処理部104)が、移動したブロックの一部を戻すことにより段の高さが平滑化される。すなわち、段高さ平滑化部106は、第1の段の高さと第2の段の高さの差が閾値以上である場合、第1の段の高さと第2の段の高さの差が閾値以下になるように第1の段のオブジェクトの一部を第2の段に戻す。これにより、段組領域2001に含まれる段の高さが平滑化する。
【0067】
実施例2では、コンピュータ1のページ間締め処理部105が、段高さ平滑化処理に続いて、ページ間締め処理を実行する。図19(C)に示す例では、段高さ平滑化部106による段高さ平滑化処理によって、段組領域2001に含まれる段の高さが平滑化し、段組領域2001と段組領域2002との間に空白2003が生じる。そこで、ページ間締め処理部105は、段組領域2002に含まれるブロックを上方に移動させて、空白2003を詰める。ページ間締め処理部105が、ページ2000の次のページが段組領域2002と同じ1段組の段組構成に対応する段組領域であって、次のページの先頭ブロックが段組領域2002に含まれるブロックの下部に収まる場合に、以下の処理を行うようにしてもよい。すなわち、ページ間締め処理部105は、次のページの先頭ブロックを段組領域2002に含まれるブロックの下部に移動させる。
【0068】
実施例2の情報処理装置によれば、複数段の段組領域に含まれる段の高さが平滑化する。その結果、平滑化処理の対象となった段組領域とこの段組領域に続く段組領域との間に、例えば図19(C)中の空白2003のような横(X方向)に横断する空白を空けることができる。そして、実施例2の情報処理装置が、平滑化処理の対象となった段組領域に続く段組領域に含まれるブロックを上方に移動させて上記横に横断する空白を詰めることができる。その結果、例えば段組構成が複数段から1段に変わる場合でも、この1段の段組構成に対応する段組領域に含まれるブロックを一様に上方に移動させることによって、ページ内の余剰余白を除去することができる。
【0069】
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【0070】
1 コンピュータ
2 プリンタ
3 ディスプレイ装置
【特許請求の範囲】
【請求項1】
少なくとも第1の段と第2の段の複数の段組で構成されるページにおいて、前記第1の段に含まれるオブジェクト間の空白を所定の距離まで詰めることにより前記第1の段の空白を削減する削減手段と、
前記削減手段が前記第1の段の前記オブジェクト間の空白を削減することにより生じる第1の段の下部の空白に前記第2の段の先頭のオブジェクトが収まる場合、前記第2の段の先頭のオブジェクトを第1の段の下部の空白に移動する移動手段を備えることを特徴とする情報処理装置。
【請求項2】
前記移動手段によって前記第2の段のオブジェクトが移動された後の前記第1の段の高さと前記第2の段の高さを比較する比較手段を更に有し、
前記比較手段が比較した結果、前記第1の段の高さと前記第2の段の高さの差が閾値以上である場合、前記移動手段は、前記第1の段の高さと前記第2の段の高さの差が閾値以下になるように前記第1の段のオブジェクトの一部を前記第2の段に戻すことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
少なくとも第1の段と第2の段の複数の段組で構成されるページにおいて、前記第1の段に含まれるオブジェクト間の空白を所定の距離まで詰めることにより前記第1の段の空白を削減する削減工程と、
前記削減工程によって前記第1の段の前記オブジェクト間の空白を削減することにより生じる第1の段の下部の空白に前記第2の段の先頭のオブジェクトが収まる場合、前記第2の段の先頭のオブジェクトを第1の段の下部の空白に移動する移動工程を有することを特徴とする情報処理装置の制御方法。
【請求項4】
前記移動工程によって前記第2の段のオブジェクトが移動された後の前記第1の段の高さと前記第2の段の高さを比較する比較工程を更に有し、
前記比較工程によって前記高さを比較した結果、前記第1の段の高さと前記第2の段の高さの差が閾値以上である場合、前記第1の段の高さと前記第2の段の高さの差が閾値以下になるように前記第1の段のオブジェクトの一部を前記第2の段に戻す工程を有することを特徴とする請求項3に記載の情報処理装置の制御方法。
【請求項5】
請求項3または請求項4に記載の情報処理装置の制御方法をコンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項1】
少なくとも第1の段と第2の段の複数の段組で構成されるページにおいて、前記第1の段に含まれるオブジェクト間の空白を所定の距離まで詰めることにより前記第1の段の空白を削減する削減手段と、
前記削減手段が前記第1の段の前記オブジェクト間の空白を削減することにより生じる第1の段の下部の空白に前記第2の段の先頭のオブジェクトが収まる場合、前記第2の段の先頭のオブジェクトを第1の段の下部の空白に移動する移動手段を備えることを特徴とする情報処理装置。
【請求項2】
前記移動手段によって前記第2の段のオブジェクトが移動された後の前記第1の段の高さと前記第2の段の高さを比較する比較手段を更に有し、
前記比較手段が比較した結果、前記第1の段の高さと前記第2の段の高さの差が閾値以上である場合、前記移動手段は、前記第1の段の高さと前記第2の段の高さの差が閾値以下になるように前記第1の段のオブジェクトの一部を前記第2の段に戻すことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
少なくとも第1の段と第2の段の複数の段組で構成されるページにおいて、前記第1の段に含まれるオブジェクト間の空白を所定の距離まで詰めることにより前記第1の段の空白を削減する削減工程と、
前記削減工程によって前記第1の段の前記オブジェクト間の空白を削減することにより生じる第1の段の下部の空白に前記第2の段の先頭のオブジェクトが収まる場合、前記第2の段の先頭のオブジェクトを第1の段の下部の空白に移動する移動工程を有することを特徴とする情報処理装置の制御方法。
【請求項4】
前記移動工程によって前記第2の段のオブジェクトが移動された後の前記第1の段の高さと前記第2の段の高さを比較する比較工程を更に有し、
前記比較工程によって前記高さを比較した結果、前記第1の段の高さと前記第2の段の高さの差が閾値以上である場合、前記第1の段の高さと前記第2の段の高さの差が閾値以下になるように前記第1の段のオブジェクトの一部を前記第2の段に戻す工程を有することを特徴とする請求項3に記載の情報処理装置の制御方法。
【請求項5】
請求項3または請求項4に記載の情報処理装置の制御方法をコンピュータに実行させることを特徴とするコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公開番号】特開2012−3580(P2012−3580A)
【公開日】平成24年1月5日(2012.1.5)
【国際特許分類】
【出願番号】特願2010−139192(P2010−139192)
【出願日】平成22年6月18日(2010.6.18)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年1月5日(2012.1.5)
【国際特許分類】
【出願日】平成22年6月18日(2010.6.18)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]