(57)【要約】      （修正有）【課題】ページ内に非編集領域を指定することができるレイアウト装置を提供する。【解決手段】ページ内に非編集領域を指定することで、ヘッダー、フッターのような各ページに繰り返し出現するコンテンツを編集する対象から除外することができる。これによって、編集処理、つまりオブジェクト移動を始めとする処理の際に、意識することなく対象コンテンツ部分の余白のみを詰めることが可能となる。【選択図】図５
2013130987.tif 000002
【特許請求の範囲】
【請求項１】
文書データに含まれる描画オブジェクトを再配置する装置であり、
・ページ内の非編集領域を取得する手段
・非編集領域に従い編集オブジェクトを決定する手段
・ページの余白を詰めて再レイアウトを行う手段
を有することを特徴とするレイアウト装置。
【請求項２】
非編集領域の境界部分にオブジェクトが存在する場合、前記オブジェクトが編集対象であるかどうかを判断する手段を有することを特徴とする請求項1に記載のレイアウト装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レイアウト装置に関するものである。
【背景技術】
【０００２】
電子ドキュメントを編集する際に、ページ内の特定部を除外して編集を行いたいという要求がある。しかしスキャン文書といった、文書構造を保持していない電子ドキュメントの場合、ページ内の除外したい部分を明確に区別することができない。そこで、編集を行わせたくない部分を指定しておく技術、例えば、特許文献１のようなものがある。
【０００３】
特許文献１で開示された技術では、文書を編集する際に文字列を保護する領域の設定を行う。保護対象となった文書は、以降編集を行うことができなくなり、誤操作によってデータを破壊してしまうことを防ぐことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２８３５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、先行技術では保護する対象が文書であり、文字オブジェクトしか保護の対象にならなかった。また、指定方法も文書の開始部分と終了部分を指定するという方式のため、特定の領域を一挙に保護対象とするのには不向きであった。
【課題を解決するための手段】
【０００６】
文書データに含まれる描画オブジェクトを再配置する装置であり、
・ページ内の非編集領域を取得する手段
・非編集領域に従い編集オブジェクトを決定する手段
・ページの余白を詰めて再レイアウトを行う手段
を有することを特徴とするレイアウト装置。
【発明の効果】
【０００７】
本発明によれば、ドキュメント内の対象部分を領域として指定することができる。これによって、ユーザーの意図した部分を編集対象から除外した状態で、文書を再編集することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明のレイアウトを実行するシステム図
【図２】本発明で扱う文書のオブジェクト情報の構造例
【図３】本発明で扱う文書のオブジェクトの情報例
【図４】ＰＤＦフォーマットからのデータ読み出し例
【図５】ヘッダー、フッター対象間締めのフローチャート
【図６】文書内の各部位の呼び方の説明
【図７】ページ内での非編集領域のデータの持ち方を示す図
【図８】ヘッダー、フッター領域の設定を表すユーザーインターフェースの図
【図９】非編集オブジェクト設定の処理を表すフローチャート
【図１０】ブロック化の処理を示すフローチャート
【図１１】ページ内の余白を求める際に行う事前処理を説明する図
【図１２】ページ間締めのフローチャート
【図１３】間締め処理を説明するための図
【図１４】枠線に対応したページ間締めの概要を示す図
【図１５】非編集領域境界部分判定の処理を示すフローチャート
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１０】
［実施例１］
図１はページレイアウトを実行するシステムを図示している。
【００１１】
コンピュータモジュール１０１はキーボード１３２やマウス１３３のようなポインティングデバイスなどの入力装置をつなぎ、ディスプレイ装置１４４や状況に応じてはローカルプリンタ１４５を含む出力装置を連結する。入力／出力インタフェイス１３８はコンピュータモジュール１０１をネットワーク接続１０７から接続してシステムの他のコンピュータ装置につなげることができる。そのネットワーク接続１０７の典型はローカルエリアネットワーク（ＬＡＮ）、あるいはワイドエリアネットワーク（ＷＡＮ）である。
【００１２】
コンピュータモジュール１０１は典型的に少なくとも１つのプロセッサーユニット(CPU)１３５、例えば半導体のランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）から構成されるメモリユニット１３６、ビデオインタフェイス１３７を含むＩＮＰＵＴ／ＯＵＴＰＵＴ（Ｉ／Ｏ）インタフェイス、キーボード１３２やマウス１３３のためのＩ／Ｏインタフェイス１４３を含んでいる。記憶装置１３９は典型的にハードディスクドライブ１４０やフロッピー（登録商標）ディスクドライブ１４１を含んでいる。図には示されていないが磁気テープドライブなどもまた使用される可能性がある。ＣＤ−ＲＯＭドライブ１４２は不揮発性のデータソースとして提供される。コンピュータモジュール１０１はＬＩＮＵＸやマイクロソフトウィンドウズ（登録商標）のようなオペレーションシステム、あるいは相互接続バス１３４を介して通信を行うコンピュータモジュール１０１のコンポーネント１３５から１４３を利用する。
【００１３】
本発明のフローチャートで示された手順を実現するソフトウェアは例えば上記に記述されるような記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアはコンピュータの可読媒体からコンピュータにロードされ、コンピュータ１０１のCPU１３５によって実行される。そのコンピュータで利用者がコンピュータプログラム製品を使用することにより、ドキュメントのレイアウト編集に有利な装置として作動することができる。
【００１４】
図2は、本実施例のソフトウェアが、オブジェクトの情報を管理する方法の例を示したものである。各オブジェクトにID203とオブジェクトの種類204、オブジェクトの位置を示す座標205と206、オブジェクトの有効・無効フラグ207、オブジェクト固有情報208がある。そのオブジェクトがリスト構造になって、オブジェクトリスト201に格納されている。オブジェクトの有効・無効フラグ207とは、ドキュメント内に存在しているオブジェクトが編集可能かを表すフラグである。また、オブジェクト固有情報とは、図形オブジェクトであれば線の太さや、線種といった情報、文字列であれば文字の書体やサイズといった情報であり、オブジェクト毎に固有の情報が格納されている。特にオブジェクト種類204がグループとなっている場合、オブジェクト固有情報208内にグループ化されたオブジェクトの情報がオブジェクトリスト202としてメモリ136に登録される。
【００１５】
図3は、オブジェクトリスト201に格納される情報の例である。図のような座標に位置する図形オブジェクトは、図に示す内容によって、メモリ１３６上のリストに登録される。
【００１６】
本発明で扱う文書のデータ構造の一例として、PDFフォーマット文書について説明する。図４は、PDFフォーマットの文書から、図３と同様の図形オブジェクトが読み込まれ、同じオブジェクト情報として取り出される例を示した図である。PDFフォーマットでは、始点（２０，３４）から、順次（８１，３４）、（８１，６５）、（２０，６５）、（２０，３４）を結ぶ図形として表記されたものが、左上座標（２０，３４）、右下座標（８１，６５）の長方形としてオブジェクト生成される。
【００１７】
図5は本発明の領域指定間締めのフローチャートである。ここでいう間締めとは、文書内の行間等の余白を詰める操作を指し、間締めを実行することで文書の総ページ数を削減することができる技術のことを指す。また、図5の各フローの詳細は後述する。S501では、図7のページ情報のリストを参照し、間締めの対象となるページ内に非編集領域が設定されているかどうかを判定する。非編集領域が設定されている場合はページ内の非編集オブジェクトの抽出を行い（S502）、設定されていない場合は通常の間締めを行う。ここで非編集オブジェクトの抽出を行った際に、非編集対象のオブジェクトのリスト714を参照し、非編集対象オブジェクトを編集の対象から除外する。S503では、間締めの対象となるオブジェクトのブロック化を行う。S504では間締め処理を行い余白の削減を行う。
【００１８】
図6は、文書内の各部位を説明するための図である。まず、間締め処理において扱うブロックについて説明する。間締め処理では原則的に２つ以上のオブジェクトをグループ化などの処理でひとまとめにすることをブロック化と言う。また、ブロック化されたオブジェクト郡603〜608のことをブロックと呼ぶ。この際に対象となるオブジェクトとは、文字や画像を始めとするあらゆるオブジェクトである。ブロックとは内部的には、通常のオブジェクトと同じであり、図2のオブジェクトの固有情報208に内包するオブジェクトのリストを保持している。なお、１つのオブジェクトからなるブロックや内部にオブジェクトを保持しないブロックも構造上可能であり、今回はそれらもブロックとして扱う。
【００１９】
さらに本発明では、ページ内に領域609、610が設定されており、これを非編集領域と呼ぶ。非編集領域は、例えばユーザがマウス操作でページ内の所定領域を囲うなどして指定する。本発明では、この非編集領域を元にオブジェクトが編集の対象となるかどうかの設定を行う。また、非編集領域は複数指定することも可能であり、602の例では609、610を非編集領域として設定している。ここでは、まず領域内に入っている603、607、608のオブジェクトが非編集オブジェクトとされる。
【００２０】
図7はページ内の非編集領域内のオブジェクトのデータの持ち方を説明する図である。まずページ701の内部には非編集領域702、703が設定されており、ブロック704、708、709が非編集オブジェクト、ブロック705〜707が編集対象のオブジェクトとして存在している。このとき、ページ内の情報はリストとして管理されており、711のページ番号といった情報をはじめ、ページ固有の情報が保存されている。特に、ページ内オブジェクトのリスト713からはページ内のブロックのリストを参照することができる。ここでのオブジェクトＩＤとは、ブロックとされたオブジェクトが内部的に保持している値であり、図2に保存されているオブジェクトＩＤ203のことを指す。このＩＤによってブロックの座標やブロックが有効か無効かといった情報を参照することが可能となる。また、712はページ内に存在している非編集領域の数を示している。714は非編集領域のリストであり、ここにページ内の全非編集領域の情報がリストとして保存されている。ここでの情報とは各領域が有効か無効かを示すフラグ715と領域の位置情報を表す領域座標716のことである。
【００２１】
図8は図7の非編集領域に対する設定行うユーザーインターフェースである。この設定は非編集領域ごと、すなわち702、703それぞれに対して行われ、各領域を選択した状態でメニューからインターフェースの呼び出しを行う。801では設定されている非編集領域を有効にするかどうかの設定を行う。ここでチェックがされれば、非編集領域内のオブジェクトが編集対象から外れ、非編集領域に対するオブジェクトの配置・移動などの操作も原則不可となる。802のチェックがされた場合、非編集領域とその内部に存在しているオブジェクトが編集時に削除される。これらが適用される操作については後述する。
【００２２】
図9は非編集オブジェクト設定の処理を表すフローである。このフローは図5で呼び出される以外にも非編集領域の状態が変化したとき、例えば図8のダイアログでＯＫが押下されたときや、新しくページを読み込んだタイミングでも呼び出される。S901では図7のページ情報のリストから間締めの対象となっているページ内部に存在する非編集領域を取得する。S902では、ページ内の非編集領域の設定を行う。複数存在する場合は非編集領域ごとに区切り、上から順にリスト714に加える。
【００２３】
次に、ページ内のオブジェクトを随時読み出していき、編集対象のオブジェクトか非編集対象のオブジェクトかを分ける処理を行う。S903では全オブジェクトを処理したかどうかの判定を行い、終了次第次の処理に移る。S904では図2のリスト201を辿り、次のオブジェクトを取得する。S905では、取得したオブジェクトが非編集領域に存在するかを判定し、非編集領域内に存在する場合は、S906の判断に移る。S906では図8の802の項目である非編集領域を削除する指定が入っているかどうかを判定し、入っている場合はオブジェクトの削除を行う（S907）。指定が無かった場合はオブジェクトを非編集対象オブジェクトとし、図2のフラグ207を無効に設定する（S908）。S909〜S912ではページ内の非編集領域削除の指定が入っている領域の削除を行う。まず、S909では図7の非編集領域のリスト714を参照し、ページ内の次の編集領域を参照する。S910では図8の非編集領域を削除する指定（802）が入っているかどうかを判定する。削除指定が入っている場合は非編集領域の削除し、図7のリスト714から対象部分を取り除く（S911）。S912ではページ内の全非編集領域を処理したかどうかを判定し、未処理の領域がある場合は処理を継続する。
【００２４】
図10はブロック化の処理の流れを表すフローチャートである。このとき、図11を例として説明する。まず、S1001でページ内に未処理のオブジェクトが存在かどうか判断し、存在する場合は未処理の中で先頭にあるオブジェクトの読み込みを行う（S1002）。S1003では読み込んだオブジェクトが、既にページに読み込まれているオブジェクトとY軸上で重なっているかを判断する。例えば、読み込まれたのがオブジェクト1102の場合、既にページに読み込まれているオブジェクト1101と離れているため、そのままブロックとしてページ上に配置される（S1005）。次に読み込まれたのがオブジェクト1105の場合は、オブジェクト1103とY軸上で重なるため、重なったオブジェクトをブロック1106としてまとめる（S1004）。ページ上のオブジェクト1103がブロックであった場合は、一旦ブロック化を解除してからまとめ直す。また、読み込まれたオブジェクト1105がページ上の複数のオブジェクト、例えば1103、1104の両方と重なっていた場合、重なった全てのオブジェクトをブロック化する。全てのオブジェクトを処理し終えたら、ページに配置されたオブジェクト間の全余白を走査する（S1006）。走査した値のうち、既定の閾値を以下の余白を抽出する（S1007）。S1008では、抽出された閾値以下のブロック間余白を持つブロック同士の再ブロック化を行う。
【００２５】
図12はページ間締めを示すフローチャートである。このとき図13を例として説明する。ページ間締めとは、オブジェクトの移動元となるオブジェクト移動元ページ1302とオブジェクトの移動先となるオブジェクト移動先ページ1301の２ページで行う。この先単に移動元ページ、移動先ページといった場合はこれらのことを指す。まず、移動先ページ1301にブロックが移動させられるか算出するために、移動先ページ内の余白を取得する。ここでの余白とはブロック間のギャップ、図6のブロック604の最下部とブロック605の最上部の間の間隔のことを指す。特に、最上部のブロック603とページ上端までの間隔や最下部のブロック608とページ下端までの間隔のことも余白として扱う。S1201でページ中に非編集領域が存在するかを判断する。ここの非編集領域とは、図8の801の項目で有効とされた非編集領域のことを指す。非編集領域が存在しない、あるいは無効となっている場合は、単に移動先ページ1301の全てのブロック1303〜1311を取得し、取得したブロック間の余白の検出を行う（S1202）。非編集領域1303、1304が有効になっている場合は、移動先ページ1301の非編集領域内ブロック1307、1311を除く全てのブロック1308〜1310を取得し、取得したブロック間の余白の検出を行う。これによって、非編集領域が設定されたドキュメントについても、編集部分の余白を検出することが可能となる。
【００２６】
次に、検出した全ての余白からそれぞれ予め定めておいたブロック間余白の最小値を引いていき余剰した余白の高さを求める。例えば、非編集領域が有効な場合は有効なブロック1308〜1310を用いて余白の計算を行う。このとき、ページ上下の余白は、ページ上部の領域1303と有効なブロック中最上部のブロック1308の間の余白、ページ下部の領域1304と有効なブロック中最下部のブロック1310の間の余白と考え計算を行う。求めた各余白からそれぞれ必要最低限の余白を差し引いたものの合計が余剰した余白となる。なお、非編集領域が無効となっている場合は全ブロック1307〜1311の間の余白とページ上下の余白から必要最低限の余白をそれぞれ引いたものの合計が余剰した余白の高さとなる。
【００２７】
ここで、必要最低限の余白とは、ユーザーによって予め設定された値である。求めた余剰余白に移動元ページ1302内で有効な最上部のブロック1313の高さが余剰余白よりも小さく、移動先ページに収まるかを判定する（S1204）。非編集領域が無効となっている場合は、ブロック1312を有効な最上部のブロックとして扱う。収まらない場合は間締め処理を終了し、収まる場合は移動元ページ1302内で有効な最上部のブロック1313が移動出来るように移動先ページ1301の有効なブロック1308〜1310間の余白を詰める（S1205）。ブロックを詰めてできた余白部分に、移動元ページ1302の有効なブロックのうち最上部のブロック1313を移動させる（S1206）。S1207では、ブロック1313が移動し、できた余白をうめるため、オブジェクト移動元ページ1302のブロック1314、1315をページ上部に移動させる。非編集領域が無効となっている場合には、ブロック1312が移動先ページに移動し、その余白を埋めるため、その以下のブロック1313〜1316を移動させる。
【００２８】
［実施例２］
実施例1では、非編集領域内に入っているオブジェクトのみを非編集対象としたが、図14のようにページ全体が枠線で囲まれている場合はページを横に横断する余白が存在しないためブロック分割することができず、間締めを行うことができない。このとき、領域に触れた枠線1405、1406を非編集オブジェクトとして扱うことで、その内部のオブジェクトのみでブロック化を行い、ブロック1407、1408、1409を対象としてページ間締めを行う。
【００２９】
この際、枠線1405、1406を無効とする以外の処理に関しては図5の領域指定間締めと同じ操作を行う。図15は非編集オブジェクト境界部分判定のフローチャートである。この処理を行うことで非編集領域に触れている枠線1405、1406を無効なオブジェクトとして登録する。また、この処理は図9の非編集オブジェクト設定のステップS905でＮｏに分岐した後に入る。S1501では現在選択されている非編集領域にオブジェクト接触していないかを判断する。ここで、例えば非編集領域には領域1401が設定されており、枠線オブジェクト1405が選択中であるものとする。このとき、オブジェクトを囲む矩形の上端の座標が非編集領域の下端の座標よりも下でなく、矩形の下端の座標が非編集領域の上端の座標よりも上でない場合には対象オブジェクトが非編集領域に触れているものとする。触れている場合は図7の非編集対象オブジェクトのリスト714の一覧に加える（S1502）。触れたオブジェクトがブロックであった場合は、一度ブロック化を解除し、解除したオブジェクトごとに編集対象・非編集対象を分ける処理を行った上で、それぞれを再度ブロック化する。
【００３０】
なお、この実施例では領域に接触したオブジェクトを一律で非編集としたが、実施するケースに応じて、触れている領域の設定に従う、触れている領域と逆の設定とするなどしても良い。S1503では図7の非編集領域のリスト713を参照し、ページ内の次の非編集領域1402を取得し、他の編集領域に対しても同様に判定を行う。これはオブジェクト1405が大きく、複数の非編集領域にかかる場合には、接触している非編集領域全てから呼び出せる必要があるためである。
【００３１】
この処理を行うことでページ全体にかかるオブジェクトを編集対象から除外することができる。結果、枠線が付いたドキュメントに関しても間締め処理を行うことが可能となる。
【符号の説明】
【００３２】
１０１  コンピュータモジュール
１３２  キーボード
１３３  マウス
【図１】
2013130987.tif 000003
【図２】
2013130987.tif 000004
【図３】
2013130987.tif 000005
【図４】
2013130987.tif 000006
【図５】
2013130987.tif 000007
【図６】
2013130987.tif 000008
【図７】
2013130987.tif 000009
【図８】
2013130987.tif 000010
【図９】
2013130987.tif 000011
【図１０】
2013130987.tif 000012
【図１１】
2013130987.tif 000013
【図１２】
2013130987.tif 000014
【図１３】
2013130987.tif 000015
【図１４】
2013130987.tif 000016
【図１５】
2013130987.tif 000017