添加打印工具类 2025年5月10日15:48:18

master
zhangmeng 2025-05-10 15:48:23 +08:00
parent fc07ddd4ab
commit 06453061cd
1 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,72 @@
package com.zhangmeng.online.exam.ui.utils;
import com.zhangmeng.online.exam.ui.admin.PaperPage;
import com.zhangmeng.online.exam.ui.components.ExamComponent;
import javafx.collections.ObservableSet;
import javafx.print.*;
import javafx.scene.control.ComboBox;
import javafx.scene.transform.Scale;
import java.util.List;
public class PrintUtils {
public static void printPaper(ExamComponent examComponent){
printText(examComponent, Printer.getDefaultPrinter());
}
private void loadPrinters(ComboBox<Printer> comboBox) {
// 获取所有可用打印机
ObservableSet<Printer> printers = Printer.getAllPrinters();
if (printers.isEmpty()) {
System.out.println("未找到可用打印机");
return;
}
// 添加打印机到下拉框
comboBox.getItems().addAll(printers);
// 设置默认选择为系统默认打印机
Printer defaultPrinter = Printer.getDefaultPrinter();
if (defaultPrinter != null) {
comboBox.setValue(defaultPrinter);
}
}
private static void printText(ExamComponent examComponent, Printer selectedPrinter) {
if (selectedPrinter == null) {
System.out.println("未选择打印机");
return;
}
System.out.println("当前选择的打印机: " + selectedPrinter.getName());
// 创建打印作业
PrinterJob job = PrinterJob.createPrinterJob(selectedPrinter);
if (job.showPrintDialog(examComponent.getScene().getWindow())) {
// 获取打印设置
PageLayout pageLayout = selectedPrinter.createPageLayout(Paper.A4, PageOrientation.PORTRAIT, Printer.MarginType.DEFAULT);
// 计算缩放比例以适应页面
double scaleX = pageLayout.getPrintableWidth() / examComponent.getBoundsInParent().getWidth();
double scaleY = pageLayout.getPrintableHeight() / examComponent.getBoundsInParent().getHeight();
double scale = Math.min(scaleX, scaleY);
// 应用缩放
examComponent.getTransforms().add(new Scale(scale, scale));
// 执行打印
boolean printed = job.printPage(pageLayout, examComponent);
if (printed) {
job.endJob();
System.out.println("打印成功");
} else {
System.out.println("打印失败");
}
// 恢复缩放
examComponent.getTransforms().clear();
}
}
}