ok, ho fatto un pò di modifiche:
codice:
import java.awt.*;
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 PrintImage implements Printable {
private double x;
private double y;
private double width;
private int orientation;
private BufferedImage image;
public PrintImage(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 graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
if (pageIndex == 0) {
int pWidth = 0;
int pHeight = 0;
if (orientation == PageFormat.PORTRAIT) {
pWidth = (int) Math.min(width, (double) image.getWidth());
pHeight = pWidth * image.getHeight() / image.getWidth();
} else {
pHeight = (int) Math.min(width, (double) image.getHeight());
pWidth = pHeight * image.getWidth() / image.getHeight();
}
graphics.drawImage(image, (int) x, (int) y, pWidth, pHeight, null);
return PAGE_EXISTS;
} else {
return NO_SUCH_PAGE;
}
}
}
richiamato così:
codice:
String imgTest = "/home/matte/Desktop/C180-001.jpg";
Image image = new Image(new File(imgTest).toURI().toString());
BufferedImage bufferedImage = SwingFXUtils.fromFXImage(image, null);
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(new PrintImage(pj, bufferedImage));
if (pj.printDialog()) {
try {
pj.print();
} catch (PrinterException e) {
GenericDialog.showDialog(e.getMessage(), Alert.AlertType.ERROR);
}
}
l'immagine è stata stampata correttamente.
ora vorrei stampare le immagini prese da una ListView.
secondo voi come sarebbe meglio procedere??