在iText7中设置表格列宽问题

时间:2017-03-28 15:10:03

标签: pdf itext7

当我想用PDF创建表格时,我可以使用以下两种方式: 但第一个失败了。

方法1:

float[] columnWidths = {20, 30, 50};
Table table = new Table(columnWidths);

无法控制columnWidths 方法2:

UnitValue[] unitValue = new UnitValue[]{
UnitValue.createPercentValue((float) 20),
UnitValue.createPercentValue((float) 30),
UnitValue.createPercentValue((float) 50)};
Table table = new Table(columnWidths);

这是成功的! 为什么会这样?

2 个答案:

答案 0 :(得分:2)

是的,正如弗农所说,没有办法在iText 7.0.2中扩展列宽。

如果您希望尽管最小宽度可以直接使用20,30和50个点,则应使用此结构:

Table table = new Table(new float[] {20, 30, 50}) // in points
        .setWidth(100) //100 pt
        .setFixedLayout();

如果设置固定布局,则必须设置宽度,固定布局需要它。

答案 1 :(得分:0)

iText Core 7.0.2的发行说明包括要点"改进的自动布局和表格的固定布局,缩放的列宽已被删除"。如果您需要旧功能,则需要返回7.0.1!

Table构造函数的在线API docn说Note, since 7.0.2 in case auto layout column width values less than min width will be ignored。它不是很好的英语,但我相信它试图说所提供的值不会按比例放大,所以列填满表格,而是按原样使用,在这种情况下,他们&# 39;几乎肯定会太小,所以会被忽略。总的来说,这种变化是有道理的,因为将一些浮点数作为一个比例处理对于一个好的API来说有点武断。使用单位值更加明智,使用适当百分比的示例是一个很好的例子。