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