(57)【要約】      （修正有）【課題】Webブラウザ上で動作すること及びWebの機能を十分に活用できることを保証しつつ、高度なレイアウトを提供する。【解決手段】HTML文書のHTML要素を管理する管理手段1と、レイアウトによって得られるレイアウト領域を管理する管理手段2と、HTML要素とレイアウト領域の対応を管理する管理手段3と、レイアウト領域からそのレイアウト情報を含むHTML要素を生成する生成手段1を備える。管理手段2が管理するレイアウト領域から管理手段3によって入力HTML文書における位置を決定し、前記レイアウト領域から生成手段1によってHTML要素を生成し、このHTML要素を前記決定位置に管理手段1によって埋め込んで出力HTML文書を作成する。【選択図】図１
2018195010.tif 000002
【特許請求の範囲】
【請求項１】
入力HTML文書をレイアウトしたのち出力HTML文書を生成するという処理をコンピュータに行わせるためのプログラムであって、
HTML文書のHTML要素を管理する管理手段1と、
レイアウトによって得られるレイアウト領域を管理する管理手段2と、
HTML要素とレイアウト領域の対応を管理する管理手段3と、
レイアウト領域からそのレイアウト情報を含むHTML要素を生成する生成手段1と、
を備え、
管理手段2が管理するレイアウト領域から管理手段3によって入力HTML文書における位置を決定し、前記レイアウト領域から生成手段1によってHTML要素を生成し、このHTML要素を前記決定位置に管理手段1によって埋め込んで出力HTML文書を作成することを特徴とするプログラム
【請求項２】
入力HTML文書をレイアウトしたのちEPUB書籍を生成するという処理をコンピュータに行わせるためのプログラムであって、
HTML文書のHTML要素を管理する管理手段1と、
レイアウトによって得られるレイアウト領域を管理する管理手段2と、
HTML要素とレイアウト領域の対応を管理する管理手段3と、
レイアウト領域からそのレイアウト情報を含むHTML要素を生成する生成手段1と、
複数のHTML文書からEPUB書籍を生成する生成手段2を備え、
管理手段2が管理するレイアウト領域から管理手段3によってHTML文書における位置を決定し、レイアウト領域から生成手段によってHTML要素を生成し、このHTML要素を前記決定位置に管理手段1によって埋め込み、ページを模倣する各要素をそれぞれ一つのHTML文書として分割し 、これらのHTML文書から生成手段2によってEPUB書籍を作成することを特徴とするプログラム
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高度なレイアウトをもつHTML文書の自動生成に関わる。
【背景技術】
【０００２】
広く用いられているWebブラウザは、CSSスタイルシートを備えたHTML文書を受け取って、それをレイアウトして画面に表示する。しかし、Webブラウザが提供するレイアウトは、InDesignなどのDTPソフトが提供するレイアウトと比較すると単純なものに限られている。
【０００３】
HTML文書をレイアウトするための専用ソフト（Princeなど）もある。専用ソフトは、CSSスタイルシートを備えたHTML文書を受け取って、Webブラウザでは出来ない高度なレイアウトを生成する。このような専用ソフトは、W3CのCSS勧告を超えた拡張CSSスタイルシートが扱えるように拡張されていることが多い。専用ソフトは、レイアウト を生成したのちPDF文書として保存する。このPDF文書をインターネットで配布すれば、インターネット上の利用者はPDFリーダを用いて高度なレイアウトを閲覧することができる。
【０００４】
しかし、高度なレイアウトPDF文書としてを配布するという方法は、Webの機能を十分に活用できないという問題がある。例えば、PDF文書を閲覧するユーザは、Webブラウザの対話的な機能（入力ボタンなど）を使うことはできない。
【０００５】
ここまで述べてきたように、HTML文書をレイアウトする既存技術はいずれも問題を抱えている。ブラウザを普通に使うだけでは高度なレイアウトを提供できない。専用ソフトでHTML文書をレイアウトしてPDF文書を生成するとWebの機能を十分に活用できない。
【０００６】
次に、電子書籍のレイアウトについて考える。EPUBは、HHTMLを利用した電子書籍フォーマットである、複数のHTML文書をまとめて一つのEPUB書籍として提供することができる。
【０００７】
EPUBリーダは、ブラウザを用いて作られる。EPUBリーダに組み込まれたブラウザは一般のブラウザよりさらに簡略化されていることが多い。したがって、レイアウトが単純なものに限られるという問題は、EPUBにもあてはまる。したがって、電子書籍において高度なレイアウトを用いることは難しい。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】YesLogic Pty Ltd, Prince User Guide, https://www.princexml.com/doc/, 2017
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の課題は、Webブラウザ上で動作すること及びWebの機能を十分に活用できることを保証しつつ、高度なレイアウトを提供することである。
【課題を解決するための手段】
【００１０】
第一の発明は、HTML文書のHTML要素を管理する管理手段1と、レイアウトによって得られるレイアウト領域を管理する管理手段2と、HTML要素とレイアウト領域の対応を管理する管理手段3とを備える。これらの手段によって、もとのHTML文書とそのレイアウトを保持する。
【００１１】
さらに、レイアウト領域からそれを模倣するHTML要素を生成する生成手段を備える。レイアウト領域のレイアウト情報（座標位置や大きさ等）は、生成されたHTML要素に埋め込まれる。この手段によって、レイアウト領域をHTML要素によって表現することが可能になる。
【００１２】
出力HTML文書を生成するには、レイアウト領域のレイアウト情報（座標位置や大きさ等）を入力HTML文書に埋め込む。第一に、管理手段2が管理するレイアウト領域から管理手段3によって入力HTML文書における位置を決定する。第二に、このレイアウト領域から生成手段1によってHTML要素を生成する。第三に、このHTML要素を前記決定位置に管理手段1によって埋め込む。これらの処理をレイアウト領域について繰り返し、最後に管理手段1から出力HTML文書を生成する。
【００１３】
作成されたHTML文書には、レイアウト領域のレイアウト情報（座標位置や大きさ等）が追加されているので、再びレイアウトすることが簡単にできる。もとのHTML文書を最初にレイアウトするときには、W3CのCSS勧告を超えた拡張CSSスタイルシートが必要な場合でも、作成されたHTML文書はその必要はない。
【００１４】
第二の発明は、第一の発明に加えて、複数のHTML文書からEPUB書籍を生成する生成手段2を備える。
【００１５】
まず、第一の発明と同様にして、レイアウト領域のレイアウト情報（座標位置や大きさ等）を入力HTML文書に埋め込む。次に、ページごとにHTML文書を分割する。最後に、分割によって得られたHTML文書から生成手段2によってPUB電子書籍を作成する。作成されたEPUB電子書籍には、要素によるレイアウトの表現が追加されているので、再びレイアウトすることが簡単にできる。
【図面の簡単な説明】
【００１６】
【図１】請求項1の実施形態の構成を示す図。
【図２】入力HTML文書1の構造を示す図。
【図３】入力HTML文書1のレイアウトを示す図。
【図４】入力HTML文書1のレイアウト領域を示す図。
【図５】入力HTML文書1の構造とレイアウト領域の対応関係を示す図。
【図６】出力HTML文書1の構造を示す図。
【図７】入力HTML文書２の構造を示す図。
【図８】入力HTML文書２のレイアウトを示す図。
【図９】入力HTML文書２のレイアウト領域を示す図。
【図１０】入力HTML文書２の構造とレイアウト領域の対応関係を示す図。
【図１１】出力HTML文書２の構造を示す図。
【図１２】請求項2の実施形態の構成を示す図。
【図１３】EPUB書籍を構成する二つのHTML文書の構造を示す図。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、プログラムの実施形態を詳細に説明する。
【００１８】
図１を用いて、請求項１の実施形態の構成を説明する。入力HTML文書を管理手段1が管理し、作り出されたレイアウトを管理手段2が管理している。入力HTML文書とレイアウトの対応関係を管理手段3が管理している。生成手段1は、レイアウト領域のレイアウト情報（座標位置や大きさ等）を管理手段から受け取って、HTML要素を作成する。作成されたHTML要素は、管理手段1によってHTML文書に埋め込まれる。どの位置に埋め込むかは、対応管理手段によって決定される。出力HTML文書は、管理手段1から作成される。
【００１９】
この発明では、レイアウトをどのような方法で生成してもよい。標準的なCSSスタイルシートを用いてもよいし、それ以外のスタイルシートを用いてもよい。ブラウザではなく、HTML文書をレイアウトするための専用ソフトを用いてもよい。ブラウザの上で動作するJavascriptプログラムを用いても構わない。
【００２０】
図２は、ある入力HTML文書（入力HTML文書１とする）の構造を表示している。htmlは文書全体のルート要素であり、bodyは文書本体を表す要素であり、pは段落を表す要素であり、olは箇条書きを表す要素であり、liは箇条書き中の項目を表す要素である。p, ol, liについては複数現れることがあるので区別のために添字を用いる。要素は、プログラミング言語のオブジェクトや構造体などのデータ構造によって表現される。管理手段1は、このデータ構造を管理する。
【００２１】
図３は、このHTML文書のレイアウトを表す図である。このレイアウトは２カラムをもつ単一ページからなる。
【００２２】
図４は、このレイアウトに存在するレイアウト領域を示したものである。R0はページ全体を表わすレイアウト領域である。R1は左カラム、R2は右カラムを表わすレイアウト領域であり、R0に含まれている。R3は第一段落の前半に対応するレイアウト領域であり、R1に含まれている。R4は第一段落の後半に対応するレイアウト領域であり、R2に含まれている。R5は箇条書きに対応するレイアウト領域であり、R2に含まれている。R6は一番目の箇条に対応するレイアウト領域であり、R5に含まれている。R7は二番目の箇条に対応するレイアウト領域であり、R5に含まれている。
【００２３】
レイアウト領域は、プログラミング言語のオブジェクトや構造体などのデータ構造によって表現される。管理手段2は、このデータ構造を管理する。
【００２４】
図５は、このHTML文書の構造と、レイアウト領域の対応関係を示したものである。図の上半分は、図３と同じものであり、HTML文書の構造を表している。
【００２５】
図の下半分は、レイアウト領域の構造を表す。R0にはR1とR2が含まれている。R1にはR3が含まれている。R2にはR4とR5が含まれている。R5には、さらにR6とR7が含まれている。
【００２６】
上半分と下半分とを結ぶ点線は、対応関係を示している。R3は1番目のp要素の前半に対応する。R4は1番目のp要素の後半に対応する。R5は、1番目のol要素に対応する。R6とR7は、1番目のli要素と2番目のli要素に対応している。
【００２７】
管理手段3は、この対応関係を管理する。具体的には、HTML要素を表現するデータ構造にレイアウト領域を表現するデータ構造へのポインタを埋め込むこと、レイアウト領域を表現するデータ構造にHTML要素を表現するデータ構造へのポインタを埋め込むことよって表現することができる。ポインタでなくても、HTML要素を一意に特定する情報、レイアウト領域を一意に特定する情報であれば何を埋め込んでも構わない。ポインタなどを直接埋め込むのではなく、対応表を別個に設けてもよい。また、HTML要素を表現するデータ構造からレイアウト領域を表現するデータ構造への参照関係だけを管理し、レイアウト領域を表現するデータ構造からHTML要素を表現するデータ構造への参照関係は計算によって求めてもよい。逆に、後者の参照関係だけを管理し、前者を計算によって求めてもよい。
【００２８】
図６は、出力HTML文書の構造を示す。html, body, ol, li要素は、図３に示した入力HTML文書にあるものと同一である。二つのp要素(p_1とp_1’)は、図３に示した入力p要素がカラム境界によって分割されたものである。たとえば、入力p要素が<p>....先頭カラムの終わり 二番目のカラムの始まり...</p>であったきとき、一番目のp要素(p_1)は<p>....先頭カラムの終わり</p>であり、二番目のp要素(p_1’)は<p>二番目のカラムの始まり...</p>である。
【００２９】
R0 div, R1 div, R2 div, R3 div, R4 div, R5 div, R6 div, R7 divは、それぞれレイアウト領域R0, R1, R2, R3, R4, R5, R6, R7から生成手段によって生成されたdiv要素である。レイアウト領域のレイアウト情報（座標位置や大きさ等）をR0 div v, R1 div, R2 div, R3 div, R4 div, R5 div, R6 div, R7 divに含めるには、style属性を用いて埋め込むのが一つの方法である。
【００３０】
R3およびR4と入力p要素が対応していることが管理手段3から分かる。したがって、R3 divとR4 divがそれぞれ一番目の出力p要素と二番目の出力(p_1とp_1’)の上に埋め込まれている。さらに、R3を含むレイアウト領域であるR1から生成されたR1 divもR3 divの上に埋め込まれており、R1を含むレイアウト領域であるR0 divから生成されたR0 divはR1 divの上に埋め込まれている。同様に、R4を含むレイアウト領域であるR2から生成されたR2 divもR4 divの上に埋め込まれている。
【００３１】
R5と入力ol要素が対応していることが管理手段3から分かる。したがって、出力ol要素の上にR5 divが埋め込まれている。R5を含むレイアウト領域であるR2から生成されたR2 divはすでに埋め込まれているので、再度埋め込む必要はない。
【００３２】
R6と一番目のli要素が対応していること、R7と二番目のli要素が対応していることが管理手段3から分かるので、 R6 divとR7 divがそれぞれ一番目と二番目のli要素の上に埋め込まれている。
【００３３】
図７は、もう一つのHTML文書（入力HTML文書２とする）の構造を示す。htmlは文書全体のルート要素であり、bodyは文書本体を表す要素である。body要素は三つのdiv要素を子としてもつ。1番目のdiv要素は、p要素とol要素を子としてもつ。ol要素はさらに、二つのli要素を子としてもつ。2番目、3番目のdiv要素はそれぞれ、二つのp要素を子要素としてもつ。
【００３４】
図８は、このHTML文書のレイアウトを表す図である。このレイアウトは、２カラムをもつ二つのページからなる。図３のレイアウトと比較すると、二ページ目が増えている。
【００３５】
図９は、このレイアウトに存在するレイアウト領域を示したものである。R0からR7までは図４にあるレイアウト領域と同じものである。R8は、二番目のdiv要素の第１段落に対応するレイアウト領域である。
【００３６】
R9は2番目のページの全体を表わすレイアウト領域である。R10は左カラム、R11は右カラムを表わすレイアウト領域であり、R9に含まれている。R12は2番目のdiv要素の第２段落に対応するレイアウト領域であり、R10に含まれている。R13は3番目のdiv要素の第１段落の前半に対応するレイアウト領域であり、R10に含まれている。R14は3番目のdiv要素の第１段落の後半に対応するレイアウト領域であり、R11に含まれている。R15は3番目のdiv要素の第２段落に対応するレイアウト領域であり、R11に含まれている。
【００３７】
図１０は、このHTML文書の構造と、レイアウト領域の対応関係を示したものである。図の上半分は、図８と同じものであり、HTML文書の構造を表す。図の下半分は、レイアウト領域の構造を表す。R0にはR1とR2が含まれている。R1にはR3が含まれている。R2にはR4とR5が含まれている。R5には、さらにR6とR7が含まれている。R2には、さらにR8が含まれている。二ページ目を表すR9には、R10とR11が含まれている。R10には、R12とR13が含まれており、R11にはR14とR15が含まれている。
【００３８】
上半分と下半分とを結ぶ点線は、対応関係を示している。R3は1番目のp要素の前半に対応する。R4は1番目のp要素の後半に対応する。R5は、1番目のol要素に対応する。R6とR7は、1番目のli要素と2番目のli要素に対応している。R8は二番目のdiv要素の一番目のp要素に対応している。R12は、このdiv要素の二番目のp要素に対応している。R13とR14は、三番目のdiv要素の一番目のp要素の前半と後半にそれぞれ対応している。R15は、このdiv要素の二番目のp要素に対応している。
【００３９】
図１１は、出力HTML文書の構造を示す。html, body, ol, li要素は、図３に示した入力HTML文書にあるものと同一である。１ページ目のカラム境界によって、図３に示した一番目の入力div要素（div_1）がdiv_1とdiv_1’に分割されており、’ 一番目の入力p要素（p_1）はp_1とp_1’に分割されている。１ページ目と２ページ目のページ境界によって、二番目の入力div要素（div_2）がdiv_2とdiv_2’に分割されている。２ページ目のカラム境界によって、三番目の入力div要素（div_3）がdiv_3とdiv_3’に分割されており、四番目の入力p要素（p_4）はp_4とp_4’に分割されている。
【００４０】
R0 div, R1div, R2div, R3 div, R4 div, R5 div, R6 div, R7 div, R8 div, R9 div, R10 div, R11 div, R12 div, R13 div, R14 div, R15 divは、それぞれレイアウト領域R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15から生成手段によって生成されたdiv要素である。
【００４１】
R3およびR4と入力p（p_11）要素が対応していることが管理手段3から分かる。したがって、R3 divとR4 divがそれぞれ一番目の出力p要素と二番目の出力p要素（p_1とp_1’）の上に埋め込まれている。同様に、R13およびR14と入力p（p4）要素が対応しているので、R13 divとR14 divがそれぞれp_4とp_4’の上に埋め込まれている。
【００４２】
R6およびR7と一番目のli要素および二番目のli要素が対応しているので、R6 divとR7 divがそれぞれ一番目の出力li要素と二番目の出力li要素（li_1とli_2）の上に埋め込まれている。
【００４３】
R5とol要素が対応しているので、R5 divが一番目の出力ol要素（ol_1）の上に埋め込まれている。
【００４４】
R8, R12, R15とp_2, p_3, p_4がそれぞれ対応しているので、R8 div, R12 div, R15 divがそれぞれp_2, p_3, p_4の上に埋め込まれている。
【００４５】
R0, R1, R2, R9, R10, R11については、対応するHTML要素が管理手段3に記録されていない。しかし、レイアウト領域から生成されたdiv要素は図１１の下半分と同じ階層構造をもつ必要があること、入力HTML要素は図１１の上半分と同じ階層構造をもつ必要があるのでR0 div, R1 div, R2 div, R9 div, R10 div, R11 divをどこに挿入するのかが定まる。例えば、R1はR3を含んでいるので、R1 divはdiv_1の上に埋め込まれている。同様に、 R2は R4, R5, R8を含んでいるので、R2 divはdiv_1’およびdiv_2の上に埋め込まれている。同様に、R10 divはdiv_2 ’およびdiv_3の上に、R11 divはdiv_3’の上に埋め込まれている。
【００４６】
この形態では、要素をカラム・ページ境界で積極的に分割している。しかし、分割を行わず、W3Cの仕様であるCSS Region相当の機能を用いて、ブラウザに分割を行わせることも可能である。つまり、分割を行わずにCSS Regionを利用することも本発明に含まれる。
【００４７】
この形態では、ページ番号、柱、段間罫など、入力HTML文書に由来しない要素を埋め込んでいない。しかし、これらを埋め込むことも可能である。
【００４８】
この形態では、レイアウト領域を表す要素をつねに埋め込んでいる。しかし、表示に影響を与えないレイアウト領域については、要素生成と埋め込みを省略することも可能である。また、レイアウト領域を表す要素がただ一つの子要素をもつときは、レイアウト領域を表す要素を削除し、そのレイアウト情報（座標位置や大きさ等）をこの子要素に転記してもよい。このように、レイアウト領域を表す要素を一部だけしか埋め込まないことも本発明に含まれる。
【００４９】
図１２を用いて、請求項２の実施形態の構成を説明する。入力HTML文書を管理手段1が管理し、作り出されたレイアウトを管理手段2が管理している。入力HTML文書とレイアウトの対応関係を管理手段3が管理している。生成手段1は、レイアウト領域のレイアウト情報（座標位置や大きさ等）を管理手段から受け取って、HTML要素を作成する。作成されたHTML要素は、管理手段1によってHTML文書に埋め込まれる。どの位置に埋め込むかは、対応管理手段によって決定される。ページごとに分割されたHTML文書から、生成手段2がEPUB書籍を作成する。
【００５０】
図７に示した入力HTML文書２から図１１の出力HTML文書２が得られるところまでは、請求項１の場合と同じである。
【００５１】
出力HTML文書２をページごとに分割して得られた二つのHTML文書を図１３に示す。この二つのHTML文書をまとめることによって、一つのEPUB書籍が得られる。
【図１】
2018195010.tif 000003
【図２】
2018195010.tif 000004
【図３】
2018195010.tif 000005
【図４】
2018195010.tif 000006
【図５】
2018195010.tif 000007
【図６】
2018195010.tif 000008
【図７】
2018195010.tif 000009
【図８】
2018195010.tif 000010
【図９】
2018195010.tif 000011
【図１０】
2018195010.tif 000012
【図１１】
2018195010.tif 000013
【図１２】
2018195010.tif 000014
【図１３】
2018195010.tif 000015