我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用reportlab.platypus.TableStyle()。
def tabla_otros(self): orden = self.orden_compra p = ParagraphStyle('parrafos', alignment = TA_CENTER, fontSize = 8, fontName="Times-Roman") sub_total = Paragraph(u"SUBTOTAL: ",p) igv = Paragraph(u"IGV: ",p) total = Paragraph(u"TOTAL: ",p) datos_otros = [[ Paragraph(u"LUGAR DE ENTREGA",p), Paragraph(u"PLAZO DE ENTREGA",p), Paragraph(u"FORMA DE PAGO",p),sub_total,orden.subtotal], [Paragraph(EMPRESA.direccion(),p),Paragraph(u"INMEDIATA",p),Paragraph(orden.forma_pago.descripcion,p),igv,str(orden.igv)], ['','','',total,str(orden.total)], ] tabla_otros = Table(datos_otros,colWidths=[5.5 * cm, 5 * cm, 5 * cm, 2 * cm, 2.5 * cm]) tabla_otros.setStyle(TableStyle( [ ('GRID', (0, 0), (2, 2), 1, colors.black), ('SPAN',(0,1),(0,2)), ('SPAN',(1,1),(1,2)), ('SPAN',(2,1),(2,2)), ('GRID', (4, 0), (4, 2), 1, colors.black), ('VALIGN',(0,1),(2,1),'MIDDLE'), ] )) return tabla_otros
def cuadro_observaciones(self,pdf,y,orden): p = ParagraphStyle('parrafos') p.alignment = TA_JUSTIFY p.fontSize = 10 p.fontName="Times-Roman" obs=Paragraph("Observaciones: "+orden.observaciones,p) observaciones = [[obs]] tabla_observaciones = Table(observaciones,colWidths=[18.50 * cm], rowHeights=1.8 * cm) tabla_observaciones.setStyle(TableStyle( [ ('GRID', (0, 0), (0, 2), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 8), ('ALIGN',(0,0),(-1,-1),'LEFT'), ('VALIGN',(0,0),(-1,-1),'TOP'), ] )) tabla_observaciones.wrapOn(pdf, 800, 600) tabla_observaciones.drawOn(pdf, 40,y-58)
def detalle(self,pdf,y,cotizacion): encabezados = ('Nro', 'Descripción', 'Unidad','Cantidad') detalles = cotizacion.detallecotizacion_set.all() lista_detalles = [] for detalle in detalles: tupla_producto = (detalle.nro_detalle, detalle.detalle_requerimiento.producto.descripcion, detalle.detalle_requerimiento.producto.unidad_medida.descripcion, detalle.cantidad) lista_detalles.append(tupla_producto) adicionales = [('','','','')]*(15-len(detalles)) tabla_detalle = Table([encabezados] + lista_detalles + adicionales,colWidths=[1 * cm, 13.5 * cm, 1.5 * cm, 2* cm]) tabla_detalle.setStyle(TableStyle( [ ('ALIGN',(0,0),(3,0),'CENTER'), ('GRID', (0, 0), (-1, -1), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 7), ('ALIGN',(3,1),(-1,-1),'LEFT'), ] )) tabla_detalle.wrapOn(pdf, 800, 600) tabla_detalle.drawOn(pdf, 40,y+80)
def cuadro_observaciones(self,pdf,y,cotizacion): p = ParagraphStyle('parrafos') p.alignment = TA_JUSTIFY p.fontSize = 8 p.fontName="Times-Roman" obs=Paragraph("OBSERVACIONES: "+cotizacion.observaciones,p) observaciones = [[obs]] tabla_observaciones = Table(observaciones,colWidths=[18 * cm], rowHeights=1.8 * cm) tabla_observaciones.setStyle(TableStyle( [ ('GRID', (0, 0), (0, 2), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 8), ('ALIGN',(0,0),(-1,-1),'LEFT'), ('VALIGN',(0,0),(-1,-1),'TOP'), ] )) tabla_observaciones.wrapOn(pdf, 800, 600) tabla_observaciones.drawOn(pdf, 40,y+20)
def tabla_encabezado(self, styles): sp = ParagraphStyle('parrafos', alignment=TA_CENTER, fontSize=14, fontName="Times-Roman") requerimiento = self.requerimiento try: archivo_imagen = os.path.join(settings.MEDIA_ROOT, str(EMPRESA.logo)) imagen = Image(archivo_imagen, width=90, height=50, hAlign='LEFT') except: print u"Ingresa acá " imagen = Paragraph(u"LOGO", sp) nro = Paragraph(u"REQUERIMIENTO DE BIENES Y SERVICIOS<br/>N°" + requerimiento.codigo, sp) encabezado = [[imagen, nro, '']] tabla_encabezado = Table(encabezado, colWidths=[4 * cm, 11 * cm, 4 * cm]) tabla_encabezado.setStyle(TableStyle( [ ('ALIGN', (0, 0), (1, 0), 'CENTER'), ('VALIGN', (0, 0), (1, 0), 'CENTER'), ] )) return tabla_encabezado
def tabla_datos(self, styles): requerimiento = self.requerimiento izquierda = ParagraphStyle('parrafos', alignment=TA_LEFT, fontSize=10, fontName="Times-Roman") solicitado = Paragraph(u"SOLICITADO POR: " + requerimiento.solicitante.nombre_completo(), izquierda) oficina = Paragraph(u"OFICINA: " + requerimiento.oficina.nombre, izquierda) motivo = Paragraph(u"MOTIVO: " + requerimiento.motivo, izquierda) fecha = Paragraph(u"FECHA DE REQUERIMIENTO: " + requerimiento.fecha.strftime('%d/%m/%Y'), izquierda) mes = Paragraph(u"MES EN QUE SE NECESITA: " + requerimiento.get_mes_display(), izquierda) para_stock = Paragraph(u"AÑO EN QUE SE NECESITA: " + str(requerimiento.annio), izquierda) if requerimiento.entrega_directa_solicitante: entrega = Paragraph(u"ENTREGA DIRECTAMENTE AL SOLICITANTE: SI", izquierda) else: entrega = Paragraph(u"ENTREGA DIRECTAMENTE AL SOLICITANTE: NO", izquierda) datos = [[solicitado, oficina], [motivo], [fecha, mes], [para_stock, entrega]] tabla_datos = Table(datos, colWidths=[11 * cm, 9 * cm]) style = TableStyle( [ ('SPAN', (0, 1), (1, 1)), ] ) tabla_datos.setStyle(style) return tabla_datos
def tabla_observaciones(self): requerimiento = self.requerimiento p = ParagraphStyle('parrafos') p.alignment = TA_JUSTIFY p.fontSize = 8 p.fontName = "Times-Roman" obs = Paragraph("OBSERVACIONES: " + requerimiento.observaciones, p) observaciones = [[obs]] tabla_observaciones = Table(observaciones, colWidths=[20 * cm], rowHeights=1.8 * cm) tabla_observaciones.setStyle(TableStyle( [ ('GRID', (0, 0), (0, 2), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 8), ('ALIGN', (0, 0), (-1, -1), 'LEFT'), ('VALIGN', (0, 0), (-1, -1), 'TOP'), ] )) return tabla_observaciones
def tabla_observaciones(self): movimiento = self.movimiento p = ParagraphStyle('parrafos', alignment = TA_JUSTIFY, fontSize = 8, fontName="Times-Roman") obs=Paragraph("OBSERVACIONES: "+movimiento.observaciones,p) observaciones = [[obs]] tabla_observaciones = Table(observaciones,colWidths=[20 * cm], rowHeights=1.8 * cm) tabla_observaciones.setStyle(TableStyle( [ ('GRID', (0, 0), (0, 2), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 8), ('ALIGN',(0,0),(-1,-1),'LEFT'), ('VALIGN',(0,0),(-1,-1),'TOP'), ] )) return tabla_observaciones
def tabla_encabezado_consolidado(self, grupos): sp = ParagraphStyle('parrafos', alignment=TA_CENTER, fontSize=14, fontName="Times-Roman") try: archivo_imagen = os.path.join(settings.MEDIA_ROOT, str(EMPRESA.logo)) imagen = Image(archivo_imagen, width=90, height=50, hAlign='LEFT') except: imagen = Paragraph(u"LOGO", sp) if grupos: titulo = Paragraph(u"RESUMEN MENSUAL DE ALMACÉN POR GRUPOS Y CUENTAS", sp) else: titulo = Paragraph(u"RESUMEN MENSUAL DE ALMACÉN POR PRODUCTOS", sp) encabezado = [[imagen,titulo]] tabla_encabezado = Table(encabezado, colWidths=[2 * cm, 23 * cm]) style = TableStyle( [ ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ] ) tabla_encabezado.setStyle(style) return tabla_encabezado
def run(self,open=True): self.Set_Heading() self.Set_Heading_Style() self.SetTable_Style() self.Format_Title() #[self.cW1*cm]*2+[self.cW2*cm]+[1*cm]*2+[self.cW3*cm]*56 #[self.cW1*cm]*2+[self.cW2*cm]+[1*cm]*2+[self.cW3*cm]*51+[ self.cW4*cm]*11+[self.cW5*cm]+[self.cW3*cm]*3 self.Heading_Table=Table(self.HEADING,[self.cW1*cm]*2+[self.cW2*cm]+[1*cm]*2+[self.cW3*cm]*41+[ self.cW4*cm]*11+[self.cW5*cm]+[self.cW3*cm]*3,[self.rH2*cm]+[self.rH3*cm]+[self.rH4*cm]) self.Heading_Table.setStyle(TableStyle(self.Heading_Style)) self.Populate() #self.AddPage() self.Set_Consolidation() self.Set_Consolidation_Style() self.Add_Consolidation() self.Failed_Report() self.Save(open)
def add_timeline(self): ptext = '<b><font size=14>Processing Timeline</font></b>' self.Story.append(Paragraph(ptext, self.styles['Normal'])) self.Story.append(Spacer(1, 0.1*inch)) data = [ [self.request['stage'][0]['name'], self.time_str(self.request['stage'][0]['time'])], [self.request['stage'][1]['name'], self.time_str(self.request['stage'][1]['time'])], [self.request['stage'][2]['name'], self.time_str(self.request['stage'][2]['time'])], [self.request['stage'][3]['name'], self.time_str(int(time.time()))] # ['complete', self.time_str(self.request['stage'][3]['time'])] ] data = [[i[0], pg(i[1], 1)] for i in data] t = Table(data) t.setStyle(TableStyle([ ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black), ('BOX', (0,0), (-1,-1), 0.25, colors.black) ])) self.Story.append(t)
def gather_elements(self, client, node, style): if isinstance(node.parent, docutils.nodes.authors): # Is only one of multiple authors. Return a paragraph node.elements = [Paragraph(client.gather_pdftext(node), style=style)] if client.doc_author: client.doc_author += client.author_separator(style=style) \ + node.astext().strip() else: client.doc_author = node.astext().strip() else: # A single author: works like a field fb = client.gather_pdftext(node) t_style=TableStyle(client.styles['field-list'].commands) colWidths=map(client.styles.adjustUnits, client.styles['field-list'].colWidths) node.elements = [Table( [[Paragraph(client.text_for_label("author", style)+":", style=client.styles['fieldname']), Paragraph(fb, style)]], style=t_style, colWidths=colWidths)] client.doc_author = node.astext().strip() return node.elements
def tabla_encabezado(self, styles): orden_compra = self.orden_compra sp = ParagraphStyle('parrafos', alignment = TA_CENTER, fontSize = 14, fontName="Times-Roman") try: archivo_imagen = os.path.join(settings.MEDIA_ROOT,str(EMPRESA.logo)) imagen = Image(archivo_imagen, width=90, height=50,hAlign='LEFT') except: imagen = Paragraph(u"LOGO", sp) nro = Paragraph(u"ORDEN DE COMPRA", sp) ruc = Paragraph("R.U.C."+EMPRESA.ruc, sp) encabezado = [[imagen,nro,ruc],['',u"N°"+orden_compra.codigo,EMPRESA.distrito + " " + orden_compra.fecha.strftime('%d de %b de %Y')]] tabla_encabezado = Table(encabezado,colWidths=[4 * cm, 9 * cm, 6 * cm]) tabla_encabezado.setStyle(TableStyle( [ ('ALIGN',(0,0),(2,1),'CENTER'), ('VALIGN',(0,0),(2,0),'CENTER'), ('VALIGN',(1,1),(2,1),'TOP'), ('SPAN',(0,0),(0,1)), ] )) return tabla_encabezado
def tabla_datos(self, styles): orden = self.orden_compra izquierda = ParagraphStyle('parrafos', alignment = TA_LEFT, fontSize = 10, fontName="Times-Roman") cotizacion = orden.cotizacion if cotizacion is None: proveedor = orden.proveedor else: proveedor = orden.cotizacion.proveedor razon_social_proveedor = Paragraph(u"SEÑOR(ES): "+proveedor.razon_social, izquierda) ruc_proveedor = Paragraph(u"R.U.C.: "+proveedor.ruc, izquierda) direccion = Paragraph(u"DIRECCIÓN: "+proveedor.direccion, izquierda) try: telefono = Paragraph(u"TELÉFONO: "+proveedor.telefono, izquierda) except: telefono = Paragraph(u"TELÉFONO: -", izquierda) try: referencia = Paragraph(u"REFERENCIA: "+orden.cotizacion.requerimiento.codigo+" - "+orden.cotizacion.requerimiento.oficina.nombre, izquierda) except: referencia = Paragraph(u"REFERENCIA: ",izquierda) proceso = Paragraph(u"PROCESO: "+orden.proceso, izquierda) nota = Paragraph(u"Sírvase remitirnos según especificaciones que detallamos lo siguiente: ", izquierda) datos = [[razon_social_proveedor,ruc_proveedor],[direccion,telefono],[referencia,''],[proceso,''],[nota,'']] tabla_detalle = Table(datos,colWidths=[11* cm, 9 * cm]) tabla_detalle.setStyle(TableStyle( [ ('SPAN',(0,2),(1,2)), ] )) return tabla_detalle
def tabla_detalle(self): orden = self.orden_compra encabezados = ['Item', 'Cantidad', 'Unidad', u'Descripción','Precio','Total'] detalles = DetalleOrdenCompra.objects.filter(orden=orden).order_by('pk') sp = ParagraphStyle('parrafos') sp.alignment = TA_JUSTIFY sp.fontSize = 8 sp.fontName="Times-Roman" lista_detalles = [] for detalle in detalles: try: tupla_producto = [Paragraph(str(detalle.nro_detalle),sp), Paragraph(str(detalle.cantidad), sp), Paragraph(detalle.detalle_cotizacion.detalle_requerimiento.producto.unidad_medida.descripcion,sp), Paragraph(detalle.detalle_cotizacion.detalle_requerimiento.producto.descripcion, sp), Paragraph(str(detalle.precio),sp), Paragraph(str(detalle.valor),sp)] except: tupla_producto = [Paragraph(str(detalle.nro_detalle),sp), Paragraph(str(detalle.cantidad), sp), Paragraph(detalle.producto.unidad_medida.descripcion,sp), Paragraph(detalle.producto.descripcion, sp), Paragraph(str(detalle.precio),sp), Paragraph(str(detalle.valor),sp)] lista_detalles.append(tupla_producto) adicionales = [('','','','','')] * (15-len(lista_detalles)) tabla_detalle = Table([encabezados] + lista_detalles + adicionales,colWidths=[0.8 * cm, 2 * cm, 2.5 * cm,10.2* cm, 2 * cm, 2.5 * cm]) style = TableStyle( [ ('ALIGN',(0,0),(4,0),'CENTER'), ('GRID', (0, 0), (-1, -1), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 7), ('ALIGN',(4,1),(-1,-1),'LEFT'), ('VALIGN',(0,0),(-1,-1),'TOP'), ] ) tabla_detalle.setStyle(style) return tabla_detalle
def tabla_total_letras(self): orden = self.orden_compra total_letras = [("SON: "+orden.total_letras,'')] tabla_total_letras = Table(total_letras,colWidths=[17.5 * cm, 2.5 * cm]) tabla_total_letras.setStyle(TableStyle( [ ('GRID', (0, 0), (1, 0), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 8), ] )) return tabla_total_letras
def tabla_afectacion_presupuestal(self): orden = self.orden_compra p = ParagraphStyle('parrafos', alignment = TA_JUSTIFY, fontSize = 8, fontName="Times-Roman") hoja_afectacion = Paragraph(u"HOJA DE AFECTACIÓN PRESUPUESTAL: ",p) importante = Paragraph(u"IMPORTANTE: ", p) recibido = Paragraph(u"RECIBIDO POR: ", p) firma = Paragraph(u"FIRMA: ", p) nombre = Paragraph(u"NOMBRE: ", p) dni = Paragraph(u"DNI: ", p) lista = ListFlowable([ Paragraph("""Consignar el número de la presente Orden de Compra en su Guía de Remisión y Factura. Facturar a nombre de """ + smart_str(EMPRESA.razon_social),p), Paragraph("El " + smart_str(EMPRESA.razon_social) + """, se reserva el derecho de devolver la mercaderia, sino se ajusta a las especificaciones requeridas, asimismo de anular la presente Orden de Compra.""",p), Paragraph("""El pago de toda factura se hará de acuerdo a las condiciones establecidas.""",p) ],bulletType='1' ) datos_otros = [[hoja_afectacion,''], [importante,recibido], [lista,''], ['',firma], ['',nombre], ['',dni], ] tabla_afectacion_presupuestal = Table(datos_otros,colWidths=[10 * cm, 10 * cm]) tabla_afectacion_presupuestal.setStyle(TableStyle( [ ('ALIGN',(0,1),(1,1),'CENTER'), ('SPAN',(0,2),(0,5)), ] )) return tabla_afectacion_presupuestal
def detalle(self,pdf,y,orden): encabezados = ('Item', 'Cantidad', 'Unidad', u'Descripción','Precio','Total') try: detalles = [(detalle.nro_detalle, detalle.cantidad, detalle.detalle_cotizacion.detalle_requerimiento.producto.unidad_medida.descripcion, detalle.detalle_cotizacion.detalle_requerimiento.producto.descripcion, detalle.precio,round(detalle.valor,5)) for detalle in DetalleOrdenCompra.objects.filter(orden=orden)] except: detalles = [(detalle.nro_detalle, detalle.cantidad, detalle.producto.unidad_medida.descripcion, detalle.producto.descripcion, detalle.precio, round(detalle.precio,5)) for detalle in DetalleOrdenCompra.objects.filter(orden=orden)] adicionales = [('','','','','','')]*(15-len(detalles)) detalle_orden = Table([encabezados] + detalles + adicionales,colWidths=[0.8 * cm, 1.9 * cm, 2 * cm,9.3* cm, 2 * cm, 2.5 * cm]) detalle_orden.setStyle(TableStyle( [ ('ALIGN',(0,0),(5,0),'CENTER'), ('GRID', (0, 0), (-1, -1), 1, colors.black), #('LINEBELOW', (0,1), (5,-1), 0, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 8), ('ALIGN',(4,1),(-1,-1),'RIGHT'), ] )) detalle_orden.wrapOn(pdf, 800, 600) detalle_orden.drawOn(pdf, 40,y+75) #Letras total_letras = [("SON: "+orden.total_letras,'')] tabla_total_letras = Table(total_letras,colWidths=[16 * cm, 2.5 * cm]) tabla_total_letras.setStyle(TableStyle( [ ('GRID', (0, 0), (1, 0), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 8), ] )) tabla_total_letras.wrapOn(pdf, 800, 600) tabla_total_letras.drawOn(pdf, 40,y+55)
def otros(self,pdf,y,orden): encabezados_otros = ('LUGAR DE ENTREGA', 'PLAZO DE ENTREGA', 'FORMA DE PAGO') otros = [(EMPRESA.direccion(),u"INMEDIATA",orden.forma_pago.descripcion)] tabla_otros = Table([encabezados_otros] + otros,colWidths=[6 * cm, 3.5 * cm, 4.5 * cm], rowHeights=[0.6 * cm, 1 * cm]) tabla_otros.setStyle(TableStyle( [ ('ALIGN',(0,0),(2,0),'CENTER'), ('GRID', (0, 0), (2, 1), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 8), ] )) tabla_otros.wrapOn(pdf, 800, 600) tabla_otros.drawOn(pdf, 40,y+5)
def cuadro_total(self,pdf,y,orden): pdf.drawString(445, y+40, u"SUB-TOTAL: ") pdf.drawString(445, y+20, u"IGV: ") pdf.drawString(445, y, u"TOTAL: S/") total = [[round(orden.subtotal,2)],[round(orden.impuesto,2)],[round(orden.total,2)]] tabla_total = Table(total,colWidths=[2.5 * cm]) tabla_total.setStyle(TableStyle( [ ('GRID', (0, 0), (0, 2), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 8), ('ALIGN',(0,0),(-1,-1),'RIGHT'), ] )) tabla_total.wrapOn(pdf, 800, 600) tabla_total.drawOn(pdf, 495,y-2)
def otros(self,pdf,y,orden): encabezados_otros = ('LUGAR DE ENTREGA', 'PLAZO DE ENTREGA', 'FORMA DE PAGO') otros = [('',u" DÍAS","")] tabla_otros = Table([encabezados_otros] + otros,colWidths=[6 * cm, 3.5 * cm, 4.5 * cm], rowHeights=[0.6 * cm, 1 * cm]) tabla_otros.setStyle(TableStyle( [ ('GRID', (0, 0), (2, 1), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 8), ] )) tabla_otros.wrapOn(pdf, 800, 600) tabla_otros.drawOn(pdf, 40,y+5)
def cuadro_total(self,pdf,y,orden): pdf.drawString(445, y+40, u"SUB-TOTAL: ") pdf.drawString(445, y+20, u"IGV: ") pdf.drawString(445, y, u"TOTAL: ") total = [[orden.subtotal],[str(orden.impuesto)],[str(orden.total)]] tabla_total = Table(total,colWidths=[2.5 * cm]) tabla_total.setStyle(TableStyle( [ ('GRID', (0, 0), (0, 2), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 8), ('ALIGN',(0,0),(-1,-1),'RIGHT'), ] )) tabla_total.wrapOn(pdf, 800, 600) tabla_total.drawOn(pdf, 495,y-2)
def cabecera(self,pdf,cotizacion): archivo_imagen = os.path.join(settings.MEDIA_ROOT,str(EMPRESA.logo)) pdf.drawImage(archivo_imagen, 20, 750, 120, 90,preserveAspectRatio=True) pdf.setFont("Times-Roman", 14) encabezado = [[u"SOLICITUD DE COTIZACIÓN"]] tabla_encabezado = Table(encabezado,colWidths=[8 * cm]) tabla_encabezado.setStyle(TableStyle( [ ('ALIGN',(0,0),(0,0),'CENTER'), ('GRID', (0, 0), (1, 0), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 10), ] )) tabla_encabezado.wrapOn(pdf, 800, 600) tabla_encabezado.drawOn(pdf, 200,800) pdf.drawString(270, 780, u"N°"+cotizacion.codigo) pdf.setFont("Times-Roman", 10) pdf.drawString(40, 750, u"SEÑOR(ES): "+cotizacion.proveedor.razon_social) pdf.drawString(440, 750, u"R.U.C.: "+cotizacion.proveedor.ruc) direccion = cotizacion.proveedor.direccion if len(direccion)>60: pdf.drawString(40,730,u"DIRECCIÓN: "+direccion[0:60]) pdf.drawString(105, 720,direccion[60:]) else: pdf.drawString(40,730,u"DIRECCIÓN: "+direccion) try: pdf.drawString(440, 730, u"TELÉFONO: "+cotizacion.proveedor.telefono) except: pdf.drawString(440, 730, u"TELÉFONO: -") pdf.drawString(40, 710, u"FECHA: "+cotizacion.fecha.strftime('%d/%m/%Y'))
def tabla_encabezado(self, styles): movimiento = self.movimiento sp = ParagraphStyle('parrafos', alignment = TA_CENTER, fontSize = 14, fontName="Times-Roman") try: archivo_imagen = os.path.join(settings.MEDIA_ROOT,str(EMPRESA.logo)) imagen = Image(archivo_imagen, width=90, height=50,hAlign='LEFT') except: imagen = Paragraph(u"LOGO", sp) if movimiento.tipo_movimiento.incrementa: nota = Paragraph(u"NOTA DE INGRESO N°", sp) else: nota = Paragraph(u"NOTA DE SALIDA N°", sp) id_movimiento = Paragraph(movimiento.id_movimiento, sp) fecha = Paragraph("FECHA: "+movimiento.fecha_operacion.strftime('%d/%m/%y'), sp) encabezado = [[imagen,nota,fecha], ['',id_movimiento,''] ] tabla_encabezado = Table(encabezado,colWidths=[4 * cm, 9 * cm, 6 * cm]) tabla_encabezado.setStyle(TableStyle( [ ('VALIGN',(0,0),(2,0),'CENTER'), ('VALIGN',(1,1),(2,1),'TOP'), ('SPAN',(0,0),(0,1)), ] )) return tabla_encabezado
def tabla_datos(self, styles): movimiento = self.movimiento izquierda = ParagraphStyle('parrafos', alignment = TA_LEFT, fontSize = 10, fontName="Times-Roman") try: if movimiento.referencia.cotizacion is not None: proveedor = Paragraph(u"PROVEEDOR: "+movimiento.referencia.cotizacion.proveedor.razon_social,izquierda) else: proveedor = Paragraph(u"PROVEEDOR: "+movimiento.referencia.proveedor.razon_social,izquierda) except: proveedor = Paragraph(u"PROVEEDOR:",izquierda) operacion = Paragraph(u"OPERACIÓN: "+movimiento.tipo_movimiento.descripcion,izquierda) almacen = Paragraph(u"ALMACÉN: "+movimiento.almacen.codigo+"-"+movimiento.almacen.descripcion,izquierda) try: orden_compra = Paragraph(u"ORDEN DE COMPRA: "+movimiento.referencia.codigo,izquierda) except: orden_compra = Paragraph(u"REFERENCIA: -",izquierda) try: documento = Paragraph(u"DOCUMENTO: "+movimiento.tipo_documento.descripcion + " SERIE:" + movimiento.serie + u" NÚMERO:" + movimiento.numero, izquierda) except: documento = "" try: pedido = Paragraph(u"PEDIDO: "+movimiento.pedido.codigo, izquierda) except: pedido = "" encabezado = [[operacion,''], [almacen,''], [proveedor,''], [orden_compra,''], [documento,''], [pedido,'']] tabla_datos = Table(encabezado,colWidths=[11 * cm, 9 * cm]) tabla_datos.setStyle(TableStyle( [ ] )) return tabla_datos
def tabla_detalle(self): movimiento = self.movimiento encabezados = ['Item', 'Cantidad', 'Unidad', u'Descripción','Precio','Total'] detalles = DetalleMovimiento.objects.filter(movimiento=movimiento).order_by('pk') sp = ParagraphStyle('parrafos') sp.alignment = TA_JUSTIFY sp.fontSize = 8 sp.fontName="Times-Roman" lista_detalles = [] for detalle in detalles: tupla_producto = [str(detalle.nro_detalle), format(detalle.cantidad,'.5f'), str(detalle.producto.unidad_medida.codigo), detalle.producto.descripcion, format(detalle.precio,'.5f'), format(detalle.valor,'.5f')] lista_detalles.append(tupla_producto) adicionales = [('','','','','')] * (15-len(lista_detalles)) tabla_detalle = Table([encabezados] + lista_detalles,colWidths=[1.5 * cm, 2.5 * cm, 1.5 * cm,10* cm, 2 * cm, 2.5 * cm]) style = TableStyle( [ ('GRID', (0, 0), (-1, -1), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 8), ('ALIGN',(4,0),(-1,-1),'RIGHT'), ] ) tabla_detalle.setStyle(style) return tabla_detalle
def tabla_firmas(self): movimiento = self.movimiento izquierda = ParagraphStyle('parrafos', alignment = TA_CENTER, fontSize = 8, fontName="Times-Roman") nombre_oficina_administracion = Paragraph(OFICINA_ADMINISTRACION.nombre,izquierda) nombre_oficina_logistica = Paragraph(LOGISTICA.nombre,izquierda) if movimiento.tipo_movimiento.incrementa: total = [[nombre_oficina_administracion,'', nombre_oficina_logistica]] tabla_firmas = Table(total,colWidths=[7 * cm,4 * cm,7 * cm]) tabla_firmas.setStyle(TableStyle( [ ("LINEABOVE", (0,0), (0,0), 1, colors.black), ("LINEABOVE", (2,0), (2,0), 1, colors.black), ('VALIGN',(0,0),(-1,-1),'TOP'), ] )) else: solicitante = Paragraph('SOLICITANTE',izquierda) total = [[nombre_oficina_administracion,'',nombre_oficina_logistica,'',solicitante]] tabla_firmas = Table(total,colWidths=[5 * cm, 1 * cm, 5 * cm, 1 * cm, 5 * cm]) tabla_firmas.setStyle(TableStyle( [ ("LINEABOVE", (0,0), (0,0), 1, colors.black), ("LINEABOVE", (2,0), (2,0), 1, colors.black), ("LINEABOVE", (4,0), (4,0), 1, colors.black), #("LINEABOVE", (2,0), (2,0), 1, colors.black), ('VALIGN',(0,0),(-1,-1),'TOP'), ] )) return tabla_firmas
def _header_footer(self, canvas, doc): canvas.saveState() sp = ParagraphStyle('parrafos', alignment=TA_CENTER, fontSize=14, fontName="Times-Roman") try: archivo_imagen = os.path.join(settings.MEDIA_ROOT, str(EMPRESA.logo)) imagen = Image(archivo_imagen, width=90, height=50, hAlign='LEFT') except: imagen = Paragraph(u"LOGO", sp) ruc_empresa = "RUC: " + EMPRESA.ruc if self.grupos: titulo = Paragraph(u"RESUMEN MENSUAL DE ALMACÉN POR GRUPOS Y CUENTAS", sp) else: titulo = Paragraph(u"RESUMEN MENSUAL DE ALMACÉN", sp) periodo = "PERIODO: " + self.desde.strftime('%d/%m/%Y') + ' - ' + self.hasta.strftime('%d/%m/%Y') pagina = u"Página " + str(doc.page) + " de " + str(self.total_paginas) encabezado = [[imagen, titulo, pagina],[ruc_empresa,periodo,""]] tabla_encabezado = Table(encabezado, colWidths=[3 * cm, 20 * cm, 3 * cm]) style = TableStyle( [ ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ] ) tabla_encabezado.setStyle(style) tabla_encabezado.wrapOn(canvas, 50, 510) tabla_encabezado.drawOn(canvas, 50, 510) canvas.restoreState()
def _header(self, canvas, doc): canvas.saveState() sp = ParagraphStyle('parrafos', alignment=TA_CENTER, fontSize=14, fontName="Times-Roman") try: archivo_imagen = os.path.join(settings.MEDIA_ROOT, str(EMPRESA.logo)) imagen = Image(archivo_imagen, width=90, height=50, hAlign='LEFT') except: imagen = Paragraph(u"LOGO", sp) ruc_empresa = "RUC: " + EMPRESA.ruc if self.valorizado: titulo = Paragraph(u"REGISTRO DEL INVENTARIO PERMANENTE VALORIZADO", sp) else: titulo = Paragraph(u"REGISTRO DEL INVENTARIO PERMANENTE EN UNIDADES FÍSICAS",sp) pagina = u"Página " + str(doc.page) + " de " + str(self.total_paginas) encabezado = [[imagen, titulo, pagina], [ruc_empresa, "", ""]] tabla_encabezado = Table(encabezado, colWidths=[3 * cm, 20 * cm, 3 * cm]) style = TableStyle( [ ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ] ) tabla_encabezado.setStyle(style) tabla_encabezado.wrapOn(canvas, 50, 510) tabla_encabezado.drawOn(canvas, 50, 510) canvas.restoreState()
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 ExtraService.get(EXTRA_SERVICE_VD) in shipping_label 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)
def AddPage(self): self.Score_Table=Table(self.Score_Data,[self.cW1*cm]+8*[self.cW*cm], [self.rH1*cm]+[self.rH2*cm]+14*[self.rH*cm]) #self.Attendance_Table=Table(self.Attendance_Data,[self.cW*2.2*cm]+4*[self.cW*2*cm],5*[self.rH*cm]) self.Attendance_Table=Table(self.Attendance_Data,[self.cW1*cm]+4*[self.cW*2*cm],5*[self.rH*cm]) self.Score_Table.setStyle(TableStyle(self.Score_T_Style)) self.Attendance_Table.setStyle(TableStyle(self.Attendance_T_Style)) self.elements.append(self.Score_Table) self.elements.append(Spacer(1, 15)) self.elements.append(self.Attendance_Table) self.elements.append(PageBreak())
def AddPage(self): #self.Score_Table=Table(self.Score_Data,[.3*inch]+[1*inch]+8*[0.6*inch], [.8*inch]+[.6*inch]+14*[0.35*inch]) self.Score_Table=Table(self.Score_Data,[.5*inch]+[(self.cW1*cm)-.5*inch]+8*[self.cW*cm], [self.rH1*cm]+[self.rH2*cm]+14*[self.rH*cm]) self.Attendance_Table=Table(self.Attendance_Data,[self.cW*2.2*cm]+4*[self.cW*2*cm],5*[self.rH*cm]) self.Score_Table.setStyle(TableStyle(self.Score_T_Style)) self.Attendance_Table.setStyle(TableStyle(self.Attendance_T_Style)) self.elements.append(self.Score_Table) self.elements.append(Spacer(1, 18)) self.elements.append(self.Attendance_Table) self.elements.append(PageBreak())
def Add_Consolidation(self): fill=16-self.table_count self.elements.append(Spacer(1, fill*15)) self.Consolidation_Table=Table(self.CONSOLIDATION,[9*cm]+[4*cm]+[1*cm]*3+[9*cm]*3,[.3*cm]+[.3*cm]*4) self.Consolidation_Table.setStyle(TableStyle(self.Consolidation_Style)) self.elements.append(Spacer(1, 10)) self.elements.append(self.Consolidation_Table)
def AddPage(self): self.Score_Table=Table(self.Score_Data,[self.cW1*cm]+8*[self.cW*cm], [self.rH1*cm]+[self.rH2*cm]+14*[self.rH*cm]) self.Attendance_Table=Table(self.Attendance_Data,[self.cW*2.2*cm]+4*[self.cW*2*cm],5*[self.rH*cm]) self.Score_Table.setStyle(TableStyle(self.Score_T_Style)) self.Attendance_Table.setStyle(TableStyle(self.Attendance_T_Style)) self.elements.append(self.Score_Table) self.elements.append(Spacer(1, 15)) self.elements.append(self.Attendance_Table) self.elements.append(PageBreak())
def AddPage(self): #self.Score_Table=Table(self.Score_Data,[.3*inch]+[1*inch]+8*[0.6*inch], [.8*inch]+[.6*inch]+14*[0.35*inch]) self.Score_Table=Table(self.Score_Data,[.3*inch]+[(self.cW1*cm)-.3*inch]+8*[self.cW*cm], [self.rH1*cm]+[self.rH2*cm]+14*[self.rH*cm]) self.Attendance_Table=Table(self.Attendance_Data,[self.cW*2.2*cm]+4*[self.cW*2*cm],5*[self.rH*cm]) self.Score_Table.setStyle(TableStyle(self.Score_T_Style)) self.Attendance_Table.setStyle(TableStyle(self.Attendance_T_Style)) self.elements.append(self.Score_Table) self.elements.append(Spacer(1, 15)) self.elements.append(self.Attendance_Table) self.elements.append(PageBreak())
def add_info(self): ptext = '<b><font size=14>Report Info</font></b>' self.Story.append(Paragraph(ptext, self.styles['BodyText'])) self.Story.append(Spacer(1, 0.1*inch)) data = [ ['Request Name', self.request['custom_name']], ['Request Id', str(self.request['_id'])], ['Email', self.request['email']], ['Generated on', self.time_str()], ['Download Link', '<a href="http://{0}/query/#!/status/{1}">{0}/query/#!/status/{1}</a>'.format( self.download_server, self.request['_id'])] ] data = [[i[0], pg(i[1], 1)] for i in data] t = Table(data) t.setStyle(TableStyle([ ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black), ('BOX', (0,0), (-1,-1), 0.25, colors.black) ])) self.Story.append(t) # full request timeline / other processing info
def gather_elements(self, client, node, style): # A field has two child elements, a field_name and a field_body. # We render as a two-column table, left-column is right-aligned, # bold, and much smaller fn = Paragraph(client.gather_pdftext(node.children[0]) + ":", style=client.styles['fieldname']) fb = client.gen_elements(node.children[1], style=client.styles['fieldvalue']) t_style=TableStyle(client.styles['field-list'].commands) return [DelayedTable([[fn, fb]], style=t_style, colWidths=client.styles['field-list'].colWidths)]
def gather_elements(self, client, node, style): # Multiple authors. Create a two-column table. # Author references on the right. t_style=TableStyle(client.styles['field-list'].commands) colWidths = client.styles['field-list'].colWidths td = [[Paragraph(client.text_for_label("authors", style)+":", style=client.styles['fieldname']), client.gather_elements(node, style=style)]] return [DelayedTable(td, style=t_style, colWidths=colWidths)]
def gather_elements(self, client, node, style): fb = client.gather_pdftext(node) t_style=TableStyle(client.styles['field-list'].commands) colWidths=client.styles['field-list'].colWidths if self.adjustwidths: colWidths = map(client.styles.adjustUnits, colWidths) label=client.text_for_label(self.labeltext, style)+":" t = self.TableType([[Paragraph(label, style=client.styles['fieldname']), Paragraph(fb, style)]], style=t_style, colWidths=colWidths) return [t]
def gather_elements(self, client, node, style): fb = client.gather_pdftext(node) t_style=TableStyle(client.styles['field-list'].commands) colWidths=client.styles['field-list'].colWidths if self.adjustwidths: colWidths = map(client.styles.adjustUnits, colWidths) label=client.text_for_label(self.labeltext, style)+":" t = self.TableType([[Paragraph(label, style=client.styles['fieldname']), XPreformatted(fb, style)] ], style=t_style, colWidths=colWidths) return [t]
def gather_elements(self, client, node, style): # I need to catch the classifiers here tt = [] dt = [] ids = [] for n in node.children: if isinstance(n, docutils.nodes.term): for i in n['ids']: # Used by sphinx glossary lists if i not in client.targets: ids.append('<a name="%s"/>' % i) client.targets.append(i) o, c = client.styleToTags("definition-list-term") tt.append(o + client.gather_pdftext(n) + c) elif isinstance(n, docutils.nodes.classifier): o, c = client.styleToTags("definition-list-classifier") tt.append(o + client.gather_pdftext(n) + c) else: dt.extend(client.gen_elements(n, style)) # FIXME: make this configurable from the stylesheet t_style = TableStyle (client.styles['definition'].commands) cw = getattr(client.styles['definition'],'colWidths',[]) if client.splittables: node.elements = [ Paragraph(''.join(ids)+' : '.join(tt), client.styles['definition-list-term']), SplitTable([['',dt]] , colWidths=cw, style = t_style )] else: node.elements = [ Paragraph(''.join(ids)+' : '.join(tt), client.styles['definition-list-term']), DelayedTable([['',dt]] , colWidths=[10,None], style = t_style )] return node.elements
def gather_elements(self, client, node, style): # This should work, but doesn't look good inside of # table cells (see Issue 173) #node.elements = [MyIndenter(left=client.styles['blockquote'].leftIndent)]\ #+ client.gather_elements( node, style) + \ #[MyIndenter(left=-client.styles['blockquote'].leftIndent)] # Workaround for Issue 173 using tables leftIndent=client.styles['blockquote'].leftIndent rightIndent=client.styles['blockquote'].rightIndent spaceBefore=client.styles['blockquote'].spaceBefore spaceAfter=client.styles['blockquote'].spaceAfter s=copy(client.styles['blockquote']) s.leftIndent=style.leftIndent data=[['',client.gather_elements( node, s)]] if client.splittables: node.elements=[MySpacer(0,spaceBefore),SplitTable(data, colWidths=[leftIndent,None], style=TableStyle([["TOPPADDING",[0,0],[-1,-1],0], ["LEFTPADDING",[0,0],[-1,-1],0], ["RIGHTPADDING",[0,0],[-1,-1],rightIndent], ["BOTTOMPADDING",[0,0],[-1,-1],0], ])), MySpacer(0,spaceAfter)] else: node.elements=[MySpacer(0,spaceBefore),DelayedTable(data, colWidths=[leftIndent,None], style=TableStyle([["TOPPADDING",[0,0],[-1,-1],0], ["LEFTPADDING",[0,0],[-1,-1],0], ["RIGHTPADDING",[0,0],[-1,-1],rightIndent], ["BOTTOMPADDING",[0,0],[-1,-1],0], ])), MySpacer(0,spaceAfter)] return node.elements
def gather_elements(self, client, node, style): # Either use the figure style or the class # selected by the user st_name = 'figure' if node.get('classes'): st_name = node.get('classes')[0] style=client.styles[st_name] cmd=getattr(style,'commands',[]) image=node.children[0] if len(node.children) > 1: caption = node.children[1] else: caption=None if len(node.children) > 2: legend = node.children[2:] else: legend=[] w=node.get('width',client.styles['figure'].colWidths[0]) cw=[w,] sub_elems = client.gather_elements(node, style=None) t_style=TableStyle(cmd) table = DelayedTable([[e,] for e in sub_elems],style=t_style, colWidths=cw) table.hAlign = node.get('align','CENTER').upper() return [MySpacer(0, style.spaceBefore),table, MySpacer(0, style.spaceAfter)]
def gather_elements(self, client, node, style): rows = [client.gen_elements(n) for n in node.children] t = [] for r in rows: if not r: continue t.append(r) t_style = TableStyle(client.styles['table'].commands) colWidths = client.styles['table'].colWidths return [DelayedTable(t, style=t_style, colWidths=colWidths)]
def gather_elements(self, client, node, style): # Each child is a hlistcol and represents a column. # Each grandchild is a bullet list that's the contents # of the column # Represent it as a N-column, 1-row table, each cell containing # a list. cells = [[ client.gather_elements(child, style) for child in node.children]] t_style=TableStyle(client.styles['hlist'].commands) cw=100./len(node.children) return [ DelayedTable( cells, colWidths=["%s%%"%cw,]*len(cells), style=t_style )]