コード例 #1
0
 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)
コード例 #2
0
ファイル: rlutils.py プロジェクト: kelvin0/PyXML2PDF
	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
コード例 #3
0
ファイル: pdf_exporter.py プロジェクト: HaraldFranzen/gourmet
 def draw_half_star (self, inner_length=1*inch, outer_length=2*inch, points=5, origin=None):
     canvas = self.canv
     canvas.setLineWidth(0)
     if not origin: canvas.translate(self.size*0.5,self.size*0.5)
     else: canvas.translate(*origin)
     canvas.setFillColor(self.fillcolor)
     canvas.setStrokeColor(self.strokecolor)
     p = canvas.beginPath()
     inner = False # Start on top
     is_origin = True
     #print 'Drawing star with radius',outer_length,'(moving origin ',origin,')'
     for theta in range(0,360,360/(points*2)):
         if 0 < theta < 180: continue
         if inner: r = inner_length
         else: r = outer_length
         x = (math.sin(math.radians(theta)) * r)
         y = (math.cos(math.radians(theta)) * r)
         #print 'POINT:',x,y
         if is_origin:
             p.moveTo(x,y)
             is_origin = False
         else:
             p.lineTo(x,y)
         inner = not inner
     p.close()
     canvas.drawPath(p,fill=1)
コード例 #4
0
ファイル: rlutils.py プロジェクト: ratthananp/PyXML2PDF
    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
コード例 #5
0
 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()
コード例 #6
0
    def draw_text_bottom(canvas, text, fontsize=60):
        def get_center_x_coord(text, fontName, fontsize):
            strwidth = stringWidth(text, fontName, fontsize)
            x = (width - strwidth) / 2
            return x

        fontName = "Helvetica-Bold"
        maxWidth = 0.8 * width
        canvas.setFillColor(black)
        canvas.setStrokeColor(black)
        canvas.setFont(fontName, fontsize)
        lines = simpleSplit(text, fontName, fontsize, maxWidth)
        if (len(lines) > 1):
            draw_text_bottom(canvas, text, fontsize * 0.9)
        else:
            y = 170
            canvas.drawString(get_center_x_coord(text, fontName, fontsize), y,
                              text)
            # Smaller text
            fontName = "Helvetica"
            fontsize = 20
            canvas.setFont(fontName, fontsize)
            text = "Asp-lunch Tisdag Lv1"
            y = y - 30
            canvas.drawString(get_center_x_coord(text, fontName, fontsize), y,
                              text)
            text = "12:00 i FB"
            y = y - fontsize - 5
            canvas.drawString(get_center_x_coord(text, fontName, fontsize), y,
                              text)
            text = "Tas ned den 11/12"
            y = fontsize
            canvas.drawString(get_center_x_coord(text, fontName, fontsize), y,
                              text)
コード例 #7
0
ファイル: gen.py プロジェクト: lucivpav/cwg
def draw_guide(canvas, x, y, guide, working_dir, character_info):
    if guide == Guide.CHARACTER:
        prefill_character(working_dir, canvas, x + SQUARE_PADDING, \
                            y - SQUARE_PADDING, \
                            character_info.character + '0.png')
        return

    canvas.setDash(1, 2)
    canvas.setStrokeColor(CMYKColor(0, 0, 0, 0.2))

    if guide == Guide.STAR or guide == Guide.CROSS_STAR:
        x1 = x
        y1 = y
        x2 = x1 + SQUARE_SIZE
        y2 = y - SQUARE_SIZE
        canvas.line(x1, y1, x2, y2)
        canvas.line(x2, y1, x1, y2)
    if guide == Guide.CROSS or guide == Guide.CROSS_STAR:
        x1 = x
        y1 = y - SQUARE_SIZE / 2
        x2 = x1 + SQUARE_SIZE
        y2 = y1
        canvas.line(x1, y1, x2, y2)
        x1 = x + SQUARE_SIZE / 2
        y1 = y
        x2 = x1
        y2 = y1 - SQUARE_SIZE
        canvas.line(x1, y1, x2, y2)

    canvas.setDash()
    canvas.setStrokeColor(CMYKColor(0, 0, 0, 1))
コード例 #8
0
 def draw_star(self,
               inner_length=1 * inch,
               outer_length=2 * inch,
               points=5,
               origin=None):
     canvas = self.canv
     canvas.setLineWidth(0)
     if not origin: canvas.translate(self.size * 0.5, self.size * 0.5)
     else: canvas.translate(*origin)
     canvas.setFillColor(self.fillcolor)
     canvas.setStrokeColor(self.strokecolor)
     p = canvas.beginPath()
     inner = False  # Start on top
     is_origin = True
     #print 'Drawing star with radius',outer_length,'(moving origin ',origin,')'
     for theta in range(0, 360, 360 / (points * 2)):
         if inner: r = inner_length
         else: r = outer_length
         x = (math.sin(math.radians(theta)) * r)
         y = (math.cos(math.radians(theta)) * r)
         #print 'POINT:',x,y
         if is_origin:
             p.moveTo(x, y)
             is_origin = False
         else:
             p.lineTo(x, y)
         inner = not inner
     p.close()
     canvas.drawPath(p, fill=1)
コード例 #9
0
def title(canvas, doc):
    canvas.saveState()

    lemma_img = 'L:/resources/code/models/accuracy_assessment/report/images/'
    lemma_img += 'lemma_logo.gif'

    # Page background
    canvas.setStrokeColor(colors.black)
    canvas.setLineWidth(1)
    canvas.setFillColor('#e6ded5')
    canvas.roundRect(0.5 * u.inch,
                     0.5 * u.inch,
                     7.5 * u.inch,
                     10.0 * u.inch,
                     0.15 * u.inch,
                     stroke=1,
                     fill=1)

    # Page banner - image
    canvas.drawImage(lemma_img,
                     0.5 * u.inch,
                     7.5 * u.inch,
                     width=7.5 * u.inch,
                     height=3 * u.inch,
                     mask='auto')

    canvas.restoreState()
