Spec-Zone.ru › OpenJavaFX 11
Модуль javafx.graphics
Пакет javafx.print

Класс 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
  • Краткое описание свойств

    Свойства
    Тип Свойство Описание
    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)
    Отображение диалога «Печать».
    String toString()
    • Наследованные методы от класса java.lang.Object

      clone, equals, finalize, getClass, hashCode, notify, notifyAll, 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 - если параметр node равен null.
    • jobStatusProperty

      public ReadOnlyObjectProperty<PrinterJob.JobStatus> jobStatusProperty()
      Только для чтения, свойство, представляющее текущее JobStatus
      См. также:
      getJobStatus()
    • 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()
      Переопределяет:
      toString в классе Object

© 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