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