【发布时间】:2011-12-17 08:29:25
【问题描述】:
使用 Java 打印时,可以选择介质托盘(在 PrintRequestAttributeSet 内)。然后可以将此设置传递给打印作业,并将文档打印到给定的托盘。
我现在的问题是:我能否以某种方式指定第一页打印到一个纸盘,第二页打印到另一个纸盘在一个打印作业中?
我不愿意创建两个单独的打印作业,因为我的使用场景是批量打印,比如 1000 个文档。每个文档都有一些页面进入纸盘 1,一些页面进入纸盘 2。 如果我必须在每个托盘开关上创建一个新的打印作业,我最终会得到数千个单独的打印作业,并且我担心各种打印后台处理程序溢出和系统崩溃。因此,我更喜欢以某种方式将这些“托盘开关”偷偷放入一个打印作业中。
我很确定它可以以某种方式完成,但到目前为止还没有成功。
我曾考虑过创建数千个 PrinterJobs,但让它们打印到 StreamPrintService(而不是实际的打印服务),从而捕获托盘的开关以及实际的打印数据。然后我打算将这些单一“虚拟”打印的结果连接起来,并在一个真实打印作业中将它们全部发送到真实打印机。
但是java 1.6好像只有一个StreamPrintService,只能输出postscript。 那么:有没有办法从本地打印机驱动程序(使用 java)捕获原始的 native 输出?为了解决我的问题,连接该输出并将其发送到打印机对您来说是否可行?
我会很高兴,关于 cmets 仅涉及部分问题..
【问题讨论】:
-
是什么让您“非常确定”这是可能的?坦率地说,我认为这不会奏效。