Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Imprimir una imagen 'BufferedImage'.

Buenas tardes.
Necesito imprimir una imagen que tengo de tipo BufferedImage, si alguien sabe como hacerlo, agradecería que me diga como ya que he intentado varias formas y no he podido.
Gracias

febrero 17, 2014 | Registered Commenterjpd7

Buenas,


PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(new ImagePrintable(printJob, bufferedImage));

if (printJob.printDialog()) {
try {
printJob.print();
} catch (PrinterException prt) {
prt.printStackTrace();
}
}

Un saludo

febrero 17, 2014 | Unregistered CommenterUnoPorAhi

Gracias. ¿Me podrías decir que debería contener la clase "ImagePrintable"?

febrero 17, 2014 | Unregistered Commenterjpd7

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class PrintActionListener implements Runnable {

private final BufferedImage image;

public PrintActionListener(BufferedImage image) {
this.image = image;
}

@Override
public void run() {
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(new ImagePrintable(printJob, image));
if (printJob.printDialog()) {
try {
printJob.print();
} catch (PrinterException prt) {
}
}
}

private class ImagePrintable implements Printable {

private final double x, y, width;
private final int orientation;
private final BufferedImage image;

ImagePrintable(PrinterJob printJob, BufferedImage image) {
PageFormat pageFormat = printJob.defaultPage();
this.x = pageFormat.getImageableX();
this.y = pageFormat.getImageableY();
this.width = pageFormat.getImageableWidth();
this.orientation = pageFormat.getOrientation();
this.image = image;
}

@Override
public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex == 0) {
int pWidth;
int pHeight;
if (orientation == PageFormat.PORTRAIT) {
pWidth = (int) Math.min(width, image.getWidth());
pHeight = pWidth * image.getHeight() / image.getWidth();
} else {
pHeight = (int) Math.min(width, image.getHeight());
pWidth = pHeight * image.getWidth() / image.getHeight();
}
g.drawImage(image, (int) x, (int) y, pWidth, pHeight, null);
return PAGE_EXISTS;
} else {
return NO_SUCH_PAGE;
}
}
}
}

febrero 17, 2014 | Registered Commenterchoces

Gracias :)

febrero 17, 2014 | Unregistered Commenterjpd7

Daselas tambien Google. Pones "Print buffered image java" y en el primer resultado sale ese codigo.


Un saludo

febrero 17, 2014 | Unregistered CommenterUnoPorAhi