My apologies; I was using tg2 2.1.1, and the code seems to have changed to
pass a dictionary in 2.1.4.

For those finding this thread after me via google, the solution I ended up
going with is using xhtml.wsgi.PisaMiddleware (sample usage in
https://github.com/chrisglass/xhtml2pdf/tree/master/demo/wsgi )

Thanks for your response, Alessandro

On Wed, May 23, 2012 at 4:11 PM, Alessandro Molina <
[email protected]> wrote:

> Actually after_render hook permits to modify the rendered page.
>
> It gets as parameter a dictionary where the key "response" is the
> response getting out from that request.
> Replacing the content of that key replaces the response sent by TurboGears.
>
> On Tue, May 22, 2012 at 8:56 PM, Matthew Boehm <[email protected]>
> wrote:
> > I am trying to implement a PDF converter as well, but have run into some
> > problems:
> >
> > * after_render hooked functions only receive a literal with the rendered
> > result. Modifying this result/returning the modified version in the
> hooked
> > function does not change what is written to the response object.
> > * If you try writing directly to the response object, sometime after your
> > function returns, the entire original response is written to the response
> > object.
> >
> > Is there a way to modify the response's content and headers in a function
> > hooked to after_render?
> >
> > On Monday, September 19, 2011 10:38:32 AM UTC-4, Alessandro Molina wrote:
> >>
> >> you can use
> >>
> Decoration.get_decoration(controller_method).register_hook('after_render',
> >> callable)
> >> and callable will be execute after rendering the template with the
> >> rendering result as parameter.
> >>
> >> On Mon, Sep 19, 2011 at 3:32 PM, León Domingo <[email protected]>
> >> wrote:
> >> > Hi Alessandro,
> >> > And how would it be this way? I don't know exactly how "after_render"
> >> > has to be used. As far as I know, you define a function with a
> >> > "response" parameter and then a decorator "after_render" passing that
> >> > function in.
> >> >
> >> > def _after_render(r):
> >> >  # something to be done
> >> >  r.content_type = 'application/pdf'
> >> >  r.body = to_pdf(r.body)
> >> >
> >> > @expose('foo.html')
> >> > @after_render(_after_render)
> >> > def foo(self, *args, **kwargs):
> >> >   return dict(....)
> >> >
> >> > is it correct? I was trying this way but...can I modify "response"
> >> > inside "_after_render"? I thought it was not possible...
> >> >
> >> > Thanks
> >> >
> >> > León
> >> >
> >> > On 19 sep, 15:13, Alessandro Molina <[email protected]>
> >> > wrote:
> >> >> Uhm, I would suggest you to setup a after_render hook and decide if
> >> >> the render result must be converted to a PDF or not.
> >> >> In the case it doesn't have to be converted you can leave it go as
> >> >> HTML, otherwise you can call wkhtmltopdf
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> On Sun, Sep 18, 2011 at 9:54 AM, León Domingo <[email protected]
> >
> >> >> wrote:
> >> >> > Hi,
> >> >> > I've created a little function that makes use of wkhtmltopdf
> (http://
> >> >> > code.google.com/p/wkhtmltopdf/) to get PDF content from HTML
> content.
> >> >>
> >> >> > I would like to use some controllers to get a PDF version of the
> HTML
> >> >> > content defined in the corresponding template.
> >> >>
> >> >> >   @expose('foo.html')
> >> >> >   def foo(self, *args, **kwargs):
> >> >> >       return dict(....)
> >> >>
> >> >> > I've been making some experiments with a middleware class.
> >> >>
> >> >> >   response.content_type = 'application/pdf'
> >> >> >   response.body = to_pdf(response.body)
> >> >>
> >> >> >   return response(environ, start_response)
> >> >>
> >> >> > It works but I need something to know if I have to make the
> >> >> > translation or not
> >> >>
> >> >> >   if is_a_suitable_response:
> >> >> >       response.content_type = 'application/pdf'
> >> >> >       response.body = to_pdf(response.body)
> >> >>
> >> >> >   return response(environ, start_response)
> >> >>
> >> >> > and I don't know how I can "mark" the response to do so. In the
> other
> >> >> > hand, I don't know if this is the right way to do that.
> >> >>
> >> >> > Thanks a lot
> >> >>
> >> >> > León
> >> >>
> >> >> > --
> >> >> > You received this message because you are subscribed to the Google
> >> >> > Groups "TurboGears" group.
> >> >> > To post to this group, send email to [email protected].
> >> >> > To unsubscribe from this group, send email to
> >> >> > [email protected].
> >> >> > For more options, visit this group
> >> >> > athttp://groups.google.com/group/turbogears?hl=en.
> >> >
> >> > --
> >> > You received this message because you are subscribed to the Google
> >> > Groups "TurboGears" group.
> >> > To post to this group, send email to [email protected].
> >> > To unsubscribe from this group, send email to
> >> > [email protected].
> >> > For more options, visit this group at
> >> > http://groups.google.com/group/turbogears?hl=en.
> >> >
> >> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "TurboGears" group.
> > To view this discussion on the web visit
> > https://groups.google.com/d/msg/turbogears/-/L9-eC9I7gBkJ.
> >
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group at
> > http://groups.google.com/group/turbogears?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "TurboGears" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/turbogears?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en.

Reply via email to