public void imprimirRelatorio(int argumento1,int argumento2, String nomedorelatorio, String nomedocampoparaarguemntacao, String nomedegravacaodorelatorio) throws IOException, JRException, ClassNotFoundException, Exception {
        ServletOutputStream servletOutputStream;
        File arquivoGerado;
        System.out.println("Entrou no Metodo");

        HashMap parameters = new HashMap();
        try {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            String caminhorelatorio = facesContext.getExternalContext().getRealPath("relatorio");
            System.out.println(nomedocampoparaarguemntacao + " e argumento "+argumento1);
            parameters.put(nomedocampoparaarguemntacao, argumento1);
            System.out.println("ano e argumento "+argumento2);
            parameters.put("ano", argumento2);

            ServletContext scontext = (ServletContext) facesContext.getExternalContext().getContext();
            JasperPrint jasperPrint = JasperFillManager.fillReport(scontext.getResourceAsStream("/relatorio/" + nomedorelatorio + ".jasper"), parameters, getConn());

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            JRPdfExporter exporter = new JRPdfExporter();
            String caminhoArquivoRelatorio = caminhorelatorio + File.separator + nomedegravacaodorelatorio + ".pdf";
            arquivoGerado = new File(caminhoArquivoRelatorio);

            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            exporter.setParameter(JRExporterParameter.OUTPUT_FILE, arquivoGerado);
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);

            exporter.exportReport();
            arquivoGerado.deleteOnExit();
            System.out.println("Fim da exportação");

            byte[] bytes = baos.toByteArray();
            System.out.println("Tamanho: " + bytes.length + " Bytes");
            if (bytes != null && bytes.length > 0) {
                System.out.println("Escrevendo bytes!");
                HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
                response.reset();
                response.setContentType("application/pdf");
                response.setHeader("Content-disposition", "inline; filename=" + nomedegravacaodorelatorio + ".pdf");
                response.setContentLength(bytes.length);
                servletOutputStream = response.getOutputStream();
                JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream);
                servletOutputStream.write(bytes, 0, bytes.length);
                servletOutputStream.flush();
                servletOutputStream.close();
                facesContext.renderResponse();
                facesContext.responseComplete();
                System.out.println("Relatório gerado!");
            }

        } catch (IOException ioe) {
            ioe.printStackTrace();
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Falta do arquivo para geração do relatório!", null);
            FacesContext.getCurrentInstance().addMessage("add", msg);
        } catch (JRException jreE) {
            jreE.printStackTrace();
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro no Ireport!", null);
            FacesContext.getCurrentInstance().addMessage("add", msg);
        } catch (Exception cnfe) {
            cnfe.printStackTrace();
            msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro de Biblioteca que não Existe!", null);
            FacesContext.getCurrentInstance().addMessage("add", msg);
        }
    }