Πώς να Εργαστείτε με τη Μηχανή Διάταξης στο Python

Πώς να Εργαστείτε με τη Μηχανή Διάταξης στο 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 κομμάτια πριν από τη συναρμολόγηση της γραμμής.

Δείτε επίσης

 Ελληνικά