невозможно прочитать элементы управления PDF в c # - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь прочитать PDf и внутри элементов управления PDF.Мой PDF создан библиотекой Adobe PDF.получить пустое поле acro fields.but моя форма имеет 4 флажка.4 флажок я могу использовать, чтобы проверить или снять флажок.Я хочу, чтобы флажок был установлен или нет.я использовал itextsharp для чтения PDF, но он не находит элементы управления.

private static string GetFormFieldNamesWithValues(PdfReader pdfReader)
    {

        return string.Join("\r\n", pdfReader.AcroFields.Fields
       .Select(x => x.Key + "=" +
                pdfReader.AcroFields.GetField(x.Key) + "=" + pdfReader.AcroFields.GetFieldType(x.Key)).ToArray());

    }


    static void Main(string[] args)
    {
        DataTable filedDetails;
        DataRow dr;
        string cName="";
        string cType = "";
        string cValue = "";
        int txtCount = 0;
        int btnCount = 0;
        int chkBoxCount = 0;
        int rdButtonCount = 0;
        int dropDownCount = 0;

        var fileName = "C:\\PreScreenings\\ViewPDF Cien.pdf";// PDFFileName.Get(context);
        //var fileName = @"C:\Users\465sanv\Downloads\Read-PDF-Controls-master\ReadPDFControl\Input\David1990.pdf";
        var fields = GetFormFieldNamesWithValues(new PdfReader(fileName));
        string[] splitRows = fields.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
        filedDetails = new DataTable("PDF Table");
        filedDetails.Columns.AddRange(new[] { new DataColumn("Control Name"), new DataColumn("Control Type"), new DataColumn("Control Value") });

        foreach (string row in splitRows)
        {

            dr = filedDetails.NewRow();
            string[] str = row.Split("=".ToCharArray(), StringSplitOptions.None);

            cName = str[0].ToString();
            cValue = str[1].ToString();
            if (str[2].ToString() == "1")
            {
                btnCount++;
                cType = "Button" + btnCount.ToString();
            }
            else if (str[2].ToString() == "2")
            {
                chkBoxCount++;
                cType = "Check Box" + chkBoxCount.ToString();

            }
            else if (str[2].ToString() == "3")
            {
                rdButtonCount++;
                cType = "Radio Button" + rdButtonCount.ToString();
            }
            else if (str[2].ToString() == "4")
            {
                txtCount++;
                cType = "Text Field" + txtCount.ToString();
            }
            else if (str[2].ToString() == "6")
            {
                dropDownCount++;
                cType = "Drop Down" + dropDownCount.ToString();
            }
            dr[0] = cName;
            dr[1] = cType;
            dr[2] = cValue;

            filedDetails.Rows.Add(dr);

        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...