Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [Java] Delucidazioni sulla stampa in Java

    Ciao ragazzuoli mi rivolgo a voi perchè non so proprio dove sbattere la testa
    Allora mi sono creato una classe che stampa un documento di acquisto preso dal mio db ... tutto funziona egragiamente, anke se mi sono dovuto creare delle funzioni per centrale il testo e via discorrendo ... la cosa che non capisco è come faccio e dirli che ho + di una pagina ...
    espongo il mio codice:
    ho un JButton che manda la stampa:
    stampaDocumento stampa = new stampaDocumento();
    stampa.passaDocumentiID(docID);
    stampa.stampaDocumento();
    e questa è la classe stampa:
    package stampe;

    import globali.jcFunzioni;
    import globali.jcPostgreSQL;
    import java.awt.print.*;
    import java.awt.*;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.JOptionPane;


    public class stampaDocumento implements Printable {

    public int docID = -1;
    private funzioniComuniStampe fun = new funzioniComuniStampe();
    private int pagVecchia = -1;


    public int print(Graphics grap, PageFormat pageFormat, int pageIndex) throws PrinterException {
    int metro = 0;
    ResultSet ordine = null;

    Graphics2D g2d = (Graphics2D) grap;
    g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());

    metro = (int) pageFormat.getImageableY();
    metro = fun.stampaLogo(g2d, pageFormat, metro);


    jcPostgreSQL.queryDB("SELECT l.listinoid, l.nome, o.qnt, o.p_vendita, o.iva, o.sconto, l.um FROM ordini_oggetti AS o " +
    " INNER JOIN listino AS l ON (o.listinoid=l.listinoid) " +
    " WHERE o.ordineid=" + docID +
    " ORDER BY l.listinoid");

    int latoMassimoY = (int)((pageFormat.getImageableHeight() - pageFormat.getImageableY() * 2) * 80 / 100);

    try {
    Double temp = 0.00;
    scorr = new Point(0,0);
    oggetti = new Point(0,0);

    while (jcPostgreSQL.query.next()) {



    metro += scorr.y;

    //se le righe sono di più voglio creare una nuova pagina
    if (metro>latoMassimoY)
    return PAGE_EXISTS;

    }
    } catch (SQLException ex) {
    Logger.getLogger(stampaDocumento.class.getName()). log(Level.SEVERE, null, ex);
    }

    return Printable.NO_SUCH_PAGE;
    }

    public void passaDocumentiID(int documentoID) {
    docID = documentoID;
    }

    public void stampaDocumento() {
    PrinterJob job = PrinterJob.getPrinterJob();
    job.setPrintable(this);
    job.setJobName("PapiniComputer - Stampa documento ID " + Integer.toString(docID));
    boolean ok = job.printDialog();
    if (ok) {
    try {
    job.print();
    } catch (PrinterException ex) {
    /* The job did not successfully complete */
    JOptionPane.showMessageDialog(null, ex);
    }
    }

    }
    }
    e mi stampa una pagina bianca ... eppure nel debug tutto funzica .... (la classe non l'ho postata tutta ...)
    io abituato con il vb li dicevo si c'è un'altra pagina, no non ci sono + pagine ... qua è lo stesso ??

    thanks for help
    Follow The White Rabbit !!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java] Delucidazioni sulla stampa in Java

    Originariamente inviato da papini.sascha
    la cosa che non capisco è come faccio e dirli che ho + di una pagina ...
    Tu hai un oggetto che è un Printable, assegnato al job con setPrintable().
    Non è il tuo codice che invoca il print() .... sarà qualcun'altro e quel qualcuno è il framework delle Printing API.

    Quando viene invocato il print() ti viene passato, come richiesta, un numero di pagina. Se tu sai che la pagina c'è e devi stamparci qualcosa, allora stampi e ritorni PAGE_EXISTS. Se non ci deve essere, ritorni NO_SUCH_PAGE e tutta la stampa termina lì.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.