我正在使用JavaFX PrinterJob在我的应用程序中打印PDF。我试图使用页面范围仅打印单个页面,但是页面范围始终为null。如何在打印对话框中设置页面范围,以使用户不必打印所有页面?
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");
}
}