0

我正在尝试使用 iTextSharp 根据存储在数据库中的 HTML 内容生成一些自动生成的营销材料的 PDF 传单。它工作得非常好,但我发现了一些我认为可能是 iTextSharp 中的错误。

我从一个可能包含常规 HTML 列表的 HTML 块开始,例如:

<ul>
  <li>Item 1</li>
  <li>Item 2</li>
</ul>

我通过 HTMLWorker.ParseToList 运行 HTML 块,以获取准备添加到 PDF 的已解析项目的列表。

对于列表,我们的企业风格是文本为黑色,但项目符号为蓝色。所以我遍历元素列表并找到那些是列表的元素,并将符号的颜色设置为蓝色:

List<IElement> elementsList = HTMLWorker.ParseToList(new StringReader(strHtml), style);

for(int cnt = 0; cnt < elementsList.Count; cnt++)
{
    IElement element = (IElement)elementsList[cnt];
    if (element is List)
    {
       List l = (List)element;
       l.Symbol.Font.Color = new BaseColor(26, 189, 201);
       /* then code here which adds the list to the output column */
    } 
    else
    {
       /* code which adds the element without any extra processing */
    }
}

这完美地工作,只有蓝色也应用于列表中最后一项的文本(不仅仅是项目符号)。正如我所说,只有列表中的最后一项受到影响。其他项目以蓝色项目符号和黑色文本完美输出。我显然无法发布图片,但我已链接到下面的 PNG:

[点击查看问题]

只是想知道以前是否有人遇到过这种情况,如果有,是否有解决方法。我已经使用最新版本的 iTextSharp 进行了测试,以确保我是最新的。

设置 List.Symbol.Font.Color 是正确的方法吗?我假设是因为它适用于列表的所有元素,而不是最后一个!

谢谢,

史蒂夫。

4

0 回答 0