iText 7 相对列宽从 iText 7.0.2 开始不再有效

iText 7 relative column width no longer working starting iText 7.0.2

我在为 iText 7.0.4 中的 table 设置相对列宽时遇到问题。我从这里尝试了 Bruno 的示例代码:。如果我使用 iText 7.0.1 执行示例,我会从 Bruno 的回答中得到准确的结果:

但对于更高版本,结果如​​下所示:

iText 网页上的原始示例似乎尚未反映这种行为变化。

table 布局算法在版本 7.0.2 中发生了变化,如 API 文档 (http://itextsupport.com/apidocs/itext7/latest/com/itextpdf/layout/element/Table.html#Table-float:A-boolean-) 中所述。最简单的解决方案是将值为 true 的第二个参数添加到 Table:

的构造函数中
Table htable = new Table(new float[] {3, 8, 5, 10, 5, 10, 30}, true);

构造函数的单参数版本现在采用以磅为单位的绝对列宽。

这对我在 itext-7.1.3 中设置列​​宽有用。你可以试试这个。

Table content = new Table(UnitValue.createPercentArray(new float[]{3,5,10}));
content.setWidth(UnitValue.createPercentValue(100));
content.setFixedLayout();