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.