使用iTextSharp为PDF文档中的一段文本的背景着色

时间:2014-06-03 03:44:15

标签: c# itextsharp

如何在不使用表单字段的情况下使用iTextSharp设置PDF文档中文本的背景颜色?

this post中的答案使用的是FormField,根据我的说法,这是一种过度杀戮和过于冗长的方式来做一些非常简单的事情。

是否有一种简单的方法可以为一段文字的背景着色?

2 个答案:

答案 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)方法来控制文本底部出现在基线之上的距离,但这是关于它的。不过,如果你不想太多美化,这是一种快速简便的方法。