tutorial span español ejemplos python reportlab

span - ¿Cómo configurar cualquier fuente en reportlab Canvas en python?



reportlab tutorial español (3)

Al agregar la fuente DejaVuSans a la aplicación se resolvió mi problema. Aquí está el fragmento de código

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

Y usa UTF8 para toda la codificación. :)

Estoy usando reportlab para crear archivos PDF. Cuando trato de establecer una fuente usando el siguiente método, obtengo un KeyError :

pdf = Canvas(''test.pdf'') pdf.setFont(''Tahoma'', 16)

Pero si uso ''Courier'' lugar de ''Tahoma'' no hay problema. ¿Cómo puedo usar Tahoma?


Comienza con la respuesta de Reiner .

Es perfecto con una advertencia.

Reportlab solo busca fuentes en carpetas predefinidas :

TTFSearchPath = ( ''c:/winnt/fonts'', ''c:/windows/fonts'', ''/usr/lib/X11/fonts/TrueType/'', ''/usr/share/fonts/truetype'', ''/usr/share/fonts'', #Linux, Fedora ''/usr/share/fonts/dejavu'', #Linux, Fedora ''%(REPORTLAB_DIR)s/fonts'', #special ''%(REPORTLAB_DIR)s/../fonts'', #special ''%(REPORTLAB_DIR)s/../../fonts'',#special ''%(CWD)s/fonts'', #special ''~/fonts'', ''~/.fonts'', ''%(XDG_DATA_HOME)s/fonts'', ''~/.local/share/fonts'', #mac os X - from #http://developer.apple.com/technotes/tn/tn2024.html ''~/Library/Fonts'', ''/Library/Fonts'', ''/Network/Library/Fonts'', ''/System/Library/Fonts'', )

Si está tratando de usar una fuente ttf que ha descargado de Internet y desea que esa fuente esté disponible en todos sus servidores, sugeriría lo siguiente:

  • Agregue la fuente a su proyecto en cualquier directorio. por ejemplo: / project_root / app / lib / reportlabs / fonts /
  • Asegúrate de tener algo como BASE_DIR / ROOT_DIR en tu configuración:

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

  • agrega la siguiente línea a un archivo python que genera pdf:

    from django.conf import settings rl_config.TTFSearchPath.append(str(settings.BASE_DIR) + ''/app/lib/reportlabs/fonts'') pdfmetrics.registerFont(TTFont(''Copperplate'', ''Copperplate-Gothic-Bold.ttf''))


Perhabs Tahoma es una fuente TrueType, y debes registrarla primero. De acuerdo con la guía del usuario de ReportLab, debe 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 lienzo tiene un método getAvailableFonts que debe devolver todas las fuentes registradas actualmente (y, por lo tanto, utilizables).