Relatórios em pdf

Galera eu tenho uma aplicação no java e o professor da faculdade queria que eu salvasse alguns dados (que está no banco de dados) em arquivo PDF , no meu caso seria uma lista de clientes e uma lista de filmes, que eu consigo acessar em JTable, teria como eu pegar todos esses dados no JTable e colocar num arquivo PDF como se fosse uma lista???

[quote=Adamgnr]Galera eu tenho uma aplicação no java e o professor da faculdade queria que eu salvasse alguns dados (que está no banco de dados) em arquivo PDF , no meu caso seria uma lista de clientes e uma lista de filmes, que eu consigo acessar em JTable, teria como eu pegar todos esses dados no JTable e colocar num arquivo PDF como se fosse uma lista???
[/quote]

Oi!

Sim, sem dúvidas, senão seu professor nem teria pedido não é? :smiley:
Podes usar o Jasper Reports para isso. Aqui tem um exemplo de como fazer em Java.
Tem dezenas de exemplos e demonstrações na net de como fazer isso, dê uma pesquisada e qualquer dúvida, poste o seu código com a respectiva dúvida/erro/afins.

Abraços.

acho que isto pode te ajudar

Essa classe que tenho aqui, faz isso…

package TrabalhoPDF;

import java.sql.*;
import javax.swing.*;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.FontSelector;
import com.lowagie.text.pdf.PdfWriter;

import java.awt.*;
import java.awt.event.*;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;

public class ConsultaGrade extends JFrame implements ActionListener
{
  JButton b1,b2,b3;
  JPanel panel;
  JTable tab;
  Conexao con = new Conexao();  
  static JFrame janela;
  
  public static void main(String args[])
  {
       janela = new ConsultaGrade();
       janela.setVisible(true);
  }
  
  public ConsultaGrade() 
  {   
    setTitle( "Tabela de Filmes" );
    setBounds(200,200,600,300);
    setResizable(false);    
    getContentPane().setBackground(Color.white);
    b1 = new JButton("Consultar");
    b2 = new JButton("Sair");
    b3 = new JButton("Imprimir PDF");
    b1.addActionListener(this);
    b2.addActionListener(this);
    b3.addActionListener(this);
    panel = new JPanel();
    panel.setBackground(new Color(230,230,230));
    panel.setLayout(new FlowLayout(FlowLayout.LEFT));
    panel.add(b1);
    panel.add(b3);
    panel.add(b2);
    getContentPane().add(panel, BorderLayout.NORTH);

    String ret = con.conectaAccess(); 
    if (ret!="") 
    {
       JOptionPane.showMessageDialog(null,ret);
       System.exit(0);
    }   
  }

  public void actionPerformed(ActionEvent e)
  {
  	if (e.getSource()==b1)
  	{
       criaGrade();
       JScrollPane scroller = new JScrollPane( tab );
       getContentPane().add(scroller, BorderLayout.CENTER);
       janela.setVisible(true);
  	}
  	if (e.getSource()==b2)
  	{
	  // con.close();
	   System.exit(0);
  	}
  	if (e.getSource()==b3) {
		Document document = new Document();
		ResultSet res;
		String cod, nome;
		try {
			PdfWriter.getInstance(document, new FileOutputStream("c:/filmes.pdf"));
			document.open();
			res = con.statement.executeQuery("SELECT * FROM Filmes");
			res.first();
			Paragraph paragraph = new Paragraph();
  			paragraph.setAlignment(Element.ALIGN_CENTER);
  		    FontSelector font1 = new FontSelector(); 
  			font1.addFont(new Font(Font.COURIER,26));
  			String texto = "RELATÓRIO DE FILMES";
  			Phrase frase = font1.process(texto); 
  			paragraph.add(new Paragraph(frase));
  		    document.add(paragraph);
  			document.add(new Paragraph("CÓDIGO       TÍTULO")); 
  			int count=0, linha = 38;
			do 
	        {
	          cod = res.getString(1);
	          nome = res.getString(2);
	          document.setMargins(20, 20, 50, 50);
	          document.add(new Paragraph(cod +"        "+ nome));
	          System.out.println(count);
	          if (count == linha ) 
	           {
	        	  linha = linha + 38;
	        	  document.add(paragraph);
	        	  document.add(new Paragraph("CÓDIGO       TÍTULO")); 
	           }
	          count++;
	         } 
	        while ( res.next() );      
			JOptionPane.showMessageDialog(null, "Geração Ok");
		}
		     catch (DocumentException de) 
		     {
			    System.err.println(de.getMessage());
			 }
			 catch(IOException ioe)
			 {
				System.err.println(ioe.getMessage());
			 }
			 catch (SQLException erro) 
			 { 
				 System.out.println(erro.toString());
			 }
			 document.close();
		}
  	}
  
   private void criaGrade()
  {
     ResultSet res;
     try 
     {
        Vector cabecalho = new Vector();
        Vector linhas = new Vector();
        res = con.statement.executeQuery("select * from Filmes");
        res.next();
        // busca os cabeçalhos
        ResultSetMetaData rsmd = res.getMetaData();
        for ( int i = 1; i <= rsmd.getColumnCount(); i++ ) 
            cabecalho.addElement( rsmd.getColumnName( i ) );
        
        // busca dados das linhas
        do 
        {
           linhas.addElement( proximaLinha( res, rsmd ) ); 
        } 
        while ( res.next() );       
         // Mostra a tabela com cabeçalhos e registros
        tab = new JTable( linhas, cabecalho );
        tab.setBackground(new Color(250,128,114));
 //       validate();  ??
      }
      catch (SQLException erro) { System.out.println(erro.toString());}
  } 
  
  private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd )
  {
    Vector linhaAtual = new Vector();
    try
    {
    for ( int i = 1; i <= rsmd.getColumnCount(); i++ )
    //  switch( rsmd.getColumnType(i)) 
    //  {
    //    case Types.VARCHAR:
          linhaAtual.addElement(rs.getString(i));//break;
    //    case Types.TIMESTAMP:
    //      linhaAtual.addElement(rs.getDate(i));break;
    //  }
    }
    catch(SQLException erro)  { }
    return linhaAtual;   
  }
}