FPDF __init__ 与 Python 中的页眉和页脚相结合

FPDF __init__ combined with header and footer in Python

这将是我在 Whosebug 上的第一个 post。 我有一个关于 python 的 FPDF 包的问题。 创建定义页眉和页脚的 class 效果很好。 然而,当我尝试通过 init 初始化一些变量时,页眉和页脚将停止显示。 我用谷歌搜索了所有内容,但无法弄清楚。 有谁知道如何解决这个问题?

包含初始化的代码

import fpdf as FPDF
import pandas as pd
import lipsum
from datetime import date
import locale

db=pd.DataFrame({'Fontsize':[5,6,7,8,9,10,11,12,14,17,20,25],'Baselineskip':[6,7,8,9.5,11,12,13.6,14.5,18,22,25,30]})


class PDF(FPDF.FPDF):

    def __init__(self,fontsize):
        FPDF.FPDF.__init__(self,orientation='P',unit='mm',format='A4')
        self.set_font('Arial','',fontsize)
        self.fontsize=fontsize
        self.baseskip=db[db['Fontsize']==self.fontsize].iloc[0,1]

    def header(self):
        # Logo
        # x=110.9, y=16.1
        self.image(name='logo.png', x=110.6, y=15.9, w=72.9)
        # Arial bold 15
        self.set_font('Arial', '', 15)
        #textcolor Arcadis orange
        self.set_text_color(r=228,g=97,b=15)
        # Title
        self.text(self.l_margin, 16.1+7.7, txt='bla')

    # Page footer
    def footer(self):
        # Position at 1.5 cm from bottom
        self.set_y(-15)
        # Arial italic 8
        self.set_font('Arial', 'I', 8)
        # Page number
        self.cell(0, 10, 'Page ' + str(self.page_no()) + '/{nb}', 0, 0, 'C')


# Instantiation of inherited class
pdf = PDF(fontsize=9)
pdf.alias_nb_pages()
pdf.add_page()
pdf.c_margin=0
pdf.set_top_margin(37)
pdf.set_left_margin(25)
pdf.set_right_margin(25)
pdf.set_line_width(2/pdf.k)
pdf.set_draw_color(228,97,15)
pdf.line(pdf.l_margin,pdf.t_margin,pdf.fw-pdf.r_margin,pdf.t_margin)
pdf.set_font('Arial')
pdf.set_font_size(9)
pdf.ln(11/pdf.k)
for i in range(1, 20):
    pdf.cell(0,11/pdf.k, 'Printing line number ' + str(i), 0, 1)

pdf.multi_cell(0,11/pdf.k,lipsum.generate_words(100),align='J')
pdf.output('bla.pdf', 'F')

没有代码

class PDF(FPDF.FPDF):

    def header(self):
        # Logo
        # x=110.9, y=16.1
        self.image(name='logo.png', x=110.6, y=15.9, w=72.9)
        # Arial bold 15
        self.set_font('Arial', '', 15)
        #textcolor Arcadis orange
        self.set_text_color(r=228,g=97,b=15)
        # Title
        self.text(self.l_margin, 16.1+7.7, txt='BemalingsAdvies')

    # Page footer
    def footer(self):
        # Position at 1.5 cm from bottom
        self.set_y(-15)
        # Arial italic 8
        self.set_font('Arial', 'I', 8)
        # Page number
        self.cell(0, 10, 'Page ' + str(self.page_no()) + '/{nb}', 0, 0, 'C')

    def set_fontskip(self,fontsize):
        self.set_font_size(fontsize)
        self.fontsize=fontsize
        self.baseskip=db[db['Fontsize']==self.fontsize].iloc[0,1]

先谢谢谁开篷了

我已经找到答案了:

    def __init__(self):
        super(PDF,self).__init__()
        self.figcount=1

这段代码很有帮助。

对于那些正在尝试自己的人,享受吧。