2010-04-16 46 views
11

我想添加一個字體到python ReportLab,以便我可以使用它作爲函數。該函數使用canvas.Canvas在PDF中繪製一堆文本,沒有什麼複雜的,但我需要爲佈局問題添加固定寬度的字體。添加一個字體在ReportLab中使用

當我嘗試使用我可以找到的小信息註冊字體時,這看起來很奏效。但是,當我試圖從我的Canvas對象調用.addFont(「字體名」)我不斷收到

「PDFDocument實例已沒有屬性‘addFont’」

是功能只是沒有執行?如何訪問除.getAvailableFonts中列出的10個左右默認字體以外的字體?謝謝。

的什麼,我試圖讓一些示例代碼發生:

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」只是一個隨機的字體我躺在身邊。

回答

7
c.setFont('TestFont') 
c.drawString(1,1,'test data here') 

setFont設置你要使用,並drawString字體名稱。

如果您在文檔中使用它,ReportLab將自動嵌入字體,您不必在名稱全局註冊字體後手動添加字體。

+1

你的意思是'c.setFont('TestFont')'在第一行嗎? – drevicko 2014-02-25 05:35:11

相關問題