Pessoal, preciso de uma ajuda:
Tenho uma classe que contem a funcao abaixo:
public void chamaRelatorio(ArrayList ar) throws JRException {
HashMap hs = new HashMap();
JRDataSource jrds = new JRBeanArrayDataSource(ar.toArray());
JasperPrint prt = null;
prt = JasperFillManager.fillReport("D:/BID/aplicacaoBID/relatorio/contrato/ContratoBid.jasper", hs, jrds);
JasperViewer jrviewer = new JasperViewer(prt, false);
jrviewer.show();
}
Porem, eu preciso que este relatorio seja aberto no browser em formato PDF.
Alguem sabe me ajudar?
Obrigado desde já!
Segue exemplo:
import net.sf.jasperreports.engine.;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Relatorio extends HttpServlet{
//--------------------------------------------------Variaveis-----------------------------------------------------\
private ByteArrayOutputStream Stream = new ByteArrayOutputStream();
//--------------------------Metodos doServlet--------------------------------\
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//Seta o tipo de aplicação do relatório
response.setContentType("application/pdf");
// nome do relatorio
String reportName = "C:/Arquivos de programas/Apache Software Foundation/Tomcat 5.5/webapps/(SUA APLICACAO)/" + "Relatorio.jasper";
//Parametros do relatorio
Map parameters = new HashMap();
parameters.put("Title","Relatório de Empregados");
//carrega relatório
JasperPrint print = JasperFillManager.fillReport(reportName, parameters);
//exporta para pdf e exibe no browser sem criar um arquivo fisico em sua maquina
JasperExportManager.exportReportToPdfStream(print, Stream);
//define os cabecalhos do header
response.setHeader("Pragma","");
response.setHeader("Cache-Control","");
response.setHeader("Expires","");
//Escreve o relatorio no response
OutputStream out = response.getOutputStream();
Stream.writeTo(out);
response.setContentLength(Stream.size());
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
response.getWriter().println("Erro: " + e);
} finally {
}
}