打印水晶报告时出错,并显示“未安装打印机”的异常消息

时间:2010-04-12 08:45:07

标签: asp.net deployment crystal-reports web-deployment-project

我收到一条例外消息“没有安装打印机”。同时为我们网站的解密版本打印报告 我使用_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);

3 个答案:

答案 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帐户枚举网络打印机,请执行以下步骤。

注意如果进程在网络服务帐户下运行,则需要对新创建的注册表具有显式权限。

  1. 确保您当前以安装了所需网络打印机的用户身份登录服务器。
  2. 启动注册表编辑器。
  3. 单击以下键: HKEY_CURRENT_USER \打印机\连接
  4. 在“注册表”菜单上,单击“导出注册表文件”。
  5. 在“文件名”框中,键入c:\ printconns.reg。
  6. 要在记事本中打开printconns.reg文件,请单击“开始”,单击“运行”,在“打开”框中键入Notepad printconns.reg,然后单击“确定”。
  7. 将文本HKEY_CURRENT_USER替换为文本HKEY_USERS.DEFAULT。
  8. 保存文件。
  9. 要将文件导入注册表,请在Windows资源管理器中双击该文件。
  10. 重新启动Print Spooler服务。