Я написал некоторый код ReportLab, используя примеры, которые я нашел здесь , чтобы добавить номера страниц, в частности, создать функцию addPageNumber
, переданную при построении аргументов метода build
.Техника, очевидно, используется во многих других контекстах, но похоже, что аргументы onFirstPage
/ onLaterPages
едва документированы.Они, очевидно, принимают функцию, и эта функция принимает два параметра, обычно называемые canvas
и doc
, но для того, чтобы правильно прокомментировать мой код, я должен предоставить небольшое объяснение механизма.
def addPageNumber(canvas, doc):
page_num = canvas.getPageNumber()
text = "Page #%s" % page_num
canvas.drawRightString(200*mm, 20*mm, text)
doc.build(Story, onFirstPage=addPageNumber, onLaterPages=addPageNumber)
Хотя я всегда вижу объект canvas
, который передается в качестве первого аргумента, который используется во всех примерах кода, doc
, похоже, никогда не используется.Может кто-нибудь объяснить, для чего он предназначен и какой это тип объекта?И какие значения передаются методом сборки при вызове функции для аргументов canvas
и doc
?
Спасибо!
R.