Should I do that too? On Tuesday, 29 October 2013 13:30:58 UTC-5, Mariano Reingart wrote: > > You can try to download the fpdf source code from the repository (see > the download zip link) and update your web2py distribution: > > http://code.google.com/p/pyfpdf/source/browse/ > > Please let follow this on the fpdf site: > > http://code.google.com/p/pyfpdf/issues/detail?id=66 > > Thanks for reporting it! > > Mariano Reingart > http://www.sistemasagiles.com.ar > http://reingart.blogspot.com > > > On Tue, Oct 29, 2013 at 2:41 PM, step <step...@gmail.com <javascript:>> > wrote: > > Fair enough, Richard, I'm providing sample code here, and I will link to > it > > in the issue report. > > Comments in the sample code explain the 0x95 codec error and also ask > some > > questions. > > Thanks for your help. > > > > Download TTF font DejaVuSans.ttf and copy it into gluon/contrib/fpdf/ > > You can download it from the FPDF site > > > http://code.google.com/p/pyfpdf/downloads/detail?name=fpdf_unicode_font_pack.zip&can=2&q= > > > > > Add this function to controllers/default.py > > > > def issue(): return dict() > > > > > > Replace views/generic.pdf > > {{""" > > replace the standard views/generic.pdf file with this file > > """ > > import os > > # we comment this as we are using a custom model function > > # from gluon.contrib.generics import pdf_from_html > > filename = '%s/%s.html' % (request.controller,request.function) > > if os.path.exists(os.path.join(request.folder,'views',filename)): > > html=response.render(filename) > > else: > > html=BODY(BEAUTIFY(response._vars)).xml() > > pass > > # note the pyfpdf instead of pdf in the function call > > # pyfpdf is defined in views/issue.html > > =pyfpdf_from_html(html) > > }} > > > > Create views/default/issue.html > > {{""" > > Put this file in [app]/default/issue.html then browse > .../default/issue.pdf. > > You should see a PDF file with two bullets, both with garbage > characters, > > one for an accented a, the other one for the euro sign. > > Now comment out the line after #1# below and uncomment the similar line > > after #2#. > > The aim is to print out the two characters correctly. Browse again the > pdf > > page to test... > > Instead you will get a codec error involving character 0x95. > > 0x95 is the bullet sign that FPDF adds for UL() below (counter-proof: > > replace OL() for UL() to get going) > > This reproduces issue #66 that I reported on the FPDF google code site > > http://code.google.com/p/pyfpdf/issues/detail?id=66. > > > > I'm still left scratching my head on how to print the euro character and > the > > accented a character at the same time. > > I tried playing with codecs in #3# below to no avail. > > """ > > def text(a): > > print repr(a) > > return a.decode("utf-8").encode("utf-8") > > #3# setting encode 'latin-1' prints accented characters (but errors > out > > on euro, which needs utf-8 encoding) > > > > def pyfpdf_from_html(html): > > import os > > from gluon.contrib.fpdf import FPDF, HTMLMixin > > > > class MyFPDF(FPDF, HTMLMixin): > > pass > > > > pdf = MyFPDF() > > pdf.add_font('DejaVu', '', 'DejaVuSans.ttf', uni=True) > > pdf.set_font('DejaVu', '', 12) > > pdf.add_page() > > #1#this works but the default font doesn't include the euro > character > > pdf.write_html('%s' % html) > > #2#this errors out with 'utf8' codec can't decode byte 0x95 in > position > > 5: invalid start byte > > ###note that 0x95 is the bullet sign that FPDF adds for UL() below - > > replace it with OL() to get going > > #pdf.write_html('<font face="DejaVu" size="12">%s<font>' % html) > > return XML(pdf.output(dest='S')) > > }} > > > > {{=HTML(BODY(UL([text('à'),text('€')])))}} > > > > > > > > On Monday, October 28, 2013 9:46:10 PM UTC+1, Richard wrote: > >> > >> did you user your_string.decode('utf8') before passing to FPDF?? > >> > >> I think you have mistake in your code, you should provide example code > in > >> you issue report!! > >> > >> Richard > >> > >> > >> On Mon, Oct 28, 2013 at 2:40 PM, step <step...@gmail.com> wrote: > >>> > >>> I discovered and reported in > >>> http://code.google.com/p/pyfpdf/issues/detail?id=66 an issue with > >>> gluon/contrib/FPFD. Basically, rendering HTML <UL> tags as PDF may > trigger a > >>> utf8 codec error because fpdf/html.py sets the bullet character as > '\x95'. > >>> As a work-around I have replaced '\x95' with '*'. > >>> > >>> -- > >>> Resources: > >>> - http://web2py.com > >>> - http://web2py.com/book (Documentation) > >>> - http://github.com/web2py/web2py (Source code) > >>> - https://code.google.com/p/web2py/issues/list (Report Issues) > >>> --- > >>> 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+un...@googlegroups.com. > >>> > >>> For more options, visit https://groups.google.com/groups/opt_out. > >> > >> > > -- > > Resources: > > - http://web2py.com > > - http://web2py.com/book (Documentation) > > - http://github.com/web2py/web2py (Source code) > > - https://code.google.com/p/web2py/issues/list (Report Issues) > > --- > > 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+un...@googlegroups.com <javascript:>. > > For more options, visit https://groups.google.com/groups/opt_out. >
-- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- 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.