[python-brasil] Modelo de Fonte no Reportlab

687 views
Skip to first unread message

Antonio Prado

unread,
Feb 22, 2011, 4:53:43 PM2/22/11
to python...@yahoogrupos.com.br
Em uma tela utilizei o gtk.FontButton para o usuário selecionar o modelo de
fonte desejado na impressão de um relatório utilizando o ReportLab.

Ocorre que a maioria dos modelos listados pelo gtk.FontButton parece não
estar disponível no ReportLab, como por exemplo Arial e Times New Roman.

Ao tentar definir uma fonte, tenha a seguinte mensagem de erro:

Traceback (innermost last):
File "<stdin>", line 1, in <module>
File "core/lib/relatorio.py", line 522, in setFonte_modelo
self.relatorio.setFont(self.fonte_modelo, self.fonte_tamanho)
File "/usr/lib/python2.6/dist-packages/reportlab/pdfgen/canvas.py", line
1378, in setFont
font = pdfmetrics.getFont(self._fontname)
File "/usr/lib/python2.6/dist-packages/reportlab/pdfbase/pdfmetrics.py",
line 662, in findFontAndRegister
face = getTypeFace(fontName)
File "/usr/lib/python2.6/dist-packages/reportlab/pdfbase/pdfmetrics.py",
line 621, in getTypeFace
return _typefaces[faceName]
KeyError: 'Times New Roman'


Como proceder com esta situação?

Obrigado.

Antonio.


[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html


Luciano Barcaro

unread,
Feb 22, 2011, 5:10:46 PM2/22/11
to python...@yahoogrupos.com.br
Por padrão, o reportlab (adobe com pdf) disponibiliza apenas algumas fontes
(que eles podem garantir que sempre existirão).

Para usar qualquer fonte TrueType arbitrária, vc precisa registrar ela
antes.

Dá uma olhada na documentação do reportlab,
mais especificamente no
http://www.reportlab.com/docs/reportlab-userguide.pdf
<http://www.reportlab.com/docs/reportlab-userguide.pdf>no ítem "3.5 TrueType
Font Support"

Grande abraço
---
Luciano Barcaro

I´m on a seafood diet. I see food and I eat it


Em 22 de fevereiro de 2011 18:53, Antonio Prado <sup...@antonioprado.eti.br
> escreveu:

Antonio Prado

unread,
Feb 23, 2011, 6:25:57 AM2/23/11
to python...@yahoogrupos.com.br
Em 22 de fevereiro de 2011 19:10, Luciano Barcaro <luciano...@gmail.com
> escreveu:

> Por padrão, o reportlab (adobe com pdf) disponibiliza apenas algumas fontes
> (que eles podem garantir que sempre existirão).
>
> Para usar qualquer fonte TrueType arbitrária, vc precisa registrar ela
> antes.
>
> Dá uma olhada na documentação do reportlab,
> mais especificamente no
> http://www.reportlab.com/docs/reportlab-userguide.pdf
> <http://www.reportlab.com/docs/reportlab-userguide.pdf>no ítem "3.5
> TrueType
> Font Support"
>
> Grande abraço
> ---
> Luciano Barcaro
>


Segui os procedimentos para registrar a fonte e testei com os dois modelos
citados no manual, no entanto não deu certo::

>>> from reportlab.pdfbase import pdfmetrics
>>> from reportlab.pdfbase.ttfonts import TTFont
>>> pdfmetrics.registerFont(TTFont('Times-Roman', "Times-Roman.ttf"))

>>> TTFError: Can't open file "Times-Roman.ttf"


Continuo buscando a solução.


Obrigado.


Antonio.

Felipe Zorzo

unread,
Feb 23, 2011, 6:36:23 AM2/23/11
to python...@yahoogrupos.com.br
Em 23 de fevereiro de 2011 08:25, Antonio Prado <sup...@antonioprado.eti.br
> escreveu:

Isso acontece porque esse arquivo Times-Roman.ttf não está no search path do
ReportLab.

Mas isso não importa. A Times-Roman é uma das fontes que sempre vão estar
incluídas em um PDF. Você não precisa registrá-la antes de usar.

--
Felipe Bernardo Zorzo

ajprado2000

unread,
Feb 23, 2011, 6:42:54 AM2/23/11
to python...@yahoogrupos.com.br
--- Em python...@yahoogrupos.com.br, Felipe Zorzo <felipe.b.zorzo@...> escreveu
>
> Em 23 de fevereiro de 2011 08:25, Antonio Prado <suporte@...

> > escreveu:
>
> > Em 22 de fevereiro de 2011 19:10, Luciano Barcaro <
> > luciano.barcaro@...
> > > suporte@...

Tentei a Times-Roman apenas como teste, uma vez que foi citada no manual.

O que desejo é utilizar uma fonte escolhida pelo usuário, através de um gtk,FontButton.

Acha que o problema está relacionado a path?

Obrigado.

Antonio.

ajprado2000

unread,
Feb 23, 2011, 7:17:54 AM2/23/11
to python...@yahoogrupos.com.br

--- Em python...@yahoogrupos.com.br, "ajprado2000" <suporte@...> escreveu
>
> --- Em python...@yahoogrupos.com.br, Felipe Zorzo <felipe.b.zorzo@> escreveu


> >
> > Em 23 de fevereiro de 2011 08:25, Antonio Prado <suporte@

> > > escreveu:
> >
> > > Em 22 de fevereiro de 2011 19:10, Luciano Barcaro <
> > > luciano.barcaro@

O problema para o registro da fonte está relacionado ao path, conforme informado.

Para adicionar o path com o endereço da font, devemos utilizar:
reportlab.rl_config.TTFSearchPath.append("/usr/share/fonts/truetype/msttcorefonts/")

O endereço acima utilizado é mero exemplo.

Haver encontrado tal solução, me levou a conclusão que utilizar o gtk.FontButton para selecionar fontes para serem utilizadas pelo ReportLab parece não ser o melhor caminho.

O que podem me sugerir para esta finalidade?

Reply all
Reply to author
Forward
0 new messages