Could you send me a complete example? Are you using the updated version of pyfpdf?
Mariano Reingart http://www.sistemasagiles.com.ar http://reingart.blogspot.com On Thu, May 2, 2013 at 12:39 PM, Martin Weissenboeck <mweis...@gmail.com>wrote: > Thank you, I have tried u"World äöü éè €" and > "World äöü éè €" > > and both > > > table =TAG.font(table, _face="DejaVu") > html = str(XML(table, sanitize=False)) > pdf.write_html(html) > > and > > > html = str(XML(table, sanitize=False)) > html="<font face='DejaVu'>%s</font>" % html > pdf.write_html(html) > > The result is the same html-string > > No success - the pdf file remains unchanged. > It looks like Times Roman and not Sans serif. > > Has anybody tried my whole example with success? > > Regards, Martin > > > > 2013/5/2 Jurgis Pralgauskis <jurgis.pralgaus...@gmail.com> > >> 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 >> <mweis...@gmail.com>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 <mweis...@gmail.com> >>> >>>> 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 <jurgis.pralgaus...@gmail.com> >>>> >>>>> > 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 >>>>> <reing...@gmail.com>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 >>>>>> <jurgis.pralgaus...@gmail.com> 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 >>>>>> > <jurgis.pralgaus...@gmail.com> 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 < >>>>>> reing...@gmail.com> >>>>>> >> 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 >>>>>> >>> <jurgis.pralgaus...@gmail.com> 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 < >>>>>> reing...@gmail.com> >>>>>> >>> > 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 >>>>>> >>> >> <reing...@gmail.com> >>>>>> >>> >> wrote: >>>>>> >>> >> > On Fri, Apr 26, 2013 at 11:42 PM, Mariano Reingart >>>>>> >>> >> > <reing...@gmail.com> >>>>>> >>> >> > wrote: >>>>>> >>> >> >> On Fri, Apr 26, 2013 at 6:34 PM, Jonathan Lundell >>>>>> >>> >> >> <jlund...@pobox.com> >>>>>> >>> >> >> wrote: >>>>>> >>> >> >>> On 26 Apr 2013, at 1:17 PM, Jurgis Pralgauskis >>>>>> >>> >> >>> <jurgis.pralgaus...@gmail.com> 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 >>>>>> >>> >> web2py+unsubscr...@googlegroups.com. >>>>>> >>> >> >>>>>> >>> >> 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 web2py+unsubscr...@googlegroups.com. >>>>>> >>> > 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 >>>>>> >>> web2py+unsubscr...@googlegroups.com. >>>>>> >>> 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 web2py+unsubscr...@googlegroups.com. >>>>>> > 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 >>>>>> web2py+unsubscr...@googlegroups.com. >>>>>> 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 >>> web2py+unsubscr...@googlegroups.com. >>> 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 web2py+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > > -- > > --- > 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 web2py+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- --- 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
<<image.png>>