在渲染为pdf之后,如何确定每个页面(需要页码)都是可流动的。我想将自定义id属性添加到flowable中,所以我会知道它的流动性。但是我如何确定它将放置在哪个页面上? 实现这一目标的最佳方法是什么?
答案 0 :(得分:2)
您在什么时候需要这些信息?它在构造文档时变得可用,因此您可以在通过覆盖afterPage
,afterDrawPage
和afterFlowable
等方法进行渲染后获取它。然后,您可以从DocTemplate
类中获取页码(我相信有一个类似_currentPage
的类变量,但您需要检查ReportLab代码,因为我认为它没有记录)
答案 1 :(得分:0)
我以下面的解决方案结束了。为每个flowable添加了一个自定义id flo_id。并在BaseDocTemplate中覆盖方法handle_flowable,其中检查并保存id,
class SignDocTemplate(BaseDocTemplate):
blocks_to_pages = {}
def handle_flowable(self, flowables):
f = flowables[0]
BaseDocTemplate.handle_flowable(self, flowables)
if hasattr(f,'flo_id'):
if self.blocks_to_pages.has_key(self.canv._pageNumber):
self.blocks_to_pages[self.canv._pageNumber].append(f.flo_id)
else:
self.blocks_to_pages[self.canv._pageNumber]= [f.flo_id,]
在构建doc之后,它将在blocks_to_pages变量的文档实例中可用。