El sistema controla totalmente el proceso de impresi�n, al igual que controla c�mo y cu�ndo pueden dibujar los programas, nuestras aplicaciones proporcionan informaci�n sobre el documento a imprimir, y el sistema de impresi�n determina cuando necesita renderizar cada p�gina.
Este modelo de impresi�n permite soportar una amplio rango de impresoras y de sistemas. Incluso permite al usuario imprimir en una impresora de bitmaps desde un ordenador que no tiene suficiente memoria o espacio en disco para contener el mapa de bits de una p�gina completa. En esta situaci�n el sistema de impresi�n le pedir� a nuesta aplicaci�n que renderize la p�gina de forma repetida para que pueda ser imprimida como una serie de peque�as im�genes.
Para soportar impresi�n, una apliaci�n necesita realizar dos tareas.
- Job control--manejar el trabajo de impresi�n
- Imaging--renderizar las p�ginas a imprimir
�Job Control
Aunque el sistema controla todo el proceso de impresi�n, nuestra aplicaci�n tiene que obtener la oportunidad de configurar un PrinterJob. El PrinterJob , el punto clave del control del proceso de impresi�n, almacena las propiedades del trabajo de impresi�n, controla la visi�n de los di�logos de impresi�n y se usa para inicializar la impresi�n.
Para dirigir el PrinterJob a trav�s del proceso de impresi�n, nuestra aplicaci�n necesita
- Obtener un PrinterJob llamando a PrinterJob.getPrinterJob
- Decirle al PrinterJob d�nde est� el c�digo de dibujo llamando a setPrintable o setPageable
- Si se desea, mostrar los di�logos de configuraci�n de p�gina e impresi�n llamando a pageDialog y printDialog
- Iniciar la impresi�n llamando a print
El dibujo de p�ginas est� controlado por el sistema de impresi�n a trav�s de llamadas al c�digo de im�genes de la aplicaci�n.
�Imaging
Nuestra aplicaci�n debe poder renderizar cualquier p�gina cuando el sistema de impresi�n lo pida. Este c�digo de renderizado est� contenido en el m�todo print de un page painter--una clase que implementa el interface Printable. Nosotros implementamos print para renderizar el contenido de la p�gina usando un Graphics o un Graphics2D. Podemos usar un �nico 'page painter' para renderizar todas las p�ginas de un 'print job' o diferentes 'page painters' para los diferentes tipos de p�ginas. Cuando el sistema de impresi�n necesita renderizar una p�gina, llama al m�todo print del 'page painter' apropiado.
Cuando se usa un �nico 'page painter', al 'print job' se le llama un printable job. Usar un 'printable job' es la forma m�s sencilla de soportar impresi�n. Las operaciones de impresi�n m�s complejas que usan m�ltiples 'page painters' son conocidas como pageable jobs. En un 'pageable job' se usa un ejemplar de una clase que implemente el interface Pageable para manejar los 'page painters'.
�Printable Jobs
En un 'printable job' todas las p�ginas usan el mismo 'page painter' y PageFormat, que define el tama�o y orientaci�n de la p�gina a imprimir. Se le pide al 'page painter' que renderice cada p�gina en orden indexado, empezando en la p�gina con �ndice 0. Al'page painter' se le podr�a pedir que renderizar� una p�gina varias veces antes de pedir la siguiente p�gina. Por ejemplo, si un usuario quiere imprimir las p�ginas 2 y 3 de un documento, se le pide al 'page painter' que renderice las p�ginas con �ndices 0,1 y 2 incluso aunque las dos primeras no sean impresas.
Si se presenta un di�logo de impresi�n, no se mostrar� el n�mero de p�ginas, porque esa informaci�n no est� disponible para el sistema de impresi�n, El 'page painter' informa al sistema de impresi�n cuando se alcanza el final del documento.
�Pageable Jobs
Los 'pageable jobs' son �tiles si nuestra aplicaci�n construye una representaci�n expl�cita de un documento, p�gina por p�gina. En un 'pageable job' diferentes p�ginas pueden usar diferentes 'page paintes' y PageFormats. El sistema de impresi�n puede pedir a los 'page painters' que rendericen las p�ginas en cualquier orden, incluso puede saltarse algunas. Por ejemplo si un usuario quiere imprimir las p�ginas 2 y 3 de un documento, s�lo se le pedir� al 'page painter' que renderice las p�ginas con los �ndices 1 y 2.
Los distintos 'page painteres' de un 'pageable job' est�n coordinados por una clase que implementa el interface Pageable, como un Book. Un Book representa una colecci�n de p�ginas que pueden usar diferentes 'page painter' y que pueden variar en tama�o y orientaci�n, Tambi�n podemos usar nuestra propia implementaciu�n del interface Pageable si Book no cumple con las necesidades de nuestra aplicaci�n.