Ich versuche, Text an einen Drucker zu senden. Ich brauche nur den Text gedruckt, um den Seitenrand gewickelt und bei Bedarf zu einer anderen Seite fließen.Wie drucke ich nur Text?
Hier ist ein minimales Beispiel dafür, was ich jetzt tue:
@FXML
private void print() {
TextArea printArea = new TextArea(textArea.getText());
printArea.setWrapText(true);
printArea.getChildrenUnmodifiable().forEach(node -> node.setStyle("-fx-background-color: transparent"));
printArea.setStyle("-fx-background-color: transparent");
PrinterJob printerJob = PrinterJob.createPrinterJob();
if (printerJob != null && printerJob.showPrintDialog(textArea.getScene().getWindow())) {
if (printerJob.printPage(printArea)) {
printerJob.endJob();
// done printing
} else {
// failed to print
}
} else {
// failed to get printer job or failed to show print dialog
}
}
Was Druck endet ist ein grauer Hintergrund, dass die Steuerung selbst, zusammen mit dem Scrollbar zu sein scheint. Komme ich dem in die falsche Richtung? Ich habe das Gefühl, dass ich gegen die API ankämpfe, indem ich ein Steuerelement anpasse und drucke, anstatt einfach den zu druckenden Text zu senden.
Das Beispielbild unten wurde von meiner Handykamera aufgenommen, so dass das Whitepaper ein bisschen hellgrau aussieht, aber Sie können immer noch den grauen Hintergrund von der Steuerung und der Bildlaufleiste sehen.