java - 如何使用 Java 在一项打印作业中将多页打印到不同的纸盘?

标签 java printing

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

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

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

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

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

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

我很高兴,也能评论仅涉及问题的一部分。

最佳答案

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

我创建了两个 postscript 文件,每个文件都从不同的纸盘打印,然后将它们串联发送到打印机。它起作用了:-)!我关闭打印机以验证是否只有一项打印作业,并在这些托盘中的纸张上写了一些数字。所以我想我可以确定这不仅仅是一厢情愿;-)。

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

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

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

关于java - 如何使用 Java 在一项打印作业中将多页打印到不同的纸盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7930619/

相关文章:

java - 抛出 HttpStatus.UNAUTHORIZED 的 Spring Controller 会触发 500 Http 错误而不是 401

java - ORA-00904 : : invalid identifier Issue with Hibernate Dependent objects program

android - 使用蓝牙打印机从 Android 应用程序打印数据

java - 如何获取原始打印机托盘 ID

vb.net - 获取打印计数器 VB.net

java - 该解决方案的不同设计模式

java - 创建一副牌时出现编译错误

java - ConcurrentHashMap 的迭代器给出奇怪的结果

html - 打印页面时显示背景颜色

java - 用excel和java或其他打印