(57)【要約】【課題】文書中の余白を削減することなく、ページ数の削減を可能にする。【解決手段】文書の総ページ数を削減する文書編集装置であって、文書の余白をオブジェクトとする空白領域を作成する領域作成手段５１と、複数の空白領域の中から選択された空白領域の削除を禁止する領域削除禁止手段５２と、領域削除禁止手段５２により削除を禁止した空白領域を文書列方向に収縮する領域収縮手段５５と、を備え、任意の空白領域の削除を禁止すると共に、空白領域を領域収縮手段５５によって文書列方向に縮めて得られる文書の余白に文書中の後方のオブジェクトを配置することにより、文書の総ページ数を削減する。  【選択図】図２
2010092305.tif 000002
【特許請求の範囲】
【請求項１】
文書の余白を示す空白領域を作成する領域作成手段と、
複数の空白領域の中から選択された空白領域の編集を禁止する領域編集禁止手段と、
前記領域編集禁止手段により編集を禁止されなかった空白領域を文書列方向に収縮する領域収縮手段と、
を備え、
前記領域収縮手段は、空白領域を縮小して、当該空白領域の後方のオブジェクトのページ位置を変更することにより、文書の総ページ数を削減する文書編集装置。
【請求項２】
前記領域収縮手段は、前記領域編集禁止手段により編集を禁止されなかった空白領域を削除することなく、当該空白領域の後方のオブジェクトのページ位置を変更できるように当該空白領域を縮小することを特徴とする請求項１に記載の文書編集装置。
【請求項３】
前記領域編集禁止手段により編集を禁止した空白領域の前方のオブジェクト及び空白領域を格納する前方ブロックコンテナを作成するとともに、当該空白領域の後方のオブジェクト及び空白領域を格納する後方ブロックコンテナを作成するブロックコンテナ作成手段と、
前記前方ブロックコンテナと前記後方ブロックコンテナとの編集を禁止した前記空白領域に連結する連結手段と、
ユーザインタフェースを画面上に表示させる表示手段と、
を備えることを特徴とする請求項１または２に記載の文書編集装置。
【請求項４】
前記前方ブロックコンテナと前記後方ブロックコンテナとのプロポーションとの比率を維持するように、前記前方ブロックコンテナ及び前記後方ブロックコンテナの空白領域を縮小又は削除する請求項３記載の文書編集装置。
【請求項５】
コンピュータを、請求項１から４のいずれかに記載の文書編集装置として機能させるためのプログラム。
【請求項６】
請求項５に記載のプログラムを格納したコンピュータで読み取り可能な記録媒体。
【請求項７】
文書の余白を示す空白領域を作成する領域作成工程と、
複数の空白領域の中から選択された空白領域の編集を禁止する領域編集禁止工程と、
前記領域編集禁止工程により編集を禁止されなかった空白領域を文書列方向に収縮する領域収縮工程と、
を備え、
前記領域収縮工程は、空白領域を縮小して、当該空白領域の後方のオブジェクトのページ位置を変更することにより、文書の総ページ数を削減する文書編集方法。
【請求項８】
前記領域収縮工程は、前記領域編集禁止工程により編集を禁止されなかった空白領域を削除することなく、当該空白領域の後方のオブジェクトのページ位置を変更できるように当該空白領域を縮小することを特徴とする請求項７に記載の文書編集方法。
【請求項９】
前記領域編集禁止工程により編集を禁止した空白領域の前方のオブジェクト及び空白コンテナを格納する前方ブロックコンテナを作成するとともに、当該空白領域の後方のオブジェクト及び空白コンテナを格納する後方ブロックコンテナを作成するブロックコンテナ作成工程と、
前記前方ブロックコンテナと前記後方ブロックコンテナとの編集を禁止した前記空白領域に連結する連結工程と、
ユーザインタフェースを画面上に表示させる表示工程と、
を備えることを特徴とする請求項７または８に記載の文書編集方法。
【請求項１０】
前記前方ブロックコンテナと前記後方ブロックコンテナとのプロポーションとの比率を維持するように、前記前方ブロックコンテナ及び前記後方ブロックコンテナの空白領域を縮小又は削除する請求項９記載の文書編集方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は文書編集装置に関し、特に、文書中の空白領域の削除又は縮小により文書の総ページ数の削減を可能とする文書編集装置及び文書編集方法に関する。
【背景技術】
【０００２】
一般に、文書を作成する場合、文書の可読性を高めたり、文書の体裁を整えたりするために、文章と文章との間に余白を設けることがある。しかし、余白を設けると、文書の総ページ数が増え、印刷ページ数が増加するという問題がある。
このため、従来の印刷装置は、最終ページの前のページの印刷データを、印刷データの種類毎の領域（文字列領域、イメージ領域など）に分割し、分割した領域間の空白部をページ頭方向に詰めることで、印刷総ページ数を削減する（特許文献１）。
【特許文献１】特開２００５−１４９２１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、文書中の余白は必ずしも無駄ではなく、文書の可読性を高めたり、文書の体裁を整えたりする重要な役割を持っており、余白の全てを削除することで、文書の可読性が著しく低下するおそれがある。
本発明は、文書の可読性や体裁に必要な余白を削除せずに文書の総ページ数を削減する文書編集装置を提供することを目的とする。
【課題を解決するための手段】
【０００４】
本発明は前記目的を達成するため、文書の余白を示す空白領域を作成する領域作成手段と、複数の空白領域の中から選択された空白領域の編集を禁止する領域編集禁止手段と、前記領域編集禁止手段により編集を禁止されなかった空白領域を文書列方向に収縮する領域収縮手段と、を備え、前記領域収縮手段は、空白領域を縮小して、当該空白領域の後方のオブジェクトのページ位置を変更することにより、文書の総ページ数を削減する。
【発明の効果】
【０００５】
本発明によれば、総ページ数を削減することができ、文書の可読性及び文書の体裁を整えることができる。また、印刷した場合に印刷用紙の節約が可能となる。
【発明を実施するための最良の形態】
【０００６】
図１は文書編集装置として用いられるコンピュータモジュール、入力装置、出力装置の一例を示す。
コンピュータモジュール１０１は、典型的に、少なくとも１つのプロセッサーユニット（ＣＰＵ１３５）１３５と、半導体のランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）等からなるメモリユニット１３６と、相互接続バス１３４を備える。
【０００７】
また、コンピュータモジュール１０１は、ビデオインタフェース１３７を含むＩＮＰＵＴ／ＯＵＴＰＵＴ（Ｉ／Ｏ）インタフェース１４３を有する。
【０００８】
入力装置としてのキーボード１３２及びマウス１３３は、Ｉ／Ｏインタフェース１４３に接続され、出力装置としてのビデオディスプレイ１４４は、ビデオインタフェース１３７に接続される。
【０００９】
入力／出力インタフェース１３８はネットワーク１０７を介して他のコンピュータ装置に接続してもよい。ネットワーク接続１０７は、典型的には、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）からなる。記憶装置１３９としては、ハードディスクドライブ１４０、フレキシブルディスクドライブ１４１を設けているが、磁気テープドライブを設けてデータを記憶するようにしてもよい。
【００１０】
データの可読装置としては、例えば、不揮発性のデータソースとしてＣＤ―ＲＯＭ１４２を設けているが、これ以外のストレージ、例えば、ＤＶＤでよいローカルプリンタ１４５は、必要に応じて接続する。オペレーションソフト（ＯＳ）としては、例えば、ＬＩＮＵＸやマイクロソフトＷｉｎｄｏｗｓ（登録商標）をインストールする。ハードディスク１４０には、文書編集プログラムがインストールされている。
【００１１】
図３はビデオディスプレイに表示するユーザインタフェース３０１の一例を示し、図２９はコンピュータモジュール１０１（図１）及びこれに接続された入力装置、出力装置のハードウエア資源を文書編集装置として機能させるプログラムの機能ブロック図である。
【００１２】
図３において、３０２は編集の対象となる文書表示領域を示す。３０３は編集前の文書、３０４は文書３０３中の空白コンテナを表示させるための「余白の表示」ボタン、３０５は文書の総ページ数を削減する処理（以下、間締め処理という）を実行する「間締め」ボタンである。なお、「空白コンテナ」とは、文書の余白をオブジェクトとするものをいい、余白を維持するための空白領域である。
また、３０６は現在の総ページ数を表示させる総ページ数表示領域である。ユーザはマウスポインタ３０７を、マウス１３３の操作によってユーザインタフェース３０１上を移動させることができる。
図２９に示すように、文書作成プログラムは、ＣＰＵ１３５を文書分解手段５０、領域作成手段５１、領域編集禁止手段５２、ブロックコンテナ作成手段５３、連結手段５４及び領域収縮手段５５、領域削除手段５６として機能させる。一方、ビデオディスプレイ１４４を表示手段及びユーザインタフェースとして機能させる。
【００１３】
文書作成プログラムを起動すると、まず、ＣＰＵ１３５が画面表示手段として機能して、ディスプレイには文書選択画面を表示させる。
【００１４】
ユーザがマウス又はキーボートを操作して文書選択画面上から文書を選択すると、ＣＰＵ１３５が、ハードディスク１４０から文書を呼び出してユーザインタフェース上に表示させる。表示形式は、任意であるが、本実施形態では、文書の複数のページをページ順に複数ページ並べて表示させて、ユーザの操作に待機し、ユーザの操作を検出する。
【００１５】
ユーザが余白表示ボタンを押下したことを検知すると、ＣＰＵ１３５は、文書分解手段５０（ＣＰＵ１３５）として機能して、選択した文書の文書構造を解析し、文書を、オブジェクトと余白とに分解し、各ページに表示させる。
この後、ＣＰＵ１３５は領域作成手段５１として機能する。
領域作成手段５１は、文書中の余白毎に且つ余白位置に空白コンテナを作成し、作成した空白コンテナに文書中の余白を格納する。次に、ＣＰＵ１３５が領域編集禁止手段５２として機能する。
ユーザがビデオディスプレイに表示されている空白コンテナの中から編集しない空白コンテナの上にマウスポインタを移動させ、マウスの右クリックをする。この指示により、領域編集禁止手段５２は、選択された余白コンテナを、編集しない空白コンテナとして確定し、記録して、削除手段による空白コンテナの削除や空白コンテナ収縮手段による編集を禁止する。
【００１６】
次に、ＣＰＵ１３５は、ブロックコンテナ作成手段５３として機能して、領域編集禁止手段により編集を禁止した空白コンテナの前方に前方ブロックコンテナを、後方に後方ブロックコンテナを作成する。そして、ＣＰＵ１３５は、空白コンテナ前のオブジェクト及び空白コンテナを、前方ブロックコンテナに格納し、空白コンテナの後のオブジェクト及び空白コンテナを、後方ブロックコンテナに格納する。そして、連結手段５４に切換わり、前方ブロックコンテナと前記後方ブロックコンテナとを、編集を禁止した前記空白コンテナに連結する。
この後、ＣＰＵ１３５は、領域収縮手段５５として機能して、編集を禁止した空白コンテナを文書列方向に収縮する。
ＣＰＵ１３５は、ユーザが指定した空白コンテナについて、このような処理を繰り返し、空白コンテナの収縮に伴って移動する後方ブロックコンテナの文頭方向の移動により、文書の総ページ数を減少させる。なお、領域収縮手段５５は、文書の可読性や体裁を維持するため、各空白コンテナについての収縮値を所定値に制限する。
【００１７】
以下、文書作成プログラム、文書作成装置、ユーザインタフェースの実施形態を具体的に説明する。
【００１８】
（実施形態１）
【００１９】
図２は、ユーザインタフェースの余白の表示ボタン３０４がマウス１３３により押下されたとき、ＣＰＵ１３５が実行する文書編集プログラムの一例を示す。ステップＳ２０１では、ＣＰＵ１３５は、文書のオブジェクトのタイプ、文書３０３上のオブジェクトの位置やサイズなどのオブジェクト情報に基づいてフォーマットを解析する。この後、解析結果に基づいて文書３０３中のオブジェクト、余白、文書表示領域３０２の表示情報を更新する。
【００２０】
ステップＳ２０２では、分解したオブジェクト群中に文書幅一杯の矩形状の余白（以下、余白という）が存在するか否かをＣＰＵ１３５が判定する。
ステップＳ２０２において、余白が存在する場合、ステップＳ２０３に進み、余白が存在しない場合は、処理を終了する。
ステップＳ２０３では、ＣＰＵ１３５が領域作成手段５１として機能して、文書３０３のオブジェクト間の余白をコンテンツとして空白コンテナを作成する。ここで、空白コンテナの作成処理について、図４と図５を用いて具体的に説明する。図４の１ページ目において領域作成手段５１は、文書幅一杯の余白をページの先頭で検知する。その後、下方向へ文書やイメージ等のオブジェクトが検知されるまでの領域を空白コンテナ５０１と認識する。
さらに、領域作成手段５１は、１つ目のオブジェクトの下端から文書幅一杯の余白を検知し、次のオブジェクト４０１の上端までを２つ目の空白コンテナ５０２と認識する。この処理を繰り返すことにより、空白コンテナ５０３から５０６が生成される。
さらに、領域作成手段５１は、２ページ目の２つ目のオブジェクトの下端に文書幅一杯の余白を検知し、次のオブジェクトである３ページ目の１つ目のオブジェクトの上端までの余白を空白コンテナ５０８として生成する。このようにページを跨ぐ余白から１つの空白コンテナを作成する。
そして、領域作成手段５１は、最終ページの最後のオブジェクトからページの終端までの余白を１つの空白コンテナ５１４として生成する。
なお、空白コンテナは、他のオブジェクトと重らない。また、間締めとは、余白を利用してページを順次配置し、印刷枚数を削減することをいう。
ページマージンは、空白コンテナに含めない。これにより、ページマージンの利用が可能になる。
以上の領域作成手段５１による処理により、図５の空白コンテナ５０１〜５１４が生成される。
＜空白コンテナの表示＞
ＣＰＵ１３５は、「余白の表示」ボタン３０４が押下されることによって空白コンテナ５０１〜５１４を表示し、さらに、「余白の表示」ボタン３０４が押下されることによって空白コンテナ５０１〜５１４を非表示とする。ステップＳ２０３の空白コンテナの作成を終了すると、ステップＳ２０４に進む。
【００２１】
ステップＳ２０４では、ＣＰＵ１３５が、空白コンテナ５０１〜５１４の中から縮小したい空白コンテナがユーザによって選択されているか否かを判定する。縮小したい空白コンテナがユーザによって選択された場合は、ステップＳ２０５に進む。なお、縮小対象とする空白コンテナの選択は、ユーザが行う。
【００２２】
ステップＳ２０５では、ＣＰＵ１３５が、ユーザにより選択された空白コンテナに可変属性を設定する。本実施の形態では、ポップアップメニューのプロパティダイアログを開き、これにリンク（連結手段５４）するプロパティダイアログから空白コンテナに可変属性が設定される。
【００２３】
図６はポップアップメニュー６０１の一例を示し、図７はポップアップメニュー６０１にリンク（連結手段５４）するプロパティダイアログの一例を示す。
【００２４】
ＣＰＵ１３５は、マウス１３３の右クリックを検出すると、ポップアップメニュー６０１をユーザインタフェース３０３上に表示させる。また、ＣＰＵ１３５は、ポップアップメニュー６０１から呼び出すプロパティダイアログの確定ボタン、キャンセルボタンとリンク（連結手段５４）している。
プロパティダイアログ７０１のコンテナの高さの最小値を設定するエディットボックス７０２に、数値を入力して、確定ボタンである「ＯＫ」ボタンを押下すると、ＣＰＵ１３５がこれをコンテナの可変設定値として確定する。確定ボタンにより空白コンテナの高さの設定を終了すると、ステップＳ２０６に進む。
【００２５】
ステップＳ２０６では、ＣＰＵ１３５が、縮小の対象とした空白コンテナよりも前の部分（前ページ方向）にあるテキストオブジェクト、イメージオブジェクト、縮小対象として選択されていない空白コンテナを一つのコンテナとしてブロックコンテナを作成する。
この場合、ＣＰＵ１３５は、縮小の対象とする空白コンテナよりも前に、同じく縮小の対象として選択した別の空白コンテナが存在する場合は、その空白コンテナまでのオブジェクト群を一ブロックとしてブロックコンテナ（前方ブロックコンテナ）を作成する。
【００２６】
ステップＳ２０７では、ＣＰＵ１３５が、縮小の対象として選択した空白コンテナの後の部分（後ページ方向）にあるテキストオブジェクト、イメージオブジェクト、空白コンテナのオブジェクト群を一ブロックとしてブロックコンテナを作成する。このとき、ＣＰＵ１３５は、縮小の対象として選択した別の空白コンテナが後の部分に存在する場合は、その空白コンテナまでのオブジェクト群を一ブロックとして、ブロックコンテナ（後方ブロックコンテナ）を作成する。
【００２７】
図８は、ステップＳ２０６、ステップＳ２０７で作成したブロックコンテナの一例を示す。図中、８０１が縮小の対象とした空白コンテナ（縮小コンテナ）、８０２が前方ブロックコンテナ、８０３が後方ブロックコンテナを示す。また、８０４、８０５は、縮小コンテナ８０１と前方ブロックコンテナ８０４、縮小コンテナ８０１と後方ブロックコンテナ８０５とを接続するリンク（連結部）を示す。
【００２８】
ステップＳ２０８では、ＣＰＵ１３５が、間締めボタン３０５の押下を検出し、間締めボタン３０５の押下の有無によってページ数を削減するか否かを判定する。
ＣＰＵ１３５は、間締めボタン３０５が押下されたときは、ページ数を削減するものとし、間締めボタン３０５が押下されていない場合は、ページ数の削減をしない。そして、ＣＰＵ１３５は、「間締め」ボタンが押下されるまでは、ステップＳ２０４〜ステップＳ２０７の処理を繰り返す。
「間締め」ボタンが押下された場合、ステップＳ２０９に進んで、動的レイアウト処理によりページ数の削減、すなわち、文書３０３の間締めを行う。
【００２９】
図１３は、ＣＰＵ１３５が実行する動的レイアウト処理、すなわち、間締め処理の手順を示す。
【００３０】
ステップＳ１３０１では、ＣＰＵ１３５が、文書３０３の最終ページにある最後のオブジェクトが、空白コンテナであるか、又は、ブロックコンテナであるかを判定する。判定は、例えば、ステップＳ２０２の空白コンテナの作成履歴と、ステップＳ２０６及びステップＳ２０７のブロックコンテナの作成履歴に基づいて行う。判定の結果が、最終ページにある最後のオブジェクトが空白コンテナに該当する場合は、ステップＳ１３０４に進む。また、最終ページにある最後のオブジェクトがブロックコンテナに該当する場合は、ステップＳ１３０２に進む。
【００３１】
ステップＳ１３０２では、そのブロックコンテナ内の最後のオブジェクトが空白コンテナであるかどうかを判定する。判定は、例えば、ステップＳ２０２の空白コンテナの作成履歴と、ステップＳ２０６及びステップＳ２０７のブロックコンテナの作成履歴に基づいて行う。ステップＳ１３０２で、空白コンテナと判定した場合、ＣＰＵ１３５はステップＳ１３０３に進んで、そのブロックコンテナ内の最後の空白コンテナを削除する。これにより、最後のブロックコンテナの高さが短くなる分、前ページへのレイアウトに有利になる。
【００３２】
ステップＳ１３０４では、ＣＰＵ１３５が、最終ページの残りのオブジェクトの高さを求めてステップＳ１３０５に進む。
【００３３】
ステップＳ１３０５では、ＣＰＵ１３５が、文書３０３内に存在する縮小対象のすべての空白コンテナについて縮小可能なサイズの総計を計算する。
例えば、図１２に示すように、ＣＰＵ１３５は、縮小対象として選択された空白コンテナ８０１の現在の高さと当該空白コンテナ８０１に設定された高さの最小値との差を算出する。同様に、ＣＰＵ１３５は、縮小対象として選択された空白コンテナ１１０１の現在の高さと当該空白コンテナ１１０１に設定された高さの最小値との差を算出する。そして、ＣＰＵ１３５は、両者の差を加算して縮小可能サイズを算出する。
【００３４】
ステップＳ１３０６では、ＣＰＵ１３５が、ステップＳ１３０４で算出した値（最終ページの残りのオブジェクト長）が、ステップＳ１３０５で算出した値（縮小可能サイズ）以下か否かを判定する。
【００３５】
ステップＳ１３０７で、最終ページの残りのオブジェクト長が、縮小可能サイズ以下の場合、ＣＰＵ１３５は、最終ページの残りのオブジェクトの長さ分だけ、縮小対象として選択された空白コンテナのそれぞれの高さを縮小する。このレイアウト計算により、空白領域収縮手段は、空白コンテナを削除することなく、必要な文だけ空白コンテナを縮小することが可能となる。
【００３６】
レイアウトの計算は、縮小を選択した空白コンテナのそれぞれの高さの比率を維持しながら、それぞれの高さの最小設定値を下回らないように空白コンテナの高さを縮小する計算を行う。すなわち、空白コンテナ８０１の高さと空白コンテナ１１０１の高さの比率をＡ：Ｂ、空白コンテナ８０１の高さの最小値をＸ、空白コンテナ１１０１の高さの最小値をＹ、最終ページの残りのオブジェクトの長さをＺとして、以下の計算を行う。
（１）Ａ：Ｂの比率を維持しながら、空白コンテナ８０１の高さと空白コンテナ１１０１の高さを縮小する。
（２）比率を維持しながら縮小する場合、空白コンテナ８０１の高さが最小値Ｘを下回る場合は、空白コンテナ８０１の縮小を最小値Ｘでとりやめ、空白コンテナ１１０１の高さの縮小のみを行う。
（３）（２）の場合で、空白コンテナ１１０１の高さが最小値Ｙを下回る場合は、空白コンテナ１１０１の縮小を最小値Ｙでとりやめ、空白コンテナ８０１の縮小のみを行う。
（４）  縮小値の総計が、Ｚに至る場合は、処理を終了する。
【００３７】
以上が動的レイアウトの処理フローである。
ＣＰＵ１３５は、ステップＳ１３０６で最終ページの残りのオブジェクト長が、縮小を選択したすべての空白コンテナの高さの最小値の総計より大きい場合、レイアウト計算を中止する。リンク（連結部）で関連付けられたコンテナの動的レイアウト計算方法に基づけば、図８に示すように、縮小の対象とする空白コンテナとその前後の前方ブロックコンテナ、後方ブロックコンテナは、コンテナの集合体となる。
【００３８】
図９は、前記した動的レイアウト処理によって集合体としたコンテナ集合体の一例を示す。この例では、ＣＰＵ１３５が、空白コンテナ８０１のみの上辺と下辺との間の長さを可変とし、動的レイアウト計算によって空白コンテナ８０１のサイズを変更する。ステップＳ２０９を終了すると、ステップＳ２１０に進む。
【００３９】
ステップＳ２１０では、ＣＰＵ１３５が、総ページが減少、すなわち、編集を禁止されなかった空白領域の後方のオブジェクトのページ位置を変更することにより、総ページ数の削減が成功したか否かを判定する。ステップＳ２１０において、ページ数の削減を成功した場合は、ステップＳ２１１に進み、ページ数の削減を失敗した場合は、成功するまでステップＳ２０４以降の処理、すなわち、空白コンテナの高さの変更と、動的レイアウト処理を繰り返す。
【００４０】
ステップＳ２１１では、レイアウト変更を確定する。レイアウトの変更の確定を終了すると、ステップＳ２０４に戻って、縮小したい空白コンテナの選択を待つ。ユーザが、新たに縮小したい空白コンテナを選択した場合は、前記したように、選択を指定した空白コンテナに対する高さの設定と、空白コンテナの前後のブロックコンテナの動的レイアウト処理を行って文書３０３のページ数を削減する。
【００４１】
図１４は、レイアウト変更を確定した場合のユーザインタフェース３０１の一例を示す。ＣＰＵ１３５は、文書３０３の総ページ数の削減に伴って総ページ数表示領域３０６の表示を更新する。このように、本実施形態に係る文書編集プログラムは、文書３０３の総ページ数の削減を可能とする。
【００４２】
図１０は、更にブロックコンテナに含まれる空白コンテナを、縮小したい空白コンテナとして選択した場合のユーザインタフェース３０１の一例を示す。
この場合は、図６と同様にポップアップメニュー６０１を表示させ、「余白の表示」ボタン３０４をマウス１３３によって、再度、押下する。
ＣＰＵ１３５は、図１０に示すように、ブロックコンテナに含まれる空白コンテナ５０１〜５１４の表示を、他のオブジェクトと区別できるように反転させ、再選択が可能であることを表示する。
【００４３】
図１１は、更にブロックコンテナに含まれる空白コンテナを、縮小したい空白コンテナとして選択してブロックコンテナを作成した場合のユーザインタフェース３０１の一例を示し、図１２は、図１１のコンテナの集合の模式図である。この例では、ＣＰＵ１３５は、図１０に示したブロックコンテナ８０３を分割し、新たに縮小選択された空白コンテナ１１０１、空白コンテナ１１０１の前のブロックコンテナ１１０２、空白コンテナ１１０１の後のブロックコンテナ１１０３を作成する。更にそれらのコンテナのリンク（連結部）１１０４、１１０５を作成する。このとき、図１２に示すように、空白コンテナ８０１および空白コンテナ１１０１が可変の上辺、下辺を持ち、前記動的レイアウト計算によりサイズが変更される対象となる。
【００４４】
なお、コンテナの動的レイアウト計算方法は、先に本出願人が開示した特許文献２（特開２００５−１２２７２８号公報）および特許文献３（特開２００５−１３５３９７号公報）の動的レイアウト法を用いる。特許文献２および３で開示されているリンク（連結部）で関連付けられたコンテナの動的レイアウト計算方法に基づけば、図８で示すように、縮小の対象とする空白コンテナとその前後の前方ブロックコンテナ、後方ブロックコンテナは、コンテナの集合体となる。
【００４５】
また、ＣＰＵ１３５は、ステップＳ１３０６でレイアウト計算を中止した場合、文書の総ページ数の削減に失敗したとみなして、レイアウト変更を行わず、ユーザインタフェース３０１を図５の状態に戻す。
【００４６】
実施形態１に係る文書編集装置によれば、文書中の余白をコンテンツとする空白コンテナを自動作成する。その余白の一つをユーザが縮めることを選択した際、空白コンテナを可変コンテナに変更する。そして、可変コンテナを縮小することでページ数を減らしながらも、ユーザが必要とする余白を残すことが可能となる。
【００４７】
（実施形態２）
図１５は、本発明に係る文書編集プログラムの他の手順を示すフローチャート、図１６は、本発明の実施形態２に係るユーザインタフェースを示す。
実施形態２に係る文書編集プログラムは、ステップＳ１５０１〜ステップＳ１５０３に関しては、実施形態１にて説明した文書編集プログラム（図２、図４及び図５参照）と同じある。また、ユーザインタフェースは実施形態１の図３の説明と同様である。文書編集プログラムにおいて、ＣＰＵ１３５は、ユーザインタフェースに文書１６０３を表示させる。
【００４８】
ステップＳ１５０４では、ＣＰＵ１３５が、空白コンテナに対する非削除の選択を受理する。ステップＳ１５０５では、この削除対象外の空白コンテナを削除しないように記録する。
【００４９】
図１７にステップＳ１５０４で削除対象外の空白コンテナの選択を受理したときのユーザインタフェース３０１の一例を示す。
ＣＰＵ１３５は、空白コンテナ上でのマウス１３３の右クリックなどによるユーザ操作を受け付け、ポップアップメニュー１７０１を表示させる。そして、ポップアップメニュー１７０１から、例えば、「間締め時に削除しない」の選択を受理する。この指示により、ＣＰＵ１３５は、選択した空白コンテナを、文書編集時、非削除を選択した空白コンテナが削除されることがないように記録する。
【００５０】
図１８は、ユーザが選択した空白コンテナを選択し、ＣＰＵ１３５が削除しないようにハードディスク１４０に記録したときに、ＣＰＵ１３５がビデオディスプレイに対して表示させるユーザインタフェース３０１の一例を示す。
図１８に示すように、ＣＰＵ１３５は、削除対象外とした空白コンテナ１８０１に対して削除を禁止したことをユーザが確認できるようにするため、削除対象外とした空白コンテナを塗り潰す等してマーキングする。
【００５１】
ＣＰＵ１３５は、他の空白コンテナに対しても、削除対象外の空白コンテナの選択を受け付けると、その削除対象外の空白コンテナを削除しないように記録する。
ステップＳ１５０６では、ＣＰＵ１３５が、削除対象外の空白コンテナに対して可変設定をするか否かを判定する。ユーザが可変設定を選択した場合は、ステップＳ１５０７に進み、削除対象外として選択した空白コンテナについて収縮を可能とする可変コンテナに変更する。
【００５２】
図１９は、ステップＳ１５０６において、ユーザが削除対象外として選択した空白コンテナの可変選択を受け付けたときのユーザインタフェース３０１の一例を示す。
ＣＰＵ１３５は、マウスポインタ３０７で指示された空白コンテナ上でのマウス１３３の右クリックなどによるユーザ操作を受け付け、ポップアップメニュー１９０１を表示させる。そして、このポップアップメニュー１９０１からの「可変設定」の選択により、「可変設定」にリンク付けされている空白コンテナのプロパティダイアログを表示させる。
【００５３】
図２０は、空白コンテナのプロパティダイアログ２００１の一例を示す。図中、２００２はコンテナを可変設定するための可変指定チェックボックスを示すものである。この例では、ＣＰＵ１３５は、可変指定チェックボックス２００２のオン（あり）／オフ（なし）により、可変を設定する。可変指定チェックボックス２００２をオン設定すると、ＣＰＵ１３５は、最小値エディットボックス２００３、最大値エディットボックス２００４に対するテキスト入力を許可し、オフの場合は、入力を禁止する。
最小値エディットボックス２００３は、空白コンテナを動的変更する際の高さの最小値を設定するボックスであり、最大値エディットボックス２００４は、空白コンテナを動的変更する際の高さの最大値を設定するボックスである。
【００５４】
ＣＰＵ１３５は、他の削除対象外の空白コンテナに対しても、同様に、可変設定を受理し、その削除対象外の空白コンテナを可変コンテナに変更する。
図２１は２１０１〜２１０４の削除対象外として選択した空白コンテナの可変設定後の様子を示す。可変設定後は、設定完了を示すため、ユーザが可変設定した空白コンテナ２１０１、２１０２が塗りつぶされる。これにより、可変設定の終了を視認することができる。
【００５５】
ステップＳ１５０８では、ＣＰＵ１３５が指定ページ数への削減指示を受け付け、ステップＳ１５０９では、ＣＰＵ１３５が、動的レイアウトを実施する。
図２２は、ステップＳ１５０８で指定ページ数への削減指示を受け付ける際のユーザインタフェース３０１を示す。
ＣＰＵ１３５は、マウス１３３などにより、間締めボタン３０５が押下された際、間締め設定ダイアログ２２０１を表示させる。間締め設定ダイアログ２２０１において、２２０２は、ページ数指定エディットボックスである。このレイアウト変更により削減する総ページ数を指定する。２２０３は、現在ページ数表示テキストボックスであり、現在の総ページ数を表示させるボックスである。「ＯＫ」ボタンを設定すると設定を確定でき、「キャンセル」ボタンを押下すると、設定をキャンセルすることができる。
【００５６】
図２３は、ＣＰＵ１３５がステップＳ１５０９において実施する動的レイアウトの処理内容の一例を示すフローチャートである。以下、ステップＳ１５０５で削除対象外として記録した空白コンテナを非削除空白コンテナ、ステップＳ１５０５で削除対象外として記録していない空白コンテナを一般空白コンテナと呼ぶ。
【００５７】
ステップＳ２３０１では、ＣＰＵ１３５が、文書内の各非削除空白コンテナに対し、各非削除空白コンテナの前にある前方テキストオブジェクト、イメージオブジェクト、一般空白コンテナをコンテンツとする可変のブロックコンテナを作成する。
この際、ＣＰＵ１３５は、別の非削除空白コンテナが前の部分に存在するかどうかを判定し、存在する場合は、その非削除空白コンテナまでのオブジェクト群を一ブロックとして、可変の前方ブロックコンテナを作成する。
【００５８】
ステップＳ２３０２では、ＣＰＵ１３５が、文書内の最後の非削除空白コンテナに対し、非削除空白コンテナの後にあるテキストオブジェクト、イメージオブジェクト、一般空白コンテナをコンテンツとする可変の後方ブロックコンテナを作成する。
【００５９】
図２４は、ステップＳ２３０１、Ｓ２３０２において、ブロックコンテナを作成したときにビデオディスプレイに表示するユーザインタフェース３０１の一例である。図中、２４０１〜２４０５がブロックコンテナを、２４１１〜２４１８がリンク（連結部）を示す。なお、リンク２４１１〜２４１８については、実施形態１で説明したので、ここでは、説明を省略する。
図２５は、図２４のコンテナの集合の一例を示す模式図である。可変指定した非削除空白コンテナ２１０１〜２１０４およびブロックコンテナ２４０１〜２４０５は、前記の可変設定によって可変の上辺、下辺を持ち、後述する動的レイアウト計算によりサイズが変更される。
【００６０】
ステップＳ２３０３では、ＣＰＵ１３５が、ステップＳ１５０８で指定した削減後の文書のページ数に関し、削減後のページ数の縦方向のページ総領域長を計算するページ総領域長算出手段として機能する。
総領域長は、各ページにおけるページマージンを除くコンテンツの配置可能な領域の総計である。以下、これを削減後ページ総領域長と呼ぶ。
【００６１】
ステップＳ２３０４では、ＣＰＵ１３５が、各ブロックコンテナの一般空白コンテナの総領域長を計算する。
ステップＳ２３０５では、ＣＰＵ１３５が、各ブロックコンテナが持つ空白コンテナの総領域を加算し、文書内の一般空白コンテナの総領域長を計算する。
ステップＳ２３０６では、ＣＰＵ１３５が、すべての非削除空白コンテナの最小領域長を加算し、文書内の非削除空白コンテナの最小領域長を計算する。
ＣＰＵ１３５は、固定の非削除空白コンテナについては、現在の領域長（高さ）を用い、可変の非削除空白コンテナに関しては、前記空白コンテナのプロパティダイアログ２００１における最小値エディットボックス２００３に入力された値を用いる。
ステップＳ２３０７では、ＣＰＵ１３５が、ステップＳ２３０３〜ステップＳ２６０６で計算されたそれぞれの値が以下の関係を満たすかどうかを判定する。
【００６２】
削減後ページ総領域長  ≦（文書内の一般空白コンテナの総領域長＋文書内の非削除空白コンテナの最小領域長）
【００６３】
上記の関係を満たさない場合、ステップＳ２３０９に進み、ＣＰＵ１３５がレイアウト変更を中止する。
ステップＳ２３０８では、ＣＰＵ１３５が、上記の関係を満たす場合、ステップＳ２３０３で計算した削減後ページ総領域長にすべてのコンテナを収めることができるように、各コンテナの最初のプロポーションを維持しながら、コンテンツ量を縦方向に調整する。
【００６４】
ステップＳ２３０８において、ＣＰＵ１３５が実施するレイアウト計算は、特許文献２（特開２００５−１２２７２８号公報）および特許文献３（特開２００５−１３５３９７号公報）に開示されているアルゴリズムを利用する。これらの文献で開示されているリンクで関連付けられたコンテナの動的レイアウト計算方法に基づけば、図８で示された縮小選択された空白コンテナとその前後のブロックコンテナは、図９に示すようなコンテナの集合となる。空白コンテナ８０１のみが可変の上辺、下辺を持ち、動的レイアウト計算によりサイズが変更される。
ＣＰＵ１３５の上記レイアウト計算結果を基に実施するステップＳ２３０８でのコンテンツ量調整には、図２６および図２７に示すアルゴリズムを用いる。
【００６５】
図２６は、非削除空白コンテナのコンテンツ量調整のアルゴリズムを示すフローチャート、図２７は、ブロックコンテナのコンテンツ量調整のアルゴリズムを示すフローチャートである。
【００６６】
図２６は、ＣＰＵ１３５の動的レイアウト時の非削除空白コンテナのコンテンツ量を指定量削減するときのフローチャートである。
ステップＳ２６０１では、ＣＰＵ１３５が判定手段として機能し、ユーザが指定した非削除空白コンテナのコンテンツ量を指定量削減する場合に、指定された空白コンテナの現在の高さが最小値エディットボックス２００３で指定した値以上であるか否かを判定する。ステップＳ２６０１の判定結果がＹＥＳ場合、ステップＳ２６０２に進み、その非削除空白コンテナの高さを縮小する。
【００６７】
ステップＳ２６０３では、ＣＰＵ１３５が、最小値エディットボックス２００３で指定された値に空白コンテナが縮小されたか否かを判定する。ＹＥＳの場合は、処理を終了する。一方、ＮＯの場合は、ステップＳ２６０４に進んで、削減後ページ総領域長  ≦（文書内の一般空白コンテナの総領域長＋文書内の非削除空白コンテナの最小領域長）を満足するか否かを計算し、文書の削減量が指定された削減量に達したか否かを判定する。判定結果がＹＥＳのときは、処理を終了し、ＮＯの場合は、ステップＳ２６０２に戻って、非削除空白コンテナの高さを縮小する処理を繰り返す。
【００６８】
図２７は、ＣＰＵ１３５の動的レイアウト時のブロックコンテナのコンテンツ量を指定量削減する場合の一例を示すフローチャートである。
ＣＰＵ１３５は、あるブロックコンテナのコンテンツ量を指定量削減する場合、ステップＳ２７０１において、ブロックコンテナ内に一般コンテナが存在するか否かを判定する。判定結果がＮＯの場合は処理を終了する。判定結果がＹＥＳの場合、すなわち、そのブロックコンテナに一般空白コンテナが存在する場合は、ステップＳ２７０２に進む。
【００６９】
ステップＳ２７０２では、ＣＰＵ１３５が、そのブロックコンテナの最後尾の一般空白コンテナを削除する。次に、ステップＳ２７０３に進み、削減後ページ総領域長  ≦（文書内の一般空白コンテナの総領域長＋文書内の非削除空白コンテナの最小領域長）を満足するか否かの計算を行い、文書の削減量が指定された削減量に達したか否かを判定する。ＣＰＵ１３５は、削除した一般空白コンテナの総量が、指定された削減量に達するか、または指定された削減量を超えるとき、すなわち、ＹＥＳのときは、処理を終了し、ＮＯの場合は、ステップＳ２７０１に戻って処理を繰り返す。このように、最後尾の一般空白コンテナから順に削除するか、又は、ステップＳ２７０１でそのブロックコンテナに含まれる一般空白コンテナがないと判断するまで、最後尾の一般空白コンテナから順に削除することにより、指定したページ数の文書の削減を行う。
【００７０】
なお、上記図２７のブロックコンテナのコンテンツ量指定量削減の際、ＣＰＵ１３５がブロックコンテナの先頭の一般空白コンテナから順に一般空白コンテナを削除するようにしてもよい。
【００７１】
さらに、図２７のブロックコンテナのコンテンツ量指定量削減の際、ＣＰＵ１３５がブロックコンテナに含まれる一般空白コンテナのそれぞれの高さの比率に応じて、削減量を振り分けてもよい。その結果、ＣＰＵ１３５は、削減量と現在の高さに応じて、ブロックコンテナ内の各一般空白コンテナを縮小または削除する。
【００７２】
ステップＳ２３０８で各コンテナのコンテンツ量の調整を実施した場合、ステップＳ１５１０に進み、ＣＰＵ１３５が、文書の指定ページ数への削減に成功したとみなす。文書の指定ページ数への削減に成功した場合、ステップＳ１５１１に進み、削減後ページ総領域長  ≦（文書内の一般空白コンテナの総領域長＋文書内の非削除空白コンテナの最小領域長）を満足するか否かを計算する。そして、ＣＰＵ１３５は、文書の削減量が指定された削減量に達したか否かを判定する。ＹＥＳ場合は処理を終了、すなわち、レイアウト変更を確定し、ＮＯの場合は、ステップエス２７０１に戻って、処理を繰り返す。
【００７３】
図２８は、１ページを指定ページとした文書の削減を成功した場合のユーザインタフェース３０１の一例を示す。ＣＰＵ１３５は、レイアウト変更により指定したページ数の削減の成功に伴って、総ページ数表示領域３０６のページ数の表示を更新する。
【００７４】
なお、ＣＰＵ１３５は、図２３に示すステップＳ２３０９でレイアウト変更を中止した場合は、ステップＳ１５１０に進んで、指定したページ数の削減が失敗したものとしてユーザインタフェース３０１を、図２１に示す状態に復帰させる。
【００７５】
なお、図２７のブロックコンテナのコンテンツ量を指定量削減する場合に、ブロックコンテナの先頭の一般空白コンテナから順に削除するようにしてもよい。
また、ステップＳ２３０８で、コンテンツ量を縦方向に調整する前に、前記実施形態１と同様、文書の最終ページにあるブロックコンテナの内の最後のオブジェクトが空白コンテナである場合、その空白コンテナを削除するようにしてもよい。
【００７６】
また、前記、ステップＳ２３０７、ステップＳ２３０９で削減後ページ総領域長に満たない場合、ＣＰＵ１３５は、レイアウト変更を中止した。しかし、文書内の一般空白コンテナの総領域長と文書内の非削除空白コンテナの最小領域長の和が、１ページ以上の総領域長に満たす場合は、ＣＰＵ１３５がレイアウト変更してもよい。
【００７７】
このように、実施形態２に係る文書編集装置では、文書中の余白をコンテンツとする空白コンテナを自動作成する。その空白コンテナを一つ以上、ユーザが残すことを選択した際に、選択された空白コンテナの前後のオブジェクト（選択されなかった空白オブジェクトを含む）群をコンテンツとする可変コンテナ（ブロックコンテナ）を作成する。そして、ユーザが指定したページ数に収めるために動的レイアウトを行う際に、必要に応じてブロックコンテナ内の空白オブジェクトを削除してコンテンツ量を減らす。このため、文書中の空白（余白）を削除しながら、ユーザが指定したページ数に収まるようにレイアウトを行う際に、必要な空白（余白）をユーザの好み（選択）に応じて残すことができるという効果がある。
【００７８】
尚、本発明は複数の機器（例えば、ホストコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用しても良い。
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
この場合、コンピュータ読み取り可能な記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００７９】
このプログラムコードを供給するための記録媒体として、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合である。
【００８０】
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００８１】
【図１】本発明に係る文書編集装置として用いるコンピュータモジュールの構成を示すブロック図である。
【図２】本発明の実施形態１に係る文書編集プログラムの文書編集の手順を示すフローチャートである。
【図３】本発明の実施形態１に係るフローチャートを実行する際のユーザインタフェースを示す図である。
【図４】文書の文書中のコンテンツがオブジェクト群に分解するときのユーザインタフェースを示す図である。
【図５】文書のオブジェクト間に空白コンテナが作成したときのユーザインタフェースを示す図である。
【図６】空白コンテナの選択を受け付けたときのユーザインタフェースを示す図である。
【図７】空白コンテナのプロパティダイアログを表示したときのユーザインタフェースを示す図である。
【図８】ブロックコンテナを作成したときのユーザインタフェースを示す図である。
【図９】図８のコンテナの集合を示す模式図である。
【図１０】ブロックコンテナに含まれる空白コンテナを縮小対象に含めたときのユーザインタフェースを示す図である。
【図１１】ブロックコンテナ内の空白コンテナを縮小対象に含めた場合のユーザインタフェースを示す図である。
【図１２】図１１のコンテナの集合を示す模式図である。
【図１３】本発明の実施形態１の動的レイアウトの一例を示すフローチャートである。
【図１４】レイアウト変更を確定した際のユーザインタフェースを示す図である。
【図１５】本発明の実施形態２に係る文書編集プログラムの手順を示すフローチャートである。
【図１６】本発明の実施形態２に係る文書編集プログラムのユーザインタフェースを示す図である。
【図１７】非削除対象とする空白コンテナの選択を受け付けたときのユーザインタフェースを示す図である。
【図１８】指定された空白コンテナがページ数削減レイアウト変更時に削除しないよう記録された際のユーザインタフェースである。
【図１９】非削除対象の空白コンテナの可変選択を受け付けた際のユーザインタフェースを示す図である。
【図２０】空白コンテナのプロパティダイアログを表示した際のユーザインタフェースを示す図である。
【図２１】空白コンテナを非削除且つ可変コンテナとして設定されたときのユーザインタフェースを示す図である。
【図２２】指定ページ数への削減指示を受け付けたときのユーザインタフェースを示す図である。
【図２３】本発明の実施形態２の動的レイアウトの処理内容を示すフローチャートである。
【図２４】ブロックコンテナを作成した際のユーザインタフェースを示す図である。
【図２５】図２４のコンテナの集合を示す模式図である。
【図２６】動的レイアウト時の非削除空白コンテナのコンテンツ量を指定量削減する際のフローチャートである。
【図２７】動的レイアウト時のブロックコンテナのコンテンツ量を指定量削減する際のフローチャートである。
【図２８】文書の指定ページ数への削減に成功した際のユーザインタフェースである。
【図２９】文書編集プログラムによる文書処理装置の構成を示すブロック図である。
【符号の説明】
【００８２】
１３５  ＣＰＵ
１３６  メモリユニット
１３７  ビデオインタフェース（表示手段）
１３８  出力インタフェース
１３９  記憶装置
【図１】
2010092305.tif 000003
【図２】
2010092305.tif 000004
【図３】
2010092305.tif 000005
【図４】
2010092305.tif 000006
【図５】
2010092305.tif 000007
【図６】
2010092305.tif 000008
【図７】
2010092305.tif 000009
【図８】
2010092305.tif 000010
【図９】
2010092305.tif 000011
【図１０】
2010092305.tif 000012
【図１１】
2010092305.tif 000013
【図１２】
2010092305.tif 000014
【図１３】
2010092305.tif 000015
【図１４】
2010092305.tif 000016
【図１５】
2010092305.tif 000017
【図１６】
2010092305.tif 000018
【図１７】
2010092305.tif 000019
【図１８】
2010092305.tif 000020
【図１９】
2010092305.tif 000021
【図２０】
2010092305.tif 000022
【図２１】
2010092305.tif 000023
【図２２】
2010092305.tif 000024
【図２３】
2010092305.tif 000025
【図２４】
2010092305.tif 000026
【図２５】
2010092305.tif 000027
【図２６】
2010092305.tif 000028
【図２７】
2010092305.tif 000029
【図２８】
2010092305.tif 000030
【図２９】
2010092305.tif 000031