我必须显示一列,其中包含两个字符串和空白行,下面是我正在使用的代码段。

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

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


但是,我注意到空白行的高度太大。我该如何减少呢?

最佳答案

有多种方法可以实现您想要的。让我从我认为最简单的方法开始。如果您有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英寸。

关于c# - 调整Chunk.NewLine ItextSharp C#的高度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41277638/

10-11 04:54