XSL-FO 动态表列宽

Posted

技术标签:

【中文标题】XSL-FO 动态表列宽【英文标题】:XSL-FO dynamic table column width 【发布时间】:2013-01-30 09:28:17 【问题描述】:

就目前而言,我有大约 12 列,所有列的宽度完全相同。问题是某些列不需要那么多空间。如何让列适合其内容?列必须是动态宽度。

我试过了

<fo:table table-layout="auto">

<fo:table-column column- column-number="1"/>
<fo:table-column column- column-number="2"/>
<fo:table-column column- column-number="3"/>

似乎没有任何作用。

【问题讨论】:

如果您使用的是 FOP,它将无法正常工作。 FOP 不支持table-layout="auto" 谢谢!对问题本身有任何想法吗? 购买支持table-layout="auto"的商业格式化程序,如XEP(renderx.com/tools/xep.html)。还有用于非商业用途的免费个人版和学术版:renderx.com/download/personal.html。 【参考方案1】:
    对长列使用属性“proportional-column-width”,其余列设为默认值。 检查每列的宽度,如果比其他列长,提供多少倍(如 2 倍或 3 倍或 4.5 倍甚至更多)。

Ex-1:

<fo:table-column column-number="1" column-/>
<fo:table-column column-number="2"/>
<fo:table-column column-number="3"/>

Ex-2:

<fo:table-column column-number="1" column-/>
<fo:table-column column-number="2" column-/>
<fo:table-column column-number="3"/>

【讨论】:

【参考方案2】:

您还可以以“百分比单位”指定单位。适合我...

<fo:table-column column-number="1" column- /> 
<fo:table-column column-number="2" column- />

【讨论】:

【参考方案3】:

不幸的是,我没有找到一种简单的方法来设置动态列宽。我最终得到了这个:

<fo:table-column column-number="1"  column- />
<fo:table-column column-number="2"  />
<fo:table-column column-number="3"  />
<fo:table-column column-number="4"  />
<fo:table-column column-number="5"  />
<fo:table-column column-number="6"  />
<fo:table-column column-number="7"  />
<fo:table-column column-number="8"  />
<fo:table-column column-number="9"  />
<fo:table-column column-number="10" />
<fo:table-column column-number="11" />
<fo:table-column column-number="12" />

我指定第一列是因为数据永远不会改变。其余的我保持开放以适应他们的内容。按我现在需要的方式工作。

【讨论】:

以上是关于XSL-FO 动态表列宽的主要内容,如果未能解决你的问题,请参考以下文章

SQL 动态数据透视表列顺序

如何在 Laravel 刀片中使用动态表列值设置宽度

动态 SQL 接受表列作为过程中的输入

在JSF中动态创建表列

如何从 json 创建表列和字段? (动态网格)

使用 vuetify 数据表在 vue 中动态显示/隐藏表列