Как узнать, какой номер страницы был загружен во время рендеринга pdf с reportlab

Как определить, на какой странице (нужен номер страницы) будет каждый поток после рендеринга в pdf. Я подумывал добавить атрибут пользовательского идентификатора к текущему, поэтому я буду знать, что это текуч. Но как я могу определить, на какой странице он будет размещен? Каков наилучший способ достичь этого?

В какой момент вам нужна эта информация? Он становится доступным по мере создания документа, поэтому вы можете получить его после рендеринга с помощью переопределяющих методов, таких как afterPage , afterDrawPage и afterFlowable . Затем вы можете получить номер страницы из класса DocTemplate (я считаю, что есть переменная класса, называемая как _currentPage , но вам нужно проверить код ReportLab, так как я не думаю, что это задокументировано).

Я закончил следующим решением. Добавлен пользовательский id flo_id для каждого потока. И переопределить метод handle_flowable в BaseDocTemplate, где была проверка и сохранение 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,] 

И после создания документа он будет доступен в экземпляре документа в переменной blocks_to_pages.