我正在尝试使用 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 是正确的方法吗?我假设是因为它适用于列表的所有元素,而不是最后一个!
谢谢,
史蒂夫。