Bom dia Pessoal,
Estou com problemas e preciso da ajuda de vocês, é o seguinte tenho uma aplicação web na qual salvo os dados e preciso enviar o relatorio com os dados salvo diretamente para impressora, ja consigo salvar e gerar o relatorio para o usuario imprimir, mas o que o cliente realmente quer é que vá diretamente para impressora sem abrir a tela para ele imprimir. Na hora que estou utilizando o comando JasperFillManager.fillReportToStream ele da erro e não me dar opções de resolução, no meu projeto ja existe as bibliotecas commons-logging e mesmo assim da erro, vocês poderiam me ajudar por favor.
Segue o codigo:
/**
* @todo passar os relatórios antigos para o sql via jasper
*/
public void geraRelatorio(){
InputStream relatorioStream = null;
RelatorioBase relatorioBase = getRelatorioBase();
ParametrosRelatorios parametrosRelatorios = getParametrosRelatorios();
parametrosRelatorios.setFigurasPathReports(getFigurasPathReports());
//setando subtipo se apenas o tipo tiver sido selecionado
if (parametrosRelatorios.getSubTipoSolicitacao() == null && getSelTipoSolicitacao() != null &&
getSelTipoSolicitacao().getValue() != null){
SubTipoSolicitacao subTipoSolicitacao = new SubTipoSolicitacao();
subTipoSolicitacao.setTipoSolicitacao((TipoSolicitacao) getSelTipoSolicitacao().getValue());
parametrosRelatorios.setSubTipoSolicitacao(subTipoSolicitacao);
}
//setando os parametros para as buscas
relatorioBase.setParametrosRelatorios(getParametrosRelatorios());
//setando o complemento do titulo
relatorioService.getComplementoTitulo(relatorioBase);
//caso a unidade escolhida seja a de emergencia deve ser acrescentada um comando ao sql
if(parametrosRelatorios.getGrupoLocal() != null && parametrosRelatorios.getGrupoLocal().equals(0)){
parametrosRelatorios.setUnidadeEmergencia(true);
}
//setando valor da checkbox
relatorioBase.getParametrosRelatorios().setKitsNaoEntregues(kitsNaoEntregues);
//relatorioBase.getParametrosRelatorios().setTempoAtendimentoRegulacao(tempoAtendimentoRegulacao);
//setando parametros para mostrar no relatorio
Map parametrosMap = relatorioService.preencherParamentrosParaRelatorio(relatorioBase.getParametrosRelatorios());
relatorioBase.setParametros(parametrosMap);
try {
//preenchendo os dados do relatório
relatorioBase = relatorioService.preencherRelatorioBasePorCodigo(relatorioBase);
} catch (OutOfMemoryError e) {
addMessage(FacesMessage.SEVERITY_FATAL, "Não foi possível realizar a consulta para o seu relatório, por favor tente novamente" +
" restringindo sua consulta, preenchendo algum filtro ou reduzindo o período.", null);
erroRelatorio();
}
//para mais seguranca, o real nome do relatorio e setado na hora de gera-lo
relatorioBase.setNome(getPathReports()+relatorioBase.getNome()+ "_cluf.jasper");
try {
ServletOutputStream responseStream = response.getOutputStream();
relatorioStream = new BufferedInputStream(new FileInputStream(relatorioBase.getNome()));
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(relatorioBase.getCollection());
if(relatorioBase.getCodigoTemplate() <= 9){
JasperRunManager.runReportToPdfStream(relatorioStream, responseStream, relatorioBase.getParametros(), ds);
}else{
JasperRunManager.runReportToPdfStream(relatorioStream, responseStream, relatorioBase.getParametros(), dataSource.getConnection());
}
JasperPrint impressao = null;
impressao = JasperFillManager.fillReportToStream(relatorioStream, responseStream, relatorioBase.getParametros(), dataSource.getConnection());
//(relatorioStream, responseStream, relatorioBase.getParametros(), dataSource.getConnection()); //(faturaSIAFIsim_all.jasper", params, jrRS);
JasperPrintManager.printPages(impressao, 0 , 0 ,false);
response.setContentType(relatorioBase.getTipo());
responseStream.flush();
responseStream.close();
context.responseComplete();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JRException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}