Spec-Zone.ru › OpenJDK 24

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

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

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

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

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

Если данные печати получаются от клиента в виде потока, вызывая методы Doc's 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(), и возвращаемое значение может быть приведено к этому представительному классу из класса 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 - если при создании входного потока произошла ошибка ввода-вывода

© 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/print/Doc.html

Spec-Zone.ru

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