XSL-FO:块元素高度错误

时间:2017-02-02 17:30:10

标签: xslt xsl-fo apache-fop

我试图使用XSL-FO围绕2个垂直灰条进行环绕和成像。我创建了一个180 * 1维的垂直分隔符,并且我能够在我的XSL中正确渲染它。

问题是,<fo:block>元素占用太多高度,我似乎无法找到解决方法,请参见下图(红色是<fo:block>元素的背景,而细灰色line是我的分隔符。我通过将整个<fo-block>包装到<fo:block-container>中来获得了良好的结果,但是分隔符不是居中的,我无法将其置于中心位置。

这是我的代码

<fo:block height='1px' background-color='#DE122D'>
   <fo:external-graphic height='1px' content-width="scale-down-to-fit" src="url('images/verticalSeparator.png')" />
 </fo:block>

我放了一个背景色,以便能够看到它的高度。

最终,我试图获得第二个屏幕截图,可能还有其他方法可以做到这一点(也许是有边框的东西?),我愿意尝试它们。只需注意2个垂直条比图像长,并且内容必须居中!

enter image description here


enter image description here

1 个答案:

答案 0 :(得分:0)

我可能不理解您的问题,但根据发布的代码暗示规则是问题并且占用太多空间。如果规则是您的问题,可能您希望使用替代结构而不是图像。为此,您可以使用领导者并将长度设置为您想要的长度,并且不会出现任何问题。以下代码:

    <fo:block text-align="center">Text Before</fo:block>
    <fo:block text-align="center" font-size="1px" line-height="0"><fo:leader color="silver" leader-length="2in" leader-pattern="rule"/></fo:block>
    <fo:block text-align="center">Text Between</fo:block>
    <fo:block text-align="center" font-size="1px" line-height="0"><fo:leader color="silver" leader-length="2in" leader-pattern="rule"/></fo:block>
    <fo:block text-align="center">Text After</fo:block>

生成此输出 - 您可以看到间距没有问题:

enter image description here