Класс PrinterJob
public final class PrinterJob
extends Object Он включает
- Обнаружение принтера
- Создание задания
- Настройка задания на основе поддерживаемых возможностей принтера
- Настройка страницы
- Вывод иерархии узлов на страницу.
Вот очень простой пример, который печатает один узел.
Node node = new Circle(100, 200, 200);
PrinterJob job = PrinterJob.createPrinterJob();
if (job != null) {
boolean success = job.printPage(node);
if (success) {
job.endJob();
}
}
Важные моменты В примере выше узел не был добавлен в сцену. Поскольку большинство сценариев печати — это печать содержимого, которое либо вообще не отображается, либо должно быть подготовлено и отформатировано по-другому, это вполне приемлемо.
Если содержимое, которое в настоящее время является частью сцены и отображается, печатается, то, поскольку печать задания или даже одной страницы задания может охватывать несколько «пульсов» или кадров экрана, важно, чтобы приложение гарантировало, что печатаемый узел не обновлялся во время процесса печати, иначе вероятны частичное или смазанное отображение.
Должно быть очевидно, что это же относится и к узлам, которые не отображаются — обновление их параллельно с их печатью — не лучшая идея.
Нет требования печатать на потоке приложения FX. Узел может быть подготовлен к печати в любом потоке, задание может быть вызвано в любом потоке. Однако минимизация объема работы в потоке приложения FX обычно желательна, чтобы не влиять на отзывчивость пользовательского интерфейса приложения. Поэтому рекомендуется выполнять печать в новом потоке и позволить реализации внутренне планировать любые задачи, которые необходимо выполнить в потоке FX, для выполнения в этом потоке.
- Since:
- JavaFX 8.0
Краткое описание свойств
| Тип | Свойство | Описание |
|---|---|---|
ReadOnlyObjectProperty<PrinterJob.JobStatus> | jobStatus | Чтение только свойство объекта, представляющее текущее JobStatus
|
ObjectProperty<Printer> | printer | Свойство, представляющее Printer для этого задания. |
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class | PrinterJob.JobStatus | Перечисление, используемое для отчётности о статусе задания печати. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | cancelJob() | Отмена базового задания печати в ближайшее время. |
static PrinterJob | createPrinterJob() | Метод-фабрика для создания задания. |
static PrinterJob | createPrinterJob(Printer printer) | Метод-фабрика для создания задания для указанного принтера. |
boolean | endJob() | Если задание успешно помещено в очередь принтера, возвращается true. |
JobSettings | getJobSettings() | JobSettings содержит все поддерживаемые API параметры конфигурации задания, такие как количество копий, сортировка, двусторонняя печать и т.д. |
PrinterJob.JobStatus | getJobStatus() | Получение текущего статуса задания. |
Printer | getPrinter() | Получение принтера, в настоящее время связанного с этим заданием. |
ReadOnlyObjectProperty<PrinterJob.JobStatus> | jobStatusProperty() | Чтение только свойство объекта, представляющее текущее JobStatus
|
ObjectProperty<Printer> | printerProperty() | Свойство, представляющее Printer для этого задания. |
boolean | printPage(PageLayout pageLayout,
Node node) | Печать указанного узла с использованием указанного макета страницы. |
boolean | printPage(Node node) | Печать указанного узла. |
void | setPrinter(Printer printer) | Изменение принтера для этого задания. |
boolean | showPageSetupDialog(Window owner) | Отображение диалогового окна «Настройка страницы». |
boolean | showPrintDialog(Window owner) | Отображение диалогового окна «Печать». |
Подробное описание свойств
printer
public final ObjectProperty<Printer> printerProperty
Printer для этого задания.- См. также:
-
getPrinter(),setPrinter(Printer)
jobStatus
public ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatusProperty
JobStatus.
- См. также:
getJobStatus()
Подробное описание методов
createPrinterJob
public static final PrinterJob createPrinterJob()
- Возвращает:
- новый экземпляр PrinterJob или null.
- Исключения:
-
SecurityException- если задание не имеет разрешения на инициализацию задания печати.
createPrinterJob
public static final PrinterJob createPrinterJob(Printer printer)
Аргумент printer определяет начальный принтер.
- Параметры:
-
printer- для использования в задании. Если принтер в данный момент недоступен (например, отключён), может возвратить null. - Возвращает:
- новый PrinterJob или null.
- Исключения:
-
SecurityException- если задание не имеет разрешения на инициализацию задания печати.
printerProperty
public final ObjectProperty<Printer> printerProperty()
Printer для этого задания.- См. также:
-
getPrinter(),setPrinter(Printer)
getPrinter
public Printer getPrinter()
- Возвращает:
- принтер для задания.
setPrinter
public void setPrinter(Printer printer)
Вышесказанное относится как к изменению принтера прямым вызовом этого метода, так и к побочному эффекту взаимодействия пользователя с диалогом печати.
Установка значения null для принтера установит принтер по умолчанию. Установка текущего принтера не имеет эффекта.
- Параметры:
-
printer- для использования в этом задании печати.
getJobSettings
public JobSettings getJobSettings()
JobSettings содержит все поддерживаемые API параметры конфигурации задания, такие как количество копий, параметр склейки, параметр двусторонней печати и т. д. Начальные значения основаны на текущих настройках начального принтера.- Возвращает:
- текущие настройки задания.
showPrintDialog
public boolean showPrintDialog(Window owner)
В случае отсутствия графического интерфейса этот метод возвращает true без изменения параметров, как если бы пользователь подтвердил продолжение печати.
Если задание не в состоянии отобразить диалог (например, уже печатается, отменено или завершено), диалог не отобразится, и метод вернет false.
Окно owner может быть null, но если это видимое окно, оно будет использоваться в качестве родительского.
Этот метод может вызываться из любого потока. Если он вызывается из потока приложения JavaFX, то он должен вызываться либо из обработчика событий ввода, либо из метода run переданного Runnable в Platform.runLater. Он не должен вызываться во время анимации или обработки макета.
- Параметры:
-
owner- для блокировки ввода, или null. - Возвращает:
- false, если пользователь отменяет печать или задание не в новом состоянии. То есть, если оно уже началось, завершилось с ошибкой или было отменено, или завершено.
- Исключения:
-
IllegalStateException- если этот метод вызывается во время анимации или обработки макета.
showPageSetupDialog
public boolean showPageSetupDialog(Window owner)
Будет отображен наиболее подходящий доступный диалог для этой цели. Однако может быть доступ к другим параметрам, включая изменение текущего принтера. Таким образом, побочным эффектом отображения этого метода диалога может быть обновление его и любых других текущих настроек задания. Метод возвращает true, если пользователь подтвердил диалог, вне зависимости от того, были ли внесены изменения.
Если задание не в состоянии отобразить диалог (например, уже печатается, отменено или завершено), диалог не отобразится, и метод вернет false.
Окно owner может быть null, но если это видимое окно, оно будет использоваться в качестве родительского.
Этот метод может вызываться из любого потока. Если он вызывается из потока приложения FX, то он должен вызываться либо из обработчика событий ввода, либо из метода run переданного Runnable в Platform.runLater. Он не должен вызываться во время анимации или обработки макета.
- Параметры:
-
owner- для блокировки ввода, или null. - Возвращает:
- false, если пользователь отменяет диалог или задание не в новом состоянии. То есть, если оно уже началось, завершилось с ошибкой или было отменено, или завершено.
- Исключения:
-
IllegalStateException- если этот метод вызывается во время анимации или обработки макета.
printPage
public boolean printPage(PageLayout pageLayout, Node node)
Этот метод может вызываться из любого потока. Если он вызывается из потока приложения FX, то он должен вызываться либо из обработчика событий ввода, либо из метода run переданного Runnable в Platform.runLater. Он не должен вызываться во время анимации или обработки макета.
- Параметры:
-
pageLayout- Макет для этой страницы. -
node- Узел для печати. - Возвращает:
- была ли успешна отрисовка.
- Исключения:
-
NullPointerException- если любой из параметров null. -
IllegalStateException- если этот метод вызывается во время анимации или обработки макета.
printPage
public boolean printPage(Node node)
- Параметры:
-
node- Узел для печати. - Возвращает:
- была ли успешна отрисовка.
- Исключения:
-
NullPointerException- если параметр узла null.
jobStatusProperty
public ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatusProperty()
JobStatus
- См. также:
getJobStatus()
getJobStatus
public PrinterJob.JobStatus getJobStatus()
- Возвращает:
- текущее
JobStatus
cancelJob
public void cancelJob()
Вызов не оказывает никакого эффекта, если задание уже было запрошено для отмены или находится в состоянии ERROR или DONE. Например, это не удалит задание из очереди принтера, если оно уже было отправлено на печать. После отмены задания недопустимо вызывать методы, которые выводят новый контент или изменяют состояние задания.
endJob
public boolean endJob()
Значение false означает, что задание не могло быть отправлено в очередь или уже было завершено.
Успешное завершение также обновит состояние задания до DONE, в этот момент задание больше нельзя использовать.
Вызов endJob() для задания, для которого не было напечатано ни одной страницы, эквивалентен вызову {code cancelJob()}.
- Возвращает:
- true, если задание отправлено в очередь, false, если нет, или задание уже было в завершенном состоянии.
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.