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

时间:2015-05-25 19:12:20

标签: c# itextsharp

我为所有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。字段具有完全相同的属性(仅名称不同)。我没有想法,有人请帮助。

2 个答案:

答案 0 :(得分:0)

谢谢,但经过4个小时的尝试,我发现了它。它没有填充没有价值的领域。所以你必须至少把String.Empty作为一个值,然后在后面填充背景。可能会有用,可以为某人节省几个小时。

答案 1 :(得分:0)

如果要更改字段属性,在更改字段属性后,必须重新生成字段以使编辑生效。 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();


}