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
。