Stimulsoft Reports.Net开发者常见Q&A——报表打印

原创|使用教程|编辑:ZGL|2015-12-17 10:35:56.000|阅读 2115 次

概述:本片文章主要介绍Stimulsoft Reports.Net开发者在打印报表时遇到的常见问题及解决方案。

相关链接:

< Stimulsoft Reports.Net v2015.3最新版本下载>

1.怎么在不预览的情况下立即打印报表?

按照下面的方法先加载报表:

C#

StiReport report = new StiReport();
report.Load("report.mrt");
report.Print();

VB

Dim Report As StiReport = New StiReport()
Report.Load("report.mrt")
Report.Print()

2.如何不使用对话框打印报表?

重载StiReport类里的Print方法:

C#

StiReport report = new StiReport();
report.Load("report.mrt");
report.Render();
PrinterSettings printerSettings = new PrinterSettings();
printerSettings.Copies = 2;
Report.Print(printerSettings);

VB

Dim Report As StiReport = New StiReport()
Report.Load("report.mrt")
Report.Render()
Dim PrinterSettings As PrinterSettings = New PrinterSettings()
PrinterSettings.Copies = 2
Report.Print(PrinterSettings)

3.怎么打印指定参数的报表?

你可以使用Print方法。示例:

C#

StiReport report = new StiReport();
report.Load("MyReport.mrt");
report.RegData(myDataSet);
report.Render();
//创建打印机设置
PrinterSettings printerSettings = new PrinterSettings();
printerSettings.Copies = 1;
printerSettings.FromPage = 1;
printerSettings.ToPage = report.RenderedPages.Count;
//直接打印,不显示打印对话框
report.Print(false, printerSettings);

VB

Dim Report As New StiReport
Report.Load("MyReport.mrt")
Report.RegData(MyDataSet)
Report.Render()
'创建打印机设置
Dim PrinterSettings As New PrinterSettings
PrinterSettings.Copies = 1
PrinterSettings.FromPage = 1
PrinterSettings.ToPage = Report.RenderedPages.Count
'直接打印,不显示打印对话框
Report.Print(False, PrinterSettings)

4.怎么指定打印机打印报表?

你可以在PrinterSettings类的PrinterName属性指定打印机的名称。示例:

C#

StiReport report = new StiReport();
report.Load("MyReport.mrt");
report.RegData(myDataSet);
report.Render();
//创建打印机设置
PrinterSettings printerSettings = new PrinterSettings();
//设置用于打印的打印机
printerSettings.PrinterName = "MyPrinterName";
//直接打印,不显示打印对话框
report.Print(false, printerSettings);

VB

Dim Report As New StiReport
Report.Load("MyReport.mrt")
Report.RegData(MyDataSet)
Report.Render()
'创建打印机设置
Dim PrinterSettings As New PrinterSettings
'设置用于打印的打印机
PrinterSettings.PrinterName = "MyPrinterName"
'直接打印,不显示打印对话框
Report.Print(False, PrinterSettings)

5.怎么指定打印的纸张来源?

使用PrinterSettings类:

C#

StiReport report = new StiReport();
report.Load("MyReport.mrt");
report.RegData(myDataSet);
report.Render();
//创建打印机设置
PrinterSettings printerSettings = new PrinterSettings(();
//指定纸张来源
printerSettings.DefaultPageSettings.PaperSource = printerSettings.PaperSources[1];
//直接打印,不显示打印对话框
report.Print(false, printerSettings);

VB

Dim Report As New StiReport
Report.Load("MyReport.mrt")
Report.RegData(MyDataSet)
Report.Render()
'创建打印设置
Dim PrinterSettings As New PrinterSettings
'指定纸张来源
PrinterSettings.DefaultPageSettings.PaperSource = PrinterSettings.PaperSources.Item(1)
'直接打印,不显示打印对话框
Report.Print(False, PrinterSettings)

6.最后一页打印不全,怎么解决?

默认情况下,所有边的页边距都设置为1厘米,但是有的打印机的底部边距大于1厘米(例如DeskJet打印机),这种情况设置下边距为2厘米就行了。

7.怎么在报表的每一页打印版权?

通常情况下你需要输出版权、系统信息、铭文、水印、项目名称以及其它一些无法在设计器中删除的编辑信息。Stimulsoft Reports.Net提供了这样的专用输出功能即页面的两个静态事件:PagePaintingPagePainted。当页面被绘制时这两个事件都被调用。

  • PagePainting在页面被绘制完成后,但任何组件都还没被输出时被调用。这个事件用于输出页面上的背景信息。
  • PagePainted在页面已经完全绘制完成后被调用。因此在该事件处理器输出的任何信息都覆盖在之前输出的页面上。

如此假设需要在报表的每一页上输出公司的著作权。为此,你应该为事件服务创建一个静态方法:

C#

private static void OnPagePainting(StiPage sender, StiPagePaintEventArgs e)
{
}

VB

Private Shared Sub OnPagePainting(ByVal sender As StiPage, ByVal e As StiPagePaintEventArgs)
End Sub

然后处理程序分配页面的静态事件。

C#

StiPage.PagePainting += new StiPagePaintEventHandler(OnPagePainting);

VB

AddHandler StiPage.PagePainting, New StiPagePaintEventHandler(AddressOf Form1.OnPagePainting)

假若现在需要输出铭文,所有需要输出的信息包含在处理程序的StiPagePaintEventArgs参数中。
下面是出版权字符串的输出代码:

C#

private static void OnPagePainting(StiPage sender, StiPagePaintEventArgs e)
{
Font font = new Font("Arial", 20 * (float)sender.Zoom));
e.Graphics.DrawString("(C) 2005 MyCompany", font, Brushes.Red, e.FullRectangle);
font.Dispose();
}

VB

Private Shared Sub OnPagePainting(ByVal sender As StiPage, ByVal e As StiPagePaintEventArgs)
Dim Font As Font = New Font("Arial", (20.0! * CType(page.Zoom, Single))
e.Graphics.DrawString("(C) 2005 MyCompany", Font, Brushes.Red, e.FullRectangle, Format)
Font.Dispose()
End Sub

使用这种页面打印的静态事件,你可以输出几乎任何形式的信息-图像、文本等。

8.为什么打印的文本内容没有最后一个像素?

将TextQuality属性设置为WYSIWYG或Typographic。

购买最新正版授权!"咨询在线客服"

慧都年终盛典火爆开启,一年仅一次的最强促销,破冰钜惠不容错过!!优惠详情点击查看>>



标签:报表解决方案报表.NET报表控件

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

文章转载自:

登录慧都网发表评论登录


2016-08-29 11:32:48.000

您好,打印多一张空白页 应该怎么解决?


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
Stimulsoft Reports.Net

一个基于.NET框架的报表生成器,能够帮助你创建结构、功能丰富的报表。报表设计器界面友好,使用便捷,让你轻松创建所有报表。

在线客服 在线QQ 电话咨询
400-700-1020
在线客服系统
live chat