예제 #1
0
    def __reminders(self):
        self.l = 800
        p = PageBreak()
        p.drawOn(self.c, 0, 1000)
        self.c.showPage()

        self.c.setFont('Courier', 14)
        self.c.drawString(30, self.l, 'Recordatorio de pagos')

        header = ['Fecha', 'Descripcion', 'Monto']
        data = [header]

        for rem in self.reminders:
            data.append([rem.start_date, rem.description,
                rem.amount])

        self.l -= len(data) * 19
        t = Table(data)
        t.setStyle(TableStyle([('INNERGRID', (0,0), (-1,-1), 0.25, black),
            ('BOX', (0,0), (-1,-1), 0.25, black),
            ('FONTNAME', (0,0), (-1,0), 'Courier-Bold'),
            ('BACKGROUND', (0,0), (-1,0), HexColor('#efeded')),
            ('BACKGROUND', (0,0), (0,-1), HexColor('#efeded')),
            ('FONTSIZE', (0,0), (-1,0), 12),
            ('FONTSIZE', (0,1), (-1,-1), 8),
            ('FONTNAME', (0,1), (-1,-1), 'Courier')]))
        t.wrapOn(self.c, 30, self.l)
        t.drawOn(self.c, 30, self.l)
예제 #2
0
 def draw_items(self, invoice, canvas):
     """Draw items into a nice table."""
     data = [[_("Description"), _("Qty"), _("Unit price"), _("Tax"), _("Total")]]
     for item in invoice.items.all():
         data.append(
             [
                 item.description,
                 item.quantity,
                 format_currency(item.unit_price),
                 str(item.tax) + "%",
                 format_currency(item.total),
             ]
         )
     data.append([u"", u"", u"", _("Total") + u":", format_currency(invoice.total)])
     table = Table(data, colWidths=[10 * cm, 1.2 * cm, 2.5 * cm, 1.4 * cm, 2.8 * cm])
     table.setStyle(
         [
             ("FONT", (0, 0), (-1, -1), self.FONT_NAME),
             ("FONTSIZE", (0, 0), (-1, -1), 10),
             ("TEXTCOLOR", (0, 0), (-1, -1), (0.2, 0.2, 0.2)),
             ("GRID", (0, 0), (-1, -2), 1, (0.7, 0.7, 0.7)),
             ("GRID", (-2, -1), (-1, -1), 1, (0.7, 0.7, 0.7)),
             ("ALIGN", (1, 0), (-1, -1), "RIGHT"),
             ("BACKGROUND", (0, 0), (-1, 0), (0.8, 0.8, 0.8)),
         ]
     )
     tw, th, = table.wrapOn(canvas, 15 * cm, 19 * cm)
     table.drawOn(canvas, 1.5 * cm, self.baseline - th)
     self.baseline = -26 * cm
예제 #3
0
    def pdf(self):
        """
        Metodo pdf:
        Este metodo genera el pdf, y en el nombre
        le pone la fecha en la que es generado
        utilizamos canvas, y llamamos al metodo tabla
        para agregar la tabla al pdf
        """

        titulos = [
            ["MATRICULA", "VEHICULO", "KILOMETROS", "FECHA ENTRADA", "CLIENTE", "CIF/NIF", "TELEFONO", "DIRECCION"]]
        clientes = titulos + list(self.cursor.execute("select * from taller"))
        tabla = Table(clientes)

        estilo = TableStyle([('GRID', (0, 0), (-1, -1), 2, colors.white),
                             ('BACKGROUND', (0, 1), (-1, -1), colors.lightblue),
                             ('BACKGROUND', (0, 0), (-1, 0), colors.lightred)])
        tabla.setStyle(estilo)

        canvas = canvas.Canvas(self.historialpdf, pagesize=letter)
        canvas.drawString(20, 800, "Impresion lista clientes")

        tabla.wrapOn(canvas, 20, 30)
        tabla.drawOn(canvas, 20, 600)
        canvas.save()

        self.popup("PDF Generado")
예제 #4
0
    def __budgets_spent(self):
        self.l = 800
        p = PageBreak()
        p.drawOn(self.c, 0, 1000)
        self.c.showPage()

        self.c.setFont('Courier', 14)
        self.c.drawString(30, self.l, 'Budgets')

        header = ['Nombre', 'Gastado', 'Balance', 'Limite']
        data = [header]

        for bud in self.budgets:
            data.append([bud.name, bud.spent,
                bud.balance, bud.limit])

        self.l -= len(data) * 19
        t = Table(data)
        t.setStyle(TableStyle([('INNERGRID', (0,0), (-1,-1), 0.25, black),
            ('BOX', (0,0), (-1,-1), 0.25, black),
            ('FONTNAME', (0,0), (-1,0), 'Courier-Bold'),
            ('BACKGROUND', (0,0), (-1,0), HexColor('#efeded')),
            ('BACKGROUND', (0,0), (0,-1), HexColor('#efeded')),
            ('FONTSIZE', (0,0), (-1,0), 12),
            ('FONTSIZE', (0,1), (-1,-1), 8),
            ('FONTNAME', (0,1), (-1,-1), 'Courier')]))
        t.wrapOn(self.c, 30, self.l)
        t.drawOn(self.c, 30, self.l)
예제 #5
0
def draw_table(c):
    cw, rh = 40, 32
    data = [
            ['00', '01', '02', '03', '04'],
            ['10', '11', '12', '13', '14'],
            ['20', '21', '', '23', '24'],
            ['30', '31', '32', '33', '34'],
            ['40', '41', '42', '43', '44']
           ]
    t = Table(
            data,
            style=[
                ('GRID', (0, 0), (-1, -1), 0.5, colors.grey),
                ('GRID', (1, 1), (-2, -2), 1, colors.green),
                ('BOX', (0, 0), (1, -1), 2, colors.red),
                ('BOX', (0, 0), (-1, -1), 2, colors.black),
                ('LINEABOVE', (1, 2), (-2, 2), 1, colors.blue),
                ('LINEBEFORE', (2, 1), (2, -2), 1, colors.pink),
                ('BACKGROUND', (0, 0), (0, 1), colors.pink),
                ('BACKGROUND', (1, 1), (1, 2), colors.lavender),
                ('BACKGROUND', (2, 2), (2, 3), colors.orange),
                ('ALIGN', (0, 0), (4, 4), 'CENTER'),
                ('VALIGN', (0, 0), (4, 4), 'MIDDLE'),
                ],
            colWidths=[cw] * len(data[0]),
            rowHeights=[rh] * len(data),)
    w, h = t.wrapOn(c, W, H)
    t.drawOn(c, (W - w) // 2, (H - h) // 2)
예제 #6
0
def tmplPage(canvas, doc):  # шаблон страницы
    canvas.saveState()

    class rotateText(Flowable): # определение класса поворачиваемого текста на 90 градусов
        def __init__(self, text):
            self.text = text
            self.parag = Paragraph(self.text, styleSheet)

        def wrap(self, availWidth, availHeight):
            return -availWidth, availHeight

        def draw(self):
            self.canv.rotate(90)
            self.parag.wrapOn(self.canv, self._fixedHeight, self.parag._fixedWidth)
            self.parag.drawOn(self.canv, 0, 0)

    dataTable = [[u'Инвен-\nтарный\nномер', u'Дата', u'Обозначение', rotateText(u'Кол. листов'), # заголовок таблицы
               rotateText(u'Формат'), u'Наименование', u'Кем\nвыпу-\nщен',
               Paragraph(u'Подпись\nо\nприем-\nке до-\nкумента', styleSheet), u'При-\nмечание']]

    t = Table(dataTable, columnWidths, 18*mm) # формирование таблицы
    t.setStyle(tabStyle) # присвоение таблице стиля
    t.wrapOn(canvas, *pagesizes.A4)
    t.drawOn(canvas, 20*mm, pagesizes.A4[1] - (pagesizes.A4[1] - rowHeight*rowCount - t._height)/2 - t._height + Hoffset) # отрисовка таблицы
    canvas.drawString(pagesizes.A4[0] - 10*mm, 5*mm, str(doc.page)) # отрисовка номера страницы
    canvas.restoreState()
예제 #7
0
 def draw_table(width_columns, data):
     table = Table(data, style=TABLE_STYLE, colWidths=width_columns)
     _, new_current_h = table.wrapOn(self.pdf, current_w, current_h)
     table.drawOn(
         self.pdf, current_x, self.height - current_y - new_current_h)
     self.position_y = current_y + max(new_current_h, current_h)
     return
예제 #8
0
 def draw_items(self, invoice, canvas):
     # Items
     data = [[_('Quantity'), _('Description'), _('Amount'), _('Total')], ]
     for item in invoice.items.all():
         data.append([
             item.quantity,
             item.description,
             format_currency(item.unit_price),
             format_currency(item.total)
         ])
     data.append(
         [u'', u'', _('Total') + u":", format_currency(invoice.total)]
     )
     table = Table(data, colWidths=[1.7*cm, 11*cm, 2.5*cm, 2.5*cm])
     table.setStyle([
         ('FONT', (0, 0), (-1, -1), self.FONT_NAME),
         ('FONTSIZE', (0, 0), (-1, -1), 10),
         ('TEXTCOLOR', (0, 0), (-1, -1), (0.2, 0.2, 0.2)),
         ('GRID', (0, 0), (-1, -2), 1, (0.7, 0.7, 0.7)),
         ('GRID', (-2, -1), (-1, -1), 1, (0.7, 0.7, 0.7)),
         ('ALIGN', (-2, 0), (-1, -1), 'RIGHT'),
         ('BACKGROUND', (0, 0), (-1, 0), (0.8, 0.8, 0.8)),
     ])
     tw, th, = table.wrapOn(canvas, 15*cm, 19*cm)
     table.drawOn(canvas, 1.5*cm, self.baseline-th)
     self.baseline = -26*cm
예제 #9
0
파일: pdf.py 프로젝트: qu0zl/GOM
def drawForceUnitsPlatypusTable(p, force, WIDTH, HEIGHT):
    styleSheet = getSampleStyleSheet()
    TABLE_WIDTH=.9*WIDTH
    TABLE_HEIGHT=.65*HEIGHT

    desc=paragraph.Paragraph('''
    <para align=center spaceb=3>blah blah blah blah blah blah blah blah blah blah long description of some very uniteresting force.</para>''', styleSheet["BodyText"])
    unitTitle = paragraph.Paragraph('''
                <para align=center spaceb=3>Unit</para>''',
                styleSheet["BodyText"])
    countTitle = paragraph.Paragraph('Count', styleSheet['BodyText'])
    costTitle = paragraph.Paragraph('Cost', styleSheet['BodyText'])
    units = getForceUnits(force)
    data= [ [unitTitle, countTitle, costTitle]]
    count = int(0)
    for unit in units:
        namePara = paragraph.Paragraph(unit.name, styleSheet['BodyText'])
        data.append([namePara, units[unit], units[unit]*unit.cost])
        print 'appending [%s][%d][%d]' % (namePara, units[unit], units[unit]*unit.cost)
        count = count+1
    print 'i think last cell is 2,%d' % (count-1)
    t=Table(data,style=[('BACKGROUND', (0, 0), (2, 0), colors.darkgrey),
                        ('TEXTCOLOR', (0, 0), (2,0), colors.white),
                        ('BACKGROUND', (0, 1), (2,count-2), colors.white),
                        ('GRID',(0,0),(-1,-1),0.5,colors.black),
                        ('ALIGN',(0,0),(-1,-1),'CENTER'),
    ], colWidths=[.68*TABLE_WIDTH, .17 * TABLE_WIDTH, .15 * TABLE_WIDTH])

    t.wrapOn(p, TABLE_WIDTH, TABLE_HEIGHT)

    t.drawOn(p, (WIDTH-TABLE_WIDTH)/2, .02*HEIGHT)
    return p
예제 #10
0
    def setFooter(self, pageNumber):
        """
        sets all footer information per page, add page info, footer bar, and privacy info, aligned on the bottom center of the page
        :param pageNumber:
        :return:
        """
        companyLogoW = self.setCompanyLogo()
        companyLogoW += 5 if companyLogoW else 0 # add 5 for padding if company logo exists
        self.canvas.setLineWidth(width=1)
        self.canvas.setFillColor(lightslategray)
        self.canvas.setStrokeColor(black)
        self.canvas.rect(self.marginSize+companyLogoW, self.header, (self.pageWidth-(self.marginSize*2))-companyLogoW, (self.marginSize/2), fill=True, stroke=True)
        self.canvas.setFillColor(black)
        # footer text
        self.canvas.setFont(self.fontType, 9)
        self.canvas.drawRightString(self.pageWidth-(self.marginSize*1.25), (self.marginSize*1.625),"%s Page - %d" % (self.pageInfo, pageNumber))

        # set privacy info on the bottom of the page
        privacyInfo = {'msg1':"CONFIDENTIAL: The images, artwork and other materials displayed are the proprietary property of %s."%self.companyName,
                       'msg2':"Any unauthorized use, printing, copying or distribution of such images, artwork and materials is strictly prohibited. All rights reserved.",
                       'textColor':self.textColor,
                       'fontName':self.fontType,
                       'size':7}
        shotName = Paragraph('''<para align=center spaceb=3>
                                  <font name=%(fontName)s size=%(size)s color=%(textColor)s>%(msg1)s<br/>
                                  %(msg2)s</font></para>'''%privacyInfo, self.styles['BodyText'])
        privacyTable = Table([[shotName]], colWidths=(self.pageWidth-(self.marginSize*2)))
        privacyTable.setStyle(TableStyle([('VALIGN',(-1,-1),(-1,-1),'TOP')]))
        privacyTable.wrapOn(self.canvas, self.marginSize, 10)
        privacyTable.drawOn(self.canvas, self.marginSize, 10)
예제 #11
0
    def pdf(self):
        """
        Metodo pdf:
        Este metodo genera el pdf, y en el nombre
        le pone la fecha en la que es generado
        utilizamos canvas, y llamamos al metodo tabla
        para agregar la tabla al pdf
        """
        self.canvas = canvas.Canvas(self.historialpdf, pagesize=letter)
        titulos = [
            ["DNI", "NOMBRE", "APELLIDOS", "DIRECCION", "TELEFONO", "FNACIMIENTO"]]
        clientes = titulos + list(self.cursor.execute("select * from CLIENTE"))
        tabla = Table(clientes)

        estilo = TableStyle([('GRID', (0, 0), (-1, -1), 2, colors.white),
                             ('BACKGROUND', (0, 1), (-1, -1), colors.lightblue),
                             ('BACKGROUND', (0, 0), (-1, 0), colors.lightcoral)])
        tabla.setStyle(estilo)


        self.canvas.drawString(20, 800, "Impresion lista clientes")

        tabla.wrapOn(self.canvas, 20, 30)
        tabla.drawOn(self.canvas, 20, 600)
        self.canvas.save()

        self.popup("PDF Generado")
def drawWeeksTable(pdf,weeks,month,year):
    print("Drawing "+str(month)+" - "+str(year))
    data = []
    week_dates =[]
    for week in weeks.keys():
        start = week[0].strftime("%d/%m")
        end = week[1].strftime("%d/%m")
        if week[0].month == week[1].month:
            week_dates.append(start+" - "+end)
        elif (week[0].month < month and week[0].year == year) or (week[0].year < year):
            week_dates.append("    - " + end)
        elif week[1].month > month:
            week_dates.append(start + " -    ")
    data.append(week_dates)
    week_values = list(weeks.values())
    week_values_str = []
    for value in week_values:
        week_values_str.append(str(value)+" €")
    data.append(week_values_str)
    rowHeights = len(data)*[25]
    t=Table(data,rowHeights=rowHeights)
    t.setStyle(TableStyle([('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
                           ('ALIGN',(0,0),(-1,-1),'CENTER'),
                           ('VALIGN',(0,0),(-1,-1),'MIDDLE'),
                           ('FONTSIZE', (0, 0), (-1, -1), 15),
                           ]))
    pdf.setFont("Helvetica", 18)
    pdf.drawString(50, 320, 'Ausgaben pro Woche')
    pdf.line(50, 318, 225, 318)
    t.wrapOn(pdf, 500, 300)
    t.drawOn(pdf, 50, 250)
예제 #13
0
def create_doc_details(c, table_header, table_body, table_footer):
    w, h = A4
    document_details = []

    c.setFont("Helvetica", 8)

    document_details.append(table_header)
    for detail in table_body:
        document_details.append (detail)
    document_details.append(table_footer)

    ts = [
            ('FONT', (0,0), (-1,-1), 'Times-Roman', 8),
            ('ALIGN', (1,1), (-1,-1), 'CENTER'),
            ('LINEABOVE', (0,0), (-1,0), 1, purple),
            ('LINEBELOW', (0,0), (-1,0), 1, purple),
            ('FONT', (0,0), (-1,0), 'Times-Bold', 6),
            ('LINEABOVE', (0,-1), (-1,-1), 1, purple),
            ('LINEBELOW', (0,-1), (-1,-1), 0.5, purple,1, None, None, 4,1),
            ('LINEBELOW', (0,-1), (-1,-1), 1, red),
            ('FONT', (0,-1), (-1,-1), 'Times-Bold'  ),
        ]
    table = Table(document_details, style=ts, colWidths=35)
    aW = w
    aH = h
    w1,h1 = table.wrap(aW, aH)# find required
    if w<=aW and h<=aH:
        table.drawOn(c, inch ,h - h1 - inch*2.5 )
    else:
        raise ValueError, "Not enough room"
예제 #14
0
파일: pdf.py 프로젝트: solidarium/correios
    def _posting_list_table(self, canvas, x1, y1, x2, y2, shipping_labels):
        style = self.table_style[:]
        table = [self.table_header]
        for i, shipping_label in enumerate(shipping_labels, start=1):
            row = (
                str(shipping_label.tracking_code),
                str(shipping_label.receiver.zip_code),
                str(shipping_label.package.posting_weight),
                self.yes if ExtraService.get(EXTRA_SERVICE_AR) in shipping_label else self.no,
                self.yes if ExtraService.get(EXTRA_SERVICE_MP) in shipping_label else self.no,
                self.yes if shipping_label.has_declared_value() else self.no,
                str(shipping_label.value).replace(".", ",") if shipping_label.value is not None else "",
                str(shipping_label.invoice_number),
                shipping_label.get_package_sequence(),
                shipping_label.receiver.name[:self.max_receiver_name_size],
            )

            # noinspection PyTypeChecker
            table.append(row)

            if i % 2:
                style.append(('BACKGROUND', (0, i), (-1, i), colors.lightgrey))

        table_flow = Table(
            table,
            colWidths=self.col_widths,
            style=TableStyle(style),
        )
        w, h = table_flow.wrap(0, 0)
        table_flow.drawOn(canvas, x1, y2 - h - 50 * mm)
예제 #15
0
파일: pdf.py 프로젝트: k4ml/jazzpos
def draw_order_items(canvas, order_items):
    data = [[u'Item', u'Kuantiti', u'Harga (RM)', u'Jumlah (RM)'], ]
    for item in order_items:
        data.append([
            item.item.name,
            item.qty,
            '%.2f' % item.item.price_sale,
            '%.2f' % item.total
        ])
    data.append(['Jumlah Keseluruhan: RM%.2f' % item.order.total, '', '', ''])
    table = Table(data, colWidths=[11 * cm, 2 * cm, 3 * cm, 3 * cm], hAlign='LEFT', repeatRows=1)
    table.setStyle([
        ('FONT', (0, 0), (-1, -1), 'Helvetica'),
        ('FONTSIZE', (0, 0), (-1, -1), 10),
        ('TEXTCOLOR', (0, 0), (-1, -1), (0.2, 0.2, 0.2)),
        #('GRID', (0, 0), (-1, -2), 1, (0.7, 0.7, 0.7)),
        #('GRID', (-2, -1), (-1, -1), 1, (0.7, 0.7, 0.7)),
        ('ALIGN', (2, 0), (-1, -1), 'RIGHT'), # price, total
        #('BACKGROUND', (2, 0), (-1, -1), colors.yellow), # price, total
        ('ALIGN', (1, 0), (-1, -1), 'CENTER'), # qty
        #('BACKGROUND', (0, 0), (0, -1), colors.yellow), # item
        ('LEFTPADDING', (0, 0), (0, -1), 0), # item
        #('BACKGROUND', (0, 0), (-1, 0), (0.8, 0.8, 0.8)),
        ('LINEBELOW', (0, 0), (-1, 0), 1, colors.black),
        ('LINEBELOW', (0, -2), (-1, -2), 1, colors.black),
    ])
    return table
    tw, th, = table.wrapOn(canvas, 15 * cm, 19 * cm)
    table.drawOn(canvas, 1 * cm, -4 * cm - th)
    return tw, th
def drawBalanceTable(pdf,budget,spent,payback,x,y):
    data = [['Gesamtausgaben',str(spent)+" €"],
            ['Budget pro Monat', str(budget)+" €"],
            ['Rückzahlung', str(payback)+" €"]]
    balance = round(payback+budget-spent,2)

    style =[('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
                           ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
                           ('VALIGN', (0, 0), (-1, -1), 'TOP'),
                           ('FONTSIZE', (0, 0), (-1, -1), 15),
                           ]
    if balance > 0 :
        balance_str = "Suffizit"
        style.append(['BACKGROUND', (0, 3), (1, 3), colors.lightgreen])
    else:
        balance_str = "Defizit"
        style.append(['BACKGROUND', (0, 3), (1, 3), colors.rgb2cmyk(255, 150, 110)])

    data.append([balance_str,str(balance)+" €"])

    rowHeights = len(data) * [25]
    pdf.drawString(x, y+110, 'Bilanz')
    pdf.line(x, y+108, x+50, y+108)
    t = Table(data,rowHeights=rowHeights)
    t.setStyle(TableStyle(style))
    t.wrapOn(pdf, 500, 300)
    t.drawOn(pdf, x, y)
    return t
예제 #17
0
def draw_seats_table(c, x, y, transaction: Transaction):
    table_style = TableStyle([
        ('BOX', (0, 0), (-1, -1), 1, colors.black),
        ('GRID', (0, 0), (-1, -1), 1, colors.black),
        ('BACKGROUND', (0, 0), (-1, -1), colors.gray),
        ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
        ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
        ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
    ])

    table_data = [['Seat number', 'Ticket type', 'Price']]
    for seat in transaction.seats:
        table_data.append([
            seat.seat_number, seat.ticket_type.name,
            '£{:.2f}'.format(seat.ticket_type.price)
        ])
    table_data.append([[]])
    table_data.append(
        ['VAT', '', '£{:.2f}'.format(transaction.get_cost() * 0.2)])
    table_data.append(['Total', '', '£{:.2f}'.format(transaction.get_cost())])

    f = Table(table_data, style=table_style)
    f.wrapOn(c, 400, 100)
    table_width, table_height = f.wrap(0, 0)

    # Magic numbers 17 just works lol, 715 is the height of the top of 'Movie:'
    f.drawOn(c, x - table_width - 17, y - table_height)
예제 #18
0
 def header_table(c, pos):
     data = [
         [
             Paragraph("ESTADO DE CUENTA", p8), '', '', '', '', '', '',
             ''
         ],
         [
             Paragraph("FECHA VENCIMIENTO", p9),
             Paragraph("FACTURA", p9),
             Paragraph("NRO LETRA", p9),
             Paragraph("NUMERO UNICO", p9),
             Paragraph("BANCO", p9),
             Paragraph("MONTO LETRA", p9),
             Paragraph("COSTO RETIRO LETRA", p9),
             Paragraph("MONTO TOTAL", p9)
         ],
     ]
     hTable = Table(data, colWidths=col_widths, rowHeights=(32))
     hTable.setStyle(
         TableStyle([
             ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
             ('BOX', (0, 0), (-1, -1), 1, blue1),
             ('TEXTCOLOR', (0, 1), (-1, -1), blue2),
             ('SPAN', (0, 0), (-1, 0)),
             #('BACKGROUND',(0, 1),(-1,-1), colors.blue)
         ]))
     hTable.wrapOn(c, 120, 500)
     hTable.drawOn(c, pos_left, pos)
예제 #19
0
 def tabla(self, pdf, y):
     # Creamos una tupla de encabezados para nuestra tabla
     encabezados = ('FECHA', 'BENEFICIARIO', 'CTRO MEDICO', 'DOCTOR',
                    'CLAVE', 'OBS')
     # Creamos una lista de tuplas que van a contener a las personas
     detalles = [(c.fecha_ingreso,
                  c.beneficiario.nombre + ' ' + c.beneficiario.apellidos,
                  c.centromedico, c.doctor, c.estado_clave, c.observaciones)
                 for c in Solicitud_Cirugia.objects.all()]
     # Establecemos el tamaño de cada una de las columnas de la tabla
     detalle_orden = Table(
         [encabezados] + detalles,
         colWidths=[2 * cm, 4 * cm, 5.7 * cm, 3 * cm, 1.5 * cm])
     # Aplicamos estilos a las celdas de la tabla
     detalle_orden.setStyle(
         TableStyle([
             # La primera fila(encabezados) va a estar centrada
             ('ALIGN', (0, 0), (3, 0), 'CENTER'),
             # Los bordes de todas las celdas serán de color negro y con un grosor de 1
             ('GRID', (0, 0), (-1, -1), 1, colors.black),
             # El tamaño de las letras de cada una de las celdas será de 10
             ('FONTSIZE', (0, 0), (-1, -1), 10),
         ]))
     # Establecemos el tamaño de la hoja que ocupará la tabla
     detalle_orden.wrapOn(pdf, 800, 600)
     # Definimos la coordenada donde se dibujará la tabla
     detalle_orden.drawOn(pdf, 60, y)
예제 #20
0
    def tabla(self, pdf, y):
        #Creamos una tupla de encabezados para neustra tabla
        encabezados = ('No.', 'Fecha', 'Nombre', 'Pago', 'Subtotal', 'Desc.',
                       'Total')
        #Creamos una lista de tuplas que van a contener a las personas
        detalles = [(p.id, p.fecha, p.abonado, p.pago, p.subtotal,
                     p.total_descuento, p.total_general)
                    for p in Recaudacion.objects.all()]
        #Establecemos el tamaño de cada una de las columnas de la tabla
        detalle_orden = Table([encabezados] + detalles,
                              colWidths=(25, 55, 185, 100, 50, 50, 65))
        #Aplicamos estilos a las celdas de la tabla
        detalle_orden.setStyle(
            TableStyle([
                #La primera fila(encabezados) va a estar centrada
                ('ALIGN', (0, 0), (3, 0), 'CENTER'),
                #Los bordes de todas las celdas serán de color azul y con un grosor de 1
                ('GRID', (0, 0), (6, -1), 1, colors.dodgerblue),
                ('LINEBELOW', (0, 0), (-1, 0), 2, colors.darkblue),
                ('BACKGROUND', (0, 0), (-1, 0), colors.dodgerblue),
                #El tamaño de las letras de cada una de las celdas será de 10
                ('FONTSIZE', (0, 0), (-1, -1), 9),
            ]))

        #Establecemos el tamaño de la hoja que ocupará la tabla
        detalle_orden.wrapOn(pdf, 800, 600)
        #Definimos la coordenada donde se dibujará la tabla
        detalle_orden.drawOn(pdf, 40, y)
예제 #21
0
    def tabla(self, pdf, y):

        # Creamos una tupla de encabezados para nuestra tabla
        encabezados = ('RAZON SOCIAL', 'LOCALIDAD', 'DOMICILIO', 'TELEFONO')
        # Creamos una lista de tuplas que van a contener a lOS CENTROS MEDICOS
        detalles = [(centromedico.razonSocial, centromedico.localidad,
                     centromedico.domicilio, centromedico.telefono)
                    for centromedico in CentroMedico.objects.all()]
        # Establecemos el tamaño de cada una de las columnas de la tabla
        detalle_orden = Table([encabezados] + detalles,
                              colWidths=[7 * cm, 3 * cm, 3 * cm, 3 * cm])
        # Aplicamos estilos a las celdas de la tabla
        detalle_orden.setStyle(
            TableStyle([
                # La primera fila(encabezados) va a estar centrada
                ('ALIGN', (0, 0), (3, 0), 'CENTER'),
                # Los bordes de todas las celdas serán de color negro y con un grosor de 1
                ('GRID', (0, 0), (-1, -1), 1, colors.black),
                # El tamaño de las letras de cada una de las celdas será de 10
                ('FONTSIZE', (0, 0), (-1, -1), 10),
            ]))
        # Establecemos el tamaño de la hoja que ocupará la tabla
        detalle_orden.wrapOn(pdf, 800, 600)
        # Definimos la coordenada donde se dibujará la tabla
        detalle_orden.drawOn(pdf, 60, y)
예제 #22
0
 def tabla(self, pdf, y):
     encabezados = ('Cédula/Ruc', 'Nombres', 'Apellidos', 'Dirección',
                    'Teléfono')
     detalles = [(cliente.cedula, cliente.nombres, cliente.apellidos,
                  cliente.direccion, cliente.telefono)
                 for cliente in Cliente.objects.all()]
     detalle_orden = Table([encabezados] + detalles,
                           colWidths=[
                               3 * cm,
                               3 * cm,
                               3 * cm,
                               5 * cm,
                               2.5 * cm,
                           ])
     detalle_orden.setStyle(
         TableStyle([
             #La primera fila(encabezados) va a estar centrada
             ('ALIGN', (0, 0), (3, 0), 'CENTER'),
             #Los bordes de todas las celdas serán de color negro y con un grosor de 1
             ('GRID', (0, 0), (-1, -1), 1, colors.black),
             #El tamaño de las letras de cada una de las celdas será de 10
             ('FONTSIZE', (0, 0), (-1, -1), 10),
         ]))
     #Establecemos el tamaño de la hoja que ocupará la tabla
     detalle_orden.wrapOn(pdf, 800, 600)
     #Definimos la coordenada donde se dibujará la tabla
     detalle_orden.drawOn(pdf, 60, y)
예제 #23
0
def write_pdf(input_text):
    pdfmetrics.registerFont(
        TTFont('JannaBold', 'resources/Bahij_Janna-Bold.ttf'))
    packet = BytesIO()
    canv = canvas.Canvas(packet)
    canv.setPageSize(PAGE_SIZE)
    canv.setFillColorRGB(*RGB_COLOR)
    canv.setFont('JannaBold', FONT_SIZE)
    canv.drawImage('resources/Python-Logo.png', 0, 0, mask='auto')
    canv.drawRightString(PAGE_SIZE[0] - 10, 10,
                         get_display(arabic_reshaper.reshape(input_text)))

    style = ParagraphStyle(name='Normal',
                           fontName='JannaBold',
                           fontSize=12,
                           leading=12. * 1.2,
                           wordWrap='RTL')
    style.alignment = TA_RIGHT
    data = ['نص عربي', input_text]
    data = [[Paragraph(get_display(arabic_reshaper.reshape(x)), style)]
            for x in data]
    f = Table(data,
              style=TableStyle([
                  ("INNERGRID", (0, 0), (-1, -1), 0.25, colors.black),
                  ("BOX", (0, 0), (-1, -1), 0.25, colors.black)
              ]))
    f.wrapOn(canv, 120, 0)
    f.drawOn(canv, 449, 150)

    canv.save()
    packet.seek(0)
    return packet
    def createDocument(self, address, body, greetings):
        voffset = 120

        # create return address
        paragraph = Paragraph(address.nombre+"<br />"+address.direccion1+"<br />"+address.direccion2+"<br />"+address.direccion3+"<br />"+address.direccion4, self.styles["Normal"])
        header = [["",paragraph]]
        table = Table(header, colWidths=4*inch)
        table.setStyle([("VALIGN", (0,0), (0,0), "TOP")])
        table.wrapOn(self.c, self.width, self.height)
        table.drawOn(self.c, *self.coord(18, 60, mm))

        # insert body of letter
        print "bodyyy"
        print body
        body = body.replace('\n','<br />')
        p = Paragraph(body, self.styles["Normal"])
        p.wrapOn(self.c, self.width-70, self.height)
        p.drawOn(self.c, *self.coord(20, voffset+50, mm))

        # greetings
        try:
            p = Paragraph(greetings.nombre+"<br />"+greetings.direccion1+"<br />"+greetings.direccion2+"<br />"+greetings.direccion3+"<br />"+greetings.direccion4, self.styles["Normal"])
        except:
            p = Paragraph("", self.styles["Normal"])
        p.wrapOn(self.c, self.width-70, self.height)
        p.drawOn(self.c, *self.coord(20, voffset+75, mm))
예제 #25
0
    def create_payment_summary(self):
        """"""
        ptext = '<font size=26>Your payment summary</font>'
        p = Paragraph(ptext, self.styles["Normal"])
        p.wrapOn(self.canvas, self.width, self.height)
        p.drawOn(self.canvas, *self.coord(15, 47, mm))

        colWidths = [75, 125, 50, 125, 50, 150]
        plan_title = Paragraph('<font size=8>Your plan paid</font>',
                               self.styles["Normal"])
        owe_title = Paragraph('<font size=8>You owe or already paid</font>',
                              self.styles["Normal"])

        data = [['', '', '', plan_title, '', owe_title],
                [
                    self.create_bold_text('Patient'),
                    self.create_bold_text('Provider'),
                    self.create_bold_text('Amount'),
                    self.create_bold_text('Sent to'),
                    self.create_bold_text('Date'),
                    self.create_bold_text('Amount'),
                ]]
        table = Table(data, colWidths=colWidths)
        table.wrapOn(self.canvas, self.width, self.height)
        table.drawOn(self.canvas, 20, 600)
예제 #26
0
 def _header_footer(canvas, doc):
     # Save the state of our canvas so we can draw on it
     canvas.saveState()
     styles = getSampleStyleSheet()
     # HEADER
     # -- image
     image = Image(
         'https://s3.amazonaws.com/reclutamiento/images/logopetroperu-bg-FFF.jpg'
     )
     image.drawHeight = 0.75 * inch * image.drawHeight / image.drawWidth
     image.drawWidth = 0.75 * inch
     # -- title and subtitle
     title = getParagraphText('ATENCIONES', 14, 'center', True)
     # -- table
     header_table = Table([[[image], [title], [image]]],
                          colWidths=(doc.width * 0.2, doc.width * 0.6,
                                     doc.width * 0.2))
     header_table.setStyle(
         TableStyle([('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
                     ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
                     ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
                     ('BOTTOMPADDING', (0, 0), (-1, -1), 0),
                     ('TOPPADDING', (0, 0), (-1, -1), 0),
                     ('BOX', (0, 0), (-1, -1), 0.25, colors.black)]))
     w, h = header_table.wrap(doc.width, doc.topMargin)
     header_table.drawOn(canvas, doc.leftMargin,
                         doc.height + doc.topMargin - h)
     canvas.restoreState()
예제 #27
0
    def tabla6(self, c, y):
        solicitud_2 = Solicitud.objects.filter(
            fk_integral__folio='34089', fk_integral__fk_turno='2', fk_integral__fk_recol='2').values('recibe_serv', 'recibe_lav')
        # table header
        styles = getSampleStyleSheet()
        styleBH = styles["Normal"]
        styleBH.fontSize = 3
        recibe_lav_recol = Paragraph('recibe lav', styleBH)
        recibe_serv_recol = Paragraph('recibe serv', styleBH)

        data = []
        data.append([recibe_lav_recol, recibe_serv_recol])

        width, heigth = A4
        high = 600

        for sol in solicitud_2:
            this_sol = [sol['recibe_lav'],
                        sol['recibe_serv']]
            data.append(this_sol)
            high = high - 18

        # Table size
        width, heigth = A4
        table = Table(data, colWidths=[1 * cm, 1 * cm])
        table.setStyle(TableStyle([
            ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
            ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
            ('FONTSIZE', (0, 0), (-1, -1), 8)]))

        # pdf size
        table.wrapOn(c, width, heigth)
        table.drawOn(c, 507, high)
예제 #28
0
 def _header_footer(self, canvas, doc):
     # Save the state of our canvas so we can draw on it
     canvas.saveState()
     styles = getSampleStyleSheet()
     # HEADER
     # -- image
     image = Image(
         'https://s3.amazonaws.com/reclutamiento/images/logopetroperu-bg-FFF.jpg'
     )
     image.drawHeight = 0.75 * inch * image.drawHeight / image.drawWidth
     image.drawWidth = 0.75 * inch
     # -- title and subtitle
     title = getParagraphText(to_upper(self.title), 14, 'center', True)
     sub_title = Paragraph(
         '<para align=center ><b> INFORMACIÓN GENERAL DE LOS POSTULANTES</b></para>',
         styles["BodyText"])
     # -- table
     header_table = Table([[[image], [title, sub_title], [image]]],
                          colWidths=(doc.width * 0.2, doc.width * 0.6,
                                     doc.width * 0.2))
     header_table.setStyle(
         TableStyle([('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
                     ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
                     ('BOX', (0, 0), (-1, -1), 0.25, colors.black)]))
     w, h = header_table.wrap(doc.width, doc.topMargin)
     header_table.drawOn(canvas, doc.leftMargin,
                         doc.height + doc.topMargin - h)
     # Footer
     # Write footer
     # Release the canvas
     canvas.restoreState()
예제 #29
0
    def tabla(self, pdf, y):
        # Creamos una tupla de encabezados para neustra tabla
        encabezados = ('Codigo', 'Descripcion', 'Precio', 'Cantidad')
        # Creamos una lista de tuplas que van a contener a las personas
        query = self.request.GET.get('buscar')
        renglones = object_list = Tmp_Orden_Compra.objects.filter(
                Q(proveedor__razon_social__icontains=query))
        detalles = []
        cantidad = 0
        total = 0
        for renglon in renglones:
            detalles.append((renglon.articulo_proveedor, renglon.descripcion,
                             renglon.precio_costo, renglon.cantidad))
            cantidad = cantidad + renglon.cantidad
            total = total + (renglon.cantidad * renglon.precio_costo)
        txt = f"Total de articulos = {cantidad}  total = ${total}"
        pdf.drawString(20, 670, txt)
        # Establecemos el tamaño de cada una de las columnas de la tabla
        detalle_orden = Table([encabezados] + detalles, colWidths=[  5 * cm, 3 * cm, 2 * cm])
        # Aplicamos estilos a las celdas de la tabla
        detalle_orden.setStyle(TableStyle(
            [
                # La primera fila(encabezados) va a estar centrada
                ('ALIGN', (0, 0), (3, 0), 'CENTER'),
                # Los bordes de todas las celdas serán de color negro y con un grosor de 1
                ('GRID', (0, 0), (-1, -1), 1, colors.black),
                # El tamaño de las letras de cada una de las celdas será de 10
                ('FONTSIZE', (0, 0), (-1, -1), 10),
            ]
        ))

        filas = len(detalles)
        detalle_orden.wrapOn(pdf, 0, 400)
        detalle_orden.drawOn(pdf, 50, 640 - (18*filas))
        return txt
예제 #30
0
def add_table(pdf, data, x, y):
    data = dic_to_list(data)
    table = Table(data)
    table.setStyle(style)
    table.setStyle(ts)
    table.wrapOn(pdf, 400, 100)
    table.drawOn(pdf, x, y)
예제 #31
0
	def tabla(self,pdf,y):
		#Creamos una tupla de encabezados para neustra tabla
		encabezados = ('Paciente', 'Apoyo monetario', 'Apoyo en especie', 'Fecha de apoyo')
		#Creamos una lista de tuplas que van a contener a las personas
		detalles = [(p.Apoyo_Paciente.Paciente_nombre + " "+ p.Apoyo_Paciente.Paciente_apellido, p.Donacion_monetaria, p.Donacion_especie, p.Fecha_entrega) for p in Seguimiento_Apoyo.objects.select_related("Apoyo_Paciente").all()]

		#Establecemos el tamano de cada una de las columnas de la tabla
		detalle_orden = Table([encabezados] + detalles, colWidths=[120 , 120 , 120 , 120 ])
		#Aplicamos estilos a las celdas de la tabla
		detalle_orden.setStyle(TableStyle(
			[
			#La primera fila(encabezados) va a estar centrada
				('ALIGN',(0,0),(3,0),'CENTER'),
				('TEXTCOLOR',(0,0),(3,0),colors.black),
				#Los bordes de todas las celdas seran de color negro y con un grosor de 1
				('BACKGROUND',(0,0),(3,0),colors.gainsboro),
				
				('GRID', (0, 0), (-1, -1), 1, colors.gray), 
				#El tamano de las letras de cada una de las celdas sera de 10
				('FONTSIZE', (0, 0), (-1, -1), 10),
			]
		))
		#Establecemos el tamano de la hoja que ocupara la tabla 
		detalle_orden.wrapOn(pdf, 800, 500)
		#Definimos la coordenada donde se dibujara la tabla
		detalle_orden.drawOn(pdf, 60,y)                
예제 #32
0
    def _posting_list_table(self, canvas, x1, y1, x2, y2, shipping_labels):
        style = self.table_style[:]
        table = [self.table_header]
        for i, shipping_label in enumerate(shipping_labels, start=1):
            row = (
                str(shipping_label.tracking_code),
                str(shipping_label.receiver.zip_code),
                str(shipping_label.package.weight),
                self.yes if ExtraService.get(EXTRA_SERVICE_AR)
                in shipping_label else self.no,
                self.yes if ExtraService.get(EXTRA_SERVICE_MP)
                in shipping_label else self.no,
                self.yes if shipping_label.has_declared_value() else self.no,
                str(shipping_label.value).replace(".", ",")
                if shipping_label.value is not None else "",
                str(shipping_label.invoice_number),
                shipping_label.get_package_sequence(),
                shipping_label.receiver.name[:self.max_receiver_name_size],
            )

            # noinspection PyTypeChecker
            table.append(row)

            if i % 2:
                style.append(("BACKGROUND", (0, i), (-1, i), colors.lightgrey))

        table_flow = Table(table,
                           colWidths=self.col_widths,
                           style=TableStyle(style))
        w, h = table_flow.wrap(0, 0)
        table_flow.drawOn(canvas, x1, y2 - h - 50 * mm)
예제 #33
0
   def writeVerdictPDF(self,school_name, filename, verdict):
       sorted_verdict = OrderedDict(sorted(verdict.items(), key=lambda t: t[0]))
       
       styles = getSampleStyleSheet()
       styleN = styles["BodyText"]
       styleN.alignment = TA_LEFT
       styleBH = styles["Normal"]
       styleBH.alignment = TA_CENTER
       
       data= [map(lambda (k,v): Paragraph(k, styleBH), sorted_verdict.iteritems()),
              map(lambda (k,v): Paragraph("<br/> ------------- <br/>".join(set(map(lambda (x): x.strip(), v[2]))), styleN), sorted_verdict.iteritems())]

       cwidth = 120
       table = Table(data, colWidths=[cwidth]*len(sorted_verdict))

       table.setStyle(TableStyle([
          ('INNERGRID', (0,0), (-1,-1), 0.25, black),
          ('BOX', (0,0), (-1,-1), 0.25, black),
          ('VALIGN',(0,0),(-1,-1),'TOP')
          ]))
          
       margin = 20
       w, h = table.wrap(0,0)
       pagewidth = w+margin*2
       pageheight = h+margin*3
       c = canvas.Canvas(filename, pagesize=(pagewidth,pageheight))
       
       table.drawOn(c, margin, pageheight - h - 2*margin)

       c.setFillColor(black) #choose your font colour
       c.drawString(margin,pageheight-margin,school_name)
       
       c.save()
예제 #34
0
	def tabla(self,pdf,y):
		#Creamos una tupla de encabezados para neustra tabla
		encabezados = ('Nombre', 'Apellido', 'Diagnostico', 'Clinica','Tutor','Estado Salud')
		#Creamos una lista de tuplas que van a contener a las personas
		detalles = [(p.Paciente_nombre, p.Paciente_apellido, p.Paciente_diagnostico, p.Paciente_clinica,p.Tutor_Padre,p.Estado_salud) for p in Paciente.objects.all()]

		#Establecemos el tamano de cada una de las columnas de la tabla
		detalle_orden = Table([encabezados] + detalles, colWidths=[95 , 95 , 95 , 95,95,95 ])
		#Aplicamos estilos a las celdas de la tabla
		detalle_orden.setStyle(TableStyle(
			[
			#La primera fila(encabezados) va a estar centrada
				('ALIGN',(0,0),(5,0),'CENTER'),
				('TEXTCOLOR',(0,0),(5,0),colors.black),
				#Los bordes de todas las celdas seran de color negro y con un grosor de 1
				('BACKGROUND',(0,0),(5,0),colors.gainsboro),
				
				('GRID', (0, 0), (-1, -1), 1, colors.gray), 
				#El tamano de las letras de cada una de las celdas sera de 10
				('FONTSIZE', (0, 0), (-1, -1), 10),
			]
		))
		#Establecemos el tamano de la hoja que ocupara la tabla 
		detalle_orden.wrapOn(pdf, 800, 500)
		#Definimos la coordenada donde se dibujara la tabla
		detalle_orden.drawOn(pdf, 12,y)                
예제 #35
0
 def tabla(self, pdf, y):
     # Creamos una tupla de encabezados para neustra tabla
     encabezados = ('username', 'first_name', 'last_name', 'email')
     # Creamos una lista de tuplas que van a contener a las personas
     detalles = [(user.username, user.first_name, user.last_name,
                  user.email) for user in User.objects.all()]
     # Establecemos el tamaño de cada una de las columnas de la tabla
     detalle_orden = Table([encabezados] + detalles,
                           colWidths=[3 * cm, 4 * cm, 5 * cm, 5 * cm])
     # Aplicamos estilos a las celdas de la tabla
     detalle_orden.setStyle(
         TableStyle([
             # La primera fila(encabezados) va a estar centrada
             ('ALIGN', (0, 0), (3, 0), 'CENTER'),
             # Los bordes de todas las celdas serán de color negro
             # y con un grosor de 1
             ('GRID', (0, 0), (-1, -1), 1, colors.black),
             # El tamaño de las letras de cada una de las celdas será de 10
             ('FONTSIZE', (0, 0), (-1, -1), 7),
         ]))
     # Establecemos el tamaño de la hoja que ocupará la tabla
     detalle_orden.wrapOn(pdf, 800, 600)
     # Definimos la coordenada donde se dibujará la tabla
     # 0,75 mas cercano del margen derecho
     # 7.5 mas cercano del margen TOP
     detalle_orden.drawOn(pdf, 0.75 * inch, 7.5 * inch)
예제 #36
0
 def tabla(self, pdf, y):
     #Creamos una tupla de encabezados para nuestra tabla
     encabezados = ('DNI', 'Nombre', 'Apellidos', 'Email', 'Telefono')
     #Creamos una lista de tuplas que van a contener a las personas
     detalles = [(persona.dni, persona.nombre, persona.apellidos,
                  persona.email, persona.telefono)
                 for persona in Asistente.objects.all()]
     #Establecemos el tamaño de cada una de las columnas de la tabla
     detalle_orden = Table(
         [encabezados] + detalles,
         colWidths=[2 * cm, 2 * cm, 3 * cm, 5 * cm, 3 * cm])
     #Aplicamos estilos a las celdas de la tabla
     detalle_orden.setStyle(
         TableStyle([
             #La primera fila(encabezados) va a estar centrada
             ('ALIGN', (0, 0), (3, 0), 'CENTER'),
             #Los bordes de todas las celdas serán de color negro y con un grosor de 1
             ('GRID', (0, 0), (-1, -1), 1, colors.black),
             #El tamaño de las letras de cada una de las celdas será de 10
             ('FONTSIZE', (0, 0), (-1, -1), 10),
         ]))
     #Establecemos el tamaño de la hoja que ocupará la tabla
     detalle_orden.wrapOn(pdf, 800, 600)
     #Definimos la coordenada donde se dibujará la tabla
     detalle_orden.drawOn(pdf, 80, y)
예제 #37
0
    def tradingReport(self, c):
        title = "DAILY TRADING" 
        c.setFont("Helvetica", 24)
        c.drawString(50,770, title)
        c.setFont("Helvetica", 16)
        c.drawString(50,730, "DATE :")
        c.drawString(110,730, str(today.year) + "/" + str(today.month) + "/" + str(today.day) ) # DATE
        c.line(110, 727, 185, 727)
        c.drawString(300,730, "Today's Performance :")
        c.line(465, 727, 515, 727)
        c.drawString(470,730, "4%")          # PROFIT value
        c.drawString(50,680, "Market Analysis")

        columHeight = [1*cm, 1*cm, 1*cm, 1*cm]
        t=Table(self._data, 2.5*cm, columHeight)             # The size of each cells
        t.setStyle(TableStyle([('GRID',(0,0),(-1,-1),1,colors.black),
                               ('VALIGN',(0,0),(-1,-1),'TOP')]))
                           
        t.wrapOn(c, 50,50)  
        t.drawOn(c, 50,550)     #Table Location

        c.drawString(50,500, "Intraday performance of Algorithm1")
        graph_1 = Image("example.png")
        graph_1.drawHeight = 6*cm
        graph_1.drawWidth = 17.5*cm
        #graph_1.wrapOn(c, 50,20)
        graph_1.drawOn(c,50,322)

        c.drawString(50,295, "Intraday performance of Algorithm2")
        graph_2 = Image("example2.png")
        graph_2.drawHeight = 6*cm
        graph_2.drawWidth = 17.5*cm
        #graph_2.wrapOn(c, 50,20)
        graph_2.drawOn(c,50,117)
예제 #38
0
    def export_notes(self, request, suffix=''):
        """ Return an pdf export of user and public notes

        Returns:
            response

        """ 
        res = Response()
        student = self.__get_current_user()

        try:
            timecoded_data_set = self.__list_notes()
            timecoded_data_array = []

            for timecoded_data in timecoded_data_set:
                timecoded_data_array.append([timecoded_data.seconds, Paragraph(timecoded_data.content.replace('\n','<br />'), ParagraphStyle("Page"))])


            res.headerlist = [('Content-type', 'application/pdf'), ('Content-Disposition', 'attachment; filename=%s' % str(self.scope_ids.user_id)+".pdf")]
            p = canvas.Canvas(res)
            if (len(timecoded_data_array)>0):
                table = Table(timecoded_data_array, colWidths=[20, 500])
                table.setStyle(TableStyle([('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
                                            ('BOX', (0, 0), (-1, -1), 0.25, colors.black)]))
                
                table.wrapOn(p, 700, 700)
                table.drawOn(p, 50, 700)
                
            p.showPage()
            p.save()

            return res
        except KNoteList.DoesNotExist:
            res.status = 404
            return res
예제 #39
0
	def tabla1(self,pdf,y):
		#Creamos una tupla de encabezados para neustra tabla
		encabezados = ('Fecha', 'Paciente', 'Cantidad', 'Nombre Recipiente')
		#Creamos una lista de tuplas que van a contener a las personas
		actual=datetime.now()
		detalles = [(p.Fecha_apoyo, p.Paciente.Paciente_nombre+" "+ p.Paciente.Paciente_apellido, p.Apoyo, p.Recipiente_nombre) for p in Defunciones.objects.all().select_related('Paciente')]

		#Establecemos el tamano de cada una de las columnas de la tabla
		detalle_orden = Table([encabezados] + detalles, colWidths=[130 , 130 , 130 , 130 ])
		#Aplicamos estilos a las celdas de la tabla
		detalle_orden.setStyle(TableStyle(
			[
			#La primera fila(encabezados) va a estar centrada
				('ALIGN',(0,0),(3,0),'CENTER'),
				('TEXTCOLOR',(0,0),(3,0),colors.black),
				#Los bordes de todas las celdas seran de color negro y con un grosor de 1
				('BACKGROUND',(0,0),(3,0),colors.gainsboro),
				
				('GRID', (0, 0), (-1, -1), 1, colors.gray), 
				#El tamano de las letras de cada una de las celdas sera de 10
				('FONTSIZE', (0, 0), (-1, -1), 10),
			]
		))
		#Establecemos el tamano de la hoja que ocupara la tabla 
		detalle_orden.wrapOn(pdf, 800, 500)
		#Definimos la coordenada donde se dibujara la tabla
		detalle_orden.drawOn(pdf, 35,y)           
예제 #40
0
	def tabla1(self,pdf,y):
		#Creamos una tupla de encabezados para neustra tabla
		encabezados = ('Nombre', 'Funcion', 'Telefono','Correo')
		#Creamos una lista de tuplas que van a contener a las persona

		detalles = [(p.Personal_nombre+" "+p.Personal_apellidos, p.Personal_funcion, p.Personal_tel, p.Personal_correo) for p in Personal.objects.all()]

		#Establecemos el tamano de cada una de las columnas de la tabla
		detalle_orden = Table([encabezados] + detalles, colWidths=[150 , 100, 100 , 150 ])
		#Aplicamos estilos a las celdas de la tabla
		detalle_orden.setStyle(TableStyle(
			[
			#La primera fila(encabezados) va a estar centrada
				('ALIGN',(0,0),(3,0),'CENTER'),
				('TEXTCOLOR',(0,0),(3,0),colors.black),
				#Los bordes de todas las celdas seran de color negro y con un grosor de 1
				('BACKGROUND',(0,0),(3,0),colors.gainsboro),
				
				('GRID', (0, 0), (-1, -1), 1, colors.gray), 
				#El tamano de las letras de cada una de las celdas sera de 10
				('FONTSIZE', (0, 0), (-1, -1), 10),
			]
		))
		#Establecemos el tamano de la hoja que ocupara la tabla 
		detalle_orden.wrapOn(pdf, 800, 500)
		#Definimos la coordenada donde se dibujara la tabla
		detalle_orden.drawOn(pdf, 35,y)    
예제 #41
0
    def tabla(self, pdf, y, fInicio, fFinal):
        encabezados = ('Factura N°', 'Cliente', 'Fecha', 'Total')
        detalles = [
            (factura.numero,
             factura.cliente.apellidos + ' ' + factura.cliente.nombres,
             factura.fecha, factura.valorTotal)
            for factura in Factura.objects.filter(fecha__range=(fInicio,
                                                                fFinal))
        ]

        detalle_orden = Table([encabezados] + detalles,
                              colWidths=[
                                  2 * cm,
                                  7 * cm,
                                  6 * cm,
                                  2.5 * cm,
                              ])
        detalle_orden.setStyle(
            TableStyle([
                #La primera fila(encabezados) va a estar centrada
                ('ALIGN', (0, 0), (3, 0), 'CENTER'),
                #Los bordes de todas las celdas serán de color negro y con un grosor de 1
                ('GRID', (0, 0), (-1, -1), 1, colors.black),
                #El tamaño de las letras de cada una de las celdas será de 10
                ('FONTSIZE', (0, 0), (-1, -1), 10),
            ]))
        #Establecemos el tamaño de la hoja que ocupará la tabla
        detalle_orden.wrapOn(pdf, 800, 600)
        #Definimos la coordenada donde se dibujará la tabla
        detalle_orden.drawOn(pdf, 60, y)
예제 #42
0
파일: views.py 프로젝트: kimba97/oftal
 def tabla(self, pdf, y):
     encabezados = ('Ojo', 'Paciente', 'Codigo', 'Estado', 'Esfera',
                    'Cilindro', 'Eje', 'Prisma', 'Base', 'Adicion',
                    'Graduacion', 'Color')
     detallesIzquierdo = []
     detallesDerecho = []
     for lente in Lente.objects.all():
         detallesIzquierdo.append(
             ('Izquierdo', lente.paciente.nombrePersona +
              lente.paciente.apellidoPersona, lente.codigo, lente.estado,
              lente.esfera, lente.cilindro, lente.eje, lente.prisma,
              lente.base, lente.adicion, lente.graduacion, lente.color))
         detallesIzquierdo.append(
             ('Derecho', lente.paciente.nombrePersona +
              lente.paciente.apellidoPersona, '', lente.estado,
              lente.esferad, lente.cilindrod, lente.ejed, lente.prismad,
              lente.based, lente.adiciond, lente.graduaciond, lente.colord))
         detallesIzquierdo.append(
             ('', '', '', '', '', '', '', '', '', '', '', ''))
     detalleOrden = Table([encabezados] + detallesIzquierdo,
                          colWidths=[
                              0.7 * inch, 2 * inch, 0.8 * inch, 0.8 * inch,
                              0.8 * inch, 0.8 * inch, 0.8 * inch,
                              0.7 * inch, 0.7 * inch, 0.7 * inch,
                              0.9 * inch, 0.9 * inch
                          ])
     detalleOrden.setStyle(
         TableStyle([
             ('ALIGN', (0, 0), (3, 0), 'CENTER'),
             ('GRID', (0, 0), (-1, -1), 1, colors.black),
             ('FONTSIZE', (0, 0), (-1, -1), 10),
         ]))
     detalleOrden.wrapOn(pdf, 800, 600)
     detalleOrden.drawOn(pdf, 11, y)
예제 #43
0
def tabla(pdf, y, clientes):
    # Creamos una tupla de encabezados para neustra tabla
    encabezados = ('DNI', 'Nombres', 'Apellidos', 'Direccion')
    # Creamos una lista de tuplas que van a contener a las personas
    #clientes = Cliente.objects.habilitados().filter(nombres='Karina')
    print("TABLA", clientes)
    detalles = [(cliente.dniCuit, cliente.nombres, cliente.apellidos,
                 cliente.direccion) for cliente in clientes]
    # Establecemos el tamaño de cada una de las columnas de la tabla
    detalle_orden = Table([encabezados] + detalles,
                          colWidths=[2 * cm, 5 * cm, 5 * cm, 7 * cm])
    # Aplicamos estilos a las celdas de la tabla
    detalle_orden.setStyle(
        TableStyle([
            # La primera fila(encabezados) va a estar centrada
            ('ALIGN', (0, 0), (3, 0), 'CENTER'),
            # Los bordes de todas las celdas serán de color negro y con un grosor de 1
            ('GRID', (0, 0), (-1, -1), 1, colors.black),
            # El tamaño de las letras de cada una de las celdas será de 10
            ('FONTSIZE', (0, 0), (-1, -1), 10),
        ]))
    # Establecemos el tamaño de la hoja que ocupará la tabla
    detalle_orden.wrapOn(pdf, 800, 600)
    # Definimos la coordenada donde se dibujará la tabla
    detalle_orden.drawOn(pdf, 40, y)
예제 #44
0
def category_overview_table(c, category, h, w):
    my_codes = ''
    if category == 'clothing':
        my_codes = clothing
    elif category == 'transport':
        my_codes = transport
    elif category == 'insurance':
        my_codes = insurance
    elif category == 'food':
        my_codes = food
    elif category == 'medical and dental':
        my_codes = medical_and_dental
    elif category == 'housing':
        my_codes = housing
    elif category == 'utilities':
        my_codes = utilities
    elif category == 'education':
        my_codes = education
    elif category == 'gifts':
        my_codes = gifts
    elif category == 'entertainment':
        my_codes = entertainment
    width = 400
    height = 100
    my_data = [['Category', 'Previous', 'Current']]
    for x in my_codes:
        my_data.append([
            x.replace('_', ' ').title(),
            f'${round(data.month_code(x.lower(),month-1,year),2)}',
            f'${round(data.month_code(x.lower(),month,year),2)}'
        ])
    f = Table(my_data,
              style=[('LINEBELOW', (0, 0), (-1, -1), 1, colors.black)])
    f.wrapOn(c, width, height)
    f.drawOn(c, h, w)
예제 #45
0
파일: utils.py 프로젝트: nezaicev/CNHO
def generate_pdf(list, contest_name, alias, reg_number):
    width, height = A4
    styles = getSampleStyleSheet()
    styles.add(ParagraphStyle(name='Yandex', alignment=TA_JUSTIFY, fontName='Yandex', fontSize=12))
    styles.add(ParagraphStyle(name='YandexBold', alignment=TA_JUSTIFY, fontName='YandexBold', fontSize=12))

    pdfmetrics.registerFont(
        TTFont('Yandex', os.path.join(settings.STATIC_ROOT, 'fonts', 'YandexSansDisplay-Regular.ttf'),
               'YandexBold', os.path.join(settings.STATIC_ROOT, 'fonts', 'static/YandexSansDisplay-Bold.ttf')
               )
    )
    normal_style = styles['Yandex']
    bold_style = styles['Yandex']

    data = [[Paragraph(list[i][0], normal_style), Paragraph(list[i][1], normal_style)] for i in range(0, len(list))]

    table = Table(data, colWidths=[4 * cm, 14 * cm])

    table.setStyle(TableStyle([
        ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
        ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
    ]))

    c = canvas.Canvas(os.path.join(settings.MEDIA_ROOT, 'pdf', alias, f'{reg_number}.pdf'), pagesize=A4)
    c.setFont('Yandex', 20)
    c.drawString(20, 810, contest_name)
    c.drawImage(os.path.join(settings.BARCODE_MEDIA_ROOT, f'{reg_number}.png'), 340, 715)

    width2, height2 = table.wrapOn(c, width, height)
    table.drawOn(c, 1.2 * cm, A4[1] - height2 - 125, 0)
    c.save()
예제 #46
0
    def tabla_agente(self, pdf, agentes_venta, nombres_calificaciones):
        # Creamos una tupla de encabezados para nuestra tabla
        encabezados = ('Agente', 'Ventas')
        encabezados = encabezados + nombres_calificaciones

        # Creamos una lista de tuplas que va a contener los datos de los agentes
        detalles = []
        for agente in agentes_venta.values():
            datos_agente = [agente['nombre'], agente['total_gestionados']]
            datos_agente += agente['totales_calificaciones'].values()
            detalles.append(tuple(datos_agente))

        # Establecemos el tamaño de cada una de las columnas de la tabla
        detalle_orden = Table([encabezados] + detalles)
        # Aplicamos estilos a las celdas de la tabla
        detalle_orden.setStyle(
            TableStyle([
                # La primera fila(encabezados) va a estar centrada
                ('ALIGN', (0, 0), (1, 0), 'CENTER'),
                ('GRID', (0, 0), (-1, -1), 1, colors.black),
                # El tamaño de las letras de cada una de las celdas será de 10
                ('FONTSIZE', (0, 0), (-1, -1), 7),
            ]))
        pdf.setFont("Helvetica", 10)
        # Establecemos el tamaño de la hoja que ocupará la tabla
        he, we = detalle_orden.wrapOn(pdf, 0, 0)
        pdf.setPageSize((he + 300, we + 300))
        # Definimos la coordenada donde se dibujará la tabla
        # 0,75 mas cercano del margen derecho
        # 6.75 mas cercano del margen TOP
        pdf.setFont("Helvetica", 10)
        pdf.drawString(100, we + 200, _("Calificaciones agentes"))
        detalle_orden.drawOn(pdf, 100, we + 150)
예제 #47
0
def print_band_list_pdf(band, canvas):
    style = TableStyle([
        ('VALIGN', (0, 0), (-1, -1), "TOP"),
        ('FONT', (0, 0), (-1, 0), "Helvetica-Bold", 14),
        ('FONT', (0, 1), (-1, 1), "Helvetica", 14),
        ('ALIGN', (-1, 0), (-1, -1), "RIGHT"),
    ])
    # split models in 2 columns
    col = 1
    col1 = []
    col2 = []
    for model in band.model_list:
        if col == 1:
            col1.append(create_model_table(model))
            col = 2
        else:
            col2.append(create_model_table(model))
            col = 1
    # create table with header (2 rows) and the 2 columns of models
    data = [[band.name, str(band.total_cost) + "pts"],
            [
                str(len(band.model_list)) + " models",
                "Cost of personalities: " + str(band.personalities_cost) +
                "pts"
            ], [col1, col2]]
    table = Table(data,
                  colWidths=9 * cm,
                  rowHeights=[1 * cm, 1.5 * cm, 24 * cm])
    table.setStyle(style)
    # draw table
    table.wrap(18 * cm, 26 * cm)
    table.drawOn(canvas, 1.5 * cm, 2 * cm)
    # pass page
    canvas.showPage()
예제 #48
0
파일: log.py 프로젝트: dairdr/notes
	def drawResume(self, canvas, doc):
		# First table
		style = ParagraphStyle(name='Style')
		style.fontName = 'Helvetica-Bold'
		style.fontSize = 10
		style.alignment = TA_CENTER
		data = [
			[Paragraph('INFORME ACADÉMICO DEL %s' % self.time.upper(), style)],
			['SEDE PRINCIPAL BACHILLERATO']
		]
		LIST_STYLE = TableStyle([
			('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
			('BOX', (0,0), (-1,-1), 0.25, colors.black),
			('TEXTCOLOR',(0,0),(-1,-1),colors.black),
			('ALIGN', (0,0), (-1,-1), 'CENTER'),
			('BACKGROUND', (0, 0), (-1, -1), colors.gray),
			('FONTSIZE', (-1, -1), (-1, -1), 8),
			('VALIGN',(0,0),(-1,-1),'MIDDLE')
		])
		table = Table(data, colWidths='*', rowHeights=0.2 * inch, style=LIST_STYLE)
		w, h = table.wrap(doc.width, 0)

		# Second table
		data = [
			[self.getResumeFirstColum(), self.getSecondColum(), self.getThirdColum(), self.getFourthColum()]
		]
		LIST_STYLE = TableStyle([
			('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
			('BOX', (0, 0), (-1, -1), 0.25, colors.black),
			('BACKGROUND', (0, 0), (-1, -1), colors.gray),
			('TOPPADDING', (0, 0), (-1, -1), 0),
			('BOTTOMPADDING', (0, 0), (-1, -1), 0),
			('LEFTPADDING', (0, 0), (-1, -1), 0),
			('RIGHTPADDING', (0, 0), (-1, -1), 0),
			('FONTSIZE', (0, 0), (-1, -1), 8),
			('ALIGN', (0, 0), (-1, -1), 'CENTER'),
			('VALIGN',(0, 0),(-1, -1),'TOP')
		])
		colWidths = [3*inch, 1.2*inch, 1.4*inch, '*']
		table2 = Table(data, colWidths=colWidths, style=LIST_STYLE)
		w, h = table2.wrap(doc.width, 0)

		wrapper_style = TableStyle([
			('ALIGN', (0, 0), (-1, -1), 'CENTER'),
			('VALIGN',(0, 0),(-1, -1),'MIDDLE'),
			('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
			('BOX', (0, 0), (-1, -1), 0.25, colors.black),
			('TOPPADDING', (0, 0), (-1, -1), 0),
			('BOTTOMPADDING', (0, 0), (-1, -1), 0),
			('LEFTPADDING', (0, 0), (-1, -1), 0),
			('RIGHTPADDING', (0, 0), (-1, -1), 0),
		])
		data = [
			[table],
			[table2]
		]
		wrapper = Table(data, colWidths='*', style=wrapper_style)
		w, h = wrapper.wrap(doc.width, 0)
		wrapper.drawOn(canvas, doc.leftMargin, doc.height + 80)
예제 #49
0
    def get(self, request, *args, **kwargs):

        sales_invoice_id = kwargs['sales_invoice_id']
        sales_invoice = SalesInvoice.objects.get(id=sales_invoice_id)
        sales = sales_invoice.sales

        response = HttpResponse(content_type='application/pdf')
        p = canvas.Canvas(response, pagesize=(1000, 1000))

        status_code = 200

        y=850

        data=[['', sales_invoice.date.strftime('%d-%m-%Y'), '', sales_invoice.invoice_no]]
        table = Table(data, colWidths=[0, 100, 650, 100], rowHeights=40)      
        table.wrapOn(p, 200, 400)
        table.drawOn(p,100, 750)

        quotation = sales_invoice.quotation

        data=[['', '', sales_invoice.delivery_note.lpo_number if sales_invoice.delivery_note else '' ]]
        table = Table(data, colWidths=[450, 60, 100], rowHeights=40)      
        table.wrapOn(p, 200, 400)
        table.drawOn(p,100, 700)

        data=[['', '', sales_invoice.date.strftime('%d-%m-%Y')]]
        table = Table(data, colWidths=[450, 30, 100], rowHeights=40)      
        table.wrapOn(p, 200, 400)
        table.drawOn(p,100, 650)

        if sales_invoice.quotation or sales_invoice.delivery_note:            
            data=[['', '', sales_invoice.delivery_note.delivery_note_number if sales_invoice.delivery_note else sales_invoice.quotation.reference_id]]
            table = Table(data, colWidths=[450, 30, 100], rowHeights=40)      
            table.wrapOn(p, 200, 400)
            table.drawOn(p,150, 620)

        x=600

        i = 0
        i = i + 1
  
        for s_item in sales.salesitem_set.all():
                   
            x=x-40
            
            item_price = s_item.item.inventory_set.all()[0].selling_price
            final_price = item_price+(item_price*(s_item.item.tax/100))
            data1=[[i, s_item.item.code, s_item.item.name, s_item.quantity_sold, s_item.item.uom.uom, s_item.item.inventory_set.all()[0].unit_price, (final_price*s_item.quantity_sold)]]
            table = Table(data1, colWidths=[50, 100, 400, 70, 90, 100, 50], rowHeights=40)
            table.wrapOn(p, 200, 400)
            table.drawOn(p,50,x)
            i = i + 1


        p.showPage()
        p.save()
        return response
예제 #50
0
파일: imprimir.py 프로젝트: cedir/web
def detalle_iva(p, detalle):
    table = Table(detalle, [5*cm, 3*cm])
    table.setStyle([
	    ('FONT', (0, 0), (-1, -1), font_bld),
        ('LEADING', (0, 0), (-1, -1), 4),
        ('ALIGN', (0, 0), (-1, -1), 'RIGHT'),
        ('FONTSIZE',(0,0),(-1,-1),9),
        ])
    table.wrapOn(p, width, height)
    table.drawOn(p, width - margin - 8*cm, 55*mm)
예제 #51
0
    def createDocument(self):
        """"""
        for page in self.e.findall("page"):
            for image in page.findall("image"):
                logo = Image(image.get("src"))
                logo.drawHeight = int(image.get("height"))
                logo.drawWidth = int(image.get("width"))
                logo.wrapOn(self.c, self.width, self.height)
                logo.drawOn(self.c, *self.coord(int(image.get("left")),int(image.get("top"))+int(image.get("height")) ))
            for text in page.findall("text"):
                if len(text.getchildren())==0:
                    font = self.fonts[text.get("font")]
                    style = ParagraphStyle(
                        'default',
                        fontName="Arial",
                        leading=int(font["size"])+7,
                        fontSize=font["size"],
                        textColor=font["color"],
                        backColor=font["background"],
                        firstLineIndent=int(font["indent"]),
                    )
                    self.createParagraph(text.text, int(text.get("left")), (int(text.get("top"))+int(text.get("height"))),style)
                else:
                    innerText = ElementTree.tostring(text.getchildren()[0])
                    font = self.fonts[text.get("font")]
                    style = ParagraphStyle(
                        'default',
                        fontName="Arial",
                        leading=int(font["size"])+7,
                        fontSize=font["size"],
                        textColor=font["color"],
                        backColor=font["background"],
                        firstLineIndent=int(font["indent"]),
                    )
                    self.createParagraph(innerText, int(text.get("left")), (int(text.get("top"))+int(text.get("height"))),style)
            for line in page.findall("line"):
                self.c.setDash(int(line.get("on")),int(line.get("off")))
                self.c.setStrokeColor(line.get("color"))
                self.c.line(int(line.get("x1")),self.height-int(line.get("y1")),int(line.get("x2")),self.height-int(line.get("y2")))
            for table in page.findall("table"):
                self.c.setDash(1,0)
                tabDat = dataDictionary[table.get("data")]
                if table.get("widths"):
                    colWidths = [float(width) for width in table.get("widths").split(",")]
                else:
                    colWidths = float(table.get("width"))/len(tabDat[0])
                if table.get("heights"):
                    rowHeights = [float(height) for height in table.get("heights").split(",")]
                else:
                    rowHeights = float(table.get("height"))/len(tabDat)
                t = Table(tabDat,colWidths,rowHeights,style=tableStyles[table.get("data")])
                t.wrapOn(self.c, self.width, self.height)
                t.drawOn(self.c, *self.coord(int(table.get("left")), int(table.get("top"))+int(table.get("height"))))

            self.c.showPage()
예제 #52
0
    def get(self, request, *args, **kwargs):

        invoice_id = kwargs['invoice_id']
        sales = Sales.objects.get(id=invoice_id)

        response = HttpResponse(content_type='application/pdf')
        p = canvas.Canvas(response, pagesize=(1000, 1300))
        y = 1200
        p = header(p, y)
        p = invoice_body_layout(p, y, sales)

        total_amount = 0
        y1 = y - 400
        for s_item in sales.salesitem_set.all():
            data=[[Paragraph(s_item.item.name, para_style)]]
                        
            if y1 <= 170:
                y1 = y - 400
                p.showPage()
                p = header(p, y)
                p = invoice_body_layout(p, y, sales)

            p.drawString(60, y1, str(s_item.quantity_sold))
            p.drawString(190, y1, str(s_item.item.code))
            # p.drawString(300, y1, str(item_name))
            table = Table(data, colWidths=[385], rowHeights=100, style=style)      
            table.wrapOn(p, 200, 400)
            table.drawOn(p, 300, y1-10)
            p.drawString(710, y1, str(s_item.selling_price))
            p.drawString(850, y1, str(s_item.net_amount))

            total_amount = total_amount + s_item.net_amount

            y1 = y1 - 50

        #  total box start 
        p.line(50, y - 1020, 950, y - 1020)
        p.line(650, y - 980, 650, y - 1020)
        p.line(50, y - 980, 50, y - 1020)
        p.line(950, y - 980, 950, y - 1020)

        # total box end
        p.drawString(820, y - 1010, 'DHS')
        p.drawString(850, y - 1010, str(total_amount))

        p.setFont("Helvetica-Bold", 30)  
        p.drawString(660, y - 1010, 'Total')
        p = footer(p, y)

        # Item Box end

        p.showPage()
        p.save()
         
        return response
예제 #53
0
파일: log.py 프로젝트: dairdr/notes
	def drawHeader(self, canvas, doc):
		logo_path = os.path.join(settings.STATIC_ROOT, 'assets/escudo.jpg')
		logo = Image(logo_path, width=0.7*inch, height=0.7*inch)

		title_style = ParagraphStyle(name='Title')
		title_style.fontName = 'Helvetica-Bold'
		title_style.fontSize = 11
		title_style.alignment = TA_CENTER
		
		subtitle_style = ParagraphStyle(name='Subtitle')
		subtitle_style.fontName = 'Helvetica'
		subtitle_style.fontSize = 8
		subtitle_style.alignment = TA_CENTER

		subtitle2_style = ParagraphStyle(name='Subtitle2')
		subtitle2_style.fontName = 'Helvetica'
		subtitle2_style.fontSize = 8
		subtitle2_style.alignment = TA_CENTER

		subtitle3_style = ParagraphStyle(name='Subtitle3')
		subtitle3_style.fontName = 'Helvetica'
		subtitle3_style.fontSize = 8
		subtitle3_style.alignment = TA_CENTER

		subtitle4_style = ParagraphStyle(name='Subtitle4')
		subtitle4_style.fontName = 'Helvetica'
		subtitle4_style.fontSize = 8
		subtitle4_style.alignment = TA_CENTER

		data = [
			[logo, [
					Paragraph('INSTITUCION EDUCATIVA AUGUSTO ESPINOSA VALDERRAMA', title_style),
					Paragraph('Reconocido oficialmente por la Secretaría de Educación Municipal de Montería mediante resolución 0751 de junio 12 de 2009', subtitle_style),
					Paragraph('Corregimiento Santa Clara – Municipio de Montería', subtitle2_style),
					Paragraph('Tel. 7905949 Código DANE 223001005404', subtitle3_style),
					Paragraph('Nit 812007342', subtitle4_style)
				]
			]
		]
		LIST_STYLE = TableStyle([
			# ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
			# ('BOX', (0,0), (-1,-1), 0.25, colors.black),
			('TEXTCOLOR',(0,0),(-1,-1),colors.black),
			('ALIGN', (0,0), (-1,-1), 'CENTER'),
			('FONTSIZE', (-1, -1), (-1, -1), 8),
			('VALIGN',(0,0),(-1,-1),'MIDDLE'),
			('TOPPADDING', (0, 0), (-1, -1), 0),
			('BOTTOMPADDING', (0, 0), (-1, -1), 0),
			('LEFTPADDING', (0, 0), (-1, -1), 0),
			('RIGHTPADDING', (0, 0), (-1, -1), 0),
		])
		colWidths = [0.7*inch, '*']
		table = Table(data, colWidths=colWidths, style=LIST_STYLE)
		w, h = table.wrap(doc.width, 0)
		table.drawOn(canvas, doc.leftMargin + 5, doc.height + 150)
예제 #54
0
파일: log.py 프로젝트: dairdr/notes
	def drawConventions(self, canvas, doc):
		column_style = TableStyle([
			('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
			('BOX', (0, 0), (-1, -1), 0.25, colors.black),
			('TOPPADDING', (0, 0), (-1, -1), 6),
			('BACKGROUND', (0, 0), (-1, -1), colors.gray),
			('FONTSIZE', (0, 0), (-1, -1), 8),
			('ALIGN', (0, 0), (-1, -1), 'CENTER'),
			('VALIGN',(0, 0),(-1, -1),'MIDDLE')
		])

		style = ParagraphStyle(name='Style')
		style.fontName = 'Helvetica-Bold'
		style.fontSize = 7
		style.alignment = TA_CENTER
		data = [
			[Paragraph('CONVENCIONES ACERCA DE LA EVALUACIÓN POR DESEMPEÑOS SEGUN DECRETO 1290 DE 2009', style)]
		]
		table = Table(data, colWidths='*', rowHeights=0.15*inch, style=column_style)
		

		column_style = TableStyle([
			('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
			('BOX', (0, 0), (-1, -1), 0.25, colors.black),
			('TOPPADDING', (0, 0), (-1, -1), 5),
			('BACKGROUND', (0, 0), (-1, -1), '#CCCCCC'),
			('FONTSIZE', (0, 0), (-1, -1), 7),
			('ALIGN', (0, 0), (-1, -1), 'CENTER'),
			('VALIGN',(0, 0),(-1, -1),'MIDDLE')
		])
		data = [
			['DESEMPEÑO BAJO: 1.0 a 6.4', 'DESEMPEÑO BASICO: 6.5 a 7.9', 'DESEMPEÑO ALTO: 8.0 a 9.4', 'DESEMPEÑO SUPERIOR: 9.5 a 10']
		]
		table2 = Table(data, colWidths='*', rowHeights=0.15*inch, style=column_style)

		wrapper_style = TableStyle([
			('ALIGN', (0, 0), (-1, -1), 'CENTER'),
			('VALIGN',(0, 0),(-1, -1),'MIDDLE'),
			('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
			('BOX', (0, 0), (-1, -1), 0.25, colors.black),
			('TOPPADDING', (0, 0), (-1, -1), 0),
			('BOTTOMPADDING', (0, 0), (-1, -1), 0),
			('LEFTPADDING', (0, 0), (-1, -1), 0),
			('RIGHTPADDING', (0, 0), (-1, -1), 0),
		])
		data = [
			[table],
			[table2]
		]
		wrapper = Table(data, colWidths='*', style=wrapper_style)
		w, h = wrapper.wrap(doc.width, 0)
		wrapper.drawOn(canvas, doc.leftMargin, doc.height + 50)
예제 #55
0
def dibujar_tabla(c, data, high):
    width, height = letter  # ancho y alto de la hoja
    table = Table(data, colWidths=[2.3 * cm, 1.8 * cm, 4.4 * cm, 2 * cm, 2 * cm, 1.8 * cm, 2 * cm, 2.1 * cm, 1.3 * cm])
    table.setStyle(TableStyle([
        ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
        ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
        ('ALIGN', (-3, 0), (-1, -1), 'RIGHT'),
        ('ALIGN', (3, 0), (-4, -1), 'CENTER'),
        # ('TEXTCOLOR',(-3,1),(-1,-1),colors.red),
    ]))
    # pdf size
    table.wrapOn(c, width, height)
    table.drawOn(c, 30, high)
예제 #56
0
파일: actions.py 프로젝트: smatht/inges
def frameDetalle(pdf, idOrden):
  f = Frame(10,55, 570, 437)
  f.drawBoundary(pdf)

  encabezado = ('CANT.', 'MATERIAL')
  # Detalle de tabla con 20 renglones
  # Recorre PedidoItem (linea por producto)
  detalle = []
  for qs in PedidoItem.objects.filter(pedido=idOrden).order_by('pk'):
      descripcion = qs.producto.descripcion + ' ' + qs.sAclaracion
      if (len(descripcion) <= 102):
          detalle += [(qs.sCantidad +' '+ qs.unidades.descripcionCorta, descripcion)]
      else:
          detalle += [(qs.sCantidad +' '+ qs.unidades.descripcionCorta, descripcion[:102])]
          if (len(descripcion[102:240]) <= 102):
              detalle += [('', descripcion[102:240])]
          else:
              detalle += [('', descripcion[102:240])]
              detalle += [('', descripcion[240:300])]

  # Recorre PedidoItemConcepto (linea por concepto)
  for qs in PedidoItemConcepto.objects.filter(pedido=idOrden).order_by('pk'):
      descripcion = qs.sDescripcion
      if (len(descripcion) <= 102):
          detalle += [(qs.sCantidad +' '+ qs.unidades.descripcionCorta, descripcion)]
      else:
          detalle += [(qs.sCantidad +' '+ qs.unidades.descripcionCorta, descripcion[:102])]
          if (len(descripcion[102:240]) <= 102):
              detalle += [('', descripcion[102:240])]
          else:
              detalle += [('', descripcion[102:240])]
              detalle += [('', descripcion[240:300])]

  while len(detalle) < 23:
      detalle = detalle + [('', '')]
      detalle_orden = Table([encabezado] + detalle, colWidths=[2 * cm, 17.95 * cm])

      detalle_orden.setStyle(TableStyle(
          [
            # La primera fila(encabezados) va a estar centrada
            ('ALIGN', (0, 0), (1, 0), 'CENTER'),
            # Los bordes de todas las celdas serán de color negro y con un grosor de 1
            ('GRID', (0, 0), (-1, -1), 1, colors.black),
            # El tamaño de las letras de cada una de las celdas será de 10
            ('FONTSIZE', (0, 0), (-1, -1), 10),
          ]
      ))
  # Establecemos el tamaño de la hoja que ocupará la tabla
  detalle_orden.wrapOn(pdf, 800, 600)
  # Definimos la coordenada donde se dibujará la tabla
  detalle_orden.drawOn(pdf, 12, 57)
예제 #57
0
def header_building(canvas, doc, styles):
    a = Image(settings.LOGO_INSTITUTION_URL, width=15*mm, height=20*mm)
    p = Paragraph('''<para align=center>
                        <font size=16>%s</font>
                    </para>''' % (_('documents')), styles["Normal"])

    data_header = [[a, '%s' % _('ucl_denom_location'), p], ]

    t_header = Table(data_header, [30*mm, 100*mm, 50*mm])

    t_header.setStyle(TableStyle([]))

    w, h = t_header.wrap(doc.width, doc.topMargin)
    t_header.drawOn(canvas, doc.leftMargin, doc.height + doc.topMargin - h)
예제 #58
0
    def _drawTable(self, canvas, data):
        cellWidth = getCellWidth(len(self.objectList)) 
        table = Table(data, cellWidth)

        table.setStyle(TableStyle([
                       ('BOX', (0,0), (-1,-1), 0.25, colors.black),
                       ('ALIGNMENT', (0,1), (-1,2), 'CENTER'),
                       ('GRID', (0,1), (-1,-1), 0.25, colors.black),
                       ]))

        table.wrapOn(canvas, 10, 10)

        leftTopX, leftTopY = (30, 750)
        table.drawOn(canvas, leftTopX, leftTopY)
예제 #59
0
def draw_invoice_detail(canvas, invoice):
    invoice_detail = [[
        u'Fattura numero %s' % (invoice.id_fattura),
        '',
        u'Bergamo, li %s' % invoice.data_fattura.strftime("%d-%m-%Y"),
                    ],
        []
    ]

    table = Table(invoice_detail, colWidths=[3.5 * cm, 10 * cm, 3.5 * cm])
    table.setStyle([
        ('FONT', (0, 0), (-1, -1), 'Helvetica-Oblique'),
        ('FONTSIZE', (0, 0), (-1, -1), 8),
        ('TEXTCOLOR', (0, 0), (-1, -1), (0.2, 0.2, 0.2)),
        ('ALIGN', (0, 0), (0, 0), 'LEFT'),
        ('ALIGN', (-1, -1), (-1, -1), 'RIGHT'),
        ('LINEBELOW', (0, 0), (0, 0), 0.5, (0.7, 0.7, 0.7)),
        ('LINEBELOW', (2, 0), (2, 0), 0.5, (0.7, 0.7, 0.7)),
    ])
    tw, th, = table.wrapOn(canvas, 2 * cm, 19 * cm)
    table.drawOn(canvas, 2 * cm, -5.5 * cm)
    cf=''
    vat=''
    if invoice.cliente_id.persona_giuridica:
        vat = 'Partita iva : %s' % invoice.cliente_id.partita_iva
    else:
        if invoice.cliente_id.partita_iva:
            vat = 'Partita iva : %s' % invoice.cliente_id.partita_iva
            cf = 'Codice fiscale : %s' % invoice.cliente_id.codice_fiscale
        else:
            cf = 'Codice fiscale : %s' % invoice.cliente_id.codice_fiscale
    customer_detail_list = (
        u'Spett.le',
        invoice.cliente_id.ragione_sociale,
        invoice.cliente_id.indirizzo,
        invoice.cliente_id.cap + ' ' + invoice.cliente_id.citta + ' ' + invoice.cliente_id.provincia,
        vat,
        cf)
    customer_detail=[]
    for i in customer_detail_list:
        customer_detail.append([i])
    table = Table(customer_detail, colWidths=[6 * cm], rowHeights=[12, 12, 12, 12, 12, 12])
    table.setStyle([
        ('FONT', (0, 0), (-1, -1), 'Helvetica-Oblique'),
        ('FONTSIZE', (0, 0), (-1, -1), 8),
        ('TEXTCOLOR', (0, 0), (-1, -1), (0.2, 0.2, 0.2)),
        ('ALIGN', (0, 0), (-1, -1), 'LEFT'),
    ])
    tw, th, = table.wrapOn(canvas, 2 * cm, 19 * cm)
    table.drawOn(canvas, 13.7 * cm, -8 * cm)