FPDF - Establecer tamaño de letra en tabla

432 views
Skip to first unread message

isi_jca

unread,
May 5, 2015, 5:24:24 PM5/5/15
to web2py-...@googlegroups.com
Hola Comunidad:

En el archivo adjunto resultado de la impresión, no he podido cambiar a un tamaño más pequeño, ¿alguién sabe como hacerlo?. A continuación transcribo el código que estoy utilizando. Desde ya muchas gracias.

Saludos cordiales.

def cobranza_pdf():
    from datetime import datetime
    import os
    todo =999999
    fecha = datetime.today()
    ls_today = str(fecha)
    ldt_fecdesde = request.args[0]
    ldt_fechasta = request.args[1]
    li_productorid = request.args[2]
    ls_fecdesde = str(ldt_fecdesde)
    ls_fechasta = str(ldt_fechasta)
    ls_fecdesde = ls_fecdesde[0:10]
    ls_fechasta = ls_fechasta[0:10]

    ls_fecdesde = ls_fecdesde.replace("-", "/");
    ls_fechasta = ls_fechasta.replace("-", "/");

    # define our FPDF class (move to modules if it is reused  frequently)
    from gluon.contrib.pyfpdf import FPDF, HTMLMixin   
    class MyFPDF(FPDF, HTMLMixin):
        def header(self):
            self.set_font('Arial','B',14)
            logo=os.path.join(request.folder, "static/images","Jujuyseguros8.png")
            self.image(logo,10,8,33)
            self.set_font('Arial','',12)
            ls_titulo = "Cobranzas a productores desde: "+ls_fecdesde+' hasta: '+ls_fechasta
            self.cell(0,40, txt=ls_titulo,ln=1,align = 'L')
            self.line(x1=10,y1 = 40,x2 =285,y2 = 40)
            self.cell(w=0.1)

        def footer(self):
            # insert my logo
            logo=os.path.join(request.folder, "static","images","Binary.jpg")
            self.image(logo,x=-10,y=-8,w=10)
            self.set_y(-15)
            self.set_font('Arial','I',8)
            txt = 'Page %s of %s' % (self.page_no(), self.alias_nb_pages())
            self.cell(0,10,txt,0,0,'C')

     #Se selecciono un productor en particular
    if (int(li_productorid) == int(todo)):
        results = db((db.tcobranza.productorid > 0) &
                        (db.tcobranza.fecrendicion >= ldt_fecdesde) &
                        (db.tcobranza.fecrendicion <= ldt_fechasta)).select()
    else:
        results = db((db.tcobranza.productorid == li_productorid) &
                         (db.tcobranza.fecrendicion >= ldt_fecdesde) &
                         (db.tcobranza.fecrendicion <= ldt_fechasta)).select()

    head = THEAD(TR(TH('Nro. Cobranza',_width="10%"),
                    TH('Productor',_width="20%"),
                    TH('Fec. Rendic.',_width="10%"),
                    TH('Cant. Polizas',_width="10%"),
                    TH('Monto a Rendir',_width="10%"),
                    TH('Monto Rendido',_width="10%"),
                    TH('Saldo',_width="10%"),
                    TH('Recepcionado por',_width="15%"),_bgcolor="#E0E0E0",_style="font-size:6px"))
   

    foot = TFOOT(TR(TH("",_width="0%"),
                    _bgcolor="#E0E0E0"))

    # Crea las filas de la tabla que formarán el cuerpo del reporte
    rows = []
    for item in results:
        col = "#FFFFFF" or "#FFFFFF"

        rows.append(TR(
                   TD(item.id,_align="left"),
                   TD(get_customer(item.productorid, 2),_align="left"),
                   TD(item.fecrendicion.strftime("%d/%m/%Y"), _align="left"),
                   TD(item.cantidadpoliza, _align="left"),
                   TD(item.montototal, _align="rigth"),
                   TD(item.montorendido, _align="rigth"),
                   TD(item.saldo, _align="rigth"),
                   TD(get_user(item.usrid), _align="left"),
                   _bgcolor=col))

    # Construye la tabla
    body = TBODY(*rows)
    table = TABLE(*[head,foot, body],  _border="1", _align="center", _width="100%",_style="font-size:6px")
  
    pdf=MyFPDF('L','mm')
    # first page:
    pdf.add_page()
    pdf.set_font('Arial','',6)
    pdf.write_html(str(XML(table, sanitize=False)))
    response.headers['Content-Type']='application/pdf'
    return pdf.output(dest='S')
cobranza.pdf

Federico Ferraro

unread,
May 6, 2015, 9:56:01 AM5/6/15
to web2py-...@googlegroups.com
Creo que agregando la etiqueta FONT a las lineas de texto de las tablas y especificando el tamaño .. 

Slds ... 

--
Has recibido este mensaje porque estás suscrito al grupo "web2py-usuarios" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a web2py-usuari...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
--
Federico Ferraro
Usuario Linux : 482533.
--

isi_jca

unread,
May 7, 2015, 3:03:30 PM5/7/15
to web2py-...@googlegroups.com
Federico:

Gracias por responder, soluccione el tema modificando la línea en la cual se escribe la tabla.

Nuevo código:

 pdf.write_html('<font size="8">' + table.xml().decode('utf-8') + '</font>')


Saludos.
Reply all
Reply to author
Forward
0 new messages