0

我收到一条异常消息“未安装打印机”。在为我们网站的发布发布打印报告时。
_rptDocument.PrintToPrinter(1, false, 0, 0);用来打印报告。

我得到了那个例外,即使我的机器上安装了不止一台打印机。另外,我在开发过程中没有遇到那个异常,开发过程中的一切都很好。

我使用“发布网站”和“Web 项目部署”选项来发布/部署网站,但得到了相同的结果。

有什么建议么?

编辑

示例代码

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);
4

3 回答 3

0

您是否在站点运行所用的用户帐户下在 Web 服务器上添加了打印机?

您是否尝试过先设置打印机名称?

Report.PrintOptions.PrinterName = printerName;

如果您的站点在 DOMAIN\WebService 等帐户下运行,您需要确保该用户帐户具有默认打印机。

您也可以尝试像这样设置打印机名称:

Report.PrintOptions.PrinterName = this.printDocument1.PrinterSettings.PrinterName;

这将获得默认打印机。

本文可能会帮助您完成这项工作。

编辑:

MSDN上的这篇文章介绍了如何使用 Crystal Reports 和 ASP.NET 实现打印。如果您没有实施这些解决方案中的任何一个,那么我认为您将无法打印客户端。

MSDN链接中提到的 .cab 文件可以在这里找到:

Visual Studio 2005Visual Studio 2008

如果没有您发布更多代码和有关如何生成报告的更多详细信息,我将无法完全回答您的问题。

谢谢

于 2010-06-07T10:56:57.927 回答
0

我真的会将报告导出为 PDF,以便用户在他们的桌面打印机上打印。但是,也许 iis 服务器上的 Print Spooler 服务已停止,因此感到困惑。

于 2010-06-11T05:29:58.633 回答
-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\Printers\Connections
  4. 在注册表菜单上,单击导出注册表文件。
  5. 在“文件名”框中,键入 c:\printconns.reg。
  6. 要在记事本中打开 printconns.reg 文件,请单击开始,单击运行,在打开框中键入记事本 printconns.reg,然后单击确定。
  7. 将文本 HKEY_CURRENT_USER 替换为文本 HKEY_USERS.DEFAULT。
  8. 保存文件。
  9. 要将文件导入注册表,请在 Windows 资源管理器中双击该文件。
  10. 重新启动后台打印程序服务。
于 2015-07-08T18:25:49.107 回答