Olá galera, mais um probleminha, eu tenho uma aplicação em que eu mando documentos pdf de um contrato de matrícula, mas as vezes pode ter mais de um documento, preciso mandar 2 pdf de uma vez pro cliente exemplo: contrato.pdf, aditivoBolsa.pdf. o problema é que quando eu chamo os métodos que gera os pdf ele sempre manda só o primeiro o segundo ele ignora, alguem já passo pelo mesmo problema?, segue meu codigo.
Metodo que gera o contrato em PDF:
public void gerarContrato(String idContrato) {
Connection con = null;
try {
HashMap<String, Object> mapInterna= new HashMap<String, Object>();
//1. Carregar arquivos.
String contexto = getContextPath();
//2. Configurar parametros.
//3. Gerar relatorio em PDF.
JasperReport pai = null;
pai = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "contrato.jasper");
//JasperReport filho = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "parecerObservacao.jasper");
mapInterna.put("Usuario",getUsuario());
mapInterna.put("Imagem",contexto);
mapInterna.put("CONTRATO",idContrato);
con = PoolConnection.getPollConection(Negocio.JDBC_POOL);
byte[] rel = JasperRunManager.runReportToPdf(pai, mapInterna, con);
//4. Enviar o PDF para o browser do cliente.
HttpServletResponse response = getResponse();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment;filename="+"contrato.pdf");
ServletOutputStream out = response.getOutputStream();
out.write(rel, 0, rel.length);
out.flush();
out.close();
FacesContext.getCurrentInstance().responseComplete();
} catch (Exception e) {
imprimirErrosPagina(e.getMessage());
} finally{
if (con!= null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Metodo que gera o Aditivo de Bolsa em PDF
public void gerarAditivoBolsa(String idContrato) {
Connection con = null;
try {
HashMap<String, Object> mapInterna= new HashMap<String, Object>();
//1. Carregar arquivos.
String contexto = getContextPath();
//2. Configurar parametros.
//3. Gerar relatorio em PDF.
JasperReport pai = null;
pai = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "aditivoBolsa.jasper");
//JasperReport filho = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "parecerObservacao.jasper");
mapInterna.put("Usuario",getUsuario());
mapInterna.put("Imagem",contexto);
mapInterna.put("CONTRATO",idContrato);
con = PoolConnection.getPollConection(Negocio.JDBC_POOL);
byte[] rel = JasperRunManager.runReportToPdf(pai, mapInterna, con);
//4. Enviar o PDF para o browser do cliente.
HttpServletResponse response = getResponse();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment;filename="+"aditivoBolsa.pdf");
ServletOutputStream out = response.getOutputStream();
out.write(rel, 0, rel.length);
out.flush();
out.close();
FacesContext.getCurrentInstance().responseComplete();
} catch (Exception e) {
imprimirErrosPagina(e.getMessage());
} finally{
if (con!= null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Chamada pra gerar meus relatórios, só gera o primeiro o segundo ele ignora =/.
RelatorioFrm rel = new RelatorioFrm();
rel.gerarContrato(contrato.getNumeroContrato());
rel.gerarAditivoBolsa(contrato.getNumeroContrato());
Ja tentei fazer dentro de um método só mas sem susseso
public void gerarDocumentos(String idContrato) {
Connection con = null;
try {
HashMap<String, Object> mapInterna= new HashMap<String, Object>();
//1. Carregar arquivos.
String contexto = getContextPath();
//2. Configurar parametros.
//3. Gerar relatorio em PDF.
JasperReport pai1 = null;
JasperReport pai2 = null;
pai1 = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "aditivoParcela.jasper");
pai2 = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "contrato.jasper");
//JasperReport filho = (JasperReport) JRLoader.loadObject(getContextPath() + PATH_REL + "parecerObservacao.jasper");
mapInterna.put("Usuario",getUsuario());
mapInterna.put("Imagem",contexto);
mapInterna.put("CONTRATO",idContrato);
con = PoolConnection.getPollConection(Negocio.JDBC_POOL);
byte[] rel1 = JasperRunManager.runReportToPdf(pai1, mapInterna, con);
byte[] rel2 = JasperRunManager.runReportToPdf(pai2, mapInterna, con);
//4. Enviar o PDF para o browser do cliente.
HttpServletResponse response = getResponse();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment;filename="+"documentos.pdf");
ServletOutputStream out = response.getOutputStream();
out.write(rel1, 0, rel1.length);
out.write(rel2, 0, rel2.length);
out.flush();
out.close();
FacesContext.getCurrentInstance().responseComplete();
} catch (Exception e) {
imprimirErrosPagina(e.getMessage());
} finally{
if (con!= null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}