Як працювати з Layout Engine у Python

Як працювати з Layout Engine у Python

Шар розташування Aspose.HTML FOSS для Python обчислює геометрію зі стильових документів: build_box_tree() виводить структуру коробок, layout_block_tree() розташовує блокові фрагменти, а paginate_fragments() розбиває вихід на сторінки. Цей посібник готує стильовий документ — необхідний вхід — і пояснює кожен етап розташування, використовуючи pip для встановлення.

Покроковий посібник

Крок 1: Встановити пакет

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

Крок 2: Імпортувати потрібні класи

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

Крок 3: Підготувати стильовий документ

Розмітка споживає обчислені стилі, тому спочатку побудуйте та оформіть дерево:

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: Вивести дерево коробок

build_box_tree() створює BoxRoot з BoxNode записів, класифікуючи модель відображення кожного елемента за допомогою classify_display() проти перерахування Display; ComputedStyle і EdgeSizes містять стиль для кожної коробки та вимірювання моделі коробки.


Крок 5: Запустити розмітку та пагінацію

layout_block_tree() дає FragmentRoot з BlockFragment геометрії; вбудований вміст збирається у LineFragment рядки за допомогою layout_inline_fragments(); paginate_fragments() розділяє результати на PageFragment сторінки, дотримуючись BreakHints.

Типові проблеми та виправлення

Вивід макету порожній. У вхідному дереві не було стилізованого вмісту — приєднайте таблиці стилів і вміст перед макетом.

Бокс має неочікувану класифікацію display. Check classify_display() для елемента; обчислене display значення керує ним.

Розриви сторінок з’являються у дивних місцях. Provide BreakHints to paginate_fragments() для керування можливостями розриву.

Поширені запитання

У чому різниця між блоками та фрагментами?

Блоки (BoxNode) описують структуру розкладки, отриману зі стилів; фрагменти (BlockFragment, LineFragment, PageFragment) — це розміщені результати з геометрією.

Де розв’язуються margin та padding?

У EdgeSizes кожного блоку — перше місце, куди слід заглянути, коли розміри вас здивують.

Чи формує текст рушій?

Вбудований вміст формується у ShapedRun частин перед складанням рядка.

Дивіться також

 Українська