作为持续需求的一部分,我们正在将使用Visual Basic 6构建的传统windows窗体应用程序迁移到使用Visual Studio 2008的。net框架3/3.5。这里有一个要求:获取打印机列表。打印机位于网络上的远程位置。如果用户选择一台打印机,系统应该能够将水晶报告打印到该特定的打印机。我正在使用水晶报表查看器预览报表,但是一旦我在水晶报表查看器中调用报表,报表也应该发送到网络上打印机的下拉列表中选择的打印机。我将如何能够打印到网络上的远程打印机?作为要求的一部分,我使用c#和vs 2008来实现这一点。
我做的是:
- 通过数据库查找,XML文件或其他方式手动管理网络打印机名称列表(serverprinter1, serverprinter2等)。
- 在客户端页面上,为打印机渲染下拉菜单,并添加"打印"按钮。
- 直接在这些控制下,呈现一个水晶查看器没有标准的打印/导出选项。
- 当客户端提交表单/页面时,根据下拉打印机ID进行服务器端打印。
服务器端打印有两种选择:使用IIS下运行的免费Crystal运行时。
-
旧的,已弃用的方式:
reportDocument.PrintToPrinter({printer settings}, {page settings}, {reformat})
。您在{打印机设置}中传递了打印机名称。 -
首选方式:
printOutputController.PrintReport({print options})
注意:方法2中的打印机名称是区分大小写的,必须安装它,以便在System.Drawing.PrinterSettings.InstalledPrinters()
中显示运行. net进程的用户