在C#中从服务器打印RDLC报告

时间:2013-12-10 17:44:12

标签: c# asp.net printing rdlc

我正在创建一个RDLC报告并从ASP.Net打印它。当我在本地机器上尝试这个时它工作正常。但是在服务器中部署时,打印机设置无效。

//代码

 if (m_streams == null || m_streams.Count == 0)
            throw new Exception("Error: no stream to print.");

        PrintDocument printDoc = new PrintDocument();

       // printDoc.PrinterSettings.PrinterName = "HP LaserJet 3055 PCL5";

        if (!printDoc.PrinterSettings.IsValid)
        {
            throw new Exception("Error: cannot find the default printer.");
        }
        else
        {
            printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
            m_currentPageIndex = 0;
            printDoc.Print();
        }

从上面的代码中,它抛出了一个异常“无法找到默认打印机”。试图添加客户端计算机中存在但仍然无效的打印机名称。

我需要在客户端计算机上打印报告。

不知道在哪里改变。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

我相信你正在做一些你不应该做的事情。

如果您有一个ASP.NET网站,该网站上有一个RDLC报告。如果我访问该报告,我想在我的机器上打印,而不是在服务器中打印。您确定要使服务器打印报告吗?客户端/浏览器不应该发出打印命令吗?

如果您的服务器位于数据中心,我在家,那么打印应该在哪里?除非您想在服务器中打印(例如,邮件合并贴纸)。

答案 1 :(得分:0)

据我所知,无法访问客户端的打印机设置。您正在做的是访问服务器打印机,如果我是对的,则不会安装。

您可以通过在javascript中调用window.print()来打印访问浏览器/ javascript功能,因为浏览器正在运行客户端并且可以访问打印机。但直接访问客户端系统资源将是一个巨大的安全漏洞。

也许有一个模糊的解决方法/黑客,但这将是一个糟糕的解决方案