2013-03-03 92 views
0

我们正在使用Visual Studio 2008将使用Visual Basic 6构建的传统Windows窗体应用程序迁移到.NET Framework 3/3.5中,作为持续需求的一部分。 有一个要求:获取打印机列表。打印机存在于网络上的远程位置。如果用户选择打印机,则系统应该能够将水晶报告打印到该特定打印机。我使用水晶报表查看器预览报表,但一旦我在水晶报表查看器中调用报表,还应该将报表发送到网络上打印机下拉列表中选择的打印机。我如何能够打印到网络上的远程打印机?我使用c#和vs 2008来实现这一点,作为req的一部分。调用报告后在远程打印机上打印

回答

0

我所做的是:

  • 手动管理的网络打印机名称的列表(\服务器\ PRINTER1,\服务器\ PRINTER2等),通过数据库查询,XML文件,或什么的。
  • 在客户端页面上,呈现打印机的下拉列表并添加一个“打印”按钮。
  • 直接在这些控件下面,渲染没有标准打印/导出选项的Crystal Viewer。
  • 当客户端提交表单/页面时,根据下拉打印机ID进行服务器端打印。

对于使用在IIS下运行的免费Crystal运行时的服务器端打印,您有2个选项。

  1. 旧的,不推荐的方式:reportDocument.PrintToPrinter({printer settings}, {page settings}, {reformat})。您在{打印机设置}中传递打印机名称。

  2. 的首选方法:printOutputController.PrintReport({print options})

注意:打印机名称是大小写敏感的在方法2中,并且必须将其安装使得其在System.Drawing.PrinterSettings.InstalledPrinters()为用户显示出来运行.NET过程。