我一直在使用reportlab pdfgen创建动态pdf文档进行打印,这个工具已经在过去的几年中非常有效。
我们即将举办一次筹款活动,并希望使用我们正在使用的“主题”字体(具体来说是talldeco.ttf)生成pdf收据。
我已经成功设置了字体,使用了以下代码:
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
ttfFile = "/usr/share/fonts/truetype/ttf-tall-deco/TALLDECO.TTF"
pdfmetrics.registerFont(TTFont("TallDeco", ttfFile))
p.setFont("TallDeco", 18) # Was Times-Bold...
现在遇到的问题是:一些文本需要加粗和斜体,而talldeco只有一个文件(不像其他字体那样)。我可以在openoffice中使用这个字体来加粗和斜体文本。
根据reportlab用户指南(http://www.reportlab.com/software/opensource/rl-toolkit/guide/)第53页所述,应该是可能的,并且他们展示了一些代码和结果,但是我们的软件正在使用drawString调用而不是段落。基于上述示例的测试应用程序:
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.pdfmetrics import registerFontFamily
ttfFile = "/usr/share/fonts/truetype/ttf-tall-deco/TALLDECO.TTF"
pdfmetrics.registerFont(TTFont("TallDeco", ttfFile))
registerFontFamily('TallDeco',normal='TallDeco',bold='TallDeco-Bold',italic='TallDeco-Italic',boldItalic='TallDeco-BoldItalic')
p.setFont("TallDeco-Bold", 18) # Was Times-Bold...
在'TallDeco-Bold'上只会出现关键错误。
有什么建议吗?