添加打印工具类 2025年5月10日15:48:18
parent
fc07ddd4ab
commit
06453061cd
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue