Cómo trabajar con el motor de diseño en Python

Cómo trabajar con el motor de diseño en Python

La capa de diseño de Aspose.HTML FOSS para Python calcula la geometría a partir de documentos con estilo: build_box_tree() deriva la estructura de cajas, layout_block_tree() coloca fragmentos de bloque y paginate_fragments() divide la salida en páginas. Esta guía prepara un documento con estilo — la entrada requerida — y explica cada etapa del diseño, usando pip para la instalación.

Guía paso a paso

Paso 1: Instalar el paquete

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

Paso 2: Importar las clases requeridas

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

Paso 3: Preparar un documento con estilo

El diseño consume estilos computados, así que construye y aplica estilos al árbol primero:

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

Paso 4: Derivar el árbol de cajas

build_box_tree() produce un BoxRoot de BoxNode entradas, clasificando el modelo de visualización de cada elemento con classify_display() contra la enumeración Display; ComputedStyle y EdgeSizes llevan estilo por caja y mediciones del modelo de caja.


Paso 5: Ejecutar el diseño y paginar

layout_block_tree() produce un FragmentRoot de geometría BlockFragment; el contenido en línea se ensambla en LineFragment líneas a través de layout_inline_fragments(); paginate_fragments() divide los resultados en PageFragment páginas respetando BreakHints.

Problemas comunes y soluciones

La salida del diseño está vacía. El árbol de entrada no tenía contenido con estilo — adjunte hojas de estilo y contenido antes del diseño.

Una caja tiene una clasificación de visualización inesperada. Check classify_display() para el elemento; el calculado display valor lo impulsa.

Los saltos de página aparecen en lugares extraños. Provide BreakHints to paginate_fragments() para guiar oportunidades de salto.

Preguntas frecuentes

¿Cuál es la diferencia entre cajas y fragmentos?

Las cajas (BoxNode) describen la estructura de diseño derivada de los estilos; los fragmentos (BlockFragment, LineFragment, PageFragment) son resultados colocados con geometría.

¿Dónde se resuelven los márgenes y el relleno?

En EdgeSizes de cada caja — el primer lugar a consultar cuando las dimensiones te sorprenden.

¿El motor da forma al texto?

El contenido en línea se forma en ShapedRun piezas antes del ensamblaje de la línea.

Ver también

 Español