Spec-Zone.ru › OpenJavaFX 21

Класс PrinterJob

java.lang.Object
fx.print.PrinterJob
public final class PrinterJob extends Object
PrinterJob — это отправная точка для печати графических элементов JavaFX.

Он включает

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

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

 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(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

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

printer

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

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

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

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

jobStatus

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

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

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 для данного задания. При установке принтера, не поддерживающего текущие параметры задания (например, если требуется печать по двум сторонам, а новый принтер не поддерживает это), значения сбрасываются до значений по умолчанию для нового принтера или, в некоторых случаях, до аналогичных значений. Например, это может означать, что REVERSE_LANDSCAPE обновляется до LANDSCAPE, однако эта оптимизация реализации разрешена, но не требуется.

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

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

Возвращает:
Printer для этого задания
См. также:
  • getPrinter()
  • setPrinter(Printer)

getPrinter

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

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

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

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

setPrinter

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

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

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

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

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

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

Параметры:
pageLayout - Макет для этой страницы.
node - Узел для печати.
Возвращает:
Указывает, была ли успешна отрисовка.
Исключения:
NullPointerException - если любой из параметров null.
IllegalStateException - если этот метод вызывается во время анимации или обработки макета.

Печать страницы

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

jobStatusProperty

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

getJobStatus

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

cancelJob

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

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

endJob

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

Возвращаемое значение 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.

Spec-Zone.ru

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