猿问

如何在 JavaFX 中打印窗格?

我怎样才能打印我Pane的Label里面有它?我想用我的 POS 打印机 55 毫米打印它。我有这种代码要打印,但它什么也没给我打印出来:


void print2(Node node){

    PrinterJob job = PrinterJob.createPrinterJob();

    Printer printer = Printer.getDefaultPrinter().getDefaultPrinter();

    PageLayout pageLayout = printer.createPageLayout(Paper.A6, PageOrientation.PORTRAIT, Printer.MarginType.DEFAULT);

    JobSettings jobSettings = job.getJobSettings();

    jobSettings.setPageLayout(pageLayout);

    boolean printed = job.printPage(node);

    if (printed) {

        job.endJob();

    }

}


蓝山帝景
浏览 150回答 1
1回答

ABOUTYOU

代码看起来不错。我建议检查以下几点:我遇到了页边距问题。如果我需要对整个打印区域进行绝对控制,我将打印机边距全部设置为 0,并将页面布局完全定义为打印机格式。我会尝试定义适合 POS 55m 打印机的页面布局/纸张尺寸。也许 Paper.A6 给您带来麻烦,因为它“超大”。我不是在使用 JavaFX 和打印时遇到这种情况,而是在 Delphi 中使用 Windows GDI 打印。由于驱动层是相同的,所以可能是类似的问题。这是一个很好的起点来定义布局节点大小,同时牢记打印机点,即 72ppi。只需将像素大小视为打印机点大小。事实上,我对像这样更简单的代码有很好的体验(抱歉,这是 DIN A5 纸张大小的示例,但有效):PrinterJob printerJob = PrinterJob.createPrinterJob();if (printerJob != null) {  PageLayout pageLayout = printerJob.getPrinter().createPageLayout(Paper.A5, PageOrientation.LANDSCAPE, 0, 0, 0, 0);  boolean success = printerJob.printPage(pageLayout, root);  if (success) {    printerJob.endJob();  }}
随时随地看视频慕课网APP

相关分类

Java
我要回答