示例#1
0
        public static void WriteAcroForm(string input_file_path, string output_file_path, FormDataItems item)
        {
            //string src = @"C:\Users\timit\Source\Repos\tttimit\pdf_csharp\Pdf\1022.pdf";
            //string dest = @"C:\Users\timit\Source\Repos\tttimit\pdf_csharp\Pdf\Pdfout.pdf";


            PdfReader reader = new PdfReader(input_file_path);

            reader.SetUnethicalReading(true);
            PdfWriter   writer = new PdfWriter(output_file_path);
            PdfDocument pdfDoc = new PdfDocument(reader, writer);
            PdfAcroForm form   = PdfAcroForm.GetAcroForm(pdfDoc, true);

            IDictionary <string, PdfFormField> fields = form.GetFormFields();//这样获取的是没有顺序的数据

            string[] relationsCheckBox = { "ap.marital nev mar", "ap.marital div", "ap.marital sep", "ap.marital def", "ap.marital wid", "ap.marital eng", "ap.marital mar" };
            String[] toggleBtn         = { "ap.app", "ap.com dimia" };
            foreach (var key in fields.Keys)
            {
                string value;
                if (item.TryGetValue(key, out value))
                {
                    if (Array.IndexOf(relationsCheckBox, key) != -1)
                    {
                        //https://github.com/itext/itext7/blob/develop/forms/src/main/java/com/itextpdf/forms/fields/PdfFormField.java
                        fields[key].SetCheckType(1); // TYPE_CHECK = 1
                        fields[key].RegenerateField();
                    }
                    fields[key].SetValue(value);
                }
                else //获取不到值,这里只有未选中的婚姻关系框
                {
                    fields[key].SetValue("no");
                }
            }
            //form.FlattenFields();
            pdfDoc.Close();
            Console.WriteLine("Program ends");
        }