示例#1
0
        //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
0
        //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)
        }
示例#3
0
        //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());
        }