如何在使用RTL语言时打印javafx节点

如何在使用RTL语言时打印javafx节点,javafx,printing,orientation,direction,persian,Javafx,Printing,Orientation,Direction,Persian,我正在开发一个JavaFX应用程序,它支持。你们中的一些人可能知道,波斯语字母是从右到左书写的,就像希伯来语或阿拉伯语一样。使用它可以很容易地将波斯语内容按正确的顺序放在窗口中,但是当我尝试打印JavaFX节点时,问题出现了,打印的结果是相反的。我试图通过向您显示窗口上正确显示但打印媒体上错误显示的内容来解释问题 好的,我找到了一个解决办法,我试着解释一下: val pj = PrinterJob.createPrinterJob() val pl = pj.printer.createPag

我正在开发一个JavaFX应用程序,它支持。你们中的一些人可能知道,波斯语字母是从右到左书写的,就像希伯来语或阿拉伯语一样。使用它可以很容易地将波斯语内容按正确的顺序放在窗口中,但是当我尝试打印JavaFX节点时,问题出现了,打印的结果是相反的。我试图通过向您显示窗口上正确显示但打印媒体上错误显示的内容来解释问题


好的,我找到了一个解决办法,我试着解释一下:

val pj = PrinterJob.createPrinterJob()
val pl = pj.printer.createPageLayout(Paper.A4, PageOrientation.PORTRAIT, Printer.MarginType.HARDWARE_MINIMUM)
pj.jobSettings.pageLayout = pl
if(pj.showPrintDialog(stage)) {
    val rotate = Transform.rotate(90.0, documentRoot.width/2, documentRoot.height/2)
    val affine = Transform.affine(0.0, 1.0, 1.0, 0.0, 0.0, 0.0)
    documentRoot.transforms.add(rotate)
    documentRoot.transforms.add(affine)
    pj.printPage(documentRoot)
    pj.endJob()
    stage.hide()
  }
诀窍是,您可以在flay上旋转节点,并在节点上应用仿射函数,以使该节点在“反向”模式下绘制并提交到打印机,因此反向节点的反向形式是正确的