JavaFx Печать нескольких узлов один за другим занимает много времени - PullRequest
0 голосов
/ 24 октября 2018

Я использую библиотеку javafx.print, и у меня проблемы.

Позвольте мне объяснить.У меня есть TabPane с одной слишком много вкладок.Я успешно печатаю каждую вкладку на отдельном листе бумаги, используя fxPrinterJob.printPage(node);

Моя проблема заключается в том, что, поскольку каждая страница имеет свой собственный fxPrinterJob, она напечатает страницу 1, а затем делает паузу, показагружает страницу 2, печатает страницу 2, делает паузу при загрузке страницы 3 и т. д. Для печати 3 страниц может потребоваться до 30 секунд.

Я пытался заставить одну и ту же fxPrinterJob печатать каждую страницу,но я получаю длинный список ошибок, который выглядит как блокировка ресурсов, и я чувствую, что не стоит публиковать здесь.

Я не делаю ничего странного или "умного" в настройке PrinterJob, поэтомуЯ не буду публиковать какой-либо реальный код, а просто дам псевдокод, поскольку я чувствую, что моя проблема заключается в логике или, возможно, просто в некоторых знаниях, которых у меня еще нет.

Scenario A -> Not working
1) Setup the `PrinterJob fxPrinterJob` variable.
2) Grab the Tab pane and loop through each tab
    a) Grab the content of each tab and do some maths so it fits to one page
    b) Call `fxPrinterJob.printPage(tabNode);` to print the tab.
3) When loop is finished, call `fxPrinterJob.endJob();`

Scenario B -> Works, but prints slowly.
1) Grab the Tab pane and loop through each tab
    a) Setup the `PrinterJob fxPrinterJob` variable.
    b) Grab the content of each tab and do some maths so it fits to one page
    c) Call `fxPrinterJob.printPage(tabNode);` to print the tab.
    d) When loop is finished, call `fxPrinterJob.endJob();`

Идея состоит в том, чтобы напечатать еготак же быстро, как и из обычного текстового документа, но он останавливается между страницами.Понятия не имею почему.Я не могу найти ни одного примера, когда кто-нибудь печатает несколько узлов на нескольких страницах, чтобы убедиться, что я что-то не пропускаю.

Спасибо.

1 Ответ

0 голосов
/ 25 октября 2018

Вы должны объединить все страницы в один Pageable документ.Затем вместо вызова printPage () для каждой вкладки вызовите setPageable () и print ().

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