itext ColumnText忽略对齐

Chu*_*uck 1 c# itext itextsharp

我试图在左侧获得一些文本行,在右侧获取一些文本.出于某种原因,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();
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

Bru*_*gie 5

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

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

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

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

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