2

我正在编写 XSL-FO 文档,我想为一些内联元素设置最小宽度值。例如,在以下结构中

|    FirstName:         string1         LastName:         string2         |

其中“string1”和“string2”是我的 XML 中的数据,“|”表示左右边框,我想要以下结果

|    FirstName:    John     LastName:   Smith                             |
|    FirstName:             LastName:   Smith                             |
|    FirstName: SomeVeryVeryLongFirstNameOfSomePerson  LastName:  Smith   |

当从 XML 加载各个人(“John”“Smith”、“”“Smith”、“SomeVery...”“Smith”)时。

基本上我需要这样的东西

<fo:block> 
FirstName: <fo:inline min-width="50mm"> <xsl:value-of ...> </fo:inline> LastName: <fo:inline min-width="50mm"> <xsl:value-of ...> </fo:inline>
</fo:block>

但这不起作用(最小宽度被忽略)。我在 fo:block 上尝试了 min-width,尝试了 inline-progression-dimension,block-progression-dimension,一些 fo:table 的解决方法,但没有任何效果,或者我做错了。我正在使用 Apache FOP 1.0。

任何人都可以帮忙吗?提前致谢

4

1 回答 1

0

我也遇到了这个问题,在网上搜索了一番后,我发现了一个解决方案:使用fo:inline-container具有所需宽度的 a 和fo:block放置文本的内部:

<fo:inline-container text-align="center" width="1cm">
  <fo:block border-bottom="0.5pt solid #000">
    <xsl:value-of select="your/xpath/selector"/>
  </fo:block>
</fo:inline-container>

只需替换widthandselector即可满足您的需求。此示例还包括我需要的底线,但这不是强制性的:如果不需要,只需将其border-bottom删除即可。fo:block请参阅如何获得内联 FO 的固定宽度?有关原始解决方案和详细信息。

于 2017-02-24T14:04:02.987 回答