Spec-Zone.ru › OpenJavaFX 17

Класс 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, для выполнения в этом потоке.

Since:
JavaFX 8.0

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

Свойства
Тип Свойство Описание
ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatus
Чтение только свойство объекта, представляющее текущее JobStatus
ObjectProperty<Printer> printer
Свойство, представляющее Printer для этого задания.

Краткое описание вложенных классов

Вложенные классы
Модификатор и тип Класс Описание
static class  PrinterJob.JobStatus
Перечисление, используемое для отчётности о статусе задания печати.

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

Модификатор и тип Метод Описание
void cancelJob()
Отмена базового задания печати в ближайшее время.
static PrinterJob createPrinterJob()
Метод-фабрика для создания задания.
static PrinterJob createPrinterJob​(Printer printer)
Метод-фабрика для создания задания для указанного принтера.
boolean endJob()
Если задание успешно помещено в очередь принтера, возвращается true.
JobSettings getJobSettings()
JobSettings содержит все поддерживаемые API параметры конфигурации задания, такие как количество копий, сортировка, двусторонняя печать и т.д.
PrinterJob.JobStatus getJobStatus()
Получение текущего статуса задания.
Printer getPrinter()
Получение принтера, в настоящее время связанного с этим заданием.
ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatusProperty()
Чтение только свойство объекта, представляющее текущее JobStatus
ObjectProperty<Printer> printerProperty()
Свойство, представляющее Printer для этого задания.
boolean printPage​(PageLayout pageLayout, Node node)
Печать указанного узла с использованием указанного макета страницы.
boolean printPage​(Node node)
Печать указанного узла.
void setPrinter​(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 для этого задания.
См. также:
getPrinter(), setPrinter(Printer)

jobStatus

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

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

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(), setPrinter(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, но если это видимое окно, оно будет использоваться в качестве родительского.

Этот метод может вызываться из любого потока. Если он вызывается из потока приложения 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 - если этот метод вызывается во время анимации или обработки макета.

printPage

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

jobStatusProperty

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

getJobStatus

public PrinterJob.JobStatus getJobStatus()
Получает текущее состояние задания.
Возвращает:
текущее JobStatus

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