拦截打印作业

时间:2011-10-13 12:49:16

标签: printing

我们有一些计算机可以打印文件。当用户打印时,我想拦截打印作业,提示他们输入用户名/密码,以便我可以为他们的帐户充电,然后让打印作业继续进入打印机。

如何实现这一目标?是否可以在.NET中编写这样的实用程序?

1 个答案:

答案 0 :(得分:1)

你真的需要考虑为此创建一个端口监视器。远非简单。你可以看看RedMon。 BTW:许多打印机供应商提供的解决方案使用嵌入打印流(PCL / PS)的代码,并在打印机上收集和保留数据。

例如,Xerox有一种叫做标准会计的东西。在驱动程序中启用时,它会嵌入PJL代码,如下所示:

@PJL COMMENT OID_ATT_ACCOUNTING_INFORMATION_AVP "XRX_USERID,xxxx";

一旦打印完作业,设备就会引用用户,页数等,然后报告。

在工作站/服务器上执行此操作时遇到的问题是检测打印的页数可能很困难。例如,如果您尝试按页面收费,则可以解析文件中的页数,或者通过PCL或PS RIP运行并确定它们是否在页面上有2up或4up的标记而且这项工作是由打印机而不是驱动程序完成的,当客户真正打印1时,您将向客户收取4页费用。这是众多陷阱中的一个。