Comment travailler avec le moteur de mise en page dans Python

Comment travailler avec le moteur de mise en page dans Python

La couche de mise en page de Aspose.HTML FOSS pour Python calcule la géométrie à partir de documents stylisés : build_box_tree() dérive la structure de boîtes, layout_block_tree() place les fragments de blocs, et paginate_fragments() divise la sortie en pages. Ce guide prépare un document stylisé — l’entrée requise — et explique chaque étape de la mise en page, en utilisant pip pour l’installation.

Guide étape par étape

Étape 1: Installer le package

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

Étape 2: Importer les classes requises

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

Étape 3: Préparer un document stylisé

La mise en page consomme les styles calculés, il faut donc construire et styliser l’arbre d’abord:

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

Étape 4: Dériver l’arbre de boîtes

build_box_tree() produit un BoxRoot de BoxNode entrées, classifiant le modèle d’affichage de chaque élément avec classify_display() par rapport à l’énumération Display; ComputedStyle et EdgeSizes transportent les styles par boîte et les mesures du modèle de boîte.


Étape 5: Exécuter la mise en page et paginer

layout_block_tree() produit un FragmentRoot de géométrie BlockFragment; le contenu en ligne s’assemble en LineFragment lignes via layout_inline_fragments(); paginate_fragments() divise les résultats en PageFragment pages en respectant BreakHints.

Problèmes courants et solutions

La sortie de la mise en page est vide. L’arbre d’entrée ne contenait aucun contenu stylisé — ajoutez les feuilles de style et le contenu avant la mise en page.

Une boîte possède une classification d’affichage inattendue. Check classify_display() pour l’élément ; la valeur calculée display cette valeur la pilote.

Les sauts de page apparaissent à des endroits étranges. Provide BreakHints to paginate_fragments() pour guider les opportunités de saut.

Foire aux questions

Quelle est la différence entre les boîtes et les fragments?

Les boîtes (BoxNode) décrivent la structure de mise en page dérivée des styles; les fragments (BlockFragment, LineFragment, PageFragment) sont des résultats placés avec géométrie.

Où les marges et le padding se résolvent-ils?

Dans EdgeSizes sur chaque boîte — le premier endroit à vérifier lorsque les dimensions vous surprennent.

Le moteur façonne-t-il le texte?

Le contenu en ligne est façonné en ShapedRun morceaux avant l’assemblage des lignes.

Voir aussi

 Français