如何在JavaFX中打印窗格?
如何打印包含标签的窗格?我想用我的POS打印机55mm打印它。我有这样的代码要打印,但它不会打印给我:如何在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
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();
}
}
希望有帮助