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.

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top