Код не выглядит плохо.Есть несколько моментов, которые я бы порекомендовал проверить:
- У меня возникли проблемы с полями страницы.Если мне нужен абсолютный контроль над всей областью печати, я устанавливаю все поля принтера равными 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();
}
}
Надеюсь, чтопомогает!