JSF Erro JasperRerport export to PDF enconding[RESOLVIDO]

3 respostas
S

Olá amigos

estou tentando visualizar um relatorio feito em IReport mas aparece isto:

%PDF-1.4
%����
1 0 obj <</Length 29/Filter/FlateDecode>>stream
x�+�r
�26S05�TI�r

���1i2
endstream
endobj
3 0 obj<</Group<</Type/Group/CS/DeviceRGB/S/Transparency>>/Parent 2 0 R/Contents 1 0 R/Type/Page/Resources<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]/ColorSpace<</CS/DeviceRGB>>>>/MediaBox[0 0 842 595]>>
endobj
2 0 obj<</Type/Pages/Count 1/Kids[3 0 R]>>
endobj
4 0 obj<</Type/Catalog/Pages 2 0 R>>
endobj
5 0 obj<</Creator(JasperReports (relprodutos))/Producer(iText 2.1.0 (by lowagie.com))/ModDate(D:20100209114240-03’00’)/CreationDate(D:20100209114240-03’00’)>>
endobj
xref
0 6
[telefone removido] 65535 f
[telefone removido] 00000 n
[telefone removido] 00000 n
[telefone removido] 00000 n
[telefone removido] 00000 n
[telefone removido] 00000 n
trailer
<</Root 4 0 R/ID [<79c2cacf979cb316779948455e0d6b59><170c6ec5de529dc2e3944833c5705cf6>]/Info 5 0 R/Size 6>>
startxref
589
%%EOF

ProdudoMBean.java

public String imprimir() throws Exception {
		byte[] bytes = null;
		try {
			URL relatorioURL = this.getCurrentClassLoader().getResource("reports/relprodutos.jasper");
     		JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(relatorioURL);
	     	bytes = JasperRunManager.runReportToPdf(relatorioJasper, null);

		} catch (JRException e) {
			e.printStackTrace();
		}
		super.setBytes(bytes, "application/pdf");
		return null;
	}
public void setBytes(byte[] bytes, String mimeType) {
		
		HttpServletResponse servletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
		
		if (bytes != null && bytes.length > 0) {
			// envia o relatório em formato PDF para o browser
			servletResponse.setContentType(mimeType);
			servletResponse.setContentLength(bytes.length);
			servletResponse.setHeader("Content-disposition", "attachment; filename=\"" + "relatorio" + ".pdf\"");			
			ServletOutputStream ouputStream;	
			try {
				ouputStream = servletResponse.getOutputStream();
				ouputStream.write(bytes, 0, bytes.length);
				ouputStream.flush();
				ouputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		FacesContext.getCurrentInstance().responseComplete(); 
	}

Alguem pode ajudar?

Silvio Guedes

3 Respostas

J

mostre-nos o trecho do seu jsp que chama o método do bean

S

Olá amigo

a4j:form
<h:commandButton value=“imprimir” action="#{produtoMBean.imprimir}" rendered="#{produtoMBean.estadoPesquisar}"/>
</a4j:form>

Silvio Guedes

S

Olá amigos

problema resolvido:

<h:form>
<h:commandButton value=“Imprimir” action="#{produtoMBean.imprimir}" rendered="#{produtoMBean.estadoPesquisar}"/>
</h:form>

Referência:
http://www.guj.com.br/posts/list/197089.java#989256

Muito Obrigado

Silvio Guedes

Criado 9 de fevereiro de 2010
Ultima resposta 9 de fev. de 2010
Respostas 3
Participantes 2