我正在开发一个JavaFX项目,在该项目中,我必须打印几张图像,以便获取路径。现在的问题是,我想把图像作为一个BufferedImage,然后调用我所拥有的打印功能。我怎样才能做到这一点。你能帮忙的话,我会很高兴。Java:从类路径获取图像作为BufferedImage
代码:
public void printThis(String localPath){
// What should I do here?
System.out.println("Lets print this. ");
}
private void printImage(BufferedImage image) {
java.awt.print.PrinterJob printJob = java.awt.print.PrinterJob.getPrinterJob();
printJob.setPrintable(new Printable() {
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
// Get the upper left corner that it printable
int x = (int) Math.ceil(pageFormat.getImageableX());
int y = (int) Math.ceil(pageFormat.getImageableY());
if (pageIndex != 0) {
return NO_SUCH_PAGE;
}
graphics.drawImage(image, x, y, image.getWidth(), image.getHeight(), null);
return PAGE_EXISTS;
}
});
Platform.runLater(new Runnable() {
@Override
public void run() {
try {
printJob.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
});
}
编辑:
更新打印功能:
public void printImage(ImageView image) {
Printer printer = Printer.getDefaultPrinter();
PrinterJob printJob = PrinterJob.createPrinterJob(printer);
PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.PORTRAIT, Printer.MarginType.DEFAULT);
if (printJob != null) {
boolean success = printJob.printPage(image);
if (success) {
printJob.endJob();
}
}
}
的图像是在类路径中。请让我知道。谢谢。 :-)
你能否详细说明“图像在类路径中”以及在这种情况下'localPath'参数是什么?你的意思是你将图像与你为应用程序创建的jar文件捆绑在一起? –
@James_D:我的项目架构是src - > Main.java(这里是打印函数),src包含目录资源 - > img - > abc.png。现在我想打印这个abc.png –
因此,图像相对于类路径被部署为'/ img/abc.png'或'/ resources/img/abc.png'?那是('“/img/abc.png”或'“/resources/img/abc.png”')作为'localPath'传入的值吗? –