Spring MVC com Jasper Reports

2 respostas Resolvido
jasperspringjava
I

Olá pessoal,

Criei um relatório no Jasper para apresentar ao usuário (Spring MVC). Ele é apresentado, mas quando o usuário tenta fazer o download, ele não traz o tipo do arquivo como PDF e acusa erro de “falha de rede” ao tentar baixar.

@PostMapping("/auditoria")
public ResponseEntity<byte[]> geraRelatorioAuditoria(Auditoria auditoria) throws Exception {
	byte[] relatorio = relatorioService.gerarRelatorioPorAuditoria(auditoria.getCodigo());

	final HttpHeaders headers = new HttpHeaders();
	headers.setContentType(MediaType.parseMediaType("application/pdf"));
	headers.set("Content-disposition", "inline; filename=auditoria_" + auditoria.getCodigo() + ".pdf");
	return new ResponseEntity<>(relatorio, headers, HttpStatus.OK);
}

Segue também o método que retorna o array de bytes

public byte[] gerarRelatorioPorAuditoria(Long codigoAuditoria) throws Exception {
	AuditoriaDTO auditoria = auditorias.cabecalhoAuditoria(codigoAuditoria);
	List<RespostaDTO> auditoriaList = auditorias.relatorioPorAuditoria(codigoAuditoria);

	auditoria.transformaData();

	Map<String, Object> parametros = new HashMap<>();
	parametros.put("format", "pdf");
	parametros.put("auditoriaNome", auditoria.getNome());
	parametros.put("lojaNome", auditoria.getLoja());
	parametros.put("dataAuditoria", auditoria.getDataAuditoria());

	JRDataSource jrDataSource = new JRBeanCollectionDataSource(auditoriaList);

	InputStream inputStream = this.getClass().getResourceAsStream("/relatorios/relatorio_auditoria.jasper");
	
	try {
		JasperPrint jasperPrint = JasperFillManager.fillReport(inputStream, parametros, jrDataSource);
		return JasperExportManager.exportReportToPdf(jasperPrint);
	} finally {

	}
}

Alguém já passou por isso?

2 Respostas

darlan_machado

Ajuda?

I
Solucao aceita

Cara, fiz a troca do método de POST para GET, e ele funcionou certinho.

Criado 7 de outubro de 2019
Ultima resposta 7 de out. de 2019
Respostas 2
Participantes 2