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

Reply via email to