|
|
|
![]() |
|
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: 15:01.