当段落对象添加到多列文本对象内的列时,我在设置段落对象的行高时遇到问题。
请注意每个新行之间的任意间距。此处的第二列呈现内容的屏幕截图。https://dl.dropbox.com/u/249320/Foliotek/Capture.PNG
我让它渲染并正确进入下一列。但我似乎无法设置每个新行的高度。思潮?
我的代码:
MultiColumnText mct = new MultiColumnText();
mct.Alignment = Element.ALIGN_JUSTIFIED_ALL;
//8
// setup column 1
float[] left = {1020, 280, 1020, 7 };
float[] right = {1022, 576,
1022, 280,
1096, 280,
1214, 154,
1214, 7
};
mct.AddColumn(left, right);
// setup column 2
left = new float[] { 1422, 576,
1422, 266,
1259, 106,
1246, 105,
1246, 7
};
right = new float[] {1433, 280, 1433, 7 };
mct.AddColumn(left, right);
techDataColumnText += " GALLIA est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis Garumna flumen, a Belgis Matrona et Sequana dividit. Horum omnium fortissimi sunt Belgae, propterea quod a cultu atque humanitate provinciae longissime absunt, minimeque ad eos mercatores saepe commeant atque ea quae ad effeminandos animos pertinent important, proximique sunt Germanis, qui trans Rhenum incolunt, quibuscum continenter bellum gerunt. Qua de causa Helvetii quoque reliquos Gallos virtute praecedunt, quod fere cotidianis proeliis cum Germanis contendunt, cum aut suis finibus eos prohibent aut ipsi in eorum finibus bellum gerunt.";
Paragraph techDataPhrase = new Paragraph(techDataColumnText, new Font(FuturaBoldBaseFont, 8f));
mct.AddElement(techDataPhrase);
do
{
document.Add(mct);
mct.NextColumn();
} while (mct.IsOverflow());
三个想法:
MultiColumnText
已从最新的iText版本中删除,因此您可能不想在其中投入太多时间。如果您想要面向未来的解决方案,请使用ColumnText
。- 你说有一个任意的行高。在PDF语言中,行高称为行高。我没有看到你在任何地方使用
setLeading()
(也许我忽略了什么)。 (Multi)ColumnText
和PdfPCell
有两种不同的模式。文本模式和复合模式。
在复合模式下,将忽略容器(列或单元格)的设置,而支持内容(添加的Paragraph
和其他对象)的设置。在此模式下,容器的内容可以具有不同的前导、对齐方式,...
在文本模式下,您可以在容器级别(列或单元格)设置行距,所有内容都遵循该设置。在此模式下,所有内容都具有相同的前导、相同的对齐方式,...
您正在创建一个不规则列,这意味着您只能在文本模式下工作。您需要在列级别设置行距。