itext ColumnText忽略对齐

时间:2013-08-09 08:15:13

标签: c# itextsharp itext

我试图在左侧获得一些文本行,在右侧获取一些文本。 出于某种原因,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,但文本显示在第一列的顶部,从而呈现不可读的文本。就像对齐仍然设置为左。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

请谷歌了解“文字模式”“复合模式”的概念,或阅读my book的第3章。

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

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

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

正如本书第4章所述,文本模式复合模式也适用于PdfPCell