itext ColumnText忽略对齐

我试图在左侧获得一些文本行,在右侧获取一些文本。 出于某种原因,iText似乎完全忽略了对齐。

例:

// create 200x100 column ct = new ColumnText(writer.DirectContent); ct.SetSimpleColumn(0, 0, 200, 100); ct.AddElement(new Paragraph("entry1")); ct.AddElement(new Paragraph("entry2")); ct.AddElement(new Paragraph("entry3")); ret = ct.Go(); ct.SetSimpleColumn(0, 0, 200, 100); ct.Alignment = Element.ALIGN_RIGHT; ct.AddElement(new Paragraph("entry4")); ct.AddElement(new Paragraph("entry5")); ct.AddElement(new Paragraph("entry6")); ret = ct.Go(); 

我已将第二列的对齐方式设置为Element.ALIGN_RIGHT,但文本显示在第一列的顶部,从而呈现不可读的文本。 对齐仍然设置为左。

有任何想法吗?

请谷歌搜索“文本模式”“复合模式”的概念或阅读我的书的第3章。

如果在文本模式下工作,则可以在ColumnText对象的级别定义对齐方式。 换句话说, ct.Alignment = Element.ALIGN_RIGHT; 将以文本模式工作。

如果在复合模式下工作,则将忽略列级别的对齐,以支持添加到列的元素的对齐。 在您的情况下,iText将忽略ALIGN_RIGHT以支持添加到列的Paragraph对象的对齐。 查看代码,我发现您没有为段落定义对齐方式,因此使用默认对齐方式ALIGN_LEFT

你怎么知道你是在文本模式还是在复合模式下工作 ? 默认情况下, ColumnText使用文本模式,但在您调用AddElement()方法时,它会切换到复合模式 (删除所有以前添加的文本)。

正如我的书第4章所解释的, 文本模式复合模式也适用于PdfPCell