2016-05-08 33 views
1

Ich entwickle eine JavaFX-App, die Persian language unterstützt. Wie einige von Ihnen vielleicht wissen, werden Briefe in persischer Sprache von rechts nach links wie Hebräisch oder Arabisch geschrieben. Mit NodeOrientation ist es ziemlich einfach, persischen Inhalt in der richtigen Reihenfolge auf dem Fenster zu setzen, aber das Problem entsteht, wenn ich versuche, einen JavaFX-Knoten zu drucken, das Ergebnis gedrucktes Papier ist umgekehrt. Ich versuche, das Problem zu erklären, indem ich Ihnen den Inhalt zeige, wenn sie korrekt im Fenster erscheinen, aber falsch auf den gedruckten Medien.So drucken Sie einen Javafx-Knoten, wenn Sie RTL-Sprachen verwenden

enter image description here enter image description here

Antwort

1

Ok, fand ich böse eine Abhilfe, die ich versuche zu erklären:

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

der Trick ist, dass Sie den Knoten auf dem flay drehen kann und die affine Funktion auf die Anwendung Damit der Knoten im verehrten Modus gezeichnet und an den Drucker übergeben wird, ist die umgekehrte Form eines umgekehrten Knotens korrekt.