下面是初始设置矩形的代码(此代码有效)。我想我可以使用相同的代码设置为另一种颜色,但这不起作用。
AcroFields.FieldPosition f = form.GetFieldPositions(key)[0];
PdfContentByte pdfContentByte = stamper.GetUnderContent(f.page);
Rectangle rect = f.position.GetRectangle(f.position.Top, f.position.Bottom);
BaseColor yellowColor = new BaseColor(System.Drawing.Color.Yellow);
rect.BackgroundColor = yellowColor;
pdfContentByte.Rectangle(rect);
你把不同的东西混在一起了。
您希望更改字段的小部件注释的背景颜色,这是合法的需求。令人惊讶的是,您在代码中并不是这样做的。在代码中,您可以使用stamper.GetUnderContent(f.page);
注释和页面内容是两个完全不同的东西:
- 页面内容由在页面字典的
/Contents
条目中引用的PDF语法流组成。 - 注解是渲染在这些内容之上的对象。注释字典在页面字典的
/Annots
条目中被引用。
您应该更改小部件注释的背景颜色,而不是在页面内容中绘制某个矩形。在表单form
中更改字段key
的背景是这样做的:
form.SetFieldProperty(key, "bgcolor", BaseColor.YELLOW, null);
如果你想改变颜色为另一种颜色,只需使用相同的行,但使用不同的颜色参数