Example #1
0
 //Methode: Zum Erstellen der internen Begründung als PDF
 public void CreateReasonPdf()
 {
     //Laden der PDF-Vorlage in ein ByteArray. "Vorlagenordner" gibt die Bibliothek an und "vorlage" gibt den zu Namen der zu ladenden Datei an.
     reasonPdf = web.Folders[templateFolder].Files[templateReason].OpenBinary();
     //Initialisieren eines PDF-Readers von itextsharp (zum Lesen)
     using (PdfReader pdfReader = new PdfReader(reasonPdf))
     {
         using (MemoryStream memoryStream = new MemoryStream())
         {
             using (PdfStamper pdfStamper = new PdfStamper(pdfReader, memoryStream, '\0', true))
             {
                 //Mit pdfstamper.AcroFields werden alle Formularfelder des PDFs geladen
                 AcroFields formFields = pdfStamper.AcroFields;
                 //Eintragen der Auftragsnummer und der Begründung in entsprechende Formularfelder (Syntax: fields.SetField(<Name des PDF-Feldes>, <string>);)
                 formFields.SetField(fieldReasonOrderNumber, orderNumber);
                 formFields.SetField(fieldReasonReason, root.SelectSingleNode(xReason, nsmgr).Value.ToString());
                 //Stellen der Felder auf Schreibgeschützt
                 formFields.SetFieldProperty(fieldReasonOrderNumber, "setfflags", PdfFormField.FF_READ_ONLY, null);
                 formFields.SetFieldProperty(fieldReasonReason, "setfflags", PdfFormField.FF_READ_ONLY, null);
             }
             //Bis zu dieser Stelle sind alle Editierungen des PDFS nur in einem MemoryStream vorhanden. Durch "ToArray()" wird dieser MemoryStream in ein ByteArray umgewandelt.
             reasonPdf = memoryStream.ToArray();
         }
     }
 }
Example #2
0
        /// <summary>
        /// A partir do documento de modelo preenche os dados lidos
        /// </summary>
        /// <param name="Valores">Valores a serem preenchidos</param>
        /// <param name="NomeArquivo">Nome do arquivo a Ser gerado</param>
        private void PreencherModelo(string workFolder_, string caminhoCompletoArquivoAssinatura_, string contrato_, string CPF_, string municipio_, string NomeArquivo)
        {
            using (Stream newpdfStream = new FileStream(System.IO.Path.Combine(workFolder_ + "\\" + ConfigurationManager.AppSettings["Bradesco.DiretorioBalde"], NomeArquivo), FileMode.Create, FileAccess.ReadWrite))
            {
                PdfReader  pdfReader  = new PdfReader(caminhoCompletoArquivoAssinatura_);
                PdfStamper pdfStamper = new PdfStamper(pdfReader, newpdfStream);

                AcroFields acroFields = pdfStamper.AcroFields;

                acroFields.SetField("contrato", contrato_);
                acroFields.SetField("Cidade", municipio_);
                acroFields.SetField("Dia", DateTime.Now.ToString("dd"));
                acroFields.SetField("Ano", DateTime.Now.Year.ToString().Substring(3, 1));
                acroFields.SetField("Mes", ToTitleCase(new DateTime(1900, DateTime.Now.Month, 1).ToString("MMMM", new CultureInfo("pt-BR"))));

                //marcando os campos como somente leitura
                acroFields.SetFieldProperty("contrato", "setfflags", PdfFormField.FF_READ_ONLY, null);
                acroFields.SetFieldProperty("Cidade", "setfflags", PdfFormField.FF_READ_ONLY, null);
                acroFields.SetFieldProperty("Dia", "setfflags", PdfFormField.FF_READ_ONLY, null);
                acroFields.SetFieldProperty("Ano", "setfflags", PdfFormField.FF_READ_ONLY, null);
                acroFields.SetFieldProperty("Mes", "setfflags", PdfFormField.FF_READ_ONLY, null);

                acroFields = null;
                pdfStamper.Close();
                pdfReader.Close();
                pdfReader.Dispose();
                pdfStamper.Dispose();
                newpdfStream.Close();
                newpdfStream.Dispose();
            }
        }
 static void set_field(AcroFields form, string field_key, string value)
 {
     //BaseFont bf = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, false, null, null, false);
     if (baseFont != null)
     {
         form.SetFieldProperty(field_key, "textfont", baseFont, null);
     }
     if (fontSize != null)
     {
         form.SetFieldProperty(field_key, "textsize", fontSize, null);
     }
     form.SetField(field_key, value);
 }
