public interface Doc
DocFlavor
)。 doc文件指定打印数据格式(MIME类型)和打印数据来自的对象的表示类。 javax.print.attribute
中定义。 该文档返回存储在javax.print.attribute.DocAttributeSet
中的打印属性 。 在每次调用该方法时,允许始终在界面Doc的实现中的每个方法返回相同的对象。 这对打印作业或打印数据表示对象在打电话获取打印数据时消耗打印数据(例如作为流的打印数据表示对象)的文档对象的其他调用者有影响。 一旦打印作业调用了getPrintData()
并获取了流,任何进一步的调用getPrintData()
将返回相同的流对象,读取可能已经在进行中, 而不是从头开始重新读取打印数据的新流对象。 指定文档对象以这种方式行事简化了doc对象的实现,并且是有理由的,因为特定的文档仅将打印数据传送到一个打印作业,而不是将数据传送到几个不同的打印作业。 (要将相同的打印数据传送到几个不同的打印作业,您必须在同一打印数据源之上创建多个不同的文档对象。)
Interface Doc提供了相当的实现灵活性。 当构建文档对象时,打印数据可能已经存在。 在这种情况下,文档方法返回的对象可以提供给文档的构造函数,提前存储在文档中,并在调用时简单地返回。 或者,当构建文档对象时,打印数据可能不存在。 在这种情况下,文档对象可能只提供打印作业调用打印数据表示对象(和/或打印数据)(打印作业调用getPrintData()
方法时)的“ 惰性”实现。
可能同时访问同一文档的客户端线程数量没有限制。 因此,界面Doc的所有实现都必须设计为多线程安全。
但是,只有一个消费者可以从Doc获得打印数据。
如果作为流从客户端获取打印数据,则通过调用Doc的getReaderForText()
或getStreamForBytes()
方法,或者由于打印数据源已经是InputStream或Reader,打印服务应始终在所有作业完成条件下关闭客户端的这些流。 有以下警告。 如果打印数据本身是流,则服务将始终关闭。 如果打印数据是可以作为流被请求的东西,则如果服务在终止之前已经获得流,则该服务将仅关闭该流。 也就是说,只是因为打印服务可能请求数据,因为流并不意味着它将会依赖服务关闭它们的影响,只有响应于服务的请求才能创建这样的流。
Modifier and Type | Method and Description |
---|---|
DocAttributeSet |
getAttributes()
获取此文档对象的打印属性集。
|
DocFlavor |
getDocFlavor()
确定此文档对象将提供其打印数据的文档风格。
|
Object |
getPrintData()
以与支持的文档风格相对应的格式获取包含此文档对象的打印数据的打印数据表示对象。
|
Reader |
getReaderForText()
获取从该文档中提取字符打印数据的读取器。
|
InputStream |
getStreamForBytes()
获取从该文档中提取字节打印数据的输入流。
|
DocFlavor getDocFlavor()
Object getPrintData() throws IOException
getPrintData()
方法返回名称由getDocFlavor()
.getRepresentationClassName()
给出的表示类的实例,返回值可以从类Object转换为该表示类。
IOException
- 如果表示类是流,并在构建流时出现I / O错误,则抛出。
DocAttributeSet getAttributes()
Reader getReaderForText() throws IOException
IOException
- 创建阅读器时发生I / O错误时抛出。
InputStream getStreamForBytes() throws IOException
IOException
- 创建输入流时出现I / O错误时抛出。