• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python pdfmetrics.stringWidth函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中reportlab.pdfbase.pdfmetrics.stringWidth函数的典型用法代码示例。如果您正苦于以下问题:Python stringWidth函数的具体用法?Python stringWidth怎么用?Python stringWidth使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了stringWidth函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: draw_breakout_tail_label

    def draw_breakout_tail_label(self, label, width, height, obj):
        """
        Split the label into 4 quads, calculate the maximum size that the 
        main center label can be.  
        """
        topLeft = str(obj[0])
        bottomLeft = str(obj[1])
        topRight = str(obj[2])
        bottomRight = str(obj[3])
        middleCenter = str(obj[4])
        bottomCenter = str(obj[5])

        font = self.font
        fillColor = colors.HexColor("#00000")

        largeFontSize = 22
        smallFontSize = 7

        label.add(shapes.String(5, height-smallFontSize, topLeft, fontName=font, fontSize=smallFontSize, fillColor=fillColor))
        label.add(shapes.String(2, 2, bottomLeft, fontName=font, fontSize=smallFontSize, fillColor=fillColor))
        name_width = stringWidth(topRight, font, smallFontSize)
        label.add(shapes.String(width-(name_width+2), height-smallFontSize, topRight, fontName=font, fontSize=smallFontSize, fillColor=fillColor))
        name2_width = stringWidth(bottomRight, font, smallFontSize)
        label.add(shapes.String(width-(name2_width+2), 2, bottomRight, fontName=font, fontSize=smallFontSize, fillColor=fillColor))
        label.add(shapes.String(width/2.0, height-(largeFontSize+largeFontSize/5.0), middleCenter, textAnchor="middle", fontSize=largeFontSize, fillColor=fillColor))
        label.add(shapes.String(width/2.0, 2, bottomCenter, textAnchor="middle", fontSize=smallFontSize))
开发者ID:matt-dale,项目名称:designdb,代码行数:26,代码来源:old_PDF_printer.py


示例2: render

    def render(self):
        style = getSampleStyleSheet()['Normal']
        style.alignment = self.text_align
        style.fontName = self.font_name
        if self._layout.debug_fields:
            style.backColor = "rgba(255, 0, 0, 0.5)"

        if self.fit_text:
            original_size = self.font_size
            text_width = stringWidth(self.data, self.font_name, self.font_size)
            while text_width > self.width:
                self.font_size -= 1
                text_width = stringWidth(self.data, self.font_name, self.font_size)
            # Size has been adjusted. Lower text accordingly
            if original_size > self.font_size:
                self._offset_top = (original_size - self.font_size) / 2.0

        if self.height == 0:
            self.height = self.font_size
        style.fontSize = self.font_size
        style.leading = self.font_size


        p = Paragraph('<font color="%s">%s</font>' % (self.color, self.data), style)
        p.wrap(self.width, self.height)
        top = self._layout.height - self.top - self.height - self._offset_top
        p.drawOn(self._canvas, self.left, top)
开发者ID:suda,项目名称:stereo,代码行数:27,代码来源:text.py


示例3: makeCircularString

def makeCircularString(x, y, radius, angle, text, fontName, fontSize, inside=0, G=None,textAnchor='start'):
    '''make a group with circular text in it'''
    if not G: G = Group()

    angle %= 360
    pi180 = pi/180
    phi = angle*pi180
    width = stringWidth(text, fontName, fontSize)
    sig = inside and -1 or 1
    hsig = sig*0.5
    sig90 = sig*90

    if textAnchor!='start':
        if textAnchor=='middle':
            phi += sig*(0.5*width)/radius
        elif textAnchor=='end':
            phi += sig*float(width)/radius
        elif textAnchor=='numeric':
            phi += sig*float(numericXShift(textAnchor,text,width,fontName,fontSize,None))/radius

    for letter in text:
        width = stringWidth(letter, fontName, fontSize)
        beta = float(width)/radius
        h = Group()
        h.add(String(0, 0, letter, fontName=fontName,fontSize=fontSize,textAnchor="start"))
        h.translate(x+cos(phi)*radius,y+sin(phi)*radius)    #translate to radius and angle
        h.rotate((phi-hsig*beta)/pi180-sig90)               # rotate as needed
        G.add(h)                                            #add to main group
        phi -= sig*beta                                     #increment

    return G
