从嵌入在ASP.NET页面中的Windows Control打印

时间:2010-03-10 16:00:54

标签: asp.net security

我正在开发一个需要以下功能的应用程序:用户单击网页上的按钮,这会导致打印文档而无需任何其他用户干预。

我用来提供此功能的方法是在网页中嵌入Windows控件(使用Windows控件库)。 (这里有一个关于这样做的教程。)我学习了类似的教程,正确创建并显示了Windows Control。

下一步是尝试实际打印。我首先测试了打印代码是一个独立的应用程序,以确保它正常运行。确实如此。我为那些感兴趣的人提供了该代码的简化版本(见下文)。

代码被激活的具体方式是:这一行代码,.Attributes.Add(“OnClick”,“myPrintFunction();”)出现在Page_Load中,用于将JavaScript函数与按钮相关联。这个JavaScript函数非常简单:

    function myPrintFunction() {
        var winCtrl = document.getElementById("MyWinControl");
        winCtrl.doMyPrintFunction();
    }

问题是:代码抛出以下错误:

mscorlib:请求获得类型'System.Drawing.Printing.PrintingPermission,System.Drawing,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的权限失败。

我需要更改哪些权限才能使其正常工作?我找到的一个网页似乎暗示设置Trust = Full可能有所帮助,但不清楚a)这是否有用,或者b)如何做到这一点。

感谢您的帮助!

打印代码:

Public Class MyWinControl
    Public Sub doMyPrintFunction()
        Dim prtMyDoc As PrintDocument = printerSetup()
        If (Not prtMyDoc Is Nothing) Then prtMyDoc.Print()
    End Sub

    Private Function printerSetup() As PrintDocument
        Dim prtMyDoc As New PrintDocument
        AddHandler prtMyDoc.PrintPage, AddressOf prtMyDoc_PrintPage
        prtMyDoc.PrinterSettings.PrinterName = "<my default printer>"
        Return prtMyDoc
    End Function

    Private Sub prtMyDoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
        ' use graphics native call to build up page to be printed
        ' it is accessed via e.Graphics
    End Sub
End Class

1 个答案:

答案 0 :(得分:0)

你在这里咆哮着错误的树。除非用户中的每一个都具有相同的设置,否则这对用户的一小部分永远不会起作用。使用javascript的打印支持来打印网页,并允许用户对其进行一些控制。还有更多,你只是没有得到整个“基于网络的应用程序”的想法。

如果您需要一些严格的格式或想要打印Word文档或PDF等内容,您只需将文件推送给用户并允许他们自己处理/打印。