¿Cómo puedo continuar un contenido a la página siguiente en Reportlabs – Python?

Estoy haciendo una tabla, donde la tabla puede ser pequeña o grande, dependiendo de los datos que se reciban.

Mientras estaba proporcionando un gran conjunto de datos, noté que aunque la tabla se está haciendo pero mi contenido no está allí, ya que ocupa solo 1 página para eso.

Entonces, mi pregunta es ¿Cómo puedo continuar un contenido a una página siguiente en Reportlabs sin usar showpage() , ya que no podré saber cuándo golpear o showpage no showpage , porque el contenido se genera dinámicamente?

Código

 def plot_table(pie_labels, pie_data, city_devices): styles = getSampleStyleSheet() styleN = styles["BodyText"] styleN.alignment = TA_LEFT styleBH = styles["Normal"] styleBH.alignment = TA_CENTER city_name = Paragraph('''City Name''', styleBH) meter_name = Paragraph('''Meter Name''', styleBH) consumption = Paragraph('''Total Consumption''', styleBH) data= [[city_name, meter_name, consumption]] # Texts for label,record,device in zip(pie_labels,pie_data,city_devices): label = Paragraph(label, styleN) record = Paragraph(str(record), styleN) device_list = "" for d in device: device_list += str(d) + ", " device = Paragraph(device_list, styleN) data.append([label, device, record]) table = Table(data, colWidths=[5.05 * cm, 5.7 * cm, 3* cm ]) table.setStyle(TableStyle([('INNERGRID', (0,0), (-1,-1), 0.25, colors.black), ('BOX', (0,0), (-1,-1), 0.25, colors.black), ])) return table table = plot_table(pie_labels, pie_data, city_devices) table.wrapOn(the_canvas, width, height) table.drawOn(the_canvas, *coord(2, 59.6, cm)) 

Aconsejaría utilizar los primitivos de alto nivel de reportlab, es decir, plantillas de documentos, marcos y elementos fluidos. De esa manera, obtienes división para “gratis”. Un ejemplo de las preguntas relacionadas.

Utilice table.split() :

 from reportlab.lib.pagesizes import A4 # im using A4 width, height = A4 table_pieces = table.split(width, height) for table_piece in table_pieces: table_piece.drawOn(the_canvas, *coordinates) the_canvas.show_page() the_canvas.save() 

Dime si te ayudó 🙂