Use a ByteArrayOutputStream to write the result to a byte array, and then use 
the following method in your backing bean to send it to the browser, and that's 
it:

(Adapted from the MyFaces Wiki http://wiki.apache.org/myfaces/Sending_Files )

 

    public void sentFileToBrowser(FacesContext aContext, String aFileName, 
byte[] aContent, boolean aAttachment) {

 

        try {

            HttpServletResponse theResponse = (HttpServletResponse) 
aContext.getExternalContext().getResponse();

 

            MimeTypeGuesser theMimeTypeGuesser = MimeTypeGuesser.getInstance();

            String theContentType = 
theMimeTypeGuesser.guessMimeTypeFromFileName(aFileName);

 

            LOGGER.logDebug("Content type is " + theContentType);

 

            String theContentDisposition = aAttachment ? "attachment" : 
"inline";

            int contentLength = aContent.length;

 

            LOGGER.logDebug("Content length is " + contentLength);

 

            theResponse.setContentType(theContentType);

            theResponse.setContentLength(contentLength);

            theResponse.setHeader("Content-disposition", theContentDisposition 
+ "; filename=\"" + aFileName + "\"");

 

            // SSL!!! IE is HELL

            theResponse.setHeader("Pragma", "private");

 

            OutputStream theOutput = theResponse.getOutputStream();

            theOutput.write(aContent);

            theOutput.close();

 

            aContext.responseComplete();

 

        } catch (Exception e) {

            throw new FacesException("Error sending file", e);

        }

    }

 

 

 

Regards

Mirko

 

Von: daniel ccss [mailto:[EMAIL PROTECTED] 
Gesendet: Mittwoch, 5. März 2008 16:02
An: MyFaces Discussion
Betreff: Re: PDF+JSF question

 

Thanks for the answer, but I think this is not what I need.

 

What i need is a way to join 2 or more reports in one pdf file, like is done in 
struts, with JSF:

 

PdfReader reader1 = new PdfReader(bytes);
PdfReader reader2 = new PdfReader(bytes2);
 
PdfCopyFields copy = new PdfCopyFields(new FileOutputStream( 
context.getRealPath("/reports/report1 " + name + ".pdf")));
 
copy.addDocument(reader1);
copy.addDocument(reader2);
copy.close();

 

Someone has the code to do this but in JSF?? Thanks!!!

 



 

On Wed, Mar 5, 2008 at 8:43 AM, Sertic Mirko, Bedag <[EMAIL PROTECTED]> wrote:

Hi

 

If you want to send a text as a download file to the browser, so something like 
this. You can also

Send a binary file the same way by modifying this method a little bit :

 

    public void sentFileToBrowser(FacesContext aContext, String aFileName, 
String aContent, boolean aAttachment) {

 

        try {

            HttpServletResponse theResponse = (HttpServletResponse) 
aContext.getExternalContext().getResponse();

            theResponse.setCharacterEncoding("UTF-8");

 

            MimeTypeGuesser theMimeTypeGuesser = MimeTypeGuesser.getInstance();

            String theContentType = 
theMimeTypeGuesser.guessMimeTypeFromFileName(aFileName);

 

            LOGGER.logDebug("Content type is " + theContentType);

 

            String theContentDisposition = aAttachment ? "attachment" : 
"inline";

 

            theResponse.setContentType(theContentType);

            theResponse.setHeader("Content-disposition", theContentDisposition 
+ "; filename=\"" + aFileName + "\"");

 

            // Make sure it is running with SSL smooth.....

            theResponse.setHeader("Pragma", "private");

 

            PrintWriter theWriter = new PrintWriter(new 
OutputStreamWriter(theResponse.getOutputStream(), "UTF-8"));

            theWriter.print(aContent);

            theWriter.flush();

 

            theWriter.close();

 

            aContext.responseComplete();

 

        } catch (Exception e) {

            throw new FacesException("Error sending file", e);

        }

    }

 

Regards

Mirko

 

Von: daniel ccss [mailto:[EMAIL PROTECTED] 
Gesendet: Dienstag, 4. März 2008 20:20
An: [email protected]
Betreff: Re: PDF+JSF question

 

Anybody??

On Tue, Mar 4, 2008 at 11:05 AM, daniel ccss <[EMAIL PROTECTED]> wrote:

In Struts I do this for join 2 jasperreport pdfs:

PdfReader reader1 = new PdfReader(bytes);
PdfReader reader2 = new PdfReader(bytes2);
 
PdfCopyFields copy = 
new PdfCopyFields(new FileOutputStream( 
context.getRealPath("/reportes/Calificación de Derechos por Beneficio 
Familiar - Resolución Nº " + 
beneficioForm.getNumeroResolucionBeneficio() + ".pdf")));
 
copy.addDocument(reader1);
copy.addDocument(reader2);
copy.close();


How can I do this en JSF??

Someone told me that use PdfCopyFields 

Have you tried passing the OutputStream from the response to the
PdfCopyFields instead of a FileOutputStream?

Can anyone give me an example of this?

Thanks!!

 

 

Reply via email to