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 個のピースに整形されます。