java 如何打印图片

使用 ImageIO 类打印图片
ImageIO 是 Java 标准库中用于图像处理的工具类,可以读取和写入图片。以下代码展示了如何加载图片并打印:

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.print.*;
import java.io.File;
import java.io.IOException;
public class ImagePrinter implements Printable {
private BufferedImage image;
public ImagePrinter(String imagePath) throws IOException {
this.image = ImageIO.read(new File(imagePath));
}
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) {
if (pageIndex > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D) graphics;
g2d.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);
return PAGE_EXISTS;
}
public static void printImage(String imagePath) throws PrinterException, IOException {
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(new ImagePrinter(imagePath));
if (job.printDialog()) {
job.print();
}
}
public static void main(String[] args) {
try {
printImage("path/to/your/image.jpg");
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用 JavaFX 打印图片
如果项目基于 JavaFX,可以利用 javafx.print 包实现图片打印功能:
import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
import javafx.print.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class JavaFXImagePrinter extends Application {
@Override
public void start(Stage stage) throws Exception {
Image image = new Image("file:path/to/your/image.jpg");
ImageView imageView = new ImageView(image);
PrinterJob job = PrinterJob.createPrinterJob();
if (job != null && job.showPrintDialog(stage)) {
boolean success = job.printPage(imageView);
if (success) {
job.endJob();
}
}
}
public static void main(String[] args) {
launch(args);
}
}
注意事项
- 图片路径:确保路径正确,支持常见格式(如 JPG、PNG)。
- 打印机配置:代码会调用系统默认打印机,用户可通过打印对话框选择其他打印机。
- 异常处理:捕获
IOException和PrinterException以处理文件读取或打印错误。
两种方法分别适用于 Swing/AWT 和 JavaFX 环境,根据项目技术栈选择合适的方式。






