从
sun’s documentation
示例总是显示如下:
Printable print(Graphics g,PageFormat pageFormat,int page) { if (page == 0) do... else if(page == blah...) }
如果你遵循这种模式,你的代码通常工作正常,因为它是基于页码显式的.没有遵循这种模式让我很痛苦,直到我意识到它被多次调用相同的页码,并开始缓存页面.
解决方法
Java打印系统受到底层OS打印系统的怜悯,该系统可能会要求多次渲染单页.
一个原因是带状打印 – 如果打印机没有足够的内存来一次渲染整个页面 – 在这种情况下,操作系统将再次向Java请求页面,以便它可以打印页面(“带” ).这是Java 2D程序员指南“Printing Concepts”一节中提到的具体情况.
可能有其他原因;这完全取决于操作系统的打印系统.