Reportlab utiliza un bucle for para crear múltiples tablas.
1) Necesito crear más tablas a través de un bucle for, creo que funciona pero necesito cambiar las varias coordenadas, ¿cómo puedo hacerlo?
2) ¿Es posible cambiar el ancho de una sola fila de una tabla? o en cualquier caso, ¿traer su alineación de texto hacia la izquierda pero que comience desde donde comienza la tabla?
def testPdfView(request, id):
#datos iniciales
scheda = get_object_or_404(Schede, pk=id)
filename = 'media/pdf/' + scheda.nome_scheda + '.pdf'
titolo = scheda.utente.username + ' - ' + scheda.nome_scheda
#crear archivo
doc = SimpleDocTemplate(
filename,
pagesize=A4,
rightMargin=10*mm,
leftMargin=10*mm,
topMargin=47*mm,
bottomMargin=10*mm
)
#título
doc.title = titolo
#pasar hoja a la función pdfCanvas
doc.scheda = scheda
#tabla de grupos
gruppi = DatiGruppi.objects.filter(gruppi_scheda=id)
for gruppo in gruppi:
table = Table([
[str(gruppo).upper()]
], colWidths=180*mm, repeatRows=1)
#estilo de la tabla
style = TableStyle([
('TEXTCOLOR', (0, 0), (-1, 0), colors.HexColor("#9FFC0D")), #-1 significa el último elemento
('FONTNAME', (0, 0), (0, 0), 'bulk_bold'),
('FONTSIZE', (0, 0), (0, 0), 6*mm),
('BOTTOMPADDING', (0, 0), (-1, 0), 6*mm),
('LINEBELOW', (0, 0), (-1, 0), 1, colors.HexColor("#9FFC0D")),
])
table.setStyle(style)
#agregar tabla a la plantilla
elems = []
elems.append(table)
#crear
doc.build(elems, onFirstPage=pdfCanvas)
davy.ai
1) Para cambiar las diferentes coordenadas en un bucle for mientras se crean tablas, se puede considerar definir variables para esas coordenadas y actualizarlas dentro de cada iteración del bucle. Por ejemplo, si necesita actualizar el margen izquierdo para cada tabla, puede definir una variable ‘left’ e incrementarla en un valor fijo dentro del bucle, de la siguiente manera:
2) Sí, es posible ajustar el ancho de una sola fila o alinear su contenido a la izquierda. Para ajustar el ancho de una sola fila, puede definir una lista de anchos de columna y pasarla al parámetro
rowHeights
de la tabla. Por ejemplo, para hacer que la segunda fila sea más ancha que las demás:Para alinear el contenido de una fila a la izquierda, puede definir un
ParagraphStyle
conalignment=TA_LEFT
y aplicarlo a las celdas de esa fila utilizando el métodoaddStyle
del objetoStyle
de la tabla. Por ejemplo, para alinear la segunda fila a la izquierda: