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();
}
我有以下所有 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();
}