Πώς να Εργαστείτε με τη Μηχανή Διάταξης στο 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.
Κοινά Προβλήματα και Διορθώσεις
Η έξοδος της διάταξης είναι κενή. Το δέντρο εισόδου δεν είχε περιεχόμενο με στυλ — συνδέστε τα φύλλα στυλ και το περιεχόμενο πριν από τη διάταξη.
Ένα πλαίσιο έχει μια απροσδόκητη ταξινόμηση εμφάνισης. Check classify_display() για το στοιχείο; η υπολογισμένη display η τιμή το καθοδηγεί.
Οι αλλαγές σελίδας εμφανίζονται σε περίεργα σημεία. Provide BreakHints to paginate_fragments() για να καθοδηγήσει τις ευκαιρίες διακοπής.
Συχνές Ερωτήσεις
Ποια είναι η διαφορά μεταξύ κουτιών και τμημάτων;
Τα κουτιά (BoxNode) περιγράφουν τη δομή διάταξης που προέρχεται από τα στυλ· τα τμήματα (BlockFragment, LineFragment, PageFragment) είναι τοποθετημένα αποτελέσματα με γεωμετρία.
Πού επιλύονται τα περιθώρια και το padding;
Στο EdgeSizes σε κάθε κουτί — το πρώτο σημείο που πρέπει να ελέγξετε όταν οι διαστάσεις σας εκπλήσσουν.
Διαμορφώνει το κείμενο η μηχανή;
Το ενσωματωμένο περιεχόμενο διαμορφώνεται σε ShapedRun κομμάτια πριν από τη συναρμολόγηση της γραμμής.