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 动态表列宽的主要内容,如果未能解决你的问题,请参考以下文章