将所有打印作业另存为PDF

时间:2011-12-01 16:32:25

标签: c# pdf printing automation pdf-generation

目标

我工作的公司目前使用黑匣子运输系统。每天早上我们的运输经理都会打印出他的司机的运费单。使用C#,我想保存以PDF格式打印的每张票证的副本。保存到PDF的操作应该在幕后完成。

注意:PDF副本将是硬拷贝的补充,但是,我想在打印硬拷贝时生成PDF副本(或者如果我可以使用保存后直接生成PDF副本)打印工作)。

结束结果:经理打印一份硬拷贝,PDF会保存到存档文件夹,而不会与管理员进行任何互动。

我尝试过什么

打印后我已指示打印机“保留打印文档”。这会在打印假脱机文件夹中留下.shd和.spl文件。我已经尝试了PrintDocument类,但是我找不到任何方法来指示作业使用完成的打印作业重新打印(到PDF驱动程序)。

问题

我想要完成的是什么?

进一步澄清

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

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

4 个答案:

答案 0 :(得分:3)

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

还有其他类似软件,请参阅here

答案 1 :(得分:2)

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

使用提供自动文件命名的PDF打印机软件,如下所示:

PDF Desk

Cute PDF

并告诉经理只使用该PDF打印机打印票据。

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

以下是一些教程,介绍如何在c#中打印PDF文件:

Print existing PDF (or other files) in C#

Printing PDF documents in C#

答案 2 :(得分:1)

将正在发送的内容发送到打印机可能非常棘手。

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

将其配置为输出到特定目录,然后编写Windows服务以监控目录并自动将PDF文件发送到物理打印机并将文件存档到网络文件夹。

[并从他的电脑中删除打印机驱动程序,以便他无法绕过您的新系统]

答案 3 :(得分:0)

向纸质打印机发出两个打印命令...一个到PDF打印机。