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

原文 标签 java printing

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

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

我不愿意创建两个单独的打印作业,因为我的使用场景是批量打印,比如说1000个文档。每个文档都有一些页面进入纸盘1,有些页面进入纸盘2。
如果必须在每个纸盘开关上创建一个新的打印作业,最终将导致数千个单独的打印作业,并且我担心所有类型的打印后台处理程序都将超支并且系统崩溃。因此,我更喜欢以某种方式将那些“纸盘开关”偷偷地放入一份印刷工作中。

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

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

但是,在Java 1.6中,似乎只有一个StreamPrintService,它只能输出后记。
因此:有没有办法从本地打印机驱动程序捕获原始的本地输出(使用Java)?对您来说,连接该输出并将其发送到打印机以解决我的问题似乎可行吗?

我也很高兴也只对部分问题发表评论。

最佳答案

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

我创建了两个后记文件,每个后记文件都是从不同的纸盘打印的,然后将它们的串联发送到打印机。它的工作:-)!我关闭打印机以确认只有一个打印作业,然后在那些纸盘的纸张上写了一些数字。因此,我想我可以肯定,这不仅是一厢情愿的想法;-)。

但是,我认为我不会深入探讨这个主题,因为


我不是印刷专家,我对此方法是否适用感到怀疑。
对于我们的客户而言,目前这一切都是一件好事,因此不会有预算来进一步研究这个小想法可以在何种情况下起作用

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

相关文章:

java - 使用结构/类来增加缓存的空间局部性?

java - 在 IntelliJ 中但不在命令行上运行 JUnit 5 测试时出错

c - GTK设置默认打印机

java - sleep 时线程中断

java - Android Studio Java类有一个下拉列表

css - 网站 Logo 未出现在打印样式表上

javascript - jQuery将textarea值复制到div中以进行打印

c++ - 一个简单的 cout 语句打印,一个变量打印,一个 for 循环不会打印

javascript:直接发送 base64string 进行打印,无需预览

java - 为什么我的Java猜谜游戏在第一次循环后无法正常工作