将所有打印作业保存为PDF

本文关键字:保存 PDF 作业 打印 | 更新日期: 2023-09-27 18:16:27

The Goal

我工作的公司目前使用黑箱运输系统。每天早上,我们的货运经理都会为他的司机打印出船票。使用c#,我想保存打印为PDF格式的每张票的副本。保存为PDF的操作应该在后台完成。

: PDF副本将在硬拷贝之外生成,但是,我希望在打印硬拷贝时生成PDF副本(或者直接在我可以使用保存的打印作业之后)。

最终结果:经理打印一份硬拷贝,PDF被保存到存档文件夹,而不需要与经理进行任何交互。

What I've try

我已经指示打印机打印后"保留打印的文件"。这将在print spool文件夹中留下一个.shd和一个.spl文件。我已经尝试过PrintDocument类,但是我找不到使用已完成的打印作业指示作业重新打印(到PDF驱动程序)的方法。

我想要完成的是可能的吗?

进一步澄清

:

如果不清楚,我希望管理器将文档第二次打印到PDF打印驱动程序。平均而言,他每天早上必须打印60张票,才能让司机出门。我不想把这个数字增加到120并且强迫他输入文件名。

此外,"黑匣子"运输系统包括运行我们制造工厂其他部分的其他模块-更改软件不是选项。

将所有打印作业保存为PDF

我建议您使用现有的解决方案来解决此类问题:使用可以安装虚拟打印机的软件,在您需要的打印机上打印文档。PrintDistributor就是这样一款软件。我没有使用这个软件的任何经验,但是名为"虚拟打印机"的屏幕截图看起来很有希望:第二台打印机名为"打印并保存"。

还有其他类似的软件,请看这里

根据您不想强迫他输入文件名的目标,您应该这样做:

使用提供自动文件命名的PDF Printer软件,如:

PDF的桌子

可爱PDF

告诉经理用PDF打印机打印票。

然后,编写一个c#或vb.net应用程序。使用FileSystemWatcher来检测是否在pdf目录中创建了新文件。当创建一个新的PDF文件时,打印它。

这里有一些教程,解释了如何用c#打印PDF文件:

用c#打印现有的PDF(或其他文件)

用c#打印PDF文档

捕捉发送给打印机的东西是非常棘手的。

一个更简单的方法是使用一个软件来设置一个"pdf打印机",比如:http://www.bullzip.com/products/pdf/info.php

将其配置为输出到特定目录,然后编写一个windows服务来监视该目录,并自动将PDF文件发送到物理打印机并将文件归档到网络文件夹。

[并从他的电脑上删除打印机驱动程序,这样他就不能绕过你的新系统]

发出两个打印命令…一个给纸质打印机,一个给PDF打印机。