我的代码有问题:
from reportlab.platypus import SimpleDocTemplate, PageTemplate, Frame, Paragraph, PageBreak
from reportlab.lib.pagesizes import letter
from reportlab.lib.styles import getSampleStyleSheet
def header(canvas, doc):
canvas.saveState()
canvas.setFont('Helvetica', 12)
canvas.drawString(36, letter[1] - 36, "CABEÇA")
canvas.restoreState()
def footer(canvas, doc):
canvas.saveState()
canvas.setFont('Helvetica', 12)
canvas.drawString(36, 36, "PÉZÃO")
canvas.restoreState()
pdf_filename = "exemplo.pdf"
doc = SimpleDocTemplate(pdf_filename, pagesize=letter)
styles = getSampleStyleSheet()
normal_style = styles["Normal"]
frame = Frame(36, 36, letter[0] - 72, letter[1] - 72)
template = PageTemplate(id='page_with_header_footer', frames=frame, onPage=header, onPageEnd=footer)
doc.addPageTemplates([template])
story = []
for i in range(10):
story.append(Paragraph(f"Conteúdo da Página {i + 1}", normal_style))
story.append(PageBreak())
story.pop()
doc.build(story)
我正在尝试使用reportlab生成一个文档,其中所有页面都获得页眉和页脚,但是,只有我的第一页获得页眉和页脚。我不知道还能做什么:C
我稍微修改了你的代码,添加了额外的方法来在构建上附加页眉页脚,现在正在工作
from reportlab.platypus import SimpleDocTemplate, PageTemplate, Frame, Paragraph, PageBreak
from reportlab.lib.pagesizes import letter
from reportlab.lib.styles import getSampleStyleSheet
def header(canvas, doc):
canvas.saveState()
canvas.setFont('Helvetica', 12)
canvas.drawString(36, letter[1] - 36, "CABEÇA")
canvas.restoreState()
def footer(canvas, doc):
canvas.saveState()
canvas.setFont('Helvetica', 12)
canvas.drawString(36, 36, "PÉZÃO")
canvas.restoreState()
def _header_footer( canvas, doc):
# Save the state of our canvas so we can draw on it
canvas.saveState()
styles = getSampleStyleSheet()
# Header
header(canvas, doc)
# Footer
footer(canvas, doc)
# Release the canvas
canvas.restoreState()
pdf_filename = "exemplo.pdf"
doc = SimpleDocTemplate(pdf_filename, pagesize=letter)
styles = getSampleStyleSheet()
normal_style = styles["Normal"]
frame = Frame(36, 36, letter[0] - 72, letter[1] - 72)
template = PageTemplate(id='page_with_header_footer', frames=frame)
doc.addPageTemplates([template])
story = []
for i in range(10):
story.append(Paragraph(f"Conteúdo da Página {i + 1}", normal_style))
story.append(PageBreak())
story.pop()
doc.build(story, onFirstPage=_header_footer, onLaterPages=_header_footer)