Python でレイアウト エンジンを使用する方法

Python でレイアウト エンジンを使用する方法

Aspose.HTML FOSS for Python のレイアウト層は、スタイル付きドキュメントからジオメトリを計算します: build_box_tree() がボックス構造を導出し、layout_block_tree() がブロックフラグメントを配置し、paginate_fragments() が出力をページに分割します。本ガイドでは、必要な入力であるスタイル付きドキュメントを用意し、pip を使用したインストール方法とともに、各レイアウト段階を解説します。

ステップバイステップガイド

ステップ 1: パッケージをインストールする

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

ステップ 2: 必要なクラスをインポートする

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet

ステップ 3: スタイル付きドキュメントを準備する

レイアウトは計算済みスタイルを消費するため、まずツリーを構築し、スタイルを適用します:

doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)
print(el.get_computed_style().get_property_value("color"))

ステップ 4: ボックスツリーを導出する

build_box_tree() は BoxNode エントリの BoxRoot を生成し、各要素のディスプレイモデルを Display 列挙に対して classify_display() で分類します;ComputedStyle と EdgeSizes はボックスごとのスタイルとボックスモデル測定を保持します。


ステップ 5: レイアウトを実行し、ページ分割する

layout_block_tree() は BlockFragment ジオメトリの FragmentRoot を生成します;インラインコンテンツは layout_inline_fragments() を介して LineFragment 行に組み立てられます;paginate_fragments() は結果を BreakHints を尊重して PageFragment ページに分割します。

一般的な問題と対策

レイアウト出力が空です。 入力ツリーにスタイルが適用されたコンテンツがありません — レイアウトの前にスタイルシートとコンテンツを添付してください。

ボックスに予期しない display 分類があります。 Check classify_display() 要素に対して; 計算された display 値がそれを駆動します。

改ページが奇妙な位置に配置されます。 Provide BreakHints to paginate_fragments() 改行の機会を導くために。

よくある質問

ボックスとフラグメントの違いは何ですか?

ボックス(BoxNode)はスタイルから派生したレイアウト構造を記述します;フラグメント(BlockFragment, LineFragment, PageFragment)はジオメトリを持つ配置結果です。

マージンとパディングはどこで解決されますか?

各ボックスの EdgeSizes で — サイズに驚いたときに最初に見る場所です。

エンジンはテキストを整形しますか?

インラインコンテンツは、行を組み立てる前に ShapedRun 個のピースに整形されます。

参照

 日本語