def draw_footer(self, canvas): canvas.saveState() footerwidth = self.dina4[0] - (2 * self.left) canvas.setFillColorCMYK(1, 0.5, 0, 0) canvas.rect(0, 0, width=self.dina4[0], height=50, fill=True) canvas.setFillColorCMYK(0, 0, 0, 0) canvas.setFont(self.font_bold, 14) x = self.dina4[0]/2 canvas.drawCentredString(x, 25, 'www.imko.de') canvas.linkURL('http://www.imko.de', (0, 50, self.dina4[1], 0)) canvas.restoreState()
def drawBounds(self, canvas): """Guidelines to help me draw - not needed in production""" canvas.setStrokeColor(colors.red) canvas.rect(-100, -70, 200, 140) canvas.line(-100, 0, 100, 0) canvas.line(0, 70, 0, -70) canvas.setStrokeColor(colors.black)
def draw(self): if not self._at_top(): canvas = self.canv canvas.setFillColor(self.fill_color) canvas.setFillColor("red") canvas.rect(self.xoffset, 0, self.width, self.line_height, stroke=0, fill=1)
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 first_page_boxes(canvas): #Box1 canvas.setStrokeColorRGB(0, 0, 0) canvas.rect(20, 504, 270, 117) canvas.line(20, 599, 290, 599) canvas.setFont('palab', 9) canvas.drawString(40, 605, 'Bill To:') canvas.setFont('pala', 9) #Dynamic canvas.drawString(40, 585, 'Test Orders Invoices') canvas.drawString(40, 573, '123 Center Str') canvas.drawString(40, 561, 'Boko Town, Boko 999999') #Box2 canvas.rect(310, 504, 270, 117) canvas.line(310, 599, 580, 599) canvas.setFont('palab', 9) canvas.drawString(320, 605, 'Order Information:') canvas.drawString(320, 585, 'Order Date: ') canvas.drawString(320, 573, 'Order Name: ') canvas.drawString(320, 561, 'Client Matter Number: ') canvas.drawString(320, 549, 'Total Amount Due: ') canvas.drawString(320, 537, 'Processed By: ') canvas.drawString(320, 525, 'Authorized By: ') canvas.setFont('pala', 9) canvas.drawString(390, 585, 'April 14, 2021') canvas.drawString(390, 573, 'Test orders Aaron') #canvas.drawString(390, 561,'Client Matter Number: ') canvas.drawString(405, 549, '$144945') canvas.drawString(390, 537, 'Aaron Sauber') canvas.drawString(390, 525, 'Judith Testing')
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 add_checkbox(canvas, x, y, label): """ draw a checkbox and draw a single character on top of the checkbox Parameters ---------- canvas : reportlab canvas object x : int the x coordinate of the top left corner of the box in points (pt) y : int the y coordinate of the top left corner of the box in points (pt) label: str A string representing the label that is drawn on top of the box, will only take the first character """ box_size = current_app.config['CHECKBOX_SIZE'] margin = current_app.config['CHECKBOX_MARGIN'] x_label = x + 1 # location of the label y_label = y + margin # remove fontsize from the y label since we draw from the bottom left up box_y = y - box_size # remove the markboxsize because the y is the coord of the top # and reportlab prints from the bottom # check that there is a label to print if (label and not (len(label) == 0)): canvas.setFont(current_app.config['CHECKBOX_FONT'], current_app.config['CHECKBOX_FONT_SIZE']) canvas.drawString(x_label, y_label, label[0]) canvas.rect(x, box_y, box_size, box_size)
def write_tile(i, pos=None, canvas=None): styles = getSampleStyleSheet() styleN = styles['Normal'] styleN.spaceBefore = 10 styleN.spaceAfter = 10 styleN.textColor = white styleH = styles['Heading1'] styleH.textColor = white styleH.alignment = 1 styleN.alignment = 1 canvas.saveState() canvas.setFillColor(red) canvas.rect(spacer + pos[0] * 40 * mm, 5 * mm + pos[1] * 80 * mm, 40 * mm, 80 * mm, fill=1, stroke=1) f = Frame(spacer + pos[0] * 40 * mm, pos[1] * 80 * mm - 5 * mm, 40 * mm, 40 * mm, showBoundary=0) f.addFromList([Paragraph('%i' % i, styleH)], canvas) f = Frame(spacer + pos[0] * 40 * mm, pos[1] * 80 * mm + 35 * mm, 40 * mm, 40 * mm, showBoundary=0) f.addFromList([Paragraph('%i' % i, styleH)], canvas) canvas.restoreState() if pos == (3, 2): canvas.showPage() pos = (0, 0) else: if pos[1] == 2: pos = (pos[0] + 1, 0) else: pos = (pos[0], pos[1] + 1) return pos
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 myLaterPages(self,canvas, doc): canvas.saveState() canvas.setFont('Times-Roman',9) canvas.setStrokeColor('grey') canvas.rect(0.5*inch,0.5*inch, 7.27*inch, 10.6*inch,stroke=1, fill=0) canvas.drawString(PDF.PAGE_WIDTH*0.47, 0.8* inch, "Page %d " % (doc.page-1)) canvas.restoreState()
def _add_page_outline(self, canvas): start_posn = self.start_posn canvas.setLineWidth(2) canvas.rect(cm, cm, PAGE_WIDTH - 2 * cm, PAGE_HEIGHT - 2 * cm) canvas.drawImage(LOGO_PATH, 0.5 * inch, start_posn, height=0.5 * inch, width=1.875 * inch) canvas.setFont('Helvetica-Bold', 24) canvas.drawRightString(PAGE_WIDTH - (0.5 * inch), start_posn + 0.15 * inch, 'REGISTRATION FORM') footer_text = 'This form created on ' footer_text += datetime.now().strftime('%Y-%m-%d %I:%M:%S %p') canvas.setFont('Helvetica', 9) canvas.drawRightString(PAGE_WIDTH - (0.5 * inch), 0.5 * inch, footer_text) self.start_posn = start_posn - 0.4 * inch sales_rep_text = 'BOOKING REP: ' if self.user.first_name or self.user.last_name: sales_rep_text += self.user.first_name + ' ' + self.user.last_name else: sales_rep_text += self.user.username canvas.setFont('Helvetica-Bold', 9.5) canvas.drawString(0.5 * inch, 0.5 * inch, sales_rep_text)
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 printColors(canvas): canvas.setFont("Helvetica",10) y = x = 0; dy=inch*1/2.0; dx=1*inch; w=h=dy/2 rdx=(dx-w)/2; rdy=h/5.0 available_paper = 10*inch for name, color in colors.getAllNamedColors().iteritems(): # for [namedcolor, name] in ( # 'darkseagreen', 'darkslateblue', # [colors.darkblue, 'darkblue'], # [colors.darkcyan, 'darkcyan'], # [colors.darkolivegreen, 'darkolivegreen'], # [colors.cornflower, 'cornflower'], # [colors.orchid, 'orchid'], # [colors.lavenderblush, "lavenderblush"], # [colors.lawngreen, "lawngreen"], # [colors.lemonchiffon, "lemonchiffon"], # [colors.lightblue, "lightblue"], # [colors.lightcoral, "lightcoral"]): canvas.setFillColor(color) canvas.rect(x+rdx, y+rdy, w, h, fill=1) canvas.setFillColor(colors.black) canvas.drawString(x+dx/4 + 1*inch, y+rdy, name) rdy += .2*inch available_paper -= (y+rdy) if available_paper < 1*inch: c.showPage() y = x = 0; dy=inch*1/2.0; dx=1*inch; w=h=dy/2 rdx=(dx-w)/2; rdy=h/5.0 available_paper = 10*inch
def process(self): kwargs = dict(self.getAttributeValues(attrMapping=self.attrMapping)) preserve = kwargs.pop('preserveAspectRatio') show = kwargs.pop('showBoundary') if preserve: imgX, imgY = kwargs['image'].getSize() # Scale image correctly, if width and/or height were specified if 'width' in kwargs and 'height' not in kwargs: kwargs['height'] = imgY * kwargs['width'] / imgX elif 'height' in kwargs and 'width' not in kwargs: kwargs['width'] = imgX * kwargs['height'] / imgY elif 'width' in kwargs and 'height' in kwargs: if float(kwargs['width']) / kwargs['height'] > float( imgX) / imgY: kwargs['width'] = imgX * kwargs['height'] / imgY else: kwargs['height'] = imgY * kwargs['width'] / imgX canvas = attr.getManager(self, interfaces.ICanvasManager).canvas getattr(canvas, self.callable)(**kwargs) if show: width = kwargs.get('width', kwargs['image'].getSize()[0]) height = kwargs.get('height', kwargs['image'].getSize()[1]) canvas.rect(kwargs['x'], kwargs['y'], width, height)
def draw_all_character_row(working_dir, canvas, character_infos, y, guide): #TODO: refactor nrof_row = (len(character_infos) // CHARACTERS_PER_ROW) + 1 PINYIN_HEIGHT = 2 * RADICAL_PINYIN_HEIGHT ROW_HEIGHT = (SQUARE_SIZE + PINYIN_HEIGHT) * nrof_row repeat = 5 if nrof_row > 1 else 10 for t in range(repeat): for index, character_info in enumerate(character_infos): i = index % CHARACTERS_PER_ROW j = index // CHARACTERS_PER_ROW x_ = GRID_OFFSET + i * SQUARE_SIZE y_ = y - j * (SQUARE_SIZE + PINYIN_HEIGHT) pinyin_y = y_ - PINYIN_HEIGHT canvas.rect(x_, y_ - PINYIN_HEIGHT, SQUARE_SIZE, PINYIN_HEIGHT) canvas.rect(x_, y_ - SQUARE_SIZE - PINYIN_HEIGHT, SQUARE_SIZE, SQUARE_SIZE) draw_guide(canvas, x_, y - (j + 1) * PINYIN_HEIGHT - j * SQUARE_SIZE, guide) prefill_character(working_dir, canvas, x_ + SQUARE_PADDING, y - \ SQUARE_PADDING - (j+1)*PINYIN_HEIGHT - \ j*SQUARE_SIZE, character_info.character + '0.png') canvas.setFont(FONT_NAME, FONT_SIZE) # pinyin_size = RADICAL_HEIGHT - 2 *RADICAL_PADDING pinyin = character_info.pinyin[0] pinyin_w = stringWidth(pinyin, FONT_NAME, FONT_SIZE) pinyin_h = FONT_SIZE * 0.8 pinyin_x = x_ + (SQUARE_SIZE - pinyin_w) // 2 pinyin_y = y_ - (pinyin_h + PINYIN_HEIGHT) // 2 canvas.drawString(pinyin_x, pinyin_y, pinyin) # point y to next row y = y - ROW_HEIGHT
def encabezado(canvas,nro,copia=False): from reportlab.lib.colors import white, darkblue,black x=740 canvas.setFillColor(darkblue) canvas.rect(30,x,85,60,fill=True,stroke=False) canvas.setFillColor(white) canvas.setStrokeColor(white) canvas.setFont("Helvetica-Bold", 35) canvas.drawString(40, x+25, "MIS") canvas.setFillColor(white) canvas.setStrokeColor(white) canvas.setFont("Helvetica-Bold", 12) canvas.drawString(37,x+10, "PARAGUAY") canvas.setFillColor(black) canvas.setStrokeColor(black) canvas.setFont("Helvetica-Bold", 11) canvas.drawString(130, x+47, "MIS Implants Paraguay") canvas.drawString(130, x+31, "América 192 c/ Mcal. López") canvas.drawString(130, x+15, "Tel.: +59521 21 213193") canvas.drawString(130, x+2, "www.misimplants.com.py") canvas.setFont("Helvetica-Bold", 18) canvas.drawString(350, x+17, "Nro. "+str(nro))
def draw_corner_boxes(survey, canvas, page): if 0: assert isinstance(canvas, reportlab.pdfgen.canvas.Canvas) width = defs.corner_box_width height = defs.corner_box_height padding = defs.corner_box_padding corner_boxes_positions = [ (defs.corner_mark_left + padding, defs.corner_mark_top + padding), (survey.defs.paper_width - defs.corner_mark_right - padding - width, defs.corner_mark_top + padding), (defs.corner_mark_left + padding, survey.defs.paper_height - defs.corner_mark_bottom - padding - height), (survey.defs.paper_width - defs.corner_mark_right - padding - width, survey.defs.paper_height - defs.corner_mark_bottom - padding - height) ] for i in xrange(4): x, y = corner_boxes_positions[i] canvas.rect(x * mm, y * mm, width * mm, height * mm, fill=corners[page][i])
def show(self, canvas, showframe=None): if self._border_width > 0.0: canvas.saveState() canvas.setStrokeColor(self._border_color) canvas.setLineWidth(self._border_width) if self._border_fill_color.lower() != 'none': canvas.setFillColor(self._border_fill_color) canvas.rect(self.x, self.y, self.width, self.height, stroke=self._border_type, fill=self._fill_border_rect) canvas.restoreState() if self.flowable is not None: self.flowable.width = self.width - (2.0 * self._padding[0]) self.flowable.height = self.height - (2.0 * self._padding[1]) self.flowable.drawOn(canvas, self.x + self._padding[0], self.y - self._padding[1]) if showframe is not None: canvas.saveState() canvas.setLineWidth(showframe[0]) canvas.rect(self.x, self.y, self.width, self.height, stroke=1, fill=showframe[1]) canvas.restoreState() return self
def drawBounds(self, canvas): """Guidelines to help me draw - not needed in production""" canvas.setStrokeColor(colors.red) canvas.rect(-100,-70,200,140) canvas.line(-100,0,100,0) canvas.line(0,70,0,-70) canvas.setStrokeColor(colors.black)
def process(self): kwargs = dict(self.getAttributeValues(attrMapping=self.attrMapping)) preserve = kwargs.pop('preserveAspectRatio') show = kwargs.pop('showBoundary') if preserve: imgX, imgY = kwargs['image'].getSize() # Scale image correctly, if width and/or height were specified if 'width' in kwargs and 'height' not in kwargs: kwargs['height'] = imgY * kwargs['width'] / imgX elif 'height' in kwargs and 'width' not in kwargs: kwargs['width'] = imgX * kwargs['height'] / imgY elif 'width' in kwargs and 'height' in kwargs: if float(kwargs['width'])/kwargs['height'] > float(imgX)/imgY: kwargs['width'] = imgX * kwargs['height'] / imgY else: kwargs['height'] = imgY * kwargs['width'] / imgX canvas = attr.getManager(self, interfaces.ICanvasManager).canvas getattr(canvas, self.callable)(**kwargs) if show: width = kwargs.get('width', kwargs['image'].getSize()[0]) height = kwargs.get('height', kwargs['image'].getSize()[1]) canvas.rect(kwargs['x'], kwargs['y'], width, height)
def show(self, canvas, showframe=None): if self._border_width > 0.0: canvas.saveState() canvas.setStrokeColor(self._border_color) canvas.setLineWidth(self._border_width) if self._border_fill_color.lower() != 'none': canvas.setFillColor(self._border_fill_color) canvas.rect(self.x, self.y, self.width, self.height, stroke=self._border_type, fill=self._fill_border_rect) canvas.restoreState() if self.flowable is not None: self.flowable.width = self.width-(2.0*self._padding[0]) self.flowable.height = self.height-(2.0*self._padding[1]) self.flowable.drawOn(canvas, self.x+self._padding[0], self.y-self._padding[1]) if showframe is not None: canvas.saveState() canvas.setLineWidth(showframe[0]) canvas.rect(self.x, self.y, self.width, self.height, stroke=1, fill=showframe[1]) canvas.restoreState() return self
def _draw_back(self, canvas): # Draw red border self._draw_single_border(canvas, self.WIDTH, self.WIDTH, self.HEIGHT) # Parchment background self._draw_single_background(canvas, self.WIDTH, self.BORDER_BACK, self.WIDTH, self.HEIGHT) # Title canvas.setFillColor("black") title_font_height = self.fonts.set_font(canvas, "title") title_line_bottom = self.HEIGHT - self.BORDER_BACK[ Border.TOP] - self.TITLE_BAR_HEIGHT title_bottom = title_line_bottom + (self.TITLE_BAR_HEIGHT - title_font_height) / 2 canvas.drawCentredString(self.WIDTH + self.BASE_WIDTH / 2, title_bottom, self.title.upper()) # Subtitle subtitle_line_bottom = title_line_bottom - self.STANDARD_BORDER canvas.setFillColor(self.BORDER_COLOR) canvas.rect(self.WIDTH, subtitle_line_bottom, self.BASE_WIDTH, self.STANDARD_BORDER, stroke=0, fill=1) canvas.setFillColor("white") subtitle_font_height = self.fonts.set_font(canvas, "subtitle") subtitle_bottom = subtitle_line_bottom + (self.STANDARD_BORDER - subtitle_font_height) / 2 canvas.drawCentredString(self.WIDTH + self.BASE_WIDTH / 2, subtitle_bottom, self.subtitle)
def header(canvas): """ draws the header part of the document for every page""" canvas.setFont('pala', 9) # 1point = 1/72 inch , 40 points = 0.55 inch canvas.drawString(40, 720, 'PLATINUM FILINGS LLC') canvas.drawString(40, 708, '99 WEST HAWTHORNE AVENUE') canvas.drawString(40, 696, 'SUITE 408') canvas.drawString(40, 684, 'VALLLEY STREAM, NY 11580') canvas.setFont('Helvetica-Bold', 16) canvas.drawString(468, 741.6, 'Invoice') canvas.setFont('Helvetica', 10) #Dynamic line canvas.drawString(468, 725, 'Page 1 of 4') """Invoice date and number box""" canvas.setLineWidth(.3) canvas.rect(378, 648, 223, 36) #horizontal canvas.line(378, 671, 601, 671) #vertical canvas.line(464, 648, 464, 684) canvas.setFont('Helvetica', 9) canvas.drawString(385, 674, 'Invoice Date') canvas.drawString(470, 674, 'Invoice Number') #Dynamic Content canvas.setFont('pala', 9) canvas.drawString(385, 660, 'April 14, 2021') canvas.drawString(470, 660, '2020-5742')
def render(self, canvas, context): canvas.rect(self.left_margin, self.bottom_margin, self.box_width, self.box_height, stroke=1, fill=1) data = [ ('Last name:', context['student']['last_name']), ('Name:', context['student']['first_name']), ('Teacher:', '{} {}'.format(context['teacher']['last_name'], context['teacher']['first_name'])), ('ID:', context['student']['id']), ('School:', context['school']), ] t = Table(data, (30 * mm, self.box_width - 32 * mm), [(self.box_height - 3 * mm) / len(data)] * len(data)) s = TableStyle([ ('FONTSIZE', (0, 0), (-1, -1), 8), ('LEFTPADDING', (0, 0), (0, -1), 13), ('BACKGROUND', (0, 0), (-1, -1), colors.white), ]) t.setStyle(s) f = Frame(self.left_margin, self.bottom_margin, self.box_width, self.box_height, leftPadding=1 * mm, rightPadding=1 * mm, topPadding=2.5 * mm, bottomPadding=0 * mm) f.addFromList([t], canvas)
def draw(self): canvas = self.canv unitWidth = self.style.unitWidth * self.style.unit v_origin = self.height - self.beatsHeight h_offset = self.chartMargin h_loc = 0 v_loc = 0 maxWidth = self.widthInBeats for u in range(maxWidth + 1): y = v_origin x = u * unitWidth + h_offset if u % self.timeSignature == 0: l = self.beatsHeight else: l = self.beatsHeight / 2 canvas.line(x, y, x, y + l) if u == maxWidth: # Avoid writing beat number after the final line break writeText(canvas, self.style, str((u % self.timeSignature) + 1), self.style.beatsFontSize, v_origin + self.beatsHeight, self.width, hpos=x + unitWidth / 2) parsedBlockList = self.wrapBlocks(self.blockList, maxWidth) for b in parsedBlockList: if h_loc == maxWidth: v_loc += 1 h_loc = 0 canvas.rect(h_offset + h_loc * unitWidth, v_origin - ((v_loc + 1) * self.unitHeight), b.length * unitWidth, self.unitHeight) if b.notes is not None: writeText(canvas, self.style, b.notes, self.style.notesFontSize, v_origin - ((v_loc + 1) * self.unitHeight) + (1.3 * self.style.notesFontSize), self.width, hpos=h_offset + ((h_loc + b.length / 2) * unitWidth)) v_offset = ((v_loc * self.unitHeight) + self.unitHeight / 2) - self.style.chordNameFontSize / 2 if b.chord is not None: writeText(canvas, self.style, b.chord.name, self.style.chordNameFontSize, v_origin - v_offset, self.width, hpos=h_offset + ((h_loc + b.length / 2) * unitWidth)) h_loc += b.length
def draw_connector(self, canvas): txt = {'de': 'Anschluss: {0}', 'en': 'Connector: {0}'} txt = txt[self.lang].format(self.connector) canvas.drawString(self.center, self.y, txt) canvas.rect( self._rect_x(self.center), self._rect_y(self.y), self.rect_width, self.rect_height) self.y -= self.y_decrease
def draw_amount(self, canvas): txt = {'de': 'Stückzahl: {0}', 'en': 'Amount: {0}'} txt = txt[self.lang].format(self.amount) canvas.drawString(self.center, self.y, txt) canvas.rect( self._rect_x(self.center), self._rect_y(self.y), self.rect_width, self.rect_height) self.y -= self.y_decrease
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_cable(self, canvas): txt = {'de': 'Kabellänge: {0}', 'en': 'Cablelength: {0}'} txt = txt[self.lang].format(self.cable) canvas.drawString(self.center, self.y, txt) canvas.rect( self._rect_x(self.center), self._rect_y(self.y), self.rect_width, self.rect_height) self.y -= self.y_decrease
def draw_tubelength(self, canvas): txt = {'de': 'Rohrlänge: {0}cm', 'en': 'Tubelength: {0}cm'} txt = txt[self.lang].format(self.tube) canvas.drawString(self.center, self.y, txt) canvas.rect( self._rect_x(self.center), self._rect_y(self.y), self.rect_width, self.rect_height) self.y -= self.y_decrease
def draw_tubeoffset(self, canvas): txt = {'de': 'Rohrüberstand: {0}cm', 'en': 'Clearance: {0}cm'} txt = txt[self.lang].format(self.offset) canvas.drawString(self.center, self.y, txt) canvas.rect( self._rect_x(self.center), self._rect_y(self.y), self.rect_width, self.rect_height) self.y -= self.y_decrease
def draw(self, canvas): super().draw(canvas) canvas.setFillColor(self.BORDER_COLOR) canvas.rect(self.WIDTH * 1.5 - self.STANDARD_BORDER / 2, 0, self.STANDARD_BORDER, self.HEIGHT, stroke=0, fill=1)
def draw_lines(canvas, nib_width, partitions, gap, nrulings, top_margin, pagesize): "Draws lines and separators on the page" line_height = sum((float(x) for x in partitions.split(",")),0.0) # Sum of the ascenders, descenders and body line_height += gap # Add the gap canvas.rect(1*mm, 1*mm, pagesize[0], top_margin * mm * nib_width, stroke = 0, fill = 1) for i in range(nrulings): position = (top_margin * mm * nib_width) + (i * line_height * nib_width * mm) # Margin + position for the current line offset = draw_line_set(canvas, position, nib_width, partitions, pagesize) canvas.rect(1*mm, offset, pagesize[0], gap * nib_width * mm, stroke = 0, fill = 1)
def _customer_rect(self, canvas, doc): canvas.saveState() top = 15.4 * cm left = self.margins['left'] width = self.page_width - self.margins['left'] - self.margins['right'] height = self.block_height canvas.setStrokeColor(red) canvas.setLineWidth(.5) canvas.rect(left, top, width, height, stroke=1) canvas.restoreState()
def pdf_head(canvas, headtext): canvas.setFont("Helvetica-Bold", 16) canvas.drawString(25, 8 * inch, headtext) canvas.setFillColor(colors.orange) canvas.rect(25, 7.8 * inch, 7.5 * inch, 0.12 * inch, fill=1, stroke=0)
def _provider_rect(self, canvas, doc): canvas.saveState() top = 19.7 * cm left = self.margins['left'] width = self.block_width height = self.block_height canvas.setStrokeColor(red) canvas.setLineWidth(.5) canvas.rect(left, top, width, height, stroke=1) canvas.restoreState()
def drawBackground(self, canvas): underkant = 5.0/6.0 * inch # a4 format spec: # http://www.cl.cam.ac.uk/~mgk25/iso-paper.html # 210 x 297 # faktura spek: # Norsk Standard Skjema F60-1 # url: http://code.google.com/p/finfaktura/issues/detail?id=38 canvas.saveState() canvas.setFillColor(yellow) # Yellow bits; skipping the receipt area. # Lag de gule feltene #canvas.rect(0*mm, 101*mm, 210*mm, 21*mm, stroke=0, fill=1) canvas.rect(0*mm, 33*mm, 210*mm, 9*mm, stroke=0, fill=1) canvas.rect(0*mm, 14*mm, 210*mm, 2*mm, stroke=0, fill=1) canvas.setFillColor(white) # Legg de hvite feltene oppå for "gjennomsiktighet" canvas.rect(80*mm, 103*mm, 36*mm, 9*mm, stroke=0, fill=1) # beløp canvas.rect(126*mm, 103*mm, 40*mm, 9*mm, stroke=0, fill=1) # betalerens kontonummer canvas.rect(170*mm, 103*mm, 31*mm, 9*mm, stroke=0, fill=1) # blankettnummer canvas.restoreState() # skillelinjer for KID canvas.lines([(9*mm, 16*mm, 9*mm, 30*mm), (80*mm, 16*mm, 80*mm, 30*mm)]) # blankettnummer #canvas.setFont("Courier", 10) #blankettnr = "xxxxxxx" #canvas.drawString(173*mm, 105*mm, blankettnr) #canvas.drawString(173*mm, underkant, blankettnr) # Lag klammer for kontrollsiffer til sum. canvas.drawString(115*mm, underkant, "<") canvas.drawString(125*mm, underkant, ">") # Lag tekst som beskriver feltene. canvas.setFont("Helvetica-Bold", 6) canvas.drawString(15*mm, 98*mm, "Betalingsinformasjon") canvas.drawString(10*mm,30*mm,"Kundeidentifikasjon (KID)") canvas.drawString(82*mm,30*mm,"Kroner") canvas.drawString(107*mm,30*mm,"Øre") canvas.drawString(133*mm,30*mm,"Til konto") canvas.drawString(172*mm,30*mm,"Blankettnummer") canvas.drawString(150*mm,98*mm,"Betalings-") canvas.drawString(150*mm,95*mm,"frist") # Lag hjørneklammer rundt alle tekstfelt self.markField(canvas, 12*mm,64*mm, 86*mm, -21*mm, "Betalt av") self.markField(canvas, 110*mm,64*mm, 86*mm, -21*mm, "Betalt til") self.markField(canvas, 110*mm,89*mm, 86*mm, -19*mm, "Underskrift ved girering") self.markField(canvas, 166*mm,99*mm, 30*mm, -6*mm) # Betalingsfrist. # Add the all-important "GIRO" text. It seems to do wonders for the recognition. canvas.setFont('Helvetica-Bold', 14) canvas.drawString(110*mm, 98*mm, "GIRO")
def write_tile(values=None, conversion_cost=None, front_img=None, back_img=None, pos=None, canvas=None): styles = getSampleStyleSheet() styleN = styles['Normal'] styleN.spaceBefore = 10 styleN.spaceAfter = 10 styleN.textColor = black styleH = styles['Heading1'] styleH.textColor = black styleH.alignment = 1 styleN.alignment = 1 canvas.saveState() canvas.rect(spacer + pos[0] * 47 * mm, 5 * mm + pos[1] * 94 * mm, 47 * mm, 94 * mm, fill=0, stroke=1) #canvas.drawImage(front_img, spacer + pos[0] * 47 * mm, 5 * mm + pos[1] * 94 * mm + 47 * mm, 47 * mm, 47 * mm) #if back_img is not None: #canvas.drawImage(back_img, spacer + pos[0] * 47 * mm, 5 * mm + pos[1] * 94 * mm, 47 * mm, 47 * mm) f = Frame(spacer + pos[0] * 47 * mm, pos[1] * 94 * mm - 5 * mm, 47 * mm, 47 * mm, showBoundary=0) if values is not None: table = Table(values, style=[('TEXTCOLOR', (0, 0), (1, 2), black), ('SIZE', (0, 0), (1, 2), 14)]) f.addFromList([table], canvas) f = Frame(spacer + pos[0] * 47 * mm, pos[1] * 94 * mm + 35 * mm, 47 * mm, 47 * mm, showBoundary=0) if conversion_cost is not None: f.addFromList([Paragraph('%s' % conversion_cost, styleH)], canvas) canvas.restoreState() if pos == (2, 2): canvas.showPage() pos = (0, 0) else: if pos[1] == 2: pos = (pos[0] + 1, 0) else: pos = (pos[0], pos[1] + 1) return pos
def draw(self, canvas, split): super().draw(canvas, split) canvas.setFillColor(self.border_color) canvas.rect( self.width * 1.5 - self.STANDARD_BORDER / 2, 0, self.STANDARD_BORDER, self.height, stroke=0, fill=1, )
def _add_registration_details(self, canvas): start_posn = self.start_posn reg_detail_dict = {t[0]: t[1] for t in REG_STATUS_OPTIONS} canvas.setFillColor(colors.blue) canvas.setFont('Helvetica', 10) canvas.drawString(0.5 * inch, start_posn, 'Section D: Registration Details') canvas.setLineWidth(1) canvas.setFillColor(colors.black) canvas.rect(0.5 * inch, start_posn - 1.3 * inch, PAGE_WIDTH - inch, 1.2 * inch) canvas.line(2.5 * inch, start_posn - 1.3 * inch, 2.5 * inch, start_posn - 0.1 * inch) canvas.drawString(0.7 * inch, start_posn - 0.3 * inch, 'Registration Status:') canvas.drawString(2.7 * inch, start_posn - 0.3 * inch, reg_detail_dict[self.details['registration_status']]) canvas.line(0.5 * inch, start_posn - 0.4 * inch, PAGE_WIDTH - 0.5 * inch, start_posn - 0.4 * inch) canvas.drawString(0.7 * inch, start_posn - 0.6 * inch, 'Pre-Tax Price:') try: price = float(self.details['pre_tax_price']) gst, hst, qst, inv_total = self._calculate_tax_total(price) price = '${:0,.2f}'.format(price) except ValueError: if self.details['pre_tax_price'] == '': price = gst = hst = qst = inv_total = '$0.00' else: price = 'ERROR: Price Entered Incorrectly' gst = hst = qst = inv_total = '?????' canvas.drawString(2.7 * inch, start_posn - 0.6 * inch, price) canvas.line(0.5 * inch, start_posn - 0.7 * inch, PAGE_WIDTH - 0.5 * inch, start_posn - 0.7 * inch) canvas.drawString(0.7 * inch, start_posn - 0.9 * inch, 'Taxes:') tax_info = '' if self.event.gst_charged: tax_info += 'GST: ' + gst + ' / ' if self.event.hst_charged: tax_info += 'HST: ' + hst + ' / ' if self.event.qst_charged: tax_info += 'QST: ' + qst + ' / ' if len(tax_info) > 0: tax_info = tax_info[:-3] else: tax_info = 'No tax charged' canvas.drawString(2.7 * inch, start_posn - 0.9 * inch, tax_info) canvas.line(0.5 * inch, start_posn - 1.0 * inch, PAGE_WIDTH - 0.5 * inch, start_posn - 1.0 * inch) canvas.setFont('Helvetica-Bold', 10) canvas.drawString(0.7 * inch, start_posn - 1.2 * inch, 'Total Invoice:') canvas.drawString(2.7 * inch, start_posn - 1.2 * inch, inv_total) self.start_posn = start_posn - 1.55 * inch
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_codebox(canvas, x, y, code): if 0: assert isinstance(canvas, reportlab.pdfgen.canvas.Canvas) size = defs.codebox_step * mm length = defs.codebox_length # 2 Bytes canvas.saveState() canvas.translate(x, y) canvas.rect(0, 0, defs.codebox_width * mm, defs.codebox_height * mm) for i in range(length): if code & (1 << i): canvas.rect((length - i - 1) * size, 0, size, defs.codebox_height * mm, stroke=1, fill=1) canvas.restoreState()
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 draw(self, canvas, x=0, y=0): for row, col in self._matrix: xr = (col + self.border) * self.box_size yr = (row + self.border) * self.box_size xr, yr = yr, -xr yr += self.size - self.box_size canvas.rect(xr + x, yr + y, self.box_size, self.box_size, stroke=0, fill=1)
def render(self, canvas, context): canvas.rect(self.left_margin, self.bottom_margin, self.box_width, self.box_height, stroke=0, fill=1) canvas.setFillColor(colors.black) canvas.drawString( self.left_margin + 2 * mm, self.bottom_margin + 2 * mm, 'ID: {}'.format(context['student']['id'])) canvas.drawRightString( self.left_margin + self.box_width - 2 * mm, self.bottom_margin + 2 * mm, '(Seite {})'.format(context['page_num']))
def _totals_rect(self, canvas, doc): canvas.saveState() top = 3.8 * cm left = self.page_width - self.margins['right'] - self.block_width width = self.block_width height = self.block_height - 1 * cm canvas.setStrokeColor(red) canvas.setLineWidth(.5) canvas.rect(left, top, width, height, stroke=1) canvas.setFillColor(red) canvas.rect(left, top, width - self.column_width * 2, height, fill=1) 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 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 _add_registration_details(self, canvas): start_posn = self.start_posn reg_detail_dict = {t[0]:t[1] for t in REG_STATUS_OPTIONS} canvas.setFillColor(colors.blue) canvas.setFont('Helvetica', 10) canvas.drawString(0.5*inch, start_posn, 'Section D: Registration Details') canvas.setLineWidth(1) canvas.setFillColor(colors.black) canvas.rect(0.5*inch, start_posn-1.3*inch, PAGE_WIDTH-inch, 1.2*inch) canvas.line(2.5*inch, start_posn-1.3*inch, 2.5*inch, start_posn-0.1*inch) canvas.drawString(0.7*inch, start_posn-0.3*inch, 'Registration Status:') canvas.drawString(2.7*inch, start_posn-0.3*inch, reg_detail_dict[self.details['registration_status']]) canvas.line(0.5*inch, start_posn-0.4*inch, PAGE_WIDTH-0.5*inch, start_posn-0.4*inch) canvas.drawString(0.7*inch, start_posn-0.6*inch, 'Pre-Tax Price:') try: price = float(self.details['pre_tax_price']) gst, hst, qst, inv_total = self._calculate_tax_total(price) price = '${:0,.2f}'.format(price) except ValueError: if self.details['pre_tax_price'] == '': price = gst = hst = qst = inv_total = '$0.00' else: price = 'ERROR: Price Entered Incorrectly' gst = hst = qst = inv_total = '?????' canvas.drawString(2.7*inch, start_posn-0.6*inch, price) canvas.line(0.5*inch, start_posn-0.7*inch, PAGE_WIDTH-0.5*inch, start_posn-0.7*inch) canvas.drawString(0.7*inch, start_posn-0.9*inch, 'Taxes:') tax_info = '' if self.event.gst_charged: tax_info += 'GST: ' + gst + ' / ' if self.event.hst_charged: tax_info += 'HST: ' + hst + ' / ' if self.event.qst_charged: tax_info += 'QST: ' + qst + ' / ' if len(tax_info) > 0: tax_info = tax_info[:-3] else: tax_info = 'No tax charged' canvas.drawString(2.7*inch, start_posn-0.9*inch, tax_info) canvas.line(0.5*inch, start_posn-1.0*inch, PAGE_WIDTH-0.5*inch, start_posn-1.0*inch) canvas.setFont('Helvetica-Bold', 10) canvas.drawString(0.7*inch, start_posn-1.2*inch, 'Total Invoice:') canvas.drawString(2.7*inch, start_posn-1.2*inch, inv_total) self.start_posn = start_posn - 1.55 * inch
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 printBandOutline(self, canvas, text): """ Draw a dotted rectangle around the entire band, and type a small faded caption at the origin of the band. """ canvas.saveState() canvas.setLineWidth(0.1) canvas.setStrokeColorRGB(0.8, 0.5, 0.7) canvas.setDash(1, 2) canvas.rect(self.x, self.y, self.width, self.height) canvas.setFont("Helvetica", 8) canvas.setFillColor((0.6, 0.8, 0.7)) canvas.drawString(self.x, self.y, text) 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 draw_summary(self, canvas): txt = {'de': 'Ihre Messpunkte:', 'en': 'Your measuring points:'} canvas.drawString(self.center, self.y, txt[self.lang]) self.y -= self.y_decrease for i in self.summary: text = "{0}. {1}cm".format(self.summary.index(i) + 1, i) canvas.drawString(self.center_indented, self.y, text) self.y -= self.y_decrease_small canvas.rect( self._rect_x(self.center), self._rect_y(self.y + self.y_decrease_small), self.rect_width, self.rect_height+(len(self.summary)*self.y_decrease_small) + self.y_decrease) self.y -= 10
def draw_linear_width_markers(canvas, nw, pagesize): "Draws markers on the right and left indicating pen nib widths" for i in range(0, int(300/nw)): if i%2 == 0: canvas.rect(1*mm, i*nw*mm, 2*mm, nw*mm, stroke = 0, fill = 1) canvas.rect(pagesize[0]-4*mm, i*nw*mm, 2*mm, nw*mm, stroke = 0, fill = 1) else: canvas.rect(3*mm, i*nw*mm ,2*mm, nw*mm, stroke = 0, fill = 1) canvas.rect(pagesize[0]-2*mm, i*nw*mm, 2*mm, nw*mm, stroke = 0, fill = 1)
def draw_parts(self, canvas): txt = {'de': 'Verbaute Teile:', 'en': 'Installed parts:'} canvas.drawString(self.center, self.y, txt[self.lang]) self.y -= self.y_decrease partsdict = { 'probe': {'de': u'PICO-T3P', 'en': u'PICO-T3P'}, 'spacer10': {'de': u'Platzhalter 10cm', 'en': u'Spacer 10cm'}, 'spacer30': {'de': u'Platzhalter 30cm', 'en': u'Spacer 30cm'}, 'spacer80': {'de': u'Platzhalter 80cm', 'en': u'Spacer 80cm'} } for i in sorted(self.parts): text = '{0} x {1}'.format(self.parts[i], partsdict[i][self.lang]) canvas.drawString(self.center_indented, self.y, text) self.y -= self.y_decrease canvas.rect( self._rect_x(self.center), self._rect_y(self.y + self.y_decrease), self.rect_width, self.rect_height*(len(self.parts)+1))
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 # 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 drawOn(self, canvas, x, y, _sW=0): "Tell it to draw itself on the canvas. Do not override" if _sW and hasattr(self,'hAlign'): a = self.hAlign if a in ['CENTER','CENTRE']: x = x + 0.5*_sW elif a == 'RIGHT': x = x + _sW elif a != 'LEFT': raise ValueError, "Bad hAlign value "+str(a) canvas.saveState() canvas.translate(x, y) self._drawOn(canvas) if hasattr(self, '_showBoundary') and self._showBoundary: #diagnostic tool support canvas.setStrokeColor(gray) canvas.rect(0,0,self.width, self.height) canvas.restoreState()