I'm just looking ... and getting convinced :-)
Simon Kitching wrote:
If you want to specifically generate a report, another option to look at
is jasper:
http://jasperreports.sourceforge.net/
On Tue, 2006-01-17 at 10:30 +0100, Hansjörg Meuschel wrote:
Hi again,
actually what I want is to generate a report from the database and not a
pdf that looks like the html ..
I just thought the easiest way would be to transform the gnereated html
page directly into pdf which seems to be impossible...
So I'll take a look at both projects and see ...
Thanks for your help again!
Regards,
Hans
Simon Kitching wrote:
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
--
Mit freundlichen Grüßen,
------------------------------
Hansjörg Meuschel
Martin-Treu-Str. 40
90403 Nürnberg
Tel. +49 (0)911 274 278 1
mobil: +49 (1)60 725 3479
mail: [EMAIL PROTECTED]
http://www.meuschel.net