myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jurgen Lust <Jurgen.L...@UGent.be>
Subject Re: easiest way to get a jsf page as pdf download
Date Tue, 17 Jan 2006 10:16:02 GMT
So does Jasperreports ;-)


Jeffrey Porter schreef:
> Actually I've just noticed. Birt uses iText.
>
>
> :-)
>
> -----Original Message-----
> From: Hansjörg Meuschel [mailto:hjmeu@gmx.de] 
> Sent: 17 January 2006 09:57
> To: MyFaces Discussion
> Subject: Re: easiest way to get a jsf page as pdf download
>
> 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 <hjmeu@gmx.de> 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.


Mime
View raw message