Con imprimir en Java me refiero a crear una serie de sentencias para poder utilizar nuestra impresora junto con el programa que estamos desarrollando para imprimir cualquier vista, en este caso un documento de texto sencillo.
Vamos paso a paso:
- Lo primero que debemos hacer es tomar el texto que ira en nuestra hoja a imprimir, en este caso utilizaremos un área de texto.
String VARIABLE_TEXTO = VARIABLE_AREA.getText();
El método ".getText()" ya lo hemos explicado, pero no esta demás recordar que es para tomar todos los caracteres que existen, en este ejemplo, dentro del área de texto.
- Luego utilizamos la variable del tipo "PrintJob", que significa trabajo de impresión, para ello la inicializamos de esta forma:
PrintJob Impresion = getToolkit().getPrintJob(this,"Imprimir Hoja",null);
".getToolkit()" es para obtener todas las herramientas dentro de la hoja de impresión, y ".getPrintJob" es para obtener los trabajos de impresión para saber si una hoja sera imprimida o no.
- Tomamos una variable del tipo gráficos para dibujar la hoja, partiendo de la variable del tipo "PrintJob", esto lo hacemos con el fin de tener la hoja lista para ser imprimida.
Graphics Pagina = Impresion.getGraphics();
- Luego configuramos las opciones que tendrá la impresión:
Pagina.setFont(new Font(LETRA,ESTILO,TAMAÑO)); Pagina.drawString("Imprimido:",100,100);
".drawString" es para que al estar imprimiendo coloque lo que esta entre paréntesis, sabiendo que los números que vemos allí son la posición donde ira ese String. La parte de ".setFont" ya también se a explicado en esta entrada.
- Creamos un arreglo para cada línea del documento y volvemos a setear la configuración de la página de la siguiente forma:
Pagina.drawString(TODO.substring(inicio,i-1),100,100 + (15 * numlineas));
- Luego cerramos el arreglo y volvemos a realizar la última comprobación o configuración de la página así:
Pagina.drawString (TODO.substring(inicio,TODO.length()),100,100 + (15 * numlineas));
- Por último comprobamos la disposición de la página y cerramos el trabajo de impresión.
Pagina.dispose (); Impresion.end();
De cualquier forma podemos estudiar mejor el código con el siguiente ejemplo que dejo aquí:
import java.io.*; import java.awt.*; import javax.swing.*; public class Prueba extends Frame { MenuBar barra = new MenuBar(); Menu archivo = new Menu("Archivo"); TextArea TEXTO = new TextArea(); public Prueba() { super("Created by CarlitoX"); //Inicialización de la ventana this.setSize(500, 500); add(TEXTO); TEXTO.setBackground(Color.white); //Fondo del area de texto //Inicializacion del menú setMenuBar(barra); barra.add(archivo); archivo.add(new MenuItem ("Imprimir")); archivo.addSeparator(); archivo.add(new MenuItem("Salir")); } public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_DESTROY) //Método para cerrar System.exit(0); //el Frame (ventana) if (evt.target instanceof MenuItem) //Método a utilizar { if("Imprimir".equals(evt.arg)) Imprimir(); return (true); } return super.handleEvent(evt); } void Imprimir () //Método para imprimir { try { String TODO=TEXTO.getText(); PrintJob Impresion = getToolkit().getPrintJob(this,"Imprimir Hoja",null); Graphics Pagina= Impresion.getGraphics(); Pagina.setFont(new Font(LETRA,ESTILO,TAMAÑO)); Pagina.drawString("Imprimido:",100,100); int inicio=0; int numlineas=1; for (int i=0; i<TODO.length();i++) { if((int) TODO.charAt(i)==10) { Pagina.drawString(TODO.substring(inicio,i-1),100,100 + (15 * numlineas)); inicio=i+1; numlineas ++; } } Pagina.drawString (TODO.substring(inicio,TODO.length()),100,100 + (15 * numlineas)); Pagina.dispose (); //Comprueba y finaliza la disposición de la página Impresion.end(); //Finaliza el trabajo } catch(Exception exp) {System.out.println(exp);} } public static void main (String [] args) { Prueba p = new Prueba(); p.show(); } }
En este ejemplo he utilizado un Frame para mostrar un TextArea y sacar el texto del mismo para poder imprimirlo.
En el ejemplo veremos mejor la parte del arreglo, sabiendo de donde salen las variables "inicio" y "numlineas" las cuales son parte esencial para la parte de la impresión.
Recibe notificaciones por correo