簡體   English   中英

使用 FPDF 為 dataframe 中的每條記錄添加 pdf 頁面

[英]Adding pdf page for each record in dataframe using FPDF

我嘗試遍歷 pandas 表並使用 FPDF 庫為每一行添加 PDF 頁面。 該腳本僅添加表中的最后一條記錄並生成一頁。 我試圖弄清楚如何為每條記錄添加一個頁面

import pandas as pd
from fpdf import FPDF
filename = 'alley.csv'
df= pd.read_csv(filename)

class PdfReport:
    def __init__(self, filename):
        self.filename = filename


    def generate(self, first_name,last_name, address_lane,city,zip_code, amount):
        pdf = FPDF(orientation='P', unit='pt', format='A4')
        pdf.add_page([])

        pdf.set_font(family="Times", size=24, style='B')
        pdf.cell(w=0, h=80, txt="Report Header", border=1, align="C", ln=1)
        pdf.cell(w=0, h=40, txt="Year: 2021 ", border=1,ln=1)
        pdf.cell(w=0, h=40, txt=first_name, border=1, ln=1)
        pdf.cell(w=0, h=40, txt=last_name, border=1, ln=1)
        pdf.cell(w=0, h=40, txt=address_lane, border=1, ln=1)
        pdf.cell(w=0, h=40, txt=city, border=1, ln=1)
        pdf.cell(w=0, h=40, txt=str(zip_code), border=1, ln=1)
        pdf.cell(w=0, h=40, txt=str(amount), border=1, ln=1)
        pdf.output(self.filename)

for ind in df.index:
    pdf_report= PdfReport(filename="Report1.pdf")
    pdf_report.generate(df['first_name'][ind], df['last_name'][ind], df['address_lane'][ind], df['city'][ind], df['zip_code'][ind],df['amount'][ind])

您可以通過對代碼進行一些編輯來實現這一點。

import pandas as pd
from fpdf import FPDF
filename = './alley.csv'
df = pd.read_csv(filename)

class PdfReport(FPDF):
    def __init__(self, filename):
        FPDF.__init__(self) #initializes parent class
        self.filename = filename

    def generate(self, first_name,last_name, address_lane,city,zip_code, amount):
        pdf.add_page()
        pdf.set_font(family="Times", size=24, style='B')
        pdf.cell(w=0, h=80, txt="Report Header", border=1, align="C", ln=1)
        pdf.cell(w=0, h=40, txt="Year: 2021 ", border=1,ln=1)
        pdf.cell(w=0, h=40, txt=first_name, border=1, ln=1)
        pdf.cell(w=0, h=40, txt=last_name, border=1, ln=1)
        pdf.cell(w=0, h=40, txt=address_lane, border=1, ln=1)
        pdf.cell(w=0, h=40, txt=city, border=1, ln=1)
        pdf.cell(w=0, h=40, txt=str(zip_code), border=1, ln=1)
        pdf.cell(w=0, h=40, txt=str(amount), border=1, ln=1)

pdf = PdfReport(filename)
pdf.alias_nb_pages()

for ind in df.index:
    pdf.generate(df['first_name'][ind], df['last_name'][ind], df['address_lane'][ind], df['city'][ind], df['zip_code'][ind],df['amount'][ind])

pdf.output('PDF_TEST.pdf','F')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM