是否可以在reportlab中为首页指定一个页面模板,为后续页面指定另一个模板

时间:2018-10-09 22:03:39

标签: python reportlab

我正在使用platypus在reportlab中构建一个相当简单的文档。基本上,它是所有页面上的标题,然后是带有行项目的表格对象,该行对象将扩展到多个页面上。

我要弄清楚的是,是否有一种方法可以为第一页指定一个页面模板,并为随后的所有页面指定一个页面模板。

据我所知,您必须在故事中以一个可流动对象的形式调用NextPageTemplate,但是由于一个可流动实体占用了多个页面,因此我无法在其中进行NextPageTemplate调用。

我认为构建文档时可以指定onFirstPage模板和onLaterPages模板,但是我似乎再也找不到了。

有什么想法吗?

1 个答案:

答案 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”时,就可以在其中添加两个页面模板。

目前看来效果很好。