כיצד לעבוד עם מנוע הפריסה ב-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 חלקים לפני הרכבת השורה.