Well, me again. I decided that I wanted to use points as measurements
instead of percentages, so now it barfs with an AttributeError.
from gluon.contrib.pyfpdf import FPDF, HTMLMixin
from gluon.html import *
pets = TABLE(_width="720pt")
pets.append(TR(TH('Dogs', _width="72pt",
_align="left"),TH("Cats",_width="72pt",
_align="left"),TH('Snakes',_width="72pt", _align="left")))
pets.append(TR('Collies','Tabby','Python', _width="60pt"))
pets.append(TR('Akitas', 'Persian', 'Garter'))
pets.append(TR('German Shepherds', 'Alley Cats', 'Rattlesnakes'))
class MyFPDF(FPDF, HTMLMixin):
pass
pdf=MyFPDF()
#First page
pdf.add_page()
pdf.write_html(pets.xml())
pdf.output('html2.pdf','F')
This is clearly unremarkable HTML, but no, I get tracebacks like so:
Traceback (most recent call last):
File "pyfpdf_test.py", line 73, in <module>
pdf.write_html(pets.xml())
File "/home/dave/PythonTraining/web2py/gluon/contrib/pyfpdf/html.py",
line 388, in write_html
h2p.feed(text)
File "/usr/lib/python2.7/HTMLParser.py", line 114, in feed
self.goahead(0)
File "/usr/lib/python2.7/HTMLParser.py", line 158, in goahead
k = self.parse_starttag(i)
File "/usr/lib/python2.7/HTMLParser.py", line 324, in parse_starttag
self.handle_starttag(tag, attrs)
File "/home/dave/PythonTraining/web2py/gluon/contrib/pyfpdf/html.py",
line 241, in handle_starttag
self.pdf.set_x(self.table_offset)
AttributeError: HTML2FPDF instance has no attribute 'table_offset'
I find this remarkable; this ordinary HTML; web2py encourages the use of
HTML helpers. web2py is easy to use, requires few dependencies, etc. etc.
But what a *fight* to create a simple table-based PDF! :-( And I'm still
experimenting in the layout stage. My final report will be much larger and
include nested tables *(that are already rendering fine in HTML, but not in
pyfpdf / html2pdf)*.
Should I bite the bullet and install Reportlab? It'll be harder to get
started, more complicated to install & maintain (this will have to go on
multiple machines). The idea of a simple web2py project was very attractive
for these reasons.
Are others out there creating PDFs from HTML with pyfpdf & html2pdf??
--