(57)【要約】【課題】  マークアップ言語で記述したコンテンツから印刷データを作成するにあたり、印刷装置側の処理負担を軽減できるようにするとともに、印刷データを効率的に処理することができるようにする。【解決手段】  構造化文書を解析して得られる要素ツリー全体から、出力するページ内に収容可能な要素群を取り出す処理を行う印刷装置に、配置する画像が前記ページ内に収容可能な大きさであるか否かを判断する画像サイズ判断手段と、前記画像サイズ判断手段により、前記画像を前記ページ内に収容できないと判断された場合に、前記画像を次のページの先頭に移動させる画像移動手段と、前記画像移動手段により移動される画像に付随する要素・属性・スタイルを指定する付随情報を移動させる付随情報移動手段とを設ける。【選択図】  図２
2006015734.tif 000002
【特許請求の範囲】
【請求項１】
構造化文書を解析して得られる要素ツリーから、ページ内に要素ブロックを配置する画像形成装置において、
前記要素ブロックをページ内に配置処理する配置手段と、
前記配置手段による前記要素ブロックの配置にともなって、前記要素ブロックを直前要素ブロックとして参照する第１の参照ポインタ、および前記配置された要素ブロックの次に配置処理する対象の新たな要素ブロックを現在要素ブロックとして参照する第２の参照ポインタを更新する更新手段と、
前記新たな要素ブロックに対応するスタイルの指定を参照するスタイル参照手段と、
前記スタイル参照手段によって参照されたスタイルの指定に基づいて、前記更新手段によって更新された第１の参照ポインタまたは第２の参照ポインタのうち、どちらを用いるか決定する決定手段とを有し、
前記配置手段は、前記決定手段によって決定された参照ポインタを参照することによって前記要素ブロックを配置することを特徴とする画像形成装置。
【請求項２】
前記スタイル参照手段によるスタイルの指定は改ページ処理の指定であることを特徴とする請求項１に記載の画像形成装置。
【請求項３】
構造化文書を解析して得られる要素ツリーから、ページ内に要素ブロックを配置する画像形成装置において、
配置対象の要素ブロックがページ内に収容可能な大きさであるか否かを判断するサイズ判断手段と、
前記サイズ判断手段により前記配置対象の要素ブロックが前記ページ内に収容できないと判断された場合、前記要素ブロック内のコンテンツの種類に対応して、改ページ処理を実行する改ページ処理手段とを有することを特徴とする画像形成装置。
【請求項４】
前記改ページ処理手段は、前記要素ブロック内のコンテンツが画像データの場合には、前記配置対象の要素ブロックを次のページの先頭に移動させることを特徴とする請求項３に記載の画像形成装置。
【請求項５】
前記改ページ処理手段は、前記要素ブロックに背景の指定がある場合、前記背景全体を次ページの先頭に移動させることを特徴とする請求項４に記載の画像形成装置。
【請求項６】
前記改ページ処理手段は、前記次ページにも前記要素ブロックが収容できない場合は、前記画像データを縮小させることを特徴とする請求項４に記載の画像形成装置。
【請求項７】
前記改ページ処理手段は、前記要素ブロック内のコンテンツがテキストデータの場合には、前記配置対象の要素ブロックを行ごとに分割して改ページ処理することを特徴とする請求項３に記載の画像形成装置。
【請求項８】
構造化文書を解析して得られる要素ツリーから、ページ内に要素ブロックを配置する画像形成装置の処理方法において、
前記要素ブロックをページ内に配置処理する配置ステップと、
前記配置ステップにおける前記要素ブロックの配置にともなって、前記要素ブロックを直前要素ブロックとして参照する第１の参照ポインタ、および前記配置された要素ブロックの次に配置処理する対象の新たな要素ブロックを現在要素ブロックとして参照する第２の参照ポインタを更新する更新ステップと、
前記新たな要素ブロックに対応するスタイルの指定を参照するスタイル参照ステップと、
前記スタイル参照ステップにおいて参照されたスタイルの指定に基づいて、前記更新ステップにおいて更新された第１の参照ポインタまたは第２の参照ポインタのうち、どちらを用いるか決定する決定ステップとを前記画像形成装置のコントローラが実行し、
前記配置ステップにおいて、前記決定ステップで決定された参照ポインタを参照することによって前記要素ブロックを配置することを特徴とする画像形成装置の処理方法。
【請求項９】
前記スタイル参照ステップにおけるスタイルの指定は改ページ処理の指定であることを特徴とする請求項８に記載の画像形成装置の処理方法。
【請求項１０】
構造化文書を解析して得られる要素ツリーから、ページ内に要素ブロックを配置する画像形成装置の処理方法において、
配置対象の要素ブロックがページ内に収容可能な大きさであるか否かを判断するサイズ判断ステップと、
前記サイズ判断ステップにおいて配置対象の要素ブロックが前記ページ内に収容できないと判断された場合、前記要素ブロック内のコンテンツの種類に対応して、改ページ処理を実行する改ページ処理ステップとを前記画像形成装置のコントローラが実行することを特徴とする画像形成装置の処理方法。
【請求項１１】
前記改ページ処理ステップにおいて、前記要素ブロック内のコンテンツが画像データの場合には、前記配置対象の要素ブロックを次のページの先頭に移動させる処理が実行されることを特徴とする請求項１０に記載の画像形成装置の処理方法。
【請求項１２】
前記改ページ処理ステップにおいて、前記要素ブロックに背景の指定がある場合、前記背景全体を次ページの先頭に移動させる処理が実行されることを特徴とする請求項１０に記載の画像形成装置の処理方法。
【請求項１３】
前記改ページ処理ステップにおいて、前記次ページにも前記要素ブロックが収容できない場合は、前記画像データを縮小させる処理が実行されることを特徴とする請求項１０に記載の画像形成装置の処理方法。
【請求項１４】
前記改ページ処理ステップにおいて、前記要素ブロック内のコンテンツがテキストデータの場合には、前記配置対象の要素ブロックを行ごとに分割して改ページ処理する処理が実行されることを特徴とする請求項１０に記載の画像形成装置の処理方法。
【請求項１５】
構造化文書を解析して得られる要素ツリーから、ページ内に要素ブロックを配置する画像形成装置の処理方法をコンピュータに実行させるコンピュータプログラムであって、
前記要素ブロックをページ内に配置処理する配置ステップと、
前記配置ステップにおける前記要素ブロックの配置にともなって、前記要素ブロックを直前要素ブロックとして参照する第１の参照ポインタ、および前記配置された要素ブロックの次に配置処理する対象の新たな要素ブロックを現在要素ブロックとして参照する第２の参照ポインタを更新する更新ステップと、
前記新たな要素ブロックに対応するスタイルの指定を参照するスタイル参照ステップと、
前記スタイル参照ステップにおいて参照されたスタイルの指定に基づいて、前記更新ステップにおいて更新された第１の参照ポインタまたは第２の参照ポインタのうち、どちらを用いるか決定する決定ステップとを前記画像形成装置のコントローラに実行させ、
前記配置ステップにおいて、前記決定ステップで決定された参照ポインタを参照することによって前記要素ブロックを配置する画像形成装置の処理方法をコンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項１６】
構造化文書を解析して得られる要素ツリーから、ページ内に要素ブロックを配置する画像形成装置の処理方法をコンピュータに実行させるコンピュータプログラムであって、
配置対象の要素ブロックがページ内に収容可能な大きさであるか否かを判断するサイズ判断ステップと、
前記サイズ判断ステップにおいて配置対象の要素ブロックが前記ページ内に収容できないと判断された場合、前記要素ブロック内のコンテンツの種類に対応して、改ページ処理を実行する改ページ処理ステップとを前記画像形成装置のコントローラに実行させることを特徴とするコンピュータプログラム。
【請求項１７】
前記請求項１５または１６に記載のコンピュータプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像形成装置、画像形成装置の処理方法、コンピュータプログラム及びコンピュータ読み取り可能な記録媒体に関し、特に、デジタルデータ放送や、インターネットを始めとするデータ通信を用いて配信するコンテンツを印刷するために用いて好適な技術に関するものである。
【背景技術】
【０００２】
従来では、HTMLファイルのコンテンツを出力する際、出力画像の横幅が出力媒体の用紙サイズに収容できない大きさであれば、サイズを縮小したり、あるいは画像方向を変換（回転）したり、または改行禁止指示や横幅指定を無視したりする処理を実行する印刷装置が提案されている（例えば、特許文献１、特許文献２を参照）。
【０００３】
そして、この従来の印刷装置においては、改ページ部分にHTMLファイルに記述された文字が含まれてしまう場合、次ページのレイアウトとして形成される画像情報にその文字を含む行を挿入するようにしている。
【０００４】
さて、HTMLファイルを解析することによって得られた要素ツリーにおいて、印刷処理対象である要素の配置に関連して、先行して配置した要素ブロックと干渉するケースがある。例えば、改ページ処理では、先行する要素を再配置するため再帰的に配置済みブロックを参照する必要が発生する。
【０００５】
【特許文献１】特開平１１−１５７４９号公報
【特許文献２】特開２０００−３３０９０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来このようなケースにおいて、配置済みブロックを参照するためには、要素ツリーを毎回辿る必要があった。すなわち、要素ツリーを一旦上層の要素に戻り、しかる後に下層に下ってリンクを辿って目的の要素ブロックのポインタを求めるという処理を行わなければならなかった。
【０００７】
ところで、デジタルテレビはもとより、最近では携帯電話やデジタルカメラ等の携帯機器においても、マークアップ言語で記述したコンテンツを取り扱うことが多くなってきている。ところが、このような機器では資源が限られているため処理負荷をできるだけ小さくすることが望まれている。例えば、コンテンツを印刷データに変換するレイアウト処理は、要素ブロックを保持するためにメモリ資源を特に多く消費するので、負荷の大きい処理となっていた。
【０００８】
また、ディスプレイなどにHTML文書から得られたコンテンツを表示する際、コンテンツが表示可能領域を越えてしまう場合には、スクロールバーが現れて操作者にコンテンツの表示領域領域内での移動操作をできるようにしている。一方、印刷系では印刷媒体の大きさが限られているので、視覚的に違和感がないようにHTML文書から得られたコンテンツのページ割付方法が求められていた。
【０００９】
本発明は前述の問題点にかんがみ、レイアウトが厳密には規定されない言語で記述されたHTML文書のコンテンツから印刷データを作成するにあたり、印刷装置側の処理負担を軽減できるようにするとともに、印刷データを効率的に処理することができるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明の画像形成装置は、構造化文書を解析して得られる要素ツリーから、ページ内に要素ブロックを配置する画像形成装置において、前記要素ブロックをページ内に配置処理する配置手段と、前記配置手段による前記要素ブロックの配置にともなって、前記要素ブロックを直前要素ブロックとして参照する第１の参照ポインタ、および前記配置された要素ブロックの次に配置処理する対象の新たな要素ブロックを現在要素ブロックとして参照する第２の参照ポインタを更新する更新手段と、前記新たな要素ブロックに対応するスタイルの指定を参照するスタイル参照手段と、前記スタイル参照手段によって参照されたスタイルの指定に基づいて、前記更新手段によって更新された第１の参照ポインタまたは第２の参照ポインタのうち、どちらを用いるか決定する決定手段とを有し、前記配置手段は、前記決定手段によって決定された参照ポインタを参照することによって前記要素ブロックを配置することを特徴とする。
また、本発明の画像形成装置の他の特徴とするところは、構造化文書を解析して得られる要素ツリーから、ページ内に要素ブロックを配置する画像形成装置において、配置対象の要素ブロックがページ内に収容可能な大きさであるか否かを判断するサイズ判断手段と、前記サイズ判断手段により前記配置対象の要素ブロックが前記ページ内に収容できないと判断された場合、前記要素ブロック内のコンテンツの種類に対応して、改ページ処理を実行する改ページ処理手段とを有することを特徴とする。
【００１１】
本発明の画像形成装置の処理方法は、構造化文書を解析して得られる要素ツリーから、ページ内に要素ブロックを配置する画像形成装置の処理方法において、前記要素ブロックをページ内に配置処理する配置ステップと、前記配置ステップにおける前記要素ブロックの配置にともなって、前記要素ブロックを直前要素ブロックとして参照する第１の参照ポインタ、および前記配置された要素ブロックの次に配置処理する対象の新たな要素ブロックを現在要素ブロックとして参照する第２の参照ポインタを更新する更新ステップと、前記新たな要素ブロックに対応するスタイルの指定を参照するスタイル参照ステップと、前記スタイル参照ステップにおいて参照されたスタイルの指定に基づいて、前記更新ステップにおいて更新された第１の参照ポインタまたは第２の参照ポインタのうち、どちらを用いるか決定する決定ステップとを前記画像形成装置のコントローラが実行し、前記配置ステップにおいて、前記決定ステップで決定された参照ポインタを参照することによって前記要素ブロックを配置することを特徴とする。
また、本発明の画像形成装置の処理方法の他の特徴とするところは、構造化文書を解析して得られる要素ツリーから、ページ内に要素ブロックを配置する画像形成装置の処理方法において、配置対象の要素ブロックがページ内に収容可能な大きさであるか否かを判断するサイズ判断ステップと、前記サイズ判断ステップにおいて配置対象の要素ブロックが前記ページ内に収容できないと判断された場合、前記要素ブロック内のコンテンツの種類に対応して、改ページ処理を実行する改ページ処理ステップとを前記画像形成装置のコントローラが実行することを特徴とする。
【００１２】
本発明のコンピュータプログラムは、構造化文書を解析して得られる要素ツリーから、ページ内に要素ブロックを配置する画像形成装置の処理方法をコンピュータに実行させるコンピュータプログラムであって、前記要素ブロックをページ内に配置処理する配置ステップと、前記配置ステップにおける前記要素ブロックの配置にともなって、前記要素ブロックを直前要素ブロックとして参照する第１の参照ポインタ、および前記配置された要素ブロックの次に配置処理する対象の新たな要素ブロックを現在要素ブロックとして参照する第２の参照ポインタを更新する更新ステップと、前記新たな要素ブロックに対応するスタイルの指定を参照するスタイル参照ステップと、前記スタイル参照ステップにおいて参照されたスタイルの指定に基づいて、前記更新ステップにおいて更新された第１の参照ポインタまたは第２の参照ポインタのうち、どちらを用いるか決定する決定ステップとを前記画像形成装置のコントローラに実行させ、前記配置ステップにおいて、前記決定ステップで決定された参照ポインタを参照することによって前記要素ブロックを配置する画像形成装置の処理方法をコンピュータに実行させることを特徴とする。
また、本発明のコンピュータプログラムの他の特徴とするところは、構造化文書を解析して得られる要素ツリーから、ページ内に要素ブロックを配置する画像形成装置の処理方法をコンピュータに実行させることを特徴とするコンピュータプログラムであって、配置対象の要素ブロックがページ内に収容可能な大きさであるか否かを判断するサイズ判断ステップと、前記サイズ判断ステップにおいて配置対象の要素ブロックが前記ページ内に収容できないと判断された場合、前記要素ブロック内のコンテンツの種類に対応して、改ページ処理を実行する改ページ処理ステップとを前記画像形成装置のコントローラに実行させることを特徴とする。
【００１３】
本発明の記録媒体は、前記に記載のコンピュータプログラムを記録したことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、レイアウトが厳密には規定されない言語で記述したコンテンツから印刷するための画像データを形成するにあたり、画像形成装置側の処理負担を軽減できるようにするとともに、印刷データを効率的かつ的確に処理することができる。
【発明を実施するための最良の形態】
【００１５】
（第１の実施の形態）
以下、添付の図面に沿って本発明の実施の形態を説明する。
以下、図面を参照しながら本実施の形態の画像形成装置の一例としての印刷装置を説明する。なお、本実施の形態は、W3C(World Wide Web Consortium)が定めているXHTML1.1TM(extensible Hyper Text Markup Language)及びCSS2.0TM(Cascading Style Sheet 2.0)で定める仕様書に基づいて記載している。
【００１６】
また、本実施の形態で言うところの「ノード・リンク構造」とは、ノードとリンクに区別できる項目を含み、各リンクが２つ以上のノードに関係している構造を言う。さらに、ノード・リンク関係とは、ノードのパス及び要素間のリンクに基づく要素間の関係である。
【００１７】
「システムの概要」
図１は、本実施の形態の印刷システム全体の概要構成を示す図である。
図１に示したように、画像形成装置である本実施の形態の印刷装置３０は、コントローラ３１、プリントエンジン３２を有する。コントローラ３１は、ＰＣ（パーソナルコンピュータ）１１、ＰＤＡ（personal digital assistant：個人向け携帯情報機器の総称）１２、デジタル放送機器１３などのホスト（コンピュータ）１０より、有線または無線の接続形態で入力されるコンテンツ（HTMLなどの構造化文書）２０を解釈し、印刷データ３３に変換する。プリントエンジン３２は、印刷データ３３を紙などの記録メディア４０上に形成するために、矢印３４で示す印刷処理を行う。なお、コントローラの３１の実態は、ＣＰＵ、記憶装置及びインターフェースを含むシングルボードコンピュータによって構成され、記憶装置に記憶されたプログラムに基づいてＣＰＵが印刷装置を制御している。
【００１８】
「要素ツリーの構築」
図２は、構造化文書をコントローラ３１により字句解析、構文解析により得た全ての要素ブロックを含む全要素ツリー２０１（多方向分岐リスト）を示したものである。この要素ツリーの実体は、ノード・リンクのグラフである。全要素ツリー２０１の各ノードは、要素ブロックとして、３つのデータ構造体から構成される。すなわち、核となる要素の実体データ（コンテンツデータ）である「要素構造体２０２」、スタイルシートを参照して、要素ブロック内のスタイル表記言語で記述された字句を解析して得られたスタイルに関する「スタイル構造体２０３」、及び全要素ツリー２０１のルート要素から順にツリーを辿り、要素ブロックに対応するオブジェクトの配置位置を計算することによって得られるレイアウト情報を格納する「レイアウト構造体２０４」である。
【００１９】
「レイアウトの手順」
要素ブロックを記録メディア（印刷用紙）４０に効率的に配置する手順を以下に説明する。
まず、コントローラ３１は、要素ツリー上のルート（構造化文書内に記述された<html>の記述）から順に辿り、要素ブロック毎に構成された「スタイル構造体２０３」に基づいて、BOXモデル、文字、画像などののページ内レイアウト処理（対象要素ブロックの配置処理）４１を行う。
【００２０】
要素ブロックをレイアウトした結果は、配置・視覚情報を保持する「レイアウト構造体２０４」へ格納される。このとき、対象要素のブロックに含まれる子要素ブロックの配置可能範囲４２も「レイアウト構造体２０４」へ格納される。配置・視覚情報が格納された「レイアウト構造体２０４」は子要素ブロックに引き渡される。すなわち、コントローラ３１は、親要素ブロックで指定された子要素配置可能範囲４２内に子要素ブロックのレイアウトを行う。以下同様に、「レイアウト構造体２０４」へ結果が格納され、さらに孫要素への引き渡し、処理の遷移が進行する。
【００２１】
「ページ情報の管理」
図３は、ページ情報リストの構築を説明する図である。
まず、スタイルシート３０１に記述された、改ページに関する処理を指定するための規則"@page"で表現したページ情報に基づいて、複数の「ページ情報構造体」３０２のリストが作成される。「ページ情報構造体」は、コンテンツを印刷出力する際のページの設定が記述されたものである。
【００２２】
「ページ情報構造体」は、具体的には、@page: xxxx[]のフォーマットによって記述される。"xxxx"には、先頭ページを示す"first"、 見開き左側ページを示す"left"、 見開き右側ページを示す"right"、名前付きページのページ識別子を示す"name1"、 "name2"などのページ識別子が記述される。また、[]内には、"xxxx"において指定されたページのsize（用紙サイズと向き）、margin（余白）が記述される。なお、"@page []"のように識別子"xxxx"の指定がない場合は、全ページ共通の「ページ情報構造体」として作成する。
【００２３】
コントローラ３１は、「ページ情報構造体」の作成の際、スタイル初期値及び@media printのデフォルトスタイルシートにおいて指定されたページスタイルを「ページ情報構造体」３０２に展開する。図３には、一例として、all(1)、 first(2)、 left(3)、 right(4)、 name(5〜) からなる「ページ情報構造体」３０２リストがRAMに格納されることが示されている。
【００２４】
なお、name="all"の「ページ情報構造体」３０２は、@pageにより識別子指定が無いものであり、全ページ共通の設定が記述されているページ構造体であり、リストの１番目に登録される。
【００２５】
name=firstの「ページ情報構造体」３０２は、@page :firstによる先頭ページの設定が記述されているものであり、２番目に登録される。leftは、@page:leftで見開き左側ページの設定が記述されているものであり、３番目に登録される。rightは@page:rightで見開き右側ページの設定が記述されているものであり、４番目に登録される。そして、５番目以降は@page:xxxxで名前付きページとして設定されたページ構造体が個別に登録される。
【００２６】
コントローラ３１は、ページレイアウトの処理において、現在処理しているページに対応したページ情報構造体を参照し、ページ構造体の実体を作成する。例えば、１ページ目は、all→first→leftの順に参照し、名前付きページ(name1)の２ページ目では、all→right→name1の順に参照し、「ページ構造体」を実体化する。そして、実体化した「ページ構造体」にはページ内に配置した要素、すなわち要素ブロックを多分岐リストとして登録する「ページ内要素ツリー」page-treeが含まれる。
【００２７】
「要素をページに配分」
図４、図５は、ページ内レイアウトにおけるページ構造体を用いた処理を説明する図である。図４では、１ページ目の処理を示している。図５では、２ページ目の処理を示している。
【００２８】
前述の通り、コントローラ３１は、現在のページに該当するページ情報として「ページ情報構造体」のリストの中から選択・参照し、現ページ用に「ページ構造体」の実体を作成する。
【００２９】
「ページ構造体」の実体は、@pageで記述されたsize (width、 height、 portrait/landscape)，margin 、レクタングル情報を含む要素群を多分岐リストとして管理するためのpage-tree「ページ内要素ツリー」である。
【００３０】
以下、「ページ内要素ツリー」への登録方法を説明する。
まず、コントローラ３１は、最初のページの「ページ構造体」の実体を作成する。そして、レイアウト処理において、<html>をルートとする「要素ツリー」を順に辿り、「要素構造体２０２＋スタイル構造体２０３＋レイアウト構造体２０４」の情報に基づき、<body>以下のタグをページ内に順に配置する。配置確定情報はレイアウト構造体２０４に格納される。
【００３１】
ページ内に配置した要素ブロックは「ページ構造体」の「ページ内要素ツリー」へ登録される。このとき配置された要素ブロックがページ内に収まりきれなかった場合やpage-breakスタイルによって改ページの指示があれば、改ページ処理が行われる。
【００３２】
コントローラ３１は、改ページ処理において、次ページ用の「ページ内要素ツリー」を含む「ページ構造体」の実体を新たに作成する。そして、次ページの「ページ構造体」の領域に配置する為の再計算を行う。具体的には、現在の「ページ内要素ツリー」で配置が完結しなかった要素ブロックを次ページの「ページ内要素ツリー」にコピーし、改ページした用紙縦幅の分だけ配置情報を前方へ移動させる。
【００３３】
すなわち、本実施の形態では、要素ブロックの実体（要素構造体２０２）だけではなく、スタイルに関する情報（スタイル構造体２０３）も移動することになる。次ページ以降のレイアウト処理では、出力未完部分の要素をコピーして次ページの「ページ内要素ツリー」へ登録するとともに現ページに配置されなかった要素ブロックを次ページに配置する処理が行われる。
【００３４】
ところで、全ての要素ブロックを包含するHTML文書内の<body>の記述は、最終ページの出力まで出現しない。<body>における全ての子要素の出力が終了した時点で最終ページが完了しレイアウト処理が終了することになる。
【００３５】
「スタイルの指定」
以下、図６、図７を用いてスタイル指定による改ページ処理について説明する。
図６は、従来から行われているページ区切り（page-break）の処理について説明する図である。図６では、ターゲットとなる要素ブロックを配置する過程で、改ページ処理によって要素ブロックのはみ出しが発生した際の処理を説明している。図６では、要素ブロックが２分割され、要素ブロックの前半を前ページに配置して、要素ブロックの後半を前ページに続く後ページに配置している。
【００３６】
図７−ａに示すpage-break-before:alwaysのスタイルの指定は、指定されたタグ内のコンテンツのレイアウト処理を始める前に強制的に改ページ処理を行うための指定である。
図７−ｂに示すpage-break-before: leftまたはpage-break-before: rightのスタイルの指定は、指定されたタグのサイドのページになるまで強制改ページをさらに行う指定である。
【００３７】
図７−ｃに示すpage-break-before:avoidのスタイルの指定は、指定されたタグの前で改ページが行われるが、この場合、前ページの「ページ要素内ツリー」から「直前ブロック要素」以下のサブツリーを現在の「ページ要素内ツリー」へ移動してからレイアウト処理を行う指定である。
【００３８】
図７−ｄに示すpage-break-inside:avoidのスタイルの指定は、指定タグがページ内に収まりきらなかった場合は「現在ブロック要素」以下のツリーを次ページの「ページ内要素ツリー」へ移動するスタイルの指定である。
【００３９】
図７−ｅに示すpage-break-after:always left、rightのスタイルの指定は、指定されたタグのレイアウト処理の最後で強制的に改ページ処理を行うスタイルの指定である。page-break-after:leftまたはpage-break-after:rightの指定は、さらに指定サイドのページになるまで強制改ページ処理を行う指定である。
【００４０】
図７−ｆに示すpage-break-after:avoidのスタイルの指定は、次の要素に対してafter-avoid処理中のフラグを引き渡す。after-avoid処理中とされた次の要素ではpage-break-before: avoidと指定されている場合と同じ処理を行う。なお、page-break-before/inside/afterで前記に該当しない場合は改ページ処理を行わない。
【００４１】
「原点制御」
図８は、改ページ処理における原点位置について説明する図である。
ページ毎の配置開始位置である原点は、前述した「ページ構造体」で示される用紙サイズ、用紙の向き、マージンの値によって決定する「Page BOX」の左上に設定される。「Page BOX」とは、要素の実体を配置するためのエリアを示し、ページ毎に異なる設定が可能である。例えば、スタイルの指定として、position:absolute、すなわち絶対位置では、PageBOXの原点に<body>以下のタグを配置していく。また、スタイルの指定として、position:staticすなわち相対位置では、先頭ページの開始位置を原点として、改ページ後は前ページからの続きの位置に開始位置を設定しタグを継続して配置する。
【００４２】
「要素のハンドル」
以下は、改ページ処理におけるブロック要素の参照についての説明である。
図９は全要素ツリーを表す図であり、図１０は全要素ツリーから順次コピーして成るページ内要素ツリー表す図である。
【００４３】
レイアウト処理では、「ページ内要素ツリー」を参照し、要素ブロックの出現ごとに、直前に配置した要素ブロックを「直前要素ブロック」、現在処理中の要素ブロックを「現在要素ブロック」として識別する参照ポインタをＲＡＭに記憶更新する。すなわち、コントローラ３１は、要素ブロックが出現する毎に参照ポインタが更新され、現在処理中の要素ブロックに対する直前及び現在の要素ブロックを管理する。
【００４４】
図２２は、要素ブロックを配置する際にコントローラ３１によって実行される改ページ処理の手順を説明するフローチャートである。
まず、ステップＳ１０において、現在のページに要素ブロックの配置を開始する。そして、ステップＳ１１において、直前に配置した要素ブロックを「直前要素ブロック」、その次に配置処理する対象の要素ブロックを「現在要素ブロック」として識別する参照ポインタをＲＡＭに記憶・更新する。
【００４５】
ステップＳ１２において、現在配置処理する対象の要素ブロックが現在のページ内に収まるか否か判断する。現在のページ内に収まると判断した場合、ステップＳ１０に戻り、次の要素ブロックの配置を行う。
【００４６】
一方、現在のページ内に要素ブロックが収まらないと判断した場合、ステップＳ１３に進む。ステップＳ１３において、要素ブロックのスタイル構造体に「page-break-before:avoid」のスタイルの指定があるか否か判断する。
【００４７】
この判断の結果、「page-break-before:avoid」のスタイルの指定があると判断された場合、ステップＳ１４に進み、「直前要素ブロック」の参照ポインタを参照し、図７-ｃに示したように、「直前要素ブロック」以下のサブツリーを現在の「ページ要素内ツリー」へ移動してからレイアウト処理を行う。
【００４８】
一方、ステップＳ１３において、「page-break-before:avoid」のスタイルの指定がないと判断された場合、ステップＳ1５に進み、「現在要素ブロック」の参照ポインタを参照し、その現在ブロック要素のレイアウト指定に対応する改ページ処理が行われる。
ステップＳ１６では、全ての要素ブロックの配置が終了したか否かを判断し、全ての処理が終了するまで前述の処理を繰り返し行う。また、全ての要素ブロックの配置が終了したと判断したら処理を終了する。
【００４９】
なお、図２２のフローチャートでは、「直前要素ブロック」を参照する一例として「page-break-before:avoid」のスタイルの指定を示したが、その他「直前要素ブロック」を用いるスタイルの指定にもフローチャートを適用することができる。
【００５０】
本実施の形態では、以下に示すとおり、要素ブロックの実体として配置されるデータの種類（テキストデータ、画像データ）に対応して改ページ処理が行われる。コントローラ３１内のＣＰＵは、実体（コンテンツ）の種類に関する情報を構造化文書内のタグを参照することによって得ることができる。そして、コントローラ３１内のＣＰＵは、実体（コンテンツ）の種類に関する情報を要素構造体２０２に格納し、以下の要素ブロックの配置方法のいずれかを用いるかを格納された実体（コンテンツ）の種類に関する情報を参照することにより決定する。
【００５１】
「テキストの配置」
図２０は、テキストデータの要素ブロックがページ領域の下端を超えた場合、ボックス内のテキストが配置される行を区切りの単位（行BOX）として分割配置する様子を示したものである。
【００５２】
図１１は、テキストデータの要素ブロックのページ端末配置をさらに詳細に説明する図である。
要素ブロック内のテキストデータは、行BOX毎に分割される。分割された行BOXには、配置完了／未完了の識別マークがそれぞれ付加される。未完了の行BOXを含むテキストデータの要素ブロックは、現在のページ内要素ツリーに残されるとともに、次のページ内要素ツリーへコピーされる。コントローラ３１は、次ページのレイアウト処理において、配置完了／未完了の識別マークを参照することにより、前ページにおいて配置完了した行BOXを使用せずに未完了の行BOXから配置処理を行う。すなわち、未完了の行BOXの開始位置をPageBOXの先頭に設定し、配置を継続する。
【００５３】
図２３は、要素ブロックとしてテキストデータが配置される際にコントローラ３１によって実行される改ページ処理の手順を説明するフローチャートである。
処理が開始されると、ステップＳ２１において、オブジェクトがテキストデータである要素ブロック内を行ごとに分割する。分割されたブロックをそれぞれ行ＢＯＸと呼ぶ。そして、ステップＳ２２に進み、行ＢＯＸの配置の際、ページ内に行ＢＯＸが収まるか否か判断する。
【００５４】
この判断の結果、ページ内に行ＢＯＸが収まると判断した場合、ステップＳ２３に進み、その対象の行ＢＯＸの配置処理を行うとともに、配置完了の識別子を付加する。一方、ステップＳ２２の判断の結果、ページ内に行ＢＯＸが収まらないと判断された場合、ステップＳ２４に進み、次ページのページ内要素ツリーにオブジェクトがテキストデータである要素ブロックを複写する。ステップＳ２５では、全ての要素ブロックの配置が終了したか否かを判断し、全ての処理が終了するまで前述の処理を繰り返し行う。
【００５５】
「画像の配置」
図１２は、従来行われている画像の要素ブロックの改ページ処理の例を示す図である。
従来の処理では、要素ブロック内の画像がページ領域に収まらない場合は、親の要素ブロックに指定されたスタイル、例えば、Boxモデルの背景等は考慮せずに画像のみ改ページ処理が行われていた。
【００５６】
ここで、画像は現在のページには配置せず、配置未完了の識別マークを付して次のページ処理に委ねる。次ページでのレイアウトでは画像の開始位置をPageBOX先頭に設定してから、配置処理を継続する。
【００５７】
図１３は、画像ブロックのページ端末置処理の実施の形態を説明する図である。図１３においては、画像とそれに付随するスタイルを改ページにおいてどのように扱うかについて提案している。すなわち、画像に背景指定があるとき、画像があるページの余白域に収まらず、次のページに送られる場合は、背景も同時に送る処理をする、ページ割付方法を提案している。これは、要素ブロック内に背景情報を有するレイアウト構造体を含めたことによって達成される。
【００５８】
「大きな画像の配置」
図１４は、改ページ処理を行っても、なお画像がページ領域内に収まらない場合の処理について説明している。即ち、アスペクト比を保持しつつ横方向が収容できる倍率に縮小してもなお、縦方向がページに収まらない場合は、縦方向に分割する。例えば「page-brake-inside:split」なるレイアウト処理のスタイルを新規提案している。
【００５９】
具体的には、コントローラ３１は、「page-brake-inside:split」の指定に対して、対象の画像が現ページ領域に収まらないと判断した場合、まず改ページ処理を行う。次に、画像の横方向がページ領域に収まるまでアスペクト比を保持しつつ画像を縮小する処理を行う。それでもなお画像の縦方向がページからはみだすと判断した場合は、画像を複数に分割して、それぞれを各ページに順次配置する処理を行う。
【００６０】
図１５は、サイズが大きい画像に対して、従来から用いられているスタイル「page-brake-inside:avoid」が指定されたときの本実施の形態のレイアウト処理を示している。具体的には、コントローラ３１は、「page-brake-inside:avoid」の指定に対して、対象の画像が現ページ領域に収まらないと判断した場合、まず改ページ処理を行う。そして、改ページ処理を行ってもなお画像が新しいページ領域内に収まらないと判断した場合に、画像の分割は行わず画像のアスペクト比を保持した状態で縮小し、画像がページ内に収まるようにする処理が実行される。
【００６１】
図２１は、改ページしてもなお画像がページ領域内に収まらない場合の別の処理を説明している。図２１で示す処理では、画像の縮小や分割を行わず、ページ内に収まった範囲を印刷処理する形態である。
【００６２】
図２１では、「page-brake-inside:clip」なるスタイルを新規提案している。具体的には、コントローラ３１は、「page-brake-inside:clip」の指定に対して、対象の画像が現ページ領域に収まらないと判断した場合、まず改ページ処理を行う。次に、改ページ処理された画像のうち、ページ内の画像領域に対して印刷処理が行われ、ページからはみ出た領域は印刷しない処理が行われる。
【００６３】
すなわち、図２１に示す処理では、画像の縮小も分割もせず、配置する領域のサイズに合わせて画像をクリッピングする処理が行われる。このクリッピング処理は、例えば、画像の左上を有効領域の原点にあわせて、はみ出た部分を除くようにクリップする。
【００６４】
図１６は、コントローラ３１によって実行される要素ブロックが画像データである場合の改ページ処理のフローチャートである。
最初のステップＳ１では、配置する要素ブロックがページ内の未配置領域に収まる大きさか否かを判定する。この判定の結果、配置可能であると判定した場合は配置する。
【００６５】
ステップＳ１において要素ブロックが配置することができないと判断された場合、ステップＳ２に進み、改ページにより、次ページに新たな１ページ領域を確保する処理を行う。
次に、ステップＳ３では、配置指定を調べてそれぞれに対応するルーチン、"avoid"，"clip"，"split"に遷移する。
【００６６】
図１７は、コントローラ３１によって実行される画像データである要素ブロックの改ページ処理のフローチャートで、"avoid"が指定された場合実行されるものである。この場合、ステップＳ４において、画像ブロックが１ページに収まるように縮小してから配置する処理が行われる。
【００６７】
図１８は、コントローラ３１によって実行される画像データである要素ブロックの改ページ処理のフローチャートで、"clip"が指定された場合実行されるものである。この場合、ステップＳ５において、画像ブロックをそのまま配置する。ただし、はみ出た領域は印刷しない処理が行われる。
【００６８】
図１９は、コントローラ３１によって実行される画像ブロックの改ページ処理のフローチャートで、"split"が指定された場合に実行されるものである。
まず、ステップＳ６では、ページ領域の横方向に対して画像が収まるか否か調べる。この結果、ページ領域に収容可能ならばステップＳ８に進む。また、ステップＳ６の判定の結果、画像をページ領域内に収容できないと判定した場合にはステップＳ７に進む。
【００６９】
ステップＳ７では、横方向が収容可能になる割合で画像を縮小する処理を実行する。
次に、ステップＳ８では、画像がページ領域の縦方向に対して収容可能な大きさであるか否かを調べる。この結果、収容可能ならそのまま配置する。また、収容できない場合にはステップＳ９に進み、画像を複数に分割し、さらに改ページをしながら配置する。
【００７０】
本実施の形態では、前述した実施形態の機能を実現するソフトウェアのプログラムコードを、インターネットなどのネットワークを介して画像形成装置に供給し、画像形成装置のコントローラ３１（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによって達成できる。
【００７１】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態のコントローラ３１の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００７２】
プログラムコードを供給するための記憶媒体としては、例えば、ハードディスク、ＲＯＭなどを用いることができる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００７３】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示にもとづき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される。
【００７４】
本実施の形態を前記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードを格納することになるが、簡単に説明すると、本実施の形態の画像形成装置に不可欠なモジュールを、記憶媒体に格納することになる。
【００７５】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００７６】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００７７】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ）などがある。
【００７８】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、前記ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【００７９】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００８０】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００８１】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施の形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施の形態の機能が実現され得る。
【００８２】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施の形態の機能が実現される。
【図面の簡単な説明】
【００８３】
【図１】本実施の形態の印刷システム全体の概要構成を示す図である。
【図２】要素ツリーと構造体を示す図である。
【図３】ページ情報リストの構築を説明する図である。
【図４】ページ内レイアウトにおけるページ構造体の操作を説明する図であり、１頁目を説明する図である。
【図５】ページ内レイアウトにおけるページ構造体の操作を説明する図であり、２頁目を説明する図である。
【図６】page-breakの一般形を説明する図である。
【図７−ａ】page-break-before: always;の例を示す図である。
【図７−ｂ】page-break-before: left、right;の例を示す図である。
【図７−ｃ】page-break-before: avoid;の例を示す図である。
【図７−ｄ】page-break-inside: avoid;の例を示す図である。
【図７−ｅ】page-break-after: always、left、right;の例を示す図である。
【図７−ｆ】page-break-after: avoid;の例を示す図である。
【図８】改ページ処理における原点位置について説明する図である。
【図９】全要素ツリーを説明する図である。
【図１０】ページ内要素ツリーを説明する図である。
【図１１】テキストデータの要素ブロックの改ページ処理を説明する図である。
【図１２】従来の画像データの要素ブロックの改ページ処理を説明する図である。
【図１３】実施の形態を示し、画像データの要素ブロックの改ページ処理を説明する図である。
【図１４】実施の形態を示し、分割による画像データの要素ブロックの改ページ処理を説明する図である。
【図１５】実施の形態を示し、縮小による画像データの要素ブロックの改ページ処理を説明する図である。
【図１６】画像ブロックの改ページ処理における配置手順を説明するフローチャートである。
【図１７】画像ブロックの改ページ処理(avoid)における配置手順を説明するフローチャートである。
【図１８】画像ブロックの改ページ処理(clip) における配置手順を説明するフローチャートである。
【図１９】画像ブロックの改ページ処理(split) における配置手順を説明するフローチャートである。
【図２０】テキストデータの要素ブロックの改ページ処理における配置を説明するための図である。
【図２１】画像ブロックのクリップによる改ページ処理における配置手順を説明するための図である。
【図２２】要素ブロックの改ページ処理における配置手順を説明するフローチャートである。
【図２３】テキストデータの要素ブロックの改ページ処理における配置手順を説明するフローチャートである。
【符号の説明】
【００８４】
１０  ホスト装置
１１  ＰＣ（パーソナルコンピュータ）
１２  ＰＤＡ（personal digital assistant：個人向け携帯情報機器の総称）
１３  デジタル放送機器
２０  コンテンツ
３０  印刷装置
３１  コントローラ
３２  プリントエンジン
３３  印刷データ
３４  印刷処理の矢印
４０  メディア
４１  レイアウト（自要素配置）
４２  子要素配置可能範囲
２０１  要素ツリー
２０２  要素構造体
２０３  スタイル構造体
２０４  レイアウト構造体
【図１】
2006015734.tif 000003
【図２】
2006015734.tif 000004
【図３】
2006015734.tif 000005
【図４】
2006015734.tif 000006
【図５】
2006015734.tif 000007
【図６】
2006015734.tif 000008
【図７−ａ】
2006015734.tif 000009
【図７−ｂ】
2006015734.tif 000010
【図７−ｃ】
2006015734.tif 000011
【図７−ｄ】
2006015734.tif 000012
【図７−ｅ】
2006015734.tif 000013
【図７−ｆ】
2006015734.tif 000014
【図８】
2006015734.tif 000015
【図９】
2006015734.tif 000016
【図１０】
2006015734.tif 000017
【図１１】
2006015734.tif 000018
【図１２】
2006015734.tif 000019
【図１３】
2006015734.tif 000020
【図１４】
2006015734.tif 000021
【図１５】
2006015734.tif 000022
【図１６】
2006015734.tif 000023
【図１７】
2006015734.tif 000024
【図１８】
2006015734.tif 000025
【図１９】
2006015734.tif 000026
【図２０】
2006015734.tif 000027
【図２１】
2006015734.tif 000028
【図２２】
2006015734.tif 000029
【図２３】
2006015734.tif 000030