Newsgroup: it.comp.java
Titolo: o è complesso o sono tonto

Sono due giorni che cerco di capire come potere stampare dati contenuti in
parte in JTable ed in parte in campi di vario tipo. Gli esempi visti nel
tutorial (sono in jdk 1.2 io ho jdk 1.4) sono riferiti a stampa di immagine,
stampa di testo unico, stampa di tabelle in forma grafica. Ho pensato di
formattare la mia stampa in una JTextArea e quindi di stamparla ma non
riesco a capire come. Sono cosě fuori strada? (in un secondo tempo vorrei
potere eseguire la stampa in formato pdf per inviarla via e-mail.). Ho
provato a vedere su richieste in lista ma non ho trovato nulla.
grazie :-)
Stefano

Ho dimenticato di dire che si tratta di una applicazione in rete collegata a
oracle in jdbc.
scusate
grazie
Stefano

(in un secondo tempo vorrei potere eseguire la stampa in formato pdf per
inviarla via e-mail)
Per esportare in pdf esistono librerie specifiche, una free è stata
sviluppata da 
apache.org
, non l'ho mai usata ma penso che la produzione del
pdf sia completamente indipendente dalla stampa, puoi sviluppare le due
parti in maniera separata!!
In bocca al lupo!!

 Per esportare in pdf esistono librerie specifiche, una free č stata


 Sono due giorni che cerco di capire come potere stampare dati contenuti in
