https://www.evget.com/article/2013/9/5/19550.html
FastReport直接打印相关问题整理
概述:最近慧都收集到很多关于FastReport直接打印的需求,小编整理了几种实现方式,供大家参考。
最近慧都收集到很多关于FastReport直接打印的需求,具体就是点击打印后,需要不出现打印对话框也不预览报表,直接开始打印,这种需求在发票单据、条码标签打印中非常常用。小编整理了几种实现报表直接打印方式,供大家参考。
FastReportVCL
在FastReport VCL中,需要将打印选项的对话框设置为False,也可以用以下代码实现。
Report.LoadFromFile('filename');
Report.PrepareReport;
Report.PrintOptions.ShowDialog := False;
Report.Print;
FastReport .NET(WinForm)
使用FastReport.Net在WinForm平台上进行报表开发,实现直接打印的方式和VCL相识,将PrintSettings对话框设置为False就行了,也可以使用以下代码实现。
Report report = new Report();
report.Load(...);
report.RegisterData(...);
report.PrintSettings.ShowDialog = false;
report.Print();
FastReport .NET(WebForm)
使用FastReport ASP.Net版本开发的Web报表时,是不能直接实现直接打印报表,需要先导出为PDF后,再由Adobe Reader的打印功能间接实现。可以参考以下代码。
protected void Button1_Click(object sender, EventArgs e)
{
FastReport.Utils.Config.WebMode = true;
using (Report report = new Report())
{
report.Load("your_report.frx");
report.RegisterData(...);
report.Prepare();
// Export report to PDF stream
FastReport.Export.Pdf.PDFExport pdfExport = new FastReport.Export.Pdf.PDFExport();
using (MemoryStream strm = new MemoryStream())
{
report.Export(pdfExport, strm);
// Stream the PDF back to the client as an attachment
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "Application/PDF";
Response.AddHeader("Content-Disposition", "attachment;filename=report.pdf");
strm.Position = 0;
strm.WriteTo(Response.OutputStream);
Response.End();
}
}
}
以上方法是FastReport官方唯一推荐的方法,当然Web报表的直接打印,还有很多替代的方式,如调用IE的HTML页面打印,调用第三方打印插件,如AcitveX打印插件等。但是这些打印方法可能会影响报表的打印质量,浏览器兼容性与稳定性也不能保证,慧都在这里并不提倡。