def generarPDFPriorizacionGrid(rows, filename, fecha_elaboracion=None, elaboro="", reviso="", no_ficha_inicial=1): frunt_pag2 = settings.STATIC_ROOT + '/img/ficha_priorizacion.jpg' def myFirstPage4(canvas, doc): PAGE_HEIGHT,PAGE_WIDTH = letter canvas.saveState() canvas.setPageSize(landscape(letter)) canvas.setFont('Helvetica',20) canvas.drawCentredString(380,340,"FICHAS DE PRIORIZACION PROGRAMA COLOMBIA MAYOR") canvas.drawCentredString(380,320,"TOTAL CEDULAS:" + str(len(doc.rows))) canvas.restoreState() def myLaterPages(canvas, doc): PAGE_HEIGHT,PAGE_WIDTH = letter canvas.saveState() canvas.setPageSize(landscape(letter)) canvas.drawImage(frunt_pag2, 0,0, PAGE_WIDTH,PAGE_HEIGHT ) canvas.setStrokeColorRGB(0,1,1,alpha=0.1) ficha_no = doc.page-1 #canvas.setStrokeColorRGB(0.7,0.7,0.7) canvas.setFillColorRGB(0,0,0) SHOW_GRID = False if SHOW_GRID: n = 5 s = 200 canvas.setFillColorRGB(0,0,1) canvas.setFont('Helvetica',1) for x in range(s): for y in range(s): canvas.rect(x*n,y*n, width=n, height=n, stroke=1) canvas.drawString(x*n,y*n,"%s,%s" % ((x*n),(y*n)) ) # for i in range(s): # x= i*n # y=x # canvas.drawString(x,0,"%s" % (x)) #horizontal # canvas.drawString(0,y+1,"%s" % (x)) # vertical # canvas.drawString(x,600,"%s" % (x)) #horizontal # canvas.drawString(990,y,"%s" % (x)) # vertical # # canvas.setStrokeColorRGB(0,0,1,alpha=0.7) # canvas.setFont('Helvetica',1) # for i in range(610): # #canvas.rect(35,i*2, width=0.5, height=0.5, stroke=1) # canvas.drawString(35,i,"%s -" % (i,) ) canvas.setFont('Helvetica',7) LINE_1 = 508 #fecha_elaboracion = doc.fecha_elaboracion #if not fecha_elaboracion: # fecha_elaboracion = datetime.today() canvas.drawCentredString(137,LINE_1,str(fecha_elaboracion.year)) canvas.drawCentredString(162,LINE_1,str(fecha_elaboracion.month)) canvas.drawCentredString(180,LINE_1,str(fecha_elaboracion.day)) canvas.drawCentredString(290,LINE_1,"VALLE DEL CAUCA") canvas.drawCentredString(478,LINE_1,"SANTIAGO DE CALI") canvas.drawCentredString(581,LINE_1,"7") canvas.drawCentredString(598,LINE_1,"6") canvas.drawCentredString(620,LINE_1,"0") canvas.drawCentredString(645,LINE_1,"0") canvas.drawCentredString(673,LINE_1,"1") canvas.drawCentredString(740,LINE_1,"Ficha No. %s" % (int(ficha_no)+int(no_ficha_inicial)-1)) canvas.drawCentredString(177,142,"ESAUD URRUTIA NOEL") canvas.drawCentredString(177,132,"Secretario de Desarrollo Territorial y Bienestar Social") canvas.drawCentredString(177,123,"71.993.571 de Caceres") canvas.setFont('Helvetica',5) canvas.drawString(75,115, "Elaboro: %s" % elaboro) canvas.drawString(215,115, "Reviso: %s" % reviso) LINES = [401,390, 379, 368,358, 347, 336, 325, 314, 303, 293, 282, 272, 261, 250, 238, 228, 218, 207, 197 ] LINE_1_L = 0 i=0 ini = (ficha_no*20)-20 fin = (ficha_no*20) for row in doc.rows[ini:fin]: #[total_pages:]: line = LINES[i] canvas.drawCentredString(53,line, row["fecha_inscripcion"]) canvas.drawCentredString(98,line,row["cedula"]) canvas.drawCentredString(147,line,row["apellido1"]) canvas.drawCentredString(195,line,row["apellido2"]) canvas.drawCentredString(244,line,row["nombre1"]) canvas.drawCentredString(292,line,row["nombre2"]) canvas.drawCentredString(381,line,row["direccion"]) canvas.drawCentredString(472,line,row["telefono"]) canvas.drawCentredString(512,line,row["fecha_nac_ano"]) canvas.drawCentredString(544,line,row["fecha_nac_mes"]) canvas.drawCentredString(576,line,row["fecha_nac_dia"]) canvas.drawCentredString(598,line,row["genero"]) canvas.drawCentredString(614,line,row["p_sisben_1"]) canvas.drawCentredString(627,line,row["p_sisben_2"]) canvas.drawCentredString(638,line,row["p_sisben_3"]) canvas.drawCentredString(653,line,row["p_sisben_4"]) canvas.drawCentredString(673,line,row["ubicacion"]) canvas.drawCentredString(700,line,row["tiempo_residencia"]) canvas.drawCentredString(722,line,row["condicion_am"]) canvas.drawCentredString(738,line,row["con_personas_cargo"]) canvas.drawCentredString(754,line,row["discapacitado"]) canvas.drawCentredString(768,line,row["indigena"]) i=i+1 canvas.restoreState() buff = StringIO() styleSheet = getSampleStyleSheet() doc = SimpleDocTemplate(buff, pagesize=legal, rightMargin=40,leftMargin=40, topMargin=72,bottomMargin=50) doc.rows = rows doc.fecha_elaboracion = fecha_elaboracion total_pages = int(math.ceil(float(len(rows)) / float(20)))+1 Story = [] styles=getSampleStyleSheet() styles.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY)) for i in range(total_pages): Story.append(PageBreak()) doc.build(Story, onFirstPage=myFirstPage4, onLaterPages=myLaterPages) fo = open(filename, "wb") fo.write(buff.getvalue()) fo.close() buff.close() return filename