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