views:

2655

answers:

2

I'd like to create an application that would run on Google's appengine.

However, this application needs to be able to generate PDFs dynamically.

How could I do this?

+13  A: 

You can use the reportlab library to generate a PDF from Python. You can just include the ReportLab files in with your application's code, or you can include a zip archive of the ReportLab code, and insert it into your application's sys.path.

Paul Fisher
Does reportlab actually work under AppEngine? I was under the possibly-mistaken impression that it uses C extensions, which AppEngine doesn't allow.
Robert Rossney
Reportlab is pure Python, but it uses PIL for images, so you won't be able to use it for PDFs containing images.
Nick Johnson
GAE now supports PIL so that should not be a problem.
Federico Builes
Does this actually work? Reading the reportlab API, you seem to have to write to a file. That's not possible on GAE.
Gareth Simpson
You can write to any file-like object, meaning that you could write to, say, `response.out`. For example, http://konryd.blogspot.com/2008/04/outputting-pdfs-with-google-app-engine.html
Paul Fisher
Thanks. Note, I needed the fix referred to by @varun below
Gareth Simpson
+3  A: 

To overcome the number-of-files limit in google appengine, you could package your reportlib in a zip file and use it. Be sure you check out this issue i bumped into..

http://code.google.com/p/googleappengine/issues/detail?id=1085

Also, you can use pisa, htmllib and pyPdf to generate the pdf using html templates.

All the best.

varun

varun