Pessoal…depois de muito esforço, consegui montar um script para mostrar um relatório feito no ireports(jasperreports), porém, aconteceu uma coisa interessante, ao criar um servlet para mostrar o preview do relatório, quando um usuário vai visualizar o mesmo, ao invés deste ser visualizado na máquina do cliente, o sistema abre na meu servidor. Então, gerei um pdf e joguei no buffer do browser, forçando o mesmo ser aberto pelo adobe acrobat reader através do navegador, mas gostaria de saber se é possível o cliente visualizar o preview do próprio ireports ? Como fazer isto ? Eu teria que redirecionar…se alguém puder me passar o código…eu agradeço !!!
Segue abaixo o servlet que fiz:
package beans;
import dori.jasper.engine.;
import dori.jasper.engine.design.;
import dori.jasper.engine.print.;
import dori.jasper.view.;
import dori.jasper.*;
import java.io.;
import javax.servlet.;
import javax.servlet.http.*;
import java.util.Map;
import java.util.Map;
import java.util.HashMap;
import java.sql.*;
public class Imprimir extends HttpServlet {
private static Connection con2 = null;
public void service(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
JRExporter exporter = null;
byte[] bytes = null;
Map parameters = new HashMap();
String systemId = getServletContext().getRealPath(request.getServletPath());
File directory = new File(systemId.substring(0, systemId.lastIndexOf(File.separator)-5)); //para tirar o nome do diretorio... (-5)
try {
//File reportFile = new File("c:\\empresas.jasper");
File reportFile = new File(directory.getPath()+"\\ireports\\empresas.jasper");
JasperPrint jasperPrint = JasperManager.fillReport(reportFile.getPath(), null, getConexao()); //o null pode ser trocado pelo parameters
bytes =JasperManager.runReportToPdf(reportFile.getPath(), null, getConexao());
if ((bytes != null) && (bytes.length>0))
{
response.setHeader("application/pdf", "Content-Type");
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
// JasperExportManager.exportReportToPdfFile(jasperPrint, “c:\farnetani.pdf”);
//AQUI É O ESQUEMA PARA VISUALIZA-LO PELO PREVIEW
// JasperViewer.viewReport(jasperPrint, true);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConexao(){
try{
DriverManager.registerDriver(new org.firebirdsql.jdbc.FBDriver());
con2 =DriverManager.getConnection(“jdbc:firebirdsql:localhost/3050:D:\Sistemas_Junior\CEBRAPA_7\Dados\CEBRAPA.GDB?lc_ctype=WIN1252”,“SYSDBA”,“masterkey”);
con2.setAutoCommit(true);
} catch (SQLException e){
System.out.println("Erro: " + (String)e.getMessage());
}
return con2;
}
}