开发者ID:Aeium,项目名称:dotStudio,代码行数:31,代码来源:utils.py


示例4: getDrawing09

def getDrawing09():
    """This tests rotated strings

    Some renderers will have a separate mechanism for font drawing.  This test
    just makes sure strings get transformed the same way as regular graphics."""
    D = Drawing(400, 200)

    fontName = _FONTS[0]
    fontSize = 12
    text = "I should be totally horizontal and enclosed in a box"
    textWidth = stringWidth(text, fontName, fontSize)


    g1 = Group(
            String(20, 20, text, fontName=fontName, fontSize = fontSize),
            Rect(18, 18, textWidth + 4, fontSize + 4, fillColor=None)
            )
    D.add(g1)

    text = "I should slope up by 15 degrees, so my right end is higher than my left"
    textWidth = stringWidth(text, fontName, fontSize)
    g2 = Group(
            String(20, 20, text, fontName=fontName, fontSize = fontSize),
            Rect(18, 18, textWidth + 4, fontSize + 4, fillColor=None)
            )
    g2.translate(0, 50)
    g2.rotate(15)
    D.add(g2)

    return D
开发者ID:7o9,项目名称:stdm-plugin,代码行数:30,代码来源:testshapes.py


示例5: wrap

 def wrap(self, availWidth, availHeight):
     self.width = availWidth
     # Use a very simple algorithm because we are always working on
     # small amounts of text
     words = self.ltext.split()
     if not words:
         self._leftlines = []
         self._extraline = True
         return self.width, self.pitch
     lines = [words.pop(0)]
     while words:
         cw = words.pop(0)
         trial = lines[-1] + " " + cw
         width = stringWidth(trial, self.font, self.fontsize)
         if width > availWidth:
             lines.append(cw)
         else:
             lines[-1] = trial
     # Does the rtext fit on the last line?
     if self.rtext:
         trial = lines[-1] + " " + self.rtext
         extraline = stringWidth(trial, self.font, self.fontsize) > availWidth
     else:
         extraline = False
     height = len(lines) * self.pitch
     if extraline:
         height += self.pitch
     self._leftlines = lines
     self._extraline = extraline
     return self.width, height
开发者ID:sde1000,项目名称:quicktill,代码行数:30,代码来源:pdrivers.py


示例6: _break_text

def _break_text(text, line_width, font_name, font_size):
    
    space_width = stringWidth(' ', font_name, font_size)
    
    #text = text.decode('utf8')
    delimiter = u' '.decode('utf8')
    words = [word.encode('utf8') for word in text.split(delimiter)]
    
    lines = list()
    line = ''
    available_width = line_width
    while words:
        #Always add first word even if single word is wider than page
        if len(line) == 0:
            line = line + words[0]
            available_width = available_width -  stringWidth(words[0], font_name, font_size)
            del words[0]
        else:
            #We already have at least one word in line. Now we try to add more...
            next_word_width = stringWidth(words[0], font_name, font_size)
            if available_width >= space_width + next_word_width:
                line = line + ' ' + words[0]
                available_width = available_width - (space_width + next_word_width)
                del words[0]
            else:
                #We cannot add more words to current line
                lines.append(line)
                line = ''
                available_width = line_width
    if len(line) > 0:
        lines.append(line)
        
    return lines
开发者ID:jovanbrakus,项目名称:resumegen,代码行数:33,代码来源:generator.py


示例7: scale_font_size

def scale_font_size(text, max_width, font_name="Helvetica", font_size=50, scaling=0.8):
    """Measure the width of the text and shrink the font size until it fits."""
    text_width = stringWidth(text, font_name, font_size)
    while text_width > max_width:
        font_size *= scaling
        text_width = stringWidth(text, font_name, font_size)
    return font_size
