Определите различные типы полей в заполняемом PDF
Я новичок в C# и PDFsharp, поэтому я не уверен, что это лучший способ проверить различные типы полей. Прямо сейчас я использую следующий код для замены значения в текстовых полях, но это потому, что я знаю, что поле является флажком.
Но если мне нужно пройтись по полям, полученным из PDF, как я могу проверить, является ли поле флажком или текстовым полем или чем-то еще целиком?
PdfCheckBoxField currentField = (PdfCheckBoxField)(form["CheckBox2"]);
currentField.Checked = true;
Как проверить тип поля, если, предположим, я перебираю все поля следующим образом:
for (int i=0; i<form.Count; i++)
{
field = form.Names[i];
}
Я не нашел много информации на этом сайте PDFsharp. Любая помощь будет оценена.
1 ответ
Наиболее естественный подход, чтобы определить, какое поле формы вы получаете для form["CheckBox2"]
и, в частности, к какому конкретному классу поля формы вы можете привести его, просто определить тип этого объекта. Это может быть сделано путем тестирования совместимости типов с использованием is
по ключевому слову или путем проверки на идентичность типа typeof
а также GetType()
:
var currentField = form["CheckBox2"];
if (currentField is PdfCheckBoxField)
{
// the type of currentField is compatible with PdfCheckBoxField
PdfCheckBoxField currentCheckBox = (PdfCheckBoxField)currentField;
...
}
или же
var currentField = form["CheckBox2"];
if (currentField != null && currentField.GetType() == typeof(PdfCheckBoxField))
{
// the type of currentField is PdfCheckBoxField
PdfCheckBoxField currentCheckBox = (PdfCheckBoxField)currentField;
...
}
Начиная с C# 7 is
Ключевое слово поддерживает сопоставление с шаблоном:
var currentField = form["CheckBox2"];
if (currentField is PdfCheckBoxField currentCheckBox)
{
// the type of currentField is compatible with PdfCheckBoxField
// a PdfCheckBoxField variable currentCheckBox here already is declared and initialized with currentField
...
}