我必须在它之间显示一个带有两个字符串和空行的列,下面是我正在使用的片段。
Pharse heading = new Pharse("Header");
Pharse footer= new Pharse("Footer");
Paragraph label = new Paragraph();
label.Add(heading);
label.Add(Chunk.NEWLINE);
label.Add(footer);
但是,我注意到空白行的高度太大了。我怎样才能减少它?
答案 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
如果heading
和footer
由一行组成,则可以通过减少前导值来减少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英寸。