调整Chunk的高度.NewLine ItextSharp C#

时间:2016-12-22 07:15:31

标签: c# itext

我必须在它之间显示一个带有两个字符串和空行的列,下面是我正在使用的片段。

Pharse heading = new Pharse("Header");
Pharse footer= new Pharse("Footer");

Paragraph label = new Paragraph();
label.Add(heading);
label.Add(Chunk.NEWLINE);
label.Add(footer);

但是,我注意到空白行的高度太大了。我怎样才能减少它?

1 个答案:

答案 0 :(得分:2)

有不同的方法可以达到你想要的效果。让我从我认为最简单的方式开始。如果您有一个Paragraph,并且希望它后面有一些额外的空格,则可以使用SpacingAfter功能:

Paragraph label1 = new Paragraph("Header");
label1.SpacingAfter = 15;
Paragraph label2 = new Paragraph("Footer");
document.Add(label1);
document.Add(label2);

如您所见,我将label分成两个对象。事实是每个Paragraph对象都有前导。这个前导定义了行之间的空间,它对Paragraph中的每一行都是相同的。它可以表示为绝对距离和基于字体大小的相对距离(的组合)。请参阅Chris Haas对问题Reduce paragraph line break height on iTextSharp

的回答

如果headingfooter由一行组成,则可以通过减少前导值来减少Chunk.NEWLINE占用的空间。例如:

Phrase heading = new Phrase("Header");
Phrase footer= new Phrase("Footer");
Paragraph label = new Paragraph();
label.Leading = 12;
label.Add(heading);
label.Add(Chunk.NEWLINE);
label.Add(footer);

这种方法的缺点是两行文本之间的距离也会减小。例如:如果heading由更长的文本组成,则会拆分这些行,并且这些行之间的距离也会减小。

您也可以使用两种解决方案的组合。例如:将Paragraph分为三部分:heading,新行块和footer。将新的行块包装到一个带有小前导的单独Paragraph中。

注意: PDF中的所有测量均以用户单位表示。默认情况下,一英寸中有72个用户单位。换句话说:12个用户单位的领先者是1/6英寸。