JavaTM 2 Platform
Standard Ed. 5.0

javax.print
类 DocFlavor

java.lang.Object
  继承者 javax.print.DocFlavor
所有已实现的接口:
Serializable, Cloneable
直接已知子类:
DocFlavor.BYTE_ARRAY, DocFlavor.CHAR_ARRAY, DocFlavor.INPUT_STREAM, DocFlavor.READER, DocFlavor.SERVICE_FORMATTED, DocFlavor.STRING, DocFlavor.URL

public class DocFlavor
extends Object
implements Serializable, Cloneable

DocFlavor 封装了一个对象,该对象指定提供给 DocPrintJob 的打印数据的格式。"Doc" 是一个简短、易于发音的术语,指“部分打印数据”。打印数据格式,即 "doc flavor" 由两方面的内容组成:

DocPrintJob 通过接口 Doc 获得其打印数据。Doc 对象允许 DocPrintJob 来确定客户端可以提供的 doc flavor。Doc 对象还允许 DocPrintJob 获得一个 doc flavor 的表示形式类的实例,然后 DocPrintJob 可从中获得实际的打印数据。


客户端格式化打印数据

有两大类的打印数据:客户端格式的打印数据和服务格式的打印数据。

对于客户端格式的打印数据,客户端确定或知道该打印数据格式。例如,客户端可能有 JPEG 编码的图像、HTML 代码的 URL 或以某种编码形式包含纯文本的磁盘文件(可能从外部源获得),并且需要某种方式向打印服务描述数据格式。

doc flavor 的表示形式类是 JPS DocPrintJob 的一个管道,可从客户端获得字符或 byte 序列。doc flavor 的 MIME 类型是标准的媒体类型之一,通知如何解释字符或 byte 序列。有关标准媒体类型的列表,请参阅 Internet 编号分配机构 (IANA) 的媒介类型目录。接口 Doc 提供两个实用操作:getReaderForTextgetStreamForBytes(),用来帮助 Doc 对象的客户端提取客户端格式的打印数据。

对于客户端格式化打印数据,打印数据表示形式类通常是以下之一(虽然也允许使用其他表示形式类):


默认编码和平台编码

对于其 doc flavor 的 MIME 类型未包括 charset 参数的 byte 打印数据而言,Java 打印服务实例假定默认的字符集是 US-ASCII。这与 RFC 2046 保持一致,它声明默认的字符集是 US-ASCII。注意,US-ASCII 是一个 UTF-8 子集,所以如果未来 RFC 以兼容的方式将 UTF-8 作为默认值,则可能会扩大该字符集。

还要注意,当以文本数据的形式解释 byte 流时,这与 Java 运行时的行为有所不同。这假定了用于用户语言环境的默认编码。因此,当以本地编码形式使用 Java 打印服务后台打印某个文件时,正确指定编码很重要。在英语语言环境中工作的开发人员应该特别注意这一点,因为其平台编码对应于默认的 mime 字符集。在这种纯属巧合的特定情况下,不指定平台数据的编码也可工作。

每个 Java 虚拟机实例都具有在虚拟机启动期间所确定的默认字符编码,并且该默认编码通常取决于基础操作系统使用的语言环境和字符集。在分布式环境中,不保证两个 VM 共享同一默认编码。因此,希望以流的形式将平台编码文本数据从主机平台发送到 Java 打印服务实例的客户端,必须显式地声明字符集,而不能依赖于默认值。

首选的形式是正式的 IANA 编码主名称。以流形式发送文本数据的应用程序应该始终在 mime 类型中指定字符集,这就需要为数据(如文件,以该平台的编码形式存储)获得主机平台的编码形式。可从 DocFlavor.hostEncoding 获得与此对应且适合以 DocFlavor 的 mime 类型所使用的 CharSet。这可能不会总是主 IANA 名称,但是可保证是此 VM 所理解的 CharSet。对于公共的 flavor,可以使用预定义的 *HOST DocFlavor。

有关 Java 平台所支持的字符编码的更多信息,请参阅字符编码


推荐的 DocFlavor

Java Print Service API 未定义任何强制支持的 DocFlavor。但是,对于客户端格式化打印数据,以下是 Java Print Service 实例可以支持的 MIME 类型的示例。类 DocFlavor 内的嵌套类为这些示例 doc flavor 声明了预定义的静态常量 DocFlavor 对象;可使用类 DocFlavor 的构造方法来创建任意的 doc flavor。