开发者ID:jdidion,项目名称:labels,代码行数:7,代码来源:labelmaker.py


示例8: shrink_font

def shrink_font(text, width, start_size=10):
    font_size = start_size
    text_width = width - 10
    name_width = stringWidth(text, "Helvetica", font_size)
    while name_width > text_width:
        font_size *= 0.8
        name_width = stringWidth(text, "Helvetica", font_size)
    return font_size
开发者ID:bryndivey,项目名称:ohmanizer,代码行数:8,代码来源:labeler.py


示例9: nameWidth

 def nameWidth(self, name, fontSize):
     w = 0
     name_parts = name.split()
     for i, part in enumerate(name_parts):
         if i != 0:
             w += pdfmetrics.stringWidth(' ','MinionPro-Regular',fontSize)
         w += pdfmetrics.stringWidth(part[0],'MinionPro-Regular',fontSize)
         w += pdfmetrics.stringWidth(part[1:],'MinionPro-Regular',fontSize-2)
     return w
开发者ID:aarongilly,项目名称:dominiontabs,代码行数:9,代码来源:dominion_tabs.py


示例10: wrap_text

def wrap_text(text, max_width, font_name="Helvetica", font_size=50):
    text_width = stringWidth(text, font_name, font_size)
    nchar = len(text)
    new_text = [text]
    while text_width > max_width:
        nchar -= 1
        new_text = textwrap.wrap(text, nchar)
        text_width = max(stringWidth(t, font_name, font_size) for t in new_text)
    return new_text
开发者ID:jdidion,项目名称:labels,代码行数:9,代码来源:labelmaker.py


示例11: linebreak

 def linebreak(self,neumes,lyrics = None):
     """Break neumes and lyrics into lines"""
     cr = Cursor(0,0)
     lyricArray = re.split(' ',lyrics)
     # If lyric spans multiple neumes
     #   then see if lyric is wider than span
     #   else see if width of glypch is max of neume and lyric
     charSpace = 4 # default space between characters
     textOffset = 20 # default space lyrics appear below neumes
     #neumeArray = neume_dict.translate(neumes).split(' ')
     neumeArray = neumes.split(' ')
     neumePos = []
     lyricPos = []
     lyricIdx = 0
     for neume in neumeArray:
         #print("Neume length: " + str(pdfmetrics.stringWidth(neume,'EZ Psaltica',24)))
         nWidth = pdfmetrics.stringWidth(neume_dict.translate(neume),'EZ Psaltica',self.nFontSize)
         if nWidth > 1.0: # if it's not a gorgon or other small symbol
             # Neume might take lyric
             if lyricIdx < len(lyricArray):
                 lyr = lyricArray[lyricIdx]
             else:
                 lyr = ""
             lWidth = pdfmetrics.stringWidth(lyr,lyric_attrib['font'],lyric_attrib['font_size'])
             # Glyph width will be the max of the two if lyric isn't stretched out
             # across multiple neumes
             addLyric = False
             #if (lyr[-1] != "_") & (neume_dict.takesLyric(neume)):
             if (neume_dict.takesLyric(neume)):
                 glWidth = max(nWidth,lWidth)
                 lyricIdx += 1
                 addLyric = True
             else:
                 glWidth = nWidth
             if (glWidth + cr.x) >= self.lineWidth: # line break
                 cr.x, cr.y = 0, cr.y - self.lineHeight
                 # does it take a lyric syllable?
                 neumePos.append((cr.x,cr.y,neume_dict.translate(neume)))
             else: # no line break
                 # does it take a lyric syllable?
                 neumePos.append((cr.x,cr.y,neume_dict.translate(neume)))
             if (addLyric):
                 lyricPos.append((cr.x,cr.y-textOffset,lyr))
             cr.x += glWidth + charSpace
             
         else:
             # offsets for gorgon
             # offsets for apli
             # offset for kentima
             # offsets for omalon
             # offsets for antikenoma
             # offsets for eteron
             neumePos.append((cr.x - charSpace,cr.y,neume_dict.translate(neume)))
         
     #print neumePos
     return neumePos, lyricPos
