2011-02-04 17 views

Respuesta

41

Perhabs Tahoma es una fuente TrueType, y debe registrarla primero. De acuerdo con la guía del usuario de ReportLab que tenga que hacer esto:

from reportlab.pdfbase import pdfmetrics 
from reportlab.pdfbase.ttfonts import TTFont 

pdfmetrics.registerFont(TTFont('Vera', 'Vera.ttf')) 
pdfmetrics.registerFont(TTFont('VeraBd', 'VeraBd.ttf')) 
pdfmetrics.registerFont(TTFont('VeraIt', 'VeraIt.ttf')) 
pdfmetrics.registerFont(TTFont('VeraBI', 'VeraBI.ttf')) 

canvas.setFont('Vera', 32) 
canvas.drawString(10, 150, "Some text encoded in UTF-8") 
canvas.drawString(10, 100, "In the Vera TT Font!") 

El objeto de la lona tiene un método getAvailableFonts que debe devolver todas las fuentes actualmente registrados (y por lo tanto utilizables).

+0

Gracias que ha hecho mi día, funcionó, hay alguna forma de utilizar las fuentes OpenType de esta manera ... Última – srisar

+0

vez que lo revisé no tenía soporte para el tipo abierto. Recientemente necesité usar un OTF, podría convertirlo a TTF con fontforge. Pero como OTF es un formato más nuevo, es posible que pierda algunas características. Afortunadamente para mí no hizo una diferencia en ese momento. –

+0

Quería usar la fuente Consolas, pero parece ser un tipo abierto, por eso lo pedí. gracias por el gran consejo de todos modos .. – srisar

0

Al agregar DejaVuSans Font a la aplicación, resolvió mi problema. Aquí es el fragmento de código

pdfmetrics.registerFont(TTFont('DejaVuSans','DejaVuSans.ttf')) 

y utilizar UTF8 para todos codificación. :)

Cuestiones relacionadas