我正在使用platypus在reportlab中构建一个相当简单的文档。基本上,它是所有页面上的标题,然后是带有行项目的表格对象,该行对象将扩展到多个页面上。
我要弄清楚的是,是否有一种方法可以为第一页指定一个页面模板,并为随后的所有页面指定一个页面模板。
据我所知,您必须在故事中以一个可流动对象的形式调用NextPageTemplate,但是由于一个可流动实体占用了多个页面,因此我无法在其中进行NextPageTemplate调用。
我认为构建文档时可以指定onFirstPage模板和onLaterPages模板,但是我似乎再也找不到了。
有什么想法吗?
答案 0 :(得分:0)
好吧,我知道了。希望这会在将来对其他人有所帮助。
在SimpleDocTemplate类的构建方法中,我看到onFirstPage和onLaterPages的地方。虽然对于一个简单的报告来说,它可以很好地工作,但对我来说,这种方法是行不通的。我使用框架来指定文档的页边距,可能有更好的方法来执行此操作,而SimpleDocTemplate创建它自己的页边距框架,我对此也可能是错的。
无论如何,我继承了BaseDocTemplate的子类来覆盖handle_pageBegin方法,以告知build方法像这样切换到第二个页面模板:
def handle_pageBegin(self):
'''override base method to add a change of page template after the firstpage.
'''
self._handle_pageBegin()
self._handle_nextPageTemplate('Later')
然后,当我创建第二个页面模板命名为第二个“ Later”时,就可以在其中添加两个页面模板。
目前看来效果很好。