Jak pracować z silnikiem układu w Python

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 CSSStyleSheet

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

Zobacz także

 Polski