[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