fgvrgfvgfrgvgtfg
Páginas: 6 (1285 palabras)
Publicado: 16 de marzo de 2014
Impresión desde Java mediante ejemplos
Más información en:
PrinterJob (http://www.javacommerce.com/articles/printing.html)
Printing in JDK 1.4 Part 1 (http://www-106.ibm.com/developerworks/library/j-mer0322/)
Printing in JDK 1.4 Part 2 (http://www-106.ibm.com/developerworks/library/j-mer0424.html)
PrintService(http://java.sun.com/j2se/1.4/docs/api/javax/print/PrintService.html)
Objeto PrinterJob
Para usar el objeto PrinterJob deberemos tener un objeto Printable que será el que contendrá lo
que queremos imprimir. Este objeto debe contener la función print donde indicaremos la
información que nos interesa imprimir. Esta información será dibujada sobre un objeto Graphics
(que luego pasaremos a Graphics2D) o Graphics2D (la impresión en Java, al menos versonesanteriores es un trabajo gráfico, de ahí su lentitud). Después crearemos el objeto PrinterJob,
mediante setPrintable(objeto_a_imprimir) haremos que se dibuje la página a mandar
a la impresora. Llamaremos o no, a la ventana de configuración de impresión, y por último
imprimiremos.
Impresión mediante un objeto PrinterJob(JDK1.2+) para imprimir gráficos.
//Impresión en Java2 mediantePrinterJob
import java.awt.*;
import java.awt.print.*;
import java.awt.geom.*;
//La clase debe de implementar la impresión implements Printable
class ObjetoAImprimir implements Printable
{
public int print (Graphics g, PageFormat f, int pageIndex)
{
//Creamos un objeto 2D para dibujar en el
Graphics2D g2 = (Graphics2D) g;
//Este código imprime 2 páginas una con un cuadrado o marco
//y unasegunda con un circulo en la esquina superior izquierda
//Creamos el rectángulo
//getImagebleX() coge la parte de la hoja donde podemos
//imprimir quitando los bordes. Si no hiciesemos
//esto así y tuviesemos bordes definidos en la impresión
//lo que dibujasemos fuera de los bordes no lo
//imprimiría aunque cupiese en la hoja físicamente.
Rectangle2D rect = newRectangle2D.Double(f.getImageableX(),
f.getImageableY(),
f.getImageableWidth(),
f.getImageableHeight());
//Creamos la circunferencia
Ellipse2D circle = new Ellipse2D.Double(100,100,100,100);
//pageIndex indica el número de la página que se imprime
//cuando es 0 primera página a imprimir, es un rectángulo
//cuando es 1 segunda página a imprimir, es una circunferencia
//En otro caso se devulve que no hay más páginas aimprimir
switch (pageIndex)
{
case 0 : //Página 1: Dibujamos sobre g y luego lo pasamos a g2
g.setColor(Color.black);
g.fillRect(110,120,30,5);
g.setColor(Color.pink);
g.drawLine(0,0,200,200);
g2 = (Graphics2D) g;
return PAGE_EXISTS; //La página 1 existe y se imprimirá
1
http://www.javahispano.com
case 1 : //Página 2: Circunferencia y rectángulo
g2.setColor(Color.red);g2.draw(circle);
g2.draw(rect);
return PAGE_EXISTS; //La página 2 existe y se imprimirá
default: return NO_SUCH_PAGE;
//No se imprimirán más páginas
}
}
}
//clase pública que se ejecuta donde debe de estar el main que llama a la
//otra clase.
public class Imprime
{
public static void main (String[] args)
{
// Creamos un objeto de impresión.
PrinterJob job = PrinterJob.getPrinterJob();
// Hacemosimprimible el objeto ObjetoAImprimir
job.setPrintable(new ObjetoAImprimir());
//Pondrá algo tipo Información job: sun.awt.windows.WPrinterJob@4a5ab2
System.out.println("Información job: " + job.toString());
//Abre el cuadro de diálogo de la impresora, si queremos que imprima
//directamente sin cuadro de diálogo quitamos el if...
if (job.printDialog())
{
//Imprime, llama a la función printdel objeto a imprimir
//en nuestro caso el Objeto ObjetoAImprimir
try { job.print(); }
catch (PrinterException e) { System.out.println("Error de impresión: " + e); }
}
}
}
Objeto FileOutputStream
Este objeto es usado habitualmente para crear ficheros. Como el Stream lo podemos redireccionar,
en este caso lo enviamos a la impresora, ya sea indicando la ubicación en red, como el puerto...
Leer documento completo
Regístrate para leer el documento completo.