【发布时间】:2014-02-24 20:05:32
【问题描述】:
def analysis_report(request):
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment;filename=ANALYSIS_REPORT.pdf'
buffer = StringIO()
doc = SimpleDocTemplate(buffer)
doc.sample_no = 12345
document = []
doc.build(document, onLaterPages=header_footer)
def header_footer(canvas, doc):
canvas.saveState()
canvas.setFont("Times-Bold", 11)
canvas.setFillColor(gray)
canvas.setStrokeColor('#5B80B2')
canvas.drawCentredString(310, 800, 'HEADER ONE GOES HERE')
canvas.drawString(440, 780, 'Sample No: %s' %doc.sample_no)
canvas.setFont('Times-Roman', 5)
canvas.drawString(565, 4, "Page %d" % doc.page)
上面的代码我可以打包显示页码,但我的问题是如何显示“Y 的第 X 页”,其中 Y 是页数,X 是当前页。
我关注了这个http://code.activestate.com/recipes/546511-page-x-of-y-with-reportlab/,但他们使用 canvasmaker 进行了解释,因为我在构建中使用了 OnlaterPages 参数。
我如何使用 canvasmaker 实现上述目标,或者是否有任何使用 OnLaterPages 的解决方案?
【问题讨论】:
-
我认为您误解了链接文章提供的解决方案。他们的方式覆盖了画布的保存功能。如果你想用鸭嘴兽来做这件事(我假设这是因为你引用了
onlaterpages),这里至少提到了另一种方法stackoverflow.com/questions/637800/…