[ASP.NET] 藉由ReportView直接輸出PDF檔

摘要:[ASP.NET] 藉由ReportView直接輸出PDF檔

讓USER直接取得PDF檔來使用

private void ExpRpt1()
{
  Warning[] warnings;
  string[] streamids;
  string mimeType;
  string encoding;
  string extension;

  this.ReportViewer1.ServerReport.ReportServerUrl = "報表URL的位置";
  this.ReportViewer1.ServerReport.DisplayName = "報表顯示的名稱";
  //報表參數
  ReportParameter[] parm = new ReportParameter[2];
  parm[0] = new ReportParameter("pyear", this.ddlRegYear.SelectedValue.Trim());
  parm[1] = new ReportParameter("psem", this.ddlRegSem.SelectedValue.Trim());

  this.ReportViewer1.ServerReport.ReportPath = "報表目錄位置&檔名";
  this.ReportViewer1.ServerReport.ReportServerCredentials = new MyReportServerCredentials();
  this.ReportViewer1.ShowParameterPrompts = false;
  this.ReportViewer1.ServerReport.SetParameters(parm);
  this.ReportViewer1.ServerReport.Refresh();
  //轉為PDF
  byte[] reportBytes = this.ReportViewer1.ServerReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamids, out warnings);

  Response.ClearContent();
  Response.AddHeader("Content-Disposition", "attachment; filename=StuAbsentNotice.pdf");  //輸出檔名
  Response.AddHeader("Accept-Header", reportBytes.Length.ToString());
  Response.ContentType = "application/pdf";
  Response.OutputStream.Write(reportBytes, 0, reportBytes.Length);
  Response.Flush();
  Response.Close();
}