Regarding PyFPDF: Headers should be rendered.
Tables need at least a first TH, prior any TD, who indicates column width (and it is wise to use THEAD and TBODY when you have multiple pages), see: http://code.google.com/p/pyfpdf/wiki/WriteHTML <table border="0" align="center" width="50%"> <thead><tr><th width="30%">Header 1</th><th width="70%">header 2</th></tr></thead> <tbody> <tr><td>cell 1</td><td>cell 2</td></tr> <tr><td>cell 2</td><td>cell 3</td></tr> </tbody> </table> I'm planning to fix this issues, to cover more basic html conversions. You can see what can do pyfpdf in this file: http://pyfpdf.googlecode.com/files/html.pdf BTW, did you see the new visual designer of pdf templates? http://code.google.com/p/pyfpdf/wiki/Templates?ts=1306512231&updated=Templates#Designer It is a wx application, and I'm planning to connect it using DAL to ease template/report generation (I think this is much easier and manageable way than converting html). Best regards, Mariano Reingart http://www.sistemasagiles.com.ar http://reingart.blogspot.com On Fri, May 27, 2011 at 1:35 AM, Massimo Di Pierro <massimo.dipie...@gmail.com> wrote: > There are still problems...it does not render headers and tables... > > On May 26, 11:06 pm, Massimo Di Pierro <massimo.dipie...@gmail.com> > wrote: >> I just made a change to trunk about. the new generic.pdf uses pyfpdf >> and it is smart in locating files for including images. >> >> massimo >> >> On May 26, 10:44 pm, Christopher Steel <chris.st...@gmail.com> wrote: >> >> >> >> >> >> >> >> > I think report.pdf required reportlab? Massimo had an application for >> > creating forms that used markmin and latex. >> >> > This web2py app includes a plugin that implements an assortment of pdf >> > stuff (mostly your implementation of pyfpdf and the report.pdf, was >> > that a Google thing?. >> >> > Anyway the plugin is handy for testing and experimenting and includes >> > some other PDF examples, one with a different font. >> >> >http://code.google.com/p/uc-pyfpdf/ >> >> > If you need some testing let me know, I love PDF's >> >> > Cheers, >> >> > Chris >> >> > On May 26, 3:48 pm, Mariano Reingart <reing...@gmail.com> wrote: >> >> > > Putting the following code in generic.pdf and getting report.pdf does >> > > not work? >> > > (also, per default there is a generic.pdf made by massimo that uses >> > > markmin and latex if I remember it correctly) >> >> > > from gluon.contrib.pyfpdf import FPDF, HTMLMixin >> > > from gluon.sanitizer import sanitize >> >> > > class MyFPDF(FPDF, HTMLMixin): >> > > pass >> >> > > pdf=MyFPDF() >> > > pdf.add_page() >> > > html=response.render('%s/%s.html' % >> > > (request.controller,request.function)) >> > > html = sanitize(html, escape=False) >> > > pdf.write_html(html) >> > > response.headers['Content-Type']='application/pdf' >> > > response.write(pdf.output(dest='S'), escape=False) >> >> > > Mariano >> > > Reingarthttp://www.sistemasagiles.com.arhttp://reingart.blogspot.comOnThu, >> > > May 26, 2011 at 4:30 PM, luifran <lbernalhernan...@yahoo.es> wrote: >> > > > if I have a view , for example report.html, how I render this view in >> > > > pdf with the generic pdf? >> >> > > > On 4 oct 2010, 17:08, Mariano Reingart <reing...@gmail.com> wrote: >> > > >> On Sun, Oct 3, 2010 at 1:10 AM, mdipierro <mdipie...@cs.depaul.edu> >> > > >> wrote: >> >> > > >> > I am sure this can also be done and better with pyfpdf but I have >> > > >> > not >> > > >> > tried. Perhaps Mariano can help us >> >> > > >> Having latest web2py versions (including pyfpdf), write in a >> > > >> views/generic.pdf: >> >> > > >> ---- begin file ---- >> > > >> {{ >> >> > > >> from gluon.contrib.pyfpdf import FPDF, HTMLMixin >> > > >> from gluon.sanitizer import sanitize >> >> > > >> class MyFPDF(FPDF, HTMLMixin): >> > > >> pass >> >> > > >> pdf=MyFPDF()pdf.add_page() >> > > >> html=response.render('%s/%s.html' % >> > > >> (request.controller,request.function)) >> > > >> html = sanitize(html, escape=False)pdf.write_html(html) >> > > >> response.headers['Content-Type']='application/pdf' >> > > >> response.write(pdf.output(dest='S'), escape=False) >> >> > > >> }} >> >> > > >> ---- end file--- >> >> > > >> At MyFPDF class you can add headers and footers. >> >> > > >> The sanitize part is to strip some HTML tags that cannot be rendered >> > > >> (ie. javascript). >> >> > > >> As some DIVs contents and similar may still pass (like menus), a >> > > >> better alternative may be render only certains portions of the page in >> > > >> a custom view: >> >> > > >> pdf.write_html(str(XML(CENTER(section), sanitize=False))) >> >> > > >> Best regards, >> >> > > >> Mariano >> > > >> Reingarthttp://www.sistemasagiles.com.arhttp://reingart.blogspot.com