Example #4
0
        public static void SetTotalReport(this AcroFields fields, CardOrder cardOrder, MonthReport report)
        {
            var initIndex = getInitIndexForMonth(formNumber, 13);

            fields.SetFieldProperty("Text" + (initIndex + 1), "textsize", 8f, null);
            fields.SetField("Text" + (initIndex + 1), report.Placements.ToString());
            fields.SetFieldProperty("Text" + (initIndex + 2), "textsize", 8f, null);
            fields.SetField("Text" + (initIndex + 2), report.VideoShowings.ToString());
            fields.SetFieldProperty("Text" + (initIndex + 3), "textsize", 8f, null);
            fields.SetField("Text" + (initIndex + 3), report.Hours.ToString());
            fields.SetFieldProperty("Text" + (initIndex + 4), "textsize", 8f, null);
            fields.SetField("Text" + (initIndex + 4), report.ReturnVisits.ToString());
            fields.SetFieldProperty("Text" + (initIndex + 6), "textsize", 8f, null);
            fields.SetField("Text" + (initIndex + 6), report.Remarks);
        }
Example #5
0
        public void FillForm(
            Dictionary <string, string> items,
            Stream formStream)
        {
            PdfStamper pdfStamper    = new PdfStamper(pdfReader, formStream);
            AcroFields pdfFormFields = pdfStamper.AcroFields;
            BaseFont   arialBaseFont;
            string     arialFontPath;

            try
            {
                arialFontPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF");
                arialBaseFont = BaseFont.CreateFont(arialFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
            }
            catch (IOException)
            {
                arialFontPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIAL.TTF");
                arialBaseFont = BaseFont.CreateFont(arialFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
            }

            pdfFormFields.AddSubstitutionFont(arialBaseFont);
            foreach (KeyValuePair <string, string> item in items)
            {
                pdfFormFields.SetFieldProperty(item.Key, "textfont", arialBaseFont, null);
                if (item.Value != null)
                {
                    pdfFormFields.SetField(item.Key, item.Value);
                }
            }
            pdfStamper.FormFlattening = false;
            pdfStamper.Close();
        }
Example #6
0
 public void SetFieldProperty(AcroFields fields, string[] fieldsToDisable)
 {
     for (int i = 0; i < fieldsToDisable.Length; i++)
     {
         fields.SetFieldProperty(fieldsToDisable[i], "setfflags", PdfFormField.FF_READ_ONLY, null);
     }
 }
Example #7
0
        public static void GeneratePDF(string modelFile, Dictionary <string, string> contents, string outputPath)
        {
            BaseFont  baseFont = BaseFont.CreateFont("font.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            PdfReader reader   = new PdfReader(modelFile);

            MemoryStream stream = new MemoryStream();
            PdfStamper   stamp  = new PdfStamper(reader, stream);
            AcroFields   form   = stamp.AcroFields;

            stamp.FormFlattening = true;

            foreach (KeyValuePair <string, string> parameter in contents)
            {
                form.SetFieldProperty(parameter.Key, "textfont", baseFont, null);
                form.SetField(parameter.Key, parameter.Value);
            }

            stamp.Close();
            reader.Close();

            FileStream fs    = new FileStream(outputPath, FileMode.Create);
            var        array = stream.ToArray();

            fs.Write(array, 0, array.Length);
            fs.Flush();
            stream.Close();
            fs.Close();
        }
Example #8
0
        /// <summary>
        /// 获取文件byte
        /// </summary>
        /// <param name="fontPath">字体路径</param>
        /// <param name="templatePath">模版路径</param>
        /// <param name="printPara">填充表单数据</param>
        /// <returns></returns>
        public static byte[] GetPdfByte(string fontPath, string templatePath, Dictionary <string, string> printPara)
        {
            //获取中文字体,第三个参数表示为是否潜入字体,但只要是编码字体就都会嵌入。
            BaseFont baseFont = BaseFont.CreateFont($"{fontPath}", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
            //读取模板文件
            PdfReader reader = new PdfReader(templatePath);
            //创建文件流用来保存填充模板后的文件
            MemoryStream stream = new MemoryStream();
            PdfStamper   stamp  = new PdfStamper(reader, stream);

            //设置表单字体,在高版本有用,高版本加入这句话就不会插入字体,低版本无用
            stamp.AcroFields.AddSubstitutionFont(baseFont);
            AcroFields form = stamp.AcroFields;

            //表单文本框是否锁定
            stamp.FormFlattening = true;

            //填充表单,para为表单的一个(属性-值)字典
            foreach (KeyValuePair <string, string> parameter in printPara)
            {
                //要输入中文就要设置域的字体;
                form.SetFieldProperty(parameter.Key, "textfont", baseFont, null);
                //为需要赋值的域设置值;
                form.SetField(parameter.Key, parameter.Value);
            }

            //按顺序关闭io流
            stamp.Close();
            reader.Close();

            return(stream.ToArray());
        }
 private static void SetReadOnly(AcroFields fields, IEnumerable <string> ListOfFields)
 {
     foreach (var field in ListOfFields)
     {
         fields.SetFieldProperty(field, "setfflags", PdfFormField.FF_READ_ONLY, null);
     }
 }
Example #10
0
// ---------------------------------------------------------------------------
        public byte[] FillTemplate(byte[] pdf, Movie movie)
        {
            using (MemoryStream ms = new MemoryStream()) {
                PdfReader reader = new PdfReader(pdf);
                using (PdfStamper stamper = new PdfStamper(reader, ms)) {
                    AcroFields form  = stamper.AcroFields;
                    BaseColor  color = WebColors.GetRGBColor(
                        "#" + movie.entry.category.color
                        );
                    PushbuttonField bt = form.GetNewPushbuttonFromField(POSTER);
                    bt.Layout           = PushbuttonField.LAYOUT_ICON_ONLY;
                    bt.ProportionalIcon = true;
                    bt.Image            = Image.GetInstance(Path.Combine(IMAGE, movie.Imdb + ".jpg"));
                    bt.BackgroundColor  = color;
                    form.ReplacePushbuttonField(POSTER, bt.Field);

                    PdfContentByte           canvas = stamper.GetOverContent(1);
                    float                    size   = 12;
                    AcroFields.FieldPosition f      = form.GetFieldPositions(TEXT)[0];
                    while (AddParagraph(CreateMovieParagraph(movie, size),
                                        canvas, f, true) && size > 6)
                    {
                        size -= 0.2f;
                    }
                    AddParagraph(CreateMovieParagraph(movie, size), canvas, f, false);

                    form.SetField(YEAR, movie.Year.ToString());
                    form.SetFieldProperty(YEAR, "bgcolor", color, null);
                    form.SetField(YEAR, movie.Year.ToString());
                    stamper.FormFlattening = true;
                }
                return(ms.ToArray());
            }
        }
Example #11
0
        public Stream FillForm(Stream inputStream, Models.PDF.Invoice model)
        {
            Stream     outStream  = new MemoryStream();
            PdfReader  pdfReader  = null;
            PdfStamper pdfStamper = null;
            Stream     inStream   = null;

            try
            {
                pdfReader  = new PdfReader(inputStream);
                pdfStamper = new PdfStamper(pdfReader, outStream);

                AcroFields form = pdfStamper.AcroFields;
                Font       font = GetTHSarabunNew();
                foreach (string key in form.Fields.Keys)
                {
                    form.SetFieldProperty(key, "textfont", font.BaseFont, null);
                    form.RegenerateField(key);
                }
                form.SetField("txt_CustomerName", "เจนวิทย์ เพ็ญจำรัส");
                //  form.SetField("rdb_ans_1","Choice1");

                //  form.SetField("txt_CardName", model.CardName);
                //form.SetField("txt_DocNum", model.Docnum);
                // set this if you want the result PDF to not be editable.
                pdfStamper.FormFlattening = true;
                return(outStream);
            }
            finally
            {
                pdfStamper?.Close();
                pdfReader?.Close();
                inStream?.Close();
            }
        }
Example #12
0
        public void GetChPdf(string templatePath, string newFilePath, Dictionary <string, string> parameters)
        {
            PdfReader  pdfReader  = new PdfReader(templatePath);
            PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFilePath, FileMode.Create));
            AcroFields acroFields = pdfStamper.AcroFields;
            BaseFont   value      = BaseFont.CreateFont("C:\\Windows\\Fonts\\simsun.ttc,0", "Identity-H", true);

            foreach (KeyValuePair <string, string> parameter in parameters)
            {
                acroFields.SetFieldProperty(parameter.Key, "textfont", value, null);
                acroFields.SetField(parameter.Key, parameter.Value);
            }
            for (int i = 0; i < CheckList.Count; i++)
            {
                int nDataLength = 0;
                DllImageFuc.GetImageDataRoiFunc(InfoStruct, SlideZoom, CheckList[i].GlobalPosX, CheckList[i].GlobalPosY, CheckList[i].Width, CheckList[i].Height, out IntPtr datas, ref nDataLength, true);
                byte[] array = new byte[nDataLength];
                if (datas != IntPtr.Zero)
                {
                    Marshal.Copy(datas, array, 0, nDataLength);
                }
                DllImageFuc.DeleteImageDataFunc(datas);
                iTextSharp.text.Image instance = iTextSharp.text.Image.GetInstance(array);
                instance.ScaleAbsoluteWidth(40f);
                instance.ScaleAbsoluteHeight(40f);
                instance.SetAbsolutePosition(40 + i * 50 + 10, 400f);
                PdfContentByte overContent = pdfStamper.GetOverContent(1);
                overContent.AddImage(instance);
            }
            pdfStamper.FormFlattening = true;
            pdfStamper.Close();
            pdfReader.Close();
        }
Example #13
0
        public byte[] importXml(byte[] inputPdf, Stream xmlData, Boolean isSign)
        {
            Console.WriteLine("Read PDF");
            PdfReader    reader  = new PdfReader(inputPdf);
            MemoryStream output  = new MemoryStream();
            PdfStamper   stamper = new PdfStamper(reader, output, '\0', false);

            AcroFields form = stamper.AcroFields;
            XfaForm    xfa  = form.Xfa;

            Console.WriteLine("Fill Data");
            xfa.FillXfaForm(xmlData);
            Console.WriteLine("Set fields to read only");
            if (!isSign)
            {
                foreach (string key in form.Fields.Keys)
                {
                    form.SetFieldProperty(key, "setfflags", PdfFormField.FF_READ_ONLY, null);
                }
            }

            stamper.Close();
            reader.Close();
            return(output.ToArray());
        }
        /// <summary>
        /// Set font family and font size on all text fields for consistency
        /// </summary>
        /// <param name="stamperFields">
        /// PdfStamper.AcroFields - so we can set the form field value here.
        /// </param>
        /// <param name="family">BaseFont</param>
        /// <param name="size">Desired size</param>
        public static void SetTemplateFont(AcroFields stamperFields, BaseFont family, float size)
        {
            // ignore everything except text fields
            var textFields = stamperFields.Fields.Keys
                             .Where(x => stamperFields.GetFieldType(x) == AcroFields.FIELD_TYPE_TEXT &&
                                    GetFontSize(stamperFields, x) != 0f
                                    )
                             .ToDictionary(k => k);

            Console.WriteLine(string.Join(" :: ", textFields.Keys.ToArray()));

            foreach (var key in textFields.Keys)
            {
                stamperFields.SetFieldProperty(key, "textfont", family, null);
                stamperFields.SetFieldProperty(key, "textsize", size, null);
            }
        }
        public void Go()
        {
            var           outputFile   = Helpers.IO.GetClassOutputPath(this);
            var           testField    = "title";
            var           testText     = "0";
            List <string> testTextList = new List <string>();

            for (int i = 1; i <= 76; ++i)
            {
                testTextList.Add(string.Format("{0}[{1}]", testText, i));
            }
            var   baseFont   = BaseFont.CreateFont();
            float testSize   = 8f;
            char  delimiter  = ',';
            var   testJoined = string.Join(delimiter.ToString(), testTextList.ToArray());

            using (var reader = Helpers.IO.GetInputReader(fileName))
            {
                using (var stream = new FileStream(outputFile, FileMode.Create))
                {
                    using (var stamper = new PdfStamper(reader, stream))
                    {
                        AcroFields fields = stamper.AcroFields;
                        var        width  = fields.GetFieldPositions("title")[0].position.Width;

                        fields.SetFieldProperty(
                            testField, "textfont", baseFont, null
                            );
                        fields.SetFieldProperty(
                            testField, "textsize", testSize, null
                            );

                        string fit;
                        string over;
                        Console.WriteLine("TEST STRING: {0}\n", testJoined);

                        FitSingleLine(fields, testJoined, "title", out fit, out over);
                        Console.WriteLine("fit: {0}\n", fit);
                        Console.WriteLine("over: {0}\n", over);

                        fields.SetField(testField, fit);
                    }
                }
            }
        }
Example #16
0
        public static AcroFields LockFields(this AcroFields pdfForm, string[] formFields)
        {
            foreach (var formField in formFields)
            {
                pdfForm.SetFieldProperty(formField, "setfflags", PdfFormField.FF_READ_ONLY, null);
            }

            return(pdfForm);
        }
Example #17
0
        public static bool GetPdf(string templatePath, string newFilePath, Dictionary <string, string> parameters)
        {
            bool result = true;

            try
            {
                PdfReader  pdfReader  = new PdfReader(templatePath);
                PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFilePath, FileMode.Create));


                //加密
                pdfStamper.SetEncryption(PdfWriter.STRENGTH128BITS, "", null, PdfWriter.AllowPrinting);

                //通过iTextAsian调用中文字体
                //iTextSharp.text.io.StreamUtil.AddToResourceSearch(Assembly.LoadFile(Utils.GetMapPath(Utils.GetAppSettingValue("appName")+"lib/iTextAsian.dll")));
                //iTextSharp.text.io.StreamUtil.AddToResourceSearch(Assembly.LoadFile(Utils.GetMapPath(Utils.GetAppSettingValue("appName") + "lib/iTextAsianCmaps.dll")));
                //BaseFont baseFT = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
                // BaseFont baseFT1 = BaseFont.CreateFont("MHei-Medium", "UniCNS-UCS2-H", BaseFont.EMBEDDED);


                //调用系统字体
                BaseFont baseFT = BaseFont.CreateFont(@"C:\Windows\Fonts\MSYH.TTC,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                //BaseFont baseFT1 = BaseFont.CreateFont(@"C:\Windows\Fonts\msyhbd.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                BaseFont baseFT1 = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);


                //获取域的集合;
                AcroFields pdfFormFields = pdfStamper.AcroFields;

                //设置域的字体;生成文件几十K

                pdfFormFields.AddSubstitutionFont(baseFT);

                //为需要赋值的域设置值;
                foreach (KeyValuePair <string, string> parameter in parameters)
                {
                    if (parameter.Key == "titile")
                    {
                        pdfFormFields.SetFieldProperty(parameter.Key, "textfont", baseFT1, null);
                    }

                    //pdfFormFields.SetFieldProperty(parameter.Key, "textfont", baseFT, null );//生成文件过大(十几MB左右) 摒弃掉了
                    pdfFormFields.SetField(parameter.Key, parameter.Value);
                }
                //这句很重要,如果为false那么生成的PDF文件还能编辑,一定要设为true;
                pdfStamper.FormFlattening = true;
                pdfStamper.Close();
                pdfReader.Close();
            }
            catch
            {
                result = false;
                throw;
            }

            return(result);
        }
        /// <summary>
        /// 根据数据填充模板并获取一个一个pdf文件流
        /// </summary>
        /// <param name="listPara">数据参数</param>
        /// <returns>所有的pdf文件字节数组,并装在一个数组中</returns>
        public static List <byte[]> GetPdfs(List <Dictionary <string, string> > listPara)
        {
            //获取中文字体,第三个参数表示为是否潜入字体,但只要是编码字体就都会嵌入。
            BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);


            List <byte[]> pdfStreams = new List <byte[]>();

            foreach (Dictionary <string, string> para in listPara)
            {
                //读取模板文件
                PdfReader reader = new PdfReader(@"C:\Users\Administrator\Desktop\template.pdf");

                //创建文件流用来保存填充模板后的文件
                MemoryStream stream = new MemoryStream();

                PdfStamper stamp = new PdfStamper(reader, stream);

                stamp.AcroFields.AddSubstitutionFont(baseFont);

                AcroFields form = stamp.AcroFields;
                stamp.FormFlattening = true;//表单文本框锁定
                //填充表单
                foreach (KeyValuePair <string, string> parameter in para)
                {
                    //要输入中文就要设置域的字体;
                    form.SetFieldProperty(parameter.Key, "textfont", baseFont, null);
                    //为需要赋值的域设置值;
                    form.SetField(parameter.Key, parameter.Value);
                }

                //添加图片
                // 通过域名获取所在页和坐标,左下角为起点
                float[] positions = form.GetFieldPositions("sender");
                int     pageNo    = (int)positions[0];
                float   x         = positions[1];
                float   y         = positions[2];
                // 读图片
                Image image = Image.GetInstance(@"C:\Users\Administrator\Desktop\02.png");
                // 获取操作的页面
                PdfContentByte under = stamp.GetOverContent(pageNo);
                // 根据域的大小缩放图片
                image.ScaleToFit(positions[3] - positions[1], positions[4] - positions[2]);
                // 添加图片
                image.SetAbsolutePosition(x, y);
                under.AddImage(image);


                stamp.Close();
                reader.Close();

                byte[] result = stream.ToArray();
                pdfStreams.Add(result);
            }
            return(pdfStreams);
        }
