|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Apr 2010
Messaggi: 1
|
[Java] PrinterJob e dimensioni pagina
Salve a tutti. Premetto che mi son girato un bel pò di guide/codici e post qui sul forum prima di decidermi a postare,ma sto in crisi <.<.
Quello che devo fare è far stampare una semplice stringa di testo a java, su una determinata stampante, senza far apparire alcun prompt (niente printDialog per intenderci), ridimensionando però la pagina. Il mio codice è Codice:
import javax.print.*;
import java.awt.*;
import java.awt.print.*;
public class Provaprint {
static String testo = "ahahah";
static PageFormat pf = new PageFormat();
static Paper paper = new Paper();
static int larghezza = 228, altezza = 100;
static Font font = new Font("Dialog", Font.PLAIN, 15);
public static void main(String args[]) {
PrintService[] services = PrintServiceLookup.lookupPrintServices(null,null);
// just display all printer name
for (int i = 0; i < services.length; i++) {
System.out.println(services[i].getName()); // --> get printer name
}
PrinterJob job = PrinterJob.getPrinterJob();
try{ job.setPrintService(services[3]);
}catch(PrinterException e){}
pf=job.defaultPage();
paper.setSize(larghezza,altezza);
paper.setImageableArea(10, 10, larghezza-20, altezza-20);
pf.setPaper(paper);
robaDaStampare rbd= new robaDaStampare(testo,font);
rbd.setPageFormat(pf); //questo è dannatamente inutile e ridondante...e infatti non funziona
pf = job.validatePage(pf);
job.setPrintable(rbd,pf);
try {job.print();
} catch(PrinterException e){}
}
}
class robaDaStampare implements Printable{
private String testo;
private Font font;
PageFormat pageFormat;
public robaDaStampare(String tes,Font fon){
this.testo=tes;
this.font=fon;
}
public int print(Graphics g, PageFormat pageFormat, int page) throws
PrinterException {
if (page > 0) { /* We have only one page, and 'page' is zero-based */
return NO_SUCH_PAGE;
}
System.out.println("Y " + pageFormat.getImageableY());
System.out.println("height" + pageFormat.getImageableHeight());
g.setFont(font);
g.drawString(testo, 50, 50);
return PAGE_EXISTS;
}
public void setPageFormat(PageFormat pageFo) {
pageFormat = pageFo;
}
}
Ora, quello che mi manda piu in crisi è che se modifico il metodo print inserendo di nuovo la formattazione della pagina (non so perchè, l'ho fatto a tentativi), nonostante la prima pagina rimane un a4, se stampo piu di una pagina (mettendo if(page >2)) dalla seconda in poi escon tutte della dimensione corretta Praticamente dichiaro "larghezza" , "altezza" e "paper" anche nella class robaDaStampare, e poi modifico così il print: Codice:
public int print(Graphics g, PageFormat pageFormat, int page) throws
PrinterException {
pageFormat=job.defaultPage();
paper.setSize(larghezza,altezza);
paper.setImageableArea(10, 10, larghezza-20, altezza-20);
pageFormat.setPaper(paper);
if (page > 0) { /* We have only one page, and 'page' is zero-based */
return NO_SUCH_PAGE;
}
System.out.println("Y " + pageFormat.getImageableY());
System.out.println("height" + pageFormat.getImageableHeight());
g.setFont(font);
g.drawString(testo, 50, 50);
return PAGE_EXISTS;
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:56.



















