Найти в Дзене
sasha.gpgpu

Reportlab python все зарегистрированные типы шрифтов выводили жирный текст

Должно было сработать вот это:

from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.pdfmetrics import registerFontFamily

pdfmetrics.registerFont(TTFont('OpenSansR', 'OpenSans-Regular.ttf'))
pdfmetrics.registerFont(TTFont('OpenSansL', 'OpenSans-Light.ttf'))
pdfmetrics.registerFont(TTFont('OpenSansB', 'OpenSans-Bold.ttf'))
registerFontFamily('OpenSans', normal='OpenSansR', bold='OpenSansB', italic='OpenSansL', boldItalic='OpenSansB')

Но в итоге сработало вот это:

pdfmetrics.registerFont(TTFont('DejaVuSerif', 'fonts/DejaVuSerif.ttf', 'UTF-8'))
pdfmetrics.registerFont(TTFont('DejaVuSerifB', 'fonts/DejaVuSerif-Bold.ttf', 'UTF-8'))
pdfmetrics.registerFont(TTFont('DejaVuSerifI', 'fonts/DejaVuSerif-Italic.ttf', 'UTF-8'))
pdfmetrics.registerFont(TTFont('DejaVuSerifBI','fonts/DejaVuSerif-BoldItalic.ttf', 'UTF-8'))

doc = SimpleDocTemplate(filename + '.pdf', pagesize = A4, title='Basic thing', author='Gogol')

styleSheet = getSampleStyleSheet()
styleSheet['Normal'].fontName='DejaVuSerif'
styleSheet['Heading1'].fontName='DejaVuSerifB'
styleSheet['Heading1'].fontSize = 8
styleSheet['Heading1'].alignment=TA_CENTER
styleSheet['Heading2'].fontName='DejaVuSerif'

addMapping('DejaVuSerif', 0, 0, 'DejaVuSerif') #normal
addMapping('DejaVuSerif', 1, 0, 'DejaVuSerifB') #bold
addMapping('DejaVuSerif', 0, 1, 'DejaVuSerifI') #italic
addMapping('DejaVuSerif', 1, 1, 'DejaVuSerifBI') #italic and bold

ОТСЮДА

Наука
7 млн интересуются