Alguém ai saberia como visualizar meu relátorio .pdf através da Servlet chamada do Flex?
Estava tentando tentando uma biblioteca do flex para visualizar chamada adobe xViewer até então tudo certo só que precisei colocar uma imagem no relatório e percebi que o esse biblioteca não tem suporte a esse componente do iReport então baixei outra biblioteca de visualização para o Flex chamada JasperReports Flash Viewer 4.0.0 porém também não consigui visualizar, agora quero apenas passar a tarefa para o Browser para ele mostrar o pdf ou baixar se não tiver suporte ao pdf, estou utilizando um exemplo de outro relatório aqui da empresa feito em JSP e Servlet. Segue código da Servlet:protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletOutputStream servletOutputStream = response.getOutputStream();
String caminhoRelatorio = "/relatorios/report2.jasper";
InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream(caminhoRelatorio);
JasperPrint reportPrint = null;
String reportXML = null; //String que guardará o xml do relatório
Connection conn = null;
HashMap parametros = new HashMap(); //Parametos necessários ao relatório
/* Parametro passado do java para o relatório sendo que no argumento desse método e um
* parametro flex passado para o java através do método "POST"
*/
parametros.put("PAR_ID_OS", Integer.parseInt(request.getParameter("id_os")));
parametros.put("PAR_IMAGEM", getServletContext().getRealPath("/relatorios/imagem.jpg"));
try{
//cria a conexão com o banco de dados
conn = ConnectionFactory.getConnection();
// envia o relatório em formato PDF para o browser
response.setContentType("application/pdf");
//para gerar o relatório em PDF
// o método runReportToPdfStream foi usado
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, conn);
}catch(JRException e){
e.printStackTrace();
}finally{
servletOutputStream.flush();
servletOutputStream.close();
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
<!--Serviço HTTP usando metodo POST -->
<mx:HTTPService id="httServiceAux" method="POST"
url="relatorios"
fault="failRequest(event)" resultFormat="e4x">
<mx:request>
<id>{numId}</id> <!-- parametro passado para a servlet-->
</mx:request>
</mx:HTTPService>
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
[Bindable]
private var numId:Number = 5;
//manda requisição para servlet
public function gerarNovoRelatorio(numId:Number):void
{
this.numId = numId; //atribui código
httServiceAux.send();
}
/*
* Outros métodos...
*/
]]>
</mx:Script>
Esse código executam tudo direitinho porém não mostra o relatório ele continua na mesma tela do Flex!