Stampare su carta con Java
DOMANDA:
Come posso effettuare la stampa in Java?
RISPOSTA:
Java mette a disposizione delle librerie che fanno a caso nostro e, come vedete dall'esempio di seguito, è molto semplice interfacciarsi con la nostra stampante:
La classe Stampa:
package stampa;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class Stampa implements Printable {
public Stampa() throws PrinterException{
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName("TestStampa");
// apriamo la finestra di dialogo della stampante
pj.printDialog();
pj.setPrintable(this);
pj.print();
}
public int print(Graphics g, PageFormat pf, int page)
throws PrinterException {
// abbiamo solo una pagina
// (l'indicizzate da 0)
if (page > 0) {
return NO_SUCH_PAGE;
}
// Posizioniamo correttamente le coordinate
// da dove cominciare a disegnare
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
// Rendering
g2d.drawString("Stampato con Java dal blog di Lancill! " +
"Vieni a trovarmi su http://lancill.blogspot.it",
50, 250);
// comunica che questa pagina è
// parte del documento stampato
return PAGE_EXISTS;
}
}
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class Stampa implements Printable {
public Stampa() throws PrinterException{
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName("TestStampa");
// apriamo la finestra di dialogo della stampante
pj.printDialog();
pj.setPrintable(this);
pj.print();
}
public int print(Graphics g, PageFormat pf, int page)
throws PrinterException {
// abbiamo solo una pagina
// (l'indicizzate da 0)
if (page > 0) {
return NO_SUCH_PAGE;
}
// Posizioniamo correttamente le coordinate
// da dove cominciare a disegnare
Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
// Rendering
g2d.drawString("Stampato con Java dal blog di Lancill! " +
"Vieni a trovarmi su http://lancill.blogspot.it",
50, 250);
// comunica che questa pagina è
// parte del documento stampato
return PAGE_EXISTS;
}
}
La classe di Test:
package stampa;
import java.awt.print.PrinterException;
public class TestStampa{
public static void main(String[] args) throws PrinterException {
Stampa st = new Stampa();
}
}
import java.awt.print.PrinterException;
public class TestStampa{
public static void main(String[] args) throws PrinterException {
Stampa st = new Stampa();
}
}
Ottimo esempio. Seguite questo per risolvere i vostri problemi di stampa. Bravissimo
RispondiEliminaCiao avrei un problema con la stampa, in pratica devo stampare il contenuto di un panel e lo passo alla classe di stampa come oggetto, il problema è che se stampo in pdf funziona bene, mentre se stampo sulla stampante mi stampa solo il primo label presente nel panel e il resto pagina bianca. Sapresti aiutarmi?
RispondiEliminaCiao, se puoi invia il pezzo di codice incriminato così possiamo aiutarti meglio! Intanto grazie per la visita :o)
Elimina