开发者ID:jdaly101,项目名称:kassia,代码行数:56,代码来源:kassia.py


示例12: individual_header_font_size

 def individual_header_font_size(self, header, maximum_width):
     font_size = maximum_width
     
     width = stringWidth(header, self.formatter.header_font, font_size)
             
     while width > maximum_width:
         font_size -= 1
         width = stringWidth(header, self.formatter.header_font, font_size)
     
     return font_size
开发者ID:Hovercross,项目名称:rectory-apps,代码行数:10,代码来源:calendar_maker.py


示例13: _getWidth

def _getWidth(s,fontName, fontSize, sepSpace=0):
    if isSeqType(s):
        sum = 0
        for t in s:
            m = [stringWidth(x, fontName, fontSize) for x in t.split('\n')]
            sum += m and max(m) or 0
        sum += (len(s)-1)*sepSpace
        return sum
    m = [stringWidth(x, fontName, fontSize) for x in s.split('\n')]
    return m and max(m) or 0
开发者ID:alexissmirnov,项目名称:donomo,代码行数:10,代码来源:legends.py


示例14: drawPageNumbers

def drawPageNumbers(canvas, style, pages, availWidth, availHeight, dot=' . '):
    '''
    Draws pagestr on the canvas using the given style.
    If dot is None, pagestr is drawn at the current position in the canvas.
    If dot is a string, pagestr is drawn right-aligned. If the string is not empty,
    the gap is filled with it.
    '''
    pages.sort()
    pagestr = ', '.join([str(p) for p, _ in pages])
    x, y = canvas._curr_tx_info['cur_x'], canvas._curr_tx_info['cur_y']
    
    fontSize = style.fontSize
    pagestrw = stringWidth(pagestr, style.fontName, fontSize)
    
    #if it's too long to fit, we need to shrink to fit in 10% increments.
    #it would be very hard to output multiline entries.
    #however, we impose a minimum size of 1 point as we don't want an
    #infinite loop.   Ultimately we should allow a TOC entry to spill
    #over onto a second line if needed.
    freeWidth = availWidth-x
    while pagestrw > freeWidth and fontSize >= 1.0:
        fontSize = 0.9 * fontSize
        pagestrw = stringWidth(pagestr, style.fontName, fontSize)
        
    
    if isinstance(dot, strTypes):
        if dot:
            dotw = stringWidth(dot, style.fontName, fontSize)
            dotsn = int((availWidth-x-pagestrw)/dotw)
        else:
            dotsn = dotw = 0
        text = '%s%s' % (dotsn * dot, pagestr)
        newx = availWidth - dotsn*dotw - pagestrw
        pagex = availWidth - pagestrw
    elif dot is None:
        text = ',  ' + pagestr
        newx = x
        pagex = newx
    else:
        raise TypeError('Argument dot should either be None or an instance of basestring.')

    tx = canvas.beginText(newx, y)
    tx.setFont(style.fontName, fontSize)
    tx.setFillColor(style.textColor)
    tx.textLine(text)
    canvas.drawText(tx)

    commaw = stringWidth(', ', style.fontName, fontSize)
    for p, key in pages:
        if not key:
            continue
        w = stringWidth(str(p), style.fontName, fontSize)
        canvas.linkRect('', key, (pagex, y, pagex+w, y+style.leading), relative=1)
        pagex += w + commaw
开发者ID:CometHale,项目名称:lphw,代码行数:54,代码来源:tableofcontents.py


示例15: _getFragWords

