De sun's documentation¿Por qué el método de impresión de Java imprimible se llama varias veces con el mismo número de página?
"El sistema de impresión puede solicitar que una página se represente varias veces antes de pasar a la página siguiente."
Los ejemplos muestran siempre algo como esto:
Printable print(Graphics g, PageFormat pageFormat, int page) {
if (page == 0)
do...
else if(page == blah...)
}
Si sigue este patrón de su código normalmente funciona bien porque es explícita basada en el número de página. No seguir este patrón me causó gran dolor hasta que me di cuenta de que lo llamaban varias veces con el mismo número de página y comencé a almacenar en caché las páginas.
¿Por qué el método de impresión de Java imprimible se llama varias veces con el mismo número de página?
Debo notar que realmente no recuerdo haber visto este comportamiento cuando estaba trabajando en un sistema de informes basado en Java hace algunos años. Puede haber sido porque estábamos en Linux en ese momento. – ZoogieZork
Los sistemas de impresión en Linux generalmente convierten todo el documento en PostScript (si no es lo que ya es) como un lenguaje intermedio incluso cuando se trabaja con impresoras basadas en banda, por lo que el sistema de impresión realiza el almacenamiento en memoria intermedia para usted. –
Ah, sospeché como tal. Es bueno saberlo, gracias! – ZoogieZork