Cara Bekerja dengan Mesin Tata Letak di Python
Lapisan tata letak Aspose.HTML FOSS untuk Python menghitung geometri dari dokumen bergaya: build_box_tree() menghasilkan struktur kotak, layout_block_tree() menempatkan fragmen blok, dan paginate_fragments() membagi output menjadi halaman. Panduan ini menyiapkan dokumen bergaya — input yang diperlukan — dan menjelaskan setiap tahap tata letak, menggunakan pip untuk instalasi.
Panduan Langkah-demi-Langkah
Langkah 1: Instal Paket
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Langkah 2: Impor Kelas yang Diperlukan
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheetLangkah 3: Siapkan Dokumen Bergaya
Layout mengonsumsi gaya terhitung, jadi bangun dan gayakan pohonnya terlebih dahulu:
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"))Langkah 4: Menurunkan Pohon Kotak
build_box_tree() menghasilkan BoxRoot dari BoxNode entri, mengklasifikasikan model tampilan setiap elemen dengan classify_display() terhadap enumerasi Display; ComputedStyle dan EdgeSizes membawa gaya per-kotak dan pengukuran model-kotak.
Langkah 5: Jalankan Layout dan Paginasikan
layout_block_tree() menghasilkan FragmentRoot dari geometri BlockFragment; konten sebaris dirakit menjadi LineFragment baris melalui layout_inline_fragments(); paginate_fragments() membagi hasil menjadi PageFragment halaman menghormati BreakHints.
Masalah Umum dan Solusi
Output tata letak kosong. Pohon input tidak memiliki konten bergaya — lampirkan stylesheet dan konten sebelum tata letak.
Sebuah kotak memiliki klasifikasi tampilan yang tidak terduga. Check classify_display() untuk elemen; yang dihitung display nilai menggerakkannya.
Pemotongan halaman muncul di tempat yang aneh. Provide BreakHints to paginate_fragments() untuk memandu peluang pemotongan.
Pertanyaan yang Sering Diajukan
Apa perbedaan antara kotak dan fragmen?
Kotak (BoxNode) menggambarkan struktur tata letak yang berasal dari gaya; fragmen (BlockFragment, LineFragment, PageFragment) adalah hasil penempatan dengan geometri.
Di mana margin dan padding diselesaikan?
Di EdgeSizes pada setiap kotak — tempat pertama yang harus diperiksa saat dimensi mengejutkan Anda.
Apakah mesin membentuk teks?
Konten sebaris dibentuk menjadi ShapedRun potongan sebelum perakitan baris.