Spec-Zone.ru › OpenJavaFX 24

Класс PrinterJob

java.lang.Object
javafx.print.PrinterJob
public final class PrinterJob extends Object
PrinterJob — точка входа для печати в JavaFX scenegraph.

Он включает

  • Обнаружение принтера
  • Создание задания
  • Настройка задания на основе возможностей принтера
  • Настройка страницы
  • Вывод иерархии узлов на страницу.

Вот очень простой пример, который печатает один узел.

 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<PrinterJob.JobStatus> jobStatus
Только для чтения свойство объекта, представляющее текущее JobStatus
final ObjectProperty<Printer> printer
Свойство, представляющее Printer для этого задания.

Краткое описание методов

Модификатор и тип Метод Описание
void cancelJob()
Отмена задания печати в ближайшее время.
static final PrinterJob createPrinterJob()
Метод-фабрика для создания задания.
static final PrinterJob createPrinterJob(Printer printer)
Метод-фабрика для создания задания для указанного принтера.
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(PageLayout pageLayout, Node node)
Печать указанного узла с использованием указанной компоновки страницы.
boolean printPage(Node node)
Печать указанного узла.
final void setPrinter(Printer printer)
Устанавливает значение свойства printer.
boolean showPageSetupDialog(Window owner)
Отображает диалоговое окно «Настройка страницы».
boolean showPrintDialog(Window owner)
Отображает диалоговое окно «Печать».

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробности свойства

принтер

public final ObjectProperty<Printer> printerProperty
Свойство, представляющее Printer для этой задачи. При установке принтера, не поддерживающего текущие настройки задания (например, если запрошено двустороннее печатание, но новый принтер его не поддерживает), значения возвращаются к значениям по умолчанию для нового принтера или, в некоторых случаях, к аналогичным значениям. Например, это может означать, что REVERSE_LANDSCAPE обновляется до LANDSCAPE, однако такая оптимизация реализации разрешена, но не требуется.

Вышесказанное относится к тому случаю, когда принтер меняется путем прямого вызова этого метода или в качестве побочного эффекта взаимодействия пользователя с диалоговым окном печати.

Установка нулевого значения для принтера установит принтер по умолчанию. Установка текущего принтера не имеет эффекта.

См. также:
  • getPrinter()
  • setPrinter(Printer)
  • printerProperty()

состояниеЗадания

public final ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatusProperty
Только для чтения свойство объекта, представляющее текущее JobStatus
См. также:
  • getJobStatus()
  • jobStatusProperty()

Подробности метода

создатьЗаданиеПечати

public static final PrinterJob createPrinterJob()
Метод-фабрика для создания задания. Если доступных принтеров нет, метод вернет null. Некоторые платформы могут предоставлять псевдопринтер, который создает документ. Такие принтеры будут перечислены здесь, до тех пор, пока платформа также перечисляет их как принтеры.
Возвращает:
новый экземпляр 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()
  • setPrinter(Printer)

getPrinter

public final Printer getPrinter()
Возвращает значение свойства printer.
Описание свойства:
Свойство, представляющее Printer для этого задания. При установке принтера, не поддерживающего текущие настройки задания (например, если запрошено двустороннее печатание, но новый принтер его не поддерживает), значения возвращаются к значениям по умолчанию для нового принтера или, в некоторых случаях, к аналогичным значениям. Например, это может означать, что REVERSE_LANDSCAPE обновляется до LANDSCAPE, однако такая оптимизация реализации разрешена, но не требуется.

Вышесказанное относится к тому случаю, когда принтер меняется путем прямого вызова этого метода или в качестве побочного эффекта взаимодействия пользователя с диалоговым окном печати.

Установка нулевого значения для принтера установит принтер по умолчанию. Установка текущего принтера не имеет эффекта.

Возвращает:
значение свойства printer
См. также:
  • setPrinter(Printer)
  • printerProperty()

установитьПринтер

