在JavaFX中打印TableView会显示垃圾/其他语言字符

时间:2019-04-07 09:50:28

标签: java javafx printing javafx-tableview

我正在尝试在JavaFX应用程序中打印TableView。当我将TableView直接传递给PrinterJob.printPage(TableView)时,文本数据使用其他某种语言,但是视图显示得很好,即在屏幕上显示为英语。

...
final TableView addItemTableView = (TableView) tabAnchorpane.getChildren().get(1);

Printer printer = Printer.getDefaultPrinter();
PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT);
double scaleX = pageLayout.getPrintableWidth() / addItemTableView.getBoundsInParent().getWidth();
Scale scale = new Scale(scaleX, scaleX);
addItemTableView.getTransforms().add(scale);
PrinterJob printerJob = PrinterJob.createPrinterJob();
if (printerJob.showPrintDialog(stage.getOwner()) && printerJob.printPage(pageLayout, addItemTableView)) {
    printerJob.endJob();
}
...

TableView中填充了Task类中的数据

public class Task implements Serializable {

    private static final long serialVersionUID = 2L;

    private transient StringProperty description;
    private transient IntegerProperty priority;
    private transient ObjectProperty<LocalDate> dueDate;
    private transient StringProperty status;
    private transient ObjectProperty<LocalDate> startDate;
    private transient ObjectProperty<LocalDate> endDate;
...
}

Actual Print Page

Expected Print Page

1 个答案:

答案 0 :(得分:0)

问题似乎与JDK 7有关。当我切换到JDK 10时,此问题已解决。打印预览页将按预期以英文显示。