【问题标题】:Color the background of a piece of text in a PDF document using iTextSharp使用 iTextSharp 为 PDF 文档中一段文本的背景着色
【发布时间】:2014-06-03 03:44:15
【问题描述】:

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

this post 中的答案使用了FormField,在我看来,这是一种矫枉过正且冗长的方法来做一些非常简单的事情。

有没有简单的方法给一段文字的背景着色?

【问题讨论】:

    标签: c# itextsharp


    【解决方案1】:

    您可以使用Chunk 类中提供的方法SetBackground。此方法有两种变体:一种采用默认填充,另一种允许您更改填充。

    如果您在Chunk 上使用onGenericTag() 方法,您可以绘制自定义背景(并做更多事情)。例如:如果你想绘制一个圆角矩形,你可以使用onGenericTag()。请参阅我对您的重复问题的回答Draw a rectangle at the *current position* and then get its position coordinates

    【讨论】:

      【解决方案2】:

      经过一番尝试,我得出的结论是,除了使用 FormField 之外,还有 3 种方法可以做到这一点(这是第四种方法,问题中已经链接了如何做到这一点):

      1) 从this answer 到另一个类似的问题来看,PDF 规范中似乎没有文本背景颜色的概念。因此,必须在绘制文本之前(在该位置)在绝对位置绘制一个矩形。

      这就像在 Win32 DeviceContext 上绘图。

      2)您可以绘制表格并设置您想要背景颜色的单元格的背景颜色。

      3) 你可以写一个块。 Chunk 类有一个名为 SetBackground() 的方法。这看起来不太好,因为它不允许您控制文本周围和框边框之间的填充。您可以通过调用chunk.SetTextRise(float f) 方法来控制文本底部在基线上方的显示距离,仅此而已。不过,如果您不想要太多的美化效果,这仍然是一种快速简便的方法。

      【讨论】:

      • 你忽略了onGenericTag() 方法。
      • 哇,你认真地问了一个问题,然后在 5 分钟内回答了它,就为了把它标记为接受的答案?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 2020-04-21
      相关资源
      最近更新 更多