コード例 #10
0
ファイル: gen.py プロジェクト: rbadin/cwg
def draw_guide(canvas, x, y, guide):
    canvas.setDash(1, 2)
    canvas.setStrokeColor(CMYKColor(0, 0, 0, 0.2))

    if guide == Guide.STAR:
        x1 = x
        y1 = y
        x2 = x1 + SQUARE_SIZE
        y2 = y - SQUARE_SIZE
        canvas.line(x1, y1, x2, y2)
        canvas.line(x2, y1, x1, y2)
    elif guide == Guide.CROSS:
        x1 = x
        y1 = y - SQUARE_SIZE / 2
        x2 = x1 + SQUARE_SIZE
        y2 = y1
        canvas.line(x1, y1, x2, y2)
        x1 = x + SQUARE_SIZE / 2
        y1 = y
        x2 = x1
        y2 = y1 - SQUARE_SIZE
        canvas.line(x1, y1, x2, y2)

    canvas.setDash()
    canvas.setStrokeColor(CMYKColor(0, 0, 0, 1))
コード例 #11
0
ファイル: mark.py プロジェクト: GaretJax/pdfedit
 def get_canvas(self, packet):
     canvas = super(AnswerSheetMask, self).get_canvas(packet)
     canvas.setStrokeColor(colors.black)
     canvas.setFillColor(colors.white)
     canvas.setLineWidth(0.2 * mm)
     canvas.setFont('Helvetica', 8)
     return canvas
コード例 #12
0
ファイル: customshapes.py プロジェクト: roytest001/PythonCode
 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)
コード例 #13
0
def piePagina(canvas, doc):
	canvas.saveState()
	canvas.setFillColor('#666666')
	canvas.setFont('Helvetica', 8)
	canvas.setStrokeColor('#ABAAAB')
	canvas.line(A4[0] - 800, A4[1] - 818, A4[0] - 0, A4[1] - 818)
	canvas.drawString(275, A4[1] - 835, "Pag. %d" % doc.page)
	# canvas.drawString( 20,  A4[1]-835, 'Codigo: '+form['data']['header']['code'])
	canvas.restoreState()
コード例 #14
0
 def myLaterPages(canvas, doc):
     from reportlab.lib.colors import red
     PAGE_HEIGHT = canvas._pagesize[1]
     canvas.saveState()
     canvas.setStrokeColor(red)
     canvas.setLineWidth(5)
     canvas.line(66,72,66,PAGE_HEIGHT-72)
     canvas.setFont(_baseFontName,12)
     canvas.drawString(4 * inch, 0.75 * inch, "Page %d" % doc.page)
     canvas.restoreState()
コード例 #15
0
ファイル: doctemplate.py プロジェクト: commtrack/commcare-hq
 def myLaterPages(canvas, doc):
     from reportlab.lib.colors import red
     PAGE_HEIGHT = canvas._pagesize[1]
     canvas.saveState()
     canvas.setStrokeColor(red)
     canvas.setLineWidth(5)
     canvas.line(66,72,66,PAGE_HEIGHT-72)
     canvas.setFont('Times-Roman',12)
     canvas.drawString(4 * inch, 0.75 * inch, "Page %d" % doc.page)
     canvas.restoreState()
コード例 #16
0
 def draw_circle(self, x, y, r):
     # Test...
     canvas = self.canv
     canvas.setLineWidth(0)
     canvas.setStrokeColor(colors.grey)
     canvas.setFillColor(colors.grey)
     p = canvas.beginPath()
     p.circle(x, y, r)
     p.close()
     canvas.drawPath(p, fill=1)
コード例 #17
0
ファイル: utils.py プロジェクト: guobot-code/django-invoices
 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()
コード例 #18
0
ファイル: utils.py プロジェクト: guobot-code/django-invoices
 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()
コード例 #19
0
ファイル: pdf_exporter.py プロジェクト: HaraldFranzen/gourmet
 def draw_circle (self, x, y, r):
     # Test...
     canvas = self.canv
     canvas.setLineWidth(0)        
     canvas.setStrokeColor(colors.grey)
     canvas.setFillColor(colors.grey)        
     p = canvas.beginPath()
     p.circle(x,y,r)
     p.close()
     canvas.drawPath(p,fill=1)
コード例 #20
0
def header(canvas, DOC, MAPHEADERTEXT):
    """Draws the page header"""
    arcpy.AddMessage("Drawing Header...")
    canvas.saveState()
    header_top_padding = 1 * cm
    logo_image_height = 50
    logo_header_gap = 0.75 * cm
    indent_right = 40
    docy = PAGE_HEIGHT - 60

    style_header = getSampleStyleSheet()
    style_header.add(
        ParagraphStyle(name='BodyT',
                       alignment=TA_LEFT,
                       borderPadding=(5, 10, 10),
                       fontName='Vera',
                       fontSize=14,
                       spaceAfter=6,
                       backColor=Color(0, 0.2627450980392157,
                                       0.42745098039215684, 1),
                       textColor=Color(1, 1, 1, 1)))
    para = Paragraph(MAPHEADERTEXT, style_header["BodyT"])

    logo_image_width, imageheight = ImageReader(IMAGE).getSize()

    aspect_ratio = imageheight / (float(logo_image_width))
    reduceby = 0.1

    while logo_image_height <= imageheight:
        logo_image_width = logo_image_width - reduceby
        imageheight = logo_image_width * aspect_ratio
        reduceby += 0.1

    para_width_total, para_height = para.wrap(
        DOC.width + 0.70 * inch - logo_image_width - logo_header_gap,
        DOC.topMargin + 0.5 * inch)

    logo_y = ((para_height + imageheight) / 2) + header_top_padding
    canvas.drawImage(ImageReader(IMAGE),
                     indent_right,
                     PAGE_HEIGHT - logo_y,
                     logo_image_width,
                     imageheight,
                     mask='auto')

    para_y = para_height + header_top_padding

    para.drawOn(canvas,
                (indent_right + 0.1 * cm + logo_image_width + logo_header_gap),
                (PAGE_HEIGHT - para_y))

    canvas.setLineWidth(1.0)
    canvas.setStrokeColor(Color(0, 0.2627450980392157, 0.42745098039215684, 1))
    canvas.line(indent_right, docy, (PAGE_WIDTH - indent_right), docy)
    canvas.restoreState()
