javafx.print.PrinterJob 设置打印纸张大小
时间: 2023-08-15 16:22:52 浏览: 174
要在JavaFX中设置打印纸张大小,可以使用`PageLayout`类和`PrinterJob`类。下面是一些基本的代码示例:
```java
PrinterJob job = PrinterJob.createPrinterJob();
if (job != null) {
boolean success = job.showPrintDialog(stage);
if (success) {
// 获取默认打印机
Printer printer = Printer.getDefaultPrinter();
// 创建一个页面布局,指定纸张大小、页面方向和边距
Paper paper = new Paper();
double width = ...; // 设置纸张宽度
double height = ...; // 设置纸张高度
double leftMargin = ...; // 设置左边距
double rightMargin = ...; // 设置右边距
double topMargin = ...; // 设置上边距
double bottomMargin = ...; // 设置下边距
paper.setSize(width, height);
paper.setImageableArea(leftMargin, topMargin, width - leftMargin - rightMargin, height - topMargin - bottomMargin);
PageLayout pageLayout = printer.createPageLayout(paper, PageOrientation.PORTRAIT, Printer.MarginType.DEFAULT);
// 获取要打印的节点
Node node = ...
// 设置打印作业属性
job.setPrinter(printer);
job.setJobName("My Document");
job.setPageLayout(pageLayout);
// 执行打印操作
boolean printed = job.printPage(node);
if (printed) {
job.endJob();
}
}
}
```
其中,`createPrinterJob()`方法用于创建一个打印作业。`showPrintDialog()`方法用于显示打印对话框,用户可以在该对话框中选择打印机和打印设置。`getDefaultPrinter()`方法用于获取默认打印机。`createPageLayout()`方法用于创建一个页面布局,可以指定纸张大小、页面方向和边距。`setSize()`方法用于设置纸张大小。`setImageableArea()`方法用于设置可打印区域的边距。`setPrinter()`方法用于设置打印机。`setJobName()`方法用于设置打印作业名称。`setPageLayout()`方法用于设置打印页面的布局。`printPage()`方法用于将要打印的节点添加到打印作业中,并执行打印操作。`endJob()`方法用于结束打印作业。
需要注意的是,要设置打印纸张大小,必须先创建一个页面布局,然后将页面布局传递给`setPageLayout()`方法。创建页面布局时,需要指定纸张大小、页面方向和边距。纸张大小应该与打印机支持的纸张大小相匹配,否则可能会导致打印失败。
阅读全文