Originariamente inviato da dyuhs
Come hai notato su ogni pagina passa due volte: la prima per vedere se la pagina esiste, la seconda per stamparla.
No assolutamente.

Esempio in cui verranno stampate 2 pagine:

- Il print() viene invocato con pageIndex=1
Il Printable "sa" che c'è qualcosa da stampare sulla pagina 1, quindi stampa sul Graphics e ritorna PAGE_EXISTS.

- Il print() viene invocato con pageIndex=2
Il Printable "sa" che c'è qualcosa da stampare sulla pagina 2, quindi stampa sul Graphics e ritorna PAGE_EXISTS.

- Il print() viene invocato con pageIndex=3
Il Printable "sa" che non c'è più alcuna pagina da stampare, quindi non stampa nulla e ritorna subito NO_SUCH_PAGE. La stampa e la invocazione di print() terminano qui.

Questo è il concetto di funzionamento.