ITextSharp 设置背景不适用于所有字段

ITextSharp setting background working not for all fields

我有以下所有 pdf 字段的代码设置背景:

 using (var pdfReader = new PdfReader(template))
 {
     using (var pdfStamper = new PdfStamper(pdfReader, new FileStream(fileName, FileMode.Create)){FormFlattening = true})
     {
          var fields = pdfStamper.AcroFields;
          foreach (var field in fields.Fields)
          {
             fields.SetFieldProperty(field.Key, "bgcolor", new BaseColor(Color.Red), null);
          }
     }
 }

但是,问题是并非为所有字段设置了背景,只是为其中一些字段设置了背景。我调试了,所有字段的方法都是运行,每次都返回true。字段具有完全相同的属性(只有名称不同)。我运行没主意了,有人请帮忙。

谢谢,但经过 4 小时的尝试,我弄明白了。它没有填充没有价值的字段。所以你必须至少把 String.Empty 作为一个值,然后背景就会被填满。可能会有用,可以为某人节省几个小时。

如果要更改字段属性,更改后必须重新生成字段才能使编辑生效。 http://developers.itextpdf.com/question/how-change-text-color-acroform-field

 Stream inputPdfStream = new FileStream(BASE_PATH + inputFileName, FileMode.Open, FileAccess.Read, FileShare.None);
using (Stream outputPdfStream = new FileStream(BASE_PATH + outputFileName, FileMode.Create, FileAccess.Write, FileShare.None))
{
    Document doc = new Document();

    doc.Open();
    var reader = new PdfReader(inputPdfStream);
    var stamper = new PdfStamper(reader, outputPdfStream);
    PdfWriter.GetInstance(doc, outputPdfStream);
    AcroFields af = stamper.AcroFields;


    if (colorInfos != null && colorInfos.Count > 0)
    {
        af.SetField("color_level_title", colorInfos[""]);
        af.SetField("color_level_up_title", colorInfos[""]);
        af.SetField("color_level_low_title", colorInfos[""]);


    }
    af.SetFieldProperty("hide_low_content", "bgcolor", BaseColor.WHITE, null);
    af.RegenerateField("hide_low_content");
    stamper.FormFlattening = true;
    stamper.Close();


}