(57)【要約】【課題】迅速に出力処理を行うことができる構造化文書を生成する情報処理装置を提供する。【解決手段】第１の構造化文書に含まれている各オブジェクトが、第１の構造化文書に基づくＷｅｂページの一部領域に含まれているか判定し、一部領域に含まれていないと判定されたオブジェクトが第１の構造化文書から削除されている第２の構造化文書を生成する。【選択図】図８
2013061808.tif 000002
【特許請求の範囲】
【請求項１】
構造化言語により記述された第１の構造化文書に基づくＷｅｂページにおける一部領域を決定する決定手段と、
前記第１の構造化文書に含まれている各オブジェクトが、前記決定手段により決定された一部領域に含まれているか判定する判定手段と、
前記第１の構造化文書から、前記判定手段により前記一部領域に含まれていないと判定されたオブジェクトが削除されている第２の構造化文書を生成する生成手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記生成手段は、前記第１の構造化文書に含まれている複数のオブジェクトのうちの、前記判定手段により前記一部領域に含まれていると判定されたオブジェクトを構造化文書に新たに書き込むことによって、前記第２の構造化文書を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記生成手段は、前記第１の構造化文書に含まれている複数のオブジェクトのうちの、前記判定手段により前記一部領域に含まれていないと判定されたオブジェクトを、当該第１の構造化文書から削除することによって、前記第２の構造化文書を生成することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記決定手段は、前記Ｗｅｂページにおいてユーザにより指定された領域を、前記一部領域として決定し、前記判定手段は、前記第１の構造化文書に含まれている各オブジェクトが、ユーザにより指定された領域に含まれているか判定することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記決定手段は、前記第１の構造化文書に基づくＷｅｂページを出力するときにページに対応する領域を、前記一部領域として決定し、前記判定手段は、前記第１の構造化文書に含まれている各オブジェクトが、前記ページに対応する領域に含まれているか判定することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項６】
前記判定手段は、前記Ｗｅｂページが複数のページに分割されるときの、２つのページの区切り位置に配置されているオブジェクトを、当該２つのページのいずれかに含まれているオブジェクトとして、前記判定を行うことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記生成手段が生成した第２の構造化文書に基づき、前記Ｗｅｂページの一部領域に対応した画像を出力する出力手段を、さらに備えることを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記第１の構造化文書に基づきドライバにより作成されたデータであって、前記第１の構造化文書に含まれている複数のオブジェクトを含み、前記第１の構造化文書に基づくＷｅｂページを１ページに含むデータを取得する取得手段を、さらに備え、
前記決定手段は、前記取得手段が取得したデータに対応するページにおける一部領域を決定し、前記生成手段は、当該データに対応するページにおける当該一部領域に対応するデータを生成することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記取得手段により取得されたデータはＸＰＳで記述された文書である、ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
構造化言語により記述された第１の構造化文書に基づくＷｅｂページにおける一部領域を決定する決定工程と、
前記第１の構造化文書に含まれている各オブジェクトが、前記決定工程において決定された一部領域に含まれているか判定する判定工程と、
前記第１の構造化文書から、前記判定工程において前記一部領域に含まれていないと判定されたオブジェクトが削除されている第２の構造化文書を生成する生成工程と、
を有することを特徴とする情報処理方法。
【請求項１１】
請求項１０に記載の情報処理方法の各工程をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化文書を処理する情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
従来、Ｗｅｂページをレイアウト印刷する場合には、ブラウザで表示されたＷｅｂページをブラウザの描画エンジンにより描画して中間データとして抽出し、再レイアウトして印刷する方法がある（特許文献１）。このレイアウト印刷においてブラウザから抽出される描画データは、上記の中間データのように文字やグラフィックスがベクタデータの形式で含まれているものが望ましい。ブラウザの描画データをベクタデータとして抽出する方法としては、ブラウザがプリンタドライバに出力したスプールデータを中間データとして抽出する方法がある。
【０００３】
例えば、中間データを出力するためのドライバとしてＸＰＳドライバを使用することがある。その場合に、中間データは、ＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）という構造化言語で記述されたＸＰＳデータとなる。ユーザがページの一部分のみを印刷したい場合や、印刷時に用紙サイズに合わせてページ分割する場合には、ＸＰＳデータに対してクリップ領域の指定や、位置の調整や、サイズの変更等が行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−０１５７４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＸＰＳデータに対してクリップ処理等の領域指定する処理を行っても、その指定領域外のオブジェクトについてはＸＰＳデータに記述されたままである。そのために、クリップ処理されたＸＰＳデータに基づき表示や印刷処理等を行う場合にはＸＰＳデータの一部の領域が出力対象であるにも拘わらず、クリップ処理が行われていないＸＰＳデータに対する処理と同程度の処理負荷がかかってしまい、出力処理を迅速に行うことができない場合があった。
【０００６】
本発明は、上記の点に鑑み、迅速に出力処理を行うことができる構造化文書を生成する情報処理装置、情報処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明に係る情報処理装置は、構造化言語により記述された第１の構造化文書に基づくＷｅｂページにおける一部領域を決定する決定手段と、前記第１の構造化文書に含まれている各オブジェクトが、前記決定手段により決定された一部領域に含まれているか判定する判定手段と、前記第１の構造化文書から、前記判定手段により前記一部領域に含まれていないと判定されたオブジェクトが削除されている第２の構造化文書を生成する生成手段と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、迅速に出力処理を行うことができる構造化文書を生成することができる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置の構成を示すブロック図である。
【図２】構造化文書の印刷処理のための構成を示す図である。
【図３】ページのクリップ処理の一例を示す図である。
【図４】ページ分割する際にクリップ処理が実行される一例を示す図である。
【図５】ＸＰＳドキュメントの論理構造を示す図である。
【図６】ＦＰの一例を示す図である。
【図７】従来におけるＦＰの編集の一例を示す図である。
【図８】クリップページデータの生成処理の手順を示す図である。
【図９】削除判定対象である要素の描画領域算出処理の手順を示す図である。
【図１０】ＩｍａｇｅＢｒｕｓｈ要素の描画領域算出処理を示す図である。
【図１１】Ｇｌｙｐｈｓ要素の描画領域算出処理を示す図である。
【図１２】ＰｏｌｙＬｉｎｅＳｅｇｍｅｎｔ要素の描画領域算出処理を示す図である。
【図１３】親要素を削除判定対象とするかを判定する処理を示す図である。
【図１４】オブジェクトの分割防止処理を説明するための図である。
【図１５】オブジェクトの分割を防止するページ分割処理を示す図である。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の好適な実施例を詳しく説明する。尚、以下の実施例は特許請求の範囲に係る本発明を限定するものでなく、また本実施例で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
【００１１】
〔実施例１〕
〔情報処理装置のハードウェア構成〕
図１は、本発明に係る実施例における情報処理装置１０１の構成を示すブロック図である。本実施例において、情報処理装置１０１としては、例えば汎用的なＰＣが用いられる。情報処理装置１０１は、ＣＰＵ１０２と、ＲＡＭ１０３と、ＲＯＭ１０４と、ハードディスク１０５と、通信インタフェース１０６と、表示装置１０７と、ポインティングデバイス１０８と、キーボード１０９とを含む。また、上記のそれぞれは、システムバス１１０を介して相互にデータを送受信可能に構成されている。ＣＰＵ１０２は、ＲＡＭ１０３、ＲＯＭ１０４又はハードディスク１０５に格納されているプログラムに従って、本実施例における処理を実行することができる。ＲＡＭ１０３は、ＣＰＵ１０２が各種処理を行なう場合に、一時記憶領域として用いられる。ハードディスク１０５は、オペレーティングシステム（ＯＳ）やブラウザ、その他のアプリケーションソフトウェア等を記憶する。ＣＰＵ１０２は、例えば、ＲＯＭ１０４やハードディスク１０５に記憶されたプログラムをＲＡＭ１０３に読み出し、ＲＡＭ１０３をワークメモリとしてそのプログラムを実行することによって各種処理を実行する。
【００１２】
通信インタフェース１０６は、印刷装置とのデータ通信を行うためのインタフェースや、若しくは、インターネット等を介して外部のＷＷＷサーバとの間でデータ通信を行うためのネットワークインタフェースとして機能する。通信インタフェース１０６として、例えばＵＳＢやＳＣＳＩが用いられる。また、通信インタフェース１０６として、無線通信のためのインタフェースが用いられても良い。表示装置１０７は、ＣＲＴ若しくは液晶ディスプレイと、グラフィックコントローラとを含み、グラフィックユーザインタフェース（ＧＵＩ）画面を表示することができる。ポインティングデバイス１０８やキーボード１０９は、ユーザが情報処理装置１０１に対して各種指示を与えるための入力装置である。
【００１３】
〔構造化文書の印刷処理のための構成〕
図２は、情報処理装置１０１における構造化文書の印刷処理のための構成を示す図である。構造化文書とは、ＨＴＭＬやＸＨＴＭＬ等の構造化言語により記述された文書をいう。図２に示す各ブロックのうち、ブラウザ２０１と、アドオン型のソフトウェア２０２（以下、アドオンソフトウェア２０２、又はソフトウェア２０２ともいう）と、仮想ドライバ２０３と、中間データ２０４と、編集アプリケーション２０５と、プリンタドライバ２０９とが情報処理装置１０１に含まれる。ブラウザ２０１は、不図示のＷＷＷサーバから提供されるＷｅｂページを表示するためのアプリケーションである。ブラウザ２０１は、不図示のインターネットを介してＷＷＷサーバから受信した構造化文書をダウンロードし、そのダウンロードした構造化文書に基づいて表示装置１０７に表示する。ここで、ＨＴＭＬやＸＨＴＭＬ等で記述された構造化文書ファイルでは、テキストや画像等の構造化文書を構成する要素（オブジェクト）がタグを用いて記述されており、その要素が配置されることによってＷｅｂページが作成される。
【００１４】
アドオンソフトウェア２０２は、ブラウザ２０１から呼び出されるプラグインソフトウェアである。アドオンソフトウェア２０２は、Ｗｅｂページの印刷若しくは印刷プレビュー処理や、画像データの一部の領域を抽出するクリップ処理等の実行指示をユーザから受け付けるためのユーザインタフェースとして機能する。アドオンソフトウェア２０２はさらに、印刷を実行する印刷装置２１０の指定や、印刷設定情報を指定するためのユーザインタフェースとして機能する。アドオンソフトウェア２０２は、ユーザからのＷｅｂページ印刷指示に応じ、ブラウザ２０１に対して、現在表示されているＷｅｂページに対応する構造化文書を、印刷データとして仮想ドライバ２０３に出力するように指示する。
【００１５】
ブラウザ２０１が仮想ドライバ２０３に出力した印刷データは、仮想ドライバ２０３によって中間データ２０４に変換され、ＲＡＭ１０３等の記憶領域に格納される。例えば、仮想ドライバ２０３がＸＰＳドライバである場合には、中間データ２０４はＸＰＳデータとなる。しかしながら、仮想ドライバ２０３により作成される中間データ２０４は、他の形式のデータであっても良い。記憶領域に格納された中間データ２０４は、編集アプリケーション２０５に渡される。ここで、編集アプリケーション２０５は、仮想ドライバ２０３によって起動されても良いし、アドオンソフトウェア２０２によって起動されても良い。編集アプリケーション２０５は、中間データ２０４とユーザから入力された指示とに基づき、中間データを編集したり、プレビュー表示することができる。編集アプリケーション２０５は、各種処理の後、プリンタドライバ２０９に対して印刷要求を発行する。本実施例において、編集とは、例えば、ページの一部を抽出するクリップ処理に代表されるレイアウト編集をいう。
【００１６】
編集アプリケーション２０５は、レイアウト部２０６と、印刷プレビュー部２０７と、印刷処理部２０８とを含む。レイアウト部２０６は、ユーザからの指示に従って中間データ２０４を編集し、その編集された中間データ２０４を印刷プレビュー部２０７と印刷処理部２０８とに渡す。印刷プレビュー部２０７は、その編集された中間データ２０４を、印刷設定に基づきプレビュー表示する。また、プレビュー表示された中間データ２０４に対して受け付けたユーザからの指示はレイアウト部２０６に渡され、その指示に基づいて中間データ２０４が編集される。また、印刷プレビュー部２０７は、再度編集が行われた中間データ２０４に基づきプレビュー表示を更新する。
【００１７】
ユーザがプレビュー表示において印刷指示を行った場合やプレビュー表示せずに印刷指示を行った場合には、レイアウト部２０６によって編集された中間データ２０４は、印刷処理部２０８を介してプリンタドライバ２０９に渡される。プリンタドライバ２０９は、編集アプリケーション２０５によって編集された中間データ２０４を受け取り、印刷装置２１０が解釈可能な印刷コマンドに変換する。プリンタドライバ２０９は、印刷コマンドを印刷装置２１０に送信する。印刷装置２１０は、受け取った印刷コマンドに基づき印刷処理を実行する。
【００１８】
以上のように、本実施例においては、ブラウザ２０１に表示されたＷｅｂページを適宜編集した後に印刷処理することができる。図２に示す構成において、仮想ドライバ２０３は、ベクタデータである中間データ２０４を取得するために用いられる。編集においてユーザから変倍等を指示される可能性があるので、中間データ２０４は、特定の解像度で展開されたラスタデータではなく、テキストやグラフィックスの形式を維持したベクタデータであることが画質劣化防止の観点から望ましい。通常、仮想ドライバ２０３がＸＰＳドライバである場合に出力されるＸＰＳデータは、ベクタデータである。従って、本実施例においては、仮想ドライバ２０３から出力される中間データ２０４を編集アプリケーション２０５による編集で用いることとする。
【００１９】
本実施例においては、図２に示すように、アドオンソフトウェア２０２がブラウザ２０１に構造化文書ファイルを仮想ドライバ２０３に出力させ、その仮想ドライバ２０３によって構造化文書ファイルが中間データに変換される。よって、図２に示すような構成により、アドオンソフトウェア２０２がブラウザ２０１からベクタデータを取得できないような場合にも、中間データ２０４をベクタデータとして取得することができる。
【００２０】
なお、本実施例では、仮想ドライバ２０３が１ページのＸＰＳデータを出力する。仮想ドライバ２０３は定型サイズの用紙サイズに限らず、ユーザが定義したサイズの用紙サイズに対応して印刷することができる。そこで、例えばアドオンソフトウェア２０２がブラウザ２０１を介して、仮想ドライバ２０３に、ＸＰＳデータが１ページに収まるような用紙サイズを設定する。この用紙サイズは、印刷対象のＨＴＭＬファイルに対応するＷｅｂページの大きさに応じて決定される。アドオンソフトウェア２０２はＷｅｂページの大きさを判定し、判定された大きさに応じて、そのＷｅｂページの全体を含む用紙サイズを仮想ドライバ２０３に設定する。これにより、仮想ドライバは、当該印刷対象となっているＷｅｂページの全体を１ページに含むＸＰＳデータ２０４を出力することができる。
【００２１】
〔クリップ処理〕
図２に示すレイアウト部２０６で実行される編集処理として、構造化文書内のページ上の不要部分を取り除き、特定領域のみで構成されたページを作成するクリップ処理がある。クリップ処理とは、例えばユーザがユーザインタフェースにおいて、文書上で印刷対象とする領域を指定した際にその指定領域のみを抽出する処理である。クリップ処理は、印刷データを生成する際に、用紙サイズやマージンに従ってページを分割する際にも実行される。
【００２２】
図３は、ユーザの領域指定に従って行うページのクリップ処理の一例を示す図である。ページデータ３０１は、ＨＴＭＬファイル等の構造化文書に基づくＷｅｂページの全体に対応するＸＰＳデータである。編集前のページデータ３０１に対して、クリップ領域３０２が指定される。レイアウト部２０６は、指定されたクリップ領域３０２のみが表示や印刷といった出力処理の対象となるようなクリップページ３０３（構造化文書データ）を新たに生成する。
【００２３】
図４は、ページ分割する際にクリップ処理が実行される一例を示す図である。編集前のページデータ３０１に対して、印刷時の用紙サイズ等の情報に基づきページ分割線４０１が生成される。レイアウト部２０６は、ページ分割線４０１に基づきページを分割する。ここで、ページを分割するとは、原点からページ分割線４０１までの領域をクリップ領域としてクリップ処理を行うことと同じことを意味する。ページデータ３０１の始点座標からページ分割線４０１までの領域をクリップ領域としてクリップ処理をした結果、１ページ目のページデータ４０２が生成される。次に、２ページ目を生成するために、編集前のページデータ３０１に対して、ページ分割線４０１から終点座標までの領域をクリップ領域としてクリップ処理を行う。その結果、２ページ目のページデータ４０３が生成される。ページ分割線４０１は、編集前のページデータ３０１と、そのページデータ３０１を印刷するときの用紙サイズなどの印刷設定とに基づき設定される。編集アプリケーション２０５は、図２のプリンタドライバ２０９から印刷設定を取得し、その印刷設定に従ってページデータ３０１を印刷したときの改ページ位置を算出することにより、ページデータ３０１におけるページ分割線４０１の位置を求めることができる。そして、先頭ページと最後尾ページ以外では、２つのページ分割線４０１で区切られた領域がクリップ対象の領域となり、そのクリップ領域にクリップ処理が順次行われる。これにより、当該印刷設定で印刷を行ったときの各ページに対応する印刷データが生成される。
【００２４】
ＸＰＳデータに対して図３、図４に示すクリップ処理を行い、ＸＰＳの一部領域を出力対象とする場合でも、クリップされる領域外のオブジェクトがＸＰＳデータに記述されている。そのため、クリップ処理されたＸＰＳデータに基づき表示や印刷処理等を行う場合、ＸＰＳデータの一部の領域が出力対象であるにも拘わらず、クリップされた領域外のオブジェクトについても処理を行わなくてはならない。
【００２５】
そこで、本実施例では、ＸＰＳデータにおいてクリップされた領域外のオブジェクトが元のＸＰＳデータから削除されたＸＰＳデータ（クリップページデータ）を、編集アプリケーション２０５が生成する処理を行う。これにより、ＸＰＳデータにおいて出力対象となっていない領域に対する処理負荷が軽減され、出力対象の一部領域の出力処理を迅速に行うことができる。このクリップページデータの生成処理については後述する。
【００２６】
〔ＸＰＳドキュメントの構成〕
ここで、ＸＰＳについて簡単に説明する。ＸＰＳドキュメントは、ＦｉｘｅｄＤｏｃｕｍｅｎｔＳｅｑｕｅｎｃｅ要素（以下、単にＦＤＳという）をルートとするツリー構造を形成している。ＦＤＳは、複数のＦｉｘｅｄＤｏｃｕｍｅｎｔ要素（以下、単にＦＤという）を有し、ＦＤは、複数のＦｉｘｅｄＰａｇｅ要素（以下、単にＦＰという）を有する。ＦＰは、ドキュメントのページの内容をＸＭＬ形式で記述しており、実際に表示又は印刷される内容を含む。ページ内で使用されるフォントや画像等の資源は、複数のＦＰで共有されることができる。また、ＦＤＳとＦＤとＦＰはそれぞれ、印刷設定情報をＰｒｉｎｔＴｉｃｋｅｔ要素（以下、単にＰＴという）として持つことができる。ＰＴは、ＸＰＳドキュメントを印刷する際の印刷設定情報をＸＭＬ形式で記述している。
【００２７】
図５は、ＸＰＳドキュメントの論理構造を示す図である。ＸＰＳドキュメント５０１は、ＦＤＳ５０３をルートとするツリー構造となっている。ＦＤＳ５０３は、子としてＦＤ５１１とＦＤ５１２とを有する。ＦＤ５１１は、子としてＦＰ５２１とＦＰ５２２とを有する。ＦＤ５１２は、子としてＦＰ５２３を有する。また、ＦＤＳ５０３は、子としてＰＴ５３１を有し、ＦＤ５１１は、子としてＰＴ５３２を有し、ＦＰ５２１は、子としてＰＴ５３３を有し、ＦＤ５１２は、子としてＰＴ５３４を有する。ＦＰ５２２とＦＰ５２３は、ＰＴを有していない。また、ＦＰ５２１とＦＰ５２２は、フォントや画像等の資源５４１を共有し、ＦＰ５２３は、フォントや画像等の資源５４２を有する。ここで、ＦＰ５２２を印刷する際に使用されるＰＴとして、ＰＴ５３１とＰＴ５３２とＰＴ５３３をマージしたＰＴが用いられる。
【００２８】
〔ＦｉｘｅｄＰａｇｅの構成〕
図６は、ＦＰの一例を示す図である。ＦＰは、ＸＭＬ形式で記述される。ＦＰは、ＦＰ全体を包括する親要素としてのＦｉｘｅｄＰａｇｅ要素６０１を有する。ＦｉｘｅｄＰａｇｅ要素６０１は、属性としてｎａｍｅｓｐａｃｅの情報や、ページサイズ情報等を含む。ページに配置される各オブジェクトは、ＦｉｘｅｄＰａｇｅ要素６０１の子要素として記述される。
【００２９】
Ｃａｎｖａｓ要素６０２は、様々な子要素を自由な位置にレイアウト配置するための要素である。図６に示すように、Ｃａｎｖａｓ要素６０２は、Ｐａｔｈ要素６０３と、ＩｍａｇｅＢｒｕｓｈ要素６０４と、ｇｌｙｐｈｓ要素６０５とを子要素として含む。Ｐａｔｈ要素６０３は、ページ中の特定領域を指定するための要素であり、特定領域を指定色で塗りつぶす場合等に用いられる。また、Ｐａｔｈ要素６０３は、ページ中に配置する画像オブジェクトの領域を指定する場合にも用いられる。ＩｍａｇｅＢｒｕｓｈ要素６０４は、親要素であるＰａｔｈ要素で指定された領域に画像オブジェクトを配置するための要素であり、画像のＵＲＩや配置方法等を属性として含む。Ｇｌｙｐｈｓ要素６０５は、テキストオブジェクトを配置するための要素であり、テキストオブジェクトの配置位置やサイズ情報や、フォント情報や文字列情報等を属性として含む。
【００３０】
各子要素には、自身の要素の属性に加えて親要素の属性が反映される。例えば、Ｃａｎｖａｓ要素６０２に、Ｒｅｎｄｅｒｔｒａｎｓｆｏｒｍ属性が要素を拡大するパラメータとして記述されている場合がある。そのような場合には、子要素であるＰａｔｈ要素６０３やＧｌｙｐｈｓ要素６０５等の全ての子要素にも、要素を拡大するパラメータが反映される。
【００３１】
図７は、ＸＰＳデータのページにおける特定領域に対しクリップ処理が行われる場合のＦＰの編集の一例を示す図である。図７は、ＸＰＳデータにおける座標（１００、２００）を始点として２００×２００の領域サイズでクリップ処理する例を示している。上段の図がクリップ処理前を示し、下段の図がクリップ処理後を表わしている。本クリップ処理においては、まず、ＦＰ全体を包括する親要素であるＦｉｘｅｄＰａｇｅ要素７０１のＷｉｄｔｈ属性とＨｅｉｇｈｔ属性がクリップ領域のサイズに変更される。図７に示すように、「Ｈｅｉｇｈｔ＝”７９３．７２８”  Ｗｉｄｔｈ＝”１１２２．５３”」が「Ｈｅｉｇｈｔ＝”２００”  Ｗｉｄｔｈ＝”２００”」に変更されている。
【００３２】
次に、ＦｉｘｅｄＰａｇｅ要素７０１の直下の子要素として、ＣａｎｖａｓＣｌｉｐ要素７０３が追加される。追加されたＣａｎｖａｓＣｌｉｐ要素７０３は、Ｃｌｉｐ属性と、Ｒｅｎｄｅｒｔｒａｎｓｆｏｒｍ属性とを有する。図７では、「”Ｍ  １００，２００  Ｌ  ３００，２００  ３００，４００  ４００，１００  Ｚ”」がＣｌｉｐ属性である。このＣｌｉｐ属性は、クリップ領域の座標を示すものであり、上記の例では、クリップされる矩形領域の４つの頂点の座標を示す。ＦｉｘｅｄＰａｇｅ要素７０１はクリップ領域に基づいてサイズが変更されているので、ＣａｎｖａｓＣｌｉｐ要素７０３のＣｌｉｐ属性は指定されない場合もある。図７で「Ｒｅｎｄｅｒｔｒａｎｓｆｏｒｍ＝”１．０．０．１．−１００．−２００”」で示されるＲｅｎｄｅｒｔｒａｎｓｆｏｒｍ属性は、クリップ領域の始点をページの原点に移動させるために指定される。つまり、Ｒｅｎｄｅｒｔｒａｎｓｆｏｒｍ属性は、クリップ領域の始点座標の分、ページの原点方向に移動させるための移動量を表わしている。図７に示すようなＦＰの記述の変更によって、ユーザにより指定された範囲のみを対象とするクリップページデータが生成される。このクリップページデータは、以降の表示や印刷処理の対象として処理される。
【００３３】
図７で示すＸＰＳデータを出力する場合には、ＣａｎｖａｓＣｌｉｐ要素７０３の子要素の座標と、ＣａｎｖａｓＣｌｉｐ要素７０３が示すクリップ領域の座標とを比較し、その子要素がクリップ領域に含まれていると判定した場合に、その子要素を出力対象として特定する。
【００３４】
ただし、図７で示すようなクリップページデータには、元々存在している全ての要素がＣａｎｖａｓＣｌｉｐ要素７０３の子要素として残っている。元々存在している全ての要素とは、Ｃａｎｖａｓ要素７０２以下の要素のことである。これらの要素には、クリップ後の表示領域に無関係な要素が存在してしまう。例えば、ユーザが指定したクリップ領域外に配置されているＩｍａｇｅＢｒｕｓｈ要素やＧｌｙｐｈｓ要素、又は、ＰｏｌｙＬｉｎｅＳｅｇｍｅｎｔ要素等は、クリップページデータに基づく出力には本来関係がない。
【００３５】
しかしながら、図７に示すようにクリップ処理された後のＦＰに対して表示等の出力処理を行っていく場合には、ＣａｎｖａｓＣｌｉｐ要素７０３の子要素の全てに対して、クリップ領域の座標との座標比較等の処理を行う。そのため、そのクリップ領域を出力するときには、出力に無関係な上記要素に対しても、処理を行わなければならず、クリップページデータを編集処理する際の余分な負担となる。そこで、本実施例においては、クリップ処理時にクリップ領域外の要素を削除したクリップページデータ（ＦＰ）を新たに生成することによって、以降のクリップページデータに対する処理効率を向上させる。
【００３６】
〔クリップページデータ生成処理〕
図８は、本実施例における編集アプリケーション２０５のレイアウト部２０６がクリップページデータを生成するデータ処理の手順を示すフローチャートである。図８に示す処理は、例えば、ＣＰＵ１０２がＲＯＭ１０４に記憶されているプログラムを実行することによって実現される。またこのとき、仮想ドライバ２０３により生成されたＸＰＳデータ（ページデータ）が編集アプリケーション２０５により既に取得されているものとする。
【００３７】
まず、ＣＰＵ１０２は、ユーザからクリップ領域の指定を受付けて、クリップ領域を指定領域として取得する（Ｓ８０１）。ここで、クリップ領域の取得方法としては、例えば、ユーザがＧＵＩ上で指示した指定領域に従う方法や、ユーザが設定した用紙サイズ等の情報から算出する方法等がある。
【００３８】
Ｓ８０２〜Ｓ８１０において、ＦｉｘｅｄＰａｇｅの解析と、ページを構成する各要素がクリップ領域の出力に必要であるか否かの判定とが行われる。本実施例においては、クリップ領域の出力に必要な各要素のみを含むクリップページデータが新たに生成される。本実施例において、ページを構成する各要素がクリップ領域の出力に必要であるか否かの判定結果により、新たに生成されるクリップページデータにその要素を書き込むか決定する。
【００３９】
ＣＰＵ１０２は、対象となるＸＰＳドキュメントからＦｉｘｅｄＰａｇｅ（第１の構造化文書（ＦＰ１）とする）を取得する（Ｓ８０２）。ＣＰＵ１０２は、ＦＰ１に含まれる各要素を取得する（Ｓ８０３）。次に、ＣＰＵ１０２は、Ｓ８０３で取得された各要素の種類が削除判定対象であるか否かを判定する（Ｓ８０４）。ここで、削除判定対象の種類であると判定された場合にはＳ８０５に進み、削除判定対象の種類でないと判定された場合にはＳ８０９に進む。削除判定対象にならない要素の種類としては、例えば、ページに必ず必要なＦｉｘｅｄＰａｇｅ要素がある。このような要素は、当該指定されているクリップ領域に関わらず、新たに生成されるクリップページデータに必要であるため、Ｓ８０９において書き込み対象として決定される。又は、以降の処理内容と判定にかかる負荷を考慮して、削除判定対象となる要素の種類が決定されるようにしても良い。一方、削除判定対象となる要素の種類としては、例えば、画像を描画するためのＩｍａｇｅＢｒｕｓｈ要素や、テキストを描画するためのＧｌｙｐｈｓ要素、又は、線分からなる図形を描画するためのＰｏｌｙＬｉｎｅＳｅｇｍｅｎｔ要素がある。このような要素は、当該要素に関係するオブジェクトがクリップ領域に含まれていなければ、クリップ領域の出力結果に影響しない。そのため、Ｓ８０５、Ｓ８０６において、クリップ領域であるか否かを判定し、その結果により、新たなページデータへの書き込み対象とするか決定する。
【００４０】
Ｓ８０５において、ＣＰＵ１０２は、削除判定対象の種類であると判定された各要素が描画される描画領域の座標を取得する。各要素の描画領域算出処理については、図９を参照しながら後述する。次に、ＣＰＵ１０２は、描画領域の座標が取得された各要素がＳ８０１で取得されたクリップ領域外に存在するか否かを判定する（Ｓ８０６）。ここで、クリップ領域外に存在すると判定された場合にはＳ８０７に進み、クリップ領域内にその要素の一部でも存在すると判定された場合にはＳ８０９に進む。Ｓ８０６においては、例えば、Ｓ８０５で取得された各要素の描画領域とクリップ領域とを比較し、以下の条件のいずれかに該当する場合に、対象要素がクリップ領域外に存在すると判定する。
（条件１）要素の描画領域の左端がクリップ領域の右端より、右に存在する。
（条件２）要素の描画領域の右端がクリップ領域の左端より、左に存在する。
（条件３）要素の描画領域の上端がクリップ領域の下端より、下に存在する。
（条件４）要素の描画領域の下端がクリップ領域の上端より、上に存在する。
【００４１】
Ｓ８０７〜Ｓ８０９において、新たに生成されるクリップページデータに書き込まれる対象であるか否かを示す情報が各要素に対して設定される。Ｓ８０７において、ＣＰＵ１０２は、Ｓ８０６でクリップ領域外に存在すると判定された要素に対して、新たに生成されるクリップページデータに書き込まれる対象でないことを示す情報が設定される。一方、Ｓ８０９において、ＣＰＵ１０２は、Ｓ８０６でクリップ領域外に存在しないと判定された要素に対して、新たに生成されるクリップページデータに書き込まれる対象であることを示す情報が設定される。これらの情報は、例えば、各要素の取得順にフラグを設定していく方法や、各要素自体と併せて記憶する方法等によって設定される。
【００４２】
Ｓ８０８において、ＣＰＵ１０２は、削除判定対象の要素にのみ関連する親要素について、新たに生成されるクリップページデータに書き込まれる対象でないことを示す情報を設定する。Ｓ８０８の処理は、特定の要素が子要素として存在することを必須条件とする要素があった場合には、子要素が削除されることによって親要素が成立しなくなることを防ぐために行われる。Ｓ８０８の処理については後述する。Ｓ８０９において、ＣＰＵ１０２は、新たに生成されるクリップページデータに書き込まれる対象であることを示す情報を各要素に設定する。次に、ＣＰＵ１０２は、ＦＰ１中の全ての要素について処理が終了したか否かを判定する（Ｓ８１０）。ここで、終了していると判定された場合にはＳ８１１に進み、終了していないと判定された場合にはＳ８０３に戻る。
【００４３】
Ｓ８１１〜Ｓ８２０においては、ＦｉｘｅｄＰａｇｅ（ＦＰ１）の更新処理が行われる。なお、Ｓ８１１〜Ｓ８２０は、先述のＳ８０２〜Ｓ８１０におけるＦｉｘｅｄＰａｇｅの解析処理と並行して行うことも可能である。Ｓ８１０までのＦｉｘｅｄＰａｇｅの解析が終了すると、新たにＦｉｘｅｄＰａｇｅ（第２の構造化文書（ＦＰ２）とする）を作成する（Ｓ８１１）。ＦＰ２は、何も記述されていない空のドキュメントである。
【００４４】
ＣＰＵ１０２は、ＦＰ１から順次、要素を取得していく（Ｓ８１２）。Ｓ８１２において、ＣＰＵ１０２は、例えば、取得した要素を、ＲＡＭ１０３等の格納領域に保存するようにしても良い。その場合には、以降、再びＦＰ１に対してアクセスすることなく処理を進めることができる。ＣＰＵ１０２は、取得した要素がＦｉｘｅｄＰａｇｅ要素であるか否かを判定する（Ｓ８１３）。ここで、ＦｉｘｅｄＰａｇｅ要素であると判定された場合にはＳ８１４に進み、ＦｉｘｅｄＰａｇｅ要素でないと判定された場合にはＳ８１７に進む。既に説明したように、ＦｉｘｅｄＰａｇｅ要素は、ページ中に必ず１つ存在するものであり、他の全ての要素に対しての親要素となっている。
【００４５】
Ｓ８１４において、ＣＰＵ１０２は、ＦｉｘｅｄＰａｇｅ要素の属性であるサイズ情報（Ｗｉｄｔｈ、Ｈｅｉｇｈｔ）をユーザから指定されたクリップ領域のサイズに変更する。ＣＰＵ１０２は、その変更されたクリップ領域のサイズを含むＦｉｘｅｄＰａｇｅ要素を、新たに生成されたＦＰ２に追加する（Ｓ８１５）。次に、ＣＰＵ１０２は、ＦｉｘｅｄＰａｇｅ要素直下の子要素としてＣａｎｖａｓ要素をＦＰ２に追加する（Ｓ８１６）。その際に、ＣＰＵ１０２は、クリップ領域をＦＰ２内の原点に移動させるために、追加したＣａｎｖａｓ要素の属性としてＲｅｎｄｅｒＴｒａｎｓｆｏｒｍを追加する。これによって、クリップ領域のみを描画されるページとするＦＰ２が生成される。
【００４６】
一方、Ｓ８１７において、ＣＰＵ１０２は、Ｓ８１２で取得した要素が新たに生成されたＦＰ２に書き込まれる対象であるか否かを判定する。ここで、書き込まれる対象であると判定された場合には、Ｓ８１８に進み、書き込まれる対象でないと判定された場合には、Ｓ８１９に進む。Ｓ８１８において、ＣＰＵ１０２は、Ｓ８１２で取得した要素を新たに生成されたＦＰ２に書き込む。その際に、ＣＰＵ１０２は、その要素に付随する属性も併せて書き込む。なお、Ｓ８１７では、上記のＳ８０７またはＳ８０９で各要素に書き込まれた情報に従って、各要素が書き込み対象であるか否かの判定を行う。
【００４７】
Ｓ８１９において、ＣＰＵ１０２は、全ての要素について処理が終了したか否かを判定する。ここで、全ての要素について処理が終了したと判定された場合にはＳ８２０に進み、全ての要素について処理が終了していないと判定された場合にはＳ８１２に戻る。Ｓ８２０において、ＣＰＵ１０２は、ＦＰ１をＦＰ２で更新する。
【００４８】
以上の図８に示す処理により、Ｓ８０１で取得されたクリップ領域を出力するときに必要な要素のみを残したページデータが、新たに生成される。このページデータを出力するときには、元のページデータに含まれていた、クリップ領域の出力に関係のない要素に対して処理を行う必要がないため、クリップ領域の出力処理を迅速に行うことができる。
【００４９】
〔削除判定対象要素の描画領域算出処理〕
図９は、Ｓ８０５における削除判定対象である要素の描画領域算出処理の手順を示すフローチャートである。なお、図９では、削除判定対象の要素として、ＩｍａｇｅＢｒｕｓｈ要素、Ｇｌｙｐｈｓ要素、ＰｏｌｙＬｉｎｅＳｅｇｍｅｎｔ要素を説明する。
【００５０】
まず、ＣＰＵ１０２は、描画領域算出の対象とする要素がＩｍａｇｅＢｒｕｓｈ要素であるか否かを判定する。ここで、ＩｍａｇｅＢｒｕｓｈ要素であると判定された場合にはＳ９０２に進み、ＩｍａｇｅＢｒｕｓｈ要素でないと判定された場合にはＳ９０３に進む。Ｓ９０２において、ＣＰＵ１０２は、ＩｍａｇｅＢｒｕｓｈ要素の描画領域を算出する。ＩｍａｇｅＢｒｕｓｈ要素の描画領域算出の処理については、図１０を参照しながら後述する。
【００５１】
Ｓ９０３において、ＣＰＵ１０２は、描画領域算出の対象とする要素がＧｌｙｐｈｓ要素であるか否かを判定する。ここで、Ｇｌｙｐｈｓ要素であると判定された場合にはＳ９０４に進み、Ｇｌｙｐｈｓ要素でないと判定された場合にはＳ９０５に進む。Ｓ９０４において、ＣＰＵ１０２は、Ｇｌｙｐｈｓ要素の描画領域を算出する。Ｇｌｙｐｈｓ要素の描画領域算出の処理については、図１１を参照しながら後述する。
【００５２】
Ｓ９０５において、ＣＰＵ１０２は、描画領域算出の対象とする要素がＰｏｌｙＬｉｎｅＳｅｇｍｅｎｔ要素であるか否かを判定する。ここで、ＰｏｌｙＬｉｎｅＳｅｇｍｅｎｔ要素であると判定された場合にはＳ９０６に進み、ＰｏｌｙＬｉｎｅＳｅｇｍｅｎｔ要素でないと判定された場合には本処理を終了する。Ｓ９０６において、ＣＰＵ１０２は、ＰｏｌｙＬｉｎｅＳｅｇｍｅｎｔ要素の描画領域を算出する。ＰｏｌｙＬｉｎｅＳｅｇｍｅｎｔ要素の描画領域算出の処理については、図１２を参照しながら後述する。
【００５３】
図１０は、Ｓ９０２におけるＩｍａｇｅＢｒｕｓｈ要素の描画領域算出処理の手順を示すフローチャートである。まず、ＣＰＵ１０２は、親要素となるＰａｔｈ要素を探索する（Ｓ１００１）。これは、ＩｍａｇｅＢｒｕｓｈ要素には場所を示す属性が存在せず、描画領域は親要素のＰａｔｈ要素の位置に従って行われるからである。ＣＰＵ１０２は、探索されたＰａｔｈ要素のＤａｔａ属性から描画領域の座標を算出する（Ｓ１００２）。Ｄａｔａ属性には、複数の座標と、座標間をどのように結ぶかを示す情報とが記述されている。描画領域の算出方法としては、座標に従って正確に範囲を取得する方法や、座標中の上下左右で最も外側の点で構成された、Ｐａｔｈ要素で示される領域全てを包含する矩形領域を描画領域とする方法が用いられても良い。また、同じ要素であっても表示位置を示す情報の記述方法には複数存在する場合があるので、それらの記述方法によっても描画領域の取得方法は異なる。例えば、Ｐａｔｈ要素がＤａｔａ属性を持たず、代わりに子要素としてＰａｔｈ．Ｄａｔａ要素を持つ場合があり、その場合には、Ｐａｔｈ．Ｄａｔａ属性から座標が算出されることになる。
【００５４】
ＣＰＵ１０２は、Ｐａｔｈ要素の親要素を取得する（Ｓ１００３）。次に、ＣＰＵ１０２は、取得した親要素がＲｅｎｄｅｒＴｒａｎｓｆｏｒｍ属性などの描画領域の位置や大きさを変更する属性が含まれているか否かを判定する（Ｓ１００４）。ここで、含まれていると判定された場合にはＳ１００５に進み、含まれていないと判定された場合にはＳ１００６に進む。Ｓ１００５において、ＣＰＵ１０２は、ＲｅｎｄｅｒＴｒａｎｓｆｏｒｍ属性等が示すパラメータに従って、Ｓ１００２で算出された描画領域を変更する。
【００５５】
Ｓ１００６において、ＣＰＵ１０２は、Ｓ１００１で取得したＰａｔｈ要素の全ての親要素について処理が終了したか否かを判定する。ここで、全ての親要素について処理が終了していないと判定された場合にはＳ１００３に戻って、さらに上位の親要素を取得して、描画領域の修正を行う。Ｓ１００６で全ての親要素について処理が終了したと判定された場合には、ＩｍａｇｅＢｒｕｓｈ要素の描画領域算出処理を終了する。
【００５６】
図１１は、Ｓ９０４におけるＧｌｙｐｈｓ要素の描画領域算出処理の手順を示すフローチャートである。まず、ＣＰＵ１０２は、対象となるＧｌｙｐｈｓ要素から描画開始位置を取得する（Ｓ１１０１）。ここで、描画開始位置は、Ｇｌｙｐｈｓ要素のＯｒｉｇｉｎＸ属性とＯｒｉｇｉｎＹ属性とから取得される。ＣＰＵ１０２は、描画されるテキストのサイズを取得する（Ｓ１１０２）。ＣＰＵ１０２は、Ｓ１１０１とＳ１１０２で取得された描画開始位置とサイズ情報とに基づき、テキストの描画領域を算出する（Ｓ１１０３）。Ｓ１１０４〜Ｓ１１０７は、Ｓ１００３〜Ｓ１００６と同様に、親要素の情報に基づき描画領域の変更を行い、全ての親要素について処理が終了すると、Ｇｌｙｐｈｓ要素の描画領域算出処理を終了する。
【００５７】
図１２は、Ｓ９０６におけるＰｏｌｙＬｉｎｅＳｅｇｍｅｎｔ要素の描画領域算出処理の手順を示すフローチャートである。まず、ＣＰＵ１０２は、親要素のＰａｔｈＦｉｇｕｒｅ要素のＳｔａｒｔＰｏｉｎｔ属性から描画開始位置を取得する（Ｓ１２０１）。次に、ＣＰＵ１０２は、対象となるＰｏｌｙＬｉｎｅＳｅｇｍｅｎｔ要素のＰｏｉｎｔｓ属性から図形を構成する座標群を取得する（Ｓ１２０２）。ＣＰＵ１０２は、Ｓ１２０１とＳ１２０２とで取得された描画開始位置と座標群とに基づき、描画領域を算出する（Ｓ１２０３）。Ｓ１２０４〜Ｓ１２０７は、Ｓ１００３〜Ｓ１００６と同様に、親要素の情報に基づき描画領域の修正を行い、全ての親要素について処理が終了すると、ＰｏｌｙＬｉｎｅＳｅｇｍｅｎｔ要素の描画領域算出処理を終了する。
【００５８】
〔親要素の書き込み設定処理〕
図１３は、Ｓ８０８における削除判定対象の要素の親要素を、削除判定の対象とするか否かの判定を行う処理の手順を示すフローチャートである。まず、ＣＰＵ１０２は、Ｓ８０７で削除判定対象とした要素の親要素を取得する（Ｓ１３０１）。ＣＰＵ１０２は、取得した親要素が削除判定対象の要素以外の子要素を持つか否かを判定する（Ｓ１３０２）。ここで、他に子要素を持たないと判定された場合にはＳ１３０３に進み、他にも子要素を持つと判定された場合には図１３に示す処理を終了する。
【００５９】
Ｓ１３０３において、ＣＰＵ１０２は、Ｓ１３０１で取得した要素が単独でクリップ領域に含まれる描画内容に影響するか否かを判定する。ここで、影響しないと判定された場合にはＳ１３０４に進み、影響すると判定された場合には図１３に示す処理を終了する。例えば、Ｓ１３０１で取得した要素がクリップ領域外に存在する場合や、クリップ領域内であっても描画内容を含まない要素である場合には、影響しないと判定される。Ｓ１３０４において、ＣＰＵ１０２は、Ｓ１３０２とＳ１３０３の判定結果により、Ｓ１３０１で取得された親要素は、ＦＰ２に書き込まれる対象でない（即ち、削除判定の対象）とする。その後、ＣＰＵ１０２は、Ｓ１３０１に戻り、さらに上位の親要素を取得する。Ｓ１３０１〜Ｓ１３０４の処理が繰り返されることによって、Ｓ８０７で削除判定対象とした要素にのみ関連する親要素についても削除判定の対象とすることができる。
【００６０】
以上のように、本実施例によれば、ＸＰＳデータに対して出力対象が指定された場合に、そのＸＰＳデータを、クリップ領域に必要な要素のみで構成されるＸＰＳデータとする。その結果、このＸＰＳデータを出力するときには、元のＸＰＳデータに含まれていた、クリップ領域の出力に関係のない要素に対して処理を行う必要がないため、クリップ領域の出力処理を迅速に行うことができる。
【００６１】
〔実施例２〕
実施例１では、ページの一部を抽出するクリップ処理の際にクリップ領域外の要素を取り除くことによって、クリップ領域の出力処理にとって不要な要素をなくし、パフォーマンスを向上させるＸＰＳデータを生成することができた。
【００６２】
クリップ処理が用いられる用途として他に、例えば、ＸＰＳデータを印刷用の用紙サイズに合わせてページ分割する処理がある。つまり、ＸＰＳデータをページ単位の領域にクリップするということである。どの位置でページを分割するかは、印刷時のページサイズに応じて決定され、そのページサイズは例えば用紙サイズ等の印刷設定情報によって決定される。しかしながら、その決定されたページ境界線上に画像や文字等のオブジェクトが重なる場合には、そのオブジェクトは分割されて２つのページに跨って配置されてしまう。
【００６３】
そこで、本実施例では、用紙サイズによって決定される第１のページ区切り位置に加え、第１のページ区切り位置に重なって存在するオブジェクトの描画領域によって決定される第２のページ区切り位置を設定する。そして、ページ境界線上に重なっていたオブジェクトを後続のページに含まれるオブジェクトとして扱い、ページ分割においてオブジェクトの分割を防ぐ。
【００６４】
図１４（ａ）は、ページ区切り位置上のオブジェクトの分割防止処理を説明するための図である。ページデータ１４０１は、ＨＴＭＬファイルに基づくＷｅｂページの全体に対応するＸＰＳデータである。まず、ページデータ１４０１は、印刷設定により特定されるページサイズに応じてページ分割を行ったときには、第１のページ区切り位置１４０３でページ分割されるとする。しかしながら、画像オブジェクトについてはページ分割されない方が望ましいため、画像オブジェクトが２つのページの区切り位置である第１のページ区切り位置１４０３に重なる場合には、いずれかのページに画像オブジェクトを配置する。例えば、図１４に示されるように、画像オブジェクト１４０６は、第１のページ区切り位置１４０３上に重なっている。本実施例では、この画像オブジェクトが２つのページに分割されないように、次ページにレイアウトする。
【００６５】
一方、第１のページ区切り位置１４０３に重なるオブジェクトがテキストオブジェクトの場合には、その第１のページ区切り位置１４０３でオブジェクトを分割して、２つのページにレイアウトする。例えば図１４では、テキストオブジェクトを第１のページ区切り位置１４０３で分割して、テキストオブジェクト１４０４、テキストオブジェクト１４０５として２つのページに配置する。
【００６６】
このようなレイアウトを行うために、本実施例では、ＸＰＳデータに記述されているオブジェクトの座標情報に基づき、第１のページ区切り位置１４０３に重なるオブジェクトを特定する。そして、特定されたオブジェクトが画像オブジェクトであれば、次ページにレイアウトし、そのオブジェクトがテキストオブジェクトであれば、分割して２つのページにレイアウトするようにする。
【００６７】
また、このとき画像オブジェクトについては、本来のページ区切り位置（１４０３）とは異なるページ区切り位置で、ページ分割が行われるため、本実施例においては、画像オブジェクト１４０６より上方に第２のページ区切り位置１４０２を設定する。
本実施例では、このように設定した第１のページ区切り位置、第２のページ区切り位置に従ってページ分割を行い、各分割されたページデータを生成する。
【００６８】
まず第１のページを生成するときには、画像オブジェクト１４０６のように、第１のページ区切り位置１４０３に重なり且つ第２のページ区切り位置１４０２より下方に位置するオブジェクトについては、次のページ（第２ページ）に含めるようにし、現在のページ（第１ページ）のページデータを生成する際にはその画像オブジェクト１４０６を含めないように第１のページのページデータを生成する。
【００６９】
また、次のページ（第２ページ）のページデータを生成するときには、第２のページ区切り位置１４０２以降のＸＰＳデータに基づき生成される。つまり、画像オブジェクト１４０６は、第２ページに含めるようにする。しかしながら、テキストオブジェクト１４０４のように、既に前ページ（第１ページ）に含めるようにしたオブジェクトは、次のページ（第２ページ）には含めない。さらに、テキストオブジェクト１４０５のように、そのテキストオブジェクトの上端が第１のページ区切り位置１４０３より下方に存在するオブジェクトについては、第２ページにそのテキストオブジェクトを含めるようにする。
【００７０】
上記のような処理によって、図１４（ｂ）に示すように、２つのページのページデータを生成することができる。分割された第１ページ１４０７は、第１のページ区切り位置１４０３より上方に存在するテキストオブジェクト１４０４を含み、第１のページ区切り位置１４０３に重なっていた画像オブジェクト１４０６を含んでいない。また、分割された第２ページ１４０８は、第２のページ区切り位置１４０２より下方に存在し且つ分割された第１ページ１４０７に含まれていない、画像オブジェクト１４０６やテキストオブジェクト１４０５を含んでいる。
【００７１】
図１５は、図１４のようにページ分割処理が行われるときの各ページに対応するページデータを作成する処理を示すフローチャートであり、レイアウト部２０６により実行される。まず、ＣＰＵ１０２は、第１のページ開始位置、第２のページ開始位置、第１のページ区切り位置を設定する（Ｓ１５０１）。ここで、第１のページ区切り位置として、例えば用紙サイズによって決定される対象ページの範囲の始点座標と終点座標とに基づいたページ分割線（図１４の１４０３）が設定される。また、第１のページ開始位置、第２のページ開始位置は、ページ分割を行うときの次ページの開始位置を示す。第１のページ開始位置として、図１４の第１のページ区切り位置１４０３が設定される。また、第２のページ開始位置として、対象ページの前のページのページデータを生成した際の第２のページ区切り位置１４０２が設定される。第２のページ１４０６のページデータを生成するときには、第１のページ開始位置は、図１４における第１のページ区切り位置１４０３に対応し、第２のページ開始位置は、第２のページ区切り位置１４０２に対応する。但し、先頭ページ１４０７のページデータ生成時には、第１のページ開始位置と第２のページ開始位置とは、同じ位置として設定される。
【００７２】
次に、ＣＰＵ１０２は、第２のページ区切り位置を設定する（Ｓ１５０２）。第２のページ区切り位置は、対象ページの次のページのページデータを生成する際の第２のページ開始位置として利用される。先頭ページ１４０７のページデータの生成時では、第２のページ区切り位置と第１のページ区切り位置とは、同じ位置として設定される。
【００７３】
次に、ＣＰＵ１０２は、ＦＰ１から要素を取得し（Ｓ１５０３）、取得した各要素の描画領域を算出する（Ｓ１５０４）。ＣＰＵ１０２は、各要素の描画領域の下端が、現在設定されている第２のページ開始位置より上方に存在するか否かを判定する（Ｓ１５０５）。ここで、上方に存在すると判定された場合には、当該ページの前のページにその要素が書き込まれているので、Ｓ１５０７に進み、その要素を書き込み対象から外す。例えば第２のページ１４０６のページデータ生成時において、描画領域の下端が第２のページ開始位置より上方に存在すると判定された（Ｓ１５０５：Ｙｅｓ）要素とは、図１４（ａ）において第２のページ区切り位置１４０２より上方に位置するオブジェクトを表している。従って、そのようなオブジェクトは、対象ページ（図１４における第２ページに対応）には含めないと判定し、Ｓ１５０７において、対象ページへの書き込み対象外とする。
【００７４】
一方、Ｓ１５０５において、当該要素の描画領域の下端が第２ページ開始位置より上方に存在しないと判定された場合には、Ｓ１５０６に進み、ＣＰＵ１０２は、描画領域の下端が第１のページ区切り位置より上方に存在するか否かを判定する（Ｓ１５０６）。
【００７５】
描画領域の下端が第２のページ開始位置より上方に存在しないと判定され、且つ、描画領域の下端が第１のページ区切り位置より上方に存在すると判定された（Ｓ１５０５：Ｎｏ−Ｓ１５０６：Ｙｅｓ）オブジェクトは、Ｓ１５０７に進み、本対象ページへの書き込み対象から外す。例えば第２のページ１４０６のページデータ生成時では、テキストオブジェクト１４０４が該当する。このように、下端が第１のページ区切り位置１４０３より上方の場合には、前のページで既にレイアウトされているため、当該ページの書き込み対象から外す。
【００７６】
描画領域の下端が第２のページ開始位置より上方に存在しないと判定され、且つ、描画領域の下端が第１のページ区切り位置より上方に存在しないと判定された（Ｓ１５０５：Ｎｏ−Ｓ１５０６：Ｎｏ）オブジェクトは、Ｓ１５１３に進み、本対象ページへの書き込み対象とする。例えば第２のページ１４０６のページデータ生成時では、画像オブジェクト１４０６が該当する。Ｓ１５１３において、ＣＰＵ１０２は、本対象ページへの書き込み対象である旨をオブジェクトに設定してＳ１５１２に進む。
【００７７】
Ｓ１５０７及びＳ１５０８は、対象ページへの書き込み対象外として判定された要素に対する処理である。Ｓ１５０７及びＳ１５０８は、Ｓ８０７及びＳ８０８における説明と同じである。Ｓ８０７及びＳ８０８の説明における「要素」は、本実施例における「オブジェクト」と同じである。
【００７８】
Ｓ１５０８の後、ＣＰＵ１０２は、各オブジェクトが次ページの第１のページ区切り位置と重なっているか否かを判定する（Ｓ１５０９）。この次のページの第１のページ区切り位置は、当該ページの第１のページ区切り位置から、印刷設定に基づくページサイズの長さだけ下にずれた位置となる。ここで、重なっていると判定された場合には、Ｓ１５１０に進み、次ページの第１のページ区切り位置と重なっていないと判定された場合には、Ｓ１５１２に進む。
【００７９】
Ｓ１５１０において、ＣＰＵ１０２は、Ｓ１５０９において重なっていると判定されたオブジェクトの上端が、次ページの当該第２のページ区切り位置よりも上方であるか判定する。なお、次ページの第２のページ区切り位置は、初めは次のページの第１のページ区切り位置が設定されている。
【００８０】
Ｓ１５１０において、次ページの第１のページ区切り位置と重なっているオブジェクトの上端が、次ページの当該第２のページ区切り位置よりも上方でない場合には、Ｓ１５１２に進むが、上方である場合には、Ｓ１５１１に進む。Ｓ１５１１では、ＣＰＵ１０２は、当該オブジェクトの上端を次ページの第２のページ区切り位置として設定し、Ｓ１５１２に進む。
【００８１】
Ｓ１５１２において、ＣＰＵ１０２は、ページ内の全てのオブジェクトについて処理を行ったか否かを判定する。ここで、全てのオブジェクトについて処理を行っていないと判定された（未処理のオブジェクトが残っている）場合には、Ｓ１５０３に戻る。このように、Ｓ１５０３〜Ｓ１５１３を要素単位で繰り返すことにより、当該生成対象のページにレイアウトされるオブジェクトのみを書き込み対象とすることができる。また、Ｓ１５０９〜Ｓ１５１１の処理により、次ページの第１のページ区切り位置に重なるオブジェクトのうち、最も上方のオブジェクトの上端を、次ページの第２のページ区切り位置として設定することができる。
【００８２】
一方Ｓ１５１２において、全てのオブジェクトについて処理を行ったと判定された場合には、Ｓ１５１４に進み、全てのページに対して、処理を終了したか判定する。この判定は、次のページの第１のページ区切り位置が、ＸＰＳデータの下端に達しているか確認することにより、判定することができる。例えば、図１４に示す例では、第２ページ１４０６のデータを生成したときに、次のページの第１のページ区切り位置の座標がページデータ１４０１の下端に達するため、全てのページに対して処理を終了したと判定することができる。
【００８３】
Ｓ１５１４において、Ｎｏ（まだデータを処理していないページがある）と判定された場合には、Ｓ１５１５に進み、当該ページの次のページを処理対象として、Ｓ１５０３に戻る。Ｓ１５０３〜Ｓ１５１５の処理をページ毎に繰り返すことによって、ＸＰＳデータが印刷時のページサイズで分割されたときの全てページに対し処理を行うことができる。Ｓ１５１４において、Ｙｅｓ（全てのページに対して処理を行った）と判定された場合には、図１５の処理を終了する。
【００８４】
以上の図１５に示した処理によれば、ＸＰＳデータを印刷時のページサイズで分割し、分割されたページのそれぞれに含ませる要素（当該ページに対応するデータへの書き込み対象の要素）を特定することができる。そして、本処理の終了以降は、実施例１におけるＳ８１１からＳ８１９の処理が行われる。その結果、複数のページに分割されたＸＰＳデータが生成される。その複数のページのそれぞれに対応するＸＰＳデータは、当該ページの出力処理に必要な要素が書き込まれ、当該ページの出力処理に不要な要素が削除されているページデータである。このページデータを出力するときには、元のページデータに含まれていた、当該ページの出力に関係のない要素に対して、当該ページに含まれる要素であるか判定する処理を行う必要がない。そのため、各ページの出力処理を迅速に行うことができる。
【００８５】
また以上のように、本実施例によれば、ページ分割線上にオブジェクトが重なっていても、そのオブジェクトが分割されることを防ぐことができる。さらに、実施例１で説明したように、対象ページに必要な要素のみで構成されるＸＰＳデータとすることができ、以降の処理のパフォーマンスを向上させることができる。
【００８６】
以上の実施例によれば、ユーザによるクリップ領域の指定や、ページ分割などにより、ＸＰＳデータの一部領域を出力するときに、ＸＰＳデータに含まれる要素のうち、当該一部領域の出力に不要な要素が削除されたＸＰＳデータを生成する。このＸＰＳデータを出力するときには、元のＸＰＳデータに含まれていた、一部領域の出力に関係のない要素に対して処理を行う必要がないため、ＸＰＳデータの一部領域の出力処理を迅速に行うことができる。
【００８７】
なお、以上の実施例では、Ｓ８０３〜Ｓ８１０のように、元のＸＰＳデータに含まれている要素のうち、当該ＸＰＳデータにおける出力対象の一部領域に含ませる要素を特定し、Ｓ８１１〜Ｓ８２０のように、特定された要素を含むＸＰＳデータを、元のＸＰＳデータとは別に新たに生成する例を示した。この生成方法により、元のＸＰＳデータがメモリ上に残るため、出力対象の領域が変更されたときに、再びその出力対象の領域のデータを生成することができる。
【００８８】
しかしデータの生成方法は、データを新たに生成する方法に限らず、元のＸＰＳデータから不要な要素を削除することによって生成してもよい。この方法によれば、ＦｉｘｅｄＰａｇｅ等の出力に必要な要素については元のデータに残っており、改めてＸＰＳデータに追加する必要がないため、出力対象のデータをより迅速に生成することができる。さらに、元のＸＰＳデータをコピーして、コピーされたＸＰＳデータから、不要なオブジェクトを削除するようにしてもよい。
【００８９】
また、以上の実施例により生成されたＸＰＳデータは各種の出力処理により出力される。例えば、ＸＰＳデータを印刷装置に出力して、当該ＸＰＳデータに対応する画像を印刷させてもよいし、または表示装置に出力して、画像を表示させてもよい。
【００９０】
なお、以上の実施例では、構造化文書としてＸＰＳデータを例に説明したが、本実施例は、ＥＭＦやＰＤＦ等の構造化文書に応用できるものである。また、Ｗｅｂページに対応する構造化文書に限らず、各種の構造化文書であってよい。
【００９１】
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。また、上記の処理を１つのプロセッサにより実行する場合に限らず、複数のプロセッサにより実行する場合であってもよい。
【図１】
2013061808.tif 000003
【図２】
2013061808.tif 000004
【図３】
2013061808.tif 000005
【図４】
2013061808.tif 000006
【図５】
2013061808.tif 000007
【図６】
2013061808.tif 000008
【図７】
2013061808.tif 000009
【図８】
2013061808.tif 000010
【図９】
2013061808.tif 000011
【図１０】
2013061808.tif 000012
【図１１】
2013061808.tif 000013
【図１２】
2013061808.tif 000014
【図１３】
2013061808.tif 000015
【図１４】
2013061808.tif 000016
【図１５】
2013061808.tif 000017