def to_pdf(filename=None, content_type='application/pdf'):

    def entangle(func):

        def decorated(func, *args, **kw):
            output = func(*args, **kw)
            dst = StringIO.StringIO()
            result = pisa.CreatePDF(StringIO.StringIO(output), dst)
            if (not result.err):
                cherrypy.response.headers['Content-Type'] = content_type
                if filename:
                    cherrypy.response.headers['Content-Disposition'] = ('attachment; filename=' + filename)
                output = dst.getvalue()
            return output
        return decorated
    return weak_signature_decorator(entangle)
def to_pdf(filename=None, content_type='application/pdf'):

    def entangle(func):

        def decorated(func, *args, **kw):
            output = func(*args, **kw)
            dst = StringIO.StringIO()
            result = pisa.CreatePDF(StringIO.StringIO(output), dst)
            if (not result.err):
                cherrypy.response.headers['Content-Type'] = content_type
                if filename:
                    cherrypy.response.headers['Content-Disposition'] = ('attachment; filename=' + filename)
                output = dst.getvalue()
            return output
        return decorated
    return weak_signature_decorator(entangle)