コード例 #21
0
def encabezado(canvas, doc):
	canvas.saveState()
	#canvas.drawImage(app_home + 'logo1.png', 15, 800, width=140, height=29, mask='auto')
	# canvas.drawImage(current_app.config["APP_PATH"] + '/src/etc/img/' + 'logo2.png', 430, 800, width=140, height=25, mask='auto')
	canvas.setStrokeColor('#ABAAAB')
	canvas.line(A4[0] - 700, A4[1] - 53, A4[0] - 0, A4[1] - 53)
	canvas.setFillColor('#666666')
	canvas.setFont('Helvetica', 20) 
	# canvas.drawString(10, A4[1] - 77, form['data']['header']['name'])
	canvas.line(A4[0] - 700, A4[1] - 90, A4[0] - 0, A4[1] - 90)
	canvas.restoreState()
コード例 #22
0
ファイル: utils.py プロジェクト: guobot-code/django-invoices
 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()
コード例 #23
0
ファイル: doctemplate.py プロジェクト: commtrack/commcare-hq
 def myFirstPage(canvas, doc):
     from reportlab.lib.colors import red
     PAGE_HEIGHT = canvas._pagesize[1]
     canvas.saveState()
     canvas.setStrokeColor(red)
     canvas.setLineWidth(5)
     canvas.line(66,72,66,PAGE_HEIGHT-72)
     canvas.setFont('Times-Bold',24)
     canvas.drawString(108, PAGE_HEIGHT-108, "TABLE OF CONTENTS DEMO")
     canvas.setFont('Times-Roman',12)
     canvas.drawString(4 * inch, 0.75 * inch, "First Page")
     canvas.restoreState()
コード例 #24
0
 def myFirstPage(canvas, doc):
     from reportlab.lib.colors import red
     PAGE_HEIGHT = canvas._pagesize[1]
     canvas.saveState()
     canvas.setStrokeColor(red)
     canvas.setLineWidth(5)
     canvas.line(66,72,66,PAGE_HEIGHT-72)
     canvas.setFont(_baseFontNameB,24)
     canvas.drawString(108, PAGE_HEIGHT-108, "TABLE OF CONTENTS DEMO")
     canvas.setFont(_baseFontName,12)
     canvas.drawString(4 * inch, 0.75 * inch, "First Page")
     canvas.restoreState()
コード例 #25
0
ファイル: views.py プロジェクト: Axelio/Umail
def firma_actasIntegrales(canvas, doc):
    ##########-------------------- Pie de Pagina del reporte ###########
    canvas.saveState()
    canvas.setStrokeColor(black)
    canvas.setFont("Helvetica-BoldOblique",6.5)
    canvas.drawString(2.7*inch, 2.37*cm, 'Firma y Sello Decanato')
    canvas.drawString(4.35*inch, 2.37*cm, 'Firma y Sello Coordinación')
    #canvas.drawString(9.3*cm, 2.37*cm, 'Profesor:')
    #canvas.drawString(15*cm, 2.37*cm, u'Cédula:')
    #canvas.drawString(11.3*cm, 1.0*cm, 'Firma')
    #canvas.drawString(15*cm, 1.0*cm, 'Fecha')
    canvas.grid([2.3*inch, 4.1*inch, 5.8*inch], [0.23*inch, 1.06*inch])
    canvas.restoreState()
コード例 #26
0
ファイル: utils.py プロジェクト: guobot-code/django-invoices
 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()
コード例 #27
0
def genSinglePageNameTag(canvas, data):
    print 'new page!'
    xcoords = [54, 306]
    ycoords = [76, 236, 396, 556]

    for x in xcoords:
        for y in ycoords:
            if data:
                datum = data.pop(0)
                genSingleNameTag(canvas, datum, x, y)
            else:
                break
    canvas.setStrokeColor(black)
    canvas.grid([54, 306, 558], [76, 236, 396, 556, 716])
コード例 #28
0
ファイル: views.py プロジェクト: axeliodiaz/Umail
def firma_actasIntegrales(canvas, doc):
    ##########-------------------- Pie de Pagina del reporte ###########
    canvas.saveState()
    canvas.setStrokeColor(black)
    canvas.setFont("Helvetica-BoldOblique", 6.5)
    canvas.drawString(2.7 * inch, 2.37 * cm, 'Firma y Sello Decanato')
    canvas.drawString(4.35 * inch, 2.37 * cm, 'Firma y Sello Coordinación')
    #canvas.drawString(9.3*cm, 2.37*cm, 'Profesor:')
    #canvas.drawString(15*cm, 2.37*cm, u'Cédula:')
    #canvas.drawString(11.3*cm, 1.0*cm, 'Firma')
    #canvas.drawString(15*cm, 1.0*cm, 'Fecha')
    canvas.grid([2.3 * inch, 4.1 * inch, 5.8 * inch],
                [0.23 * inch, 1.06 * inch])
    canvas.restoreState()
