Membuat atau Menambahkan Tabel Dalam PDF menggunakan Python
Membuat Tabel menggunakan Python
Tabel sangat penting saat bekerja dengan dokumen PDF. Mereka menyediakan fitur hebat untuk menampilkan informasi secara sistematis. Namespace Aspose.PDF berisi kelas bernama Table, Cell, dan Row yang menyediakan fungsionalitas untuk membuat tabel saat menghasilkan dokumen PDF dari awal.
Tabel dapat dibuat dengan membuat objek dari Kelas Table.
table = ap.Table()
Menambahkan Tabel dalam Dokumen PDF yang Ada
Untuk menambahkan tabel ke file PDF yang ada dengan Aspose.PDF untuk Python via .NET, lakukan langkah-langkah berikut:
- Muat file sumber.
- Inisialisasi tabel dan atur kolom serta barisnya.
- Atur pengaturan tabel (kami telah mengatur batas).
- Isi tabel.
- Tambahkan tabel ke halaman.
- Simpan file.
Cuplikan kode berikut menunjukkan cara menambahkan teks dalam file PDF yang ada.
import aspose.pdf as ap
# Memuat dokumen PDF sumber
doc = ap.Document(input_file)
# Menginisialisasi instance baru dari Table
table = ap.Table()
# Mengatur warna border tabel sebagai LightGray
table.border = ap.BorderInfo(ap.BorderSide.ALL, 5, ap.Color.from_rgb(apd.Color.light_gray))
# Mengatur border untuk sel tabel
table.default_cell_border = ap.BorderInfo(ap.BorderSide.ALL, 5, ap.Color.from_rgb(apd.Color.light_gray))
# Membuat loop untuk menambahkan 10 baris
for row_count in range(0, 10):
# Menambahkan baris ke tabel
row = table.rows.add()
# Menambahkan sel tabel
row.cells.add("Kolom (" + str(row_count) + ", 1)")
row.cells.add("Kolom (" + str(row_count) + ", 2)")
row.cells.add("Kolom (" + str(row_count) + ", 3)")
# Menambahkan objek tabel ke halaman pertama dokumen input
doc.pages[1].paragraphs.add(table)
# Menyimpan dokumen yang diperbarui yang mengandung objek tabel
doc.save(output_file)
ColSpan dan RowSpan dalam Tabel
Aspose.PDF untuk Python via .NET menyediakan properti col_span untuk menggabungkan kolom dalam tabel dan properti row_span untuk menggabungkan baris.
Kami menggunakan properti col_span
atau row_span
pada objek Cell
yang membuat sel tabel. Setelah menerapkan properti yang diperlukan, sel yang dibuat dapat ditambahkan ke tabel.
import aspose.pdf as ap
# Inisialisasi objek Document dengan memanggil konstruktor kosongnya
pdf_document = ap.Document()
pdf_document.pages.add()
# Menginisialisasi instance baru dari Table
table = ap.Table()
# Atur warna batas tabel sebagai LightGray
table.border = ap.BorderInfo(ap.BorderSide.ALL, 0.5, ap.Color.black)
# Atur batas untuk sel tabel
table.default_cell_border = ap.BorderInfo(ap.BorderSide.ALL, 0.5, ap.Color.black)
# Tambahkan baris ke-1 ke tabel
row1 = table.rows.add()
for cellCount in range(1, 5):
# Tambahkan sel tabel
row1.cells.add("Test 1" + str(cellCount))
# Tambahkan baris ke-2 ke tabel
row2 = table.rows.add()
row2.cells.add("Test 2 1")
cell = row2.cells.add("Test 2 2")
cell.col_span = 2
row2.cells.add("Test 2 4")
# Tambahkan baris ke-3 ke tabel
row3 = table.rows.add()
row3.cells.add("Test 3 1")
row3.cells.add("Test 3 2")
row3.cells.add("Test 3 3")
row3.cells.add("Test 3 4")
# Tambahkan baris ke-4 ke tabel
row4 = table.rows.add()
row4.cells.add("Test 4 1")
cell = row4.cells.add("Test 4 2")
cell.row_span = 2
row4.cells.add("Test 4 3")
row4.cells.add("Test 4 4")
# Tambahkan baris ke-5 ke tabel
row5 = table.rows.add()
row5.cells.add("Test 5 1")
row5.cells.add("Test 5 3")
row5.cells.add("Test 5 4")
# Tambahkan objek tabel ke halaman pertama dokumen input
pdf_document.pages[1].paragraphs.add(table)
# Simpan dokumen yang diperbarui berisi objek tabel
pdf_document.save(output_file)
Hasil dari eksekusi kode di bawah ini adalah tabel yang digambarkan pada gambar berikut:
Bekerja dengan Batas, Margin, dan Padding
Harap dicatat bahwa ini juga mendukung fitur untuk mengatur gaya batas, margin, dan padding sel untuk tabel. Sebelum masuk ke detail teknis lebih lanjut, penting untuk memahami konsep batas, margin, dan padding yang disajikan di bawah ini dalam diagram:
Dalam gambar di atas, Anda dapat melihat bahwa batas dari tabel, baris, dan sel saling tumpang tindih. Dengan menggunakan Aspose.PDF, sebuah tabel dapat memiliki margin dan sel dapat memiliki padding. Untuk mengatur margin sel, kita harus mengatur padding sel.
Batas
Untuk mengatur batas dari objek Table, Row, dan Cell, gunakan properti Table.border, Row.border, dan Cell.border. Perbatasan sel juga dapat diatur menggunakan properti default_cell_border dari kelas Table atau Row. Semua properti terkait perbatasan yang dibahas di atas diberikan sebagai instance dari kelas Row, yang dibuat dengan memanggil konstruktor. Kelas Row memiliki banyak overload yang mengambil hampir semua parameter yang diperlukan untuk menyesuaikan perbatasan.
Margin atau Padding
Padding sel dapat dikelola menggunakan properti default_cell_padding dari kelas Table. Semua properti terkait padding diberikan sebagai instance dari kelas MarginInfo yang mengambil informasi tentang parameter left
, right
, top
, dan bottom
untuk membuat margin khusus.
Pada contoh berikut, lebar batas sel diatur ke 0,1 poin, lebar batas tabel diatur ke 1 poin dan padding sel diatur ke 5 poin.
import aspose.pdf as ap
# Memperkenalkan objek Dokumen dengan memanggil konstruktor kosongnya
doc = ap.Document()
page = doc.pages.add()
# Memperkenalkan objek tabel
tab1 = ap.Table()
# Menambahkan tabel dalam koleksi paragraf dari bagian yang diinginkan
page.paragraphs.add(tab1)
# Mengatur lebar kolom tabel
tab1.column_widths = "50 50 50"
# Mengatur batas sel default menggunakan objek BorderInfo
tab1.default_cell_border = ap.BorderInfo(ap.BorderSide.ALL, 0.1)
# Mengatur batas tabel menggunakan objek BorderInfo yang disesuaikan
tab1.border = ap.BorderInfo(ap.BorderSide.ALL, 1)
# Membuat objek MarginInfo dan mengatur margin kiri, bawah, kanan, dan atas
margin = ap.MarginInfo()
margin.top = 5
margin.left = 5
margin.right = 5
margin.bottom = 5
# Mengatur padding sel default ke objek MarginInfo
tab1.default_cell_padding = margin
# Membuat baris dalam tabel dan kemudian sel dalam baris
row1 = tab1.rows.add()
row1.cells.add("kol1")
row1.cells.add("kol2")
row1.cells.add()
my_text = ap.text.TextFragment("kol3 dengan string teks panjang")
# Row1.Cells.Add("kol3 dengan string teks panjang untuk ditempatkan di dalam sel")
row1.cells[2].paragraphs.add(my_text)
row1.cells[2].is_word_wrapped = False
row2 = tab1.rows.add()
row2.cells.add("item1")
row2.cells.add("item2")
row2.cells.add("item3")
# Menyimpan Pdf
doc.save(output_file)
Untuk membuat tabel dengan sudut melengkung, gunakan nilai BorderInfo class rounded_border_radius dan atur gaya sudut tabel ke bulat.
import aspose.pdf as ap
tab1 = ap.Table()
graph = ap.GraphInfo()
graph.color = ap.Color.red
# Buat objek BorderInfo kosong
b_info = ap.BorderInfo(ap.BorderSide.ALL, graph)
# Atur border menjadi border melengkung dengan radius lengkung 15
b_info.rounded_border_radius = 15
# Atur gaya Sudut tabel sebagai Bulat
tab1.corner_style = ap.BorderCornerStyle.ROUND
# Atur informasi border tabel
tab1.border = b_info
Menerapkan Pengaturan AutoFit Berbeda ke Tabel
Ketika merancang tabel menggunakan alat visual seperti Microsoft Word, Anda sering menggunakan salah satu fitur AutoFit untuk menyesuaikan ukuran tabel dengan lebar yang diinginkan dengan mudah. Sebagai contoh, Anda dapat menggunakan opsi “AUTO_FIT_TO_WINDOW” untuk menyesuaikan lebar tabel dengan halaman atau AUTO_FIT_TO_CONTENT. Secara default, ketika menggunakan Aspose.Pdf untuk membuat tabel baru, itu menggunakan column_adjustment dengan nilai “Customized”. Dalam cuplikan kode berikut, kami mengatur parameter objek MarginInfo dan objek BorderInfo dalam tabel. Uji contoh dan evaluasi hasilnya.
import aspose.pdf as ap
# Memprakarsai objek Pdf dengan memanggil konstruktor kosongnya
doc = ap.Document()
# Buat bagian dalam objek Pdf
sec1 = doc.pages.add()
# Memprakarsai objek tabel
tab1 = ap.Table()
# Tambahkan tabel dalam koleksi paragraf dari bagian yang diinginkan
sec1.paragraphs.add(tab1)
# Atur lebar kolom tabel
tab1.column_widths = "50 50 50"
tab1.column_adjustment = ap.ColumnAdjustment.AUTO_FIT_TO_WINDOW
# Atur batas sel default menggunakan objek BorderInfo
tab1.default_cell_border = ap.BorderInfo(ap.BorderSide.ALL, 0.1)
# Atur batas tabel menggunakan objek BorderInfo yang dikustomisasi lainnya
tab1.border = ap.BorderInfo(ap.BorderSide.ALL, 1)
# Buat objek MarginInfo dan atur margin kiri, bawah, kanan, dan atasnya
margin = ap.MarginInfo()
margin.top = 5
margin.left = 5
margin.right = 5
margin.bottom = 5
# Atur padding sel default ke objek MarginInfo
tab1.default_cell_padding = margin
# Buat baris dalam tabel dan kemudian sel dalam baris
row1 = tab1.rows.add()
row1.cells.add("col1")
row1.cells.add("col2")
row1.cells.add("col3")
row2 = tab1.rows.add()
row2.cells.add("item1")
row2.cells.add("item2")
row2.cells.add("item3")
# Simpan dokumen yang diperbarui yang berisi objek tabel
doc.save(output_file)
Dapatkan Lebar Tabel
Terkadang, diperlukan untuk mendapatkan lebar tabel secara dinamis. Kelas Aspose.PDF.Table memiliki metode get_width() untuk tujuan ini. Misalnya, Anda belum menetapkan lebar kolom tabel secara eksplisit dan menetapkan column_adjustment ke ‘AUTO_FIT_TO_CONTENT’. Dalam hal ini, Anda dapat mendapatkan lebar tabel sebagai berikut.
import aspose.pdf as ap
# Buat dokumen baru
doc = ap.Document()
# Tambahkan halaman dalam dokumen
page = doc.pages.add()
# Inisialisasi tabel baru
table = ap.Table()
table.column_adjustment = ap.ColumnAdjustment.AUTO_FIT_TO_CONTENT
# Tambahkan baris dalam tabel
row = table.rows.add()
# Tambahkan sel dalam tabel
cell = row.cells.add("Teks Sel 1")
cell = row.cells.add("Teks Sel 2")
# Dapatkan lebar tabel
print(table.get_width())
Tambahkan Gambar SVG ke Sel Tabel
Aspose.PDF untuk Python via .NET menyediakan kemampuan untuk memasukkan sel tabel ke dalam file PDF. Ketika membangun tabel, Anda dapat menyertakan teks dan gambar di dalam sel-sel ini. Selain itu, API menawarkan fungsi untuk mengubah file SVG ke dalam format PDF. Dengan memanfaatkan fungsi-fungsi ini secara bersamaan, Anda dapat memuat gambar SVG dan menempatkannya di dalam sel tabel.
Cuplikan kode berikut menunjukkan proses pembuatan objek tabel dan menyematkan gambar SVG di dalam salah satu selnya.
import aspose.pdf as ap
# Membuat objek Dokumen
doc = ap.Document()
# Membuat instance gambar
img = ap.Image()
# Mengatur tipe gambar sebagai SVG
img.file_type = ap.ImageFileType.SVG
# Jalur untuk file sumber
img.file = DIR_INPUT_TABLE + "SVGToPDF.svg"
# Mengatur lebar untuk instance gambar
img.fix_width = 50
# Mengatur tinggi untuk instance gambar
img.fix_height = 50
# Membuat instance tabel
table = ap.Table()
# Mengatur lebar untuk sel tabel
table.column_widths = "100 100"
# Membuat objek baris dan menambahkannya ke instance tabel
row = table.rows.add()
# Membuat objek sel dan menambahkannya ke instance baris
cell = row.cells.add()
# Menambahkan textfragment ke koleksi paragraf dari objek sel
cell.paragraphs.add(ap.text.TextFragment("Sel pertama"))
# Menambahkan sel lain ke objek baris
cell = row.cells.add()
# Menambahkan gambar SVG ke koleksi paragraf dari instance sel yang baru saja ditambahkan
cell.paragraphs.add(img)
# Membuat objek halaman dan menambahkannya ke koleksi halaman dari instance dokumen
page = doc.pages.add()
# Menambahkan tabel ke koleksi paragraf dari objek halaman
page.paragraphs.add(table)
# Menyimpan file PDF
doc.save(output_file)
Sisipkan Pemisah Halaman antara baris tabel
Secara default, ketika Anda membuat tabel dalam file PDF, tabel tersebut akan meluas ke beberapa halaman jika melebihi batas bawah tabel. Namun, ada situasi di mana kita perlu memaksakan pemisah halaman setelah sejumlah baris tertentu telah ditambahkan ke tabel. Cuplikan kode berikut menguraikan proses penyisipan pemisah halaman ketika 10 baris telah dimasukkan ke dalam tabel.
import aspose.pdf as ap
# Memperkenalkan instance Dokumen
doc = ap.Document()
# Tambahkan halaman ke koleksi halaman file PDF
doc.pages.add()
# Buat instance tabel
tab = ap.Table()
# Atur gaya batas untuk tabel
tab.border = ap.BorderInfo(ap.BorderSide.ALL, ap.Color.red)
# Atur gaya batas default untuk tabel dengan warna batas Merah
tab.default_cell_border = ap.BorderInfo(ap.BorderSide.ALL, ap.Color.red)
# Tentukan lebar kolom tabel
tab.column_widths = "100 100"
# Buat loop untuk menambahkan 200 baris ke tabel
for counter in range(0, 201):
row = ap.Row()
tab.rows.add(row)
cell1 = ap.Cell()
cell1.paragraphs.add(ap.text.TextFragment("Cell " + str(counter) + ", 0"))
row.cells.add(cell1)
cell2 = ap.Cell()
cell2.paragraphs.add(ap.text.TextFragment("Cell " + str(counter) + ", 1"))
row.cells.add(cell2)
# Ketika 10 baris telah ditambahkan, render baris baru di halaman baru
if counter % 10 == 0 and counter != 0:
row.is_in_new_page = True
# Tambahkan tabel ke koleksi paragraf file PDF
doc.pages[1].paragraphs.add(tab)
# Simpan dokumen PDF
doc.save(output_file)
Render a Table on a New Page
Secara default, paragraf ditambahkan ke koleksi Paragraf objek Halaman. Namun, adalah mungkin untuk merender tabel di halaman baru alih-alih langsung setelah objek tingkat paragraf yang sebelumnya ditambahkan pada halaman tersebut.
Contoh: Cara Merender Tabel di Halaman Baru menggunakan Python
Untuk merender tabel di halaman baru, gunakan properti is_in_new_page dalam kelas BaseParagraph. Cuplikan kode berikut menunjukkan caranya.
import aspose.pdf as ap
doc = ap.Document()
page_info = doc.page_info
margin_info = page_info.margin
margin_info.left = 37
margin_info.right = 37
margin_info.top = 37
margin_info.bottom = 37
page_info.is_landscape = True
table = ap.Table()
table.column_widths = "50 100"
# Halaman ditambahkan.
cur_page = doc.pages.add()
for i in range(1, 121):
row = table.rows.add()
row.fixed_row_height = 15
cell1 = row.cells.add()
cell1.paragraphs.add(ap.text.TextFragment("Konten 1"))
cell2 = row.cells.add()
cell2.paragraphs.add(ap.text.TextFragment("HHHHH"))
paragraphs = cur_page.paragraphs
paragraphs.add(table)
table1 = ap.Table()
table1.column_widths = "100 100"
for i in range(1, 11):
row = table1.rows.add()
cell1 = row.cells.add()
cell1.paragraphs.add(ap.text.TextFragment("LAAAAAAA"))
cell2 = row.cells.add()
cell2.paragraphs.add(ap.text.TextFragment("LAAGGGGGG"))
table1.is_in_new_page = True
# Saya ingin menyimpan tabel 1 ke halaman berikutnya...
paragraphs.add(table1)
doc.save(output_file)