Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaFX中打印窗格?_Java_Javafx_Javafx 8_Javafx 2 - Fatal编程技术网

如何在JavaFX中打印窗格?

如何在JavaFX中打印窗格?,java,javafx,javafx-8,javafx-2,Java,Javafx,Javafx 8,Javafx 2,如何打印包含标签的窗格?我想用我的POS打印机55mm打印它。我有这样的代码要打印,但它不会打印给我: void print2(Node node){ PrinterJob job = PrinterJob.createPrinterJob(); Printer printer = Printer.getDefaultPrinter().getDefaultPrinter(); PageLayout pageLayout = printer.createPageLayou

如何打印包含标签的窗格?我想用我的POS打印机55mm打印它。我有这样的代码要打印,但它不会打印给我:

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打印机的页面布局/纸张大小。也许纸A6会给你带来麻烦,因为它太大了。我不是在使用JavaFX和打印时体验到这一点,而是在Delphi中使用windowsgdi打印时体验到的。由于驱动程序层是相同的,因此可能存在类似的问题。 定义布局节点大小是一个很好的起点,要记住打印机点,即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();
  }
}
希望有帮助