This is the whole example for ReportLab using StringIO, chapter 10.3.3 in
the book:
# delete lines starting with "#"
from reportlab.platypus import *
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.rl_config import defaultPageSize
from reportlab.lib.units import inch, mm
from reportlab.lib.enums import TA_LEFT, TA_RIGHT, TA_CENTER, TA_JUSTIFY
from reportlab.lib import colors
*# from uuid import uuid4*
from cgi import escape
*# import os*
*import StringIO*
def get_me_a_pdf():
*out = StringIO.StringIO()*
title = "This The Doc Title"
heading = "First Paragraph"
text = 'bla '* 10000
styles = getSampleStyleSheet()
*# tmpfilename=os.path.join(request.folder,'private',str(uuid4()))
* doc = SimpleDocTemplate(*out*)
story = []
story.append(Paragraph(escape(title),styles["Title"]))
story.append(Paragraph(escape(heading),styles["Heading2"]))
story.append(Paragraph(escape(text),styles["Normal"]))
story.append(Spacer(1,2*inch))
doc.build(story)
*# data = open(tmpfilename,"rb").read()*
*data = out.getvalue()
#** os.unlink(tmpfilename)*
* out.close()*
response.headers['Content-Type']='application/pdf'
return data
Regards, Martin