Минимально возможный вариант кастомной flowlable для reportlabа:
class Price_std(Flowable):
def __init__(self,price_rub,price_kop,items = 1):
Flowable.__init__(self)
self.price_rub = price_rub
self.price_kop = price_kop
self.items = str(items) + ' .шт'
self.rub_font = 'HelveticaNeue-Bold'
self.rub_font_size = 28
self.kop_font = 'HelveticaNeue-Bold'
self.kop_font_size = 15
self.items_font = 'HelveticaNeue-BoldCd'
self.items_font_size = 5
def draw(self):
self.canv.setFont(self.rub_font,self.rub_font_size)
self.canv.setFillColor(CMYKColor(0,100,90,15))
self.canv.drawString(0, 0,self.price_rub)
rubWidth = stringWidth(self.price_rub, self.rub_font, self.rub_font_size)
splitterWidth = stringWidth(',',self.rub_font, self.rub_font_size)
self.canv.drawString(rubWidth, 4,',')
self.canv.setFont(self.kop_font,self.kop_font_size)
self.canv.drawString(rubWidth,10,self.price_kop)
self.canv.setFont(self.items_font,self.items_font_size)
self.canv.setFillColor(colors.black)
self.canv.drawString(rubWidth+splitterWidth,4,self.items)