Imprimiendo en Java

    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.

4 Comentarios

Escribir Comentario
Anónimo
AUTOR
30 de junio de 2009, 15:15 delete

no puedo ver el ejemplo, me dice que esta errada la direccion si pudieras mandarmelo te lo agradeceria yaque e encontrado mucho mas facil para mi trabajo de fin de semestre la forma de imprimir como la muestras, a como la e visto en otros manueles y paginas
mi correo es lord_vulcano@hotmail.com
de antemano muchas gracias

Responder
avatar
30 de junio de 2009, 20:39 delete

No entiendo que error da al acceder porque yo veo la pagina normal, de cualquier forma te voy a dar un consejo, si haces como hace todo el mundo de copiar y pegar no ganas nada, ya que puede que te saque de un apuro pero llegara un momento en el que no podras salir de el, y mas si se trata de un trabajo de fin de semestre... como dice un proverbio chino "un sabio puede sentarse en un hormiguero, pero solo el necio se queda sentado en el".

Que digo con esto, si te doy la explicacion mas arriba no veo la necesidad de copiar y pegar el ejemplo.

Responder
avatar
Gerardo
AUTOR
12 de noviembre de 2015, 16:35 delete

Muy buen ejemplo, funciona perfecto, estoy empezando en esto de Java y es fascinante.
se puede hacer el mismo ejemplo pero en vez de recibir el texto de la ventana, que sea una variable?
espero me puedas guiar.
gracias.

Responder
avatar
2 de marzo de 2016, 13:13 delete

No entiendo muy bien pero supongo es esto... La variable TODO es un String, simplemente cambiar eso y pasa lo que quieres imprimir por parámetro...

void Imprimir (String TODO) //<-- Agregar el argumento
String TODO=TEXTO.getText() //<-- Comentar/Eliminar esta linea

Responder
avatar

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión EmoticonEmoticon