在iTextSharp中,我如何改变现有矩形的背景颜色,在与PdfContentByte设置相同矩形的背景颜色后



下面是初始设置矩形的代码(此代码有效)。我想我可以使用相同的代码设置为另一种颜色,但这不起作用。

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);

如果你想改变颜色为另一种颜色,只需使用相同的行,但使用不同的颜色参数

最新更新