by the way, not sure, if there is need to write
u"World äöü éè €"
or just "World äöü éè €"

seems, both work


On Thu, May 2, 2013 at 3:00 PM, Martin Weissenboeck <[email protected]>wrote:

> Some hours  later...
> Now I have tried to use the Arial-font:
>
> pdf.set_font('Arial','',10)
>
> There is always the same font - set_font seems to do nothing.
>
>
>
>
>
> 2013/5/2 Martin Weissenboeck <[email protected]>
>
>> Hi,
>> I have tried again to generate a pdf file from an htlm file with someunicode 
>> characters.
>> There is my test program. It's a simplified version, in the original
>> program there is a lot of additional test lines.
>>
>> def pp():
>>     from gluon.contrib.pyfpdf import FPDF, HTMLMixin
>>
>>     class MyFPDF(FPDF, HTMLMixin):
>>         def header(self): pass
>>         def footer(self): pass
>>
>>     # create a small table with some data:
>>     rows = [THEAD(TR(TH("Key",_width="70%"), TH("Value",_width="30%"))),
>>             TBODY(TR(TD("Hello"),TD("60")),
>>                   TR(TD("World äöü éè €"),TD("40")))]
>>     table = TABLE(*rows, _border="0", _align="center", _width="50%")
>>
>>     pdf=MyFPDF()
>>
>>     pdf.add_font('DejaVu', '', 'DejaVuSansCondensed.ttf',  uni=True)
>>     pdf.add_page()
>>     pdf.set_font('DejaVu','',10)     # set font method 1
>>     # table =TAG.font(table, _face="DejaVu")  # set font method 2
>>     html = str(XML(table, sanitize=False))
>>     pdf.write_html(html)
>>     response.headers['Content-Type'] = "application/pdf"
>>     return pdf.output(dest='S')
>>
>> I am sure that the font file is loaded, but it seems that the font is
>> not used.
>> I have tried two methods to change the font, but the results are the
>> same.
>> It doesn't look like Sanserif and every Unicode-Character is printed with
>> every single utf-8 byte. Maybe it's only a small error, but I could not
>> find it.
>>
>>
>> Regards, Martin[image: Inline-Bild 3]
>>
>>
>> 2013/4/30 Jurgis Pralgauskis <[email protected]>
>>
>>> > Which font do you want to include?
>>>
>>> DejaVu - I guess it covers western languages.. (could be withouth
>>> bold/italics to save space)
>>> Another one could be for eastern chars (buy I don't know anything about
>>> them...)
>>>
>>> > I gave you contributor access
>>>
>>> Thanks  :)
>>>
>>>
>>> On Wed, May 1, 2013 at 12:22 AM, Mariano Reingart <[email protected]>wrote:
>>>
>>>> Which font do you want to include?
>>>>
>>>> The font pack is 15MB, I don't know if it could be included with web2py.
>>>> Also, the problem is that no one is complete (you need several fonts
>>>> to cover west / east languages)
>>>>
>>>> https://pyfpdf.googlecode.com/files/fpdf_unicode_font_pack.zip
>>>>
>>>> BTW, thanks for you comments, I gave you contributor access, so you
>>>> can change the docs directly in the wiki if you like so:
>>>>
>>>> https://code.google.com/p/pyfpdf/w/list
>>>>
>>>> If you have any patch, also I'll be happy to review and include it ;-)
>>>>
>>>> Best regards,
>>>>
>>>> Mariano Reingart
>>>> http://www.sistemasagiles.com.ar
>>>> http://reingart.blogspot.com
>>>>
>>>>
>>>> On Sun, Apr 28, 2013 at 7:40 AM, Jurgis Pralgauskis
>>>> <[email protected]> wrote:
>>>> > by the way -- would it be possible to pack at least one ttf with
>>>> web2py,
>>>> > and in normalize_text , when it notices unicode,
>>>> > automatically add (and set) default ttf font (if such is not set) to
>>>> render
>>>> > ok ?
>>>> >
>>>> >
>>>> >
>>>> > On Sun, Apr 28, 2013 at 12:18 PM, Jurgis Pralgauskis
>>>> > <[email protected]> wrote:
>>>> >>
>>>> >> SOLVED - the problem was that I needed to reload web2py -- for
>>>> changed
>>>> >> html.py to make effect ;)
>>>> >>
>>>> >> one more issue
>>>> >> that after write_html(..)   it "forgets" the previously set font
>>>> (should
>>>> >> be at least mentioned in docs.. :)
>>>> >> https://code.google.com/p/pyfpdf/issues/detail?id=54#c2
>>>> >>
>>>> >>
>>>> >>
>>>> >>
>>>> >> On Sat, Apr 27, 2013 at 9:06 PM, Mariano Reingart <
>>>> [email protected]>
>>>> >> wrote:
>>>> >>>
>>>> >>> Did you add the TTF unicode font with add_font?
>>>> >>> Can you post a complete example (ie a script.py just with the code
>>>> to
>>>> >>> test), so I can reproduce it easily.
>>>> >>>
>>>> >>> Best regards,
>>>> >>>
>>>> >>> Mariano Reingart
>>>> >>> http://www.sistemasagiles.com.ar
>>>> >>> http://reingart.blogspot.com
>>>> >>>
>>>> >>>
>>>> >>> On Sat, Apr 27, 2013 at 7:30 AM, Jurgis Pralgauskis
>>>> >>> <[email protected]> wrote:
>>>> >>> > I see 2 lines were changed, the main
>>>> >>> >
>>>> >>> > - if 'face' in attrs and attrs['face'].lower() in self.font_list:
>>>> >>> > +   if 'face' in attrs:
>>>> >>> >
>>>> >>> > but I still get
>>>> >>> >
>>>> >>> >
>>>> >>> >   File
>>>> >>> >
>>>> "/home/jurgis/web2py/applications/apskaitele/controllers/default.py",
>>>> >>> > line 61, in pdftest
>>>> >>> >
>>>> >>> >
>>>> >>> >     pdf.write_html(u"<font face='DejaVu'>Ąžuolas</font>"
>>>> >>> > )
>>>> >>> >
>>>> >>> >
>>>> >>> > File "/home/jurgis/web2py/gluon/contrib/fpdf/html.py", line 397,
>>>> in
>>>> >>> > write_html
>>>> >>> >
>>>> >>> >   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
>>>> >>> >
>>>> >>> >   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
>>>> >>> > )
>>>> >>> >
>>>> >>> >
>>>> >>> >
>>>> >>> > and if I
>>>> >>> > pdf.write_html(u"<font
>>>> face='DejaVu'>Ąžuolas</font>".encode('utf8'))
>>>> >>> >
>>>> >>> > I get Ä„Å3⁄4uolas
>>>> >>> >
>>>> >>> >
>>>> >>> >
>>>> >>> >
>>>> >>> > On Sat, Apr 27, 2013 at 3:24 AM, Mariano Reingart <
>>>> [email protected]>
>>>> >>> > wrote:
>>>> >>> >>
>>>> >>> >> Sorry, I misread the email.
>>>> >>> >>
>>>> >>> >> Unicode fonts were not supported in html2pdf.
>>>> >>> >>
>>>> >>> >> I've made a change to allow them, please update html.py:
>>>> >>> >>
>>>> >>> >> https://pyfpdf.googlecode.com/hg/fpdf/html.py
>>>> >>> >>
>>>> >>> >> Then, you need to load a ttf unicode font, and then pass it in
>>>> <font>
>>>> >>> >> face attribute:
>>>> >>> >>
>>>> >>> >> pdf=MyFPDF()
>>>> >>> >> # add utf8 font
>>>> >>> >> pdf.add_font('DejaVu', '', 'DejaVuSansCondensed.ttf', uni=True)
>>>> >>> >> # first page:
>>>> >>> >> pdf.add_page()
>>>> >>> >> pdf.write_html(u"<font face='DejaVu'>Ąžuolas</font>")
>>>> >>> >>
>>>> >>> >> For more info and complete code, see:
>>>> >>> >>
>>>> >>> >> https://code.google.com/p/pyfpdf/wiki/Web2Py
>>>> >>> >>
>>>> >>> >> Let me know if that works so I can update the docs and web2py
>>>> contrib
>>>> >>> >> version
>>>> >>> >>
>>>> >>> >> Best regards
>>>> >>> >> Mariano Reingart
>>>> >>> >> http://www.sistemasagiles.com.ar
>>>> >>> >> http://reingart.blogspot.com
>>>> >>> >>
>>>> >>> >>
>>>> >>> >> On Fri, Apr 26, 2013 at 11:45 PM, Mariano Reingart
>>>> >>> >> <[email protected]>
>>>> >>> >> wrote:
>>>> >>> >> > On Fri, Apr 26, 2013 at 11:42 PM, Mariano Reingart
>>>> >>> >> > <[email protected]>
>>>> >>> >> > wrote:
>>>> >>> >> >> On Fri, Apr 26, 2013 at 6:34 PM, Jonathan Lundell
>>>> >>> >> >> <[email protected]>
>>>> >>> >> >> wrote:
>>>> >>> >> >>> On 26 Apr 2013, at 1:17 PM, Jurgis Pralgauskis
>>>> >>> >> >>> <[email protected]> wrote:
>>>> >>> >> >>>
>>>> >>> >> >>> 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
>>>> >>> >> >>>
>>>> >>> >> >>>
>>>> >>> >> >>> The fpdf logic uses utf8 for fonts it sees as UTF-based,
>>>> otherwise
>>>> >>> >> >>> latin-1.
>>>> >>> >> >>> It looks to me as though either it isn't recognizing your
>>>> fonts as
>>>> >>> >> >>> UTF, or
>>>> >>> >> >>> there's some overlooked case that it's making a mistake
>>>> with. Have
>>>> >>> >> >>> a
>>>> >>> >> >>> look at
>>>> >>> >> >>> FPDF.set_font:
>>>> >>> >> >>>
>>>> >>> >> >>>         self.unifontsubset = (self.fonts[fontkey]['type'] ==
>>>> >>> >> >>> 'TTF')
>>>> >>> >> >>>
>>>> >>> >> >>> ...and make sure it's getting set.
>>>> >>> >> >>>
>>>> >>> >> >>
>>>> >>> >> >> Yes, as Jhonatan saids, FPDF (and the PDF standard, BTW) only
>>>> >>> >> >> support
>>>> >>> >> >> latin1 characters for standard font.
>>>> >>> >> >>
>>>> >>> >> >> If you need utf8 characters, you need to embeed a T
>>>> >>> >> >
>>>> >>> >> > You need to embed a UTF8 TTF font, for example:
>>>> >>> >> >
>>>> >>> >> > # Add a DejaVu Unicode font (uses UTF-8)
>>>> >>> >> > # Supports more than 200 languages. For a coverage status see:
>>>> >>> >> > #
>>>> >>> >> >
>>>> >>> >> >
>>>> http://dejavu.svn.sourceforge.net/viewvc/dejavu/trunk/dejavu-fonts/langcover.txt
>>>> >>> >> > pdf.add_font('DejaVu', '', 'DejaVuSansCondensed.ttf', uni=True)
>>>> >>> >> >
>>>> >>> >> > (sorry, the previous message was sent incomplete)
>>>> >>> >> >
>>>> >>> >> > I'll try to enhance the docs about this, thank for reporting
>>>> the
>>>> >>> >> > issue
>>>> >>> >> >
>>>> >>> >> > Best regards
>>>> >>> >> >
>>>> >>> >> > Mariano Reingart
>>>> >>> >> > http://www.sistemasagiles.com.ar
>>>> >>> >> > http://reingart.blogspot.com
>>>> >>> >>
>>>> >>> >> --
>>>> >>> >>
>>>> >>> >> ---
>>>> >>> >> You received this message because you are subscribed to a topic
>>>> in the
>>>> >>> >> Google Groups "web2py-users" group.
>>>> >>> >> To unsubscribe from this topic, visit
>>>> >>> >>
>>>> >>> >>
>>>> https://groups.google.com/d/topic/web2py/KJDeQoLKw-M/unsubscribe?hl=en.
>>>> >>> >> To unsubscribe from this group and all its topics, send an email
>>>> to
>>>> >>> >> [email protected].
>>>> >>> >>
>>>> >>> >> For more options, visit https://groups.google.com/groups/opt_out
>>>> .
>>>> >>> >>
>>>> >>> >>
>>>> >>> >
>>>> >>> >
>>>> >>> >
>>>> >>> > --
>>>> >>> > Jurgis Pralgauskis
>>>> >>> > tel: 8-616 77613;
>>>> >>> > Don't worry, be happy and make things better ;)
>>>> >>> > http://galvosukykla.lt
>>>> >>> >
>>>> >>> > --
>>>> >>> >
>>>> >>> > ---
>>>> >>> > 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.
>>>> >>> >
>>>> >>> >
>>>> >>>
>>>> >>> --
>>>> >>>
>>>> >>> ---
>>>> >>> You received this message because you are subscribed to a topic in
>>>> the
>>>> >>> Google Groups "web2py-users" group.
>>>> >>> To unsubscribe from this topic, visit
>>>> >>>
>>>> https://groups.google.com/d/topic/web2py/KJDeQoLKw-M/unsubscribe?hl=en.
>>>> >>> To unsubscribe from this group and all its topics, send an email to
>>>> >>> [email protected].
>>>> >>> For more options, visit https://groups.google.com/groups/opt_out.
>>>> >>>
>>>> >>>
>>>> >>
>>>> >>
>>>> >>
>>>> >> --
>>>> >> Jurgis Pralgauskis
>>>> >> tel: 8-616 77613;
>>>> >> Don't worry, be happy and make things better ;)
>>>> >> http://galvosukykla.lt
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > --
>>>> > Jurgis Pralgauskis
>>>> > tel: 8-616 77613;
>>>> > Don't worry, be happy and make things better ;)
>>>> > http://galvosukykla.lt
>>>> >
>>>> > --
>>>> >
>>>> > ---
>>>> > 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.
>>>> >
>>>> >
>>>>
>>>> --
>>>>
>>>> ---
>>>> You received this message because you are subscribed to a topic in the
>>>> Google Groups "web2py-users" group.
>>>> To unsubscribe from this topic, visit
>>>> https://groups.google.com/d/topic/web2py/KJDeQoLKw-M/unsubscribe?hl=en.
>>>> To unsubscribe from this group and all its topics, send an email to
>>>> [email protected].
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Jurgis Pralgauskis
>>> tel: 8-616 77613;
>>> Don't worry, be happy and make things better ;)
>>> http://galvosukykla.lt
>>>
>>> --
>>>
>>>
>>
>  --
>
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "web2py-users" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/web2py/KJDeQoLKw-M/unsubscribe?hl=en.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
Jurgis Pralgauskis
tel: 8-616 77613;
Don't worry, be happy and make things better ;)
http://galvosukykla.lt

-- 

--- 
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.


<<image.png>>

Reply via email to