Itext行间距与不规则列不起作用

时间:2017-04-12 10:03:52

标签: itext

我使用带有不规则列的Itext .Itext版本是5.5.9。 我无法设置行间距。 我使用以下代码:

ColumnText ct= new ColumnText(); 
ct.setLeading(6f);

但使用setLeading无效。 请建议。

1 个答案:

答案 0 :(得分:2)

您的问题不完整,因为您没有展示如何向ct添加内容,但我认为您是在复合模式中添加内容(忽略了列)而不是文本模式(它采用列的属性)。

因此,您必须更改添加内容的方式,或者必须更改设置前导的方式。

这是文字模式

ColumnText ct= new ColumnText(); 
ct.setLeading(6f);
ct.addText(new Chunk("Hello"));
ct.addText(new Chunk("World"));

这是复合模式

ColumnText ct= new ColumnText(); 
Paragraph p = new Paragraph("Hello World ... Long sentence, etc.");
p.setLeading(6f);
ct.addElement(p);

复合模式示例中,定义ct的前导是没有意义的,因为它会被Paragraph的前导推翻。 Paragraph的默认前导是字体大小的1.5倍。因此,如果将列的前导设置为6,但使用复合模式添加具有默认字体大小的段落,则前导将为18(1.5倍12)。

<强>更新

您无法在文字模式下使用Paragraph s。执行此操作后,Paragraph将被视为Phrase,并且它们会占据ColumnText的前导。文本模式中的所有文本在同一go()中具有相同的前导。你能做的一件事就是不同时间致电go()

ColumnText ct= new ColumnText(); 
ct.setLeading(6f);
ct.addText(new Chunk("Hello blah blah ... blah"));
ct.go(); 
ct.setLeading(12f);
ct.addText(new Chunk("Hello blah blah ... blah"));
ct.go();