С точки зрения пользователя документ может взять много различных форм, включая: файл PDF, изображение от цифрового фотоаппарата, электронной почты, документа текстового процессора, или веб-страницы. Прежде, чем напечатать документ определенного формата, клиент должен гарантировать, что принтер может понять формат. Иногда принтер может непосредственно напечатать документы данного формата: фотопринтеры могут непосредственно напечатать изображения различных форматов, и принтеры PostScript™ могут непосредственно напечатать документ PostScript™. Однако, есть немного принтеров, которые могут непосредственно напечатать широкий диапазон форматов; большинство принтеров требует, чтобы некоторая высокоуровневая программная поддержка преобразовала исходный документ в формат, который они могут напечатать.
API печати должен обеспечить способ описать типы документов так, чтобы:
Принтер может сообщить, что форматирует его, может напечатать.
Клиент может описать формат данных, которые он хочет напечатать.
Клиент может описать кодирование текстовых данных.
API Службы печати Java™ описывает типы документов, используя DocFlavor class. DocFlavor состоит:
Тип MIME, который говорит принтер, как интерпретировать данные.
Имя class представления, указывающее на Java class, который описывает, как данные отправляются принтеру.
Чтобы описать страницу HTML к службе печати, клиент мог бы хотеть использовать DocFlavor со строкой типа MIME "текста/HTML; charset=utf-16" и представление имя class "java.io. InputStream". Клиент может получить этот DocFlavor одним из двух способов:
Создайте DocFlavor:DocFlavor htmlStreamFlavor = новый DocFlavor ("текст/HTML; charset=utf-16", "java.io. InputStream");
Используйте предопределенный экземпляр, который представляет этот тип DocFlavor:DocFlavor. INPUT_STREAM TEXT_HTML_UTF_16. API Службы печати Java обеспечивает ряд предопределенных экземпляров для общих разновидностей документа как удобство.
Поскольку страница HTML содержит текстовые данные, Строка типа MIME включает текстовое кодирование, которое находится charset=utf-16 в этом примере. Клиент ответственен за точное описание данных печати к службе печати. Раздел, Отформатированные клиентом Данные Печати, объясняет, как должным образом создать DocFlavor, чтобы выполнить это. Если текстовое кодирование не включается в тип MIME, неожиданные результаты могут произойти, как объяснено в разделе, Важности Кодировки символов. Клиент может позволить службе определять формат данных, которыми клиент снабжает как объект Java. Отформатированный службой раздел Данных Печати описывает использование DocFlavor, чтобы представить отформатированные службой данные печати.
Сохраните в mand, что, только потому что у API DocFlavor есть предварительно объявленная разновидность документа, это не означает, что реализация определенной разновидности доступна. Например, даже если Вы будете использовать предопределенный DocFlavor, представляющий текст HTML в UTF-16, то Вы не будете в состоянии напечатать HTML, если у Вас не будет службы печати, которая поддерживает HTML печати. Снова, это - обязанность пользователя гарантировать, что принтер поддерживает определенный формат.