簡體   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