コード例 #29
0
def landscape(canvas, doc):
    canvas.saveState()

    # Page background
    canvas.setStrokeColor(colors.black)
    canvas.setLineWidth(1)
    canvas.setFillColor('#e6ded5')
    canvas.roundRect(0.5 * u.inch,
                     0.5 * u.inch,
                     10.0 * u.inch,
                     7.5 * u.inch,
                     0.15 * u.inch,
                     stroke=1,
                     fill=1)
    canvas.restoreState()
コード例 #30
0
def header(canvas, DOC, MAPHEADERTEXT):
    """Draws the page header"""
    arcpy.AddMessage("Drawing Header...")
    canvas.saveState()
    header_top_padding = 1*cm
    logo_image_height = 50
    logo_header_gap = 0.75*cm
    indent_right = 40
    docy = PAGE_HEIGHT-60

    style_header = getSampleStyleSheet()
    style_header.add(ParagraphStyle(name='BodyT', alignment=TA_LEFT,
                                    borderPadding=(5, 10, 10), fontName='Vera',
                                    fontSize=14, spaceAfter=6,
                                    backColor=Color(0, 0.2627450980392157,
                                                    0.42745098039215684, 1),
                                    textColor=Color(1, 1, 1, 1)))
    para = Paragraph(MAPHEADERTEXT, style_header["BodyT"])

    logo_image_width, imageheight = ImageReader(IMAGE).getSize()

    aspect_ratio = imageheight/(float(logo_image_width))
    reduceby = 0.1

    while logo_image_height <= imageheight:
        logo_image_width = logo_image_width - reduceby
        imageheight = logo_image_width*aspect_ratio
        reduceby += 0.1

    para_width_total, para_height = para.wrap(DOC.width + 0.70*inch
                                              - logo_image_width
                                              - logo_header_gap,
                                              DOC.topMargin + 0.5 *inch)

    logo_y = ((para_height + imageheight) / 2) + header_top_padding
    canvas.drawImage(ImageReader(IMAGE), indent_right, PAGE_HEIGHT-logo_y,
                     logo_image_width, imageheight, mask='auto')

    para_y = para_height + header_top_padding

    para.drawOn(canvas,
                (indent_right+ 0.1*cm + logo_image_width + logo_header_gap),
                (PAGE_HEIGHT - para_y))

    canvas.setLineWidth(1.0)
    canvas.setStrokeColor(Color(0, 0.2627450980392157, 0.42745098039215684, 1))
    canvas.line(indent_right, docy, (PAGE_WIDTH - indent_right), docy)
    canvas.restoreState()
コード例 #31
0
 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()
コード例 #32
0
    def add(self, flowable, canvas, trySplit=0):
        result = Frame.add(self, flowable, canvas, trySplit=trySplit)
        if result == 0:
            return result
        
        # Slight hack: we're assuming that trySplit==0 iff this flowable
        # is an already-split portion of another flowable. So we don't want
        # to draw a line below it, since it's not the end of an entry.
        # This assumes that this frame's parent doctemplate allowSplitting
        # has not been changed from the default.
        if trySplit == 0:
            return result

        canvas.saveState()
        canvas.setStrokeColor(colors.gray)
        fudge = flowable.getSpaceAfter() / 2.0
        canvas.line(self._x, self._y + fudge, self._x + self.width, self._y + fudge)
        canvas.restoreState()
        return result
コード例 #33
0
def footer(canvas, DOC):
    """Draws the page footer"""
    arcpy.AddMessage("Drawing Footer...")
    canvas.saveState()
    canvas.setFont("Vera", 7.5)

    text = MAPHEADERTEXT
    date_now = datetime.datetime.now()
    date_formatted = (str(time.strftime("%b")) + " " + str(date_now.day) +
                      ", " + str(date_now.year))
    canvas.drawRightString(DOC.width - (DOC.rightMargin - 2.35 * inch),
                           0.5 * DOC.bottomMargin, date_formatted)
    canvas.setFillGray(0.70)
    canvas.drawString(DOC.leftMargin - 25, 0.5 * DOC.bottomMargin, text)
    canvas.setLineWidth(2)
    canvas.setStrokeColor(Color(0, 0.2627450980392157, 0.42745098039215684, 1))
    pagex = 47.5
    pagey = 0.75 * DOC.bottomMargin
    canvas.line(pagex, pagey, (PAGE_WIDTH - pagex), pagey)
    canvas.restoreState()
コード例 #34
0
def footer(canvas, DOC):
    """Draws the page footer"""
    arcpy.AddMessage("Drawing Footer...")
    canvas.saveState()
    canvas.setFont("Vera", 7.5)

    text = MAPHEADERTEXT
    date_now = datetime.datetime.now()
    date_formatted = (str(time.strftime("%b")) + " " + str(date_now.day) +
                      ", " + str(date_now.year))
    canvas.drawRightString(DOC.width - (DOC.rightMargin-2.35*inch),
                           0.5*DOC.bottomMargin, date_formatted)
    canvas.setFillGray(0.70)
    canvas.drawString(DOC.leftMargin - 25, 0.5*DOC.bottomMargin, text)
    canvas.setLineWidth(2)
    canvas.setStrokeColor(Color(0, 0.2627450980392157, 0.42745098039215684, 1))
    pagex = 47.5
    pagey = 0.75*DOC.bottomMargin
    canvas.line(pagex, pagey, (PAGE_WIDTH - pagex), pagey)
    canvas.restoreState()