Example #19
0
        public void FillOut(String src, String dest, String name, String value)
        {
            PdfReader  reader  = new PdfReader(src);
            PdfStamper stamper = new PdfStamper(reader, new FileStream(dest, FileMode.Create), '\0', true);
            AcroFields form    = stamper.AcroFields;

            form.SetField(name, value);
            form.SetFieldProperty(name, "setfflags", PdfFormField.FF_READ_ONLY, null);
            stamper.Close();
        }
Example #20
0
// ---------------------------------------------------------------------------

        /**
         * Manipulates a PDF file src with the file dest as result
         * @param src the original PDF
         */
        public byte[] ManipulatePdf(byte[] src)
        {
            PdfReader reader = new PdfReader(src);

            using (MemoryStream ms = new MemoryStream()) {
                using (PdfStamper stamper = new PdfStamper(reader, ms)) {
                    AcroFields form = stamper.AcroFields;
                    form.SetField("text_1", "Bruno Lowagie");
                    form.SetFieldProperty("text_2", "fflags", 0, null);
                    form.SetFieldProperty("text_2", "bordercolor", BaseColor.RED, null);
                    form.SetField("text_2", "bruno");
                    form.SetFieldProperty("text_3", "clrfflags", TextField.PASSWORD, null);
                    form.SetFieldProperty("text_3", "setflags", PdfAnnotation.FLAGS_PRINT, null);
                    form.SetField("text_3", "12345678", "xxxxxxxx");
                    form.SetFieldProperty("text_4", "textsize", 12f, null);
                    form.RegenerateField("text_4");
                }
                return(ms.ToArray());
            }
        }
