protected void lbDownload_Click(object sender, EventArgs e) { DataTable dt = Extenders.ObjectToDataTable(this.coverpages[0]); ReportHeader reportHeader = ReportHeader.getReportHeder(this.jobSample); ReportParameterCollection reportParameters = new ReportParameterCollection(); reportParameters.Add(new ReportParameter("CustomerPoNo", reportHeader.cusRefNo)); reportParameters.Add(new ReportParameter("AlsThailandRefNo", reportHeader.alsRefNo)); reportParameters.Add(new ReportParameter("Date", reportHeader.cur_date.ToString("dd MMMM yyyy") + "")); reportParameters.Add(new ReportParameter("Company", reportHeader.addr1)); reportParameters.Add(new ReportParameter("Company_addr", reportHeader.addr2)); reportParameters.Add(new ReportParameter("DateSampleReceived", reportHeader.dateOfDampleRecieve.ToString("dd MMMM yyyy") + "")); reportParameters.Add(new ReportParameter("DateAnalyzed", reportHeader.dateOfAnalyze.ToString("dd MMMM yyyy") + "")); reportParameters.Add(new ReportParameter("DateTestCompleted", reportHeader.dateOfTestComplete.ToString("dd MMMM yyyy") + "")); reportParameters.Add(new ReportParameter("SampleDescription", reportHeader.description)); reportParameters.Add(new ReportParameter("Test", "-")); reportParameters.Add(new ReportParameter("ResultDesc", lbResultDesc.Text)); reportParameters.Add(new ReportParameter("AlsSingaporeRefNo", (String.IsNullOrEmpty(this.jobSample.singapore_ref_no) ? String.Empty : this.jobSample.singapore_ref_no))); // Variables Warning[] warnings; string[] streamIds; string mimeType = string.Empty; string encoding = string.Empty; string extension = string.Empty; List <template_seagate_copperwire_img> dat = new List <template_seagate_copperwire_img>(); template_seagate_copperwire_img tmp = new template_seagate_copperwire_img(); template_seagate_copperwire_img corImg = this.refImg.Where(x => x.img_type.Value == 1).FirstOrDefault(); if (corImg != null) { tmp.img1 = CustomUtils.GetBytesFromImage(corImg.path_img1); } corImg = this.refImg.Where(x => x.img_type.Value == 2).FirstOrDefault(); if (corImg != null) { tmp.img2 = CustomUtils.GetBytesFromImage(corImg.path_img1); } dat.Add(tmp); // Setup the report viewer object and get the array of bytes ReportViewer viewer = new ReportViewer(); viewer.ProcessingMode = ProcessingMode.Local; viewer.LocalReport.ReportPath = Server.MapPath("~/ReportObject/copperwire_seagate.rdlc"); viewer.LocalReport.SetParameters(reportParameters); viewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt)); // Add datasource here viewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet2", dt)); // Add datasource here viewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet3", dat.ToDataTable())); // Add datasource here string download = String.Empty; StatusEnum status = (StatusEnum)Enum.Parse(typeof(StatusEnum), this.jobSample.job_status.ToString(), true); switch (status) { case StatusEnum.ADMIN_CONVERT_WORD: if (!String.IsNullOrEmpty(this.jobSample.path_word)) { Response.Redirect(String.Format("{0}{1}", Configurations.HOST, this.jobSample.path_word)); } else { byte[] bytes = viewer.LocalReport.Render("Word", null, out mimeType, out encoding, out extension, out streamIds, out warnings); if (!Directory.Exists(Server.MapPath("~/Report/"))) { Directory.CreateDirectory(Server.MapPath("~/Report/")); } using (FileStream fs = File.Create(Server.MapPath("~/Report/") + this.jobSample.job_number + "_orginal." + extension)) { fs.Write(bytes, 0, bytes.Length); } #region "Insert Footer & Header from template" Document doc1 = new Document(); doc1.LoadFromFile(Server.MapPath("~/template/") + "Blank Letter Head - EL.doc"); HeaderFooter header = doc1.Sections[0].HeadersFooters.Header; HeaderFooter footer = doc1.Sections[0].HeadersFooters.Footer; Document doc2 = new Document(Server.MapPath("~/Report/") + this.jobSample.job_number + "_orginal." + extension); foreach (Section section in doc2.Sections) { foreach (DocumentObject obj in header.ChildObjects) { section.HeadersFooters.Header.ChildObjects.Add(obj.Clone()); } foreach (DocumentObject obj in footer.ChildObjects) { section.HeadersFooters.Footer.ChildObjects.Add(obj.Clone()); } } doc2.SaveToFile(Server.MapPath("~/Report/") + this.jobSample.job_number + "." + extension); #endregion Response.ContentType = mimeType; Response.AddHeader("Content-Disposition", "attachment; filename=" + this.jobSample.job_number + "." + extension); Response.WriteFile(Server.MapPath("~/Report/" + this.jobSample.job_number + "." + extension)); Response.Flush(); #region "Delete After Download" String deleteFile1 = Server.MapPath("~/Report/") + this.jobSample.job_number + "." + extension; String deleteFile2 = Server.MapPath("~/Report/") + this.jobSample.job_number + "_orginal." + extension; if (File.Exists(deleteFile1)) { File.Delete(deleteFile1); } if (File.Exists(deleteFile2)) { File.Delete(deleteFile2); } #endregion } break; case StatusEnum.LABMANAGER_CHECKING: case StatusEnum.LABMANAGER_APPROVE: case StatusEnum.LABMANAGER_DISAPPROVE: if (!String.IsNullOrEmpty(this.jobSample.path_word)) { Response.Redirect(String.Format("{0}{1}", Configurations.HOST, this.jobSample.path_word)); } break; case StatusEnum.ADMIN_CONVERT_PDF: if (!String.IsNullOrEmpty(this.jobSample.path_word)) { Response.Redirect(String.Format("{0}{1}", Configurations.HOST, this.jobSample.path_word)); } //if (!String.IsNullOrEmpty(this.jobSample.path_word)) //{ // Word2Pdf objWorPdf = new Word2Pdf(); // objWorPdf.InputLocation = String.Format("{0}{1}", Configurations.PATH_DRIVE, this.jobSample.path_word); // objWorPdf.OutputLocation = String.Format("{0}{1}", Configurations.PATH_DRIVE, this.jobSample.path_word).Replace("doc", "pdf"); // try // { // objWorPdf.Word2PdfCOnversion(); // Response.Redirect(String.Format("{0}{1}", Configurations.HOST, this.jobSample.path_word).Replace("doc", "pdf")); // } // catch (Exception ex) // { // Console.WriteLine(); // Response.Redirect(String.Format("{0}{1}", Configurations.HOST, this.jobSample.path_word)); // } //} break; } }