Mostrando a contagem de páginas com relatórios
Pergunta
Estou tentando adicionar um simples "página x de y" a um relatório feito com o relatóriolab .. eu encontrei Este post antigo Sobre isso, mas talvez seis anos depois, algo mais direto surgiu? ^^;
eu encontrei esta receita Também, mas quando eu o uso, o PDF resultante está faltando as imagens.
Solução
Consegui implementar a abordagem NumberedCanvas do Activestate. Foi muito fácil de fazer e não mudou muito do meu código existente. Tudo o que eu precisava fazer era acrescentar essa aula de número de número e adicionar o atributo de câmbio ao criar meu médico. Eu também mudei as medidas de onde o "x de y" foi exibido:
self.doc.build(pdf)
passou a ser
self.doc.build(pdf, canvasmaker=NumberedCanvas)
Doc é um modelo baseado e pdf é minha lista de elementos fluidos.
Outras dicas
Use doc.multibuild
e no método do cabeçalho da página (definido por "onLaterpages ="):
global TOTALPAGES
if doc.page > TOTALPAGES:
TOTALPAGES = doc.page
else:
canvas.drawString(270 * mm, 5 * mm, "Seite %d/%d" % (doc.page,TOTALPAGES))
Apenas desenterrando algum código para você, usamos isso:
SimpleDocTemplate(...).build(self.story,
onFirstPage=self._on_page,
onLaterPages=self._on_page)
Agora self._on_page
é um método que é chamado para cada página como:
def _on_page(self, canvas, doc):
# ... do any additional page formatting here for each page
print doc.page