Example #21
0
        public void FillOutAndSign(String keystore, String src, String name, String fname, String value, String dest)
        {
            Pkcs12Store store = new Pkcs12Store(new FileStream(keystore, FileMode.Open), PASSWORD);
            String      alias = "";
            ICollection <X509Certificate> chain = new List <X509Certificate>();

            // searching for private key
            foreach (string al in store.Aliases)
            {
                if (store.IsKeyEntry(al) && store.GetKey(al).Key.IsPrivate)
                {
                    alias = al;
                    break;
                }
            }
            AsymmetricKeyEntry pk = store.GetKey(alias);

            foreach (X509CertificateEntry c in store.GetCertificateChain(alias))
            {
                chain.Add(c.Certificate);
            }
            RsaPrivateCrtKeyParameters parameters = pk.Key as RsaPrivateCrtKeyParameters;

            PdfReader  reader  = new PdfReader(src);
            FileStream os      = new FileStream(dest, FileMode.Create);
            PdfStamper stamper = PdfStamper.CreateSignature(reader, os, '\0', null, true);
            AcroFields form    = stamper.AcroFields;

            form.SetField(fname, value);
            form.SetFieldProperty(name, "setfflags", PdfFormField.FF_READ_ONLY, null);
            form.SetFieldProperty(fname, "setfflags", PdfFormField.FF_READ_ONLY, null);
            // Creating the appearance
            PdfSignatureAppearance appearance = stamper.SignatureAppearance;

            appearance.SetVisibleSignature(name);
            // Creating the signature
            PrivateKeySignature pks = new PrivateKeySignature(parameters, DigestAlgorithms.SHA256);

            MakeSignature.SignDetached(appearance, pks, chain, null, null, null, 0, CryptoStandard.CMS);
        }
