Как распечатать панель в JavaFX? - PullRequest
0 голосов
/ 20 февраля 2019

Как мне распечатать мой Pane, в котором есть Label?Я хочу распечатать его, используя мой принтер POS 55 мм.У меня есть такой код для печати, но он мне ничего не печатает:

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

1 Ответ

0 голосов
/ 21 февраля 2019

Код не выглядит плохо.Есть несколько моментов, которые я бы порекомендовал проверить:

  • У меня возникли проблемы с полями страницы.Если мне нужен абсолютный контроль над всей областью печати, я устанавливаю все поля принтера равными 0 и определяю макет страницы точно в соответствии с форматом принтера.
  • Я бы попытался определить макет страницы / размер бумаги, который подходит для принтера POS 55 м.Возможно, Paper.A6 доставит вам неприятности, потому что он «слишком большой».Я испытал это не при работе с JavaFX и печатью, а с печатью Windows GDI в Delphi.Поскольку уровень драйвера один и тот же, это может быть аналогичная проблема.
  • Это была хорошая отправная точка для определения размера узла компоновки с учетом точек принтера, то есть 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();
  }
}

Надеюсь, чтопомогает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...