如何格式化iTextSharp中的HTML链接?

时间:2014-01-15 20:59:47

标签: html hyperlink itextsharp

我正在使用iTextSharp从数据库中包含的数据生成PDF。有一个文本字段使用HTML格式。我找到了以下代码来获取HTML块并将它们插入段落中。

Dim p As New Paragraph()
Dim htmlarraylist As List(Of IElement) = HTMLWorker.ParseToList(New StringReader(HtmlString), Nothing)

For k As Int32 = 0 To htmlarraylist(0).Chunks().Count() - 1
    Dim c As Chunk = htmlarraylist(0).Chunks(k)
    p.Add(c)
Next

问题是当链接通过此代码传递时,它的格式不像链接。我可以点击它,但它与文本的其余部分颜色相同,并且没有加下划线。

有没有办法在iTextSharp中全局格式化html链接?

或者,是否有任何方法可以识别通过上述For语句传递的块实际上是链接,因此我可以在循环内单独格式化它们?我已经逐步完成循环并查看了对象属性,并且无法在Chunk中找到可能将其标识为链接的任何内容。 “Content”属性仅包含链接文本。

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用样式表:

Dim SS As New StyleSheet()
SS.LoadTagStyle(HtmlTags.A, HtmlTags.COLOR, "blue")

然后将其传递到HTMLWorker对象:

Dim htmlarraylist = HTMLWorker.ParseToList(New StringReader(HtmlString), SS)

如果由于某种原因您不想这样做,您也可以在For循环中解决它:

Dim htmlarraylist = HTMLWorker.ParseToList(New StringReader(HtmlString), Nothing)
For Each el In htmlarraylist
    For Each C In el.Chunks
        If C.Role.Equals(PdfName.LINK) Then
            C.Font.Color = BaseColor.BLUE
        End If
    p.Add(C)
    Next
Next