Jak pracować z silnikiem układu w Python
Warstwa układu Aspose.HTML FOSS dla Python oblicza geometrię na podstawie stylowanych dokumentów: build_box_tree() wyprowadza strukturę pudełek, layout_block_tree() rozmieszcza fragmenty bloków, a paginate_fragments() dzieli wyjście na strony. Ten przewodnik przygotowuje stylowany dokument — wymagane wejście — i wyjaśnia każdy etap układu, używając pip do instalacji.
Przewodnik krok po kroku
Krok 1: Zainstaluj pakiet
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Krok 2: Zaimportuj wymagane klasy
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheetKrok 3: Przygotuj stylowany dokument
Układ zużywa obliczone style, więc najpierw zbuduj i ostylizuj drzewo:
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"))Krok 4: Wyprowadź drzewo pudełkowe
build_box_tree() generuje BoxRoot BoxNode wpisów, klasyfikując model wyświetlania każdego elementu przy użyciu classify_display() względem wyliczenia Display; ComputedStyle i EdgeSizes przenoszą styl per-pudełko oraz pomiary modelu pudełka.
Krok 5: Uruchom układ i paginację
layout_block_tree() dostarcza FragmentRoot BlockFragment geometrii; zawartość inline zestawia się w LineFragment linie przy pomocy layout_inline_fragments(); paginate_fragments() dzieli wyniki na PageFragment strony, uwzględniając BreakHints.
Typowe problemy i rozwiązania
Wyjście układu jest puste. Drzewo wejściowe nie zawierało stylowanej zawartości — dołącz arkusze stylów i treść przed układem.
Element ma nieoczekiwaną klasyfikację wyświetlania. Check classify_display() dla elementu; obliczona display wartość ją steruje.
Podziały stron pojawiają się w dziwnych miejscach. Provide BreakHints to paginate_fragments() aby kierować możliwości podziału.
Najczęściej zadawane pytania
Jaka jest różnica między pudełkami a fragmentami?
Pudełka (BoxNode) opisują strukturę układu pochodzącą ze stylów; fragmenty (BlockFragment, LineFragment, PageFragment) to umieszczone wyniki z geometrią.
Gdzie rozwiązywane są marginesy i padding?
W EdgeSizes na każdym pudełku — pierwsze miejsce, które warto sprawdzić, gdy wymiary Cię zaskakują.
Czy silnik kształtuje tekst?
Zawartość inline jest kształtowana w ShapedRun części przed składaniem linii.