带有报告实验室的页眉和页脚

问题描述 投票:0回答:1

我的代码有问题:

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

python pdf header footer reportlab
1个回答
0
投票

我稍微修改了你的代码,添加了额外的方法来在构建上附加页眉页脚,现在正在工作

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)
© www.soinside.com 2019 - 2024. All rights reserved.