(57)【要約】【課題】構造化タグ言語で記述された文書に対して処理の速い処理装置等を提供するとともに、メモリ容量を低減した処理装置等を提供すること。【解決手段】構造化タグ言語により記述された文書を解析し、前記解析結果に基づいて前記文書内の各要素をレイアウトして処理を行う処理装置において、前記要素をレイアウトするためのレイアウト領域を、所定幅を有する複数の帯状領域に分割し、前記帯状領域に対し所定方向から順に前記要素を配置する配置手段と、次の要素を配置したときに前記帯状領域から前記次の要素がはみ出るか否かを判断する判断手段と、を備え、前記次の要素が前記帯状領域からはみ出ると判断したとき、前記配置手段は前記次の要素を次の前記帯状領域に配置して一の帯状領域ごとにレイアウトを確定する、ことを特徴としている。【選択図】図３
2006091956.tif 000002
【特許請求の範囲】
【請求項１】
構造化タグ言語により記述された文書を解析し、前記解析結果に基づいて前記文書内の各要素をレイアウトして処理を行う処理装置において、
前記要素をレイアウトするためのレイアウト領域を、所定幅を有する複数の帯状領域に分割し、前記帯状領域に対し所定方向から順に前記要素を配置する配置手段と、
次の要素を配置したときに前記帯状領域から前記次の要素がはみ出るか否かを判断する判断手段と、
を備え、前記次の要素が前記帯状領域からはみ出ると判断したとき、前記配置手段は前記次の要素を次の前記帯状領域に配置して一の帯状領域ごとにレイアウトを確定する、ことを特徴とする処理装置。
【請求項２】
請求項１記載の処理装置において、
前記配置手段は、前記要素を一つの前記帯状領域に配置し当該要素が前記帯状領域からはみ出たとき、はみ出た前記要素を次の前記帯状領域に配置する、ことを特徴とする処理装置。
【請求項３】
請求項１又は２記載の処理装置において、
前記配置手段が前記要素のうちインライン要素を前記帯状領域に配置したときに前記一つの帯状領域のレイアウトが確定する、ことを特徴とする処理装置。
【請求項４】
構造化タグ言語により記述された文書を解析し、前記解析結果に基づいて前記文書内の各要素をレイアウトして処理を行う処理装置における処理方法において、
前記要素をレイアウトするためのレイアウト領域を、所定幅を有する複数の帯状領域に分割し、配置手段によって前記帯状領域に対し所定方向から順に前記要素を配置させる工程と、
次の要素を配置したときに前記帯状領域から前記次の要素がはみ出るか否かを判断する工程と、
を備え、前記次の要素が前記帯状領域からはみ出ると判断したとき、前記次の要素を次の前記帯状領域に前記配置手段によって配置させ、一の帯状領域ごとにレイアウトを確定する、ことを特徴とする処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＨＴＭＬ等の構造化タグ言語により記述された文書を処理する処理装置や処理方法に関する。詳しくは、所定幅を有する帯状領域に要素を配置させて一の帯状領域ごとにレイアウトを確定するようにした処理装置等に関する。
【背景技術】
【０００２】
従来からインターネットのホームページ情報をディスプレイ画面上に表示させ、その情報を保存したい場合は、プリンタ等を使用して用紙にその情報を印刷することが行われている。ホームページ情報は、一般的にＸＭＬ（eXtensible Markup Language）やＸＨＴＭＬ（eXtensible Hyper Text Markup Language）などの構造化タグ言語により記述された文書で構成される。通常、このような文書に基づいて画像を生成する（表示や印刷など）には、かかる言語で記述された文書に対し解析処理が行われた後、各要素の１頁内での位置や高さを決定するレイアウト処理が行われる。その後、表示や印刷のための種々の処理を行うことで画像が生成される。
【０００３】
一方、このようなレイアウト処理に関し、画面上に表示されたホームページ情報に対して表示されたそのままの内容を印刷するのではなく、予め用意されたテンプレートにホームページ情報の各要素等を配置させ、新聞風等の自由度の高いレイアウトにより印刷を行うものが知られている（以下の特許文献１）。
【特許文献１】特開平１１−９６１４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１のように自由度の高いレイアウトをするにしても、従来では１頁分のすべての要素に対してレイアウトを決定した後で、その後の印刷や表示のための処理が行われていた。そのため、その後の処理に時間がかかるという問題があった。かかる処理の遅延は構造化タグ言語で記述された文書全体に対する処理の遅延を招いていた。
【０００５】
更に、従来のレイアウト処理では１頁分すべての要素に対してレイアウトを決定するため、レイアウト処理に際し１頁分の要素や位置等を記憶するためのメモリが必要で、例えば部品コストの増大を招いていた。
【０００６】
そこで、本発明はかかる問題点に鑑みてなされたものでその目的は、構造化タグ言語で記述された文書に対して処理の速い処理装置等を提供するとともに、メモリ容量を低減した処理装置等を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明は、構造化タグ言語により記述された文書を解析し、解析結果に基づいて文書内の各要素をレイアウトして処理を行う処理装置において、要素をレイアウトするためのレイアウト領域を、所定幅を有する複数の帯状領域に分割し、帯状領域に対し所定方向から順に要素を配置する配置手段と、次の要素を配置したときに帯状領域から次の要素がはみ出るか否かを判断する判断手段と、を備え、次の要素が帯状領域からはみ出ると判断したとき、配置手段は次の要素を次の帯状領域に配置して一の帯状領域ごとにレイアウトを確定する、ことを特徴としている。これにより、例えば、帯状領域ごとにレイアウトが確定してその後の処理を行うことができるので、１頁分すべてのレイアウトを確定してその後の処理を行う場合と比較して処理を速くすることができる。また、一の帯状領域の情報を確保するだけのメモリの容量があればレイアウト処理を行うことができるので、メモリ容量の低減を図ることができる。
【０００８】
また、本発明は上記処理装置において、上記配置手段は、要素を一つの帯状領域に配置し当該要素が帯状領域からはみ出たとき、はみ出た要素を次の帯状領域に配置する、ことを特徴としている。これにより、例えば、テキストの文字列が多く一の帯状領域からはみ出ても次の行の帯状領域に残りの文字列を配置させることができるので、要素をすべて帯状領域にレイアウトすることが可能となる。
【０００９】
更に、本発明は上記処理装置において、配置手段が要素のうちインライン要素を帯状領域に配置したときに一つの帯状領域のレイアウトが確定する、ことを特徴としている。これにより、例えば、テキストやイメージなどのインライン要素を帯状領域に配置することでレイアウトが行われ、インライン要素が帯状領域からはみ出るとその帯状領域のレイアウトが確定することになる。
【００１０】
また、上記目的を達成するために本発明は、構造化タグ言語により記述された文書を解析し、解析結果に基づいて文書内の各要素をレイアウトして処理を行う処理装置における処理方法において、要素をレイアウトするためのレイアウト領域を、所定幅を有する複数の帯状領域に分割し、配置手段によって帯状領域に対し所定方向から順に要素を配置させる工程と、次の要素を配置したときに帯状領域から次の要素がはみ出るか否かを判断する工程と、を備え、次の要素が帯状領域からはみ出ると判断したとき、次の要素を次の帯状領域に配置手段によって配置させ、一の帯状領域ごとにレイアウトを確定する、ことを特徴としている。これにより、例えば、帯状領域ごとにレイアウトが確定してその後の処理を行うことができるので、１頁分すべてのレイアウトを確定してその後の処理を行う場合と比較して処理を速くすることができる。また、一の帯状領域の情報を確保するだけのメモリの容量があればレイアウト処理を行うことができるので、少ないメモリ容量で処理を行うことができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明を実施するための最良の形態について説明する。図１は、本発明が適用される処理システム全体の構成を示す図である。本システムは、全体として生成装置１０と、処理装置２０とから構成される。
【００１２】
生成装置１０は、ＸＭＬやＸＨＴＭＬなどの構造化タグ言語により記述された文書（以下、「文書」）を生成するための装置で、例えば、パーソナルコンピュータやデジタルカメラ、携帯電話等である。
【００１３】
処理装置２０は、生成装置１０からの文書に対して、解析、レイアウト、印刷等を行うための装置であり、例えばプリンタである。本処理装置２０は、図１に示すように、インターフェース（Ｉ／Ｆ）２１と、文書解析部２２と、配置手段及び判断手段としてのレイアウタ２３と、メモリ２４と、レンダリング部２５と、画像処理部２６、及び印刷実行部２７から構成される。
【００１４】
Ｉ／Ｆ２１は、生成装置１０から所定の転送フォーマットで文書が入力され、処理装置２０内で処理できるデータに変換する。文書解析部２２は、Ｉ／Ｆ２１からの文書が入力されこの文書に対してＤＯＭ（Document Object Model）ツリーと呼ばれるツリーを生成することで文書解析を行う。解析後の各要素はメモリ２４に記憶される。レイアウタ２３は、文書解析部２２から解析後の各要素が入力され、その要素に対して、例えば１頁内での位置座標等を決定する。
【００１５】
レンダリング部２５はレイアウト後の要素に対して色付け等することでレンダリングを行う。画像処理部２６は、レンダリング後の画像に対して色変換処理や２値化処理等の画像処理を行い、印刷データを生成する。印刷実行部２７は、画像処理部２６からの印刷データに基づいて印刷エンジン等により実際に記録用紙に印字を行う。
【００１６】
このように構成された処理装置２０における本発明の特徴部分はレイアウタ２３にある。即ち、レイアウタ２３は文書内の要素をレイアウトするためのレイアウト領域を所定幅有する帯状領域に分割し、その帯状領域に対して所定方向から順に要素をレイアウトする。そして、レイアウタ２３は次の要素を配置したときに帯状領域からその要素がはみ出るか否か判断する。はみ出ると判断したとき、その帯状領域のレイアウトが確定する。はみ出た次の要素は、次の行の帯状領域にレイアウトする。
【００１７】
ここで、レイアウトの確定とは、レイアウタ２３からの出力単位が決定する、ということである。このレイアウトの確定により、帯状領域に含まれる要素や位置座標等がレンダリング部２５等に出力されその後の処理が実行される。１頁分の要素のレイアウトを決定してその後の処理を行う場合と比較して、帯状領域という行単位でレイアウトを確定しその後の処理を行うようにしたことで処理を速くすることができる。また、一の帯状領域分のメモリ容量があればレイアウト処理が可能となるため、１頁分のメモリ容量は必要でなくなり、メモリ容量の低減を図ることも可能である。
【００１８】
このようなレイアウト処理を含む、処理装置２０全体の処理について図２等を参照して説明する。
【００１９】
まず、本処理が開始されると（Ｓ１０）、Ｉ／Ｆ２１に文書が入力される（Ｓ１１）。例えば図５（Ａ）に示すようなＸＨＴＭＬ文書が入力される。この文書内で＃１等は文字列や数字列で構成されたテキストを示す。そして、文書解析部２２は入力された文書に対して解析処理を行う（Ｓ１２）。例えば、図５（Ａ）に示す文書に対して図５（Ｂ）に示すツリーが生成される。このようなツリー構造は、文書解析部２２によってメモリ２４で生成されることになる。
【００２０】
次いで、レイアウタ２３においてレイアウト処理が行われる（Ｓ１３）。このレイアウト処理の詳細について図３乃至図４を参照して説明する。まず、レイアウト処理が開始されると（Ｓ１３１）、レイアウタ２３は文書内の要素を帯状領域にレイアウトする（Ｓ１３２）。例えば、図５（Ｂ）の解析後のツリーに対して、最上位階層のノードであるdivタグから最下位階層のノードである＃１までのツリーに対して、レイアウトを行う（図６（Ａ）参照）。実際には最下位階層のノードを構成するインライン要素（テキストやイメージなど）をレイアウトすることになる。
【００２１】
レイアウタ２３は、レイアウトに際し図６（Ａ）の右側に示すように、レイアウト領域２３１に対して帯状領域２３２を生成する。この帯状領域２３２は所定幅と高さを有する。帯状領域２３２の幅は１行分印字できる幅、高さは実際に領域２３２に配置されるテキストの文字列の大きさやイメージの大きさに対応する。従って、領域２３２の高さは文字列の大きさ等に比例して変化する。なお、この帯状領域２３２は実際に要素を配置させるときにレイアウタ２３によってメモリ２４上で生成される。また、レイアウト領域２３１は本実施例では１頁分のレイアウト領域とする。
【００２２】
ここで、要素を帯状領域２３２に配置させようとしたときに、配置させようとした要素が帯状領域２３２からはみ出てしまうこともある。例えば、イメージをレイアウトしようとしたとき、イメージの右半分が帯状領域２３２からはみ出てしまう場合などである。かかる場合、要素をレイアウト領域２３１にレイアウトすることができない。このため、レイアウタ２３はレイアウトする要素が領域２３２からはみ出るか否か判断する（Ｓ１３３）。図６（Ａ）の例では、テキスト＃１の帯状領域２３２はテキストの文字列を配置できる十分な幅が確保されているので、帯状領域２３２からはみ出ないと判断される（ＮＯ）。
【００２３】
レイアウトしようとした要素が帯状領域２３２からはみ出ないと判断されると（Ｓ１３３で“ＮＯ”）、次いでレイアウタ２３は実際に要素を帯状領域２３２に配置する（Ｓ１３４）。この場合、要素は帯状領域２３２に対して所定方向から順に配置される。図６（Ａ）の例ではテキストの文字列が帯状領域２３２に対して左から順に配置される。
【００２４】
次いで、レイアウタ２３はレイアウトした要素が帯状領域２３２からはみ出るか否か判断する（図４のＳ１３５）。例えば図６（Ｂ）に示すように、順次テキストの文字列を配置させたとき、テキストの文字数等が多く帯状領域２３２の最大幅を超え、テキストの文字列をすべてレイアウトできない場合もあるからである。そこで、レイアウタ２３は要素が帯状領域２３２からはみ出ると判断したとき（Ｓ１３５で“ＹＥＳ”）、まず、その帯状領域２３２のレイアウトを確定する（Ｓ１３６）。そして、レイアウトの確定した帯状領域２３２の次の行に帯状領域２３２を生成し、はみ出た要素をその帯状領域２３２に順次レイアウトする（Ｓ１３７）。
【００２５】
例えば、図７（Ａ）に示すようにテキスト＃１の文字数が多く帯状領域２３２からはみ出ると、その帯状領域２３２に要素が埋まりその帯状領域２３２のレイアウトが確定する。そして、レイアウタ２３は、図７（Ｂ）に示すように、次の行に帯状領域２３２を生成してこの領域２３２にはみ出た残りのテキストの文字列を順次配置していく。なお、本実施例においてこのレイアウトの確定によりその領域２３２に含まれる要素の位置がレイアウタ２３において決定されることになる。決定した位置に関する情報は、例えば、レイアウタ２３によりメモリ２４に格納される。
【００２６】
レイアウトの確定によりレイアウタ２３からの出力単位が決定するため、レイアウトの確定した帯状領域２３２に含まれる要素等に関する情報は必ずしもメモリ２４に保持させておく必要はない。例えば、レイアウト確定後、次の要素に対するレイアウトのため、保持した情報等をレイアウタ２３によりメモリ２４から削除してもよい。つまり、レイアウト処理のためのメモリ容量は一の帯状領域２３２に関する情報を記憶できるだけの容量があれば十分である。従って、１頁分の情報を記憶できる容量のメモリは必要でなくなり、メモリ容量の低減を図ることができる。
【００２７】
図４の処理に戻り、はみ出た要素を次の帯状領域２３２にレイアウトすると（Ｓ１３７）、レイアウタ２３は再びＳ１３５に移行して、要素が帯状領域２３２からはみ出なくなる（Ｓ１３５で“ＮＯ”）までＳ１３６及びＳ１３７の処理を繰り返す。上述した例では、これらの処理により、テキスト＃１が３行分の帯状領域２３２に（＃１−１から＃１−３まで）レイアウトされる（図８（Ａ）参照）。
【００２８】
このように、生成した帯状領域２３２に順次テキストの文字列を所定方向から順に配置させ、その文字列が帯状領域２３２からはみ出たとき、はみ出た文字列は次の行に生成された帯状領域２３２に配置される。従って、例えば、テキストの文字列が多く帯状領域２３２からはみ出ても次の帯状領域２３２に配置させることで、要素をすべてこの帯状領域２３２にレイアウトすることが可能となる。
【００２９】
図４の処理に戻り、レイアウトした帯状領域２３２から要素がはみ出ないと（Ｓ１３５で“ＮＯ”）、１つの要素に対するレイアウトが終了し、次いでレイアウタ２３は文書内に他の要素があるか否か判断する（Ｓ１３８）。他の要素があれば（ＹＥＳ）、Ｓ１３２に処理が移行して上述の処理を繰り返す。次の要素に対するレイアウト処理を行うためである。他に要素がないと（ＮＯ）、文書内のすべての要素に対してレイアウトが完了したことになり、レイアウト処理が終了する（Ｓ１３９）。
【００３０】
次の要素に対するレイアウト処理を行う場合に、レイアウタ２３は帯状領域２３２から次の要素がはみ出るか否か判断する（図３のＳ１３３）が、次の要素がはみ出ると判断したときは（ＹＥＳ）、Ｓ１４０以降の処理を行う。上述したように、イメージが帯状領域２３２からはみ出てしまう場合などである（図８（Ｂ）参照）。
【００３１】
この場合、レイアウタ２３は当該帯状領域２３２に以前の要素がレイアウト済みか否かをまず判断し（Ｓ１４０）、レイアウトされていれば（ＹＥＳ）、当該帯状領域２３２のレイアウトを確定させる（Ｓ１４１）。そして、レイアウタ２３は、はみ出た要素を次の行の帯状領域２３２にレイアウトする（Ｓ１４２）。一方、当該帯状領域２３２に以前の要素がレイアウトされていないとき（Ｓ１４０でＮＯ）、レイアウタ２３はその帯状領域２３２に要素がなくレイアウトを確定することができないため、レイアウトを確定することなく、はみ出た要素を次の帯状領域２３２にレイアウトする（Ｓ１４２）。
【００３２】
図８（Ｂ）の例では、イメージをレイアウトしようとした３行目の帯状領域２３２には、テキスト＃１が既にレイアウトされているため、Ｓ１４０でＹＥＳが選択され、３行目のレイアウトが確定する（Ｓ１４１）。そして、はみ出たイメージは、図９（Ａ）に示すように４行目の帯状領域２３２にレイアウトされる（Ｓ１４２）。その後、処理は次の要素に対する上述した処理を行うべく図４のＳ１３８に移行する。
【００３３】
以上の処理を繰り返すことで、レイアウト処理（Ｓ１３）が行われる。上述の例では、図９（Ｂ）に示すようにレイアウトされる。なお、このレイアウト処理により、この図に示す３つの要素（テキスト＃１、イメージ、テキスト＃２）の親要素である<p>タグのレイアウトが終了し、この<p>タグの高さが決定する。また、この例ではテキスト＃３は次の頁の帯状領域２３２にレイアウトされることになる。
【００３４】
このように、レイアウタ２３は、要素をレイアウトするためのレイアウト領域２３１に対して帯状領域２３２を生成し、この帯状領域２３２に対して所定方向から順に要素を配置する。そして、レイアウタ２３はイメージなど次の要素を帯状領域２３２に配置したときにその領域２３２から次の要素がはみ出るか否か判断する。はみ出ると判断したとき、帯状領域２３２に以前の要素がレイアウトされていれば、レイアウタ２３は当該帯状領域２３２のレイアウトを確定する。はみ出た次の要素はレイアウタ２３により次の帯状領域２３２に配置される。従って、一の帯状領域２３２ごとにレイアウトが確定することになり、その後の処理を早くすることができる。
【００３５】
なお、上述したように本発明では一の帯状領域２３２ごとにレイアウトが確定するため、文書内のすべての要素に対するレイアウト処理（Ｓ１３）が終了せずとも図２に示す印刷処理（Ｓ１５）に移行することができる。すなわちレイアウトが確定した一の帯状領域２３２ごとに、レンダリング処理や実際の印字処理等を含む印刷処理（Ｓ１５）が行われる。すべての帯状領域２３２に対する印刷処理が終了すると、処理装置２０での一連の処理が終了する（Ｓ１６）。
【００３６】
以上説明したように、本発明に係るレイアウト処理では一の帯状領域２３２という行単位でレイアウトが確定し、この帯状領域２３２ごとにその後の処理を行うことになるため、処理を速くすることができるとともに、メモリ容量の低減を図ることができる。
【００３７】
上述の例では、帯状領域２３２に要素をレイアウトするときに左から右方向に向けて順に配置させるようにした。これ以外にも、例えば、図面上右から左方向に向けて順に配置させるようにしてもよい。さらに、上述の例では帯状領域２３２をレイアウト領域２３１に対して横方向に配置させるようにしたが、この領域２３２を縦方向に配置させるようにしてもよい。この場合、要素は上から順に配置させたり、下から順に配置させるようにすればよい。いずれの場合も、一の帯状領域２３２ごとにレイアウトが確定し、レイアウタ２３から帯状領域２３２ごとに要素や位置情報等を出力することで、上述の例と同様に処理を早くすることができ、メモリ容量の低減を図ることができる。
【００３８】
また、上述した例では、帯状領域２３２から要素がはみ出るとその帯状領域２３２に含まれる要素に対するレイアウトを確定するようにした。それ以外にも例えば、図９（Ｂ）に示す最後の行の帯状領域２３２のようにタグ内のテキストが領域２３２内ではみ出ることなく、レイアウトを確定するようにしてもよい。レイアウトが確定するか否かは、実際にはタグの種類や文書の構成の仕方、テキストを構成する文字列等の数、イメージの大きさ等に依存するからである。この場合でも、勿論、上述の例と同様の作用効果を得ることができる。
【００３９】
更に、上述の例では、レイアウト後の処理としてレンダリング処理や画像処理、印刷処理を行うようにしたが、勿論それ以外の処理を行う場合でもよい。一の帯状領域２３２ごとにレイアウトを確定し、その領域２３２ごとにその後の処理を行うようにすれば上述の例と同様の作用効果を奏する。
【００４０】
更に、上述した例では処理装置２０の例としてプリンタを用いて説明した。それ以外にも、例えば、ディスプレイなどの表示装置や、ファクシミリ、複写機などで本発明に係るレイアウト処理を行うようにしてもよい。この場合に処理装置２０は上述した例の印刷実行部２７の代わりに、それぞれの機能を実現するための処理部を有することになる。また、生成装置１０がパーソナルコンピュータで本発明に係るレイアウタ２３がこのコンピュータ内に実装されていてもよい。この場合に文書解析部２２もコンピュータ内に実装され、処理装置２０は印刷実行部２７等を備えるだけで、印刷や表示等を行う。いずれの場合も上述した例と同様の作用効果を奏する。
【図面の簡単な説明】
【００４１】
【図１】本発明が適用されるシステム全体の構成を示す図である。
【図２】処理装置２０での処理の動作を示すフローチャートである。
【図３】レイアウト処理の動作を示すフローチャートである。
【図４】レイアウト処理の動作を示すフローチャートである。
【図５】ＸＨＴＭＬ文書とＤＯＭツリーの例を示す図である。
【図６】レイアウトの例を示す図である。
【図７】レイアウトの例を示す図である。
【図８】レイアウトの例を示す図である。
【図９】レイアウトの例を示す図である。
【符号の説明】
【００４２】
２０  処理装置、  ２２  文書解析部、  ２３  レイアウタ、  ２４  メモリ、  ２３１  レイアウト領域、  ２３２  帯状領域
【図１】
2006091956.tif 000003
【図２】
2006091956.tif 000004
【図３】
2006091956.tif 000005
【図４】
2006091956.tif 000006
【図５】
2006091956.tif 000007
【図６】
2006091956.tif 000008
【図７】
2006091956.tif 000009
【図８】
2006091956.tif 000010
【図９】
2006091956.tif 000011