Hmm..

It should be possible to define a JSP tag which extends the tomahawk
HtmlDataTableTag class except that getRendererType returns a different
value. An entry in faces-config.xml could then map this to a custom
Renderer class that generates an inline embedded PDF. A page could then
use this as:

<z:pdfDataTable ....>
</z:pdfDataTable>

The user could (I presume) then click "save as" to save it.

That sounds rather interesting! Not a complete pdf rendering suite, just
a few chosen components. [NB: I'm not volunteering to help; just saying
it sounds useful!].

It would be a little tricky to bundle this in tomahawk, however. It
would not be desirable to declare itext (or fop) as a dependency of
tomahawk just because one component needs it. Perhaps maven needs some
way to express "class X has a dependency on library Y", so that this
sort of thing can be done.  The FileUpload component also falls into
this category.

License issues might be tricky too; itext is under MPL/LGPL. I know
there are some issues with LGPL, not sure about MPL. The jsfcomp project
could be a home for it though.

A complete PDF RenderKit using AcroForms *would* be kind of cute.
However I think there are higher priority issues :-)

Cheers,

Simon


On Tue, 2006-01-17 at 11:21 +0100, Matthias Wessendorf wrote:
> for something like UIData is make pretty sense to me
> 
> On 1/17/06, Jurgen Lust <[EMAIL PROTECTED]> wrote:
> >  I would definitely write pdf renderers for some components if other people
> > want to help...
> >
> >  Jurgen
> >
> >  Matthias Wessendorf schreef:
> >  Right Juergen!
> >
> > would you like to volunteer ? :-)
> >
> > SpringMVC has some *pdf* based rendering stuff.
> >
> > -Matthias
> >
> > On 1/17/06, Jurgen Lust <[EMAIL PROTECTED]> wrote:
> >
> >
> >  Theoretically, you could write a new RenderKit which renders a JSF page to
> > PDF instead of HTML. It would probably even work with AcroForms...
> >
> >  Jurgen
> >
> >  Simon Kitching schreef:
> >  Hi Hans,
> >
> > What Matthias describes below is where you have a JSF page, and you want
> > a button labelled "generate report" or similar that creates some kind of
> > PDF document then serves it up to the user's browser. But that PDF isn't
> > "a picture of the current page", it's a PDF generated using data pulled
> > from a database or something like that. If that's really what you are
> > after then FOP is a good tool for that; your java code creates some xml
> > using the FO schema, then feeds it to the FOP library. Nothing to do
> > with JSF though.
> >
> > There is no way to "generate a pdf that looks like my html screen" from
> > java code which I believe is what you want to do. Some browsers provide
> > a "print page" option, and some operating systems provide a "print to
> > PDF" option in the print dialog so that's one way of creating a PDF that
> > contains the current page but it's manual.
> >
> > The FOP project is here:
> >  http://xmlgraphics.apache.org/fop/
> >
> > Regards,
> >
> > Simon
> >
> >
> >
> >
> > On Tue, 2006-01-17 at 09:58 +0100, Hansjörg Meuschel wrote:
> >
> >
> >  Hi Matthias,
> >
> > thanks for your help... a friend of mine also recommended FOP in
> > between. I took a look at the api but it seems to me that FOP uses XML
> > to generate a PDF? !
> > --> So how can I convert my jsf page into the required FOP-input
> > format?? I could not find any docu to fop (except some broken links...) ?
> >
> > regards,
> > Hans
> >
> >
> >
> > Matthias Wessendorf wrote:
> >
> >
> >
> >  Hansjoerg,
> >
> > we have worked with Apache FOP for creating pdfs. iText or
> > JasperReports are also lib that help you on that task.
> >
> > inside of your backing bean method (referenced by a commandLink or
> > cmdButton) you can do somthing like this:
> >
> > public String pdf() {
> >
> >  FacesContext ctx = FacesContext.getCurrentInstance();
> >
> >  if(!ctx.getResponseComplete()) {
> >
> >
> >  HttpServletResponse response = (HttpServletResponse)
> > ctx.getExternalContext().getResponse();
> >
> >  byte[] file = //do some FOP, or ... stuff;
> >
> >  response.setContentType("application/pdf");
> >  response.setHeader("Content-Disposition", "inline;
> > filename=\"foo.pdf\"");
> >  response.setContentLength(file.length);
> >
> >  OutputStream out = response.getOutputStream();
> >  out.write(file, 0, file.length);
> >  out.flush();
> >  out.close();
> >
> >  ctx.responseComplete();
> >
> >  return null;
> > }
> >
> >
> > This will work in p(l)ain servlet or struts world too (expect of the
> > usage of jsf api (like FacesContext))
> >
> > However, the *magic* here is the responseComplete()
> > <from_java_doc>
> > Signal the JavaServer Faces implementation that the HTTP response for
> > this request has already been generated (such as an HTTP redirect),
> > and that the request processing lifecycle should be terminated as soon
> > as the current phase is completed.
> > </from_java_doc>
> >
> > and yes... it's getResponseComplete() instead of isResponseComplete()
> >
> > HTH,
> > Matthias
> >
> >
> > On 1/15/06, Hansjörg Meuschel <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> >
> >  Hi folks,
> > does anybody know what is the easiest way to get a jsf page as pdf
> > download? Are there any libraries available for free?
> >
> >
> >
> >
> >  --
> > Matthias Wessendorf
> > Zülpicher Wall 12, 239
> > 50674 Köln
> > http://www.wessendorf.net
> > mwessendorf-at-gmail-dot-com
> >
> >
> >
> >
> >
> >
> >
> > --
> > Among flowers, the cherry blossom.
> > Among men, me.
> >
> >
> >
> >
> >
> > --
> > Matthias Wessendorf
> > Zülpicher Wall 12, 239
> > 50674 Köln
> > http://www.wessendorf.net
> > mwessendorf-at-gmail-dot-com
> >
> >
> >
> >  --
> > Among flowers, the cherry blossom.
> > Among men, me.
> >
> >
> >
> 
> 
> --
> Matthias Wessendorf
> Zülpicher Wall 12, 239
> 50674 Köln
> http://www.wessendorf.net
> mwessendorf-at-gmail-dot-com

Reply via email to