JavaFX PrinterJob:页面范围不响应输入

时间:2019-08-22 14:45:23

标签: java javafx

我正在使用JavaFX PrinterJob在我的应用程序中打印PDF。我试图使用页面范围仅打印单个页面,但是页面范围始终为null。如何在打印对话框中设置页面范围,以使用户不必打印所有页面?

printerjob printDialog

public void print() throws InvalidPasswordException, IOException {
    Printer printer = Printer.getDefaultPrinter();
    if (printer != null) {
        PrinterJob job = PrinterJob.createPrinterJob();
        if (job != null) {
            boolean printed = false;
            PDDocument doc = PDDocument.load(tempFile);
            if (job.showPrintDialog(window)) {
                JobSettings jobSettings = job.getJobSettings();
                int copies = jobSettings.getCopies();
                PageRange[] pageRange = jobSettings.getPageRanges();
                for (int copy = 0; copy < copies; copy++) {
                    PageLayout pageLayout = job.getPrinter().createPageLayout(Paper.A4, PageOrientation.PORTRAIT, 0,
                            0, 0, 0);
                    if (pageRange != null) {
                        for (PageRange range : pageRange) {
                            for (int page = range.getStartPage(); page <= range.getEndPage(); page++) {
                                printed = printPage(pageLayout, job, printed, page);
                            }
                        }
                    } else {
                        for (int page = 1; page <= doc.getNumberOfPages(); page++) {
                            printed = printPage(pageLayout, job, printed, page);
                        }
                    }
                }
                if (printed) {
                    LOGGER.error("Printed.");
                } else {
                    LOGGER.error("Printing failed.");
                }
            }
            job.endJob();
            doc.close();
        }
    } else {
        LOGGER.error("printer is null");
    }
}

0 个答案:

没有答案