在ASP.NET页面中控制打印

时间:2011-04-08 20:16:57

标签: c# asp.net printing

我需要创建一个打印支票的Web应用程序。由于程序的性质,它需要非常安全,并且需要记录每个操作。我需要能够生成支票,打印支票,如果需要允许重印等等。

我已完成检查的生成。我决定制作一个PDF(这样我就不会得到任何浏览器页眉/页脚垃圾)。我想做的是甚至不将PDF保存到文件中,而是将数据直接发送到打印机。基本上,我希望用户输入支票金额,选择要打印的帐户,然后单击一个按钮,将该支票的数据直接发送到打印机。我甚至不希望用户能够查看要打印的PDF文件。

有没有人在ASP.NET中做过类似的事情?

感谢。

[编辑]

我问过的原始问题是用ActiveX控件回答的。然而,我决定采用不同的方式。我没有打印PDF,而是决定创建支票背景的图像。然后我将使用该图像(.jpg),并使用System.Drawing.Graphics并在我的X,Y坐标和字体首选项中放置相应的文本(MICR行,数量,检查日期等)来操作它。 D B。从那里,我可以使用System.Drawing.Printing命名空间从Web服务器将新的.jpg文件发送到网络打印机,从而无需使用activeX控件并进一步加强安全性,因为完成检查的新图像永远不会已保存,用户永远无法访问支票的叠加层。

感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

如果你看一下邮政服务如何解决这个问题,你会发现一个简单的网络应用程序不会这样做。要控制项目发送到打印机的方式和时间,可以使用ActiveX组件或Java软件。

[编辑]

小澄清:我认为软件必须在客户端运行,而不是建议的服务器端建议。

如果您想要使用.NET路由,那么您可以使用托管C ++中的ActiveX或从Web启动的Click-Once应用程序(允许更多.NET语言,但可以反编译和更改)。

答案 1 :(得分:1)

我们已经通过几种方式实现了这种情况。首先,我们有传统的PDF解决方案,服务器生成PDF打印图像,将其返回到浏览器,然后通过PDF插件显示并可选择打印。

其次,我们编写了一个客户端ActiveX组件来处理打印。将输入值传递给后端Web服务,该服务使用FOP将打印格式化为PCL。 PCL被传递回ActiveX组件,然后该组件将PCL直接发送到用户默认打印机。这里不需要PDF。

无论哪种方式都有效,但只有第二种选择 - 需要您实施一些客户端部分 - 才能满足您的所有要求。

答案 2 :(得分:0)

没有办法做到这一点。您只能向用户发送文档,然后用户可以将文档发送到打印机。有一些方法可以提示打印对话框直接弹出,但如果允许您控制在用户计算机上管理数据的方式,则网页会非常不安全。

NKCSS是正确的,它需要在用户的机器上实际安装软件。您可以通过将其设置为提示用户打印的PDF来尽可能多地完成。

如果您将支票设为html,则可以使用样式显示/隐藏仅适用于打印机的内容,如本文所述:here

答案 3 :(得分:0)

没有办法完全安全地完成这项工作。即使您强制PDF直接打印到用户的默认打印机,它本身也可能是像PDFCreator这样的PostScript或PDF打印机。因此,他们最终仍然可以获得可见的PDF。