def _getFragWords(frags):
    ''' given a Parafrag list return a list of fragwords
        [[size, (f00,w00), ..., (f0n,w0n)],....,[size, (fm0,wm0), ..., (f0n,wmn)]]
        each pair f,w represents a style and some string
        each sublist represents a word
    '''
    R = []
    W = []
    n = 0
    for f in frags:
        text = f.text
        #del f.text # we can't do this until we sort out splitting
                    # of paragraphs
        if text!='':
            S = split(text)
            if S==[]: S = ['']
            if W!=[] and text[0] in whitespace:
                W.insert(0,n)
                R.append(W)
                W = []
                n = 0

            for w in S[:-1]:
                W.append((f,w))
                n += stringWidth(w, f.fontName, f.fontSize)
                W.insert(0,n)
                R.append(W)
                W = []
                n = 0

            w = S[-1]
            W.append((f,w))
            n += stringWidth(w, f.fontName, f.fontSize)
            if text[-1] in whitespace:
                W.insert(0,n)
                R.append(W)
                W = []
                n = 0
        elif hasattr(f,'cbDefn'):
            W.append((f,''))
        elif hasattr(f, 'lineBreak'):
            #pass the frag through.  The line breaker will scan for it.
            if W!=[]:
                W.insert(0,n)
                R.append(W)
                W = []
                n = 0
            R.append([0,(f,'')])

    if W!=[]:
        W.insert(0,n)
        R.append(W)

    return R
开发者ID:ShaulBarkan,项目名称:PRION,代码行数:54,代码来源:paragraph.py


示例16: fit_text_in_area

def fit_text_in_area(the_text,font_name,text_width_limit,text_height_limit):
    font_size = text_height_limit
    text_width = stringWidth(the_text, font_name, font_size)
    while ((text_width > text_width_limit) or (font_size > text_height_limit)):
        font_size *= 0.95
        text_width = stringWidth(the_text, font_name, font_size)

    s = shapes.String(0, 0, the_text, fontName=font_name, fontSize=font_size, textAnchor="start")
    #pprint("text_height_limit = " + str(text_height_limit))
    #pprint(s.dumpProperties())
    #pprint(s)
    return s
开发者ID:d-e-e-p,项目名称:generate_nametags_with_barcodes,代码行数:12,代码来源:generate_nametags_with_barcodes.py


示例17: draw_aux_label

 def draw_aux_label(self, label, width, height, obj):
     """
     just fill the label with the text
     """
     fontSize = 22
     if width > 127:
         fontSize = 40
     textWidth = stringWidth(obj, self.font, fontSize)
     while textWidth > (width - 10):
         fontSize *= 0.5
         textWidth = stringWidth(obj, self.font, fontSize)
     label.add(shapes.String(width/2.0, height-(fontSize+fontSize/5.0), obj, textAnchor="middle", fontSize=fontSize))
开发者ID:matt-dale,项目名称:designdb,代码行数:12,代码来源:old_PDF_printer.py


示例18: _posting_list_footer

    def _posting_list_footer(self, pdf, width, x1, y1, x2, y2):
        canvas = pdf.canvas

        canvas.rect(x1, y1, width, 38 * mm)
        canvas.setFont("Helvetica-Bold", size=9)
        canvas.drawCentredString(x2 - (width / 2), y1 + 38 * mm - 10, self.footer_title_text)
        canvas.setFont("Helvetica", size=8)
        canvas.drawString(x1 + 2 * mm, y1 + 28 * mm, self.footer_disclaimer)
        text_width = stringWidth(self.footer_stamp_text, "Helvetica", 8)
        canvas.drawString(x2 - 2 * mm - text_width, y1 + 28 * mm, self.footer_stamp_text)
        text = Paragraph(self.footer_signature_text, style=self.signature_style)
        text.wrap(stringWidth(self.footer_disclaimer, "Helvetica", 8), 10 * mm)
        text.drawOn(canvas, x1 + 2 * mm, y1 + 2 * mm)
开发者ID:solidarium,项目名称:correios,代码行数:13,代码来源:pdf.py


