I am trying to include both header and footer on a single page. I referred A multiline(paragraph) footer and header in reportlab and used the method stated by Jochen and NateB80. But only the header gets generated not the footer.
def header(canvas, doc, content):
canvas.saveState()
w, h = content.wrap(doc.width, doc.topMargin)
content.drawOn(canvas, doc.leftMargin, doc.height + doc.topMargin - h)
canvas.restoreState()
def footer(canvas, doc, content):
canvas.saveState()
w, h = content.wrap(doc.width, doc.bottomMargin)
content.drawOn(canvas, doc.leftMargin, h)
canvas.restoreState()
styles = getSampleStyleSheet()
PAGESIZE = pagesizes.portrait(pagesizes.A4)
# PAGESIZE = letter
pdf = SimpleDocTemplate(filename, pagesize=PAGESIZE, leftMargin=2.2*cm, rightMargin=2.2*cm,
topMargin=1.5*cm,bottomMargin=2.5*cm)
frameh = Frame(pdf.leftMargin, pdf.bottomMargin, pdf.width, pdf.height - 2 * cm, id='normal')
header_content = Paragraph("This is a header. testing testing testing ", styles['Normal'])
templateh = PageTemplate(id='test', frames=frameh, onPage=partial(header, content=header_content))
pdf.addPageTemplates([templateh])
framef = Frame(pdf.leftMargin, pdf.bottomMargin, pdf.width, pdf.height, id='normal')
footer_content = Paragraph("This is footer. It goes on every page. ", styles['Normal'])
templatef = PageTemplate(id='test', frames=framef, onPage=partial(footer, content=footer_content))
pdf.addPageTemplates([templatef])
I also tried the below, but still, no footer is getting generated.
pdf.addPageTemplates([
PageTemplate(id='footer', frames=[frameh, framef], onPage=partial(header, content=header_content)),
])