[RESOLVIDO] Problemas na exibição do relatorio com JasperReport em aplicação JAVA EE

Olá pessoal, preciso muito de uma ajudinha de vocês.

No meu trabalho, estou desenvolvendo uma aplicação Java EE, com web service REST (Jersey), Hibernate e JQuery no front-end.
Todas as minhas requisições do sistema usam o ajax e estou com dificuldade em gerar o relatório e exibi-lo na tela para o usuário (seja abrindo no browser ou download).

Gostaria de saber a melhor maneira de fazer isso, já vi alguns locais dizendo que não é possivel abrir o PDF recebido pelo Ajax.

Eu possuo alguns filtros que o usuário pode escolher para gerar o relatório e passo esses filtros através de um POST para o web service que me retorna assim (creio que está certo essa parte):

File relatorio = gerarRelatorioExtratoVendas(movimentos, usuarioLogado, filtros); ResponseBuilder response = Response.ok(relatorio); response.type("application/pdf"); response.header("Content-Disposition", "attachment; filename=" + relatorio.getName()); return response.build();

Agora preciso recebê-lo e mostrar para o usuário, estou salvando em uma pasta temporária do sistema.

Aguardo o retorno.
Obrigada desde já.

Pra gerar relatórios eu uso o iReport pra construir e pra retornar pra tela por download utilizo mais o menos assim:

getHttpResponse().setContentType("application/pdf");
getHttpResponse().addHeader("Content-Disposition", "attachment;filename=NomeQueSairaParaoUsuario.pdf");

JasperExportManager.exportReportToPdfStream(jasperPrint, getHttpResponse().getOutputStream());

super.context().renderResponse();
super.context().responseComplete();

[RESOLVIDO]

Pessoal, consegui resolver. Vou postar aqui para caso alguém tenha a mesma dúvida.

No web service tenho o seguinte método:

@POST
@Consumes("application/json")
@Produces("application/pdf")
@Path("/faturamento")
public Response relatorioFaturamentoResumido(FiltrosFaturamento filtros) {
// ... código anterior
Map parametros = new HashMap();
List lista = new ArrayList();
File relatorio = RelatoriosHelper.gerarPdfRelatorioFaturamentoResumido(parametros, lista);
ResponseBuilder response = Response.ok(relatorio);
response.type("application/pdf");
response.header("Content-Disposition", "attachment; filename=relatorio.pdf");
return response.build();		
}

Método gerarPdfRelatorioFaturamento

public static File gerarPdfRelatorioFaturamentoResumido(Map parametros, List dados) {
File fileJrxml = new File(ClassLoaders.getResource("caminho/Relatorio_FaturamentoResumido.jrxml").getFile());
// cria arquivo na pasta temporária do sistema operacional utilizado.
File file = File.createTempFile("relatorio", ".pdf");
OutputStream saida = new FileOutputStream(file);
GeradorDeRelatorios gerador = new GeradorDeRelatorios();
gerador.geraRelatorioPdf(fileJrxml.getPath(), parametros, dados, saida);
return file;
}

Método geraRelatorioPdf (padrão para gerar todos os relatórios do sistema)

public void geraRelatorioPdf(String jrxml, Map parametros, List<? extends Object> fields, OutputStream saida) throws JRException {
    JasperReport jasper = JasperCompileManager.compileReport(jrxml);
    JRBeanCollectionDataSource dados = new JRBeanCollectionDataSource(fields);
    JasperPrint print = JasperFillManager.fillReport(jasper, parametros, dados);
    JasperExportManager.exportReportToPdfStream(print, saida);
}

Os trechos acima correspondem ao back-end e o trecho abaixo é a chamada XmlHttpRequest no front-end para a recuperação do arquivo e download no browser do usuário.
Obs: no meu caso tenho alguns filtros, por isso estou enviando parametros no método xhr.send().

function gerarRelatorio() {
		var xhr = new XMLHttpRequest();
		xhr.open("POST", "../ws/relatorios/faturamento", true);		
		xhr.setRequestHeader("Content-Type", "application/json");
		xhr.responseType = 'blob';		
		xhr.send(getFiltros());	
		xhr.onload = function() {
			if(this.status == 200) {
				var blob = new Blob([this.response], {type: "application/pdf"});
				var a = document.createElement("a");
				a.style = "display: none";
				document.body.appendChild(a);
				var url = window.URL.createObjectURL(blob);
				a.href = url;
				a.download = "relatorio.pdf";
				a.click();
				window.URL.revokeObjectURL(url);
			} else {
				console.log("Erro");
			}
		}
	}

É isso pessoal. Agora deu certinho o download dos meus relatórios.
Tive apenas um probleminha pra abri-los com o firefox, mas só fiz o download, abri com outro leitor de PDF e deu tudo certo.