Example #22
0
        public void DisableFields(string oldPdfPath, string newPdfPath, string[] fieldsToDisable)
        {
            PdfReader reader = new PdfReader(oldPdfPath);

            using (PdfStamper stamper = new PdfStamper(reader, new FileStream(newPdfPath, FileMode.Create)))
            {
                AcroFields form = stamper.AcroFields;
                for (int i = 0; i < fieldsToDisable.Length; i++)
                {
                    form.SetFieldProperty(fieldsToDisable[i], "setfflags", PdfFormField.FF_READ_ONLY, null);
                }
            }
        }
Example #23
0
        private static void SetWeapons(ICharacter character, AcroFields form)
        {
            var n = 1;

            foreach (var weapon in character.Weapons.Take(3))
            {
                form.SetField($"Wpn{n} Name", weapon.Name);
                form.SetField($"Wpn{n} AtkBonus", $"{createAttackBonus(character, weapon)}");
                form.SetField($"Wpn{n} Damage", createDamageString(character, weapon));
                n++;
            }
            String additionalWeapons = "";

            foreach (var weapon in character.Weapons.Skip(3))
            {
                additionalWeapons += weapon.Name + ";  " + "Atk +" + createAttackBonus(character, weapon) + ";  " + createDamageString(character, weapon) + Environment.NewLine;
            }
            form.SetFieldProperty("AttacksSpellcasting", "textsize", 8f, null);
            form.SetField("AttacksSpellcasting", additionalWeapons);

            int?createAttackBonus(ICharacter person, Weapon weapon)
            {
                var statSearch = StatSearch(weapon);

                var attack = person.Abilities.FirstOrDefault(x => x.Name == statSearch)?.Bonus + weapon.AttackBonus;

                if (weapon.Prof)
                {
                    if (int.TryParse(person.Properities?.FirstOrDefault(x => x.Name == "ProfBonus")?.Value, out var intOut))
                    {
                        attack += intOut;
                    }
                }

                return(attack);
            }

            string createDamageString(ICharacter person, Weapon weapon)
            {
                var damageString = string.Empty;

                foreach (var damage in weapon.Damages)
                {
                    damageString  = string.IsNullOrWhiteSpace(damageString) ? "" : damageString + " & ";
                    damageString +=
                        $"{damage.Dice} + {person.Abilities.FirstOrDefault(x => x.Name == (damage.Stat == "base" ? StatSearch(weapon) : damage.Stat))?.Bonus + int.Parse(damage.Bonus)} {damage.Type}";
                }

                return(damageString);
            }
        }
        /// <summary>
        /// Установка значения текстового поля с использованием шрифта, определенного для этого поля или первого подходящего шрифта, при невозможности использования шрифта поля..
        /// </summary>
        /// <param name="form">Объект формы.</param>
        /// <param name="reader">Объект чтения из шаблона PDF.</param>
        /// <param name="fonts">Список всех шрифтов формы.</param>
        /// <param name="fieldName">Имя поля формы.</param>
        /// <param name="value">Значение поля формы.</param>
        public static void SetFieldWithFont(this AcroFields form, PdfReader reader, PdfDictionary fonts, string fieldName, string value)
        {
            var fontName = FindFieldFontName(reader, fieldName);

            if (!string.IsNullOrWhiteSpace(fontName))
            {
                var font = FindFontInFontDict(fonts, fontName);
                if (font != null)
                {
                    form.SetFieldProperty(fieldName, "textfont", font, null);
                }
            }
            form.SetField(fieldName, value);
        }
