//2.2.1 //fill text to each PDF except group E letters__________________________________________________________________ 2.2.2 private void FillTextToPDF_POR(string inputPDFFile, PdfSmartCopy copy, FPL1LTR pageInfo, string LtrSubGrp, string PtnCNY) { using (var baos = new MemoryStream()) //inputHead=p1_inPOR_xxxxxx.PDF { using (PdfReader templateReader = new PdfReader(GlobalVar.wPATH() + inputPDFFile.Replace("inXXX_", "inPOR_"))) //input= "d:\L1Letters\" + "inPOR_A1提款信_MO_1-18480_page18480_1.PDF" { using (PdfStamper stamper = new PdfStamper(templateReader, baos)) { //create a font family (細明體HKSCS + EUDC) string fontPath = @"d:\MINGLIU.TTC,2"; //path + @"\MINGLIU.TTC,2"; BaseFont bfChinese = BaseFont.CreateFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); string fontPath2 = @"d:\EUDC.TTF"; BaseFont bfChinese2 = BaseFont.CreateFont(fontPath2, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); List <BaseFont> FontFamily = new List <BaseFont>(); FontFamily.Add(bfChinese); FontFamily.Add(bfChinese2); AcroFields fields = stamper.AcroFields; fields.SubstitutionFonts = FontFamily; fields.GenerateAppearances = true; fields.SetField("cname", pageInfo.PTNCNA); stamper.AcroFields.SetFieldProperty("pname", "textsize", 0f, null); //font auto resize (0f) fields.SetField("pname", pageInfo.PTNNAM); fields.SetField("ltrno", pageInfo.LTRNO); fields.SetField("idno", pageInfo.PTNIDN.Substring(0, 4) + "XXXX"); fields.SetField("ofcdate", DateTime.Now.ToString("dd/MM/yyyy")); fields.SetField("ptnno", pageInfo.PTNNO); fields.SetField("idx", pageInfo.IDX.ToString()); fields.SetField("ltrgrp", pageInfo.LTRGRP); stamper.AcroFields.SetFieldProperty("addr1", "textsize", 0f, null); fields.SetField("addr1", pageInfo.ADDR1); if (pageInfo.ADDR2.Trim() == "") //向前移 (如空白, 分段地址向上移) { if (pageInfo.ADDR3.Trim() == "") { pageInfo.ADDR2 = pageInfo.ADDR4; pageInfo.ADDR4 = ""; } else { pageInfo.ADDR2 = pageInfo.ADDR3; pageInfo.ADDR3 = pageInfo.ADDR4; pageInfo.ADDR4 = ""; } } if (pageInfo.ADDR3.Trim() == "") //向前移 (如空白, 分段地址向上移) { pageInfo.ADDR3 = pageInfo.ADDR4; pageInfo.ADDR4 = ""; } stamper.AcroFields.SetFieldProperty("addr2", "textsize", 0f, null); fields.SetField("addr2", pageInfo.ADDR2.Trim()); stamper.AcroFields.SetFieldProperty("addr3", "textsize", 0f, null); fields.SetField("addr3", pageInfo.ADDR3.Trim()); fields.SetField("addr4", pageInfo.ADDR4); if (pageInfo.LTRGRP.Trim() == "D") //3.3 政府管理子帳戶結餘, 3.4 提取款項原因 (未滿65歲) { if (pageInfo.UPLBAL < pageInfo.TXNBAL) //未滿65歲 (LA), 提款上限 (UPLBAL) < 結餘 (TXNBAL) then uplbal else txnbal { fields.SetField("p1balance", "O montante máximo a levantar é de MOP$" + String.Format("{0:#,#00.00}", pageInfo.UPLBAL) + " (incluindo a verba do ano " + DateTime.Now.Year.ToString() + ")."); } else { fields.SetField("p1balance", "O montante máximo a levantar é de MOP$" + String.Format("{0:#,#00.00}", pageInfo.TXNBAL) + " (incluindo a verba do ano " + DateTime.Now.Year.ToString() + ")."); } fields.SetField("p2age", "Não ter completado 65 anos de idade, e estar a receber a pensão de invalidez do Fundo de Segurança Social há mais de um ano ou o subsídio de invalidez especial do Instituto de Acção Social."); } else { fields.SetField("p1balance", "O saldo é de MOP$" + String.Format("{0:#,#00.00}", pageInfo.TXNBAL) + " (incluindo a verba do ano " + DateTime.Now.Year.ToString() + ")."); fields.SetField("p2age", "Ter completado 65 anos de idade."); } if (pageInfo.LTRGRP.Trim() == "C") //3.5 款項發放 { //fields.SetField("p4bank1", "Por depósito na minha conta bancária em MOP n.º_____Banco___"); //全型underline fields.SetField("p4bank1", "Por depósito na conta bancária em MOP nº_________Banco___"); //全型underline fields.SetField("p4bank2", "(Deve anexar fotocópias do BIRM e da conta bancária)"); fields.SetField("p4bank3", ""); fields.SetField("p4bank4", ""); fields.SetField("p4bank5", ""); } else { fields.SetField("p4bank1", "A verba será depositada na conta bancária do requerente pela ordem"); fields.SetField("p4bank2", "seguinte: 1. Conta bancária na qual recebe a pensão para idosos ou pensão de"); fields.SetField("p4bank3", "invalidez do FSS. 2. Conta bancária na qual recebe o subsídio para idosos do"); fields.SetField("p4bank4", "Instituto de Acção Social. 3. Conta bancária na qual recebe o subsídio de"); fields.SetField("p4bank5", "invalidez especial do Instituto de Acção Social."); } if (pageInfo.LTRGRP.Trim() == "A") { fields.SetField("p6point", "6."); fields.SetField("p6label", "Inscrição de levantamento"); fields.SetField("p6label2", "automático de verbas:"); fields.SetField("p6auto1", "Se concordar , pode participar na “Inscrição de levantamento"); fields.SetField("p6auto2", "automático de verbas” (vide Guia para a inscrição de levantamento"); fields.SetField("p6auto3", "automático de verbas), tomando conhecimento de que a partir do ano"); fields.SetField("p6auto4", "seguinte ao registo, não é preciso efectuar o requerimento de"); fields.SetField("p6auto5", "levantamento de verba desde que sejam preenchidos os requisitos no"); fields.SetField("p6auto6", "ano em causa. A verba do ano relevante será atribuída na conta"); fields.SetField("p6auto7", "bancária acima referida."); string fontPath3 = @"c:\windows\fonts\Webdings.TTF"; BaseFont bfChinese3 = BaseFont.CreateFont(fontPath3, BaseFont.IDENTITY_V, BaseFont.EMBEDDED); List <BaseFont> FontFamily3 = new List <BaseFont>(); FontFamily3.Add(bfChinese3); AcroFields fields3 = stamper.AcroFields; fields3.SubstitutionFonts = FontFamily3; fields3.SetField("p6chkbox", ""); _GenQRCode(stamper, "QRcode", pageInfo.PTNNO); } stamper.FormFlattening = true; } using (var template_filled = new PdfReader(baos.ToArray())) { copy.AddPage(copy.GetImportedPage(template_filled, 1)); } } } // end : fill text in a PDF }
//2.4.1 //fill text to each PDF withgroup E letters_____________________________________________________________________ E.2 private void FillTextToPDF_E(string inputPDFFile, PdfSmartCopy copy, FPL1LTR pageInfo, string LtrSubGrp, string PtnCNY) { using (var baos = new MemoryStream()) { using (PdfReader templateReader = new PdfReader(GlobalVar.wPATH() + inputPDFFile)) //source template PDF (group E only) d:\L1Letters\E_Letters_template.pdf { using (PdfStamper stamper = new PdfStamper(templateReader, baos)) { //create a font family (細明體HKSCS + EUDC) string fontPath = @"d:\MINGLIU.TTC,2"; //path + @"\MINGLIU.TTC,2"; BaseFont bfChinese = BaseFont.CreateFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); string fontPath2 = @"d:\EUDC.TTF"; BaseFont bfChinese2 = BaseFont.CreateFont(fontPath2, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); List <BaseFont> FontFamily = new List <BaseFont>(); FontFamily.Add(bfChinese); FontFamily.Add(bfChinese2); AcroFields fields = stamper.AcroFields; fields.SubstitutionFonts = FontFamily; fields.GenerateAppearances = true; fields.SetField("cname", pageInfo.PTNCNA); stamper.AcroFields.SetFieldProperty("pname", "textsize", 0f, null); //font auto resize (0f) fields.SetField("pname", pageInfo.PTNNAM); fields.SetField("ltrno", pageInfo.LTRNO); fields.SetField("idno", pageInfo.PTNIDN.Substring(0, 4) + "XXXX"); fields.SetField("ofcdate", DateTime.Now.ToString("dd/MM/yyyy")); fields.SetField("ptnno", pageInfo.PTNNO); fields.SetField("ptnnoidx", pageInfo.PTNNO.Trim() + "/" + pageInfo.IDX.ToString().Trim()); fields.SetField("barcode", pageInfo.PTNNO + "-" + pageInfo.LTRNO); stamper.AcroFields.SetFieldProperty("addr1", "textsize", 0f, null); fields.SetField("addr1", pageInfo.ADDR1); if (pageInfo.ADDR2.Trim() == "") //向前移 (如空白, 分段地址向上移) { if (pageInfo.ADDR3.Trim() == "") { pageInfo.ADDR2 = pageInfo.ADDR4; pageInfo.ADDR4 = ""; } else { pageInfo.ADDR2 = pageInfo.ADDR3; pageInfo.ADDR3 = pageInfo.ADDR4; pageInfo.ADDR4 = ""; } } if (pageInfo.ADDR3.Trim() == "") //向前移 (如空白, 分段地址向上移) { pageInfo.ADDR3 = pageInfo.ADDR4; pageInfo.ADDR4 = ""; } stamper.AcroFields.SetFieldProperty("addr2", "textsize", 0f, null); fields.SetField("addr2", pageInfo.ADDR2.Trim()); stamper.AcroFields.SetFieldProperty("addr3", "textsize", 0f, null); fields.SetField("addr3", pageInfo.ADDR3.Trim()); fields.SetField("addr4", pageInfo.ADDR4); //_GenQRCode(stamper, "QRcode", pageInfo.PTNNO); //E-Letters don't need QRcode! Requested by Elyse on 17/7/2019 stamper.FormFlattening = true; } using (var template_filled = new PdfReader(baos.ToArray())) { copy.AddPage(copy.GetImportedPage(template_filled, 1)); } } } // end : fill text in a PDF (group E only) }
//2.2.1 //fill text to each PDF except group E letters__________________________________________________________________ 2.2.1 private void FillTextToPDF_CHN(string inputPDFFile, PdfSmartCopy copy, FPL1LTR pageInfo, string LtrSubGrp, string PtnCNY) { // Console.WriteLine("start chn " + pageInfo.LTRNO + " === " + DateTime.Now.ToString()); using (var baos = new MemoryStream()) //p1_inCHN_xxxxxx.PDF { //using (PdfReader templateReader = new PdfReader(outputPDFFile)) //source template PDF (chn version) d:\L1Letters\L1_Letters_chn_template.pdf using (PdfReader templateReader = new PdfReader(GlobalVar.wPATH() + inputPDFFile.Replace("inXXX_", "inCHN_"))) //input= "d:\L1Letters\" + "p1_inCHN_A1提款信_MO_1-18480_page18480_1.PDF" { using (PdfStamper stamper = new PdfStamper(templateReader, baos)) //convert inXXX_ to inCHN_ { //create a font family (細明體HKSCS + EUDC) string fontPath = @"d:\MINGLIU.TTC,2"; //path + @"\MINGLIU.TTC,2"; BaseFont bfChinese = BaseFont.CreateFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); string fontPath2 = @"d:\EUDC.TTF"; BaseFont bfChinese2 = BaseFont.CreateFont(fontPath2, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); List <BaseFont> FontFamily = new List <BaseFont>(); FontFamily.Add(bfChinese); FontFamily.Add(bfChinese2); AcroFields fields = stamper.AcroFields; fields.SubstitutionFonts = FontFamily; fields.GenerateAppearances = true; fields.SetField("cname", pageInfo.PTNCNA); stamper.AcroFields.SetFieldProperty("pname", "textsize", 0f, null); //font auto resize (0f) fields.SetField("pname", pageInfo.PTNNAM); fields.SetField("ltrno", pageInfo.LTRNO); fields.SetField("idno", pageInfo.PTNIDN.Substring(0, 4) + "XXXX"); fields.SetField("ofcdate", DateTime.Now.ToString("dd/MM/yyyy")); fields.SetField("ptnno", pageInfo.PTNNO); fields.SetField("idx", pageInfo.IDX.ToString()); fields.SetField("ltrgrp", pageInfo.LTRGRP); stamper.AcroFields.SetFieldProperty("addr1", "textsize", 0f, null); fields.SetField("addr1", pageInfo.ADDR1); if (pageInfo.ADDR2.Trim() == "") //向前移 (如空白, 分段地址向上移) { if (pageInfo.ADDR3.Trim() == "") { pageInfo.ADDR2 = pageInfo.ADDR4; pageInfo.ADDR4 = ""; } else { pageInfo.ADDR2 = pageInfo.ADDR3; pageInfo.ADDR3 = pageInfo.ADDR4; pageInfo.ADDR4 = ""; } } if (pageInfo.ADDR3.Trim() == "") //向前移 (如空白, 分段地址向上移) { pageInfo.ADDR3 = pageInfo.ADDR4; pageInfo.ADDR4 = ""; } stamper.AcroFields.SetFieldProperty("addr2", "textsize", 0f, null); fields.SetField("addr2", pageInfo.ADDR2.Trim()); stamper.AcroFields.SetFieldProperty("addr3", "textsize", 0f, null); fields.SetField("addr3", pageInfo.ADDR3.Trim()); fields.SetField("addr4", pageInfo.ADDR4); if (pageInfo.LTRGRP.Trim() == "D") //3.3 政府管理子帳戶結餘, 3.4 提取款項原因 { fields.SetField("p1balance", "可提取的款項為澳門幣" + String.Format("{0:#,#00.00}", pageInfo.TXNBAL) + "(已包括" + DateTime.Now.Year.ToString() + "年度的款項)"); stamper.AcroFields.SetFieldProperty("p2age", "textsize", 0f, null); //font auto resize (0f) fields.SetField("p2age", "未滿65歲,正收取社會保障基金殘疾金超過一年或社會工作局特別殘疾津貼"); } else { fields.SetField("p1balance", "結餘為澳門幣" + String.Format("{0:#,#00.00}", pageInfo.TXNBAL) + "(已包括" + DateTime.Now.Year.ToString() + "年度的款項)"); fields.SetField("p2age", "已年滿65歲"); } if (pageInfo.LTRGRP.Trim() == "C") //3.5 款項發放 { fields.SetField("p4bank1", "存入本人澳門幣銀行帳號__________銀行名稱_______"); //全型underline fields.SetField("p4bank2", "(須附同澳門居民身份證影印本及銀行帳號影印本)"); fields.SetField("p4bank3", ""); } else { fields.SetField("p4bank1", "款項將按以下順序存入申請人的銀行帳戶:1.收取社會保障基金養老金或"); fields.SetField("p4bank2", "殘疾金的銀行帳戶、2.收取社會工作局敬老金的銀行帳戶、3.收取社會工"); fields.SetField("p4bank3", "作局特別殘疾津貼的銀行帳戶。"); } if (pageInfo.LTRGRP.Trim() == "A") { fields.SetField("p6point", "6."); fields.SetField("p6label", "自動提款登記:"); fields.SetField("p6auto1", "同意參與《自動提款登記》(詳見自動提款登記指南),並知悉自登"); fields.SetField("p6auto2", "記翌年起在符合條件的年度可無需辦理提款申請,相關年度的分配款"); fields.SetField("p6auto3", "項將發放至上述的銀行帳戶。"); string fontPath3 = @"c:\windows\fonts\Webdings.TTF"; BaseFont bfChinese3 = BaseFont.CreateFont(fontPath3, BaseFont.IDENTITY_V, BaseFont.EMBEDDED); List <BaseFont> FontFamily3 = new List <BaseFont>(); FontFamily3.Add(bfChinese3); AcroFields fields3 = stamper.AcroFields; fields3.SubstitutionFonts = FontFamily3; fields3.SetField("p6chkbox", ""); _GenQRCode(stamper, "QRcode", pageInfo.PTNNO); } stamper.FormFlattening = true; } using (var template_filled = new PdfReader(baos.ToArray())) { copy.AddPage(copy.GetImportedPage(template_filled, 1)); } } } // end : fill text in a PDF //Console.WriteLine("end chn " + pageInfo.LTRNO + " === " + DateTime.Now.ToString()); }