Spec-Zone.ru › OpenJDK 21

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

Все известные реализующие классы:
SimpleDoc
public interface 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(), и значение возврата можно привести из класса 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, 2023, 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/21/docs/api/java.desktop/javax/print/Doc.html

Spec-Zone.ru

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