RE: Redirecting to a PDF file
"Mike Warne" <[email protected]>
| Newsgroups | gmane.comp.java.enhydra.barracuda.general |
|---|---|
| Message-ID | <38DBEF1546BBDD4CB9B1F6F724E345020151455A@hnl1-exchange3> |
Hi,
I have done something similar with Jasper reports, but as Chrstian mentioned the report needs to fit in memory..
This example <snip> came from enhydra, but should be easy to port to a standard servlet..
JasperPrint jp = JasperFillManager.fillReport(filename, parameters,
getDataSource(d));
byte buf[] = JasperPrintManager.printReportToPdf(jp);
comms.response.setContentType("application/pdf");
comms.response.setContentLength(buf.length);
comms.response.setHeader("content-disposition", "inline; filename=storageReport1.pdf");
OutputStream out = comms.response.getOutputStream();
out.write(buf, 0, buf.length);
out.flush();
Mike.
-----Original Message-----
From: Christian Cryder [mailto:[email protected]]
Sent: Wednesday, February 19, 2003 3:22 AM
To: [email protected]
Subject: RE: [Barracuda] Redirecting to a PDF file
Hi David,
Another thing that I've done which works great is to redirect the output
directly to the client browser, rather than saving it on disk. For instance,
class RenderCSV extends DefaultBaseEventListener {
public void handleViewEvent(ViewEventContext vec)
throws EventException, ServletException, IOException {
//get the response object
HttpServletResponse resp = vec.getResponse();
//figure out our file name
String filename = "nxg_batch_"+batch+".csv";
//build the output in a StringBuffer
StringBuffer sb = new StringBuffer(5000);
sb.append("\"hash\",\"bt_merch_rule_set_id\",\"transit_route\",\"account\",\
"check_num\",\"amount\",\"name\",\"address1\",\"city\",\"state\",\"country\"
,\"zip\",\"phone\",\"test\",\"company\",\"address2\",\"fax\",\"email\",\"shi
pping_name\",\"shipping_company\",\"shipping_address1\",\"shipping_address2\
",\"shipping_city\",\"shipping_state\",\"shipping_country\",\"shipping_zip\"
,\"description\",\"sub_total\",\"shipping_type\",\"shipping_cost\",\"tax\"")
;
sb.append(eol);
sb.append(...);
sb.append(...);
sb.append(...);
//now write the response
OutputStream out = resp.getOutputStream();
resp.setContentType("text/comma-separated-values");
resp.setContentLength(sb.length());
resp.setHeader("Content-Disposition", "inline;
filename=\""+filename+"\"");
out.write(sb.toString().getBytes());
out.close();
}
}
Now, I'm not sure if Jasper reports lets you get the file in memory, rather
than going to disk, but the advantage of this approach is that it doesn't
leave anything sitting around in public space on disk (ie. if you create a
report that is for an authorized user, but you save it in a publically
accessible place, someone else could conceivably find and view it...not very
secure). This way, you just stream the file directly back to the browser
where its either displayed or they get prompted with the "Save as..."
dialogue.
HIH,
Christian
----------------------------------------------
Christian Cryder [[email protected]]
Internet Architect, ATMReports.com
Barracuda - http://barracudamvc.org
----------------------------------------------
"Coffee? I could quit anytime, just not today"
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]]On Behalf Of David R Robison
> Sent: Tuesday, February 18, 2003 10:42 AM
> To: [email protected]
> Subject: [Barracuda] Redirecting to a PDF file
>
>
> I am trying to integrate Jasper Reports into my barracuda
> application. I have it
> so that when the user issues the GetReport.event, the file Report.pdf is
> generated. I then want to redirect to that file so that it will
> be displayed in
> the web browser. I do a
> ClientSideRedirect("WEB-INF/report/Report.pdf");. In the
> web browser I get a 404 error with no detail. Is there something
> else I need to
> do to get content back from a barracuda application without
> having to envoke
> another event?
>
> David Robison
> _______________________________________________
> Barracuda mailing list
> [email protected]
> http://barracudamvc.org/lists/listinfo/barracuda
_______________________________________________
Barracuda mailing list
[email protected]
http://barracudamvc.org/lists/listinfo/barracuda