Module  java.desktop
软件包  javax.print

Interface Doc

  • 所有已知实现类:
    SimpleDoc


    public interface Doc
    Interface Doc指定为打印作业提供一张打印数据的对象的界面。 “Doc”是一个简短易懂的术语,意思是“一张打印数据”。 客户端将打印作业传递给实现接口Doc的对象,并且打印作业调用该对象上的方法以获取打印数据。 Doc界面允许打印作业:
    • 确定打印数据可用的格式或“doc flavor”(类别DocFlavor )。 doc文件指定打印数据格式(MIME类型)和打印数据来自的对象的表示类。
    • 获取打印数据表示对象,它是doc flavor表示类的一个实例。 打印作业然后可以从表示对象获取实际的打印数据。
    • 获取指定文档的其他特征的打印属性,或指定要应用于文档的处理指令。 打印属性在包装javax.print.attribute中定义。 该文档返回存储在javax.print.attribute.DocAttributeSet中的打印属性。

    在每次调用该方法时,允许始终在界面Doc的实现中的每个方法返回相同的对象。 这对打印作业或打印数据表示对象在打电话获取打印数据时消耗打印数据(例如作为流的打印数据表示对象)的文档对象的其他调用者有影响。 一旦打印作业调用了getPrintData()并获得流,任何进一步的调用getPrintData()将返回与读取可能已经在进行的相同的流对象,而不是从头开始重新读取打印数据的新流对象。 指定文档对象以这种方式行事简化了doc对象的实现,并且是有理由的,因为特定的文档仅将打印数据传送到一个打印作业,而不是将数据传送到几个不同的打印作业。 (要将相同的打印数据传送到几个不同的打印作业,您必须在同一打印数据源之上创建多个不同的文档对象。)

    Interface Doc提供了相当的实现灵活性。 当构建文档对象时,打印数据可能已经存在。 在这种情况下,文档方法返回的对象可以提供给文档的构造函数,提前存储在文档中,并在调用时简单地返回。 或者,当构建文档对象时,打印数据可能不存在。 在这种情况下,文档对象可能只提供打印作业调用打印数据表示对象(和/或打印数据)(打印作业调用getPrintData()方法时)的“惰性”实现。

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

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

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


    • 方法详细信息

      • getDocFlavor

        DocFlavor getDocFlavor​()
        确定此文档对象将提供其打印数据的文档风格。
        结果
        Doc味道。
      • getPrintData

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

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

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

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