Saltar al contenido

cómo agrupar objetos en reportlab, para que permanezcan juntos en páginas nuevas

Después de investigar en varios repositorios y sitios de internet al final nos encontramos con la solución que te compartiremos más adelante.

Solución:

Puedes intentar ponerlos juntos en un KeepTogether fluido, así:

Story.append(KeepTogether([Paragraph(header_string, styleH), table])

Sin embargo, tenga en cuenta que, la última vez que lo comprobé, la implementación no era perfecta y seguía dividiendo elementos con demasiada frecuencia. Sé que hace un buen trabajo al mantener unido un solo elemento que de otro modo se dividiría, como si dijeras:

Story.append(KeepTogether(Paragraph(header_string, styleH))

entonces ese párrafo no se dividiría a menos que fuera imposible que no se dividiera.

Si KeepTogether no funciona para usted, le sugiero que cree una personalizada Flowable con su párrafo y tabla dentro y luego, durante el diseño, asegúrese de que su personalizado Flowable subclase no permite que se divida.

esta es la solución que encontré revisando el código fuente de reportlab:

paragraph = Paragraph(header_string, styleH)
paragraph.keepWithNext = True
Story.append(paragraph)
Story.append(table)

Usar un ParagraphStyle en realidad podría ser mejor, así que pensé en agregarlo a esta respuesta súper antigua.

Encontré esto en su registro de cambios después de ver la respuesta de @memyself.

  * `KeepWithNext` improved:
    Paragraph styles have long had an attribute keepWithNext, but this was 
    buggy when set to True. We believe this is fixed now. keepWithNext is important 
    for widows and orphans control; you typically set it to True on headings, to 
    ensure at least one paragraph appears after the heading and that you don't get 
    headings alone at the bottom of a column. 
header = ParagraphStyle(name='Heading1', parent=normal, fontSize=14, leading=19,
                        spaceAfter=6, keepWithNext=1)

Calificaciones y comentarios

Si te ha resultado de utilidad nuestro artículo, sería de mucha ayuda si lo compartieras con el resto seniors de esta manera nos ayudas a extender nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *