Mengintegrasikan Tabel PDF dengan Sumber Data di Python
Contents
[
Hide
]
Buat PDF dari DataFrame
The create_pdf_from_dataframe fungsi membuat PDF baru dan menyisipkan tabel yang dihasilkan dari pandas DataFrame. Pendekatan ini berguna untuk alur kerja pelaporan di mana data Anda sudah ada dalam bentuk tabel.
Fungsi ini melakukan langkah-langkah berikut:
- Buat dokumen PDF kosong dengan
ap.Document(). - Tambahkan halaman ke dokumen.
- Ubah DataFrame menjadi tabel Aspose.PDF dengan memanggil
create_table_from_dataframe(df, max_rows). - Tambahkan tabel ke halaman dengan
page.paragraphs.add(table). - Simpan PDF ke path output.
from os import path
import sys
import pandas as pd
import aspose.pdf as ap
from config import set_license, initialize_data_dir
def create_pdf_from_dataframe(
outfile: str, df: pd.DataFrame, max_rows: int = 20
) -> None:
# Create new PDF document
document = ap.Document()
page = document.pages.add()
table = create_table_from_dataframe(df, max_rows)
# Add table object to first page of input document
page.paragraphs.add(table)
document.save(outfile)
Buat Tabel dari DataFrame
The create_table_from_dataframe fungsi mengonversi DataFrame menjadi Aspose.PDF Table objek yang dapat Anda tambahkan ke halaman mana pun.
Berikut ini yang dilakukan:
- Buat yang kosong
ap.Table()instance. - Atur batas tabel dan sel untuk format yang konsisten.
- Tambahkan baris header menggunakan nama kolom DataFrame.
- Tambahkan baris data dari
df.head(max_rows). - Kembalikan objek tabel yang telah terisi.
from os import path
import sys
import pandas as pd
import aspose.pdf as ap
from config import set_license, initialize_data_dir
def create_table_from_dataframe(df: pd.DataFrame, max_rows: int = 20) -> ap.Table:
"""Create an Aspose.PDF table from a pandas DataFrame."""
# Initializes a new instance of the Table
table = ap.Table()
# Set the table border color as LightGray
table.border = ap.BorderInfo(ap.BorderSide.ALL, 1, ap.Color.light_gray)
# Set the border for table cells
table.default_cell_border = ap.BorderInfo(
ap.BorderSide.BOTTOM, 1, ap.Color.light_gray
)
# Add header row with column names
header_row = table.rows.add()
header_row.is_row_broken = False # Prevent header row from being split across pages
for column_name in df.columns:
cell = header_row.cells.add(str(column_name))
cell.background_color = ap.Color.light_gray
# Add data rows
for row_data in df.head(max_rows).itertuples(index=False):
row = table.rows.add()
for value in row_data:
row.cells.add(str(value))
return table