繁体   English   中英

如何在JavaFX中打印窗格?

[英]How to print Pane in JavaFX?

如何打印其中带有Label Pane 我想使用55mm的POS打印机进行打印。 我有要打印的这种代码,但对我却什么也没打印:

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();
    }
}

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

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

希望有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM