在ReportLab中添加字体
我正在尝试在Python的ReportLab中添加一种字体,以便在一个功能中使用。这个功能是用canvas.Canvas来绘制一些文本到PDF里,没什么复杂的,但我需要添加一种固定宽度的字体来解决布局问题。
我试着用我找到的一些信息来注册字体,似乎是成功了。但是当我从我的Canvas对象调用.addFont('fontname')时,总是收到一个错误信息:
"PDFDocument实例没有'addFont'这个属性"
这个功能是不是没有实现?我该如何访问除了.getAvailableFonts中列出的十几种默认字体以外的其他字体呢?谢谢。
这是我想实现的一些示例代码:
from reportlab.pdfgen import canvas
c = canvas.Canvas('label.pdf')
c.addFont('TestFont') #This throws the error listed above,
#regardless of what argument I use (whether it refers
#to a font or not).
c.drawString(1,1,'test data here')
c.showPage()
c.save()
为了注册字体,我尝试了:
from reportlab.lib.fonts import addMapping
from reportlab.pdfbase import pdfmetrics
pdfmetrics.registerFont(TTFont('TestFont', 'ghettomarquee.ttf'))
addMapping('TestFont', 0, 0, 'TestFont')
其中'ghettomarquee.ttf'只是我随便找的一个字体文件。
1 个回答
9
c.setFont('TestFont')
c.drawString(1,1,'test data here')
使用setFont
来设置你要使用的字体名称,然后用drawString
来绘制文本。
如果你在文档中使用了这个字体,ReportLab会自动把字体嵌入到文档里,你不需要在全局注册字体后再手动添加它。