[reportlab-users] PDF without file

Robin Becker robin at reportlab.com
Tue May 30 13:07:59 EDT 2006

François Pinard wrote:
> [Michael Hipp]
>>> [Andy Robinson]
>>> Yes, pass a CStringIO or other file like object to the filename 
>>> argument either when constructing a canvas or a doctemplate, and it 
>>> will put the file in that.
>> Thanks, looks like that will work perfectly.
> Hi, people.  I did not follow the thread and may be fully out of 
> context, so take me with a few grains of salt :-).
> Contents of a CStringIO may not be Unicode (unless Python changed 
> recently).  Now that Reportlab is Unicode-aware, one may sometimes have 
> to resort to the slower StringIO.
Being in utterly duh Homer mode I completely forgot that there is indeed an 
existing string output for the code in the canvas.
Just use

pdf = c.getpdfdata()

This won't help if you're using platypus as the save stuff goes on there in the 
build method. However, there's a hack that lets you avoid the actual save eg

doc._doSave = 0
pdf = doc.canv.getpdfdata()

the getpdfdata method indicates you shouldn't do anything to the canvas after 
calling it.
Robin Becker

More information about the reportlab-users mailing list