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

    [Java] Stampa più pagine

    Salve raga

    Per stampare una pagina ho fatto override del metodo print() nella funzione CollaudoPrint in questo modo:

    codice:
    public int print(Graphics grap, PageFormat pageFormat, int pageIndex) throws PrinterException {
    		 if(pageIndex > 0) return NO_SUCH_PAGE;
    		 Font f;
    		 Paper paper = new Paper();
    		 paper.setImageableArea(42, 22, 500, 800);
    		 pageFormat.setPaper(paper);
    		 
    		 int x = (int)pageFormat.getImageableX();
    		 int y = (int)pageFormat.getImageableY();
    		 int w = (int)pageFormat.getImageableWidth();
    		 int h = (int)pageFormat.getImageableHeight();
    		 int sd=x;
    		 int sb=y;
    		 //rettangolo totale
    		 grap.drawRect(x,y,w,h);
    		 //prima righa
    		 grap.drawRect(x,y,w,30);
    		 sb=sb+30;
                     f = new Font("Dialog", Font.PLAIN, 20);
    		 grap.setFont(f);
                     String stringa="Ecco fatto !";
    		 grap.drawString(stringa,x+132,y+23);
     
                      return PAGE_EXISTS;
    nella funzione chiamante metto:

    codice:
    PrinterJob pj = PrinterJob.getPrinterJob();
    public FrameCertificatoCollaudo() {
    pj.printDialog();
    pj.setPrintable(new CollaudoPrint()));
    					try {
    						pj.print();
    					} catch (PrinterException e) {e.printStackTrace();}
    					
    
    }

    Ora tutto funziona perfettamente.

    Il mio problema è che devo prendere dei dati dal database e inserirli in questo foglio, ma se i dati sono numerosi esso deve stamparlo in più pagine. come faccio?
    so che il metodo print() ritorna una sola pagina esistente.

    grazie per i suggerimenti

  2. #2
    ciao
    posso creare una collezzione di più oggetti Paper e stamparli tutti insieme ?

    ciao e grazie

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Io per la stampa di più pagine avevo usato la classe Book.
    al volante son nervoso

  4. #4
    io sto cercando di dividere l'altezza della Paper per le dimensioni di Height, in modo da suddividere i fogli in questo modo:

    codice:
                     Font f;
    		 Paper paper = new Paper();
    		 paper.setImageableArea(42, 22, 500, 1600);
    		 pageFormat.setPaper(paper);
    		 
    		 int x = (int)pageFormat.getImageableX();
    		 int y = (int)pageFormat.getImageableY();
    		 int w = (int)pageFormat.getImageableWidth();
    		 int h = (int)pageFormat.getImageableHeight();
    			 
    		 int totalNumPages = (int) Math.ceil(pageFormat.getImageableHeight()/800);
                     //800 perche voglio che le dimensioni del foglio sono cosi
    
                     if(pageIndex >= totalNumPages) {
    			 return NO_SUCH_PAGE;}
    		 else{
                             return PAGE_EXISTS;}
    mi stamapa 2 pagine perche 1600/800 = 2 , ma mi stampa due volte la prima pagina e non riesco a capire il motivo.

    come funziona Book ?

    ciao grazie

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Lo usavo perché avevo più JPanel (che erano le mie pagine da stampare).
    Lo istanzi e poi aggiungi dei JPanel che vengono trattati come pagine del libro.
    Poi quando stampa, va a vedere il metodo print dell'oggetto e lo stampa di conseguenza.
    al volante son nervoso

  6. #6
    al posto del JPanel posso usare delle Paper ?

  7. #7
    per me il problema è che print viene chiamato più volte a seconda del numero di pageIndex, ora se io nel metodo print inplemento il codice da stampare e ovvio che viene stampato sempre lo stesso foglio.
    dovrei fare il modo di dire passa al foglio successivo!

    o sbaglio?

  8. #8
    ho letto un pò in giro , bisogna usare book, ma non so come usarlo se il numero di pagine e dinamico e puoò variare in base al database. ciao

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.