Hur man arbetar med Layout Engine i Python

Hur man arbetar med Layout Engine i Python

Layoutlagret i Aspose.HTML FOSS för Python beräknar geometri från formaterade dokument: build_box_tree() härleder lådstrukturen, layout_block_tree() placerar blockfragment och paginate_fragments() delar upp output i sidor. Den här guiden förbereder ett formaterat dokument — den nödvändiga inmatningen — och förklarar varje layoutsteg, med pip för installation.

Steg-för-steg-guide

Steg 1: Installera paketet

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

Steg 2: Importera nödvändiga klasser

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

Steg 3: Förbered ett formaterat dokument

Layout konsumerar beräknade stilar, så bygg och stilisera trädet först:

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"))

Steg 4: Härled boxträdet

build_box_tree() producerar en BoxRoot av BoxNode poster, klassificerar varje elements displaymodell med classify_display() mot Display uppräkning; ComputedStyle och EdgeSizes bär per-box stil och box-modellmått.


Steg 5: Kör layout och paginera

layout_block_tree() ger en FragmentRoot av BlockFragment geometri; inline-innehåll samlas i LineFragment rader via layout_inline_fragments(); paginate_fragments() delar upp resultaten i PageFragment sidor som respekterar BreakHints.

Vanliga problem och lösningar

Layoututdata är tom. Ingångsträdet hade inget stylat innehåll — bifoga stilmallar och innehåll innan layout.

En ruta har en oväntad displayklassificering. Check classify_display() för elementet; den beräknade display värdet driver det.

Sidbrytningar hamnar på konstiga ställen. Provide BreakHints to paginate_fragments() för att styra brytmöjligheter.

Vanliga frågor

Vad är skillnaden mellan lådor och fragment?

Lådor (BoxNode) beskriver layoutstruktur härledd från stilar; fragment (BlockFragment, LineFragment, PageFragment) är placerade resultat med geometri.

Var löser marginaler och utfyllnad upp sig?

I EdgeSizes på varje låda — det första stället att titta på när dimensionerna överraskar dig.

Formar motorn texten?

Inline-innehåll formas till ShapedRun bitar innan radmontering.

Se även

 Svenska