Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Report in java. Come?

  1. #1
    dvx80
    Guest

    Report in java. Come?

    Ecco un altro bel problemino.....

    Bevo creare un report. Ho cercato un pò in giro ma quei pochi programmi free che ho trovato non funzionano, ovviamente ....

    Cmq accetto suggerimeti. Di qualunque genere ma devo risolvere sta cosa al più presto.

    Grazie per le eventuali risposte....

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    spiega meglio cosa intendi per report e come deve essere

  3. #3
    dvx80
    Guest
    Report di stampa normali.
    Una ventina di campi un paio di immagini e probabilmente un barcode.

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    codice:
        import java.awt.*;
        import java.awt.print.*;
        
        public class BasicPrint extends JComponent implements Printable {
            public int print(Graphics g, PageFormat pf, int pageIndex) {
                if (pageIndex > 0) {
                    return Printable.NO_SUCH_PAGE;
                }
                Graphics2D g2d = (Graphics2D)g;
                g2d.translate(pf.getImageableX(), pf.getImageableY());
                drawGraphics(g2d, pf);
                return Printable.PAGE_EXISTS;
            }
        }
    codice essenziale per la stampa in java
    rimane da disegnare i campi che vuoi e chiamare la classe

  5. #5
    dvx80
    Guest
    Spetta un attimo va....

    Allora già tempo fa ho perso la vità cercando di stampare tramite una procedura simile a questa, cmq se il mio guru mi assicura che cosi funziona ci proverò di nuovo....

    codice:
        import java.awt.*;
        import java.awt.print.*;
        
        public class BasicPrint extends JComponent implements Printable {
            public int print(Graphics g, PageFormat pf, int pageIndex) {
                if (pageIndex > 0) {
                    return Printable.NO_SUCH_PAGE;
                }
                Graphics2D g2d = (Graphics2D)g;
                g2d.translate(pf.getImageableX(), pf.getImageableY());
                g2d.drawString("CIAO",100,100);  
                drawGraphics(g2d, pf);
                return Printable.PAGE_EXISTS;
            }
        }
    Allora cosi dovrebbe stamparmi una stringa in posizione 100,100 rispetto ai margini della PageFormat. Bene....

    Mah di che libreria fa parte il metodo drawGraphics ???

    Se poi ci aggiungo anche una o più immagini funziona???? Quando avevo provato io se stampavo solo stringhe funzionava bene, ma quando ci agggiungevo le immagini, queste non venivano stampate.... Boh....

    Detto questo come imposto la classe che richiama BasicPrint se i dati che devo stampare sono su una tabella???? Chiamo direttamente o devo prima costruire un book???

  6. #6
    dvx80
    Guest
    Doppio invio.... Scusate....

  7. #7
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    giusto, ho preso un esempio a caso
    codice:
    public int print (Graphics graphics, PageFormat pageFormat, int pageIndex) {
      Graphics2D g2d = (Graphics2D) graphics;
      Rectangle2D.Double rectangle = new Rectangle2D.Double ();
      rectangle.setRect (pageFormat.getImageableX () + 72, pageFormat.getImageableY () + 72, 72, 72);
      g2d.draw (rectangle);
      g2d.drawString("CIAO",100,100);
      return (PAGE_EXISTS);
    }
    questo nella classe che crea la stampa
    codice:
    PrinterJob pjob = PrinterJob.getPrinterJob();
    PageFormat pf = pjob.defaultPage();
    pjob.setPrintable(new BasicPrint(), pf);
    try {
      pjob.print();
    } catch (PrinterException e) {}

  8. #8
    dvx80
    Guest
    Allora per applicarla ai dati di un resultset devo fare cosi:

    codice:
    class Stampa{
        
        ResultSet r;
        Stampa(){
           statement.execute("SELECT * FROM Buste_Temp WHERE numdoc="+numdoc+" AND riga="+riga+" AND dta=#"+dta+"# ORDER BY numdoc,riga,nomart DESC");
           r=statement.getResultSet();
           while(r.next()){
              PrinterJob pjob = PrinterJob.getPrinterJob();
              PageFormat pf = pjob.defaultPage();
              pjob.setPrintable(new BasicPrint(), pf);
              try{
                pjob.print();
             } catch (PrinterException e) {}
           }
        }//[M] STAMPA
        
        public int print (Graphics graphics, PageFormat pageFormat, int pageIndex) {
             Graphics2D g2d = (Graphics2D) graphics;
             Rectangle2D.Double rectangle = new Rectangle2D.Double ();
             rectangle.setRect (pageFormat.getImageableX () + 72,pageFormat.getImageableY () + 72, 72, 72);
             g2d.draw (rectangle);
             g2d.drawString(r.getString("nomart").trim().toUpperCase(),100,100);
             return (PAGE_EXISTS);
        }//[M] PRINT
    
    }//[C] STAMPA

  9. #9
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    io farei meglio così
    codice:
      statement.execute("SELECT * FROM Buste_Temp WHERE numdoc=" + numdoc + " AND riga=" + riga + " AND dta=#" + dta + "# ORDER BY numdoc, riga, nomart DESC");
      r=statement.getResultSet();
      ArrayList campo = new ArrayList();
      while(r.next()) {
        campo.add(r.getString(1));
      }
      PrinterJob pjob = PrinterJob.getPrinterJob();
      PageFormat pf = pjob.defaultPage();
      BasicPrint BP = new BasicPrint();
      BP.setField(campo.toArray());
      pjob.setPrintable(BP, pf);
      try{
        pjob.print();
      } catch (PrinterException e) {}
    il metodo setField imposta un array da stampare in print

  10. #10
    Originariamente inviato da floyd
    codice:
        import java.awt.*;
        import java.awt.print.*;
        
        public class BasicPrint extends JComponent implements Printable {
            public int print(Graphics g, PageFormat pf, int pageIndex) {
                if (pageIndex > 0) {
                    return Printable.NO_SUCH_PAGE;
                }
                Graphics2D g2d = (Graphics2D)g;
                g2d.translate(pf.getImageableX(), pf.getImageableY());
                drawGraphics(g2d, pf);
                return Printable.PAGE_EXISTS;
            }
        }
    codice essenziale per la stampa in java
    rimane da disegnare i campi che vuoi e chiamare la classe
    Scusate, io ho provato questo codice ma proprio non mi funziona.
    Inoltre non ho capito se quel drawGraphics lo devo implementare io o no.

    Poi c'è un'altra cosa che non capisco, questo if:
    codice:
    if (pageIndex > 0) {
         return Printable.NO_SUCH_PAGE;
    }
    Che vuol dire?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.