在iTextSharp中,在使用PdfContentByte设置相同矩形的背景颜色后,如何更改现有Rectangle的背景颜色?

时间:2016-11-03 17:49:55

标签: itext

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

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

1 个答案:

答案 0 :(得分:0)

你正在混合不同的东西。

您想要更改字段的窗口小部件注释的背景颜色,这是合法的要求。令人惊讶的是,这不是您在代码中所做的。在您的代码中,您可以使用stamper.GetUnderContent(f.page);

更改页面的内容

注释和页面内容是两个完全不同的东西:

  • 页面内容由(a)页面词典的/Contents条目中引用的PDF语法流组成。
  • 注释是在此内容之上呈现的对象。注释词典在页面词典的/Annots条目中引用。

您应该更改窗口小部件注释的背景颜色,而不是在页面内容中绘制一些矩形。更改key形式的字段form的背景,如下所示:

form.SetFieldProperty(key, "bgcolor", BaseColor.YELLOW, null);

如果您想将该颜色更改为另一种颜色,只需使用相同的行,但使用不同的颜色参数。