Foro sobre Java SE > Imprimir una imagen 'BufferedImage'.
Buenas,
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintable(new ImagePrintable(printJob, bufferedImage));
if (printJob.printDialog()) {
try {
printJob.print();
} catch (PrinterException prt) {
prt.printStackTrace();
}
}
Un saludo
Gracias. ¿Me podrías decir que debería contener la clase "ImagePrintable"?
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;
}
}
}
}
Gracias :)
Daselas tambien Google. Pones "Print buffered image java" y en el primer resultado sale ese codigo.
Un saludo
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