我使用Apache™FOP(格式化对象处理器)渲染表。我想显示一个高度和宽度固定的黄色块。块底应位于行底的同一位置。块应该溢出单元格,块不应该使单元格更大。我宁愿不使用rowspan。知道如何在FOP中制作块溢出单元吗?
具有实际和预期输出的图像:
方法1:我已经尝试过rowspan = 2。表看起来像预期的。但代码太复杂了。它需要额外的逻辑来计算我需要跨越的行。
方法2:
<fo:table-row>
<fo:table-cell><fo:block>item4</fo:block></fo:table-cell>
<fo:table-cell display-align="after">
<fo:block-container overflow="visible">
<fo:block background-color="yellow" padding-top="1.5mm" padding-bottom="1.5mm">
Thanks
</fo:block>
</fo:block-container>
</fo:table-cell>
我希望溢出=&#34;可见&#34;会做的伎俩,但事实并非如此。
答案 0 :(得分:0)
(预防性披露:我是FOP开发人员,虽然现在不是很活跃)
我认为您的方法#1(即使用number-rows-spanned
)是正确,因为它提供了跨不同格式化程序的最便携式解决方案。
无论如何,如果你想要更简单的&#34;你可以在特殊的黄色块中使用负space-before
:
<fo:table width="100%" table-layout="fixed">
<fo:table-column column-width="50%"/>
<fo:table-column column-width="50%"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell border="1pt solid #000000"><fo:block>orange 1</fo:block></fo:table-cell>
<fo:table-cell border="1pt solid #000000"><fo:block></fo:block></fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell border="1pt solid #000000"><fo:block>orange 2</fo:block></fo:table-cell>
<fo:table-cell border="1pt solid #000000"><fo:block></fo:block></fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell border="1pt solid #000000"><fo:block>orange 3</fo:block></fo:table-cell>
<fo:table-cell border="1pt solid #000000">
<fo:block space-before="-12.8pt" space-before.conditionality="retain" background-color="yellow" padding-top="4pt" padding-bottom="4pt" font-size="16pt">Thanks</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
space-before
必须是普通块的高度与特殊块的高度之间的差异(如果正常块的高度所有长度都用点表示,就像我在例子中所做的那样:在这种情况下(12 * 1.2) - (16 * 1.2 + 4 + 4)= -12.8 space-before.conditionality="retain"
以避免丢弃空间(因为它位于单元格的开头)总之,可能能够避免使用行跨越单元格,但它不会简单得多,而且肯定是一种不那么通用的解决方案。