2010-04-16 8 views
11

Ich versuche, eine Schriftart zum Python ReportLab hinzuzufügen, damit ich es für eine Funktion verwenden kann. Die Funktion verwendet canvas.Canvas, um eine Menge Text in ein PDF zu zeichnen, nichts Kompliziertes, aber ich muss eine Schriftart mit fester Breite für Layoutprobleme hinzufügen.Hinzufügen einer Schriftart für die Verwendung in ReportLab

Als ich versuchte, eine Schriftart mit den wenigen Informationen zu registrieren, die ich finden konnte, schien das zu funktionieren. Aber als ich versuchte .addFont (‚Fontnamen‘) von meinem Canvas-Objekt zu nennen Ich erhalte

„PDFDocument Instanz hat kein Attribut‚AddFont‘“

Ist die Funktion einfach nicht umgesetzt? Wie bekomme ich Zugriff auf andere Schriftarten als die etwa 10 Standard-Schriftarten, die in .getAvailableFonts aufgeführt sind? Vielen Dank.

Einige Beispiel-Code von dem, was ich versuche, geschehen zu lassen:

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() 

die Schriftart zu registrieren, ich versuchte

from reportlab.lib.fonts import addMapping 
from reportlab.pdfbase import pdfmetrics 

pdfmetrics.registerFont(TTFont('TestFont', 'ghettomarquee.ttf')) 
addMapping('TestFont', 0, 0, 'TestFont') 

wo 'ghettomarquee.ttf' ich nur eine zufällige Schrift war hatte herumliegen.

Antwort

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

setFont den Namen der Schriftart setzen Sie und drawString verwenden werden.

ReportLab wird die Schriftart automatisch einbetten, wenn Sie sie im Dokument verwenden. Sie müssen sie nicht manuell hinzufügen, nachdem Sie die Schriftart global unter einem Namen registriert haben.

+1

meinst du 'c.setFont ('TestFont')' in der ersten Zeile? – drevicko

Verwandte Themen