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')