Cara Bekerja dengan Mesin Tata Letak di Python

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 CSSStyleSheet

Langkah 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.

Lihat Juga

 Bahasa Indonesia