نحوه کار با موتور چیدمان در Python
لایهٔ چیدمان Aspose.HTML متن باز برای 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: تهیهٔ سند قالببندیشده
چیدمان (Layout) سبکهای محاسبهشده را مصرف میکند، بنابراین ابتدا درخت را بسازید و استایل بدهید:
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"))مرحله ۴: استخراج Box Tree
build_box_tree() یک BoxRoot از BoxNode ورودی تولید میکند، مدل نمایش هر عنصر را با classify_display() در برابر شمارش Display طبقهبندی میکند؛ ComputedStyle و EdgeSizes سبک هر جعبه و اندازههای مدل جعبه را در بر دارند.
مرحله ۵: اجرای Layout و صفحهبندی
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) نتایج قرار گرفته با هندسه هستند.
حاشیهها و فضای داخلی کجا حل میشوند؟
در EdgeSizes بر روی هر جعبه — اولین مکانی که هنگام تعجب از ابعاد باید بررسی کنید.
آیا موتور متن را شکل میدهد؟
محتواي درونخطی قبل از ترکیب خط به ShapedRun قطعه شکل میگیرد.