JasperReports + JSF (não renderiza PDF)

Boa noite pessoal,

Sei que existem vários tópicos sobre jasper + jsf, porém após 2 dias procurando não encontrei algo que venha a me ajudar.
O problema é o seguinte, após pegar alguns exemplos no próprio fórum estou tentando gerar um arquivo pdf através de um resultset e o negócio não vai pra frente.
Não recebo nenhum erro, porém o arquivo não é renderizado em tela, o que aparece após eu clicar em um item de menu e disparar uma ação é mostrado abaixo:

%PDF-1.4
%����
4 0 obj
<</Length 1179/Filter/FlateDecode>>stream
x&#65533;&#858;&#718;&#65533;6&#65533;&#65533;z
.&#65533;E\&#65533;"JZN&#65533;K&#65533;d&#65533;
Yhh&#65533;QA[&#65533;l7h_&#65533;&#65533;&#65533;&#65533;@I&#65533;bS&#65533;&#65533;R&#492;a&#65533;x&#897;&#65533;K&#65533;&#65533;&#65533;O&#65533;4&#65533;%/&#65533;	&#65533;H9&#65533;/&#65533;W&#65533;&#65533;}B&#65533;[&#65533;.F&#65533;&#65533;&#65533;F&#65533;|&#65533;|&#65533;#&#65533;&#65533;2y&#65533;&#65533;&#65533;W]{,I&#65533;X&#65533;nDR&#65533;d&#409;&#1616; &#65533;&#65533;i&#65533;&#1837;&#65533;g&#746;[W&#65533;&#65533;zW)Z=&#65533;&#65533;_>*]&#65533;&#65533;&#65533;v&#65533;(&#970;Yq&#65533;a&#65533;a&#65533;r/wW&#65533;j&#65533;&#65533;kZ&#65533;&#65533;&#65533;h*&#65533;5&#65533;&#65533;&#65533;&#65533;a&#65533;&#65533;&u"&#65533;e&#65533;*&#1230;#&#65533;{&#65533;k&#1304;1WE&#65533;$&#65533;3&#65533;er?m <C&#65533;&#65533;_&#65533;&#65533;&#65533;q&#65533;&#65533;&#65533;r/&#65533;'&#65533;F1|;&#65533;K=&#65533;e&#65533;L(B&#65533;&#65533;&#65533;&#1332;k&#65533;&#35299;o&#65533;&&#4260;3&#65533;&#65533;dy=]&#65533;&#65533;f&#65533;&#65533;&#65533;pSs&#65533;&#65533;I&#65533;*L&#65533;5&#310;&#65533;&#65533;&#65533;`_bM(&#65533;JgBqsyU]&#65533;s
B$+&#65533;O&#65533;4<%n6&#65533;\&#65533;kD{&E&#65533;G&#65533;n&#65533;&#863;uw.&#65533;H&#65533;&#65533;#&#65533;&#65533;cD&#65533;&#65533;&#65533;&#912;&#65533;&#65533;,&#65533;YbD&#65533;&#65533;w&#65533;k&#65533;&#65533;&#65533;&#65533; =o&#65533;&#65533;&#65533;&#894;YT&#65533;&#65533;&#65533;(&#65533;&#1105;&#65533;&#65533;l;&#65533;&#65533;,&#65533;&#65533;G
&#65533;TQ&#65533;k&#65533;&#65533;YoZ&#65533;&#65533;&#65533;_&#65533;&#65533;\&#65533;&#65533;C.&#65533;&#65533;%&#65533;v&#1211;&#65533;&#65533;d&#65533;&#65533;&#65533;l&#1737;&#65533;&#65533;0%&#1412;"\&#65533;t&&#65533;&#65533;&#65533;&#65533;D&#65533;~1&#513;Q?&#65533;]&#65533;:&#65533;&#65533;1a&#65533;4&#65533;XXv)&#65533;e&#65533;]s&#65533;b&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;Q&#65533;&#65533;o&#65533;&#65533;aYo&#65533;o4&#65533;av&#65533;]&#65533;L;&#65533;c&#65533;&#65533;wC5ha&#65533;&#65533;)m&#1737;&#65533;&#65533;0%&#1412;"\&#65533;t&K&#65533;&#65533;&#65533;&#65533;4&#1713;&#65533;&#65533;&#933;fU&#65533;&#65533;&#65533;&#65533;1`a'&#1910;B&#65533;{&#65533;3N!$&#65533;@&#65533;&#65533;R&#65533;cy~!&#65533;&#65533;&#65533;J:8**&#65533;X&#65533;FI&#65533;j&#65533;&#65533;i&#65533;&#65533;	&#65533;c,&#65533;3&#65533;&#65533;K&#65533;&#65533;r&#1211;&#65533;Z&#65533;_Cl&#1737;^&#65533;%&#1412;"\&#65533;t&&#65533;&#65533;&#65533;&#65533;&#65533;4&#65533;&#65533;Z@&#1832;&#65533;&#65533;&#886;&#65533;&#65533;&#65533;faup&#65533;&#65533;&#65533;L&#65533;[&#65533;&#65533;pPv&#65533;2.&#65533;pz)&#1537;&#65533;&#65533;;0*.&#65533;H>;&#65533;|&#65533;&#65533;]m&#65533;J&#65533;&#65533;&#65533;&#65533;&#65533;'&#13222;&#65533;e&#65533;v&#1211;&#65533;&#65533;P&#65533;k&#65533;m;&#1118;&#65533;&#282;P&#65533;&#65533;&#900;bqw]]&#65533;&#65533;;RB&#65533;&#65533;wp&#65533;O&#65533;gyp&#65533;&#65533;<&#65533;&#65533;&#65533;eT&#65533;Q&#65533;&#65533;&#65533;<xPQ&#65533;aGEe&#65533;&#65533;(&#65533;~&#65533;&#65533;&#65533;6&&#65533;HA=&#65533;2&#65533;K-`&#65533;&#65533;&#65533;
&#65533;&#65533;&#65533;p_&#65533;m&#1737;&#65533;&#65533;1%&#1412;"\&#65533;t&&#764;&#65533;&#65533;&#65533;D&#65533;hI&#65533;3&#64876;&#65533;a&#65533;&#65533;&#65533;s&#65533;&#65533;x`&#1979;&#65533;r&#65533;&#65533;&#65533;&#1409;14&#65533;b&#65533;0h&#65533;&#65533;u&#65533;A7!c&#65533;TT&#65533;&#65533;QQYG8e&#65533;>&#65533;x&#65533;;y&#65533;N{&#65533;>tX&#65533;PE;&#65533;&#65533;P
Up&#65533;kJ&#65533;v&#65533;=5L&#65533;5&#65533;(&#65533;	&#322;&#61114;4
t&#65533;C&#65533;	
&#65533;&#65533;&#65533;&#65533;>&#65533;&#65533;	8&#65533;&#65533;b&#1840;&#65533;Sb|&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;8&#65533;&#65533;wS#"TT&#65533;&#65533;QQ&#65533;K>&#65533;&#65533;&#65533;&#65533;w&#65533;h&#65533;l6&#65533;'&#65533;&#65533;&#1155;&#65533;&#65533;@7&#65533;&#65533;F&#65533;]&#65533;&#65533;&#65533;&#65533;2&#65533;&#65533;R&#65533;&#65533;f&#65533;fy0&#65533;&#65533;jU&#65533;
&#65533;&#65533;3&#65533;Q:%&#65533;&#65533;#&#65533;s_&#65533;&#65533;&#65533;y&#65533;&#65533;&#65533;&#65533;R_&#65533;&#65533;&#65533;&#65533;&#65533;S&#65533;6&#65533;&#65533;\&#65533;_{&#65533;
&#65533;
endstream
endobj
1 0 obj
<</Group<</Type/Group/CS/DeviceRGB/S/Transparency>>/Parent 5 0 R/Contents 4 0 R/Type/Page/Resources<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]/ColorSpace<</CS/DeviceRGB>>/Font<</F1 2 0 R/F2 3 0 R>>>>/MediaBox[0 0 595 842]>>
endobj
7 0 obj
<</Length 917/Filter/FlateDecode>>stream
x&#65533;&#857;&#65533;n&#65533;0&#65533;&#65533;s>&#65533;&#65533;&#65533;&#65533;=&#65533;?&#65533;&#65533;X5a&M&#65533; &#65533;Y&#65533;	n&#65533;.&#65533;e&#65533;&#65533;&#612;/VkU&#65533;&#1341;&#65533;&#65533;/y&#65533;g&#65533;&#65533;39&#65533;%&#65533;#&#65533;9&#65533;&#851;&#65533;&#65533;&#65533;:&#65533;&#1061;&#65533;6EX&#65533;&#65533;&#1986;fh&#65533;L^&#65533;KQ&#65533;&#65533;"y&#65533;r&#65533;&#65533;&#65533;&#65533;	CO	&#65533;&#65533;x&#145;&#65533;|~&#65533;|&#65533;O&#65533;'F&#65533;&#65533;h&#65533;&#65533;&#65533;9&#65533;&#65533;&#65533;&#65533;x{&#65533;@&#65533;&#65533;&#65533;&#65533;&#65533;'&#65533;u&#65533;&#1983;&#65533;"&#65533;S&#65533;eja&#65533;&#188859;c;Z&#65533;lK&#65533;&#65533;K&#65533;&#65533;7})&#65533;&#65533;&#65533;5&#65533;e&#65533;&#65533;&#65533;aT,w'&#65533;&#65533;2&#65533;&#65533;	&#65533;fB&#65533;h&#65533;&#65533;qU&#65533;&#65533;Z&#65533;e&#65533;&#65533;&#65533;&#65533;&#65533;3Fwf&#65533;a&#65533;&#1817;A -&#65533;G&#65533;&#65533;W&#65533;&#65533;T&#65533;&#65533;$&#65533;&#65533;(&#65533;Dq&#65533;&#944;&#65533;&#65533;(&#65533;&#1485;\&#65533;k&#65533;&#65533;aNOK&#65533;&#65533;&#65533;&#65533;h&#65533;&#65533;
j&#65533;
&#65533;&#65533;&#65533;F&#65533;&#65533;&#65533;\&#65533;&#65533;&#65533;(##Q&#65533;R&#65533;
&#65533;-Wsa&#65533;p&#65533;E&#65533;6jB&#65533;&#65533;&#65533;&#65533;7&#65533;j&#65533;l&#65533;Aa!&#65533;&#65533;&#65533;-&#65533;Z&#65533;7&#65533;x.X&#65533;S&#65533;e&#65533;&#65533;v5SwlG[p&#65533;g&#65533;R&#65533;@&#65533;M_&#65533;N&#65533;Ia&#65533;&#65533;&#65533;up&#65533;Yq&#65533;=dnW8D&#65533;&#65533;`&#482;&#65533;H&#65533;&#65533;;&#65533;rpT\&#65533;&#65533;t&#65533;r&#65533;^&#65533; &#65533;&#65533; g&#65533;&#1936;c"uD1Nun&#65533;&#65533;(&#65533;&#65533;7TK&#65533;&#65533;&#281;&#65533;>Py&#65533;a&#65533;&#65533;jR&#65533;&#65533;B&#65533;P&#65533;D@&#65533;hF&#65533;&#65533;&#65533;S&#65533;,FG&#65533;8&#1752;&#527;&#65533;6&#65533;SQ&#65533;GEee&#65533;t&#65533;mgJ*&#65533;&#65533;&#65533;&#65533;X&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;e&#65533;H&#65533;&#65533;&#65533;&#65533;P-I&#65533;j&#65533;;&#65533;&#65533;&#65533;m&#65533;3})|&#65533;&#65533;/n'&#1380;@&#65533;ah&#65533;p&#65533;&#65533;&#65533;2
&#65533;&#65533;Y&#65533;Z&#65533;&#65533;&#65533;&#65533;L&#65533;÷&#65533;6&#65533;&#65533;[&#65533;&#65533;&#65533;7&#65533;Sq&#65533;FE&#65533;e#&#65533;&#65533;U6&#65533;&#65533;
&#65533;e&#65533;&#65533;o&#65533;&#65533;7Js&#65533;&#65533;T&#65533;jYByW&#65533;&#1905;mYaK&#65533;&#65533;K&#65533;&#65533;7}qx;&#65533;&&#65533;&#65533;h&#65533;&#65533;~&#65533;q&#65533;&#65533;&#65533;X&#65533;opJ&#65533;Qm&#65533;&#65533;M&#65533;&#65533;H|&#65533;;&#65533;opTT&#65533;&#65533;&#65533;&#65533;M&#65533;&#65533;&#65533;&#65533;u&#65533;8&#65533;@.#[&#565;~o&#65533;&#65533;Q&#65533;S&#65533;e&#65533;#
&#65533;5&#65533;
&#65533;&#65533;-q&#65533;/&#65533;T&#65533;&#65533;&#65533;A&#60698;9¡=&#65533;JCnrp&#65533;&#65533;&#65533;C,&#65533;&#65533;Q&#65533;&#65533;ep&#65533;&#65533;tD@&#65533;R&#65533;I:&#65533;SQIaG&#65533;%&&#65533;&#65533;#&#65533;9¶oV&#65533;&#441;&#65533;7&#65533;&#65533;&#65533;&#65533;&#65533;+&#65533;&#65533;&#65533;&#65533;)"&#65533;w|0&#259;~_&#635;e&#65533;^8&#780;&#65533;&#65533;8t&#65533;C&#65533;&#65533;)&#65533;6z&#65533;Z&#65533;U#Q&&#65533;&#65533;fu_&#65533;&#1264;&#1484;&#65533;&#65533;Qj&#65533;
endstream
endobj
6 0 obj
<</Group<</Type/Group/CS/DeviceRGB/S/Transparency>>/Parent 5 0 R/Contents 7 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
8 0 obj
[1 0 R/XYZ 0 854 0]
endobj
9 0 obj
[6 0 R/XYZ 0 854 0]
endobj
2 0 obj
<</BaseFont/Helvetica/Type/Font/Encoding/WinAnsiEncoding/Subtype/Type1>>
endobj
3 0 obj
<</BaseFont/Helvetica-Bold/Type/Font/Encoding/WinAnsiEncoding/Subtype/Type1>>
endobj
5 0 obj
<</ITXT(2.1.7)/Type/Pages/Count 2/Kids[1 0 R 6 0 R]>>
endobj
10 0 obj
<</Names[(JR_PAGE_ANCHOR_0_1) 8 0 R(JR_PAGE_ANCHOR_0_2) 9 0 R]>>
endobj
11 0 obj
<</Dests 10 0 R>>
endobj
12 0 obj
<</Names 11 0 R/Type/Catalog/ViewerPreferences<</PrintScaling/AppDefault>>/Pages 5 0 R>>
endobj
13 0 obj
<</Creator(JasperReports \(RelatorioProdutos\))/Producer(iText 2.1.7 by 1T3XT)/ModDate(D:20100628230801-03'00')/CreationDate(D:20100628230801-03'00')>>
endobj
xref
0 14
0000000000 65535 f 
0000001262 00000 n 
0000002793 00000 n 
0000002881 00000 n 
0000000015 00000 n 
0000002974 00000 n 
0000002489 00000 n 
0000001505 00000 n 
0000002723 00000 n 
0000002758 00000 n 
0000003043 00000 n 
0000003124 00000 n 
0000003158 00000 n 
0000003263 00000 n 
trailer
<</Root 12 0 R/ID [<674033d37891fbbdb674e18ce1286a7c><34eeeda8242a1955497ef8b608d8c895>]/Info 13 0 R/Size 14>>
startxref
3431
%%EOF

O código Java que estou utilizando para tentar gerar o pdf é o seguinte:

	public void gerarPDFProduto() throws IOException, JRException, SQLException, DAOException{
		JRResultSetDataSource jrRS = new JRResultSetDataSource(dao.rsGerarPDF());
		JasperPrint jasperPrint = JasperFillManager.fillReport("C:/RelatorioProdutos.jasper", new HashMap(), jrRS);
		this.enviarPDF(jasperPrint);
	}

	public void enviarPDF(JasperPrint jasperPrint){
		try{
			//GERA PDF
			// @ outputStream
			ByteArrayOutputStream pdfStream = new ByteArrayOutputStream();
			JasperExportManager.exportReportToPdfStream(jasperPrint, pdfStream);

			HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
			response.setContentType("application/pdf");
			//response.setHeader("Content-Disposition", "filename=relatorio.pdf");
			response.setContentLength(pdfStream.size());	//para o pdfStream
		
			
		      // Flush pdfStream pra response
			ServletOutputStream flusher;
			flusher = response.getOutputStream();
			pdfStream.writeTo(flusher);	
			flusher.flush();
			flusher.close();
	                FacesContext.getCurrentInstance().responseComplete();
			pdfStream.close(); 
			pdfStream = null;
			

		}catch (Exception e) {
			e.printStackTrace();
		}
			
	}

Qualquer ajuda é bem vinda, inclusive código fonte com algum exemplo funcionando. :wink:

Obrigado! :smiley:

Cara,vou postar um código meu que funciona.Tem algumas pequenas diferenças com relação ao seu.

HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
			response.setContentType("application/pdf");
			response.setHeader("content-disposition","attachment;filename=Movimentacao");
			response.setContentLength(bytes.length);
			ServletOutputStream servletStream = response.getOutputStream();
			servletStream.write(bytes, 0, bytes.length);
			servletStream.flush();
			servletStream.close();
			FacesContext.getCurrentInstance().responseComplete();

Mostre como vc esta chamando seu relatorio na sua pagina,uma dica ,se estiver usando ajax naum ira funcionar.

Valeu raf4ever pelo código.

O lgweb acertou na mosca, foi só eu mudar para submitMode=“server” que funcionou, o problema era o AJAX.

Obrigado pessoal!

:lol: