[英]Adding pdf page for each record in dataframe using FPDF
I trying to iterate through pandas table and add PDF page for each row using FPDF library.我尝试遍历 pandas 表并使用 FPDF 库为每一行添加 PDF 页面。 The script only adds the very last record in the table and generates one page.
该脚本仅添加表中的最后一条记录并生成一页。 I'm trying to figure out how to add a page for each record
我试图弄清楚如何为每条记录添加一个页面
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])
You can achieve that with a few edits made to your code.您可以通过对代码进行一些编辑来实现这一点。
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.