我有一个用 Crystal Rerports 12x8.5 英寸设计的报告。我已将 OKI 3320 打印机驱动程序完全设置为此大小。现在,当我使用 C# 代码打印报表时,页面长度比撕掉位置少半英寸。我必须卷起纸把它撕下来。我们是否可以通过代码更改任何设置以准确到达撕裂位置?
ReportDocument oReportDocument = new ReportDocument();
oReportDocument.Load(reportPath + "\OutDkt.rpt");
List<TblOutDocket> lstDockets = new List<TblOutDocket>();
lstDockets.Add(oTblOutDocket);
oReportDocument.SetDataSource(lstDockets);
oReportDocument.PrintOptions.PrinterName = LocalPrintServer.GetDefaultPrintQueue().FullName;
oReportDocument.PrintToPrinter(1, false, 0, 0);
使用自定义页面大小时,您需要专门指定页面设置。根据此链接,您可以通过设置页面设置命名空间来实现此目的。
当您要使用 ID 大于 118 (Windows 的纸张大小时编码纸张大小)必须提供纸张大小的 ID 到PrintOptions.PaperSource. 显然,你需要把它投射到CrystalDecisions.Shared.PaperSource 我这样做:
ReportDocument.PrintOptions.PaperSource =(CrystalDecisions.Shared.PaperSource)m_PageSettings.PaperSource.RawKind;
报告文档.打印选项.纸张大小 =(CrystalDecisions.Shared.PaperSize)m_PageSettings.PaperSize.RawKind;
其中m_PageSettings是我的系统.绘图.页面指定设置正确的纸张尺寸