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

