如何使用iTextSharp在pdf中绝对定位段落?

时间:2013-01-08 05:34:37

标签: c# asp.net itext

我正在使用ASP.NET,C#和iTextSharp从头开始动态创建pdf。

我正在使用它。

Phrase ph = new Phrase(text);
Paragraph p = new Paragraph(ph);
p.Alignment = Element.ALIGN_JUSTIFIED;
p.SpacingBefore = spaceBefore;
p.FirstLineIndent = 170;
p.IndentationLeft = 30;
p.IndentationRight = 50;
doc.Add(p)

所以你知道我想使用paragraph.spacebefore。但我需要在pdf中定位三个段落,并且我从用户那里获得段落的文本。所以现在根据前一段的行数,下一段会随着我不想要的高度而变化。

然后我想到了这个。

ColumnText ct = new ColumnText(cb);
ct.AddText(p);
ct.SetSimpleColumn(100, 100, 500, 500);
ct.Go();

但在这种情况下,我希望第一行和第二行的起点不同,比如

p.FirstLineIndent = 170;
p.IndentationLeft = 30;
p.IndentationRight = 50;

修改 当我尝试这个时,属性不会影响这些段落,只是所有行都是从同一点开始的。

有可能吗?

1 个答案:

答案 0 :(得分:4)

我发现答案很简单。我们可以设置columntext属性。

columntext.SetIndent(100, false);

它只会将空格添加到第一行。然后对于行间距,我使用了它。

columntext.Leading = 31;

因此,如果使用columntext作为段落的绝对位置,那么段落属性将不起作用。但我们可以使用columntext属性。