我收到一条例外消息“没有安装打印机”。同时为我们网站的解密版本打印报告
我使用_rptDocument.PrintToPrinter(1, false, 0, 0);
打印报告。
我遇到了这个例外,即使我的机器上安装了多台打印机。 此外,我在开发过程中没有得到那个例外,在开发过程中一切都很顺利。
我使用“发布网站”和“网站项目部署”选项来发布/部署网站,但我得到了相同的结果。
有什么建议吗?
修改
示例代码
DataSet dsResult = null;
rptDocument = new ReportDocument();
rptDocument.Load(Server.MapPath("WINGR0040.rpt"));
// Fetch report data.
...
rptDocument.SetDataSource(dsResult);
// Print report.
rptDocument.PrintToPrinter(1, false, 0, 0);
答案 0 :(得分:0)
您是否在网站上运行的用户帐户下的Web服务器上添加了打印机?
您是否尝试过先设置打印机名称?
Report.PrintOptions.PrinterName = printerName;
如果您的网站在DOMAIN \ WebService等帐户下运行,则需要确保此用户帐户具有默认打印机。
您也可以尝试设置打印机名称:
Report.PrintOptions.PrinterName = this.printDocument1.PrinterSettings.PrinterName;
这将获得默认打印机。
这article可以帮助您实现这一目标。
编辑:
关于MSDN的这篇文章介绍了如何使用Crystal Reports和ASP.NET实现打印。如果您没有实施这些解决方案,那么我认为您无法打印客户端。
MSDN链接中提到的.cab文件可在此处找到:
Visual Studio 2005 要么 Visual Studio 2008
如果您没有发布更多代码以及有关如何生成报告的详细信息,我将无法完全回答您的问题。
由于
答案 1 :(得分:0)
我真的会将报告导出为PDF,以便用户在桌面打印机上打印。但是,也许在iis服务器上停止了后台打印程序服务,因此混淆了它。
答案 2 :(得分:-1)
我找不到客户端打印的方法。
服务器端如何对我有用:
在Page_Load上我得到了这个:foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
{
DropDownList1.Items.Add(printer);
}
现在点击button_click:
var dsTela = (DataSet)Session["dsTela"];
var cr = new ReportDocument();
var rpt = Request.QueryString["nomeRel"];
cr.Load(Server.MapPath("~/Crystal/" + rpt));
//----------Crystal Reports---------------//
// carrega o reltório
cr.SetDataSource(dsTela);
System.Drawing.Printing.PrinterSettings printerSettings = new System.Drawing.Printing.PrinterSettings();
printerSettings.PrinterName = DropDownList1.SelectedValue;
cr.PrintToPrinter(printerSettings, new PageSettings(), false);
//这个适用于我
如果您的打印机没有在服务器端显示,请尝试以下方法:
资料来源:(https://support2.microsoft.com/default.aspx?scid=kb;en-us;184291)
要使IIS能够使用SYSTEM帐户枚举网络打印机,请执行以下步骤。
注意如果进程在网络服务帐户下运行,则需要对新创建的注册表具有显式权限。