我试图在一个页面上同时包含页眉和页脚。我引用了A multiline(paragraph) footer and header in reportlab并使用了Jochen和NateB80所述的方法。但只生成页眉而不生成页脚
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])
我也尝试了下面的方法,但是仍然没有生成页脚
pdf.addPageTemplates([
PageTemplate(id='footer', frames=[frameh, framef], onPage=partial(header, content=header_content)),
])
您需要将
header
和footer
组合成一个函数,并将其放入一个PageTemplate
相关问题 更多 >
编程相关推荐