1 回答
TA贡献1866条经验 获得超5个赞
您需要使用合适PageSettings的PrintDocument,其用于打印。您需要对该文章的代码进行一些更改,才能以不同的纸张尺寸或页面布局进行打印。
首先,您需要创建一个合适的PageSettings,例如,如果您将报告的默认页面设置设置为横向:
var report = reportViewer1.LocalReport;
var pageSettings = new PageSettings();
pageSettings.PaperSize = report.GetDefaultPageSettings().PaperSize;
pageSettings.Landscape = report.GetDefaultPageSettings().IsLandscape;
pageSettings.Margins = report.GetDefaultPageSettings().Margins;
或者如果你想创建一个新的页面设置:
var pageSettings = new PageSettings();
pageSettings.Landscape = true;
pageSettings.PaperSize = reportViewer1.PrinterSettings.PaperSizes.Cast<PaperSize>()
.Where(x => x.Kind == PaperKind.A4).First();
然后pageSetting在创建 deviceInfo 时使用:
string deviceInfo =
$@"<DeviceInfo>
<OutputFormat>EMF</OutputFormat>
<PageWidth>{pageSettings.PaperSize.Width * 100}in</PageWidth>
<PageHeight>{pageSettings.PaperSize.Height * 100}in</PageHeight>
<MarginTop>{pageSettings.Margins.Top * 100}in</MarginTop>
<MarginLeft>{pageSettings.Margins.Left * 100}in</MarginLeft>
<MarginRight>{pageSettings.Margins.Right * 100}in</MarginRight>
<MarginBottom>{pageSettings.Margins.Bottom * 100}in</MarginBottom>
</DeviceInfo>";
最后,使用相同的 pageSettings PrintDocument:
PrintDocument printDoc = new PrintDocument();
printDoc.DefaultPageSettings = pageSettings;
我创建了一个扩展方法,以便通过调用Print()或来更轻松地打印报告Print(PageSettings)。您可以在这里找到它:打印 RDLC 报告而不显示 ReportViewer
- 1 回答
- 0 关注
- 274 浏览
添加回答
举报