我正在尝试在iTextSharp生成的PDF中设置样式。
每当我尝试将符号设置为列出项目时,似乎SetListSymbol
对我不起作用。
以下是我使用的代码:
var elements = HTMLWorker.ParseToList(overviewReader,null);
foreach (var element in elements)
{
//element
var list = element as List;
if (list != null)
{
//list.Symbol.GetImage();
list.SetListSymbol("\u25A0");
list.IndentationLeft = 20f;
doc.Add(list);
}
else
{
doc.Add(element);
}
}
答案 0 :(得分:1)
iText和iTextSharp中的HTMLWorker
通过iTextSharp.text.html.simpleparser.StyleSheet
支持一些非常有限的“样式表”。这些样式表基于HTML / CSS属性,但只是最基本的(想想HTML 3.2)。
您要做的三件事主要是(1)加载字体,(2)创建指向该字体的StyleSheet
和(3)将StyleSheet
绑定到{{1 }}。我将从我的answer here中部分解除一些代码。
iTextSharp不会自动抓取整个系统寻找字体,因此您需要手动注册它们。 (实际上,有一种方法可以调用并告诉iTextSharp猜测加载字体但速度要快得多。)
步骤#1,加载字体,在本例中为Curlz
HTMLWorker
步骤2,创建一个//Path to our font
string OurFont = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "CURLZ___.TTF");
//Register the font with iTextSharp
iTextSharp.text.FontFactory.Register(OurFont);
并将其指向我们的字体。我还会设置一些其他属性来展示它们。
StyleSheet
步骤3,将//Create a new stylesheet
iTextSharp.text.html.simpleparser.StyleSheet ST = new iTextSharp.text.html.simpleparser.StyleSheet();
//Set the default body font to our registered font's internal name
ST.LoadTagStyle(iTextSharp.text.html.HtmlTags.LI, iTextSharp.text.html.HtmlTags.FACE, "Curlz MT");
ST.LoadTagStyle(iTextSharp.text.html.HtmlTags.LI, iTextSharp.text.html.HtmlTags.COLOR, "FF0000");
ST.LoadTagStyle(iTextSharp.text.html.HtmlTags.LI, iTextSharp.text.html.HtmlTags.SIZE, "50");
绑定到我们的StyleSheet
HTMLWorker
以下是针对iTextSharp 5.2.0的全功能C#WinForms应用,它展示了以上所有内容。
//Use our StyleSheet from above when parsing
var elements = HTMLWorker.ParseToList(overviewReader, ST);
答案 1 :(得分:0)
List objects = HTMLWorker.ParseToList(new StringReader(format),null);
foreach (IElement element in objects)
{
List list = new List();
list.SetListSymbol("\u2022");
list.IndentationLeft = 20f;
list.Add(element);
if (list.Chunks.Count == 0)
{
doc1.Add(element);
}
else
{
doc1.Add(list);
}
}