Gunakan FloatingBox untuk Tata Letak PDF di Python
Penggunaan Dasar FloatingBox
The FloatingBox kelas adalah wadah untuk menempatkan teks dan konten lain pada halaman PDF. Ini memberi Anda kontrol yang lebih kuat atas tata letak, batas, dan gaya dibandingkan paragraf teks biasa. Jika konten melebihi ukuran kotak, perilaku pemotongan dikendalikan oleh pengaturan kotak.
Gunakan halaman ini ketika Anda membutuhkan kontainer teks terstruktur, tata letak multi‑kolom, dan penempatan yang tepat dalam dokumen PDF dengan Aspose.PDF for Python via .NET.
- Buat yang baru
Document. - Tambahkan sebuah
Pageke dokumen. - Buat sebuah
FloatingBox. - Atur batas kotak menggunakan
BorderInfodanBorderSide. - Pengulangan kotak kontrol dengan
is_need_repeatingproperty. - Tambahkan konten teks menggunakan
TextFragment. - Tambahkan
FloatingBoxkePage. - Simpan dokumen PDF akhir menggunakan
Document.save().
import aspose.pdf as ap
def create_and_add_floating_box(outfile):
# Create PDF document
with ap.Document() as document:
# Add page to pages collection of PDF
page = document.pages.add()
# Create and fill box
box = ap.FloatingBox(400, 30)
box.border = ap.BorderInfo(ap.BorderSide.ALL, 1.5, ap.Color.dark_green)
box.is_need_repeating = False
phrase = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quam odio, sollicitudin ac mauris vel, suscipit pellentesque nisi."
box.paragraphs.add(ap.text.TextFragment(phrase))
# Add box
page.paragraphs.add(box)
document.save(outfile)
Dalam contoh di atas, FloatingBox dibuat dengan lebar 400 pt dan tinggi 30 pt.
Teks secara sengaja melebihi tinggi yang tersedia, sehingga sebagian terpotong.

The is_need_repeating properti dengan nilai False membatasi render teks ke satu halaman.
Jika Anda mengatur properti ini menjadi True, teks mengalir ke halaman berikutnya pada posisi yang sama.

