Ajout d'une police pour une utilisation dans ReportLab

voix
11

Je suis en train d'ajouter une police à la ReportLab python pour que je puisse l'utiliser pour une fonction. La fonction utilise canvas.Canvas pour dessiner un tas de texte dans un fichier PDF, rien de compliqué, mais je dois ajouter une police à largeur fixe pour les problèmes de mise en page.

Quand j'ai essayé d'enregistrer une police en utilisant ce que peu d'informations je pouvais trouver, qui semblait fonctionner. Mais quand j'ai essayé d'appeler .addFont ( « fontname ») de mon objet Canvas Je continue de recevoir

« Instance PDFDocument n'a pas d'attribut « AddFont » »

la fonction est tout simplement pas mis en œuvre? Comment puis-je obtenir l'accès aux polices autres que les 10 ou si ceux par défaut répertoriés dans .getAvailableFonts? Merci.

Certains exemples de code de ce que je suis en train de faire passer:

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

Pour enregistrer la police, j'ai essayé

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

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

où « ghettomarquee.ttf » était juste une police au hasard que j'avais traîner.

Créé 16/04/2010 à 22:14
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
7

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

setFontpour définir le nom de police que vous allez utiliser, et drawString.

ReportLab intégrera automatiquement la police si vous l'utilisez dans le document, vous ne devez pas ajouter manuellement une fois que vous avez enregistré la police dans le monde sous un autre nom.

Créé 16/04/2010 à 22:45
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more