0

我正在尝试使用reportlab 生成一个PDF,该PDF 的页眉和页脚从第二页开始。

我阅读了线程: 在 ReportLab 中添加分页符到 Reportlab 画布对象非编号页面

使用这些线程中的函数,我可以使用 canvas.showPage()成功关闭标题页,并且可以使用doc.build(Story, onFirstPage=myFirstPage, onLaterPages=myLaterPages) 成功启动页眉/页脚 。

但是,当我关闭canvas.showPage()时,我的页眉和页脚从第三页开始,而不是第二页。

代码:

def firstPage(canvas,doc):
    canvas.setFont('Times-Bold',40)
    canvas.drawString(inch, pageHeight-(3*inch), 'docTitle1') #w,h,txt
    canvas.drawString(2*inch, pageHeight-(4*inch), 'docTitle2')
    canvas.showPage() #force pagebreak

def laterPages(canvas, doc):
    canvas.saveState()
    canvas.setFont('Times-Roman',9)
    canvas.setStrokeColorRGB(2,2,2) #169,169,169)

    canvas.drawString(0.5*inch, pageHeight-(0.75*inch), 'header1')
    canvas.drawString(pageWidth-inch, pageHeight-(0.75*inch), 'header2')
    canvas.drawCentredString(pageWidth/2, 0.65*inch, 'footer1')
    canvas.drawCentredString(pageWidth/2, 0.5*inch, 'footer2')
    canvas.drawString(pageWidth-inch, 0.6*inch, `doc.page`) #page number
    canvas.restoreState()

def build_pdf(elements, doc_name):
    doc = SimpleDocTemplate(doc_name)
    doc.build(elements, onFirstPage=firstPage, onLaterPages=laterPages)

elements = [title, table1, spacer]
doc_name = 'myPDF.pdf'

build_pdf(elements, doc_name)

我怎样才能停止在第一页上绘制并且仍然让 onLaterPages 从第二页开始?

4

1 回答 1

0

尝试:

doc.append(PageBreak())

用于关闭页面并打开下一个页面。

于 2012-08-06T16:20:41.073 回答