【问题标题】:How can I print multiple pages to different trays within one print job using Java?如何使用 Java 在一个打印作业中将多页打印到不同的纸盘?
【发布时间】:2011-12-17 08:29:25
【问题描述】:

使用 Java 打印时,可以选择介质托盘(在 PrintRequestAttributeSet 内)。然后可以将此设置传递给打印作业,并将文档打印到给定的托盘。

我现在的问题是:我能否以某种方式指定第一页打印到一个纸盘,第二页打印到另一个纸盘在一个打印作业中

我不愿意创建两个单独的打印作业,因为我的使用场景是批量打印,比如 1000 个文档。每个文档都有一些页面进入纸盘 1,一些页面进入纸盘 2。 如果我必须在每个托盘开关上创建一个新的打印作业,我最终会得到数千个单独的打印作业,并且我担心各种打印后台处理程序溢出和系统崩溃。因此,我更喜欢以某种方式将这些“托盘开关”偷偷放入一个打印作业中。

我很确定它可以以某种方式完成,但到目前为止还没有成功。

我曾考虑过创建数千个 PrinterJobs,但让它们打印到 StreamPrintService(而不是实际的打印服务),从而捕获托盘的开关以及实际的打印数据。然后我打算将这些单一“虚拟”打印的结果连接起来,并在一个真实打印作业中将它们全部发送到真实打印机。

但是java 1.6好像只有一个StreamPrintService,只能输出postscript。 那么:有没有办法从本地打印机驱动程序(使用 java)捕获原始的 native 输出?为了解决我的问题,连接该输出并将其发送到打印机对您来说是否可行?

我会很高兴,关于 cmets 仅涉及部分问题..

【问题讨论】:

  • 是什么让您“非常确定”这是可能的?坦率地说,我认为这不会奏效。

标签: java printing


【解决方案1】:

通过将“Destination”属性添加到打印属性集,可以将打印重定向到本地文件。该文件包含实际打印机驱动程序使用的任何语言的打印作业。 就我而言,我最终得到了 postscript 文件。

我创建了两个 postscript 文件,每个文件从不同的托盘打印,然后将它们的连接发送到打印机。它奏效了:-)!我关闭了打印机以确认只有一个打印作业,并且我在这些托盘的纸上写了一些数字。所以我想我可以肯定这不仅仅是一厢情愿;-)。

不过,我想我不会深入探讨这个话题,因为

  1. 我不是印刷专家,我怀疑这种方法是否适用于所有情况。

  2. 对于我们的客户来说,此时整件事情都是不错的选择,因此没有预算来进一步研究这个小想法的工作环境

    李>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    相关资源
    最近更新 更多