在可填写的PDF

时间:2018-01-10 23:46:56

标签: c# pdf pdfsharp

我是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 个答案:

答案 0 :(得分:2)

确定form["CheckBox2"]所获得的表单字段的最自然的方法,特别是可以将其投射到哪个特定表单字段类,就是简单地确定该对象的类型。这可以通过使用is关键字测试类型兼容性或使用typeofGetType()测试类型标识来完成:

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关键字支持pattern matching

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
    ...
}