我在 SAP Crystal Reports 14.1.4.1327 中创建了一个非常简单的测试报告(.rpt 文件)。我在页面设置中将页面方向设置为横向。如果我从 Crystal Reports Designer 打印文档,它将以横向方式正确打印。
我需要从 C# 应用程序打印报告。我使用适用于 .Net 13.0.6.1027 的 SAP Crystal Reposrts 运行时引擎
ReportDocument rp = new ReportDocument();
rp.Load(path_to_my_report_file);
rp.PrintOptions.PrinterName = printerName;
rp.PrintOptions.PaperOrientation = PaperOrientation.Landscape;
rp.PrintToPrinter(0, false, 0, 2);
它始终以纵向打印。我不知道为什么它不起作用。
我也尝试过PrintToPrinter(PrinterSettings printerSettings, PageSettings pageSettings, bool reformatReportPageSettings)
方法和我设置
...
System.Drawing.Printing.PrinterSettings printersettings = new System.Drawing.Printing.PrinterSettings();
printersettings.DefaultPageSettings.Landscape = true
...
rp.PrintToPrinter(printersettings, pageSettings, false);
但它也不起作用。
如何横向打印报告?我无法修改打印机驱动程序配置,因此解决方案必须基于 C# 或 .rpt 文件。
===编辑===
我还在另一台打印机(RICOCH)上测试了我的外壳,它可以正确横向打印。我使用ZEBRA ZTC S4M-200dpi ZPL,它打印肖像而不是风景。所以 Zebra 驱动程序可能与 .Net 不完全兼容。
===编辑===
我注意到,如果 PaperSize 设置正确,Zebra 会正确打印报告。所以下面的代码有效:
...
System.Drawing.Printing.PrinterSettings printersettings = new System.Drawing.Printing.PrinterSettings();
printersettings.DefaultPageSettings.Landscape = true
System.Drawing.Printing.PageSettings pageSettings = new System.Drawing.Printing.PageSettings();
...
pageSettings.PaperSize = new System.Drawing.Printing.PaperSize("name", 400, 600);
rp.PrintToPrinter(printersettings, pageSettings, false);
其中 400 是宽度,600 是纵向方向的高度(以百分之一英寸为单位)。因此,C# 应用程序需要从报表中检索页面宽度、页面高度和页面方向。我不知道如何检索这些参数。我问一下here