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

发布时间 : 2015-12-17 10:35:56.000|阅读 3499 次

概述:本片文章主要介绍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。

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

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


在线
客服
微信
QQ 电话
023-68661681
返回
顶部