Jak pracovat s Layout Engine v Python

Jak pracovat s Layout Engine v Python

Vrstva rozvržení Aspose.HTML FOSS pro Python vypočítává geometrie ze stylovaných dokumentů: build_box_tree() odvozuje strukturu boxů, layout_block_tree() umisťuje blokové fragmenty a paginate_fragments() rozděluje výstup na stránky. Tento průvodce připravuje stylovaný dokument — požadovaný vstup — a vysvětluje každou fázi rozvržení, přičemž používá pip pro instalaci.

Průvodce krok za krokem

Krok 1: Nainstalujte balíček

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: Naimportujte požadované třídy

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

Krok 3: Připravte stylovaný dokument

Rozvržení spotřebovává vypočtené styly, takže nejprve vytvořte a nastylujte strom:

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: Odvoďte strom boxů

build_box_tree() produkuje BoxRoot z BoxNode položek, klasifikuje zobrazovací model každého elementu pomocí classify_display() proti výčtu Display; ComputedStyle a EdgeSizes nesou styl a měření box-modelu pro každý box.


Krok 5: Spusťte rozvržení a stránkování

layout_block_tree() produkuje FragmentRoot z BlockFragment geometrie; inline obsah se sestavuje do LineFragment řádků pomocí layout_inline_fragments(); paginate_fragments() rozděluje výsledky do PageFragment stránek s ohledem na BreakHints.

Běžné problémy a opravy

Výstup rozvržení je prázdný. Vstupní strom neobsahoval žádný stylovaný obsah — připojte styly a obsah před rozvržením.

Box má neočekávanou klasifikaci display. Check classify_display() pro prvek; vypočtená display hodnota to řídí.

Zlomky stránky se objevují na podivných místech. Provide BreakHints to paginate_fragments() k řízení příležitostí ke zlomení.

Často kladené otázky

Jaký je rozdíl mezi boxy a fragmenty?

Boxy (BoxNode) popisují strukturu rozvržení odvozenou ze stylů; fragmenty (BlockFragment, LineFragment, PageFragment) jsou umístěné výsledky s geometrií.

Kde se řeší okraje a vnitřní odsazení?

V EdgeSizes na každém boxu — první místo, kde se podívat, když vás překvapí rozměry.

Formuje engine text?

Inline obsah je tvarován do ShapedRun kusů před sestavením řádku.

Viz také:

 Čeština