Получить значение экспорта для флажка с помощью iTextSharp

Я работаю над динамическим заполнением полей в документе pdf с помощью ITextSharp. Я хотел бы иметь возможность определить «экспортное значение» флажка из выделенного кода, чтобы определить, какое значение отправить в этот флажок, если он должен быть установлен. Большинство документов, с которыми я работал в прошлом, имели одинаковое значение экспорта для каждого флажка, но тот, с которым я сейчас работаю, варьируется от флажка к флажку. Я мог бы пройтись по всем текстовым полям и сделать их согласованными, но это сэкономило бы много времени в будущем, если бы я мог просто определить, каково значение экспорта этих флажков во время выполнения, и установить их соответствующим образом.

Заранее спасибо !

Я попытался реализовать приведенное ниже решение на C # и получил следующий код:

 public string GetCheckBoxExportValue(AcroFields pdfDocument, string checkBoxFieldName)
    {
        AcroFields.Item item = pdfDocument.GetFieldItem(checkBoxFieldName);
        if (item.values.Count > 0)
        {
            PdfDictionary valueDict = item.GetValue(0);

            PdfDictionary appearanceDict = valueDict.GetAsDict(PdfName.AP);

            // if there's an appearance dict at all, one key will be "Off", and the other
            // will be the export value... there should only be two.
            if (appearanceDict != null)
            {


                foreach (PdfName curKey in appearanceDict.Keys)
                {
                    if (!PdfName.OFF.Equals(curKey))
                    {
                        return curKey.ToString(); // string will have a leading '/' character
                    }
                }
            }

            // if that doesn't work, there might be an /AS key, whose value is a name with 
            // the export value, again with a leading '/'
            PdfName curVal = valueDict.GetAsName(PdfName.AS);
            if (curVal != null)
            {
                return curVal.ToString();
            }

        }
        //return null if you get this far
            return null;

    }

Это просто возвращает "/ D" каждый раз. Я не уверен, нужно ли использовать другой подход в C # или я просто что-то упускаю.

8
задан Ben 22 December 2010 в 17:56
поделиться