为什么使用相同的页码多次调用java Printable的print方法?

den*_*lor 11 java printing

来自sun的文档

"在移动到下一页之前,打印系统可能会要求多次渲染页面."

示例总是显示如下:

Printable print(Graphics g, PageFormat pageFormat, int page) {
    if (page == 0)
      do...
    else if(page == blah...)
}
Run Code Online (Sandbox Code Playgroud)

如果您遵循此模式,您的代码通常可以正常工作,因为它是基于页码显式的.不遵循这种模式给我带来了巨大的痛苦,直到我意识到它被多次调用相同的页码并开始缓存页面.

为什么使用相同的页码多次调用java Printable的print方法?

Zoo*_*ork 13

Java打印系统受底层OS打印系统的支配,并且该系统可以请求多次呈现单个页面.

一个原因是带状打印 - 如果打印机没有足够的内存来一次呈现整个页面 - 在这种情况下,操作系统将再次向Java请求页面,以便它可以打印带状页面("带") ).这是Java 2D程序员指南中" 打印概念 " 一节中提到的特定情况.

可能还有其他原因; 它真的取决于操作系统的打印系统.