如何在JavaFX中打印窗格?

时间:2019-02-20 15:04:02

标签: java javafx javafx-8 javafx-2

如何打印其中有Pane的{​​{1}}?我想使用55mm的POS打印机进行打印。我可以打印这种代码,但对我却什么也没打印:

Label

1 个答案:

答案 0 :(得分:1)

代码看起来不错。我建议您检查以下几点:

  • 我遇到了页边距问题。如果我需要对整个打印区域进行绝对控制,则将打印机页边距全部设置为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();
  }
}

希望有帮助!