Estoy tratando de agregar una simple "página x de y" a un informe hecho con ReportLab ... He encontrado this old post al respecto, pero tal vez seis años después ha surgido algo más sencillo? ^^;
He encontrado this recipe también, pero cuando lo uso, el PDF resultante falta las imágenes ..Mostrando página cuenta con ReportLab
Respuesta
que fue capaz de poner en práctica el enfoque NumberedCanvas de ActiveState. Fue muy fácil de hacer y no cambió gran parte de mi código existente. Todo lo que tuve que hacer fue agregar esa clase NumberedCanvas y agregar el atributo canvasmaker al compilar mi documento. También ha cambiado las mediciones de donde se visualiza la "x de y":
self.doc.build(pdf)
convirtió
self.doc.build(pdf, canvasmaker=NumberedCanvas)
doc es un BaseDocTemplate y pdf es mi lista de elementos que pueden fluir.
¿Aparecieron las imágenes normalmente con ese enfoque? – Joril
Tengo imágenes que se muestran en el pdf sin ningún problema. Si tiene un problema con las imágenes, ¿podría elaborar o comenzar una nueva pregunta? – adam
Parece que esta técnica rompe enlaces dentro del documento. Cuando lo usé, todos los enlaces de una parte del documento a otra parte comenzaron a navegar hasta la mitad de la primera página, en lugar de ir a sus objetivos reales. – CoreDumpError
Sólo desenterrar algo de código para usted, utilizamos la siguiente:
SimpleDocTemplate(...).build(self.story,
onFirstPage=self._on_page,
onLaterPages=self._on_page)
Ahora self._on_page
es un método que es llamada para cada página como:
def _on_page(self, canvas, doc):
# ... do any additional page formatting here for each page
print doc.page
Sí, pero la parte difícil es cómo descubrir la parte "de y" :) Es decir, la número total de páginas – Joril
uso doc.multiBuild
y en el método de cabecera de la 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))
esto funciona solo si tienes múltiples pases – jake77
- 1. Salto de página condicional en reportlab
- 2. ReportLab LayoutError: demasiado grande en la página
- 3. Varias tablas (5) una página usando ReportLab
- 4. Mostrando paginación con una sola página usando will_paginate
- 5. PDF de Python Reportlab - Centrar texto en la página
- 6. ¿Sabe una página maestra qué página se está mostrando?
- 7. Añadir salto de página al objeto de lienzo de Reportlab
- 8. Transparencia en PNG con reportlab 2.3
- 9. Cómo crear un documento PDF con diferentes tamaños de página en reportlab, python
- 10. SELECCIONAR CUENTA (*) con ORDEN POR
- 11. Django y Reportlab Pregunta
- 12. Solucionar problemas reportlab heisenbug
- 13. Reportlab 'LayoutError' manejo y depuración
- 14. Mostrando una rueda de progreso mientras carga la página
- 15. Mostrando un cuadro de comentario en ActiveAdmin Show página personalizada
- 16. ¿Cómo crear una lista con viñetas en ReportLab
- 17. Proporción de aspecto de imagen con Reportlab en Python
- 18. Mostrando la misma página de manera diferente para usuarios con diferentes roles
- 19. Python: Cómo hacer que Reportlab se mueva a la página siguiente en PDF salida
- 20. Mostrando tiempo real
- 21. Cómo repetir encabezados de columna de tabla sobre saltos de página en salida PDF de ReportLab
- 22. ¿Mostrando animación por cuadro?
- 23. Reportlab: ¿Cómo cambiar entre vertical y horizontal?
- 24. Mostrando ecuaciones Mathml
- 25. Python Uso de ReportLab de splitfirst/splitlast
- 26. HTML con caracteres hebreos mostrando raro
- 27. Mostrando imagen de carga con getJSON
- 28. cuenta de vista de página precisa en Django
- 29. Cuenta incorrecta (*) con cassandra-cql
- 30. ¿Ajustar texto en una tabla reportlab?
Tenía este mismo problema. Aquí está la receta de ActiveState que utiliza NumberedCanvas que realmente funciona: http://code.activestate.com/recipes/576832/ – Esteban