我在python中使用reportlab来制作pdf报告。 我可以根据需要在我的段落中使用粗体标记,如下所示,但是一旦我使用特定字体,粗体标记就不再显示为粗体。
import reportlab.rl_config
reportlab.rl_config.TTFSearchPath.append('/usr/share/fonts/FansyFont/')
from reportlab.pdfbase.pdfmetrics import registerFontFamily
registerFontFamily('FansyFont', normal='FansyFont-Regular', bold='FansyFont-Bold', italic='FansyFont-Italic', boldItalic='FansyFont-BoldItalic')
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont('FansyFont-Bold', 'FansyFont-Bold.ttf'))
pdfmetrics.registerFont(TTFont('FansyFont-Regular', 'FansyFont-Regular.ttf'))
pdfmetrics.registerFont(TTFont('FansyFont-Italic', 'FansyFont-Italic.ttf'))
pdfmetrics.registerFont(TTFont('FansyFont-BoldItalic', 'FansyFont-BoldItalic.ttf'))
styles = getSampleStyleSheet()
ps = ParagraphStyle(styles['Normal'], fontName='FansyFont-Regular', alignment=TA_LEFT, fontSize=8)
Paragraph("<b>Table1:</b> some nice table", ps)
是否有人要求reportlab明白它应该将字体切换为“FansyFont-Bold”,还是有办法让它选择正确的字体?
此外,在其他编程语言甚至其他python包(如matplotlib)中,您只需为不同的权重指定字体系列而不是单个字体文件,那么我需要在reportlab中指定它?
答案 0 :(得分:4)
注册所有字体后,您希望将它们与registerFontFamily()
pdfmetrics.registerFont(TTFont('FansyFont-Bold', 'FansyFont-Bold.ttf'))
pdfmetrics.registerFont(TTFont('FansyFont-Regular', 'FansyFont-Regular.ttf'))
pdfmetrics.registerFont(TTFont('FansyFont-Italic', 'FansyFont-Italic.ttf'))
pdfmetrics.registerFont(TTFont('FansyFont-BoldItalic', 'FansyFont-BoldItalic.ttf'))
pdfmetrics.registerFontFamily(
'FansyFont',
normal='FansyFont-Regular',
bold='FansyFont-Bold',
italic='FansyFont-Italic',
boldItalic='FansyFont-BoldItalic')
然后,只需使用FansyFont
作为fontName
:
ps = ParagraphStyle(styles['Normal'], fontName='FansyFont', alignment=TA_LEFT, fontSize=8)