コード例 #35
0
    def render(self, pagemgr):
        rendered = []
        frame = None
        canvas = None
        if pagemgr is not None:
            frame = pagemgr.getcurrentframe()
            canvas = pagemgr.getcanvas()

        basestyle = self._baseelement.getstyle()
        border = basestyle.getattribute('border', float)
        color = basestyle.getattribute('color', str)

        pos_xy, r_xy = self._baseelement.getellipse()
        canvas_height = canvas._pagesize[1]
        pos_y = canvas_height - pos_xy[1]

        canvas.saveState()
        canvas.setStrokeColor(color)
        canvas.setLineWidth(float(border))
        canvas.ellipse(pos_xy[0], pos_y, pos_xy[0] + r_xy[0], pos_y - r_xy[1])
        canvas.restoreState()
コード例 #36
0
ファイル: rlrenderer.py プロジェクト: kelvin0/PyXML2PDF
	def render(self, pagemgr):
		rendered = []
		frame = None
		canvas = None
		if pagemgr is not None:
			frame = pagemgr.getcurrentframe()
			canvas = pagemgr.getcanvas()                

		basestyle = self._baseelement.getstyle()
		border = basestyle.getattribute('border',float)
		color = basestyle.getattribute('color',str)

		pos_xy, r_xy = self._baseelement.getellipse()                
		canvas_height = canvas._pagesize[1]
		pos_y = canvas_height - pos_xy[1]

		canvas.saveState()
		canvas.setStrokeColor(color)
		canvas.setLineWidth(float(border))
		canvas.ellipse(pos_xy[0], pos_y, pos_xy[0]+r_xy[0], pos_y-r_xy[1])
		canvas.restoreState()
コード例 #37
0
    def draw(self):
        canvas = self.canv
        canvas.setLineWidth(0.1 * cm)
        canvas.setFillColor(self.fillcolor)
        canvas.setStrokeColor(self.strokecolor)
        canvas.translate((1 - self.scale) * self.size / 2,
                         (1 - self.scale) * self.size / 2)
        canvas.scale(self.scale, self.scale)
        canvas.setFillColor(self.fillcolor)
        canvas.setLineJoin(2)

        ident = self.ident
        shapes = [[(0, 0), (1, 0), (0.5, 1)], [(0, 0), (1, 0), (0, 1), (1, 1)],
                  [(0, 0), (1, 0), (1, 1), (0, 1)],
                  [(0, 0.5), (0.5, 1), (1, 0.5), (0.5, 0)],
                  [(0, 1), (1, 1), (0.5, 0)]]

        if self.ident % 2 == 1:
            canvas.setDash(3, 2)

        p = canvas.beginPath()

        ident = ident // 2
        if self.ident % 2 == 0:
            p.moveTo(0.5 * self.size, 0)
            p.lineTo(0.5 * self.size, 1 * self.size)

        ident = ident // 2
        sndx = (ident) % (len(shapes) + 1)
        if sndx < len(shapes):
            d = shapes[sndx]
            p.moveTo(d[0][0] * self.size, d[0][1] * self.size)
            for ndx in range(len(d) - 1):
                p.lineTo(d[ndx + 1][0] * self.size, d[ndx + 1][1] * self.size)
        else:
            p.ellipse(0, 0, 1 * self.size, 1 * self.size)

        p.close()

        canvas.drawPath(p)
コード例 #38
0
ファイル: example.py プロジェクト: JuanBer90/dissoi2
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))
コード例 #39
0
    def render(self, pagemgr):
        rendered = []
        frame = None
        canvas = None
        if pagemgr is not None:
            frame = pagemgr.getcurrentframe()
            canvas = pagemgr.getcanvas()

        rect = self._baseelement.getrect()
        canvas_height = canvas._pagesize[1]

        # We're looking for the object we're supposed to be positionned
        # relative to, hopefully it exists and has been rendered already!
        anchor_id, anchor_data = self._baseelement.getanchor()
        rendered_anchor = findinstance(anchor_id)
        if rendered_anchor is not None:
            dest_rect = rendered_anchor.getrect()
            dest_rect[1] = canvas_height - (dest_rect[1] + dest_rect[3])
            rect = snapsrctodest(rect, dest_rect,
                                 rlobject.snapto_dict[anchor_data[1].upper()],
                                 rlobject.snapto_dict[anchor_data[2].upper()],
                                 [0, 0])

        rect[1] = canvas_height - (rect[1] + rect[3])
        basestyle = self._baseelement.getstyle()
        bckg_color = basestyle.getattribute('background-color', str)
        border = basestyle.getattribute('border', float)
        color = basestyle.getattribute('color', str)
        canvas.saveState()
        canvas.setStrokeColor(color)
        canvas.setLineWidth(border)
        dofill = 0
        if bckg_color.lower() != 'none':
            canvas.setFillColor(bckg_color)
            dofill = 1
        canvas.rect(rect[0], rect[1], rect[2], rect[3], stroke=1, fill=dofill)
        canvas.restoreState()
        register(self._baseelement.getid(),
                 RLFrame(rect[0], rect[1], rect[2], rect[3]))
コード例 #40
0
    def render(self, pagemgr):
        rendered = []
        frame = None
        canvas = None
        if pagemgr is not None:
            frame = pagemgr.getcurrentframe()
            canvas = pagemgr.getcanvas()

        basestyle = self._baseelement.getstyle()
        border = basestyle.getattribute('border', float)
        color = basestyle.getattribute('color', str)

        from_xy, to_xy = self._baseelement.getline()
        canvas_height = canvas._pagesize[1]
        from_y = canvas_height - from_xy[1]
        to_y = canvas_height - to_xy[1]

        canvas.saveState()
        canvas.setStrokeColor(color)
        canvas.setLineWidth(float(border))
        canvas.line(from_xy[0], from_y, to_xy[0], to_y)
        canvas.restoreState()
