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 CSSStyleSheetSteg 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.