Example #25
0
        public FileResult Index()
        {
            //获取中文字体,第三个参数表示为是否潜入字体,但只要是编码字体就都会嵌入。
            BaseFont baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            //读取模板文件
            PdfReader reader = new PdfReader(@"G:\简版征信PDF样本\陈贵年 2019.08.06个人信用报告.pdf");

            //创建文件流用来保存填充模板后的文件
            System.IO.MemoryStream stream = new System.IO.MemoryStream();

            PdfStamper stamp = new PdfStamper(reader, stream);
            //设置表单字体,在高版本有用,高版本加入这句话就不会插入字体,低版本无用
            //stamp.AcroFields.AddSubstitutionFont(baseFont);

            AcroFields form = stamp.AcroFields;

            //表单文本框是否锁定
            stamp.FormFlattening = true;

            Dictionary <string, string> para = new Dictionary <string, string>();

            para.Add("username", "国科");
            para.Add("usertel", "133333333");
            para.Add("workservice", "电脑开不机,可能是电源问题,维修前报价(主机缺侧盖,有重要资料,不能重装)");
            para.Add("maketime", "2017年12月11日 12:24");
            para.Add("recvicename", "某某某");
            para.Add("workername", "某某某");
            para.Add("weixinpic", "");

            //填充表单,para为表单的一个(属性-值)字典
            foreach (KeyValuePair <string, string> parameter in para)
            {
                //要输入中文就要设置域的字体;
                form.SetFieldProperty(parameter.Key, "textfont", baseFont, null);
                //为需要赋值的域设置值;
                form.SetField(parameter.Key, parameter.Value);
            }

            //按顺序关闭io流

            stamp.Close();
            reader.Close();
            //生成文件
            FileResult fileResult = new FileContentResult(stream.ToArray(), "application/pdf");

            //fileResult.FileDownloadName = "4.pdf";
            return(fileResult);
        }
