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

