JavaFx一个接一个地打印多个节点需要很长时间

时间:2018-10-24 20:44:56

标签: javafx

我正在使用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 :(得分:0)

您必须将所有页面合并为一个可分页文档。然后,不为每个选项卡调用printPage(),而是调用setPageable()和print()。