Prova questo codice per stampare il resultSet su PDF..
e' un po' rozzo ( ci sarebbe un po' di roba da migliorare ) ma funziona..
Ricorda di aver il jar di Itext ( se non lo hai trova su google fai subito )
Trovi un esempio qui..
http://utenti.lycos.it/massippi/Deiezioni.pdf
La dichiarazione e' del tipo
/**********************************************/
StampaPDFdaResultset pdf=new StampaPDFdaResultset();
Document report;
pdf=new StampaPDFdaResultset();
report=new Document();
report=pdf.fncStampaPDFdaResultSet("TITOLOPDF","DESCRIZIONEPDF",CONNESSIONE,
query,FONT,FILE);
report.close();
/*********************************************/
/* Qui crea una classe con il none StampaPDFdaResultset.java */
/***************************************************************************
*
import java.io.*;
import java.awt.Color;
import com.lowagie.text.*;
import java.sql.*;
import com.lowagie.text.pdf.PdfWriter;
import java.util.*;
import java.awt.*;
class StampaPDFdaResultset{
        public StampaPDFdaResultset(){}
        public Document fncStampaPDFdaResultSet (String titolo, String
titoloSecondaParte,Connection con, String querySelez,int dimFontCelle,String
nomePDF,int numeroCelleInPDF){
                Document document=null;
                try{
                        Table table=new Table(1);
                        document=new Document();
   com.lowagie.text.Font fontTitolo =
FontFactory.getFont(FontFactory.TIMES_ROMAN, 15,
com.lowagie.text.Font.BOLD);
   com.lowagie.text.Font fontTitoloSecondaParte =
FontFactory.getFont(FontFactory.TIMES_ROMAN,
dimFontCelle,com.lowagie.text.Font.ITALIC);
   PdfWriter.getInstance(document, new FileOutputStream(nomePDF));
   document.open();
                        Phrase spazioPrimaPagina=new Phrase("
");
                        Phrase spazio=new Phrase("
");
                        document.add(spazioPrimaPagina);
                        document.add(spazio);
                        document.add(new Phrase("Pagina 1"));
                        table.setAutoFillEmptyCells(true);
   table.setCellpadding(3);
    table.setCellspacing(3);
    table.setBackgroundColor(Color.yellow);
    Cell cell = new Cell(new Phrase(titolo+"\n",fontTitolo));
    Phrase frase=new Phrase(titoloSecondaParte,fontTitoloSecondaParte);
    cell.add(frase);
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
   table.addCell(cell);
                        Table tabellaCampi[]=new Table[20000];
                        for(int i=0;i<20000;i++){
     tabellaCampi[i] = new Table(1);
                          tabellaCampi[i].setCellpadding(1);
                          tabellaCampi[i].setCellspacing(1);
                          tabellaCampi[i].setBorderWidth(-1);
                        }
                        Cell celle[]=new Cell[20000];
                        Statement statement;
                        ResultSet resultSet;
                        Statement statement2;
                        ResultSet resultSet2;
                        ResultSetMetaData rsmd;
                        ResultSetMetaData rsmd2;
                        int numeroValori=0;
                        int righe;
                        String query=querySelez;
statement=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONC
UR_UPDATABLE);
statement2=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CON
CUR_UPDATABLE);
                        resultSet=statement.executeQuery(query);
                        resultSet2=statement2.executeQuery(query);
                        rsmd=resultSet.getMetaData();
                        rsmd2=resultSet2.getMetaData();
                        int colonne=rsmd.getColumnCount();
                        int colonne2=rsmd.getColumnCount();
                        Cell cellaNomeCampiTAB[]=new Cell[colonne];
                        int conta=1;
                        int cellee=1;
                        int primo=0;
                        resultSet.isFirst();
                        for(int i=0;i<rsmd2.getColumnCount();i++){
                                                    celle[cellee]=new
Cell(new Phrase(rsmd2.getColumnName(i+1),fontTitoloSecondaParte));
                                                    cellee++;
                                                    numeroValori++;
                                    }
                        while(resultSet2.next()){
                          for(int i=0;i<colonne;i++){}
                        }
                        resultSet.isFirst();
                        while(resultSet.next()){
                            for(int i=0;i<colonne;i++){
                                String contenutoRs=new
String(resultSet.getString(conta)+ " ");
                                if (contenutoRs.equals("null ")) {
                                  celle[cellee]=new Cell(new Phrase("campo
vuoto",fontTitoloSecondaParte));
                                }
                                else{
                                  celle[cellee]=new Cell(new
Phrase(resultSet.getString(conta),fontTitoloSecondaParte));
                                }
                                conta++;
                                cellee++;
                                numeroValori++;
                            }
                            conta=1;
                            primo++;
                        }
                        document.add(table);
                        document.add(new Phrase(""));
                        int j=0;
                        int pagine=0;
                        int contatore=0;
                        boolean paginaDue=false;
                        boolean paginaUno=true;
                        int numeroCelleRimanenti=0;
                        while(contatore<numeroValori){
                          if (paginaUno==true){
                            tabellaCampi[j]=new Table(colonne);
                            tabellaCampi[j].setCellpadding(1);
                            tabellaCampi[j].setCellspacing(1);
                            tabellaCampi[j].setBorderWidth(-1);
numeroCelleRimanenti=cellee-((numeroCelleInPDF*colonne)+1);
                            pagine=0;
                            if(cellee<numeroCelleInPDF*colonne){
                              for(int a=1;a<(cellee);a++){
                                tabellaCampi[j].addCell(celle[a]);
                              }
                            }
                            else{
                              for(int
a=1;a<(numeroCelleInPDF*colonne)+1;a++){
      tabellaCampi[j].addCell(celle[a]);
                              }
                            }
                            document.add(tabellaCampi[j]);
                            document.add(new Phrase(""));
                          }
                          paginaUno=false;
                          int paginaSucc=1;
                          if (paginaDue==true){
if(contatore%((numeroCelleInPDF*colonne)-colonne)==0){
                              j++;
                              document.newPage();
                              document.add(spazio);
                              document.add(new Phrase("Pagina "+(j+1)));
                              for(int i=0;i<colonne;i++){
                                cellaNomeCampiTAB[i]=new Cell(new
Phrase(rsmd2.getColumnName(i+1),fontTitoloSecondaParte));
                              }
                              tabellaCampi[j]=new Table(colonne);
                              tabellaCampi[j].setCellpadding(1);
                              tabellaCampi[j].setCellspacing(1);
                              tabellaCampi[j].setBorderWidth(-1);
                              for(int i=0;i<colonne;i++){
tabellaCampi[j].addCell(cellaNomeCampiTAB[i]);
                              }
                              int conta2=0;
                                for(int
i=1;(i<(numeroCelleRimanenti)-((numeroCelleInPDF*colonne)*pagine)+1) &&
conta2<(numeroCelleInPDF*colonne);i++){
tabellaCampi[j].addCell(celle[(numeroCelleInPDF*colonne)*(pagine+1)+i]);
                                    conta2++;
                                }
                              pagine++;
                              document.add(table);
                              document.add(tabellaCampi[j]);
                            }
                          }
                          contatore++;
                          if(contatore>((numeroCelleInPDF*colonne)-colonne)
||contatore==((numeroCelleInPDF*colonne)-colonne)){
                               paginaDue=true;
                          }
                        }
                        resultSet.close();
                        resultSet2.close();
                        statement.close();
                        statement2.close();
                        return document;
  }catch(Exception e){
   document.close();
                        e.printStackTrace();
                        return document;
  }
        }
}
/********************************************************
Ciao !

 e' un po' rozzo ( ci sarebbe un po' di roba da migliorare ) ma funziona..
Grazie Coccorito
sei stato molto gentile e disponibile. Nei prossimi giorni ci lavoro sopra
quindi comunicherò il risultato.
Grazie ancora :-)
ciao
Stefano