Я пытаюсь напечатать сцену javafx с текстами на ней.Я создал этот очень простой тестовый код.Как вы можете видеть, это стандартное приложение hello world с кнопкой «Say Hello World».
Приложение предполагает распечатать эту сцену с помощью кнопки «Say« Hello World »».из формы в порядке. Однако тексты на кнопке отображаются в виде нераспознаваемых символов. Я использую Mac.
Я пытаюсь реализовать отчет javafx, и для этого требуется распечатать сцену javafx.
Любая помощь будет принята с благодарностью. Пожалуйста, дайте мне знать, если вы можете успешно напечатать символы. Поэтому, по крайней мере, я знаю, что это проблема моего принтера.
Чтобы упростить тест, вы можете сохранитьрезультат в виде файла PDF вместо распечатки.
package javafxprinttest;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.print.PrinterJob;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class JavaFXPrintTest extends Application {
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("Say 'Hello World'");
StackPane root = new StackPane();
root.getChildren().add(btn);
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
print(root);
}
});
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
private void print(Node node)
{
// Define the Job Status Message
System.out.println("Creating a printer job...");
// Create a printer job for the default printer
PrinterJob job = PrinterJob.createPrinterJob();
if (job != null && job.showPrintDialog(node.getScene().getWindow()))
{
// Print the node
boolean printed = job.printPage(node);
if (printed)
{
// End the printer job
job.endJob();
}
else
{
// Write Error Message
System.out.println("Printing failed.");
}
}
else
{
// Write Error Message
System.out.println("Could not create a printer job.");
}
}
}