Класс 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
Краткое описание свойств
| Тип | Свойство | Описание |
|---|---|---|
final ReadOnlyObjectProperty<PrinterJob.JobStatus> |
jobStatus |
Только для чтения свойство объекта, представляющее текущее JobStatus
|
final ObjectProperty<Printer> |
printer |
Свойство, представляющее Printer для этого задания. |
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
PrinterJob.JobStatus |
Перечисление, используемое для отчётности о статусе задания печати. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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<PrinterJob.JobStatus> |
jobStatusProperty() |
Только для чтения свойство объекта, представляющее текущее JobStatus
|
final ObjectProperty<Printer> |
printerProperty() |
Свойство, представляющее Printer для этого задания. |
boolean |
printPage |
Печать указанного узла с использованием указанной компоновки страницы. |
boolean |
printPage |
Печать указанного узла. |
final void |
setPrinter |
Устанавливает значение свойства printer. |
boolean |
showPageSetupDialog |
Отображает диалоговое окно "Настройка страницы". |
boolean |
showPrintDialog |
Отображает диалоговое окно печати. |
Подробности свойства
printer
public final ObjectProperty<Printer> printerProperty
Printer для данного задания. При установке принтера, не поддерживающего текущие параметры задания (например, если требуется печать по двум сторонам, а новый принтер не поддерживает это), значения сбрасываются до значений по умолчанию для нового принтера или, в некоторых случаях, до аналогичных значений. Например, это может означать, что REVERSE_LANDSCAPE обновляется до LANDSCAPE, однако эта оптимизация реализации разрешена, но не требуется. Вышесказанное относится как к изменению принтера прямым вызовом этого метода, так и к побочному эффекту взаимодействия пользователя с диалоговым окном печати.
Установка значения null для принтера установит принтер по умолчанию. Установка текущего принтера не оказывает никакого влияния.
- См. также:
jobStatus
public final ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatusProperty
JobStatus
- См. также:
Подробности метода
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 для данного задания. При установке принтера, не поддерживающего текущие параметры задания (например, если требуется печать по двум сторонам, а новый принтер не поддерживает это), значения сбрасываются до значений по умолчанию для нового принтера или, в некоторых случаях, до аналогичных значений. Например, это может означать, что REVERSE_LANDSCAPE обновляется до LANDSCAPE, однако эта оптимизация реализации разрешена, но не требуется. Вышесказанное относится как к изменению принтера прямым вызовом этого метода, так и к побочному эффекту взаимодействия пользователя с диалоговым окном печати.
Установка значения null для принтера установит принтер по умолчанию. Установка текущего принтера не оказывает никакого влияния.
- Возвращает:
Printerдля этого задания- См. также:
getPrinter
public final Printer getPrinter()
printer.- Описание свойства:
- Свойство, представляющее
Printerдля данного задания. При установке принтера, не поддерживающего текущие параметры задания (например, если требуется печать по двум сторонам, а новый принтер не поддерживает это), значения сбрасываются до значений по умолчанию для нового принтера или, в некоторых случаях, до аналогичных значений. Например, это может означать, что REVERSE_LANDSCAPE обновляется до LANDSCAPE, однако эта оптимизация реализации разрешена, но не требуется.Вышесказанное относится как к изменению принтера прямым вызовом этого метода, так и к побочному эффекту взаимодействия пользователя с диалоговым окном печати.
Установка значения null для принтера установит принтер по умолчанию. Установка текущего принтера не оказывает никакого влияния.
- Возвращает:
- значение свойства
printer - См. также:
setPrinter
public final void setPrinter(Printer printer)
printer.- Описание свойства:
- Свойство, представляющее
Printerдля данного задания. При установке принтера, не поддерживающего текущие параметры задания (например, если требуется печать по двум сторонам, а новый принтер не поддерживает это), значения сбрасываются до значений по умолчанию для нового принтера или, в некоторых случаях, до аналогичных значений. Например, это может означать, что REVERSE_LANDSCAPE обновляется до LANDSCAPE, однако эта оптимизация реализации разрешена, но не требуется.Вышесказанное относится как к изменению принтера прямым вызовом этого метода, так и к побочному эффекту взаимодействия пользователя с диалоговым окном печати.
Установка значения null для принтера установит принтер по умолчанию. Установка текущего принтера не оказывает никакого влияния.
- Параметры:
-
printer- значение для свойства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- если этот метод вызывается во время анимации или обработки макета.
Печать страницы
public boolean printPage(Node node)
- Параметры:
-
node- Узел для печати. - Возвращает:
- успешность рендеринга.
- Исключения:
-
NullPointerException- если параметр node равен null.
jobStatusProperty
public final ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatusProperty()
JobStatus
- Возвращает:
- текущее состояние
JobStatus - См. также:
getJobStatus
public final PrinterJob.JobStatus getJobStatus()
jobStatus.- Описание свойства:
- Только для чтения свойство объекта, представляющее текущее состояние
JobStatus - Возвращает:
- значение свойства
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.