> On Martes 06 Abril 2010 15:25:09 Boris Perez Canedo escribió: <br />>>
> On Viernes 02 Abril 2010 14:33:23 Boris Perez Canedo escribi�: <br />>>
>> Hola, <br />>> >> <br />>> >> Es posible rotar una
tabla con su <br />>> <br />>> contenido en reportlab? Sucede que <br
/>>> > �No <br />>> <br />>> ser�a preferible cambiar la
orientaci�n a landscape en vez de portrait <br />>> <br />>> > para esas
p�ginas en concreto?� <br />>> <br />>> �Hola y gracias por <br />>>
la respuesta, <br />>> <br />>> Soy bastante nuevo con reportlab. C�mo hago
para hacer <br />>> lo que dices arriba? y c�mo puedo determinar si una consulta
me va producir <br />>> una tabla que se saldr� de los l�mites para entonces
cambiar la <br />>> orientaci�n para esas p�ginas? <br />>> <br />>>
<br />>> Saludos, <br />>> Boris. <br />>> <br />>> <br
/>>> --- <br />>> La mejor vacuna contra el virus A(H1N1) es la higiene
personal <br />>> <br />> cuando generes el documento utiliza
pagesize=landscape(A4) <br />> A4 si es el tamaño de página que usas.
<br />> Te pego el siguiente código de ejemplo de las listas de reportlab: <br
/>> def go(): <br />> doc = SimpleDocTemplate("phello.pdf") <br />>
Story = [Spacer(1,2*inch)] <br />> style = styles["Normal"] <br />> for
i in range(100): <br />> bogustext = ("This is Paragraph number %s. " % i)
*20 <br />> p = Paragraph(bogustext, style) <br />> Story.append(p) <br />>
Story.append(Spacer(1,0.2*inch)) <br />> from reportlab.lib.pagesizes import A4,
LETTER, landscape, portrait <br />> doc.pagesize = landscape(A4) <br />>
doc.build(Story, onFirstPage=myFirstPage, onLaterPages=myLaterPages) <br /><br
/>Hola, <br />Ya probe lo del landscape, pero aun asi las tablas se salen del
area, en verdad son muy grandes, lo que hice fue dividirlas en otras tablas utilizando
esta funcion:<br /><br /><font size="2">
<p>def split(table, table_style, table_align, availableSpace,tablas = []):</p>
<p>tb = Table(table)<br />tb.setStyle(table_style)<br />tb.hAlign = table_align<br />if
tb.minWidth() <= availableSpace:<br />
tablas.append(tb)</p>
<p>else:<br /> indexes = range(len(table[0]))<br
/> indexes.sort(reverse = True)<br
/> for x in indexes:<br
/> pos = x<br
/> newTable = [
y[0:x] for y in table]<br />
tb = Table(newTable)<br
/> tb.setStyle(table_style)<br
/> tb.hAlign =
table_align<br
/> if
tb.minWidth() <= availableSpace:<br
/>
tablas.append(tb)<br
/> break <br
/> splitNew = [y[pos:] for y in table]<br
/> split(splitNew, table_style, table_align,
availableSpace, tablas)<br /><br />Me funciona bastante bien, pero hay que tener cuidado
con los estilos porque si al dividir una tabla resulta una que tiene solo una columna y
el estilo general define mas de una columna te da un error de indice.<br />Tengo un
problema para definir el valor para availableSpace este debe ser igual al por ejemplo
A4[0] - 2*margen. Cómo obtengo el margen?<br /><br />Saludos,<br />Boris.<br
/><br /></p>
</font><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p></p>
<hr>
<p>La mejor vacuna contra el virus A(H1N1) es la higiene personal</p>
</body>
</html>