Python で PDF テーブルをデータソースと統合する方法
Contents
[
Hide
]
データフレームから PDF を作成
ザの create_pdf_from_dataframe 関数は新しい PDF を作成し、パンダのデータフレームから生成されたテーブルを挿入します。この方法は、データがすでに表形式で存在するレポートワークフローに役立ちます。
この関数は以下のステップを実行します。
- で空の PDF ドキュメントを作成
ap.Document(). - 文書にページを追加します。
- を呼び出して、データフレームを Aspose.PDF テーブルに変換します
create_table_from_dataframe(df, max_rows). - を使用してテーブルをページに追加します
page.paragraphs.add(table). - PDF を出力パスに保存します。
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)
データフレームからテーブルを作成
ザの create_table_from_dataframe 関数はデータフレームを Aspose.PDF に変換します Table どのページにも追加できるオブジェクト。
次のことを行います。
- 空欄を作成
ap.Table()インスタンス。 - 表とセルの境界線を設定すると、書式の一貫性が保たれます。
- DataFrame 列名を使用してヘッダー行を追加します。
- からデータ行を追加
df.head(max_rows). - 入力されたテーブルオブジェクトを返します。
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