def confidential(self, canvas): canvas.saveState() canvas.translate(18.5*cm, 27.4*cm) canvas.setLineWidth(3) canvas.setFillColorRGB(1, 0, 0) canvas.setStrokeGray(0.5) p = canvas.beginPath() p.moveTo(10, 0) p.lineTo(20, 10) p.lineTo(30, 0) p.lineTo(40, 10) p.lineTo(30, 20) p.lineTo(40, 30) p.lineTo(30, 40) p.lineTo(20, 30) p.lineTo(10, 40) p.lineTo(0, 30) p.lineTo(10, 20) p.lineTo(0, 10) canvas.drawPath(p, fill=1, stroke=0) canvas.restoreState()
def myLaterPages(canvas, doc): PAGE_HEIGHT,PAGE_WIDTH = letter canvas.saveState() canvas.setPageSize(landscape(letter)) canvas.drawImage(frunt_pag2, 0,0, PAGE_WIDTH,PAGE_HEIGHT ) canvas.setStrokeColorRGB(0,1,1,alpha=0.1) ficha_no = doc.page-1 #canvas.setStrokeColorRGB(0.7,0.7,0.7) canvas.setFillColorRGB(0,0,0) SHOW_GRID = False if SHOW_GRID: n = 5 s = 200 canvas.setFillColorRGB(0,0,1) canvas.setFont('Helvetica',1) for x in range(s): for y in range(s): canvas.rect(x*n,y*n, width=n, height=n, stroke=1) canvas.drawString(x*n,y*n,"%s,%s" % ((x*n),(y*n)) ) # for i in range(s): # x= i*n # y=x # canvas.drawString(x,0,"%s" % (x)) #horizontal # canvas.drawString(0,y+1,"%s" % (x)) # vertical # canvas.drawString(x,600,"%s" % (x)) #horizontal # canvas.drawString(990,y,"%s" % (x)) # vertical # # canvas.setStrokeColorRGB(0,0,1,alpha=0.7) # canvas.setFont('Helvetica',1) # for i in range(610): # #canvas.rect(35,i*2, width=0.5, height=0.5, stroke=1) # canvas.drawString(35,i,"%s -" % (i,) ) canvas.setFont('Helvetica',7) LINE_1 = 508 #fecha_elaboracion = doc.fecha_elaboracion #if not fecha_elaboracion: # fecha_elaboracion = datetime.today() canvas.drawCentredString(137,LINE_1,str(fecha_elaboracion.year)) canvas.drawCentredString(162,LINE_1,str(fecha_elaboracion.month)) canvas.drawCentredString(180,LINE_1,str(fecha_elaboracion.day)) canvas.drawCentredString(290,LINE_1,"VALLE DEL CAUCA") canvas.drawCentredString(740,LINE_1,"Ficha No. %s" % (int(ficha_no)+int(no_ficha_inicial)-1)) canvas.setFont('Helvetica',5) canvas.drawString(75,115, "Elaboro: %s" % elaboro) canvas.drawString(215,115, "Reviso: %s" % reviso) canvas.restoreState()
def draw_debug_outline(self, config ): """draw an outline around the box""" canvas = self.canvas # don't muck up the external state canvas.saveState() # discreet - but visible canvas.setStrokeColorRGB( 0.9, 0.7, 0.7 ) canvas.setFillColorRGB( 0.6, 0.6, 0.6 ) canvas.setFont( 'Helvetica', 8 ) # draw a box to show the extent canvas.rect( config['x'], config['y'], config['w'], config['h'], stroke=1, fill=0, ) # put in some debug info canvas.drawRightString( config['x'] + config['w'], config['y'] + 4, ', '.join(config['content']) ) # restore state canvas.restoreState()
def draw_debug_outline(self, config): """draw an outline around the box""" canvas = self.canvas # don't muck up the external state canvas.saveState() # discreet - but visible canvas.setStrokeColorRGB(0.9, 0.7, 0.7) canvas.setFillColorRGB(0.6, 0.6, 0.6) canvas.setFont('Helvetica', 8) # draw a box to show the extent canvas.rect( config['x'], config['y'], config['w'], config['h'], stroke=1, fill=0, ) # put in some debug info canvas.drawRightString(config['x'] + config['w'], config['y'] + 4, ', '.join(config['content'])) # restore state canvas.restoreState()
def colorsRGB(canvas): from reportlab.lib import colors from reportlab.lib.units import inch black = colors.black y = x = 0; dy=inch*3/4.0; dx=inch*5.5/5; w=h=dy/2; rdx=(dx-w)/2 rdy=h/5.0; texty=h+2*rdy canvas.setFont("Helvetica",10) for [namedcolor, name] in ( [colors.lavenderblush, "lavenderblush"], [colors.lawngreen, "lawngreen"], [colors.lemonchiffon, "lemonchiffon"], [colors.lightblue, "lightblue"], [colors.lightcoral, "lightcoral"]): canvas.setFillColor(namedcolor) canvas.rect(x+rdx, y+rdy, w, h, fill=1) canvas.setFillColor(black) canvas.drawCentredString(x+dx/2, y+texty, name) x = x+dx y = y + dy; x = 0 for rgb in [(1,0,0), (0,1,0), (0,0,1), (0.5,0.3,0.1), (0.4,0.5,0.3)]: r,g,b = rgb canvas.setFillColorRGB(r,g,b) canvas.rect(x+rdx, y+rdy, w, h, fill=1) canvas.setFillColor(black) canvas.drawCentredString(x+dx/2, y+texty, "r%s g%s b%s"%rgb) x = x+dx y = y + dy; x = 0 for gray in (0.0, 0.25, 0.50, 0.75, 1.0): canvas.setFillGray(gray) canvas.rect(x+rdx, y+rdy, w, h, fill=1) canvas.setFillColor(black) canvas.drawCentredString(x+dx/2, y+texty, "gray: %s"%gray) x = x+dx
def confidential(self, canvas): canvas.saveState() canvas.translate(18.5 * cm, 27.4 * cm) canvas.setLineWidth(3) canvas.setFillColorRGB(1, 0, 0) canvas.setStrokeGray(0.5) p = canvas.beginPath() p.moveTo(10, 0) p.lineTo(20, 10) p.lineTo(30, 0) p.lineTo(40, 10) p.lineTo(30, 20) p.lineTo(40, 30) p.lineTo(30, 40) p.lineTo(20, 30) p.lineTo(10, 40) p.lineTo(0, 30) p.lineTo(10, 20) p.lineTo(0, 10) canvas.drawPath(p, fill=1, stroke=0) canvas.restoreState()
def encabezado(canvas, doc): canvas.saveState() canvas.setFont('Times-Roman', 9) canvas.drawImage(this_path + '/static/images/aok/logo.png', inch, A4[1] - 90, 55, 60, mask='auto') # imagen logo canvas.setStrokeColorRGB(121 / 256, 128 / 256, 129 / 256) # choose your line color canvas.line(133, A4[1] - 90, 133, A4[1] - 45) # linea canvas.setFont('Helvetica', 12) canvas.setFillGray(0.3) canvas.drawString(140, A4[1] - 64, 'Universidad') canvas.setFont('Helvetica-Bold', 14) canvas.drawString(140, A4[1] - 79, 'Técnica Estatal de Quevedo') canvas.setFont('Helvetica-Bold', 8) canvas.drawString(140, A4[1] - 90, 'La primera Universidad Agropecuaria del País') canvas.setFillColorRGB(250 / 256, 210 / 256, 1 / 256) canvas.setStrokeColorRGB(250 / 256, 210 / 256, 1 / 256) canvas.rect(50, 742, 500, 3, fill=1) canvas.setFillColorRGB(76 / 256, 145 / 256, 65 / 256) canvas.setStrokeColorRGB(76 / 256, 145 / 256, 65 / 256) canvas.rect(50, 742, 500, 1, fill=1) canvas.restoreState()
def simple_customer_background(canvas, document): header_text = document.title sub_header_text = document.subject canvas.saveState() # canvas.drawImage("background.jpg", 0,0, A4[0], A4[1]) canvas.drawImage(os.path.join(resource_dir, "letter_header.png"), (A4[0] - 18.924 * cm) / 2, A4[1] - 3.294 * cm - 0.5 * cm, 18.924 * cm, 3.294 * cm) canvas.drawImage(os.path.join(resource_dir, "letter_footer.png"), (A4[0] - 18.911 * cm) / 2, 0.8 * cm, 18.911 * cm, 1.532 * cm) canvas.setLineWidth(0.1) canvas.setFillColorRGB(0.8, 0.8, 0.8) # canvas.rect(1*cm,23*cm, A4[0]-2*cm,1*cm,stroke=True,fill=True) # canvas.setFillColorRGB(1,0,0) # canvas.rect(1*cm,3*cm, (A4[0]-2*cm)/2,5*cm,stroke=True,fill=False) # canvas.rect(1*cm+ (A4[0]-2*cm)/2, 3*cm, (A4[0]-2*cm)/2,5*cm,stroke=True,fill=False) # if header_text: # canvas.setFont('Helvetica-Bold', 16) # canvas.setFillColorRGB(0,0,0) # canvas.drawString(1.25*cm,23.3*cm,header_text) # if sub_header_text: # canvas.setFont('Helvetica', 14) # canvas.setFillColorRGB(0,0,0) # canvas.drawRightString(A4[0] - 1.2*cm,23.3*cm,sub_header_text) canvas.restoreState()
def highlight(canvas, x, y, width, color): canvas.setStrokeColorRGB(color[0], color[1], color[2]) canvas.setFillColorRGB(color[0], color[1], color[2]) canvas.rect(x - 3, y - 3, width - 2, LINE + 1, 1, 1) canvas.setStrokeColorRGB(0, 0, 0) canvas.setFillColorRGB(0, 0, 0)
def draw_heading(self, canvas): text = {'de': 'T3P-Konfiguration', 'en': 'T3P-Configuration'} canvas.saveState() canvas.setFont(self.font_bold, 14) canvas.setFillColorRGB(255, 255, 255) x = self.dina4[0]/2 canvas.drawCentredString(x, 800, text[self.lang]) canvas.restoreState()
def draw_watermark(self, canvas): if self._watermark: canvas.saveState() canvas.rotate(60) canvas.setFillColorRGB(0.9, 0.9, 0.9) canvas.setFont('%s' % self.style.fontName, 120) canvas.drawCentredString(195 * mm, -30 * mm, self._watermark) canvas.restoreState()
def draw_watermark(self, canvas): if self._watermark: canvas.saveState() canvas.rotate(60) canvas.setFillColorRGB(0.9, 0.9, 0.9) canvas.setFont('%s' % self.style.fontName, 120) canvas.drawCentredString(195*mm, -30*mm, self._watermark) canvas.restoreState()
def header_func(canvas): #logo = "/Users/riccardo/Desktop/Progetti/chibe/chibe/static/homepage.png" logo = "/home/django/static/homepage.png" canvas.setStrokeColorRGB(0.9, 0.5, 0.2) canvas.setFillColorRGB(0.2, 0.2, 0.2) canvas.setFont('Helvetica', 16) canvas.drawString(13 * cm, -2 * cm, 'Report transazioni Chibe') canvas.drawInlineImage(logo, 1 * cm, -3 * cm, 3 * cm, 3 * cm)
def generate_label( canvas: canvas.Canvas, string: str, location: Location, font: Font, color: Color, ) -> None: canvas.setFont(font.font_name, font.font_size) canvas.setFillColorRGB(color.r, color.g, color.b) canvas.drawString(location.x, location.y, string)
def draw(self): canvas = self.canv # Texte label canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica", 9) canvas.drawString(15, 1, "%s : %s" % (self.label, minutesEnHeures(self.totalHeures))) # Carré de couleur if self.couleur != None : r, g, b = ConvertCouleur(FormateCouleur(self.couleur)) canvas.setFillColorRGB(r, g, b) canvas.rect(0, 0, 10, 10, fill=1)
def render_over(self, x, y, canvas, template): color = hex_to_rgb(self.color) canvas.setFillColorRGB(color[0] / 255.0, color[1] / 255.0, color[2] / 255.0) canvas.rect(x + (self.x * mm), y + (self.y * mm), self.width * mm, self.height * mm, fill=1) canvas.setFillColorRGB(0, 0, 0)
def draw_header(canvas): """ Draws the invoice header """ canvas.setStrokeColorRGB(176/255., 196/255., 222/255.) # canvas.setStrokeColorRGB(0.9, 0.5, 0.2) canvas.setFillColorRGB(0.2, 0.2, 0.2) canvas.setFont('Helvetica', 16) canvas.drawString(18 * cm, -1 * cm, 'Invoice') if consultant_logo_filename: canvas.drawInlineImage(consultant_logo_filename, 1 * cm, -1 * cm, 250, 16) canvas.setLineWidth(4) canvas.line(0, -1.25 * cm, 21.7 * cm, -1.25 * cm)
def _draw_single_border(self, canvas, x, width, height): canvas.saveState() if type(self.BORDER_COLOR) == str: canvas.setFillColor(self.BORDER_COLOR) else: canvas.setFillColorRGB(self.BORDER_COLOR[0]/255, self.BORDER_COLOR[1]/255, self.BORDER_COLOR[2]/255) canvas.roundRect(x, 0, width, height, self.CARD_CORNER_DIAMETER, stroke=0, fill=1) canvas.restoreState()
def draw_header(canvas): """ Draws the invoice header """ canvas.setStrokeColorRGB(176 / 255., 196 / 255., 222 / 255.) # canvas.setStrokeColorRGB(0.9, 0.5, 0.2) canvas.setFillColorRGB(0.2, 0.2, 0.2) canvas.setFont('Helvetica', 16) canvas.drawString(18 * cm, -1 * cm, 'Invoice') if consultant_logo_filename: canvas.drawInlineImage(consultant_logo_filename, 1 * cm, -1 * cm, 250, 16) canvas.setLineWidth(4) canvas.line(0, -1.25 * cm, 21.7 * cm, -1.25 * cm)
def draw(self): canvas = self.canv # Texte label canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica", 9) canvas.drawString( 15, 1, "%s : %s" % (self.label, minutesEnHeures(self.totalHeures))) # Carré de couleur if self.couleur != None: r, g, b = ConvertCouleur(FormateCouleur(self.couleur)) canvas.setFillColorRGB(r, g, b) canvas.rect(0, 0, 10, 10, fill=1)
def get_stamp_pdf(PROJ_NAME, PAGE_NO): from reportlab.pdfgen import canvas out_path = tempfile.mktemp(suffix=".pdf") canvas = canvas.Canvas(out_path, pagesize=A4) canvas.setLineWidth(.3) canvas.setFont('Segoe UI', 8) canvas.setStrokeColorRGB(0, 0, 0) canvas.setFillColorRGB(0, 0, 0) canvas.drawString(30, 10, "Feedback Report for {0}".format(PROJ_NAME)) canvas.drawString(540, 10, "Page {0}".format(PAGE_NO)) canvas.save() return out_path
def myFirstPage(canvas, doc): PAGE_HEIGHT,PAGE_WIDTH = letter canvas.saveState() canvas.drawImage(fondo, 0,0, PAGE_HEIGHT, PAGE_WIDTH ) canvas.setStrokeColorRGB(1,0,1,alpha=0.1) #canvas.setPageSize(landscape(letter)) canvas.setFont('Arial', 10) canvas.drawString(150, 579, cuenta_cobro.nombre_dependencia) canvas.drawString(215, 558, cuenta_cobro.fecha_transaccion) canvas.drawString(284, 538, cuenta_cobro.nombre_adquiriente) canvas.drawString(90, 513, cuenta_cobro.nit_adquiriente) canvas.drawString(230, 513, cuenta_cobro.direccion_adquiriente) canvas.drawString(492, 513, cuenta_cobro.telefono_adquiriente) canvas.drawString(120, 488, cuenta_cobro.ciudad_adquiriente) # canvas.drawString(285, 474, cuenta_cobro.nombre_beneficiario) canvas.drawString(140, 448, cuenta_cobro.documento_beneficiario) canvas.drawString(365, 448, cuenta_cobro.direccion_beneficiario) canvas.drawString(120, 425, cuenta_cobro.telefono_beneficiario) canvas.drawString(360, 425, cuenta_cobro.email_beneficiario) canvas.drawString(115, 410, cuenta_cobro.ciudad_beneficiario) cuenta_cobro.objeto_contrato = textwrap.fill(cuenta_cobro.objeto_contrato, 80) textobject = canvas.beginText() textobject.setTextOrigin(63, 365) textobject.textLines(cuenta_cobro.objeto_contrato) canvas.drawText(textobject) canvas.drawString(117, 297, cuenta_cobro.no_rpc) canvas.drawString(242, 297, cuenta_cobro.no_cdp) canvas.drawString(392, 297, cuenta_cobro.valor_contrato) canvas.drawString(127, 282, cuenta_cobro.concepto) canvas.drawString(127, 268, cuenta_cobro.valor_concepto) canvas.drawString(95, 255, cuenta_cobro.valor_concepto_letras) SHOW_GRID = False if SHOW_GRID: n = 5 s = 200 #canvas.setStrokeGray(0.90) #canvas.setFillGray(0.90) canvas.setStrokeColorRGB(0,1,1,alpha=0.1) canvas.setFillColorRGB(1,0,1) canvas.setFont('Arial',1) for x in range(s): for y in range(s): canvas.rect(x*n,y*n, width=n, height=n, stroke=1) canvas.drawString(x*n,y*n,"%s,%s" % ((x*n),(y*n)) ) canvas.restoreState()
def onMyFirstPage(self, canvas, doc): # If the left_footer attribute is not None, then add it to the page canvas.saveState() if self.left_footer is not None: # canvas.setFont('Helvetica', 8) # canvas.drawString(1 * cm, 1 * cm, self.left_footer) canvas.setFont("Times-Roman", 150) canvas.setStrokeColorRGB(0.74, 0.74, 0.74) canvas.setFillColorRGB(0.74, 0.74, 0.74) canvas.translate(A4[0] / 2, A4[1] / 2) canvas.rotate(45) canvas.drawCentredString(20, 0, self.left_footer) canvas.restoreState()
def _general_data_rect(self, canvas, doc): canvas.saveState() top = 19.7 * cm left = self.page_width - self.margins['right'] - self.block_width width = self.block_width height = self.block_height canvas.setStrokeColor(red) canvas.setLineWidth(.5) canvas.rect(left, top, width, height, stroke=1) canvas.setFillColorRGB(.7, .7, .7) canvas.setFont(self.label_font, 25) canvas.drawCentredString(15.5 * cm, 22.4 * cm, _('INVOICE')) canvas.restoreState()
def draw_main_doc_header(canvas, pdf): """ Draws the invoice header """ canvas.saveState() canvas.translate(0, 29.7 * cm) canvas.setFont('Helvetica', 10) canvas.setStrokeColorRGB(0.9, 0.5, 0.2) canvas.setFillColorRGB(0.2, 0.2, 0.2) canvas.setFont('Helvetica', 16) canvas.drawString(18 * cm, -1 * cm, 'Invoice') canvas.drawInlineImage(INV_LOGO, 1 * cm, -1 * cm, 25, 25) canvas.setLineWidth(4) canvas.line(0, -1.25 * cm, 21.7 * cm, -1.25 * cm) canvas.restoreState()
def myFirstPage(canvas, doc): PAGE_HEIGHT,PAGE_WIDTH = letter canvas.saveState() canvas.drawImage(fondo, 0,0, PAGE_HEIGHT, PAGE_WIDTH ) canvas.setStrokeColorRGB(1,0,1,alpha=0.1) #canvas.setPageSize(landscape(letter)) canvas.setFont('Arial', 8) canvas.drawString(132,670, cuenta_cobro.periodo) canvas.drawString(475, 670, cuenta_cobro.num_cuota) canvas.drawString(132, 653, cuenta_cobro.fecha_transaccion) canvas.drawString(132, 633, cuenta_cobro.no_contrato) seguridad_social = "Adjunto planilla de pago de Seguridad social No %s " % (cuenta_cobro.num_planilla_ss,) seguridad_social = seguridad_social + " correspondiente a los aportes del mes de %s, en los terminos legales." % (cuenta_cobro.mes_planilla_ss) #canvas.drawString(132, 300,textwrap.fill(seguridad_social, 90) ) cuenta_cobro.informe_actividades_periodo = textwrap.fill(cuenta_cobro.informe_actividades_periodo, 105) textobject = canvas.beginText() textobject.setTextOrigin(132, 609) textobject.textLines(cuenta_cobro.informe_actividades_periodo) canvas.drawText(textobject) textobject = canvas.beginText() textobject.setTextOrigin(132, 240) textobject.textLines(textwrap.fill(seguridad_social, 105)) canvas.drawText(textobject) #canvas.drawString(132, 292, "correspondiente a los aportes del mes de %s, en los terminos legales." % (cuenta_cobro.mes_planilla_ss)) canvas.drawCentredString(170, 90, cuenta_cobro.nombre_interventor) canvas.drawCentredString(170, 81, "INTERVENTOR/SUPERVISOR %s" % (cuenta_cobro.cargo_interventor,)) canvas.drawCentredString(415, 90, cuenta_cobro.nombre_beneficiario) canvas.drawCentredString(415, 81, "C.C. No. %s de %s" % (cuenta_cobro.documento_beneficiario, cuenta_cobro.lugar_exp_doc_beneficiario)) SHOW_GRID = False if SHOW_GRID: n = 5 s = 200 #canvas.setStrokeGray(0.90) #canvas.setFillGray(0.90) canvas.setStrokeColorRGB(0,1,1,alpha=0.1) canvas.setFillColorRGB(1,0,1) canvas.setFont('Arial',1) for x in range(s): for y in range(s): canvas.rect(x*n,y*n, width=n, height=n, stroke=1) canvas.drawString(x*n,y*n,"%s,%s" % ((x*n),(y*n)) ) canvas.restoreState()
def myFirstPage(self,canvas, doc): canvas.saveState() canvas.drawImage(STATICFILES_DIRS[0]+'escudo_transito.jpg',35, PAGE_HEIGHT-115) canvas.setLineWidth(1) canvas.line(10, 723, 600,723) canvas.setFont('Times-Roman',8) canvas.drawString(10,PAGE_HEIGHT-130, "MUNICIPIO DE LEON GUANAJUATO") canvas.drawString(10,PAGE_HEIGHT-142, "SECRETARIA DE SEGURIDAD PUBLICA") canvas.drawString(420,PAGE_HEIGHT-142, "INFORME DE CAPTURA DE INFRACCIONES") canvas.setFillColorRGB(1,0,0) canvas.setFontSize(18) canvas.setFontSize(10) canvas.setFillColorRGB(0,0,0) canvas.drawString(10,PAGE_HEIGHT-154, "DIRECCION GENERAL DE TRANSITO MUNICIPAL")
def draw(self): canvas = self.canv if type(self.label) != six.text_type: self.label = self.label.decode("iso-8859-15") # Texte label canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica-Bold", 11) canvas.drawString(35, 0, self.label) # Ligne noire tailleLigne = LARGEUR_PAGE - (75 * 2) largeurLabel = canvas.stringWidth(self.label, "Helvetica-Bold", 11) canvas.line(0, 3, 30, 3) canvas.line(largeurLabel + 10 + 30, 3, tailleLigne, 3) canvas.rect(30, -3, largeurLabel + 10, 13, fill=0) canvas.line(0, 3.5, 0, -8)
def draw(self): canvas = self.canv if type(self.label) != six.text_type : self.label = self.label.decode("iso-8859-15") # Texte label canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica-Bold", 11) canvas.drawString(35, 0, self.label) # Ligne noire tailleLigne = LARGEUR_PAGE- (75*2) largeurLabel = canvas.stringWidth(self.label, "Helvetica-Bold", 11) canvas.line(0, 3, 30, 3) canvas.line(largeurLabel + 10 + 30, 3, tailleLigne, 3) canvas.rect(30, -3, largeurLabel+10, 13, fill=0) canvas.line(0, 3.5, 0, -8)
def full_background(canvas, document): canvas.saveState() # canvas.drawImage("background.jpg", 0,0, A4[0], A4[1]) canvas.drawImage(os.path.join(resource_dir, "letter_header.png"), (A4[0] - 18.924 * cm) / 2, A4[1] - 3.294 * cm - 0.5 * cm, 18.924 * cm, 3.294 * cm) canvas.drawImage(os.path.join(resource_dir, "letter_footer.png"), (A4[0] - 18.911 * cm) / 2, 0.8 * cm, 18.911 * cm, 1.532 * cm) # left_header_frame = platypus.Frame(A4[0] - 4*inch,A4[1] - 2*inch, 3*inch, 1*inch,showBoundary=True) # header2_frame_right = platypus.Frame(12*cm,22*cm, 7.5*cm, 1*cm,showBoundary=True) # body_frame = platypus.Frame(0.5*inch,3*inch, A4[0] - 1*inch, A4[1] - 5.6*inch,showBoundary=True) # bottom_left_frame = platypus.Frame(0.5*inch, 1*inch, 3.3*inch, 1.9*inch,showBoundary=True) # bottom_right_frame = platypus.Frame(A4[0] - 4.2*inch, 1*inch, 3.5*inch, 1.9*inch,showBoundary=True) canvas.setLineWidth(0.1) canvas.setFillColorRGB(0.8, 0.8, 0.8) canvas.rect(1 * cm, 23 * cm, A4[0] - 2 * cm, 1 * cm, stroke=True, fill=True) canvas.rect(1 * cm, 8 * cm, A4[0] - 2 * cm, 16 * cm, stroke=True, fill=False) canvas.setFillColorRGB(1, 0, 0) canvas.rect(1 * cm, 3 * cm, (A4[0] - 2 * cm) / 2, 5 * cm, stroke=True, fill=False) canvas.rect(1 * cm + (A4[0] - 2 * cm) / 2, 3 * cm, (A4[0] - 2 * cm) / 2, 5 * cm, stroke=True, fill=False) canvas.restoreState()
def draw(self): canvas = self.canv # Texte label canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica", 8) if self.totalHeures == None : canvas.drawString(15, 2, self.label) else: canvas.drawString(15, 2, "%s : %s" % (self.label, minutesEnHeures(self.totalHeures))) # Carré de couleur if self.couleur != None : if type(self.couleur) == tuple : r, g, b = ConvertCouleur(self.couleur) else: r, g, b = ConvertCouleur(FormateCouleur(self.couleur)) canvas.setLineWidth(0.25) canvas.setFillColorRGB(r, g, b) canvas.rect(0, 0, 10, 10, fill=1)
def place_caption(canvas, config, caption): caption_size = caption.get('size', config['caption']['size']) caption_font = caption.get('font', config['caption']['font']) caption_color = caption.get('color', config['caption']['color']) canvas.setFont(caption_font, caption_size) canvas.setFillColorRGB(*caption_color) margin = config['margin'] boxwidth = config['pagesize']['width'] - margin['left'] - margin['right'] center_x = margin['left'] + boxwidth*0.5 #asc_des = pdfmetrics.getAscentDescent(caption_font, fontSize=caption_size) #caption_height = asc_des[0] - asc_des[1] #descenders may extend below margin['bottom'] canvas.drawCentredString(center_x, margin['bottom'], caption['text']) return caption_size #not taking descenders into account
def _footer(canvas, doc): splunkLayoutSettings = PAPERSIZES[doc.splunkPaperSize] canvas.saveState() canvas.setStrokeColorRGB(0.8, 0.8, 0.8) canvas.setLineWidth(1) # hairline canvas.line(inch, inch, doc.width + inch, inch) canvas.setStrokeColorRGB(0.5, 0.5, 0.5) canvas.setFillColorRGB(0.586, 0.586, 0.586) canvas.drawRightString(doc.width + inch, 0.75 * inch - _TEXT_OFFSET, "Page %d" % (doc.page)) # draw title centered and ellipsized ellipsizedTitle = _ellipsize(doc.getTitle(), splunkLayoutSettings['ellipsizedTitleCount']) ellipsizedTitleWidth = doc.getFontManager().textWidth( ellipsizedTitle, _TITLE_SIZE) textObject = canvas.beginText( inch + doc.width / 2 - ellipsizedTitleWidth / 2, 0.75 * inch - _TEXT_OFFSET) doc.getFontManager().addTextAndFontToTextObject(textObject, ellipsizedTitle, _TITLE_SIZE) canvas.drawText(textObject) timestamp = doc.getTimestamp() timestampWidth = doc.getFontManager().textWidth(timestamp, _DATE_SIZE) textObject = canvas.beginText(inch + doc.width - timestampWidth, inch - _TEXT_OFFSET) doc.getFontManager().addTextAndFontToTextObject(textObject, timestamp, _DATE_SIZE) canvas.drawText(textObject) canvas.restoreState() canvas.saveState() if doc.getLogoDrawing() != None: logoDrawing = doc.getLogoDrawing() renderPDF.draw(logoDrawing, canvas, inch, inch - logoDrawing.height - _LOGO_OFFSET, showBoundary=False) canvas.restoreState()
def draw(self): canvas = self.canv couleurDate = None positionSeparation = 20 # Couleur de la case Date de la journée if AFFICHER_VACANCES == True and self.dateDD in LISTE_VACANCES : couleurDate = COULEUR_VACANCES if AFFICHER_WE == True and (self.dateDD.weekday() == 5 or self.dateDD.weekday() == 6) : couleurDate = COULEUR_WE if AFFICHER_FERIES == True and self.dateDD in LISTE_FERIES : couleurDate = COULEUR_FERIES if couleurDate != None : r, g, b = ConvertCouleur(couleurDate) canvas.setFillColorRGB(r, g, b) canvas.rect(0, 0, positionSeparation, self.hauteurCase, fill=1, stroke=False) # Texte date canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica", 7) canvas.drawRightString(positionSeparation-2, 2, self.labelDate) # Trait séparation Date et Heures canvas.setLineWidth(0.25) canvas.line(positionSeparation, 0, positionSeparation, self.hauteurCase) # Si aucune présence ce jour -là if len(self.dictBarres) == 0 : return # Récup du nbre total d'heure de la journée totalJour = self.dictBarres["totalJour"] # Transformation du nombre d'heures par catégorie en pourcentage listeCategories = [] for IDcategorie, nbreHeures in self.dictBarres.items(): if IDcategorie != "totalJour" : largeurBarre = nbreHeures * 1.0 * (self.largeurCase-positionSeparation-0.25) / totalJour listeCategories.append( (largeurBarre, IDcategorie) ) listeCategories.sort() # Création des graphes if AFFICHER_COULEUR_CATEGORIES == True : positionTemp = positionSeparation+0.25 for largeurBarre, IDcategorie in listeCategories : r, g, b = ConvertCouleur(FormateCouleur(DICT_CATEGORIES[IDcategorie][2])) canvas.setFillColorRGB(r, g, b) canvas.rect(positionTemp, 0, largeurBarre, self.hauteurCase, fill=1, stroke=False) positionTemp += largeurBarre # Label Total Heure de la journée if AFFICHER_HEURES == True : canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica", 7) canvas.drawRightString(self.largeurCase-2, 2, "%s" % minutesEnHeures(totalJour))
def draw(self): canvas = self.canv # Texte label canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica", 8) if self.totalHeures == None: canvas.drawString(15, 2, self.label) else: canvas.drawString( 15, 2, "%s : %s" % (self.label, minutesEnHeures(self.totalHeures))) # Carré de couleur if self.couleur != None: if type(self.couleur) == tuple: r, g, b = ConvertCouleur(self.couleur) else: r, g, b = ConvertCouleur(FormateCouleur(self.couleur)) canvas.setLineWidth(0.25) canvas.setFillColorRGB(r, g, b) canvas.rect(0, 0, 10, 10, fill=1)
def makeHF(topleft, topright, bottomleft, bottomright): packet = BytesIO() canvas = Canvas(packet, pagesize=letter) page_width, page_height = canvas._pagesize canvas.setFont('ArialB', 10) canvas.setFillColorRGB(0.2, 0.568, 0.792) canvas.drawString(0.5 * page_width / 8.5, (11 - 0.5) * page_height / 11, topleft) textWidth = stringWidth(topright, 'Arial', 10) canvas.drawString((8.5 - 0.5) * page_width / 8.5 - textWidth, (11 - 0.5) * page_height / 11, topright) canvas.drawString(0.5 * page_width / 8.5, 0.5 * page_height / 11, bottomleft) textWidth = stringWidth(bottomright, 'Arial', 10) canvas.drawString((8.5 - 0.5) * page_width / 8.5 - textWidth, 0.5 * page_height / 11, bottomright) canvas.save() packet.seek(0) return (PdfFileReader(packet))
def Barre(self, canvas, x, y, largeur, hauteur, label, heureDebut, heureFin, IDcategorie, facteurAgrandissement): # Dessin d'une barre x = ((x-COORD_LIGNE[0]) * facteurAgrandissement) + COORD_LIGNE[0] largeur = largeur * facteurAgrandissement paddingTexte = 3 nom, IDcat_parent, ordre, couleur, totalHeures = DICT_CATEGORIES[IDcategorie] r, g, b = ConvertCouleur(FormateCouleur(couleur)) canvas.setFillColorRGB(r, g, b) canvas.rect(x, y, largeur, hauteur, fill=1) canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica", 8) # Dessin des heures if MODE_TEXTE == 2 : y = y + 10 heureDebut = str(heureDebut)[0:2] + "h" + str(heureDebut)[3:5] canvas.drawString(x + paddingTexte, y + paddingTexte, heureDebut) heureFin = str(heureFin)[0:2] + "h" + str(heureFin)[3:5] canvas.drawRightString(largeur + x - paddingTexte, y + paddingTexte, heureFin) # Dessin de l'intitulé if MODE_TEXTE == 2 and label != "" : canvas.drawString(x + paddingTexte, y + paddingTexte - 10, label)
def piePagina(canvas, doc): canvas.saveState() canvas.setFillGray(0.3) canvas.setFont('Helvetica-Bold', 6) width = doc.width texto1 = 'Campus "Ingeniero Manuel Agustín Haz Álvarez", Av. Quito km. 1 1/2 vía a Santo Domingo de los Tsáchilas' texto2 = 'Tel: (593) 5370-2220 - [email protected] - www.uteq.edu.ec' texto3 = 'QUEVEDO - LOS RÍOS - ECUADOR' tam1 = stringWidth(texto1, 'Helvetica-Bold', 6) tam2 = stringWidth(texto2, 'Helvetica-Bold', 6) tam3 = stringWidth(texto3, 'Helvetica-Bold', 6) canvas.drawString((width - tam1) + 110, 0.7 * inch, texto1) canvas.drawString((width - tam2) + 110, 0.6 * inch, texto2) canvas.drawString((width - tam3) + 110, 0.5 * inch, texto3) canvas.setFillColorRGB(250 / 256, 210 / 256, 1 / 256) canvas.setStrokeColorRGB(250 / 256, 210 / 256, 1 / 256) canvas.rect(width + 115, 0.5 * inch, 4, 30, fill=1) canvas.setFillColorRGB(76 / 256, 145 / 256, 65 / 256) canvas.setStrokeColorRGB(76 / 256, 145 / 256, 65 / 256) canvas.rect(width + 122, 0.5 * inch, 8, 30, fill=1) canvas.restoreState()
def titulo_pdf_proovedor(canvas, doc): datos = DATOS_DE_LA_EMPRESA.objects.get(pk=1) membrete= '%s \n RIF %s \n DIRECCION: %s \n TELEFONOS: %s / %s \n ZONA POSTAL: %s'%(datos.NOMBRE.upper(), datos.RIF.upper(), datos.DIRECCION.upper(), datos.TELEFONO, datos.CELULAR, datos.CODIGO_POSTAL) nombre= datos.NOMBRE.upper() rif = 'RIF: %s'% (datos.RIF.upper()) direccion= 'DIRECCION: %s'% (datos.DIRECCION.upper()) telefonos = '%s / %s'% (datos.TELEFONO, datos.CELULAR) codigo_postal='CODIGO POSTAL: %s'% (datos.CODIGO_POSTAL) canvas.saveState() canvas.setFillColorRGB(0,0,0) #canvas.drawCentredString(50, PAGE_HEIGHT-150, membrete) #canvas.drawString(100, 800, str(libro.titulo))#Obtenemos el titulo de un libro y lap.drawImage(str(libro.portada.url), 100, 100, width=400, height=600) # mostramos y guardamos el objeto PDF. canvas.setFont('Times-Bold',12) canvas.drawCentredString(PAGE_WIDTH/2.0, PAGE_HEIGHT-110, nombre) canvas.roundRect(0, 750, 694, 120, 20, stroke=0, fill=1) canvas.drawCentredString(PAGE_WIDTH/2.0, PAGE_HEIGHT-130, rif) textobject = canvas.beginText() textobject.setTextOrigin(inch, 400) textobject.setFont("Helvetica-Oblique", 14) for line in direccion: textobject.textLine(line) textobject.setFillGray(0.4) textobject.textLines(direccion) canvas.drawText(textobject) #canvas.drawString(100, 100, direccion) canvas.drawCentredString(PAGE_WIDTH/2.0, PAGE_HEIGHT-170, telefonos) canvas.drawCentredString(PAGE_WIDTH/2.0, PAGE_HEIGHT-190, codigo_postal) canvas.drawString(12, 10 * 50, "First Page / %s" % membrete) canvas.restoreState()
def draw_page(page, uid, survey_name, canvas: reportlab.pdfgen.canvas.Canvas): draw_qr_data(canvas, 'survey:' + survey_name + ':' + page.name + ':' + uid, 64, (48, height - 64 - 48)) canvas.setFillColorRGB(0.2, 0.2, 0.2) canvas.setStrokeColorRGB(0.2, 0.2, 0.2) canvas.circle(32, 32, 4, stroke=1, fill=1) canvas.circle(32 + 12, 32, 4, stroke=1, fill=1) canvas.circle(32, 32 + 12, 4, stroke=1, fill=1) canvas.circle(width - 32, height - 32, 4, stroke=1, fill=1) canvas.circle(width - 32 - 12, height - 32, 4, stroke=1, fill=1) canvas.circle(width - 32, height - 32 - 12, 4, stroke=1, fill=1) canvas.circle(width - 32, 32, 4, stroke=1, fill=1) canvas.circle(width - 32 - 12, 32, 4, stroke=1, fill=1) canvas.circle(width - 32, 32 + 12, 4, stroke=1, fill=1) canvas.circle(32, height - 32, 4, stroke=1, fill=1) canvas.circle(32 + 12, height - 32, 4, stroke=1, fill=1) canvas.circle(32, height - 32 - 12, 4, stroke=1, fill=1) canvas.setFillColorRGB(0.3, 0.3, 0.3) canvas.drawString(128, height - 67, survey_name + ':' + page.name + ':' + uid) canvas.setFillColorRGB(0.4, 0.4, 0.4) canvas.setStrokeColorRGB(0.2, 0.2, 0.2) canvas.setFont('Courier', 8) for field in page.get_binary_fields(): canvas.circle(field.position[0], height - field.position[1], 5, stroke=1, fill=0) canvas.drawCentredString(field.position[0], height - field.position[1] - 2, field.hint) canvas.setFillColorRGB(0.1, 0.1, 0.1) for text in page.get_text_areas(): if text.rotation != 0: canvas.saveState() canvas.rotate(text.rotation) tobj = canvas.beginText(text.position[0], height - text.position[1]) tobj.setFont(text.fontname, text.fontsize) for line in text.text.split(): tobj.textLine(line) canvas.drawText(tobj) if text.rotation != 0: canvas.restoreState() canvas.showPage()
def myFirstPage(canvas, doc): PAGE_HEIGHT,PAGE_WIDTH = letter canvas.saveState() canvas.drawImage(fondo, 0,0, PAGE_HEIGHT, PAGE_WIDTH ) canvas.setStrokeColorRGB(1,0,1,alpha=0.1) #canvas.setPageSize(landscape(letter)) canvas.setFont('Arial', 10) canvas.drawString(150, 579, "-") SHOW_GRID = True if SHOW_GRID: n = 5 s = 200 #canvas.setStrokeGray(0.90) #canvas.setFillGray(0.90) canvas.setStrokeColorRGB(0,1,1,alpha=0.1) canvas.setFillColorRGB(1,0,1) canvas.setFont('Arial',1) for x in range(s): for y in range(s): canvas.rect(x*n,y*n, width=n, height=n, stroke=1) canvas.drawString(x*n,y*n,"%s,%s" % ((x*n),(y*n)) ) canvas.restoreState()
def Barre(self, canvas, x, y, largeur, hauteur, label, heureDebut, heureFin, IDcategorie, facteurAgrandissement): # Dessin d'une barre x = ((x - COORD_LIGNE[0]) * facteurAgrandissement) + COORD_LIGNE[0] largeur = largeur * facteurAgrandissement paddingTexte = 3 nom, IDcat_parent, ordre, couleur, totalHeures = DICT_CATEGORIES[ IDcategorie] r, g, b = ConvertCouleur(FormateCouleur(couleur)) canvas.setFillColorRGB(r, g, b) canvas.rect(x, y, largeur, hauteur, fill=1) canvas.setFillColorRGB(0, 0, 0) canvas.setFont("Helvetica", 8) # Dessin des heures if MODE_TEXTE == 2: y = y + 10 heureDebut = str(heureDebut)[0:2] + "h" + str(heureDebut)[3:5] canvas.drawString(x + paddingTexte, y + paddingTexte, heureDebut) heureFin = str(heureFin)[0:2] + "h" + str(heureFin)[3:5] canvas.drawRightString(largeur + x - paddingTexte, y + paddingTexte, heureFin) # Dessin de l'intitulé if MODE_TEXTE == 2 and label != "": canvas.drawString(x + paddingTexte, y + paddingTexte - 10, label)
def write_title_and_credits(canvas, text, nib_width, partitions, angles, pagesize, horizontal = False): canvas.setFillColorRGB(0, 0, 0, 1) if not horizontal: canvas.rotate(90) t = canvas.beginText() if text: canvas.setTitle(text) t.setTextOrigin(10*mm, 3*mm) t.setFont("Times-Italic", 20) t.textOut(text) t.setFont("Times-Italic", 10) t.textOut(" (%smm nib, Partitions:%s, angles:%s)"%(nib_width, partitions, angles)) # canvas.setFillColorRGB(0, 0, 0, 0.2) # w,l = (float(x)/100 for x in A4) # print w,",",l if not horizontal: t.setTextOrigin(10*mm, -pagesize[0]-5*mm) t.setFont("Times-Roman", 10) t.textOut(" Generated using ") t.setFont("Times-Italic", 10) t.textOut("http://calligraffiti.in/rulings") canvas.drawText(t)
def write_title_and_credits(canvas, opts, pagesize): canvas.saveState() if pagesize[0] > pagesize[1]: width = pagesize[0] height = pagesize[1] else: width = pagesize[1] height = pagesize[0] canvas.rotate(90) canvas.translate(0, -pagesize[0]) t = canvas.beginText() t.setFont("Times-Roman", 10) l = stringWidth(__COPYRIGHT__, "Times-Roman", 10) t.setTextOrigin(width - l - 5*mm, height+5*mm) t.textOut(__COPYRIGHT__) canvas.setFillColorRGB(0, 0, 0, 0.4) canvas.drawText(t) canvas.setFillColorRGB(0, 0, 0, 1) if opts.title: t = canvas.beginText() t.setTextOrigin(5*mm, height+5*mm) t.setFont("Times-Italic", 20) t.textOut(opts.title) canvas.drawText(t) t = canvas.beginText() t.setTextOrigin(5*mm, -5*mm) t.setFont("Times-Italic", 8) t.textOut(opts.subject) canvas.drawText(t) canvas.restoreState()
def pageCanvas(self, canvas, doc): """ Forming of the page layout (backround color...) """ canvas.saveState() canvas.setFont(self.FONTNAME, self.FONTSIZE) canvas.setFillColorRGB( self.BCKGRDCOLOR[0], self.BCKGRDCOLOR[1], self.BCKGRDCOLOR[2]) canvas.rect(0, 0, self.WIDTH, self.HEIGHT, stroke=0, fill=1) canvas.restoreState() canvas.saveState() p = canvas.beginPath() p.rect(0, self.HEIGHT - 80, self.WIDTH, 80) canvas.clipPath(p, stroke=0) canvas.linearGradient( 0, self.HEIGHT - 80, self.WIDTH, self.HEIGHT - 80, (black, blue), extend=False) canvas.restoreState() canvas.saveState() canvas.setFillColorRGB(1, 1, 1) canvas.setFont(self.FONTNAME, self.FONTSIZE) canvas.drawString(40, 714, "%s.%s:%s" % (self.PASSAGE[0], self.PASSAGE[1], self.PASSAGE[2])) canvas.restoreState()
def draw_page(page, uid, survey_name, canvas : reportlab.pdfgen.canvas.Canvas): draw_qr_data(canvas, 'survey:'+survey_name+':'+page.name+':'+uid, 64, (48, height-64-48)) canvas.setFillColorRGB(0.2, 0.2, 0.2) canvas.setStrokeColorRGB(0.2, 0.2, 0.2) canvas.circle(32, 32, 4, stroke=1, fill=1) canvas.circle(32+12, 32, 4, stroke=1, fill=1) canvas.circle(32, 32+12, 4, stroke=1, fill=1) canvas.circle(width - 32, height - 32, 4, stroke=1, fill=1) canvas.circle(width - 32-12, height - 32, 4, stroke=1, fill=1) canvas.circle(width - 32, height - 32-12, 4, stroke=1, fill=1) canvas.circle(width - 32, 32, 4, stroke=1, fill=1) canvas.circle(width - 32-12, 32, 4, stroke=1, fill=1) canvas.circle(width - 32, 32+12, 4, stroke=1, fill=1) canvas.circle(32, height - 32, 4, stroke=1, fill=1) canvas.circle(32+12, height - 32, 4, stroke=1, fill=1) canvas.circle(32, height - 32-12, 4, stroke=1, fill=1) canvas.setFillColorRGB(0.3, 0.3, 0.3) canvas.drawString(128, height - 67, survey_name+':'+page.name+':'+uid) canvas.setFillColorRGB(0.4, 0.4, 0.4) canvas.setStrokeColorRGB(0.2, 0.2, 0.2) canvas.setFont('Courier', 8) for field in page.get_binary_fields(): canvas.circle(field.position[0], height - field.position[1], 5, stroke=1, fill=0) canvas.drawCentredString(field.position[0], height - field.position[1]-2, field.hint) canvas.setFillColorRGB(0.1, 0.1, 0.1) for text in page.get_text_areas(): if text.rotation != 0: canvas.saveState() canvas.rotate(text.rotation) tobj = canvas.beginText(text.position[0], height - text.position[1]) tobj.setFont(text.fontname, text.fontsize) for line in text.text.split(): tobj.textLine(line) canvas.drawText(tobj) if text.rotation != 0: canvas.restoreState() canvas.showPage()
def genSingleNameTag(canvas, datum, xcoord, ycoord): # generate a single name tag # dimensions: 252 x 160 # print background image #im = Image.open('newbackground.jpg') myimg = 'final_devoted_bg.jpg' canvas.drawImage(myimg, xcoord, ycoord, width=252, height=160) # unpack datum # print datum personName, lifeGroup, housing, smallGroup = datum # might include keyholder later # print personName # modify name / fontSize if need nameFontSize = getNameFontSize(canvas, personName) canvas.setFont('Raleway Bold', nameFontSize) canvas.setFillColorRGB(0, 0, 0) canvas.drawCentredString(xcoord + 126, ycoord + 85 - nameFontSize / 2, personName) #ycoord was 70 # print housing canvas.setFont('Raleway Bold', 15) canvas.setFillColorRGB(0, 0, 0) canvas.drawString(xcoord + 5, ycoord + 5, housing) #240,12 # print lifeGroup (this will be where they're from) canvas.setFont('Raleway Regular', 20) #24 canvas.setFillColorRGB(0, 0, 0) canvas.drawCentredString(xcoord + 126, ycoord + 40, lifeGroup) #12, 12 # print smallGroup # check if they're actually in a small group? canvas.setFont('Raleway Bold', 15) canvas.setFillColorRGB(0, 0, 0) canvas.drawString(xcoord + 180, ycoord + 5, smallGroup)
def draw_circles(canvas, nib_width, partitions, gap, nrulings, top_margin, center): "Draws circles and separators on the page" partition_radius = sum((float(x) for x in partitions.split(",")),0.0) # Sum of the ascenders, descenders and body partition_radius += gap # Add the gap offset = nrulings * partition_radius * nib_width * mm for i in range(nrulings, 1, -1): # Draw gap canvas.setFillColorRGB(0, 0, 0, 1) canvas.circle(center[0], center[1], offset, fill = 1, stroke = 1) offset -= gap *nib_width * mm # Draw partitions canvas.setFillColorRGB(1, 1, 1, 1) offset = draw_circle_set(canvas, center[0], center[1], offset, nib_width, partitions) # Draw initial inner margin canvas.setFillColorRGB(0.5, 0.5, 0.5, 1) canvas.circle(center[0], center[1], offset, fill = 1, stroke = 1)
def draw_circles(canvas, nib_width, rules, gap, nrulings, top_margin, center): "Draws circles and separators on the page" partition_radius = sum((float(x.split("/")[0]) for x in rules),0.0) # Sum of the ascenders, descenders and body partition_radius += gap # Add the gap offset = nrulings * partition_radius * nib_width * mm for i in range(nrulings, 1, -1): # Draw gap canvas.setFillColorRGB(0, 0, 0, 1) canvas.circle(center[0], center[1], offset, fill = 1, stroke = 1) offset -= gap *nib_width * mm # Draw rules canvas.setFillColorRGB(1, 1, 1, 1) offset = draw_circle_set(canvas, center[0], center[1], offset, nib_width, rules) # Draw initial inner margin canvas.setFillColorRGB(0.5, 0.5, 0.5, 1) canvas.circle(center[0], center[1], offset, fill = 1, stroke = 1)
def myLaterPages(canvas, doc): PAGE_HEIGHT,PAGE_WIDTH = letter canvas.saveState() canvas.setPageSize(landscape(letter)) canvas.drawImage(frunt_pag2, 0,0, PAGE_WIDTH,PAGE_HEIGHT ) canvas.setStrokeColorRGB(0,1,1,alpha=0.1) ficha_no = doc.page-1 #canvas.setStrokeColorRGB(0.7,0.7,0.7) canvas.setFillColorRGB(0,0,0) SHOW_GRID = False if SHOW_GRID: n = 5 s = 200 canvas.setFillColorRGB(0,0,1) canvas.setFont('Helvetica',1) for x in range(s): for y in range(s): canvas.rect(x*n,y*n, width=n, height=n, stroke=1) canvas.drawString(x*n,y*n,"%s,%s" % ((x*n),(y*n)) ) # for i in range(s): # x= i*n # y=x # canvas.drawString(x,0,"%s" % (x)) #horizontal # canvas.drawString(0,y+1,"%s" % (x)) # vertical # canvas.drawString(x,600,"%s" % (x)) #horizontal # canvas.drawString(990,y,"%s" % (x)) # vertical # # canvas.setStrokeColorRGB(0,0,1,alpha=0.7) # canvas.setFont('Helvetica',1) # for i in range(610): # #canvas.rect(35,i*2, width=0.5, height=0.5, stroke=1) # canvas.drawString(35,i,"%s -" % (i,) ) canvas.setFont('Helvetica',7) LINE_1 = 508 #fecha_elaboracion = doc.fecha_elaboracion #if not fecha_elaboracion: # fecha_elaboracion = datetime.today() canvas.drawCentredString(137,LINE_1,str(fecha_elaboracion.year)) canvas.drawCentredString(162,LINE_1,str(fecha_elaboracion.month)) canvas.drawCentredString(180,LINE_1,str(fecha_elaboracion.day)) canvas.drawCentredString(290,LINE_1,"VALLE DEL CAUCA") canvas.drawCentredString(478,LINE_1,"SANTIAGO DE CALI") canvas.drawCentredString(581,LINE_1,"7") canvas.drawCentredString(598,LINE_1,"6") canvas.drawCentredString(620,LINE_1,"0") canvas.drawCentredString(645,LINE_1,"0") canvas.drawCentredString(673,LINE_1,"1") canvas.drawCentredString(740,LINE_1,"Ficha No. %s" % (int(ficha_no)+int(no_ficha_inicial)-1)) canvas.drawCentredString(177,142,"ESAUD URRUTIA NOEL") canvas.drawCentredString(177,132,"Secretario de Desarrollo Territorial y Bienestar Social") canvas.drawCentredString(177,123,"71.993.571 de Caceres") canvas.setFont('Helvetica',5) canvas.drawString(75,115, "Elaboro: %s" % elaboro) canvas.drawString(215,115, "Reviso: %s" % reviso) LINES = [401,390, 379, 368,358, 347, 336, 325, 314, 303, 293, 282, 272, 261, 250, 238, 228, 218, 207, 197 ] LINE_1_L = 0 i=0 ini = (ficha_no*20)-20 fin = (ficha_no*20) for row in doc.rows[ini:fin]: #[total_pages:]: line = LINES[i] canvas.drawCentredString(53,line, row["fecha_inscripcion"]) canvas.drawCentredString(98,line,row["cedula"]) canvas.drawCentredString(147,line,row["apellido1"]) canvas.drawCentredString(195,line,row["apellido2"]) canvas.drawCentredString(244,line,row["nombre1"]) canvas.drawCentredString(292,line,row["nombre2"]) canvas.drawCentredString(381,line,row["direccion"]) canvas.drawCentredString(472,line,row["telefono"]) canvas.drawCentredString(512,line,row["fecha_nac_ano"]) canvas.drawCentredString(544,line,row["fecha_nac_mes"]) canvas.drawCentredString(576,line,row["fecha_nac_dia"]) canvas.drawCentredString(598,line,row["genero"]) canvas.drawCentredString(614,line,row["p_sisben_1"]) canvas.drawCentredString(627,line,row["p_sisben_2"]) canvas.drawCentredString(638,line,row["p_sisben_3"]) canvas.drawCentredString(653,line,row["p_sisben_4"]) canvas.drawCentredString(673,line,row["ubicacion"]) canvas.drawCentredString(700,line,row["tiempo_residencia"]) canvas.drawCentredString(722,line,row["condicion_am"]) canvas.drawCentredString(738,line,row["con_personas_cargo"]) canvas.drawCentredString(754,line,row["discapacitado"]) canvas.drawCentredString(768,line,row["indigena"]) i=i+1 canvas.restoreState()
def myFirstPage(self,canvas, doc): canvas.saveState() canvas.drawImage(STATICFILES_DIRS[0]+'escudo_transito.jpg',35, PAGE_HEIGHT-115) canvas.setLineWidth(1) canvas.line(10, 723, 600,723) canvas.setFont('Times-Roman',8) canvas.drawString(10,PAGE_HEIGHT-130, "MUNICIPIO DE LEON GUANAJUATO") canvas.drawString(10,PAGE_HEIGHT-142, "SECRETARIA DE SEGURIDAD PUBLICA") canvas.drawString(420,PAGE_HEIGHT-142, "ACTA DE INFRACCION No T.") canvas.setFillColorRGB(1,0,0) canvas.setFontSize(18) folio=self.data.get('folio_infraccion',"") canvas.drawString(530,PAGE_HEIGHT-142, folio) canvas.setFontSize(10) canvas.setFillColorRGB(0,0,0) canvas.drawString(10,PAGE_HEIGHT-154, "DIRECCION GENERAL DE TRANSITO MUNICIPAL") canvas.setFont('Times-Roman',7.5) fundamento='Con fundamento en los artículos 16 de la Constitución Política de los Estados Unidos ' fundamento=fundamento + ' Mexicanos 4 de la Ley Orgánica Municipal para el Estado de Guanajuato1,2,3,4,fracción 1X 42,44 y 47 del' canvas.drawString(10,PAGE_HEIGHT-178, fundamento) canvas.drawString(10,PAGE_HEIGHT-190, "reglamento de Tránsito Municipal de Léon, Guanajuato se procede a levantar la presente.") canvas.drawString(330,PAGE_HEIGHT-190, "ACTA DE INFRACCION") #canvas.setFillColorRGB(0,0,0) #canvas.setFillColorCMYK(1,1,0,0) canvas.rect(10, 600, 583, 35) canvas.drawString(12,PAGE_HEIGHT -213, "EN LEON. Guanajuato, el suscrito") canvas.setFont('Times-Bold',7) canvas.drawString(170,PAGE_HEIGHT -213, "AGENTE") canvas.setFont('Times-Roman',7.5) canvas.drawString(250,PAGE_HEIGHT -213, "de nombre") canvas.setStrokeColorRGB(0,0,0) canvas.setLineWidth(1) canvas.line(300, 627, 430,627) canvas.setFont('Times-Bold',7) nombre=self.data.get('nombreAgente',"") canvas.drawString(300,PAGE_HEIGHT -213, nombre) canvas.setFont('Times-Roman',7.5) canvas.drawString(525,PAGE_HEIGHT -213, "adscrito a la") canvas.setFont('Times-Bold',7.5) canvas.drawString(12,PAGE_HEIGHT -222, "PRIMERA COMANDANCIA") canvas.drawString(130,PAGE_HEIGHT -222, "TURNO A") canvas.drawString(180,PAGE_HEIGHT -222, "DELEGACION PONIENTE") canvas.setFont('Times-Roman',7.5) canvas.drawString(280,PAGE_HEIGHT -222, " de la Direccion de Transito municipal de Leon Guanajuato como consta en la ") canvas.setFont('Times-Bold',7.5) canvas.drawString(525,PAGE_HEIGHT -222, "CREDENCIAL") cobro=self.data.get('noCobro',"") canvas.drawString(12,PAGE_HEIGHT -231, str(cobro)) canvas.setLineWidth(1) canvas.line(12, 609, 40,609) canvas.setFont('Times-Roman',7.5) canvas.drawString(45,PAGE_HEIGHT -231, "expedida por el titular de la Dependencia Municipal. con la cual me identifica. Siendo las") canvas.setFont('Times-Bold',7.5) hora=self.data.get('hora_infrac',"") canvas.drawString(318,PAGE_HEIGHT -231, hora) canvas.setLineWidth(1) canvas.line(318, 609, 337,609) canvas.setFont('Times-Roman',7.5) canvas.drawString(350,PAGE_HEIGHT -231, "Horas del dia") canvas.setFont('Times-Bold',7.5) canvas.drawString(398,PAGE_HEIGHT -231, "24") canvas.setLineWidth(1) canvas.line(395, 609, 407,609) canvas.setFont('Times-Roman',7) canvas.drawString(413,PAGE_HEIGHT -231, "del mes de") canvas.setFont('Times-Bold',7) canvas.drawString(453,PAGE_HEIGHT -231, "OCTUBRE") canvas.setLineWidth(1) canvas.line(450, 609, 493,609) canvas.setFont('Times-Roman',7.5) canvas.drawString(495,PAGE_HEIGHT -231, "Del año") canvas.setFont('Times-Bold',7.5) canvas.drawString(525,PAGE_HEIGHT -231, "2013") canvas.setFont('Times-Roman',7.5) canvas.drawString(12,PAGE_HEIGHT -240, "Hago constar que el conductor de vehiculo cuyos datos se especifican a continuacion:") canvas.rect(10, 575, 585, 10) canvas.rect(10, 495, 585, 80) canvas.setLineWidth(1) canvas.line(10, 565, 595,565) canvas.line(10, 555, 595,555) canvas.line(10, 545, 595,545) canvas.line(10, 535, 595,535) canvas.line(10, 525, 595,525) canvas.line(10, 515, 595,515) canvas.line(10, 505, 595,505) canvas.line(295, 495, 295,585) canvas.drawString(135,PAGE_HEIGHT -265, "Datos Personales") canvas.drawString(395,PAGE_HEIGHT -265, "Caracteristicas de Vehiculo") canvas.drawString(300,PAGE_HEIGHT -275, "Marca:") canvas.setFont('Times-Bold',7) self.LabelVehiculo(canvas) self.LabelConductor(canvas) vehiculo=self.data.get('vehiculo',"") if vehiculo !="": mar=vehiculo.get('marca',"") canvas.drawString(330,PAGE_HEIGHT -275, mar) vehiculo=self.data.get('vehiculo',"") sub=vehiculo.get('submarca',"") canvas.drawString(500,PAGE_HEIGHT -275, sub) #canvas.drawString(500,PAGE_HEIGHT -275, "PICK UP") canvas.setFont('Times-Roman',7) #canvas.drawString(500,PAGE_HEIGHT -275, "Camioneta") canvas.setFont('Times-Bold',7) modelo=vehiculo.get('modelo',"") canvas.drawString(340,PAGE_HEIGHT -285, modelo) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) color=vehiculo.get('color',"") canvas.drawString(470,PAGE_HEIGHT -285, color) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) placas=vehiculo.get('placas',"") canvas.drawString(340,PAGE_HEIGHT -295, placas) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) serie=vehiculo.get('serie',"") canvas.drawString(470,PAGE_HEIGHT -295, serie) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) empresa=vehiculo.get('empresa',"") canvas.drawString(360,PAGE_HEIGHT -305, empresa) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) tipo_vehiculo=vehiculo.get('tipo_vehiculo',"") canvas.drawString(500,PAGE_HEIGHT -305, tipo_vehiculo) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) estado=vehiculo.get('estado',"") canvas.drawString(53,PAGE_HEIGHT -325, estado) canvas.setFont('Times-Bold',7) empresa=vehiculo.get('empresa',"") canvas.drawString(360,PAGE_HEIGHT -325, empresa) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) ruta=vehiculo.get('ruta','') canvas.drawString(500,PAGE_HEIGHT -325, ruta) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) sub=vehiculo.get('no_economico',"") canvas.drawString(370,PAGE_HEIGHT -335, sub) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) no_tarjeton=vehiculo.get('no_tarjeton',"") canvas.drawString(400,PAGE_HEIGHT -345, no_tarjeton) infractor=self.data.get('infractor',"") if infractor !="": canvas.setFont('Times-Bold',7) nombre=infractor.get('nombre',"") canvas.drawString(57,PAGE_HEIGHT -285, nombre) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) edad=infractor.get('edad',"") canvas.drawString(57,PAGE_HEIGHT -295, edad) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) sexo=infractor.get('sexo',"") canvas.drawString(170,PAGE_HEIGHT -295, sexo) canvas.setFont('Times-Bold',7) domicilio=infractor.get('domicilio',"") canvas.drawString(53,PAGE_HEIGHT -305, domicilio) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) sub=infractor.get('colonia',"") canvas.drawString(53,PAGE_HEIGHT -315, sub) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) ciudad=infractor.get('ciudad',"") canvas.drawString(170,PAGE_HEIGHT -325, ciudad) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) no_licencia=infractor.get('no_licencia',"") canvas.drawString(120,PAGE_HEIGHT -335, no_licencia) """ ## ESTO DEBE DE ESTAR EN ALGUN LADO tipo_servicio=self.data.get('tipo_servicio',"") canvas.drawString(395,PAGE_HEIGHT -315, tipo_servicio) canvas.setFont('Times-Roman',7) canvas.setFont('Times-Roman',7) canvas.drawString(12,PAGE_HEIGHT -345, "Tipo de Operativo:") canvas.setFont('Times-Bold',7) sub=self.data.get('tipo_operativo',"") canvas.drawString(100,PAGE_HEIGHT -345, sub) canvas.setFont('Times-Roman',7) canvas.drawString(12,PAGE_HEIGHT -355, "Quien en estos Momentos") canvas.setFont('Times-Bold',7) sub=self.data.get('firmo',"") canvas.drawString(100,PAGE_HEIGHT -355, sub) canvas.setFont('Times-Roman',7) canvas.drawString(116,PAGE_HEIGHT -355, "se encuentra presente, cometio flagrantemente infraccion a los articulo(s) que se detalla(n) a continuacion") canvas.setLineWidth(2) ##canvas.rect(10, 440, 585, 35) canvas.setLineWidth(1) canvas.line(180, 440, 180,476) canvas.drawString(12,PAGE_HEIGHT -374, "Reglamento de Transito para") canvas.drawString(12,PAGE_HEIGHT -380, "el municipio de Leon, Guanajuato") canvas.drawString(190,PAGE_HEIGHT -378, "Descripcion de los Motivos de la infraccion") canvas.setFont('Times-Roman',7) canvas.setFont('Times-Bold',7) dy=585 canvas.rect(10, dy, 585, 45) canvas.drawString(12,PAGE_HEIGHT -dy, " Hechos que ocurrieron en:") canvas.setFont('Times-Bold',7) calle=self.data.get('calle1',"") canvas.drawString(200,PAGE_HEIGHT -dy, calle) canvas.line(190, dy-1, 315,dy-1) canvas.setFont('Times-Roman',7) canvas.drawString(395,PAGE_HEIGHT -dy, "Con circulacion de:") canvas.setFont('Times-Bold',7) bar=self.data.get('circulacion',"") canvas.drawString(475,PAGE_HEIGHT -dy, bar) canvas.setFont('Times-Roman',7) canvas.drawString(200,PAGE_HEIGHT -(dy+9), " Calle BOULEVARD / AVENIDA") canvas.setFont('Times-Bold',7) bar=self.data.get('colonia',"") dy=dy+19 canvas.drawString(73,PAGE_HEIGHT -dy, bar) canvas.line(29, dy-40, 150,dy-40) canvas.setFont('Times-Roman',7) canvas.drawString(190,PAGE_HEIGHT -dy, "Referencia") canvas.setFont('Times-Bold',7) bar=self.data.get('referencia',"") canvas.drawString(320,PAGE_HEIGHT -dy, bar) canvas.line(250, dy-40, 400,dy-40) canvas.setFont('Times-Roman',7) canvas.drawString(23,PAGE_HEIGHT-450, "FRACCIONAMIENTO COLONIA COMUNIDAD") canvas.drawString(250,PAGE_HEIGHT-450, "SENALAR FRENTE A QUE NUMERO ENTRE QUE CALLE U OTRO PUNTO DE REFERENCIA") canvas.drawString(12,PAGE_HEIGHT-455, "Ubicacion de senalamiento vial (en los casos que proceda)") canvas.drawString(12,PAGE_HEIGHT-480, "Con fundamento en lo dispuesto por el articulo 44 del reglamento de Transito Municipalde Leon Guanajuato para garantizar el cumplimiento de la sancion administrativa que") canvas.drawString(12,PAGE_HEIGHT -490, "en su caso se proceda, SE RETIENE AL INFRACTOR:") se_recoje=self.data.get('se_recoje',"") if se_recoje.get('tipo',"") == 'PLACAS': canvas.drawString(45,PAGE_HEIGHT -498, "X") canvas.drawString(12,PAGE_HEIGHT -498, "PLACAS ( )") if se_recoje.get('tipo',"") == 'TARJETA DE CIRCULACION': canvas.drawString(190,PAGE_HEIGHT -498, "X") canvas.drawString(95,PAGE_HEIGHT -498, "TARJETA DE CIRCULACION ( )") if se_recoje.get('tipo',"") == 'LICENCIA': canvas.drawString(253,PAGE_HEIGHT -498, "X") canvas.drawString (215,PAGE_HEIGHT -498,"LICENCIA ( )") if se_recoje.get('tipo',"") == 'VEHICULO': canvas.drawString(360,PAGE_HEIGHT -498, "X") canvas.drawString(320,PAGE_HEIGHT -498, "VEHICULO ( )") if se_recoje.get('tipo',"") == 'CORTESIA': canvas.drawString(460,PAGE_HEIGHT -498, "X") canvas.drawString(420,PAGE_HEIGHT -498, "CORTESIA ( )") if se_recoje.get('tipo',"") == 'PAGO MOVIL': canvas.drawString(570,PAGE_HEIGHT -498, "X") canvas.drawString(520,PAGE_HEIGHT -498, "PAGO MOVIL ( )") canvas.rect(10, 266, 585, 45) canvas.drawString(12,PAGE_HEIGHT -538, "En caso de violacion al articulo 36 del Reglamento de Transito Municipal deLeon, Guanajuato se remitio al conductor ante el Medico legista qien a traves del CERTIFICADO MEDICO") canvas.drawString(12,PAGE_HEIGHT -546, "NUMERO determino que ") print self.data ## LA CERTIFICACION NO ESTA EN ESTE MOMENTO certificado=self.data.get('certificado',"") if certificado['ebriedad_incompleta'] == 'si': canvas.drawString(105,PAGE_HEIGHT -554, "X" ) canvas.drawString(15,PAGE_HEIGHT -554, "EBRIEDAD INCOMPLETA ( )" ) if certificado['ebriedad_completa'] == 'si': canvas.drawString(200,PAGE_HEIGHT -554, "X" ) canvas.drawString(120,PAGE_HEIGHT -554, "EBRIEDAD COMPLETA ( )" ) if certificado['influjo_droga'] == 'si': canvas.drawString(315,PAGE_HEIGHT -554, "X") canvas.drawString(220,PAGE_HEIGHT -554, "BAJO INFLUJO DE DROGAS ( )") if certificado['aliento_alcoholico'] == 'si': canvas.drawString(423,PAGE_HEIGHT -554, "X") canvas.drawString(340,PAGE_HEIGHT -554, "ALIENTO ALCOHOLICO ( )") ## certificado=self.data.get('certificado',"") if certificado['normal'] == 'si': canvas.drawString(512,PAGE_HEIGHT -554, "X") canvas.drawString(450,PAGE_HEIGHT -554, "ESTADO NORMAL( )") canvas.drawString(12,PAGE_HEIGHT -562, "Se recoje el vehiculo infraccionado y se deposita en la pension autorizada que corresponda de conformidad a los(articulos) del reglamento de Transito Municipal de Leon Guanajuato.") canvas.drawString(12,PAGE_HEIGHT -570, "15 Ultimo parrafo( )") canvas.drawString(120,PAGE_HEIGHT -570, "18 Tercer y Cuarto Parrafo( )") canvas.drawString(300,PAGE_HEIGHT -570, "36 Ultimo Parrafo") canvas.drawString(395,PAGE_HEIGHT -570, "44 ( )") canvas.drawString(470,PAGE_HEIGHT -570, "45 ( )") tam= PAGE_WIDTH/3 """ canvas.restoreState()
def set_fill_color(canvas, color): canvas.setFillColorRGB(color["r"], color["g"], color["b"]) canvas.setFillAlpha(numpy.asscalar(color["a"]))
def colors2(canvas): from reportlab.lib.units import inch x = 0; dx = 0.4*inch for i in range(4): for color in (colors.pink, colors.green, colors.brown): canvas.setFillColor(color) canvas.rect(x,0,dx,3*inch,stroke=0,fill=1) x = x+dx canvas.setFillColor(colors.white) canvas.setStrokeColor(colors.white) canvas.setFont("Helvetica-Bold", 85) canvas.drawCentredString(2.75*inch, 1.3*inch, "OPEN") return textobject = canvas.beginText() textobject.setTextOrigin(inch, 2.5*inch) textobject.setFont("Helvetica-Oblique", 14) for line in lyrics: textobject.textLine(line) textobject.setFillGray(0.4) textobject.textLines(''' With many apologies to the Beach Boys and anyone else who finds this objectionable ''') canvas.drawText(textobject) black = colors.black y = x = 0; dy=inch*3/4.0; dx=inch*5.5/5; w=h=dy/2; rdx=(dx-w)/2 rdy=h/5.0; texty=h+2*rdy canvas.setFont("Helvetica",10) for [namedcolor, name] in ( [colors.lavenderblush, "lavenderblush"], [colors.lawngreen, "lawngreen"], [colors.lemonchiffon, "lemonchiffon"], [colors.lightblue, "lightblue"], [colors.lightcoral, "lightcoral"]): canvas.setFillColor(namedcolor) canvas.rect(x+rdx, y+rdy, w, h, fill=1) canvas.setFillColor(black) canvas.drawCentredString(x+dx/2, y+texty, name) x = x+dx y = y + dy; x = 0 for rgb in [(1,0,0), (0,1,0), (0,0,1), (0.5,0.3,0.1), (0.4,0.5,0.3)]: r,g,b = rgb canvas.setFillColorRGB(r,g,b) canvas.rect(x+rdx, y+rdy, w, h, fill=1) canvas.setFillColor(black) canvas.drawCentredString(x+dx/2, y+texty, "r%s g%s b%s"%rgb) x = x+dx y = y + dy; x = 0 for cmyk in [(1,0,0,0), (0,1,0,0), (0,0,1,0), (0,0,0,1), (0,0,0,0)]: c,m,y1,k = cmyk canvas.setFillColorCMYK(c,m,y1,k) canvas.rect(x+rdx, y+rdy, w, h, fill=1) canvas.setFillColor(black) canvas.drawCentredString(x+dx/2, y+texty, "c%s m%s y%s k%s"%cmyk) x = x+dx y = y + dy; x = 0 for gray in (0.0, 0.25, 0.50, 0.75, 1.0): canvas.setFillGray(gray) canvas.rect(x+rdx, y+rdy, w, h, fill=1) canvas.setFillColor(black)
def myFirstPage(canvas, doc): PAGE_HEIGHT,PAGE_WIDTH = letter canvas.saveState() canvas.drawImage(fondo, 0,0, PAGE_HEIGHT, PAGE_WIDTH ) canvas.setStrokeColorRGB(1,0,1,alpha=0.1) #canvas.setPageSize(landscape(letter)) canvas.setFont('Tahoma-Bold', 8) cuenta_cobro.tipo_contrato = textwrap.fill(cuenta_cobro.tipo_contrato, 22) textobject = canvas.beginText() textobject.setTextOrigin(205, 638) textobject.textLines(cuenta_cobro.tipo_contrato) canvas.drawText(textobject) #canvas.drawCentredString(260,638, cuenta_cobro.tipo_contrato) canvas.drawString(205,607, cuenta_cobro.no_contrato) canvas.drawString(202,661, cuenta_cobro.fecha_transaccion) canvas.drawCentredString(445, 274, cuenta_cobro.saldo_pendiente_fecha) canvas.drawCentredString(497,523, cuenta_cobro.no_bp) canvas.drawCentredString(262,522, cuenta_cobro.vigencia_presupuestal) canvas.drawCentredString(497, 491, cuenta_cobro.documento_beneficiario) canvas.drawCentredString(267, 300, cuenta_cobro.valor_contrato) canvas.drawCentredString(500, 300, cuenta_cobro.valor_concepto) canvas.drawCentredString(263, 360, cuenta_cobro.no_cdp) canvas.drawCentredString(497, 360, cuenta_cobro.no_rpc) canvas.drawCentredString(260, 400, cuenta_cobro.fecha_inicio) canvas.drawCentredString(495, 400, cuenta_cobro.fecha_fin) canvas.drawCentredString(432, 460, cuenta_cobro.fecha_fin) canvas.drawCentredString(432, 430, cuenta_cobro.nombre_interventor) canvas.drawCentredString(432, 328, cuenta_cobro.periodo_facturado) #canvas.drawCentredString(432, 327, cuenta_cobro.periodo) # "SEGUNDA CUOTA #canvas.drawCentredString(495, 621, cuenta_cobro.num_cuota) canvas.drawString(326, 84, cuenta_cobro.nombre_interventor) canvas.drawString(326, 73, "C.C. %s" % cuenta_cobro.documento_interventor) canvas.drawString(81, 84, cuenta_cobro.nombre_beneficiario) canvas.drawString(81, 73, "C.C. %s" % cuenta_cobro.documento_beneficiario) cuenta_cobro.nombre_beneficiario = textwrap.fill(cuenta_cobro.nombre_beneficiario, 20) textobject = canvas.beginText() textobject.setTextOrigin(210, 500) textobject.textLines(cuenta_cobro.nombre_beneficiario) canvas.drawText(textobject) s = ''' EL DIA {} SE REUNIERON EL INTERVENTOR Y/O SUPERVISOR DEL CONTRATO {} {} DE LA SECRETARIA DE DESARROLLO TERRITORIAL Y BIENESTAR SOCIAL, Y EL CONTRATISTA {}, IDENTIFICADO CON CEDULA DE CIUDADANIA NUMERO {} CON EL FIN DE FIRMAR EL ACTA FINAL QUE AUTORIZA EL PAGO CORRESPONDIENTE AL CONTRATO NUMERO {} Y DEJAR CONSTANCIA DEL CUMPLIMIENTO DEL OBJETO DEL CONTRATO HASTA LA FECHA. '''.format(cuenta_cobro.fecha_transaccion, cuenta_cobro.nombre_interventor, cuenta_cobro.cargo_interventor, cuenta_cobro.nombre_beneficiario, cuenta_cobro.documento_beneficiario, cuenta_cobro.no_contrato ) s = textwrap.fill(s, 110) textobject = canvas.beginText() textobject.setFont("Tahoma", 8) textobject.setTextOrigin(82, 249) textobject.textLines(s) canvas.drawText(textobject) cuenta_cobro.objeto_contrato = textwrap.fill(cuenta_cobro.objeto_contrato, 100) textobject = canvas.beginText() textobject.setTextOrigin(83, 588) textobject.textLines(cuenta_cobro.objeto_contrato) canvas.drawText(textobject) SHOW_GRID = False if SHOW_GRID: n = 5 s = 200 #canvas.setStrokeGray(0.90) #canvas.setFillGray(0.90) canvas.setStrokeColorRGB(0,1,1,alpha=0.1) canvas.setFillColorRGB(1,0,1) canvas.setFont('Arial',1) for x in range(s): for y in range(s): canvas.rect(x*n,y*n, width=n, height=n, stroke=1) canvas.drawString(x*n,y*n,"%s,%s" % ((x*n),(y*n)) ) canvas.restoreState()
def draw(self, pmlOp, pageNr, canvas, pe): canvas.setFillColorRGB(*pmlOp.color)
def drawPdf(canvas, donor): donor_name = donor.replace('_', ' ') canvas.saveState() headboxh = 80 headboxx = 20 headboxy = 695 headboxw = 570 footboxh = 65 footboxx = 20 footboxy = 20 footboxw = 570 # aiddata logo logouri = "assets/images/aiddata_main_wht.png" mapuri = "donors/" + donor + "/map.png" influenceuri = "donors/" + donor + "/influence.png" adviceuri = "donors/" + donor + "/advice.png" advicelegenduri = "assets/images/bubble_legend.png" compuri = "donors/" + donor + "/comp.png" comp2uri = "donors/" + donor + "/comp2.png" # blue header canvas.setFillColorRGB(.086, .121, .203) canvas.rect(headboxx, headboxy, headboxw, headboxh, fill=1) canvas.saveState() canvas.setFillColor(colors.white) canvas.setFont('Open Sans', 20) canvas.drawString(headboxx + 160, headboxy + .425 * headboxh, "Development Partner Profile") # green header headboxh = 30 headboxx = 20 headboxy = 665 headboxw = 570 canvas.setFillColorRGB(.461, .711, .340) canvas.rect(headboxx, headboxy, headboxw, headboxh, fill=1) canvas.saveState() canvas.setFillColor(colors.white) canvas.setFont('Open Sans', 18) donor_year = donor_name + " 2015" textWidth = stringWidth(donor_year, "Open Sans", 18) canvas.drawString(headboxx + headboxw - (textWidth + 10), headboxy + .30 * headboxh, donor_name + " 2015") # add logo logo = ImageReader(logouri) canvas.drawImage(logo, 30, 700, 120, 68,preserveAspectRatio=True, mask='auto') # add map canvas.setFont('Open Sans', 12) canvas.setFillColor(colors.black) title_str = "Distribution of " + donor_name + "'s" textWidth = stringWidth(title_str, "Open Sans", 12) pl = (PAGEWIDTH / 2) - (textWidth / 2) canvas.drawString(pl, 650, title_str) title_str = "Official Development Assistance(ODA) 2004-2013" textWidth = stringWidth(title_str, "Open Sans", 12) pl = (PAGEWIDTH / 2) - (textWidth / 2) canvas.drawString(pl, 638, title_str) map = ImageReader(mapuri) canvas.drawImage(map, 75, 305, 450, 350, mask='auto') # add influence chart canvas.setFont('Open Sans', 12) canvas.setFillColor(colors.black) title_str = "Three Aspects of " + donor_name + "'s Performance in the Countries It Influences Most" textWidth = stringWidth(title_str, "Open Sans", 12) pl = (PAGEWIDTH / 2) - (textWidth / 2) canvas.drawString(pl, 310, title_str) influence = ImageReader(influenceuri) canvas.drawImage(influence, 80, 20, 450, 275, mask='auto') # move to next page canvas.showPage() # add advice chart canvas.setFont('Open Sans', 12) canvas.setFillColor(colors.black) title_str = "Usefulness of Advice, Volume of ODA and Agenda-Setting Influence, by Policy Area" textWidth = stringWidth(title_str, "Open Sans", 12) pl = (PAGEWIDTH / 2) - (textWidth / 2) canvas.drawString(pl, 750, title_str) advice = ImageReader(adviceuri) canvas.drawImage(advice, 75, 530, 350, 200, mask='auto') advicelegend = ImageReader(advicelegenduri) canvas.drawImage(advicelegend, 450, 545,150,200, mask='auto') # add advice comp chart canvas.setFillColor(colors.black) title_str = "<para align='center'><font color='black' fontName='Open Sans' size=12>Usefulness of " + donor_name + "'s Advice Compared to the Average</font></para>" canvas.setFont('Open Sans', 6) comp_title_para = Paragraph(title_str, getSampleStyleSheet()["Normal"]) comp_title_para.wrapOn(canvas, 320, 200) comp_title_para.drawOn(canvas, 30, 500) legend_y = 487 stroke_length = 30 green_stroke_pos = 50 red_stroke_pos = 200 offset = 10 canvas.setStrokeColorRGB(.461, .711, .340) canvas.line(green_stroke_pos, legend_y + 2, green_stroke_pos + stroke_length, legend_y + 2) canvas.setStrokeColorRGB(.890, .118, .118) canvas.line(red_stroke_pos, legend_y + 2, red_stroke_pos + stroke_length, legend_y + 2) key_str1 = "All Other Development Partners" canvas.drawString(green_stroke_pos + stroke_length + offset, legend_y, key_str1) canvas.drawString(red_stroke_pos + stroke_length + offset , legend_y, donor_name) comp = ImageReader(compuri) comp_x = 85 comp_width = 175 comp_y = 280 comp_height = -80 canvas.drawImage(comp, comp_x, comp_y, comp_x + comp_width, comp_y + comp_height, mask='auto') # add comp2 chart title_str = "<para align='center'><font color='black' fontName='Open Sans' size=12>Three Dimensions of " + \ donor_name + "'s Performance Compared to Other Development Partners</font></para>" margin = 10 comp2_title_para = Paragraph(title_str, getSampleStyleSheet()["Normal"]) comp2_title_para.wrapOn(canvas, PAGEWIDTH - 2*margin, 200) comp2_title_para.drawOn(canvas, margin, 250) comp2 = ImageReader(comp2uri) canvas.drawImage(comp2, 45, 110, 525, 125, mask='auto') # blue footer canvas.setStrokeColorRGB(.086, .121, .203) canvas.setFillColorRGB(.086, .121, .203) canvas.rect(footboxx, footboxy, footboxw, footboxh, fill=1) canvas.saveState() canvas.setFillColor(colors.white) # add logo logo = ImageReader(logouri) canvas.drawImage(logo, 475, 18, 120, 68, preserveAspectRatio=True, mask='auto') #add footer info datastr1 = "<font color='white' fontName='Open Sans' size=7><b>Perceptions Data Availibility</b><br/></font> \ <font color='white' fontName='Open Sans' size=6>Source: 2014 Reform Efforts Survey<br/> \ Number of Policy Domains:20<br/> \ Number of Respondents:<br/> \ 1. Embasssies: 84<br/> \ 2. GIZ: 36<br/> \ 3. KfW: 19<br/></font>" style = getSampleStyleSheet()['Normal'] style.leading = 7 pData1 = Paragraph(datastr1, style) pData1.wrapOn(canvas, 350, 400) pData1.drawOn(canvas, 25, 30) datastr2 = "<font color='white' fontName='Open Sans' size=7><b>Financial Data Availability</b><br/></font> \ <font color='white' fontName='Open Sans' size=6>Source: AidData Core Database, 2004-2013<br/> \ Number of Recipients:12<br/> \ Total Projects: 245<br/> \ Total Commitments (USD 2011): $21.3 million<br/></font>" pData2 = Paragraph(datastr2, style) pData2.wrapOn(canvas, 150, 400) pData2.drawOn(canvas, 180, 45) # problem type ranking canvas.setFillColor(colors.black) title_str = "<font color='black' fontName='Open Sans' size=12>"+ donor_name + "'s Influence in Designing\nReforms for Different Problem Types</font>" rank_title_para = Paragraph(title_str, getSampleStyleSheet()["Normal"]) rank_title_para.wrapOn(canvas, 190, 100) rank_title_para.drawOn(canvas, 380, 490) #set dnr to first element, and find the correct one dnr = data[0] for d in data: if str(d["NameofDonor"]) == donor: dnr = d break ptype = copy.deepcopy(problem_type) for prob in ptype: prob["score"] = dnr["Q22_" + prob["Code"]] ptype = filter(lambda x: x["score"] != "", ptype) # get rid of no data for prob in ptype: prob["score"] = float(prob["score"]) ptype = sorted(ptype, key=lambda p: p["score"]) if len(ptype) != 0: num = int(min(math.ceil(float(len(ptype)) / 2), 3)) top = [None] * num bottom = [None] * num for i in range(0, num): top[i] = ptype[-1 * (i + 1)] bottom[i] = ptype[i] top_str = """ <font color='green' size=12><b>More Influential</b></font><br/> """ bottom_str = """ <font color='red' size=12><b>Less Influential</b></font><br/> """ for i, pt in enumerate(top): top_str += "<font color='green' fontName='Open Sans' size=8>" + \ "%d. " % (i + 1) + pt["ProblemTypeLong"] + " ({0:.2f})".format(pt["score"]) + "<br/>" + \ "</font>" for i, pt in enumerate(bottom): bottom_str += "<font color='red' fontname='Open Sans' size=8>" + \ "%d. " % (i + 1) + pt["ProblemTypeLong"] + " ({0:.2f})".format(pt["score"]) + "<br/>" + \ "</font>" pTop = Paragraph(top_str, getSampleStyleSheet()["Normal"]) pTop.wrapOn(canvas, 160, 400) pTop.drawOn(canvas, 380, 380) pBottom = Paragraph(bottom_str, getSampleStyleSheet()["Normal"]) pBottom.wrapOn(canvas, 160, 400) pBottom.drawOn(canvas, 380, 280) return canvas
def makepdftoc(titlelimit, pageids, toppages, titles, toc, spills, pdflocs, chaplocs, outfolder, site, auth, stylesheet, tocl, headpages): global title_short global valid_date styles = getSampleStyleSheet() canvas = Canvas(outfolder + "/atoc.pdf", pagesize=letter) page_width, page_height = canvas._pagesize styles.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY)) styles.add( ParagraphStyle(name='TOCsection', parent=styles['Normal'], textColor='#3391CA', fontSize=12, fontName='ArialB')) styles.add( ParagraphStyle(name='TOCitem', parent=styles['Normal'], leftIndent=page_width / 11 / 4, fontSize=10)) styles.add( ParagraphStyle(name='right', parent=styles['Normal'], alignment=TA_RIGHT, fontSize=10)) styles.add( ParagraphStyle(name='right_h', parent=styles['Normal'], alignment=TA_RIGHT, textColor='#3391CA', fontSize=12, fontName='ArialB')) canvas.drawImage('doc_chapter_bg.png', 0, 0, width=page_width, height=page_height) pdfmetrics.registerFont(TTFont('Arial', 'Arial.ttf')) canvas.setFont('ArialB', 28) canvas.setFillColorRGB(1, 1, 1) x = 0.5 * page_width / 8.5 rowsonfirstpage = 34 #x=72 y = 9.5 * page_height / 11 canvas.drawString(x, y, 'Table of Contents') tbl_data = [] ix = 1 buildadoc = False lastsec = '' colw = [page_width - x * 2 - page_width / 11, page_width / 11] pagesum = 1 + tocl bookmarks = [] # print(spills) # print('spills: '+str(len(spills))) # print('toc: '+str(len(toc))) for title, pageid, topp, pdfn, spill, pdfloc in zip( titles, pageids, toppages, toc, spills, pdflocs): if topp != lastsec: ix = ix + 1 if ix == rowsonfirstpage: tbl = Table(tbl_data, colw) w, h = tbl.wrapOn(canvas, page_width - 2 * x, page_height - 2 * x) tbl.drawOn(canvas, x, 0.813 * page_height - h) # print('###################################################') # print("Page height minus h: "+str(0.813*page_height-h)) # print(page_height) # print(h) canvas.showPage() canvas.save() doc = SimpleDocTemplate(outfolder + "/atoc2.pdf", pagesize=letter, rightMargin=x, leftMargin=x, topMargin=72, bottomMargin=18) Story = [] tbl_data = [] buildadoc = True tbl_data.append([ Paragraph('' + topp + '', styles["TOCsection"]), Paragraph(str(pagesum), styles['right_h']) ]) # print(chaplocs) try: #addCoupaTexttoPDF(chaplocs[topp],'','',valid_date,pagesum) addCoupaTexttoPDF(chaplocs[topp], '', '', '', '') except: # print('File was modified') continue lastsec = topp bookmarks.append([pagesum - 1, topp, []]) pagesum = pagesum + 1 + spill tbl_data.append([ Paragraph(title, styles["TOCitem"]), Paragraph(str(pagesum), styles['right']) ]) bookmarks[-1][2].append([pagesum - 1, title, []]) ix = ix + 1 if ix == rowsonfirstpage: tbl = Table(tbl_data, colw) w, h = tbl.wrapOn(canvas, page_width - 2 * x, page_height - 2 * x) tbl.drawOn(canvas, x, 0.813 * page_height - h) # print('###################################################') # print("Page height minus h: "+str(0.813*page_height-h)) # print(page_height) # print(h) canvas.showPage() canvas.save() doc = SimpleDocTemplate(outfolder + "/atoc2.pdf", pagesize=letter, rightMargin=x, leftMargin=x, topMargin=72, bottomMargin=18) Story = [] tbl_data = [] buildadoc = True if (headpages): addCoupaTexttoPDF(pdfloc, title_short, topp, valid_date, pagesum) pagesum = pagesum + pdfn if buildadoc: tbl = Table(tbl_data, colw) Story.append(tbl) doc.build(Story) else: tbl = Table(tbl_data, colw) w, h = tbl.wrapOn(canvas, page_width - 2 * x, page_height - 2 * x) tbl.drawOn(canvas, x, 0.813 * page_height - h) # print('###################################################') # print("Page height minus h: "+str(0.813*page_height-h)) # print(page_height) # print(h) canvas.showPage() canvas.save() return (bookmarks)
# # Circulos # # Parâmetros (x, y, radius) canvas.circle(100, 500, 50, stroke=1, fill=0) # Com contorno e sem preenchimento canvas.circle(300, 500, 80, stroke=0, fill=1) # Sem contorno e com preenchimento # # Colorindo elementos # # Parâmetros (R, G, B) canvas.setFillColorRGB(255, 0, 0) canvas.rect(60, 300, 50, 100, stroke=0, fill=1) # Somente uma escala para tons de cinza (0 - 1) canvas.setFillGray(0.9) canvas.rect(180, 300, 50, 100, stroke=0, fill=1) # Alterando a cor da borda canvas.setStrokeColorRGB(0, 0, 255) canvas.rect(300, 300, 50, 100, stroke=1, fill=1) # # Utilizando o HexCode #