public final void setPrinter(Printer printer)
Устанавливает значение свойства printer.
Описание свойства:
Свойство, представляющее Printer для этого задания. При установке принтера, не поддерживающего текущие настройки задания (например, если запрошено двустороннее печатание, но новый принтер его не поддерживает), значения возвращаются к значениям по умолчанию для нового принтера или, в некоторых случаях, к аналогичным значениям. Например, это может означать, что REVERSE_LANDSCAPE обновляется до LANDSCAPE, однако такая оптимизация реализации разрешена, но не требуется.

Вышесказанное относится к тому случаю, когда принтер меняется путем прямого вызова этого метода или в качестве побочного эффекта взаимодействия пользователя с диалоговым окном печати.

Установка нулевого значения для принтера установит принтер по умолчанию. Установка текущего принтера не имеет эффекта.

Параметры:
printer - значение свойства printer
См. также:
  • getPrinter()
  • printerProperty()

получитьНастройкиЗадания

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)
Распечатать указанный узел с помощью заданного макета страницы. Макет страницы переопределит значения по умолчанию задания только для этой страницы. Если состояние задания — CANCELED, ERROR или DONE, этот метод вернёт false.

Этот метод можно вызывать из любого потока. Если он вызывается из потока приложения FX, то его необходимо вызывать либо из обработчика события ввода, либо из метода run исполняемого объекта Runnable, переданного в Platform.runLater. Его нельзя вызывать во время анимации или обработки макета.

Parameters:
pageLayout — Макет для этой страницы.
node — Узел для печати.
Returns:
успешно ли выполнено рендеринг.
Throws:
NullPointerException — если любой из параметров равен null.
IllegalStateException — если этот метод вызывается во время анимации или обработки макета.

printPage

public boolean printPage(Node node)
Распечатать указанный узел. Макет страницы — значения по умолчанию задания. Если состояние задания — CANCELED, ERROR или DONE, этот метод вернёт false.
Parameters:
node — Узел для печати.
Returns:
успешно ли выполнено рендеринг.
Throws:
NullPointerException — если параметр node равен null.

jobStatusProperty

public final ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatusProperty()
Только для чтения свойство объекта, представляющее текущее состояние JobStatus
Returns:
текущее состояние JobStatus
See Also:
  • getJobStatus()

getJobStatus

public final PrinterJob.JobStatus getJobStatus()
Получение значения свойства jobStatus.
Описание свойства:
Только для чтения свойство объекта, представляющее текущее состояние JobStatus
Returns:
значение свойства jobStatus
See Also:
  • jobStatusProperty()

cancelJob

public void cancelJob()
Отменить задание печати в ближайшее время. Может возвратить значение немедленно, не ожидая завершения отмены задания, в случае, если это заблокирует поток FX-пользователя на какой-либо период времени. Если печать выполняется в этот момент, это обычно означает, что отмена произойдёт после отрисовки текущей страницы. Состояние задания обновляется до CANCELED только после этого. Следовательно, определение того, что задание отменено, требует мониторинга состояния задания.

Вызов не оказывает никакого влияния, если задание уже было запрошено для отмены или находится в состоянии ERROR или DONE. Например, он не будет удалять из очереди принтера задание, которое уже было отправлено на печать. После отмены задания не допускается вызывать методы, которые отображают новый контент или изменяют состояние задания.

endJob

public boolean endJob()
Если задание может быть успешно отправлено в очередь принтера, это вернёт true. Примечание: это не означает, что задание уже напечатано, так как это может занять минуты или дольше, даже в случае реализации.

Значение false означает, что задание не может быть отправлено в очередь или уже завершено.

При успешном выполнении состояние задания также будет обновлено до DONE, после чего задание больше нельзя использовать.

Вызов endJob() для задания, для которого не было напечатано ни одной страницы, эквивалентен вызову {code cancelJob()}.

Returns:
true, если задание отправлено в очередь, false — если нет, или задание уже было в завершённом состоянии.

Отправить сообщение об ошибке или предложить улучшение
Авторское право © 2008, 2025, Oracle и/или его филиалы. Все права защищены.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API