Wie man mit der Layout-Engine in Python arbeitet

Wie man mit der Layout-Engine in Python arbeitet

Die Layout-Schicht von Aspose.HTML FOSS für Python berechnet Geometrie aus gestalteten Dokumenten: build_box_tree() leitet die Box-Struktur ab, layout_block_tree() platziert Blockfragmente und paginate_fragments() teilt die Ausgabe in Seiten auf. Dieser Leitfaden erstellt ein gestaltetes Dokument — die erforderliche Eingabe — und erklärt jede Layout-Phase, wobei pip für die Installation verwendet wird.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

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

Schritt 2: Erforderliche Klassen importieren

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

Schritt 3: Ein gestaltetes Dokument vorbereiten

Layout verbraucht berechnete Stile, also erstelle und style den Baum zuerst:

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

Schritt 4: Boxbaum ableiten

build_box_tree() erzeugt ein BoxRoot von BoxNode Einträgen, das jedes Element-Display-Modell mit classify_display() gegenüber der Display Aufzählung klassifiziert; ComputedStyle und EdgeSizes tragen pro-Box Stil- und Box-Modell-Messungen.


Schritt 5: Layout ausführen und paginieren

layout_block_tree() liefert ein FragmentRoot von BlockFragment Geometrie; Inline-Inhalt assembliert zu LineFragment Zeilen via layout_inline_fragments(); paginate_fragments() teilt Ergebnisse in PageFragment Seiten unter Berücksichtigung von BreakHints.

Häufige Probleme und Lösungen

Layout-Ausgabe ist leer. Der Eingabebaum enthielt keinen gestylten Inhalt — fügen Sie Stylesheets und Inhalt vor dem Layout hinzu.

Eine Box hat eine unerwartete Display-Klassifizierung. Check classify_display() für das Element; das berechnete display Wert steuert es.

Page breaks landen an seltsamen Stellen. Provide BreakHints to paginate_fragments() um break opportunities zu leiten.

Häufig gestellte Fragen

Was ist der Unterschied zwischen Boxen und Fragmenten?

Boxen (BoxNode) beschreiben die aus Stilregeln abgeleitete Layoutstruktur; Fragmente (BlockFragment, LineFragment, PageFragment) sind platzierte Ergebnisse mit Geometrie.

Wo werden Margin und Padding aufgelöst?

In EdgeSizes bei jeder Box — die erste Anlaufstelle, wenn Dimensionen Sie überraschen.

Formt die Engine den Text?

Inline-Inhalt wird in ShapedRun Stücke geformt, bevor die Zeile zusammengesetzt wird.

Siehe auch

 Deutsch