share
Stack OverflowHow to dynamically generate a pdf from Google's appengine?
[+28] [4] carrier
[2008-11-29 16:56:57]
[ google-app-engine pdf-generation ]
[ http://stackoverflow.com/questions/327700/how-to-dynamically-generate-a-pdf-from-googles-appengine ]

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?

[+23] [2008-11-29 17:40:17] Paul Fisher [ACCEPTED]

You can use the reportlab library [1] 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 [2] of the ReportLab code, and insert it into your application's sys.path.

[1] http://www.reportlab.org/rl_toolkit.html
[2] http://code.google.com/appengine/articles/django10_zipimport.html

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
(2) 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
(6) You can write to any file-like object, meaning that you could write to, say, response.out. For example, konryd.blogspot.com/2008/04/… - Paul Fisher
Thanks. Note, I needed the fix referred to by @varun below - Gareth Simpson
Just getting into this today, found a good primer by Nick Johnson on his blog blog.notdot.net/2010/04/… - Campey
1
[+6] [2009-04-25 18:35:55] varun

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


2
[+4] [2011-12-19 02:49:14] Eric Nguyen

Google has a new " Conversion API [1]" that may solve all your problems. Here's a description from the site:

The App Engine Conversion API converts documents between common filetypes using Google's infrastructure for efficiency and scale. The API enables conversions between HTML, PDF, text, and image formats, synchronously or asynchronously, with an option to perform optical character recognition (OCR).

[1] http://code.google.com/appengine/docs/java/conversion/

(3) Looks like the Conversion API has been decommissioned. - Brian Gillespie
3
[+2] [2010-12-21 10:13:08] Louis LC

I would recommend PyFPDF, which is a pure-Python port of the lightweight yet highly powerful PHP FPDF library. It is hardly a few dozen kilobytes.

See http://code.google.com/p/pyfpdf/


4