Spec-Zone.ru › OpenJDK 17

Интерфейс Doc

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

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

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

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

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

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

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

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

getDocFlavor

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

getPrintData

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

© 1993, 2021, 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/17/docs/api/java.desktop/javax/print/Doc.html

Spec-Zone.ru

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