Example #26
0
        public FillPDF(string template)
        {
            pdfTemplate   = template;
            pdfreader     = new PdfReader(pdfTemplate + "blankapp.pdf");
            myPDF         = new ByteBuffer();
            pdfStamper    = new PdfStamper(pdfreader, myPDF);
            pdfFormFields = pdfStamper.AcroFields;

            additionalHealthAnswers = new List <ByteBuffer>();


            foreach (DictionaryEntry f in pdfreader.AcroFields.Fields)
            {
                pdfFormFields.SetFieldProperty(f.Key.ToString(), "textsize", (float)0.0, null);
            }
        }
Example #27
0
        /**
         * Manipulates a PDF file src with the file dest as result
         * @param src the original PDF
         */
        public byte[] ManipulatePdfFont1(byte[] src)
        {
            PdfReader reader = new PdfReader(src);

            using (MemoryStream ms = new MemoryStream()) {
                using (PdfStamper stamper = new PdfStamper(reader, ms)) {
                    AcroFields form    = stamper.AcroFields;
                    BaseFont   unicode = BaseFont.CreateFont(
                        "HYSMyeongJoStd-Medium", "UniKS-UCS2-H", BaseFont.NOT_EMBEDDED
                        );
                    form.SetFieldProperty("description", "textfont", unicode, null);
                    form.SetField("description", BINJIP);
                }
                return(ms.ToArray());
            }
        }