コード例 #41
0
ファイル: reports.py プロジェクト: MikeRider27/grafiexpress
    def contenido(canvas, rendicion):
        from reportlab.lib.colors import darkblue, black
        canvas.setFillColor(darkblue)
        canvas.setFillColor(black)
        canvas.setStrokeColor(black)
        canvas.setFont("Helvetica-Bold", 13)

        # DATOS DE LA RENDICION
        canvas.setFont("Helvetica", 14)
        canvas.drawString(30, 820, "Rendicion Nro. : %s" % force_text(rendicion.id or ''))
        canvas.drawString(220, 820, "Fecha: %s" % force_text(rendicion.fecha.strftime('%d/%m/%Y') or ''))
        canvas.drawString(30, 800, "Cobrador : %s" % force_text(rendicion.cobrador or ''))

        # DETALLES
        canvas.line(30, 785, 350, 785)
        canvas.line(30, 765, 350, 765)

        canvas.drawString(30, 770, "Recibo")
        canvas.drawString(90, 770, u"Cliente")
        canvas.drawString(290, 770, "Subtotal")

        row = 765
        canvas.setFont("Helvetica", 11)
        detalles = DetallePresentacion.objects.filter(presentacion=rendicion)
        total_rendicion = 0
        for d in detalles:
            row -= 15
            canvas.drawString(40, row, force_text(d.cobro.numero))
            canvas.drawString(90, row, force_text(Truncator(d.cobro.cliente).chars(30)))
            canvas.drawString(280, row, force_text(separador_de_miles(d.subtotal)).rjust(13, ' '))
            total_rendicion += d.subtotal

        row -= 10
        canvas.line(30, row, 350, row)

        canvas.setFont("Helvetica-Bold", 13)

        row -= 14
        canvas.drawString(230, row, "Total: %s Gs." % separador_de_miles(total_rendicion))
コード例 #42
0
ファイル: rlrenderer.py プロジェクト: kelvin0/PyXML2PDF
	def render(self, pagemgr):
		rendered = []
		frame = None
		canvas = None
		if pagemgr is not None:
			frame = pagemgr.getcurrentframe()
			canvas = pagemgr.getcanvas()                

		rect = self._baseelement.getrect()
		canvas_height = canvas._pagesize[1]

		# We're looking for the object we're supposed to be positionned
		# relative to, hopefully it exists and has been rendered already!
		anchor_id, anchor_data = self._baseelement.getanchor()
		rendered_anchor = findinstance(anchor_id)                
		if rendered_anchor is not None:
			dest_rect = rendered_anchor.getrect()   
			dest_rect[1] = canvas_height - (dest_rect[1]+dest_rect[3])                        
			rect = snapsrctodest(rect, 
						         dest_rect, 
						         rlobject.snapto_dict[anchor_data[1].upper()],
						         rlobject.snapto_dict[anchor_data[2].upper()], 
						         [0,0])

		rect[1] = canvas_height - (rect[1]+rect[3])
		basestyle = self._baseelement.getstyle()
		bckg_color = basestyle.getattribute('background-color',str)
		border = basestyle.getattribute('border',float)
		color = basestyle.getattribute('color',str)
		canvas.saveState()
		canvas.setStrokeColor(color)
		canvas.setLineWidth(border)
		dofill = 0
		if bckg_color.lower() != 'none':
			canvas.setFillColor(bckg_color)
			dofill = 1
		canvas.rect(rect[0], rect[1], rect[2], rect[3], stroke=1, fill=dofill)
		canvas.restoreState()
		register(self._baseelement.getid(), RLFrame(rect[0], rect[1], rect[2], rect[3]))                
コード例 #43
0
ファイル: rlrenderer.py プロジェクト: kelvin0/PyXML2PDF
	def render(self, pagemgr):
		rendered = []
		frame = None
		canvas = None
		if pagemgr is not None:
			frame = pagemgr.getcurrentframe()
			canvas = pagemgr.getcanvas()                

		basestyle = self._baseelement.getstyle()
		border = basestyle.getattribute('border',float)
		color = basestyle.getattribute('color',str)

		from_xy, to_xy = self._baseelement.getline()                
		canvas_height = canvas._pagesize[1]
		from_y = canvas_height - from_xy[1]
		to_y = canvas_height - to_xy[1]

		canvas.saveState()
		canvas.setStrokeColor(color)
		canvas.setLineWidth(float(border))
		canvas.line(from_xy[0], from_y, to_xy[0], to_y)
		canvas.restoreState()
コード例 #44
0
ファイル: utils.py プロジェクト: guobot-code/django-invoices
    def _items_rect(self, canvas, doc):
        canvas.saveState()
        top = 6.6 * cm
        left = self.margins['left']
        width = self.page_width - self.margins['left'] - self.margins['right']
        height = 8.5 * cm
        canvas.setStrokeColor(red)
        canvas.setFillColor(red)
        canvas.setLineWidth(.5)
        canvas.rect(left, top, width, height, stroke=1)
        canvas.rect(left, top + 8 * cm, width, .5 * cm, stroke=1, fill=1)
        left = left + self.column_width
        canvas.line(left, top, left, top + height)
        left = self.page_width - self.margins['right'] - self.column_width
        canvas.line(left, top, left, top + height)
        left = left - self.column_width
        canvas.line(left, top, left, top + height)
        left = left - self.column_width
        canvas.line(left, top, left, top + height)
        left = left - self.column_width
        canvas.line(left, top, left, top + height)

        canvas.setFillColor(white)
        canvas.setFont(self.label_font, self.label_font_size)
        text_top = top + height - .4 * cm
        left = self.margins['left'] + self.column_width / 2.0
        canvas.drawCentredString(left, text_top, _('REF.'))
        left = left + (width - self.column_width * 5) / 2.0
        canvas.drawCentredString(left, text_top, _('ITEMS'))
        left = left + (width - self.column_width * 5) / 2.0 + self.column_width
        canvas.drawCentredString(left, text_top, _('QTY.'))
        left = left + self.column_width
        canvas.drawCentredString(left, text_top, _('€/Unit'))
        left = left + self.column_width
        canvas.drawCentredString(left, text_top, _('DIS.'))
        left = left + self.column_width
        canvas.drawCentredString(left, text_top, _('TOTAL'))
        canvas.restoreState()
