使用iText Sharp读取复选框,单选按钮名称和PDF值

San*_*r M 4 pdf annotations itextsharp c#-4.0 acrofields

我有一个可填写的PDF包含CheckBoxes和RadioButtons和TextBox.

我如何获得CheckBox名称及其值,我们如何知道它是一个复选框/单选按钮?

我正在使用iTextSharp并查看我的下面的代码

 PdfReader pdfReader = new PdfReader(FileName);
 pdfReader.SelectPages("37");
        MemoryStream oStream = new MemoryStream();
        PdfStamper stamper = new PdfStamper(pdfReader, oStream);
        AcroFields form = stamper.AcroFields;
        if (form.Fields.Count() > 0)
        {
            IDictionary<string,AcroFields.Item> oDic= form.Fields;

            foreach (string FieldName in oDic.Keys)
            {
                //FieldName - CheckBox name; i need to confirm that is a Checkbox...
            }

            foreach (AcroFields.Item oItem in oDic.Values)
            {
                // how do we get check box values
            }
        }
Run Code Online (Sandbox Code Playgroud)

Mik*_*ike 5

如果您仍然需要,以下代码可以帮助您.它只适用于AcroForms

int BUTTON = 1;
int CHECK_BOX = 2;
int RADIO_BUTTON = 3;
int TEXT_FIELD = 4;
int LIST_BOX = 5;
int COMBO_BOX = 6;

PdfReader pdfReader = new PdfReader(path);
AcroFields af = pdfReader.AcroFields;

foreach (var field in af.Fields)
{
    bool isRadio = RADIO_BUTTON == af.GetFieldType(field.Key));
}
Run Code Online (Sandbox Code Playgroud)

编辑:

此外,field.Key是字段和字段的名称.Value是它的值.

对于复选框,如果(field.Value =="是")则选择它......如果是其他任何内容,则不会选中它.

编辑:

我刚刚发现如果你需要它们,如何获得单选按钮选项.

myKey k = new myKey(field.Key, af.GetField(field.Key), af.GetFieldType(field.Key));
if (k.isRadio())
{
    try { k.options.AddRange(af.GetAppearanceStates(k.key)); }
    catch { }
}
Keys.Add(k);
Run Code Online (Sandbox Code Playgroud)