JavaFX print tableview on multiple pages

后端 未结 3 483
忘掉有多难
忘掉有多难 2020-12-04 00:36

So, my problem is that I need to print the content of my tableview, but I have so many items in it, that it only prints the first 23 of them. I found a few solutions here al

3条回答
  •  再見小時候
    2020-12-04 00:44

    Printer printer = Printer.getDefaultPrinter();

                Printer printer = Printer.getDefaultPrinter();PrinterJob  printerJob = PrinterJob.createPrinterJob();
                PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.LANDSCAPE, Printer.MarginType.HARDWARE_MINIMUM);
                printerJob.getJobSettings().setPageLayout(pageLayout);
                Stage stage = (Stage) anchorPane.getScene().getWindow();
                boolean openPrintDialog = printerJob.showPrintDialog(stage);
                if(openPrintDialog){
                    tableView.setScaleX(0.8);
                    tableView.setScaleY(0.8);
                    tableView.setTranslateX(-70);
                    tableView.setTranslateY(-50);
                    ObservableList> allPrintItems = tableView.getItems();
                    ObservableList > pageList = FXCollections.observableArrayList();
                    boolean printing = false;
                    for(int i=0; i oneRow = allPrintItems.get(i);
                        pageList.add(oneRow);
                        if(i!=0 && (i%24==0 || i == (allPrintItems.size()-1))){
                            tableView.setItems(pageList);
                            printing = printerJob.printPage(tableView);
                            pageList.clear();
                        }
                    }
                    tableView.setItems(allPrintItems);
                    if(printing)printerJob.endJob();
                    tableView.setScaleX(1.0);
                    tableView.setScaleY(1.0);
                    tableView.setTranslateX(0);
                    tableView.setTranslateY(0);
    

提交回复
热议问题