Personal how to generate PDF file using ITEXT with JSF. The problem is the following, when I ask to generate the PDF file in a class having only the MAIN method, it generates normally, but when I ask to generate the XHTML page by BUTTON it does not generate.
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
<title>Listar</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link rel="stylesheet" type="text/css" href="EstiloTabela.css"/>
</h:head>
<h:body style="background-color:gray">
<p:messages autoUpdate="true" errorStyle="color: red"
infoStyle="color: green" layout="table" showSummary="true" showDetail="false" globalOnly="true"/>
<center>
<h:form>
<h:dataTable
id="tableBem"
value="#{BemBean.getList()}"
var="bem"
styleClass="order-table"
headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row" border="4">
<h:column>
<f:facet name="header">
<p>Codigo Bem</p>
</f:facet>
<p>#{bem.codigoBem}</p>
</h:column>
<h:column>
<f:facet name="header">
<p>nome</p>
</f:facet>
<p>#{bem.nome}</p>
</h:column>
<h:column>
<f:facet name="header">
<p>Codigo Fornecedor</p>
</f:facet>
<p>#{bem.codigoFornecedor}</p>
</h:column>
<h:column>
<f:facet name="header">
<p>Codigo Sala</p>
</f:facet>
<p>#{bem.codigoSala}</p>
</h:column>
<h:column>
<f:facet name="header">
<p>Codigo Marca</p>
</f:facet>
<p>#{bem.codigoMarca}</p>
</h:column>
</h:dataTable>
<h:commandButton value="Relatorio" action="#{BemBean.gerarRelatorio()}"></h:commandButton>
</h:form>
</center>
</h:body>
</html>
public void gerarRelatorio(){
String url = "jdbc:postgresql://localhost:5432/ControlePatrimonio";
String usuario = "postgres";
String senha = "postgres";
try {
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection(url, usuario, senha);
Statement stmt = con.createStatement();
ResultSet result = stmt.executeQuery("SELECT * FROM bem");
Document document = new Document();
FileOutputStream fos = new FileOutputStream("RelatorioBem.pdf");
PrintWriter gravarArq = new PrintWriter(fos);
PdfWriter.getInstance(document, fos);
document.open();
while(result.next()){
document.add(new Paragraph(Integer.toString(result.getInt("codigoBem")) + " " + result.getString("nome")));
}
document.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
package controle;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.LinkedList;
import java.util.TreeSet;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import dominio.DAOBem;
@ManagedBean(name="BemBean")
@RequestScoped
public class Bem implements Comparable<Bem>{
private int codigoBem;
private String nome;
private int codigoFornecedor;
private int codigoSala;
private int codigoMarca;
private static Bem singleton;
public Bem(){
}
public void gerarRelatorio(){
DAOBem dao = DAOBem.getSingleton();
dao.gerarRelatorio();
}
public TreeSet<Bem> consultaPorCodigo(){
DAOBem dao = DAOBem.getSingleton();
dao.setCodigo(this.codigoBem);
dao.setCodigoFornecedor(this.codigoFornecedor);
dao.setCodigoSala(this.codigoSala);
dao.setCodigoMarca(this.codigoMarca);
return dao.consultaPorCodigo();
}
public TreeSet<Bem> consultaPorNome(){
DAOBem dao = DAOBem.getSingleton();
dao.setNome(this.nome);
dao.setCodigoFornecedor(this.codigoFornecedor);
dao.setCodigoSala(this.codigoSala);
dao.setCodigoMarca(this.codigoMarca);
return dao.consultaPorNome();
}
public TreeSet<Bem> consultaPorCodigo(int codigo){
DAOBem dao = DAOBem.getSingleton();
return dao.consultaPorCodigo();
}
public static TreeSet<String> getListNomeFornecedor(){
DAOBem bem = DAOBem.getSingleton();
return bem.getListNomeFornecedor();
}
public static TreeSet<String> getListNomeSala(){
DAOBem bem = DAOBem.getSingleton();
return bem.getListNomeSala();
}
public static TreeSet<String> getListNomeMarca(){
DAOBem bem = DAOBem.getSingleton();
return bem.getListNomeMarca();
}
public LinkedList<Bem> getList(){
return DAOBem.getList();
}
public void alterar(int codigoBem,String nome,int codigoFornecedor,int codigoSala,int codigoMarca){
DAOBem bem = DAOBem.getSingleton();
bem.setCodigo(this.getCodigoBem());
bem.setNome(this.getNome());
bem.setCodigoFornecedor(this.getCodigoFornecedor());
bem.setCodigoSala(this.getCodigoSala());
bem.setCodigoMarca(this.getCodigoMarca());
bem.alterar();
}
public void excluir(int codigoBem){
DAOBem bem = DAOBem.getSingleton();
bem.setCodigo(this.getCodigoBem());
bem.excluir();
}
public void cadastrar(String nome,int codigoFornecedor,int codigoSala,int codigoMarca){
DAOBem bem = DAOBem.getSingleton();
bem.setNome(this.getNome());
bem.setCodigoFornecedor(this.getCodigoFornecedor());
bem.setCodigoSala(this.getCodigoSala());
bem.setCodigoMarca(this.getCodigoMarca());
bem.cadastrar();
}
public void setCodigoBem(int codigoBem){
this.codigoBem = codigoBem;
}
public void setNome(String nome){
this.nome = nome;
}
public void setCodigoFornecedor(int codigoFornecedor){
this.codigoFornecedor = codigoFornecedor;
}
public void setcodigoSala(int codigoSala){
this.codigoSala = codigoSala;
}
public void setCodigoMarca(int codigoMarca){
this.codigoMarca = codigoMarca;
}
public int getCodigoBem(){
return this.codigoBem;
}
public String getNome(){
return this.nome;
}
public int getCodigoFornecedor(){
return this.codigoFornecedor;
}
public int getCodigoSala(){
return this.codigoSala;
}
public int getCodigoMarca(){
return this.codigoMarca;
}
public static Bem getSingleton(){
if(singleton == null){
singleton = new Bem();
}
return singleton;
}
@Override
public int compareTo(Bem bem) {
if(this.equals(bem)){
return 0;
}
else{
return 1;
}
}
}