Класс 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, чтобы они выполнялись в этом потоке.
- С тех пор:
- JavaFX 8.0
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
PrinterJob.JobStatus |
Перечисление, используемое для отчётности о состоянии задания печати. |
Краткое описание свойств
| Тип | Свойство | Описание |
|---|---|---|
final ReadOnlyObjectProperty |
jobStatus |
Только для чтения свойство объекта, представляющее текущее JobStatus
|
final ObjectProperty |
printer |
Свойство, представляющее Printer для этого задания. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
cancelJob() |
Отмена задания печати в ближайшее время. |
static final PrinterJob |
createPrinterJob() |
Метод-фабрика для создания задания. |
static final PrinterJob |
createPrinterJob |
Метод-фабрика для создания задания для указанного принтера. |
boolean |
endJob() |
Если задание успешно помещено в очередь принтера, возвращается true. |
JobSettings |
getJobSettings() |
JobSettings содержит все поддерживаемые API параметры настройки задания, такие как количество копий, опции сортировки, опции дуплекса и т. д. |
final PrinterJob.JobStatus |
getJobStatus() |
Возвращает значение свойства jobStatus. |
final Printer |
getPrinter() |
Возвращает значение свойства printer. |
final ReadOnlyObjectProperty |
jobStatusProperty() |
Только для чтения свойство объекта, представляющее текущее JobStatus
|
final ObjectProperty |
printerProperty() |
Свойство, представляющее Printer для этого задания. |
boolean |
printPage |
Печать указанного узла с использованием указанной компоновки страницы. |
boolean |
printPage |
Печать указанного узла. |
final void |
setPrinter |
Устанавливает значение свойства printer. |
boolean |
showPageSetupDialog |
Отображает диалоговое окно «Настройка страницы». |
boolean |
showPrintDialog |
Отображает диалоговое окно «Печать». |
Подробности свойства
принтер
public final ObjectProperty<Printer> printerProperty
Printer для этой задачи. При установке принтера, не поддерживающего текущие настройки задания (например, если запрошено двустороннее печатание, но новый принтер его не поддерживает), значения возвращаются к значениям по умолчанию для нового принтера или, в некоторых случаях, к аналогичным значениям. Например, это может означать, что REVERSE_LANDSCAPE обновляется до LANDSCAPE, однако такая оптимизация реализации разрешена, но не требуется. Вышесказанное относится к тому случаю, когда принтер меняется путем прямого вызова этого метода или в качестве побочного эффекта взаимодействия пользователя с диалоговым окном печати.
Установка нулевого значения для принтера установит принтер по умолчанию. Установка текущего принтера не имеет эффекта.
- См. также:
состояниеЗадания
public final ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatusProperty
JobStatus
- См. также:
Подробности метода
создатьЗаданиеПечати
public static final PrinterJob createPrinterJob()
- Возвращает:
- новый экземпляр PrinterJob или null.
создатьЗаданиеПечати
public static final PrinterJob createPrinterJob(Printer printer)
Аргумент printer определяет начальный принтер.
- Параметры:
-
printer- для использования в задании. Если принтер в настоящее время недоступен (например, отключен), может быть возвращен null. - Возвращает:
- новый PrinterJob или null.
printerProperty
public final ObjectProperty<Printer> printerProperty()
Printer для этого задания. При установке принтера, не поддерживающего текущие настройки задания (например, если запрошено двустороннее печатание, но новый принтер его не поддерживает), значения возвращаются к значениям по умолчанию для нового принтера или, в некоторых случаях, к аналогичным значениям. Например, это может означать, что REVERSE_LANDSCAPE обновляется до LANDSCAPE, однако такая оптимизация реализации разрешена, но не требуется. Вышесказанное относится к тому случаю, когда принтер меняется путем прямого вызова этого метода или в качестве побочного эффекта взаимодействия пользователя с диалоговым окном печати.
Установка нулевого значения для принтера установит принтер по умолчанию. Установка текущего принтера не имеет эффекта.
- Возвращает:
Printerдля этого задания- См. также:
getPrinter
public final Printer getPrinter()
printer.- Описание свойства:
- Свойство, представляющее
Printerдля этого задания. При установке принтера, не поддерживающего текущие настройки задания (например, если запрошено двустороннее печатание, но новый принтер его не поддерживает), значения возвращаются к значениям по умолчанию для нового принтера или, в некоторых случаях, к аналогичным значениям. Например, это может означать, что REVERSE_LANDSCAPE обновляется до LANDSCAPE, однако такая оптимизация реализации разрешена, но не требуется.Вышесказанное относится к тому случаю, когда принтер меняется путем прямого вызова этого метода или в качестве побочного эффекта взаимодействия пользователя с диалоговым окном печати.
Установка нулевого значения для принтера установит принтер по умолчанию. Установка текущего принтера не имеет эффекта.
- Возвращает:
- значение свойства
printer - См. также:
установитьПринтер
public final void setPrinter(Printer printer)
printer.- Описание свойства:
- Свойство, представляющее
Printerдля этого задания. При установке принтера, не поддерживающего текущие настройки задания (например, если запрошено двустороннее печатание, но новый принтер его не поддерживает), значения возвращаются к значениям по умолчанию для нового принтера или, в некоторых случаях, к аналогичным значениям. Например, это может означать, что REVERSE_LANDSCAPE обновляется до LANDSCAPE, однако такая оптимизация реализации разрешена, но не требуется.Вышесказанное относится к тому случаю, когда принтер меняется путем прямого вызова этого метода или в качестве побочного эффекта взаимодействия пользователя с диалоговым окном печати.
Установка нулевого значения для принтера установит принтер по умолчанию. Установка текущего принтера не имеет эффекта.
- Параметры:
-
printer- значение свойстваprinter - См. также:
получитьНастройкиЗадания
public JobSettings getJobSettings()
JobSettings содержит все поддерживаемые API параметры конфигурации задания, такие как количество копий, опцию сортировки, опцию двустороннего печати и т.д. Начальные значения основаны на текущих настройках начального принтера.- Возвращает:
- текущие настройки задания.
отобразитьДиалогПечати
public boolean showPrintDialog(Window owner)
В случае отсутствия пользовательского интерфейса этот метод возвращает true без изменения настроек, как если бы пользователь подтвердил продолжение печати.
Если задание не находится в состоянии отображения диалога (например, уже печатается, отменено или завершено), диалог не будет отображен, и метод вернет false.
Окно owner может быть null, но если это видимое окно, оно будет использовано в качестве родительского.
Этот метод можно вызывать из любого потока. Если он вызывается из потока приложения JavaFX, то он должен быть вызван либо из обработчика событий ввода, либо из метода run объекта Runnable, переданного в Platform.runLater. Его нельзя вызывать во время анимации или обработки макета.
- Параметры:
-
owner- для блокировки ввода, или null. - Возвращает:
- false, если пользователь отменяет печать или задание не находится в нужном состоянии. То есть если оно уже запущено, завершилось неудачно или было отменено или завершено.
- Исключения:
-
IllegalStateException- если этот метод вызывается во время анимации или обработки макета.
отобразитьДиалогНастроекСтраницы
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. Его нельзя вызывать во время анимации или обработки макета.
- Parameters:
-
pageLayout— Макет для этой страницы. -
node— Узел для печати. - Returns:
- успешно ли выполнено рендеринг.
- Throws:
-
NullPointerException— если любой из параметров равен null. -
IllegalStateException— если этот метод вызывается во время анимации или обработки макета.
printPage
public boolean printPage(Node node)
- Parameters:
-
node— Узел для печати. - Returns:
- успешно ли выполнено рендеринг.
- Throws:
-
NullPointerException— если параметр node равен null.
jobStatusProperty
public final ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatusProperty()
JobStatus
- Returns:
- текущее состояние
JobStatus - See Also:
getJobStatus
public final PrinterJob.JobStatus getJobStatus()
jobStatus.- Описание свойства:
- Только для чтения свойство объекта, представляющее текущее состояние
JobStatus - Returns:
- значение свойства
jobStatus - See Also:
cancelJob
public void cancelJob()
Вызов не оказывает никакого влияния, если задание уже было запрошено для отмены или находится в состоянии ERROR или DONE. Например, он не будет удалять из очереди принтера задание, которое уже было отправлено на печать. После отмены задания не допускается вызывать методы, которые отображают новый контент или изменяют состояние задания.
endJob
public boolean endJob()
Значение false означает, что задание не может быть отправлено в очередь или уже завершено.
При успешном выполнении состояние задания также будет обновлено до DONE, после чего задание больше нельзя использовать.
Вызов endJob() для задания, для которого не было напечатано ни одной страницы, эквивалентен вызову {code cancelJob()}.
- Returns:
- 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.