如何在不使用表单字段的情况下使用iTextSharp设置PDF文档中文本的背景颜色?
this post中的答案使用的是FormField
,根据我的说法,这是一种过度杀戮和过于冗长的方式来做一些非常简单的事情。
是否有一种简单的方法可以为一段文字的背景着色?
答案 0 :(得分:3)
您可以使用SetBackground
课程中提供的方法Chunk
。此方法有两种变体:一种采用默认填充,另一种允许您更改填充。
如果您在onGenericTag()
上使用Chunk
方法,则可以绘制自定义背景(并执行更多操作)。例如:如果要绘制带圆角的矩形,则使用onGenericTag()
。请参阅我对您的重复问题Draw a rectangle at the *current position* and then get its position coordinates
答案 1 :(得分:1)
经过一番尝试,我得出的结论是除了使用FormField
之外还有3种方法可以做到这一点(这是第四种方式,如何做到这一点已经在问题中链接):< / p>
1)从this answer判断到另一个类似问题,似乎PDF规范中没有文本背景颜色的概念。因此,在绘制文本(在该位置)之前,必须在绝对位置绘制一个矩形。
这就像在Win32 DeviceContext
上绘图。
2)您可以绘制一个表格并设置您想要背景颜色的单元格的背景颜色。
3)你可以写一个块。 Chunk
类有一个名为SetBackground()
的方法。这看起来不太好,因为它不允许您控制文本周围和框边框之间的填充。您可以通过调用chunk.SetTextRise(float f)
方法来控制文本底部出现在基线之上的距离,但这是关于它的。不过,如果你不想太多美化,这是一种快速简便的方法。