コード例 #45
0
def variousshapes(canvas):
    from reportlab.lib.units import inch
    inch = int(inch)
    canvas.setStrokeGray(0.5)
    canvas.grid(range(0,int(11*inch/2),int(inch/2)), range(0,int(7*inch/2),int(inch/2)))

    rectangeHieght = .5
    # % Favorable
    favorableXposition = inch
    favorableYposition = inch
    favorableRectWidth = 1*inch

    # Favorable Rect
    canvas.setStrokeColor(green)
    canvas.setFillColor(green)
    canvas.rect(favorableXposition,favorableYposition,favorableRectWidth,rectangeHieght*favorableYposition, fill=1)

    # % Favorable Text
    canvas.setFillColor(black)
    canvas.drawString(favorableXposition+(favorableXposition/2.5),favorableYposition+(favorableYposition/5), "11")

    # % Neutral
    neutralXposition = 2*inch
    neutralYposition = 1*inch
    neutralRectWidth = 1*inch

    # Neutral Rect
    canvas.setStrokeColor(yellow)
    canvas.setFillColor(yellow)
    canvas.rect(neutralXposition,neutralYposition,neutralRectWidth,rectangeHieght*inch, fill=1)

    # % Neutral Text
    canvas.setFillColor(black)
    canvas.drawString(neutralXposition+(neutralXposition/2.5),neutralYposition+(neutralYposition/5), "22")

    # % Unfavorable
    unfavorableXposition = 3*inch
    unfavorableYposition = 1*inch
    unfavorableRectWidth = 1*inch

    # Unfavorable Rect
    canvas.setStrokeColor(red)
    canvas.setFillColor(red)
    canvas.rect(unfavorableXposition,unfavorableYposition,unfavorableRectWidth,rectangeHieght*inch, fill=1)

    # Unfavorable Text
    canvas.setFillColor(black)
    canvas.drawString(unfavorableXposition+(unfavorableXposition/2.5),unfavorableYposition+(unfavorableYposition/5), "33")
コード例 #46
0
	def draw_label(self, rect):
		canvas.setFillColor(reportlab.lib.colors.black)

		if args.grid:
			canvas.setStrokeColor(reportlab.lib.colors.grey)
			canvas.setLineWidth(1)
			canvas.rect(rect.x * inch, rect.y * inch, rect.w * inch, rect.h * inch)

		v = series[self.pos] *  10 ** self.decade
		
		v_with_units = (v, '\u2126')

		if (v >= 1000 and v < 10 ** 6):
			v_with_units = (v/1000, "K" + v_with_units[1])
		elif (v >= 10 ** 6):
			v_with_units = (v/10 ** 6, "M" + v_with_units[1])

		v_str = ("{:.5g} " + v_with_units[1]).format(v_with_units[0])
		print(v_str)

		canvas.setStrokeColor(reportlab.lib.colors.black)
		canvas.setFont("Helvetica-Bold", 18)
		y = (rect.y + 1/8)
		canvas.drawString((rect.x + 1/8) * inch, y * inch, v_str)
		
		stripes = list(stripes1and2[self.pos]) + [colors[self.decade]]
		stripes.reverse()
		stripeD = Dim(w = 1/8, h = 1/4)
		x = rect.x + rect.w - 1/8 - stripeD.w
		for s in stripes:
			canvas.setFillColor(s)
			canvas.setStrokeColor(reportlab.lib.colors.grey)
			canvas.rect(x * inch, y * inch, stripeD.w * inch, stripeD.h * inch, stroke = 1, fill = 1)
			x -= 1/16 + stripeD.w

		self.pos += 1
		if self.pos == len(series):
			self.decade += 1
			self.pos = 0

		return (v != max_value)
コード例 #47
0
ファイル: musicbox.py プロジェクト: acspike/sMIDIreens
 def setShade(canvas, c):
     rlcolor = Color(c,c,c)
     canvas.setFillColor(rlcolor)
     canvas.setStrokeColor(rlcolor)
