gpt4 book ai didi

java - 如何在JavaFX中打印Pane?

转载 作者:行者123 更新时间:2023-12-02 10:14:11 25 4
gpt4 key购买 nike

如何打印内部有 LabelPane?我想使用我的 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();
}
}

希望有帮助!

关于java - 如何在JavaFX中打印Pane?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54789373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com