1

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

有任何想法吗?

4

1 回答 1

7

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

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

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

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

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

于 2013-08-09T12:38:28.563 回答