Exemple #1
0
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