ok, SOLVED ttf issue for unicode example
http://code.google.com/p/pyfpdf/wiki/Unicode
just needed to create directory gluon > contrib > fpdf > font
and place needed ttf files insited it :)
then pdf.write(8, u"Ąžuolas") works fine
BUT - how to make it work with write_html(...) ?
write_html( str(P( u"Ąžuolas" )) # produces "Ąžuolas"
pdf.write_html( u'Ąžuolas'.encode('utf8') ) # also "Ąžuolas"
pdf.write_html( u'Ąžuolas' ) gives error
File
"/home/jurgis/web2py/applications/apskaitele/controllers/default.py"<https://jurgis.pythonanywhere.com/admin/default/edit/apskaitele/controllers/default.py>,
line 59, in pdftest
pdf.write_html( u'Ąžuolas' )
File "/home/jurgis/web2py/gluon/contrib/fpdf/html.py", line 397, in
write_html
h2p.feed(text)
File "/usr/local/lib/python2.7/HTMLParser.py", line 114, in feed
self.goahead(0)
File "/usr/local/lib/python2.7/HTMLParser.py", line 152, in goahead
if i < j: self.handle_data(rawdata[i:j])
File "/home/jurgis/web2py/gluon/contrib/fpdf/html.py", line 122, in
handle_data
self.pdf.write(self.h,txt)
File "/home/jurgis/web2py/gluon/contrib/fpdf/fpdf.py", line 822, in write
txt = self.normalize_text(txt)
File "/home/jurgis/web2py/gluon/contrib/fpdf/fpdf.py", line 1012, in
normalize_text
txt = txt.encode('latin1')
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-1:
ordinal not in range(256)
pdf.write_html( u'Ąžuolas'.decode('utf8') )
2013 m. balandis 26 d., penktadienis 22:03:41 UTC+3, Jurgis Pralgauskis
rašė:
>
> Hi,
>
> but this seems to work not for all unicode characters
> like if I have "Ąžuolas"
>
> u"Ąžuolas".encode('iso-8859-1') gives error :/
>
> UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-1:
> ordinal not in range(256)
>
>
> I also posted on hosting forum looking for TTF solution
> https://www.pythonanywhere.com/forums/topic/602/#id_post_4362
>
> 2011 m. balandis 29 d., penktadienis 06:35:40 UTC+3, Alexandre Andrade
> rašė:
>>
>> The same can be converted to a function, to make it easier:
>>
>> def lt(str):
>> return unicode(str,'utf-8').encode('iso-8859-1')
>>
>>
>> so just
>>
>> pdf.cell(50,20,lt('Helló Wórld'), 0,2,'L')
>>
>> 2011/4/29 Christopher Steel <[email protected]>
>>
>>>
>>> This solution works well. You will need to make a minor correction and
>>> remove the single quotes around 'txt' in the second line. The edited
>>> version looks like this:
>>>
>>> txt = 'Hélló wórld'
>>> utxt = unicode(txt, 'utf-8')
>>> stxt = utxt.encode('iso-8859-1')
>>> pdf.cell(50,20, stxt, 0, 2, 'L')
>>>
>>>
>>> Thanks for the hint Bernardo!
>>>
>>> C.
>>>
>>>
>>> ---------- Forwarded message ----------
>>> From: Bernardo <[email protected]>
>>> Date: Sep 25 2010, 7:35 am
>>> Subject: Solved -- Problems with special characters and pyfpdf
>>> To: web2py-users
>>>
>>>
>>> Hi all,
>>>
>>> When usingpyfpdfwhich comes with web2py framework, there are some
>>> issues withspecialcharacterssuch as accentedcharacters(á, é,
>>> í, ...). After some research, I found out thatpyfpdfjust understands
>>> 'iso-8859-1', and web2py gives him the strings in 'utf-8' format.
>>>
>>> So, as a solution, in your python code you just have to convert the
>>> string before passing it topyfpdf, like this:
>>>
>>> txt = 'Hélló wórld'
>>> utxt = unicode('txt', 'utf-8')
>>> stxt = utxt.encode('iso-8859-1')
>>> pdf.cell(50,20, stxt, 0, 2, 'L')
>>>
>>> If anyone has any doubts, just ask. I hope this can help someone...
>>>
>>> kind regards,
>>> Bernardo
>>>
>>
>>
>>
>> --
>> Atenciosamente
>>
>>
>> Alexandre Andrade
>> Hipercenter.com Classificados Gratuitos
>>
>
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.