Example #28
0
        public void Disable(string populatedFilePath, string readOnlyFilePath)
        {
            PdfReader     reader         = new PdfReader(populatedFilePath);
            List <string> readOnlyFields = CreateList();

            using (PdfStamper stamper = new PdfStamper(reader, new FileStream(readOnlyFilePath, FileMode.Create)))
            {
                AcroFields fields = stamper.AcroFields;

                foreach (var value in readOnlyFields)
                {
                    fields.SetFieldProperty(value, "setfflags", PdfFormField.FF_READ_ONLY, null);
                }

                stamper.Close();
            }
        }
Example #29
0
        /// <summary>
        /// 根据填充内容获得一页的PDF文件内容
        /// </summary>
        /// <param name="pdf1">模板文件</param>
        /// <param name="lfi">数据LIST</param>
        /// <param name="buf">返回的BUFFER</param>
        /// <returns>0为不成功</returns>
        public static int Get1PageBuf(string pdf1, List <FieldInfo> lfi, out byte[] buf)
        {
            int          iret = 0;
            MemoryStream ms   = new MemoryStream();

            PdfReader  reader = new PdfReader(pdf1);
            PdfStamper stamp1 = new PdfStamper(reader, ms);

            //不关闭流
            stamp1.Writer.CloseStream = false;

            AcroFields form1 = stamp1.AcroFields;

            //BaseFont.AddToResourceSearch("iTextAsian.dll");
            //BaseFont.AddToResourceSearch("iTextAsianCmaps.dll");
            BaseFont.AddToResourceSearch(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\\bin\\iTextAsian.dll");
            BaseFont.AddToResourceSearch(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\\bin\\iTextAsianCmaps.dll");


            BaseFont font = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);

            //以下为填写表单部分
            for (int i = 0; i < lfi.Count; i++)
            {
                form1.SetFieldProperty(lfi[i].FieldName, "textfont", font, null);
                form1.SetField(lfi[i].FieldName, lfi[i].FieldValue);
            }

            //一下仅用于进度条start
            CProcessInfo info = HttpContext.Current.Session["ProcessInfo"] as CProcessInfo;

            info.Message = lfi[0].FieldValue + "创建打印文件完成";
            info.Current++;
            //一下仅用于进度条end

            stamp1.FormFlattening = true;
            stamp1.Close();

            buf  = ms.GetBuffer();
            iret = 1;
            return(iret);
        }
Example #30
0
// ---------------------------------------------------------------------------

        /**
         * Shows the stream passed to the server with POST
         */
        protected void DoPost(byte[] pdf, Stream stream)
        {
            // We get a resource from our web app
            PdfReader reader = new PdfReader(pdf);

            // Now we create the PDF
            using (PdfStamper stamper = new PdfStamper(reader, stream)) {
                // We alter the fields of the existing PDF
                AcroFields fields = stamper.AcroFields;
                fields.SetFieldProperty(
                    "personal.password", "clrfflags", TextField.PASSWORD, null
                    );
                var req_form = WebContext.Request.Form;
                foreach (string k in req_form)
                {
                    fields.SetField(k, req_form[k]);
                }
                stamper.FormFlattening = true;
            }
        }