2011-10-13 121 views
0

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

这是如何实现的?是否有可能在.NET中编写这样的实用程序?

回答

1

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

例如,施乐拥有一项名为标准会计的内容。当在驱动使能它嵌入PJL码是这样的:

@PJL COMMENT OID_ATT_ACCOUNTING_INFORMATION_AVP "XRX_USERID,xxxx"; 

一旦作业已被打印设备参考了用户的,然后可以报告页面等号码。

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

+0

你能详细说一下这些代码吗?或者,请指导我详细解释它们的资源? – NYSystemsAnalyst

+0

在我的回复中添加了更多内容。希望有所帮助。 –