I figured out the answer to my own question:
It seems I was soing things correctly, but needed a restart of the server to get it working, plus the addition of 
the content-length header, for instance if my buffer or string is val, then 
RESPONSE.set('Content-length',str(len(val)))
does the trick and my pdf returns fine.
Thanks,
jason