2011-01-25 6 views
10

Estoy generando algunos archivos pdf usando reportlab. Tengo una cierta sección que se repite. Contiene una cabecera y una tabla:cómo agrupar objetos en el informe, para que permanezcan juntos en las páginas nuevas

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

¿Cómo puedo grupo el párrafo con la mesa (en látex Me gustaría ponerlos en el mismo entorno) para que en caso de un freno de la página, el párrafo y tabla ¿Permanecer juntos? Actualmente, el párrafo a veces flota al final de una página y la tabla comienza en la parte superior de la página siguiente.

Respuesta

5

esta es la solución que he encontrado pasar por el código fuente reportlab:

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

me gusta usar 'historia [-1] = .keepWithNext true' ya que hace que el código más corto y más limpio y puede ser fácilmente añadidos y eliminado sin tener que cambiar el nombre de la variable. Es útil para mantener elementos en bucles juntos porque puede establecer 'story [-1] .keepWithNext = True' en el bucle y luego' story [-1] .keepWithNext = False' después del bucle para desconectar las cosas agregadas en el bucle de lo que se agrega a continuación. – jenniwren

8

Usted puede tratar de ponerlos juntos en un fluido KeepTogether, así:

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

Sin embargo tenga en cuenta que, última vez que revisé, la aplicación no era perfecta y seguiría siendo dividido artículos con demasiada frecuencia. Sé que hace un buen trabajo de mantener un único conjunto capaz de fluir que de otro modo se dividió, como si fuera a decir:

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

entonces que el párrafo no conseguiría dividida a menos que fuera imposible que no sea.

Si KeepTogether no funciona para usted, me gustaría sugerir la creación de una costumbre Flowable con su párrafo y tabla dentro de ella y luego durante el diseño hacen que su subclase personalizada Flowable no se deja que dividirse.

Cuestiones relacionadas