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打印插件等。但是这些打印方法可能会影响报表的打印质量,浏览器兼容性与稳定性也不能保证,慧都在这里并不提倡。






本文转载:CSDN博客