Fitur FloatingBox Lanjutan
Dukungan multi-kolom
Tata letak multi-kolom (kasus sederhana)
FloatingBox mendukung tata letak multi-kolom. Untuk membuat tata letak seperti itu, Anda harus menentukan nilai-nilai dari ColumnInfo properti.
column_widthsadalah string yang mendefinisikan lebar setiap kolom dalam poin.column_spacingadalah string yang mendefinisikan lebar celah antara kolom.column_countadalah jumlah kolom.
import sys
import aspose.pdf as ap
from os import path
def multi_column_layout(outfile):
# Create PDF document
with ap.Document() as document:
# Add page to pages collection of PDF
page = document.pages.add()
# Set margin settings
page.page_info.margin = ap.MarginInfo(36, 18, 36, 18)
column_count = 3
spacing = 10
width = (
page.page_info.width
- page.page_info.margin.left
- page.page_info.margin.right
- (column_count - 1) * spacing
)
column_width = width / 3
# Create FloatingBox
box = ap.FloatingBox()
box.is_need_repeating = True
box.column_info.column_widths = f"{column_width} {column_width} {column_width}"
box.column_info.column_spacing = f"{spacing}"
box.column_info.column_count = 3
phrase = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quam odio, sollicitudin ac mauris vel, suscipit pellentesque nisi."
paragraphs = [
phrase,
phrase,
phrase,
phrase,
phrase,
phrase,
phrase,
phrase,
phrase,
phrase,
]
for paragraph in paragraphs:
box.paragraphs.add(ap.text.TextFragment(paragraph))
# Add a box to a page
page.paragraphs.add(box)
# Save PDF document
document.save(outfile)
Contoh ini menghasilkan paragraf contoh dan menempatkannya ke dalam tiga kolom. Konten berlanjut ke halaman tambahan sampai semua paragraf ditampilkan.
Tata letak multi-kolom dengan memaksa awal kolom
Contoh ini menggunakan pengaturan multi-kolom yang sama, tetapi memaksa setiap paragraf yang ditambahkan untuk mulai di kolom baru. Untuk melakukannya, set is_first_paragraph_in_column = True pada setiap TextFragment sebelum menambahkannya ke FloatingBox.
import sys
import aspose.pdf as ap
from os import path
def multi_column_layout_2(outfile):
# Create PDF document
with ap.Document() as document:
# Add page to pages collection of PDF
page = document.pages.add()
# Set margin settings
page.page_info.margin = ap.MarginInfo(36, 18, 36, 18)
column_count = 3
spacing = 10
width = (
page.page_info.width
- page.page_info.margin.left
- page.page_info.margin.right
- (column_count - 1) * spacing
)
column_width = width / 3
# Create FloatingBox
box = ap.FloatingBox()
box.is_need_repeating = True
box.column_info.column_widths = f"{column_width} {column_width} {column_width}"
box.column_info.column_spacing = f"{spacing}"
box.column_info.column_count = 3
phrase = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quam odio, sollicitudin ac mauris vel, suscipit pellentesque nisi."
paragraphs = [
phrase,
phrase,
phrase,
phrase,
phrase,
phrase,
phrase,
phrase,
phrase,
phrase,
]
for paragraph in paragraphs:
text = ap.text.TextFragment(paragraph)
text.is_first_paragraph_in_column = True
box.paragraphs.add(text)
# Add a box to a page
page.paragraphs.add(box)
# Save PDF document
document.save(outfile)
Dukungan latar belakang
Terapkan warna latar belakang pada FloatingBox dalam dokumen PDF menggunakan Aspose.PDF for Python via .NET.
Dengan menetapkan sebuah Color ke background_color, Anda dapat menyorot konten untuk header, panggilan, atau bagian yang bergaya.
Cuplikan kode ini menunjukkan cara membuat kotak teks berwarna hijau muda sederhana dengan konten contoh.
import sys
import aspose.pdf as ap
from os import path
def background_support(outfile):
# Create PDF document
with ap.Document() as document:
# Add page to pages collection of PDF
page = document.pages.add()
# Create and fill box
box = ap.FloatingBox(400, 30)
box.background_color = ap.Color.light_green
box.is_need_repeating = False
box.paragraphs.add(ap.text.TextFragment("text example"))
# Add box
page.paragraphs.add(box)
# Save PDF document
document.save(outfile)
Dukungan penempatan
Posisi sebuah FloatingBox di halaman dikendalikan oleh positioning_mode, left, dan top.
Kapan positioning_mode adalah:
ParagraphPositioningMode.DEFAULT(bawaan)
Lokasi tergantung pada elemen yang telah ditambahkan sebelumnya. Menambahkan paragraf baru memengaruhi alur elemen selanjutnya. Jika left atau top bernilai tidak nol, mereka juga diterapkan.
Lokasinya ditetapkan oleh left dan top; itu tidak tergantung pada elemen sebelumnya dan tidak memengaruhi alur elemen selanjutnya.
import sys
import aspose.pdf as ap
from os import path
def offset_support(outfile):
# Create PDF document
with ap.Document() as document:
# Add page to pages collection of PDF
page = document.pages.add()
# Create and fill box
box = ap.FloatingBox(400, 30)
box.top = 45
box.left = 15
box.positioning_mode = ap.ParagraphPositioningMode.ABSOLUTE
box.border = ap.BorderInfo(ap.BorderSide.ALL, 1.5, ap.Color.dark_green)
box.paragraphs.add(ap.text.TextFragment("text example 1"))
page.paragraphs.add(ap.text.TextFragment("text example 2"))
# Add the box to the page
page.paragraphs.add(box)
page.paragraphs.add(ap.text.TextFragment("text example 3"))
document.save(outfile)
Menyelaraskan Kotak Mengambang dengan Penjajaran Vertikal dan Horizontal dalam PDF
Ratakan FloatingBox elemen pada halaman PDF menggunakan VerticalAlignment dan HorizontalAlignment di Aspose.PDF for Python via .NET. Ini membantu Anda menempatkan kontainer mengambang di posisi atas, tengah, atau bawah untuk tata letak halaman, blok header/footer, atau catatan samping.
- Buat dokumen PDF baru.
- Tambahkan halaman ke dokumen.
- Tambahkan yang pertama
FloatingBoxdengan perataan kanan bawah. - Tambahkan yang kedua
FloatingBoxdengan perataan tengah-kanan. - Tambahkan yang ketiga
FloatingBoxdengan perataan kanan atas. - Simpan dokumen.
import sys
import aspose.pdf as ap
from os import path
def align_text_to_float(outfile):
# Create PDF document
with ap.Document() as document:
# Add page to pages collection of PDF
page = document.pages.add()
# Create float box
float_box = ap.FloatingBox(100, 100)
# Set settings to float box
float_box.vertical_alignment = ap.VerticalAlignment.BOTTOM
float_box.horizontal_alignment = ap.HorizontalAlignment.RIGHT
float_box.paragraphs.add(ap.text.TextFragment("FloatingBox_bottom"))
float_box.border = ap.BorderInfo(ap.BorderSide.ALL, ap.Color.blue)
# Add float box
page.paragraphs.add(float_box)
# Create float box
float_box_2 = ap.FloatingBox(100, 100)
# Set settings to float box
float_box_2.vertical_alignment = ap.VerticalAlignment.CENTER
float_box_2.horizontal_alignment = ap.HorizontalAlignment.RIGHT
float_box_2.paragraphs.add(ap.text.TextFragment("FloatingBox_center"))
float_box_2.border = ap.BorderInfo(ap.BorderSide.ALL, ap.Color.blue)
# Add float box
page.paragraphs.add(float_box_2)
# Create float box
float_box_3 = ap.FloatingBox(100, 100)
# Set settings to float box
float_box_3.vertical_alignment = ap.VerticalAlignment.TOP
float_box_3.horizontal_alignment = ap.HorizontalAlignment.RIGHT
float_box_3.paragraphs.add(ap.text.TextFragment("FloatingBox_top"))
float_box_3.border = ap.BorderInfo(ap.BorderSide.ALL, ap.Color.blue)
# Add float box
page.paragraphs.add(float_box_3)
# Save the document
document.save(outfile)