Spec-Zone.ru › OpenJDK 25

Документация интерфейса

Все известные реализующие классы:
SimpleDoc
public interface Doc
Интерфейс Doc задаёт интерфейс для объекта, предоставляющего часть данных для печати задания печати. «Doc» — короткое, удобное для произношения слово, означающее «часть данных для печати». Клиент передаёт заданию печати объект, реализующий интерфейс Doc, а задание печати вызывает методы этого объекта для получения данных для печати. Интерфейс Doc позволяет заданию печати:
  • Определить формат, или «тип документа» (класс DocFlavor), в котором доступны данные для печати. Тип документа задаёт формат данных для печати (тип MIME) и класс представления объекта, из которого получены эти данные.
  • Получить объект представления данных для печати, который является экземпляром класса представления типа документа. Затем задание печати может получить фактические данные для печати из объекта представления.
  • Получить атрибуты печати, задающие дополнительные характеристики документа или инструкции по его обработке. Атрибуты печати определены в пакете javax.print.attribute. Документ возвращает свои атрибуты печати, хранящиеся в javax.print.attribute.DocAttributeSet.
Каждый метод реализации интерфейса Doc может всегда возвращать один и тот же объект при каждом вызове. Это важно для задания печати или другого вызывающего кода, использующего объект документа, если объект представления данных для печати «потребляет» эти данные по мере их получения вызывающим кодом, например когда объект представления данных для печати является потоком. После того как задание печати вызвало getPrintData() и получило поток, все последующие вызовы getPrintData() будут возвращать тот же объект потока, чтение из которого уже может выполняться, а не новый объект потока, который будет повторно считывать данные для печати с начала. Такое поведение объекта документа упрощает его реализацию и обосновано тем, что конкретный документ предназначен для передачи данных для печати только одному заданию печати, а не нескольким разным заданиям печати. (Чтобы передать одни и те же данные для печати нескольким разным заданиям печати, необходимо создать несколько разных объектов документа на основе одного источника данных для печати.)

Интерфейс Doc предоставляет значительную гибкость при реализации. Данные для печати могут уже существовать на момент создания объекта документа. В этом случае объекты, возвращаемые методами документа, можно передать конструктору документа, заранее сохранить в документе и просто возвращать по запросу. В качестве альтернативы данные для печати могут ещё не существовать на момент создания объекта документа. В этом случае объект документа может использовать «ленивую» реализацию, создавая объект представления данных для печати (и/или сами данные для печати) только по запросу задания печати (когда задание печати вызывает метод getPrintData()).

Количество клиентских потоков, которые могут одновременно обращаться к одному и тому же документу, не ограничено. Поэтому все реализации интерфейса Doc должны быть безопасными при многопоточном доступе.

Однако данные для печати, полученные из Doc, может потреблять только один объект.

Если данные для печати получены от клиента в виде потока при вызове методов getReaderForText() или getStreamForBytes() объекта Doc либо если источник данных для печати уже является InputStream или Reader, служба печати должна всегда закрывать эти потоки за клиента при любых условиях завершения задания. При этом действует следующее ограничение. Если сами данные для печати являются потоком, служба всегда закроет его. Если данные для печати представляют собой нечто другое, что можно запросить в виде потока, служба закроет поток, только если успела получить его до завершения работы. Иными словами, то, что служба печати может запросить данные в виде потока, не означает, что она обязательно это сделает. Поэтому разработчики Doc, рассчитывающие на то, что служба закроет потоки, должны создавать их только в ответ на запрос службы.

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

Модификатор и тип Метод Описание
DocAttributeSet getAttributes()
Получает набор атрибутов печати для этого объекта документа.
DocFlavor getDocFlavor()
Определяет тип документа, в котором этот объект документа предоставляет свою часть данных для печати.
Object getPrintData()
Получает объект представления данных для печати, содержащий часть данных для печати этого объекта документа в формате, соответствующем поддерживаемому типу документа.
Reader getReaderForText()
Получает средство чтения для извлечения символьных данных для печати из этого документа.
InputStream getStreamForBytes()
Получает входной поток для извлечения байтовых данных для печати из этого документа.

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

getDocFlavor

DocFlavor getDocFlavor()
Определяет тип документа, в котором этот объект документа предоставляет свою часть данных для печати.
Возвращает:
тип документа

getPrintData

Object getPrintData() throws IOException
Получает объект представления данных для печати, содержащий часть данных для печати этого объекта документа в формате, соответствующем поддерживаемому типу документа. Метод getPrintData() возвращает экземпляр класса представления, имя которого указано в getDocFlavor().getRepresentationClassName(), а возвращаемое значение можно привести от класса Object к этому классу представления.
Возвращает:
объект представления данных для печати
Выбрасывает:
IOException — если класс представления является потоком и при создании потока произошла ошибка ввода-вывода

getAttributes

DocAttributeSet getAttributes()
Получает набор атрибутов печати для этого объекта документа. Если возвращённый набор атрибутов содержит экземпляр некоторого атрибута X, принтер должен использовать значение этого атрибута для данного документа, переопределяя любое значение атрибута X в наборе атрибутов задания. Если возвращённый набор атрибутов не содержит экземпляра некоторого атрибута X или возвращается null, принтер должен проверить набор атрибутов задания, чтобы получить значение атрибута X, а если оно там не найдено — использовать значение по умолчанию, определяемое реализацией. Возвращаемый набор атрибутов доступен только для чтения.
Возвращает:
набор атрибутов печати для этого документа, доступный только для чтения, или null, чтобы получить все значения атрибутов из набора атрибутов задания

getReaderForText

Reader getReaderForText() throws IOException
Получает средство чтения для извлечения символьных данных для печати из этого документа. Реализация Doc должна поддерживать этот метод, если DocFlavor имеет один из следующих классов представления данных для печати, и в противном случае возвращать null:
  • char[]
  • java.lang.String
  • java.io.Reader
Объект представления данных для печати документа используется для создания и возврата Reader, считывающего данные для печати из объекта представления в виде потока символов. Однако если сам объект представления данных для печати является Reader, возвращается непосредственно этот объект представления.
Возвращает:
средство чтения для считывания символов данных для печати из этого документа. Если предоставить средство чтения невозможно, поскольку документ не соответствует указанным выше критериям, возвращается null.
Выбрасывает:
IOException — если при создании средства чтения произошла ошибка ввода-вывода

getStreamForBytes

InputStream getStreamForBytes() throws IOException
Получает входной поток для извлечения байтовых данных для печати из этого документа. Реализация Doc должна поддерживать этот метод, если DocFlavor имеет один из следующих классов представления данных для печати, и в противном случае возвращать null:
  • byte[]
  • java.io.InputStream
Получается объект представления данных для печати этого документа, после чего создаётся и возвращается входной поток для чтения данных из объекта представления в виде потока байтов. Однако если сам объект представления данных для печати является входным потоком, возвращается непосредственно этот объект представления.
Возвращает:
входной поток для считывания байтов данных для печати из этого документа. Если предоставить входной поток невозможно, поскольку документ не соответствует указанным выше критериям, возвращается null.
Выбрасывает:
IOException — если при создании входного потока произошла ошибка ввода-вывода

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры основных понятий, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/print/Doc.html

Spec-Zone.ru

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