コード例 #48
0
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) 
コード例 #49
0
def render(canvas, bounding_box=False, pg=None):
    assert canvas._pagesize == pagesizes.A4

    # query setup
    query = (
        "SELECT othernames, surname, ticket_id, vip "
        "FROM tickets "
        "WHERE paid IS NOT NULL AND"
        "   printed IS NULL "
        "ORDER BY user_id, surname, othernames"
    )

    cur = pg.cursor(True)
    cur.execute(query)

    # constants
    start = (11.93 * units.mm, 24 * units.mm)
    size = (41 * units.mm, 17.5 * units.mm)
    delta = (48.35 * units.mm, 21.2 * units.mm)
    count = (4, 12)

    bar_height = size[1] / 4.0 - 1 * units.mm
    bar_width = 0.71 * units.mm

    coord_positions = [[start[n] + i * delta[n] for i in range(count[n])] for n in (0, 1)]

    ticket_types = {
        True: {"entry_time": "8:00pm", "type_string": "VIP"},
        False: {"entry_time": "8:30pm", "type_string": "Standard"},
    }

    # position iterator stuff
    positions = list(itertools.product(*coord_positions))
    pos_enum = itertools.cycle(range(len(positions)))

    # page counting
    per_page = count[0] * count[1]
    pages = cur.rowcount // per_page
    if cur.rowcount % per_page:
        pages += 1

    page = 0

    # util
    def centred_text(canvas, x, y, row, what):
        x_centre = x + size[0] / 2.0
        canvas.saveState()

        for font_size in range(12, 5, -1):
            canvas.setFontSize(font_size)
            if canvas.stringWidth(what) < size[0]:
                break
        else:
            print("Warning: text", what, "too wide")

        offset = row * size[1] / 4.0
        canvas.drawCentredString(x_centre, y + offset, what)
        canvas.restoreState()

    # go
    for pos_n, ticket in itertools.izip(pos_enum, cur):
        if pos_n == 0:
            if page != 0:
                canvas.showPage()

            page += 1

            footer = "Barcodes page {0} of {1}".format(page, pages)
            canvas.drawCentredString(pagesizes.A4[0] / 2.0, 20, footer)

        ticket.update(ticket_types[ticket["vip"]])
        name = "{othernames} {surname}".format(**ticket)
        barcode_value = "{ticket_id:04d}".format(**ticket)
        num_type = "{ticket_id:04d}      {type_string}".format(**ticket)
        entry_time = "Entry time: {entry_time}".format(**ticket)

        x, y = positions[pos_n]

        barcode = code128.Code128(barcode_value, barWidth=bar_width, barHeight=bar_height, quiet=False)
        x_offset = (size[0] - barcode.width) / 2
        if x_offset < 0:
            raise ValueError("barcode too wide")
        barcode.drawOn(canvas, x + x_offset, y + 2 * size[1] / 4.0)

        centred_text(canvas, x, y, 3, name)
        centred_text(canvas, x, y, 1, num_type)
        centred_text(canvas, x, y, 0, entry_time)

        if bounding_box:
            canvas.setStrokeColor(colors.red)
            canvas.rect(x, y, size[0], size[1], stroke=1, fill=0)
            canvas.setStrokeColor(colors.black)

    # last page
    canvas.showPage()

    # cleanup
    cur.close()
コード例 #50
0
ファイル: mark.py プロジェクト: GaretJax/pdfedit
 def get_canvas(self, packet):
     canvas = super(TaskPageMask, self).get_canvas(packet)
     canvas.setStrokeColor(colors.black)
     canvas.setFillColor(colors.white)
     canvas.setLineWidth(0.2 * mm)
     return canvas
コード例 #51
0
ファイル: notamdoc.py プロジェクト: ahsparrow/navplot
def drawFirstPage(canvas, doc):
    canvas.saveState()

    # Title text
    tobj = canvas.beginText()
    tobj.setTextOrigin(doc.leftMargin, doc.pagesize[1]-doc.topMargin-24)
    tobj.setFont('Helvetica-Bold', 32)
    tobj.setLeading(22)
    firstr = '/'.join(doc.firs)
    tobj.textLine('NavPlot')
    tobj.setFont('Helvetica', 16)
    tobj.textLine('%s Navigation warnings for: %s' % (firstr, doc.dateStr))
    canvas.drawText(tobj)

    # Small print
    canvas.setFont('Helvetica', 10)
    canvas.drawString(doc.leftMargin, doc.bottomMargin,
        "IMPORTANT: Do not rely on this map - check NOTAM's from an official "\
        "source. Data "+UTF8_COPYRIGHT_SIGN+' '+doc.copyright_holder)

    # Clipping rectangle for the map
    path = canvas.beginPath()
    path.rect(doc.leftMargin, doc.bottomMargin+doc.bottomOffset, doc.mapwidth,
              doc.mapheight)
    canvas.clipPath(path)

    # Drawing style for the map
    canvas.setLineWidth(0.5)
    canvas.setFillColor(gray)

    # Draw the other map stuff. Coordinate file must be in mapinfo format.
    # Coast line from http://rimmer.ngdc.noaa.gov/mgg/coast/getcoast.html
    moveFlag = True
    path = canvas.beginPath()

    map_data = doc.map_data
    for lin in map_data.splitlines():
        if lin[0] != '#':
            lon, lat = map(float, lin.split('\t'))
            x, y = doc.latlon2xy(lat, lon)
            if moveFlag:
                path.moveTo(x, y)
                moveFlag = False
            else:
                path.lineTo(x, y)
        else:
            moveFlag = True
    canvas.setStrokeColor(darkgray)
    canvas.drawPath(path)

    # Draw some gliding sites
    canvas.setStrokeColor(gray)
    delta = 2.5*mm
    for gs in GLIDING_SITES:
        x, y = doc.latlon2xy(*GLIDING_SITES[gs])
        canvas.lines(((x, y+delta, x, y-delta), (x-delta, y, x+delta, y)))
        canvas.drawString(x+mm, y+mm, gs)

    # Draw NOTAM areas
    canvas.setStrokeColor(blue)
    canvas.setFillColor(black)
    canvas.setLineWidth(0.5)
    for n, notam in enumerate(doc.notams):
        x, y = doc.latlon2xy(notam[0], notam[1])
        radius = notam[2]/60.0*doc.scale
        canvas.circle(x, y, radius)
        if radius/mm < 3:
            x1 = x + radius/1.41 + mm/2
            y1 = y + radius/1.41 + mm/2
            canvas.line(x, y, x1, y1)
            canvas.drawString(x1, y1, str(n+1))
        else:
            canvas.drawCentredString(x, y-3, str(n+1))

    canvas.restoreState()