示例19: draw_cable_label

    def draw_cable_label(self, label, width, height, obj):
        """
        Split the label into 4 quads, calculate the maximum size that the 
        main center label can be.  
        """
        topLeft = str(obj[0])
        bottomLeft = str(obj[1])
        topRight = str(obj[2])
        bottomRight = str(obj[3])
        middleCenter = str(obj[4])
        bottomCenter = str(obj[5])
        isBundle = obj[6]
        largeOrSmall = obj[7]
        font = self.font
        fillColor = colors.HexColor("#00000")
        if isBundle == True:
            if self.tagEnds == True:
                fillColor = colors.HexColor("#FFFFFF")
                r = shapes.Rect(0, 0, width, height)
                r.fillColor = colors.HexColor("#00000")
                r.strokeColor = None
                label.add(r)
        horizontalCenterLine = width/2.0
        verticalCenterLine = height/2.0

        if largeOrSmall == 'Large':
            largeFontSize = 32
            smallFontSize = 10
        elif largeOrSmall == 'Small':
            largeFontSize = 22
            smallFontSize = 7

        middleCenterTextWidth = stringWidth(middleCenter, font, largeFontSize) # start with large font size of 22
        middleCenterTextHeight = largeFontSize*self.pointsToMM

        leftVerticalLimit = verticalCenterLine - middleCenterTextWidth/2.0
        rightVerticalLimit = verticalCenterLine + middleCenterTextWidth/2.0

        label.add(shapes.String(5, height-smallFontSize, topLeft, fontName=font, fontSize=smallFontSize, fillColor=fillColor))
        label.add(shapes.String(2, 2, bottomLeft, fontName=font, fontSize=smallFontSize, fillColor=fillColor))
        name_width = stringWidth(topRight, font, smallFontSize)
        label.add(shapes.String(width-(name_width+2), height-smallFontSize, topRight, fontName=font, fontSize=smallFontSize, fillColor=fillColor))
        name2_width = stringWidth(bottomRight, font, smallFontSize)
        label.add(shapes.String(width-(name2_width+2), 2, bottomRight, fontName=font, fontSize=smallFontSize, fillColor=fillColor))
        if largeOrSmall == 'Large':
            label.add(shapes.String(width/2.0, height-(largeFontSize+largeFontSize/2.0), middleCenter, textAnchor="middle", fontSize=largeFontSize, fillColor=fillColor))
        elif largeOrSmall == 'Small':
            label.add(shapes.String(width/2.0, height-(largeFontSize+largeFontSize/5.0), middleCenter, textAnchor="middle", fontSize=largeFontSize, fillColor=fillColor))
开发者ID:matt-dale,项目名称:designdb,代码行数:48,代码来源:old_PDF_printer.py


示例20: _textBoxLimits

def _textBoxLimits(text, font, fontSize, leading, textAnchor, boxAnchor):
    w = 0
    for t in text:
        w = max(w,stringWidth(t,font, fontSize))

    h = len(text)*leading
    yt = fontSize
    if boxAnchor[0]=='s':
        yb = -h
        yt = yt - h
    elif boxAnchor[0]=='n':
        yb = 0
    else:
        yb = -h/2.0
        yt = yt + yb

    if boxAnchor[-1]=='e':
        xb = -w
        if textAnchor=='end': xt = 0
        elif textAnchor=='start': xt = -w
        else: xt = -w/2.0
    elif boxAnchor[-1]=='w':
        xb = 0
        if textAnchor=='end': xt = w
        elif textAnchor=='start': xt = 0
        else: xt = w/2.0
    else:
        xb = -w/2.0
        if textAnchor=='end': xt = -xb
        elif textAnchor=='start': xt = xb
        else: xt = 0

    return xb, yb, w, h, xt, yt
开发者ID:AftabiPhone,项目名称:Inventariofmo,代码行数:33,代码来源:shapes.py



注:本文中的reportlab.pdfbase.pdfmetrics.stringWidth函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python pdfutils.readJPEGInfo函数代码示例发布时间:2022-05-26
下一篇:
Python pdfmetrics.registerTypeFace函数代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap