Mengintegrasikan Tabel PDF dengan Sumber Data di Python

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:

  1. Buat dokumen PDF kosong dengan ap.Document().
  2. Tambahkan halaman ke dokumen.
  3. Ubah DataFrame menjadi tabel Aspose.PDF dengan memanggil create_table_from_dataframe(df, max_rows).
  4. Tambahkan tabel ke halaman dengan page.paragraphs.add(table).
  5. 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:

  1. Buat yang kosong ap.Table() instance.
  2. Atur batas tabel dan sel untuk format yang konsisten.
  3. Tambahkan baris header menggunakan nama kolom DataFrame.
  4. Tambahkan baris data dari df.head(max_rows).
  5. 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

Topik Tabel Terkait