Я работаю над динамическим заполнением полей в документе 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 # или я просто что-то упускаю.