我正在创建一个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();
}
从上面的代码中,它抛出了一个异常“无法找到默认打印机”。试图添加客户端计算机中存在但仍然无效的打印机名称。
我需要在客户端计算机上打印报告。
不知道在哪里改变。有什么帮助吗?
答案 0 :(得分:0)
我相信你正在做一些你不应该做的事情。
如果您有一个ASP.NET网站,该网站上有一个RDLC报告。如果我访问该报告,我想在我的机器上打印,而不是在服务器中打印。您确定要使服务器打印报告吗?客户端/浏览器不应该发出打印命令吗?
如果您的服务器位于数据中心,我在家,那么打印应该在哪里?除非您想在服务器中打印(例如,邮件合并贴纸)。
答案 1 :(得分:0)
据我所知,无法访问客户端的打印机设置。您正在做的是访问服务器打印机,如果我是对的,则不会安装。
您可以通过在javascript中调用window.print()
来打印访问浏览器/ javascript功能,因为浏览器正在运行客户端并且可以访问打印机。但直接访问客户端系统资源将是一个巨大的安全漏洞。
也许有一个模糊的解决方法/黑客,但这将是一个糟糕的解决方案