问题 XSL-FO动态表列宽


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

我试过了

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

<fo:table-column column-width="proportional-column-width(1)" column-number="1"/>
<fo:table-column column-width="proportional-column-width(1)" column-number="2"/>
<fo:table-column column-width="proportional-column-width(1)" column-number="3"/>

似乎没有什么可以做到的。


1722
2018-02-14 14:37


起源

如果您使用FOP,它将无法正常工作。 FOP不支持 table-layout="auto"。 - mzjn
谢谢!问题本身的任何想法? - SeanWM
购买支持的商业格式化程序 table-layout="auto",例如XEP(renderx.com/tools/xep.html)。还有免费的个人和学术版本用于非商业用途: renderx.com/download/personal.html。 - mzjn


答案:


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

<fo:table-column column-number="1"  column-width="35pt" />
<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" />

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


14
2018-02-14 16:41





您还可以“百分比单位”指定单位。对我来说很好......

<fo:table-column column-number="1" column-width="75%" /> 
<fo:table-column column-number="2" column-width="25%" />

1
2017-09-20 05:53





  1. 对于冗长列使用属性'proportional-column-width',剩余列为默认值。
  2. 检查每列的宽度,如果它比其他列长,则提供更大的次数(例如2次或3次或4.5次甚至更多次)。

前1:

<fo:table-column column-number="1" column-width="proportional-column-width(3)"/>
<fo:table-column column-number="2"/>
<fo:table-column column-number="3"/>

前2:

<fo:table-column column-number="1" column-width="proportional-column-width(3)"/>
<fo:table-column column-number="2" column-width="proportional-column-width(4)"/>
<fo:table-column column-number="3"/>

-1
2017-09-26 07:35