private void GenerateLoiDoc() { GeneratorController gc = new GeneratorController(); DataTable dt = gc.LOI_generateDocument_getdata(); Console.WriteLine("Total LOI Generated: " + dt.Rows.Count.ToString()); foreach (DataRow dr in dt.Rows) { string LoiDocPath = Path.Combine(Environment.CurrentDirectory, "Template"); string Templatefile = ConfigurationManager.AppSettings["Templatefile"]; string FullTemplate = Path.Combine(LoiDocPath, Templatefile); string DirectoryResultPath = Path.Combine(ConfigurationManager.AppSettings["DirectoryResultPath"], dr["LOI_Code"].ToString()); if (!Directory.Exists(DirectoryResultPath)) { Directory.CreateDirectory(DirectoryResultPath); } string filenameSavedOri = string.Concat("LOIDoc_", dr["LOI_Code"].ToString()); string resultfile = Path.Combine(DirectoryResultPath, filenameSavedOri + "_final.pdf"); string resultfilehtml = Path.Combine(DirectoryResultPath, filenameSavedOri + ".htm"); string ResultPathUrl = string.Concat(ConfigurationManager.AppSettings["ResultPathUrl"], dr["LOI_Code"].ToString(), "/", filenameSavedOri, ".pdf"); string TextTemplate = ReadApprovalTemplate(FullTemplate); StringBuilder sb = new StringBuilder(); sb.Append(TextTemplate); sb.Replace("[nokia_logo]", "<img src='https://eboqh3i.nsnebast.com/Images/nokia-logo.png' height='36px' width='100px'/>"); sb.Replace("[ttd]", "<img src='data:image/png;base64,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' height='36px' width='100px'/>"); sb.Replace("[subcon_name]", dr["Subcone_Name"].ToString()); sb.Replace("[subcon_address]", dr["SCon_Addr"].ToString()); sb.Replace("[subcon_address_city]", ""); sb.Replace("[subcon_phone]", dr["SCon_Phone"].ToString()); sb.Replace("[subcon_fax]", dr["SCon_Fax"].ToString()); sb.Replace("[loi_reference]", dr["LOI_Reference"].ToString()); sb.Replace("[loi_approved]", "Jakarta, " + Convert.ToDateTime(dr["MU_Approve_Date"]).ToString("dd MMMM yyyy")); string cpo = dr["CPO"].ToString(); sb.Replace("[cpo]", cpo.Remove(cpo.Length - 1)); sb.Replace("[epm_id]", dr["EPM_Vendor_ID"].ToString()); sb.Replace("[po_no]", cpo.Remove(cpo.Length - 1)); string sow = dr["ScopeOfWork"].ToString(); sb.Replace("[sow_detail]", sow.Remove(sow.Length - 1)); sb.Replace("[Approver_cpm]", dr["CPM_Approver_Id"].ToString()); sb.Replace("[Approver_cpm_date]", Convert.ToDateTime(dr["CPM_Approve_Date"]).ToString("dd MMMM yyyy HH:mm:ss")); sb.Replace("[Approver_pbm]", dr["PBM_Approver_Id"].ToString()); sb.Replace("[Approver_pbm_date]", Convert.ToDateTime(dr["PBM_Approve_Date"]).ToString("dd MMMM yyyy HH:mm:ss")); sb.Replace("[Approver_cdm]", dr["CDM_Approver_Id"].ToString()); sb.Replace("[Approver_cdm_date]", Convert.ToDateTime(dr["CDM_Approve_Date"]).ToString("dd MMMM yyyy HH:mm:ss")); sb.Replace("[Approver_mb]", dr["MB_Approver_Id"].ToString()); sb.Replace("[Approver_mb_date]", Convert.ToDateTime(dr["MB_Approve_Date"]).ToString("dd MMMM yyyy HH:mm:ss")); sb.Replace("[Approver_mu]", dr["MU_Approver_Id"].ToString()); sb.Replace("[Approver_mu_date]", Convert.ToDateTime(dr["MU_Approve_Date"]).ToString("dd MMMM yyyy HH:mm:ss")); sb.Replace("[CTName]", dr["ProjectName"].ToString()); Console.WriteLine("Preparing to generate document and Merge"); try { HtmlTextWriter sw = new HtmlTextWriter(new StreamWriter(resultfilehtml, false, UnicodeEncoding.UTF8)); sw.BeginRender(); sw.WriteLine(sb.ToString()); sw.Close(); sw.Dispose(); string result = GeneralConfig.ConvertAnyFormatToPDFHtmlNew(resultfilehtml, DirectoryResultPath, filenameSavedOri); int RequestId = Convert.ToInt32(dr["RequestId"]); string LoiDetailPdfPath = GenerateDetailLoiDoc(gc, RequestId, dr["LOI_Code"].ToString(), DirectoryResultPath); Console.WriteLine("Merge in Progress"); using (FileStream stream = new FileStream(resultfile, FileMode.Create)) { Document pdfDoc = new Document(PageSize.A4); PdfCopy pdf = new PdfCopy(pdfDoc, stream); pdfDoc.Open(); pdf.AddDocument(new PdfReader(result)); pdf.AddDocument(new PdfReader(LoiDetailPdfPath)); if (pdfDoc != null) { pdfDoc.Close(); } } Console.WriteLine("Merge Completed"); Console.WriteLine("Record Result of Merge"); gc.LOI_Update_Document_GeneratedLink(ResultPathUrl, RequestId); Console.WriteLine("Record Result of Merge Completed"); } catch (Exception ex) { Console.WriteLine("Merge error: " + ex.Message.ToString()); EBOQ_Lib_New.DAL.DAL_AppLog.ErrLogInsert("Program.cs:GenerateLoiDoc", ex.Message, "NON-SP"); Console.Read(); } } }