Hogyan dolgozzunk a Layout Engine-el a Python-ban

Hogyan dolgozzunk a Layout Engine-el a Python-ban

A Aspose.HTML FOSS Python számára szánt elrendezési rétege a stílusos dokumentumokból számítja ki a geometriát: build_box_tree() állítja elő a dobozstruktúrát, layout_block_tree() helyezi el a blokkrészleteket, és paginate_fragments() oldalakra bontja a kimenetet. Ez az útmutató elkészíti a stílusos dokumentumot — a szükséges bemenetet — és részletezi az egyes elrendezési szakaszokat, a telepítéshez a pip használatával.

Lépésről-lépésre útmutató

1. lépés: A csomag telepítése

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

2. lépés: A szükséges osztályok importálása

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

3. lépés: Stílusos dokumentum előkészítése

A layout felhasználja a kiszámított stílusokat, ezért először építsd fel és alkalmazd a stílusokat a fán:

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

4. lépés: A dobozfa meghatározása

build_box_tree() egy BoxRoot-t hoz létre BoxNode bejegyzésből, minden elem megjelenítési modelljét classify_display() segítségével a Display felsorolás ellenőrzésével osztályozza; a ComputedStyle és a EdgeSizes dobozonkénti stílus- és dobozmodell-méréseket tartalmaznak.


5. lépés: Layout futtatása és oldalszámozás

layout_block_tree() egy FragmentRoot-t ad BlockFragment geometriából; a beágyazott tartalom LineFragment sorokká áll össze a layout_inline_fragments() segítségével; a paginate_fragments() a végeredményt PageFragment oldalra osztja, tiszteletben tartva a BreakHints-t.

Gyakori problémák és megoldások

A layout kimenete üres. A bemeneti fa nem tartalmazott stílusos tartalmat — csatolj stíluslapokat és tartalmat a layout előtt.

A box váratlan megjelenítési osztályt kap. Check classify_display() az elementhez; a kiszámított display Az érték hajtja.

Az oldaltörések furcsa helyeken jelennek meg. Provide BreakHints to paginate_fragments() a törési lehetőségek irányításához.

Gyakran Ismételt Kérdések

Mi a különbség a dobozok és a fragmentumok között?

A dobozok (BoxNode) leírják a stílusokból származó elrendezési struktúrát; a fragmentumok (BlockFragment, LineFragment, PageFragment) elhelyezett eredmények geometriával.

Hol oldódnak fel a margók és a kitöltés?

A EdgeSizes minden dobozban — az első hely, ahová érdemes nézni, ha a méretek meglepnek.

Alakítja-e a motor a szöveget?

A beágyazott tartalom ShapedRun darabra formálódik a sor összeállítása előtt.

Lásd még:

 Magyar