在下面的代码中,对于C#中的iTextSharp,字段值的空值是否可以接受,即第二个参数可以为null还是必须是非空字符串?我在此代码中设置各种acrofields的值。我找不到有关此方法的任何合适的文档。
foreach (var kvp in fieldsValuesCollection)
{
acroFields.SetField(kvp.Key, kvp.Value);
}
更新1:
我终于找到了答案,并且'SetField'方法的第二个参数不能为null(必须是非空字符串)。我运行了从这个URL下载的一些示例代码:http://www.4guysfromrolla.com/articles/030211-1.aspx并在我的机器上本地运行它,导致下面显示的异常。我对下载的代码所做的唯一更改是将所有文本类型的acrofields设置为null而不是非空字符串,并且它引发了错误。
因此开发人员在设置acrofield值时应该小心,否则他们最终可能会遇到难以发现的错误,因为iTextSharp的API文档中没有提到这一点。
我以前测试的代码如下。
foreach (var fieldName in formFieldMap.Keys)
{
if (formFields.GetFieldType(fieldName) == 4)
{
formFields.SetField(fieldName, null);
}
else
{
formFields.SetField(fieldName, formFieldMap[fieldName]);
}
}