Класс PrinterJob
- javafx.print.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
-
Краткое описание свойств
Все методыМетоды экземпляраКонкретные методы Тип Свойство и описание ReadOnlyObjectProperty<PrinterJob.JobStatus>jobStatusЧтение только для свойства объекта, представляющее текущийJobStatusObjectProperty<Printer>printerСвойство, представляющееPrinterдля этого задания.
-
Краткое описание вложенных классов
Вложенные классы Модификатор и тип Класс и описание static classPrinterJob.JobStatusПеречисление, используемое для отчётности о статусе задания печати.
-
Краткое описание методов
Все методыСтатические методыМетоды экземпляраКонкретные методы Модификатор и тип Метод и описание voidcancelJob()Отменить основное задание печати в ближайшее время.static PrinterJobcreatePrinterJob()Метод-фабрика для создания задания.static PrinterJobcreatePrinterJob(Printer printer)Метод-фабрика для создания задания для указанного принтера.booleanendJob()Если задание может быть успешно помещено в очередь принтера, возвращает true.JobSettingsgetJobSettings()JobSettingsвключает все поддерживаемые API параметры конфигурации задания, такие как количество копий, опцию сортировки, опцию двусторонней печати и т. д.PrinterJob.JobStatusgetJobStatus()Получить текущий статус задания.PrintergetPrinter()Получить принтер, в данный момент связанный с этим заданием.ReadOnlyObjectProperty<PrinterJob.JobStatus>jobStatusProperty()Чтение только для свойства объекта, представляющее текущийJobStatusObjectProperty<Printer>printerProperty()Свойство, представляющееPrinterдля этого задания.booleanprintPage(Node node)Печать указанного узла.booleanprintPage(PageLayout pageLayout, Node node)Печать указанного узла с использованием указанной компоновки страницы.voidsetPrinter(Printer printer)Изменение принтера для этого задания.booleanshowPageSetupDialog(Window owner)Отображает диалоговое окно «Настройка страницы».booleanshowPrintDialog(Window owner)Отображает диалоговое окно печати.StringtoString()
-
Подробное описание свойства
-
printer
public final ObjectProperty<Printer> printerProperty
Свойство, представляющееPrinterдля этой задачи.См. также:
-
jobStatus
public ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatusProperty
Только для чтения свойство объекта, представляющее текущийJobStatusСм. также:
-
-
Подробное описание метода
-
createPrinterJob
public static final PrinterJob createPrinterJob()
Метод-фабрика для создания задачи. Если нет доступных принтеров, возвращает null. Некоторые платформы могут предоставлять псевдопринтер, который создает документ. Такие принтеры будут перечислены здесь, если платформа также перечисляет их как принтеры.Возвращает:
новый экземпляр 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
public Printer getPrinter()
Получает принтер, в настоящее время связанный с этой задачей.Возвращает:
принтер для задачи.
-
setPrinter
public void setPrinter(Printer printer)
Изменить принтер для этой задачи. Если новый принтер не поддерживает текущие параметры задачи (например, если запрошена двусторонняя печать, но новый принтер не поддерживает это), то значения сбрасываются до значений по умолчанию для нового принтера или, в некоторых случаях, до аналогичных значений. Например, это может означать обновление REVERSE_LANDSCAPE до LANDSCAPE, но такая оптимизация реализации разрешена, но не обязательна.Вышесказанное относится как к изменению принтера непосредственным вызовом этого метода, так и как к побочному эффекту взаимодействия пользователя с диалогом печати.
Установка значения null для принтера установит принтер по умолчанию. Установка текущего принтера не оказывает никакого влияния.
Параметры:
printer- используемый для этой задачи печати.
-
getJobSettings
public JobSettings getJobSettings()
JobSettingsсодержит все поддерживаемые API параметры конфигурации задач, такие как количество копий, опции сортировки, опции двусторонней печати и т.д. Начальные значения основаны на текущих параметрах начального принтера.Возвращает:
текущие параметры задачи.
-
showPrintDialog
public boolean showPrintDialog(Window owner)
Отображает диалог печати. Позволяет пользователю обновить состояние задачи, например, принтер и параметры. Эти изменения будут доступны в соответствующих свойствах после возвращения диалога печати. Диалог печати обычно используется для подтверждения пользователем желания продолжить печать. Это не обязательно для приложения, но в целом должно выполняться.В случае отсутствия пользовательского интерфейса этот метод возвращает true без изменения параметров, как если бы пользователь подтвердил продолжение печати.
Если задача не находится в состоянии отобразить диалог (например, уже печатает, отменена или завершена), диалог не отобразится, и метод вернёт false.
Окно
ownerможет быть null, но если это видимое окно, оно будет использоваться в качестве родительского.Параметры:
owner- для блокирования ввода или null.Возвращает:
false, если пользователь отменяет печать или задача не находится в новом состоянии. То есть, если она уже началась, завершилась с ошибкой или была отменена.
-
showPageSetupDialog
public boolean showPageSetupDialog(Window owner)
Отображает диалог настройки страницы. Диалог настройки страницы в первую очередь предназначен для настройки макета страницы пользователем. Размер бумаги и ориентация являются наиболее распространенными и важными компонентами этого.Будет отображаться наиболее подходящий доступный диалог для этой цели. Однако могут быть доступны и другие настройки, включая изменение текущего принтера. Таким образом, побочным эффектом отображения этого диалогового метода может быть обновление этих и других текущих параметров задачи. Метод возвращает true, если пользователь подтвердил диалог, вне зависимости от внесенных изменений.
Если задача не находится в состоянии отобразить диалог (например, уже печатает, отменена или завершена), диалог не отобразится, и метод вернёт false.
Окно
ownerможет быть null, но если это видимое окно, оно будет использоваться в качестве родительского.Параметры:
owner- для блокирования ввода или null.Возвращает:
false, если пользователь отменяет диалог или задача не находится в новом состоянии. То есть, если она уже началась, завершилась с ошибкой или была отменена.
-
printPage
public boolean printPage(PageLayout pageLayout, Node node)Печать указанного узла с использованием указанного макета страницы. Макет страницы переопределит значение по умолчанию для этой страницы. Если состояние задачи CANCELED, ERROR или DONE, этот метод вернет false.Параметры:
pageLayout- Макет для этой страницы.Возвращает:
было ли рендеринг успешным.
Исключения:
NullPointerException- если какой-либо из параметров равен null.
-
printPage
public boolean printPage(Node node)
Печать указанного узла. Макет страницы — значение по умолчанию для задачи. Если состояние задачи CANCELED, ERROR или DONE, этот метод вернет false.Параметры:
node- Узел для печати.Возвращает:
был ли рендеринг успешным.
Исключения:
NullPointerException- если параметр node равен null.
-
jobStatusProperty
public ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatusProperty()
Только для чтения свойство объекта, представляющее текущийJobStatusСм. также:
-
getJobStatus
public PrinterJob.JobStatus getJobStatus()
Получить текущее состояние задачи.Возвращает:
текущее
JobStatus
-
cancelJob
public void cancelJob()
Отменить основную задачу печати в кратчайшие сроки. Может вернуть значение немедленно, не ожидая завершения отмены задачи, если это не заблокирует поток FX пользовательского интерфейса на какое-либо время. Если печать выполняется в этот момент, это означает, что отмена произойдет после рендеринга текущей страницы. Статус задачи обновляется до CANCELED только после этого. Таким образом, определение того, что задача CANCELED, требует отслеживания статуса задачи.Вызов не оказывает никакого эффекта, если задача уже запрошена для отмены или находится в состоянии ERROR или DONE. Например, это не удалит задачу из очереди принтера, если она уже разослана на печать. После отмены задачи недопустимо вызывать методы, которые выводят новое содержимое или изменяют состояние задачи.
-
endJob
public boolean endJob()
Если задача может быть успешно разослана в очередь печати, это вернёт true. Примечание: это не означает, что задача уже напечатана, так как это может занять минуты или дольше, даже в реализуемых случаях.Возвращаемое значение false означает, что задача не могла быть разослана или уже была завершена.
Успешное завершение также обновит состояние задачи до
DONE, после чего задача больше не может быть использована.Вызов endJob() для задачи, для которой не были напечатаны страницы, эквивалентен вызову {code cancelJob()}.
Возвращает:
true, если задача разослана, false, если нет, или задача уже была завершена.
-
toString
public String toString()
-
© 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.