我试图在左侧获得一些文本行,在右侧获取一些文本。 出于某种原因,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,但文本显示在第一列的顶部,从而呈现不可读的文本。就像对齐仍然设置为左。
有什么想法吗?
答案 0 :(得分:5)
请谷歌了解“文字模式”和“复合模式”的概念,或阅读my book的第3章。
如果您使用文本模式,则可以在ColumnText
对象的级别定义对齐方式。换句话说,ct.Alignment = Element.ALIGN_RIGHT;
将以文本模式运行。
如果您使用复合模式,则会忽略列级别的对齐,以支持添加到列中的元素的对齐。在您的情况下,iText将忽略ALIGN_RIGHT
,而是支持添加到列中的Paragraph
对象的对齐。查看代码,我发现您没有为段落定义对齐方式,因此使用了默认对齐方式ALIGN_LEFT
。
您如何知道自己是以文字模式还是以复合模式工作?默认情况下,ColumnText
使用文本模式,但在您调用AddElement()
方法时,它会切换到复合模式(删除所有以前添加的文本)。
正如本书第4章所述,文本模式和复合模式也适用于PdfPCell
。