[reportlab-users] Page background image with Platypus?
Robin Becker
robin at reportlab.com
Wed Oct 24 13:09:48 EDT 2007
Erik Wickstrom wrote:
> I tried this approach - but I'm starting to get other problems:
>
> Traceback (most recent call last):
> File "/usr/local/lib/python2.4/site-packages/django/core/handlers/base.py"
> in _real_get_response
> 81. response = callback(request, *callback_args, **callback_kwargs)
> File "/root/journal/gazette/views.py" in some_view
> 101. doc.build(elements)
>
> AttributeError at /gazette/test/
> GazettePageTemplate instance has no attribute 'build'
>
> This is my class so far:
> class GazettePageTemplate(PageTemplate):
> def __init__(self, id, pageSize=defaultPageSize):
> self.pageWidth = pageSize[0]
> self.pageHeight = pageSize[1]
> frame1 = Frame(inch,
> 3*inch,
> self.pageWidth - 2*inch,
> self.pageHeight - 518, id='cover')
> PageTemplate.__init__(self, id, [frame1]) # note lack of onPage
>
> def beforeDrawPage(self, canv):
> self.canv.drawImage('/root/journal/gazette/paper1.png',0,0,8.5*inch,11*inch)
>
> def some_view(request):
> response = HttpResponse(mimetype='application/pdf')
> response['Content-Disposition'] = 'attachment; filename=gorilla-gazette.pdf'
>
> buffer = StringIO()
>
> # Our container for 'Flowable' objects
> elements = []
>
> # A large collection of style sheets pre-made for us
> styles = getSampleStyleSheet()
>
> # A basic document for us to write to 'hello_platypus.pdf'
> #doc = SimpleDocTemplate(buffer)#'hello_platypus.pdf')
> doc = GazettePageTemplate(buffer)#'hello_platypus.pdf')
> doc.pagesize=landscape(letter)
>
> from reportlab.rl_config import defaultPageSize
>
> (MAXWIDTH, MAXHEIGHT) = defaultPageSize
>
> image = Image('/root/journal/gazette/paper1.png')
> print MAXWIDTH
> print MAXHEIGHT
> #elements.append(KeepInFrame(MAXWIDTH, MAXHEIGHT, [image]))
> elements.append(KeepInFrame(11*inch, 19*inch, [image]))
> # Create two 'Paragraph' Flowables and add them to our 'elements'
> elements.append(Paragraph("The Platypus", styles['Heading1']))
> elements.append(Paragraph("Very <i>Special</i>!", styles['Normal']))
>
> # Write the document to disk
> doc.build(elements)
> # Get the value of the StringIO buffer and write it to the response.
> pdf = buffer.getvalue()
> buffer.close()
> response.write(pdf)
> return response
>
> Shouldn't the build method be inherited from PageTemplate? What am I missing?
>
> Thanks!
> Erik
......
the build method is actually on the document not it's page templates. I don't
know what the intention is, but I guess you should start with
doc = SimpleDocTemplate(buffer)
#and then mess with doc's pagetemplates eg
doc.pageTemplates[:] = [GazettePageTemplate('First')]
#then later
doc.build()
.......
--
Robin Becker
More information about the reportlab-users
mailing list