Itext 不规则列的文本行距不起作用

Itext 不规则列的文本行距不起作用,itext,Itext,我正在使用不规则列的Itext。Itext版本是5.5.9。 我无法设置行间距。 我正在使用以下代码: ColumnText ct= new ColumnText(); ct.setLeading(6f); 但是使用setLeading没有任何效果。 请建议。您的问题是不完整的,因为您没有显示如何将内容添加到ct,但我认为您是在复合模式下添加内容的(忽略列的前导),而不是在文本模式下添加内容的(该模式采用列的属性) 因此,要么你必须改变添加内容的方式,要么你必须改变设置前导的方式 这是文本模

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

ColumnText ct= new ColumnText(); 
ct.setLeading(6f);
但是使用setLeading没有任何效果。
请建议。

您的问题是不完整的,因为您没有显示如何将内容添加到
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);
这是复合模式

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
定义前导没有意义,因为它将被
段落的前导所推翻。
段落的默认前导是字体大小的1.5倍。因此,如果将列的前导设置为6,但使用复合模式添加具有默认字体大小的段落,则前导将为18(1.5乘以12)

更新:


您不能在文本模式下使用
段落
s。当您这样做时,
段落
s被视为
短语
s,并且它们在
列文本
的前面。文本模式下的所有文本将在相同的
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();

您的问题是不完整的,因为您没有说明如何将内容添加到
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);
这是复合模式

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
定义前导没有意义,因为它将被
段落的前导所推翻。
段落的默认前导是字体大小的1.5倍。因此,如果将列的前导设置为6,但使用复合模式添加具有默认字体大小的段落,则前导将为18(1.5乘以12)

更新:


您不能在文本模式下使用
段落
s。当您这样做时,
段落
s被视为
短语
s,并且它们在
列文本
的前面。文本模式下的所有文本将在相同的
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();

您好,亲爱的,我使用的是文本模式,但问题是,我有2段,我想在这两个不同的行距。如果我使用setLeading多次,只有最新的似乎有效果。我尝试使用复合模式作为替代,以便可以使用段落间距,但它说“复合模式下不允许使用不规则列”,您不能在文本模式下使用
段落
s。当您这样做时,
段落
s被视为
短语
s,并且它们在
列文本
的前面。文本模式下的所有文本将具有相同的前导。复合模式中只能有不同的前导。然而,它们可能是一种解决办法。我会更新我的答案。嗨,亲爱的,我使用的是文本模式,但问题是我有两个段落,我希望两个段落的行距不同。如果我多次使用setLeading,只有最新的一个似乎有效。我尝试使用复合模式作为替代,以便可以使用段落间距,但它说“复合模式下不允许使用不规则列”,您不能在文本模式下使用
段落
s。当您这样做时,
段落
s被视为
短语
s,并且它们在
列文本
的前面。文本模式下的所有文本将具有相同的前导。复合模式中只能有不同的前导。然而,它们可能是一种解决办法。我会更新我的答案。