【发布时间】:2015-06-26 14:17:56
【问题描述】:
有人对如何在 iTextSharp 中的 PdfSignatureAppearance 矩形上设置背景颜色有任何想法吗?我创建了 PdfSignatureAppearance 对象并可以设置它在页面上的位置,但矩形只有透明背景。我正在尝试应用一种颜色(真的)。
我尝试创建一个新的 iTextSharp.text.Rectangle 然后设置 rect.BackgroundColor = new BaseColor(System.Drawing.Color.Yellow); 这不起作用。我看到其他人试图通过将样式应用于签名外观对象的 layer2 来进行类似的操作。我试过这些没有运气。
PdfTemplate sigAppLayer2 = appearance.GetLayer(2);
sigAppLayer2.SetRGBColorFill(255, 0, 0);
sigAppLayer2.SetGrayFill(2);
sigAppLayer2.BoundingBox.BackgroundColor = new BaseColor(System.Drawing.Color.Yellow);
每当我尝试对 layer2 进行上述样式更改之一时,PDF 上的可见签名都会消失。如果我尝试将它应用到第 0 层或第 1 层,那么什么也不会发生。我假设我正在触摸正确的图层 (2)。
有什么想法吗?目标是在签名框上获得背景而不是让它透明。
请参阅下面的评论。我也尝试对第 2 层和第 0 层进行此设置。两者都导致一个红色框,但缺少签名文本。
PdfTemplate sigAppLayer2 = appearance.GetLayer(2);
Rectangle rect = sigAppLayer2.BoundingBox;
PdfTemplate sigAppLayer0 = appearance.GetLayer(0);
sigAppLayer0.SetRGBColorFill(255, 0, 0);
sigAppLayer0.Rectangle(rect.Left, rect.Bottom, rect.Width, rect.Height);
sigAppLayer0.Fill();
【问题讨论】:
-
但缺少签名文本 - 您知道在完成
appearance.GetLayer(2)之后您必须自己添加文字,不是吗?要么将图层留给 iText,要么自己完成。 -
我不知道你不能在不破坏它的情况下操作 layer2。请参阅下面的评论。如果有办法在设置签名矩形背景时保留文本,有什么想法吗?我尝试在将 rectangle 参数设置为 SetVisibleSignature 方法之前对其进行操作,但它似乎并没有通过创建签名块来保持格式化。
-
我不知道你不能在不破坏它的情况下操作 layer2。 - 更重要的是,iText(在 preClose 期间)检查是否已经有一些 layer 2 材料.如果有,它会按原样(例如你的矩形)。如果没有,它会创建其默认的第 2 层外观。
-
谢谢。也许我错过了一些东西。我首先使用
PdfSignatureAppearance.SetVisibleSignature()方法。这将创建第 2 层,绘制矩形,然后将矩形文本设置为签名数据。之后,我在第 2 层执行 Get 并使用边界框进行填充。也许我读错了你的评论,但如果第 2 层已经存在,那么它不应该保持原样而不是让文本消失吗? -
我首先使用的是 PdfSignatureAppearance.SetVisibleSignature() 方法。这会创建第 2 层, - 不,它不会。第一个
GetLayer(2)调用会创建一个空的layer2,并且只有在PreClose期间还没有layer2 时,iText 才会创建一个layer2 并向其中添加一些文本。
标签: itextsharp itext