Pessoal,
Estou conseguindo gerar o pdf no diretorio /home/desenvolvimento/workspace/local/build/web/emissaobl usando o servelet abaixo:
package utilitarios;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.JasperViewer;
import java.sql.*;
import java.util.*;
import java.util.HashMap;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class emitebl {
private static Connection getConnection( ) throws ClassNotFoundException, SQLException{
String driver = "org.postgresql.Driver";
String url = "jdbc:postgresql://localhost/sistema";
String user = "usuario";
String password = "";
Class.forName(driver);
Connection con = DriverManager.getConnection( url, user, password );
return con;
}
public void geraRelatorio( ) throws JRException, Exception{
try{
Connection con = getConnection( );
Statement stm = con.createStatement( );
String query = "SELECT * FROM emissaobl";
ResultSet rs = stm.executeQuery(query);
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
Map parameters = new HashMap();
String caminho = "/home/desenvolvimento/workspace/local/build/web/emissaobl/";
JasperFillManager.fillReportToFile(caminho+"emitebl.jasper",parameters,jrRS);
JasperExportManager.exportReportToPdfFile(caminho+"emitebl.jrprint");
JasperViewer.viewReport(caminho+"emitebl.pdf",false);
}catch (JRException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
}
}
E esse é o jsp:
<%
try{
new emitebl().geraRelatorio();
} catch (JRException e) {
out.println("JR: "+e.toString());
} catch (SQLException e) {
out.println("SQL: "+e.toString());
}
%>
Mas o problema não é gerar…mas mostrar. Eu coloquei esse jsp para acionar o servlet e gerar o pdf. Só que ele da erro na linha que fala pra ele mostrar o pdf (JasperViewer.viewReport(caminho+"emitebl.pdf",false);).
Alguem tem uma idéia de como mostrar o pdf pro usuário?
Já li que o ideal não é gerar o pdf no disco mas sim gerar o pdf por stream e jogar no browser do usuário. Mas isso eu tb não tenho a mínima idéia de como fazer.
Alguém sabe como?