我想从活动报告打印到网络打印机,但它总是打印到默认打印机而不会引发错误。一旦我尝试使用 .net printdocument 库进行打印,它就会打印到指定的打印机。
我不知道为什么在使用 activereports 时它会打印到默认打印机。
我想从活动报告打印到网络打印机,但它总是打印到默认打印机而不会引发错误。一旦我尝试使用 .net printdocument 库进行打印,它就会打印到指定的打印机。
我不知道为什么在使用 activereports 时它会打印到默认打印机。
设置打印机对象的PrinterName 属性。类似于以下内容:
viewer.Document.Printer.PrinterName = "TheNetworkPrinterName";
viewer.Print();
该PrinterName
属性的值应该是来自 windows 的确切名称。要获取给定系统上的有效打印机名称列表,您可以使用 PrinterSettings.InstalledPrinters 枚举打印机列表。枚举可用打印机的示例在此处的 MSDN 文档中。
如果您尝试某项操作并发现它不起作用,请向我们提供更详细的信息,我们会尽力为您提供帮助。
在最终用户设计器中更改打印机。
Grapecityteam 回答:
对于 SectionReport,您可以在设计器的 LayoutChanged 事件中注入脚本以在加载报表时更改默认打印机,如下所示:
private void OnLayoutChanged(object sender, LayoutChangedArgs e)
{
if (e.Type == LayoutChangeType.ReportLoad || e.Type == LayoutChangeType.ReportClear)
{
reportToolbox.Reorder(reportDesigner);
reportToolbox.EnsureCategories();
reportToolbox.Refresh();
RefreshExportEnabled();
CreateReportExplorer();
splitContainerMiddle.Panel2Collapsed = reportDesigner.ReportType == DesignerReportType.Section;
if (reportDesigner.ReportType == DesignerReportType.Section)
{
string script = string.Empty;
script += "public void ActiveReport_ReportStart()";
script += "{";
script += "rpt.Document.Printer.PrinterSettings.PrinterName = System.Drawing.Printing.PrinterSettings.InstalledPrinters[3];";
script += "}";
(reportDesigner.Report as SectionReport).ScriptLanguage = "C#";
(reportDesigner.Report as SectionReport).Script = script;
}
}
感谢 Grapecity 销售和支持