我正在使用开源 iTextSharp 的 v5.2.1。我有一段代码的行为与预期不符。由于某种原因,当我将 pdf 流式传输到浏览器时,字体不同。
下面是我正在尝试做的事情的表示。
Font times_roman = new Font(Font.FONTFAMILY.TIMES_ROMAN, 9f);
float indent1 = 20f;
try
{
foreach (var item in List) {
Chunk c1 = new Chunk(string.format("Item: {0}\n\n" item.Name, times_roman));
Phrase ph1 = new Phrase(c1);
Paragraph p1 = New Paragraph(ph1);
doc.Add(p1);
Chunk c2 = new Chunk(string.format("(1) Item Category{0}:\n\n" item.Category, times_roman));
Phrase ph2 = new Phrase(c2);
Paragraph p2 = New Paragraph(ph2);
p2.FirstLineIndent = indent1;
doc.Add(p2);
}
}
catch
{
}
然后我流式传输 pdf,以便它在 IE8 或 IE9 中自动打开。
无论我尝试什么,我总是得到以下结果,无论我在 c2、ph2、p2 上设置什么字体
Item: MyWidget1 (this dislays Times Roman)
(1) Item Category: Utility Tool (this displays as Helvetica 12)
就好像 iTextSharp 认为它是一个 ListItem 因为 (1) 并且无论你做什么都会控制。
我不能使用 Lists 和 ListItem 因为我只需要缩进第一行,而 itextsharp 列表将缩进多行并自动排列它们。我有很多项目的文本会换行到半页。
我真的很喜欢 iTextSharp 库(因为它是免费的),但这个功能让我抓狂。