itextsharp如何为块内容添加行高

时间:2017-12-15 14:31:31

标签: c# .net itext pdf-generation

我使用iTextSharp

在.net中使用以下代码
PdfPTable Header2 = new PdfPTable(2);
Header2.DefaultCell.Padding = 4;
Header2.WidthPercentage = 90;
Phrase pp4 = new Phrase();
pp4.Add(new Chunk("  Text of the first line\n", FontFactory.GetFont("Arial", 17, iTextSharp.text.Font.BOLD, iTextSharp.text.Color.BLACK)));
pp4.Add(new Chunk("  Text of the second line", FontFactory.GetFont("Arial", 15, iTextSharp.text.Font.ITALIC, iTextSharp.text.Color.BLACK)));
PdfPCell hcell3 = new PdfPCell(new Phrase(pp4));
hcell3.HorizontalAlignment = Element.ALIGN_LEFT;
hcell3.VerticalAlignment = Element.ALIGN_TOP;
hcell3.BorderColor = iTextSharp.text.Color.BLACK;
hcell3.BackgroundColor = new iTextSharp.text.Color(255, 255, 255);
Header2.AddCell(hcell3);

输出显示文本在各行中彼此非常接近。我需要在两条线之间放置一些垂直空间。 我怎样才能在上面的代码中实现这一点?

1 个答案:

答案 0 :(得分:1)

这些线之间的空间称为前导,指的是在打印的早期放在不同类型线之间的小条铅条。

您有两种选择。

如果您在文字模式下使用PdfPCell(如果你不知道:你这样做),你可以改变这样的领先:

PdfPCell hcell3 = new PdfPCell(new Phrase(pp4));
hcell3.Leading = 20;

如果您在复合模式下使用PdfPCell,则可以更改前导:

pp4.Leading = 20;
PdfPCell hcell3 = new PdfPCell();
hcell3.AddElement(pp4);

在前一种情况下,您在单元格中使用单个Phrase,并且该单元格的所有内容都为前导采用单个值。在后一种情况下,忽略单元格的前导。而是使用您要添加到单元格的对象的前导(使用AddElement()方法)。在后一种情况下,可以在同一个单元格中使用多个前导。

请注意,您使用的是旧版iText。我们不再称之为iTextSharp,我们将其称为iText for .NET。最新版本是7.1。如果您刚刚开始,请升级,因为不是客户的用户不再支持旧版本的iText。请参阅iText for .NET download page