Module java.desktop
Package java.awt.print

Interface Printable


public interface Printable
Printable接口由当前页面绘制器的print方法实现,打印系统调用该方法来呈现页面。在构建Pageable时,使用PageFormat实例和实现此接口的实例的配对来描述每个页面。实现Printable的实例被调用来打印页面的图形。

Printable(..)可以设置在PrinterJob上。客户端随后通过调用PrinterJob.print(..)来启动打印,直到所有页面都被打印。它通过调用Printable.print(..)来实现,直到文档中的所有页面都被打印。使用Printable接口时,打印系统会在打印系统请求时承诺在页面内容被请求时对页面的内容进行成像。

Printable.print(..)的参数包括描述页面可打印区域的PageFormat,用于计算适合页面的内容,以及页面索引,指定所请求页面的基于零的打印流索引。

为了正确的打印行为,应遵守以下几点:

  • 打印系统可能会多次请求页面索引。每次都会提供相同的PageFormat参数。
  • 打印系统将以单调递增的方式调用Printable.print(..),尽管如上所述,Printable应该期望多次调用以获取页面索引,并且当客户端通过打印对话框指定页面范围时,页面索引可能会被跳过。
  • 如果请求多个整理副本的文档,且打印机无法原生支持此功能,则文档可能会被成像多次。打印将从最低的打印流页面索引页开始每次复制。
  • 除了为多个整理副本重新成像整个文档之外,递增的页面索引顺序意味着当请求页面N时,如果客户端需要计算页面断点位置,则可以安全地丢弃与页面< N相关的任何状态,并使当前状态为页面N。通常,“状态”只是对应于页面起始位置的文档中计算的位置。
  • 当打印系统调用Printable时,必须检查并遵守提供的PageFormat参数以及页面索引。要绘制的页面的格式由提供的PageFormat指定。因此,页面的大小、方向和可成像区域已经确定,渲染必须在此可成像区域内进行。这是正确打印行为的关键,这意味着客户端有责任跟踪哪些内容属于指定的页面。
  • Printable从客户提供的Pageable中获取时,客户端可以为每个页面索引提供不同的PageFormat。页面断点的计算必须考虑到这一点。
参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    print返回,表示pageIndex太大,请求的页面不存在。
    static final int
    print(Graphics, PageFormat, int)返回,表示请求的页面已呈现。
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    print(Graphics graphics, PageFormat pageFormat, int pageIndex)
    将指定索引处的页面打印到指定格式的Graphics上下文中。
  • Field Details

  • Method Details

    • print

      int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException
      将指定索引处的页面打印到指定格式的Graphics上下文中。一个PrinterJob调用Printable接口来请求将页面呈现到由graphics指定的上下文中。要绘制的页面的格式由pageFormat指定。所请求页面的基于零的索引由pageIndex指定。如果请求的页面不存在,则此方法返回NO_SUCH_PAGE;否则返回PAGE_EXISTS。 Graphics类或子类实现PrinterGraphics接口以提供附加信息。如果Printable对象中止打印作业,则会抛出PrinterException
      参数:
      graphics - 要绘制页面的上下文
      pageFormat - 要绘制的页面的大小和方向
      pageIndex - 要绘制的页面的基于零的索引
      返回:
      如果页面成功呈现,则返回PAGE_EXISTS;如果pageIndex指定了不存在的页面,则返回NO_SUCH_PAGE。
      抛出:
      PrinterException - 打印作业终止时抛出。