Hallo Forum
Ich versuche aus einer JSF Webapplication einen JasperReport auszuführen und das Ergebnis als PDF direkt im Browser anzuzeigen.
Der Report funktioniert wunderbar wenn ich als Ergebnis eine HTML page erzeuge.
Wenn ich den Report jedoch in ein PDF schreibe wird mir das PDF schlussendlich als Text im Browser dargestellt:
Hier ist mein Code:
Was mache ich falsch? Vielen Dank für einen Tipp.
Grüsse
Alan
Ich versuche aus einer JSF Webapplication einen JasperReport auszuführen und das Ergebnis als PDF direkt im Browser anzuzeigen.
Der Report funktioniert wunderbar wenn ich als Ergebnis eine HTML page erzeuge.
Wenn ich den Report jedoch in ein PDF schreibe wird mir das PDF schlussendlich als Text im Browser dargestellt:
Code:
%PDF-1.4
%????
3 0 obj
<</Length 470/Filter/FlateDecode>>stream
x????O?0???W?>X{???a?hLPFbb| 2P"N'???{?`?? h????>w?;?;N?2`??d?Nv?$\?o]??F?);<E@?Flo????L?nQl?9cw??2I>???)????W??O?7?E?[?+?4?:?s<6[?.????e?|??l6x???#?n?C7?&??^??^f?>;?2?????{???*2?<e?:?_?1WZOGO?<]?=?@?
??Z?b=?0N?^6b??B?B???LsY??(?%?`=?$??N?$?????ê?K??` k????z0?wl?YN?h??]HoLpL??#? I&?_Bo?1??Zue???/TW???4??T??:????E??:??T??t??|??^zmE??W'??s??7c?Z?zm?M??+d\?Siå?+ja4???(men
Y?? ???)m?F[???H???^<?U?o?Hg
endstream
endobj
1 0 obj
<</Group<</Type/Group/CS/DeviceRGB/S/Transparency>>/Parent 4 0 R/Contents 3 0 R/Type/Page/Resources<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]/ColorSpace<</CS/DeviceRGB>>/Font<</F1 2 0 R>>>>/MediaBox[0 0 595 842]>>
endobj
5 0 obj
[1 0 R/XYZ 0 854 0]
endobj
2 0 obj
<</BaseFont/Helvetica/Type/Font/Encoding/WinAnsiEncoding/Subtype/Type1>>
endobj
4 0 obj
<</Type/Pages/Count 1/Kids[1 0 R]>>
endobj
6 0 obj
<</Names[(JR_PAGE_ANCHOR_0_1) 5 0 R]>>
endobj
7 0 obj
<</Dests 6 0 R>>
endobj
8 0 obj
<</Names 7 0 R/Type/Catalog/Pages 4 0 R>>
endobj
9 0 obj
<</Creator(JasperReports \(timerep_total_month\))/Producer(iText 2.1.5 \(by lowagie.com\))/ModDate(D:20090328115200+01'00')/CreationDate(D:20090328115200+01'00')>>
endobj
xref
0 10
0000000000 65535 f
0000000552 00000 n
0000000821 00000 n
0000000015 00000 n
0000000909 00000 n
0000000786 00000 n
0000000960 00000 n
0000001014 00000 n
0000001046 00000 n
0000001103 00000 n
trailer
<</Root 8 0 R/ID [<bc734bcf357f54dc41e87600a819a545><11643bd5300910f0cd41a25585fd9840>]/Info 9 0 R/Size 10>>
startxref
1282
%%EOF
Hier ist mein Code:
Code:
InputStream reportTemplate = this.getClass().getClassLoader().getResourceAsStream("com/antavis/groupware/reports/timerep_total_month.jasper");
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
ServletOutputStream servletOutputStream;
try {
servletOutputStream = response.getOutputStream();
Connection con = new DbConnection().establishConnection();
JasperRunManager.runReportToPdfStream(reportTemplate, servletOutputStream, new HashMap(), con);
con.close();
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "attachment; filename=\"report.pdf\"");
servletOutputStream.flush();
servletOutputStream.close();
context.responseComplete();
} catch (Exception e) {
e.printStackTrace();
}
Was mache ich falsch? Vielen Dank für einen Tipp.
Grüsse
Alan