模块  java.desktop
软件包  javax.print

Interface Doc

  • 所有已知实现类:
    SimpleDoc

    public interface Doc
    接口Doc指定为打印作业提供一条打印数据的对象的接口。 “Doc”是一个简短易懂的术语,意思是“一段打印数据”。 客户端将实现接口Doc的对象传递给Print Job,并且Print Job调用该对象上的方法以获取打印数据。 Doc界面允许打印作业:
    • 确定打印数据可用的格式或“doc flavor”(类DocFlavor )。 doc flavor指定打印数据格式(MIME类型)和打印数据所来自的对象的表示类。
    • 获取打印数据表示对象,该对象是doc flavor的表示类的实例。 然后,打印作业可以从表示对象获得实际打印数据。
    • 获取指定doc的其他特征或指定要应用于doc的处理指令的打印属性。 打印属性在包javax.print.attribute中定义。 doc返回其存储在javax.print.attribute.DocAttributeSet中的打印属性。
    允许接口Doc的实现中的每个方法始终在每次调用方法时返回相同的对象。 这对于打印作业或doc对象的其他调用者有影响,其打印数据表示对象在调用者获得打印数据时“消耗”打印数据,例如作为流的打印数据表示对象。 一旦打印作业调用了getPrintData()并获得了流,对getPrintData()任何进一步调用将返回可能已在进行读取的相同流对象,而不是将从头开始重新读取打印数据的新流对象。 指定doc对象以此方式运行简化了doc对象的实现,并且理由是特定doc旨在将打印数据仅传送到一个打印作业,而不是几个不同的打印作业。 (要将相同的打印数据传送到多个不同的打印作业,您必须在同一打印数据源之上创建多个不同的doc对象。)

    接口Doc提供了相当大的实现灵活性。 构造doc对象时,打印数据可能已经存在。 在这种情况下,doc方法返回的对象可以提供给doc的构造函数,提前存储在doc中,并在调用时简单地返回。 或者,在构造doc对象时,打印数据可能尚不存在。 在这种情况下,doc对象可能提供“惰性”实现,仅在Print Job调用它时(当Print Job调用getPrintData()方法时)生成打印数据表示对象(和/或打印数据)。

    对可能同时访问同一文档的客户端线程数没有限制。 因此,接口Doc所有实现必须被设计为多线程安全的。

    但是,从Doc获得的打印数据只能有一个消费者。

    如果通过调用DocgetReaderForText()getStreamForBytes()方法从客户端获取打印数据,或者因为打印数据源已经是InputStreamReader ,则打印服务应始终在所有作业上为客户端关闭这些流完成条件。 有以下警告。 如果打印数据本身是流,则服务将始终关闭它。 如果打印数据是可以作为流请求的东西,则服务将仅在流终止之前获得流时关闭流。 也就是说,仅仅因为打印服务可能会像流一样请求数据并不意味着它将会产生影响,因为依赖于服务关闭它们的Doc实现者应该仅在响应来自服务的请求时创建这样的流。

    • 方法详细信息

      • getDocFlavor

        DocFlavor getDocFlavor()
        确定此doc对象将提供其打印数据的doc flavor。
        结果
        doc味道
      • getPrintData

        Object getPrintData()
                     throws IOException
        获取包含此doc对象的打印数据的打印数据表示对象,其格式与支持的doc flavor相对应。 getPrintData()方法返回表示类的实例,其名称由getDocFlavor()给出。 getRepresentationClassName() ,并且返回值可以从类Object转换为该表示类。
        结果
        打印数据表示对象
        异常
        IOException - 如果表示类是流,并且在构造流时出现I / O错误
      • getAttributes

        DocAttributeSet getAttributes()
        获取此doc对象的打印属性集。 如果返回的属性集包含特定属性X的实例则打印机必须使用该doc的该属性值,从而覆盖作业属性集中属性X的任何值。 如果返回的属性集不包含特定属性X的实例或者返回null ,则打印机必须查询作业的属性集以获取属性X的值如果没有找到,则打印机必须使用实现 -从属默认值。 返回的属性集是不可修改的。
        结果
        此doc的不可修改的打印属性集,或 null从作业的属性集中获取所有属性值
      • getReaderForText

        Reader getReaderForText()
                         throws IOException
        获得一个读取器,用于从该doc中提取字符打印数据。 如果DocFlavor具有以下打印数据表示类之一,则需要Doc实现来支持此方法,否则返回null
        • 炭[]
        • java.lang.String中
        • java.io.Reader中
        doc的打印数据表示对象用于构造和返回Reader用于从打印数据表示对象读取作为字符流的打印数据。 但是,如果打印数据表示对象本身是Reader ,则简单地返回打印数据表示对象。
        结果
        阅读器用于从此doc中读取打印数据字符。 如果由于此doc不符合上述标准而无法提供读者,则返回null
        异常
        IOException - 如果在创建阅读器时出现I / O错误
      • getStreamForBytes

        InputStream getStreamForBytes()
                               throws IOException
        获取用于从此doc提取字节打印数据的输入流。 如果DocFlavor具有以下打印数据表示类之一,则需要Doc实现来支持此方法,否则返回null
        • 字节[]
        • 的java.io.InputStream
        获得该doc的打印数据表示对象,然后创建并返回用于从打印数据表示对象读取打印数据作为字节流的输入流。 但是,如果打印数据表示对象本身是输入流,则简单地返回打印数据表示对象。
        结果
        用于从此doc读取打印数据字节的输入流。 如果由于此doc不符合上述条件而无法提供输入流,则返回null
        异常
        IOException - 如果在创建输入流时出现I / O错误