2

在以下 C# 中 iTextSharp 的代码中,字段值的空值是否可以接受,即第二个参数可以为空还是必须为非空字符串?我正在此代码中设置各种 acrofields 的值。我找不到有关此方法的任何合适文档。

   foreach (var kvp in fieldsValuesCollection)
     {
       acroFields.SetField(kvp.Key, kvp.Value);
     }

更新 1:

我终于找到了答案,'SetField'方法的第二个参数不能为空(必须是非空字符串)。我运行了从这个 url 下载的一些示例代码:http ://www.4guysfromrolla.com/articles/030211-1.aspx并在我的机器上本地运行它,导致如下所示的异常。我对下载的代码所做的唯一更改是将所有文本类型的 acrofields 设置为 null 而不是非 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]);
        }
    }
4

0 回答 0