我无法找到一种方法来阻止RTF输出中的表格中的分页。
我已经尝试过很多keep-together
/ keep-with-next
的组合,但没有任何方法可以帮助我。实际版本的父级fo:block
的属性为keep-together.within-page="always"
,包括整个表格。
仅在生成RTF时才会出现此问题。 PDF是正确的,并且表中不存在分页符。该表有一个标题行和3个数据行。在RTF中,在标题行和前2个数据行之后有一个分页符。在下一页上,重复标题,并生成最后一个数据行。
表格不包含分页符非常重要。
以下是相关的XSLT-Stylesheet代码:
<fo:block keep-together.within-page="always" >
<xsl:for-each select="block">
<xsl:call-template name="drawData"></xsl:call-template>
</xsl:for-each>
<fo:table text-align="center">
<xsl:for-each select="row[@type='declare'][1]/column">
<fo:table-column column-number="position()" border-style="solid" border-color="#000000" border-width="0.5pt">
<xsl:attribute name="column-width"><xsl:value-of select="@width"/></xsl:attribute>
</fo:table-column>
</xsl:for-each>
<xsl:if test="row[@type='header']">
<fo:table-header>
<fo:table-row keep-together.within-page="2" background-color="#0000FF" color="#FFFFFF">
<xsl:for-each select="row[@type='header'][1]/column/block">
<fo:table-cell border-style="solid" border-color="#000000" border-width="0.5pt">
<xsl:attribute name="number-columns-spanned">
<xsl:value-of select="count(../../../row[@type='declare']/column) div count(../../../row[@type='declare'])"/>
</xsl:attribute>
<xsl:call-template name="drawData"></xsl:call-template>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</fo:table-header>
</xsl:if>
<fo:table-body>
<xsl:for-each select="row[not(@type='header')]">
<fo:table-row keep-together.within-page="2">
<xsl:for-each select="column/block">
<fo:table-cell border-style="solid" border-color="#000000" border-width="0.5pt">
<xsl:call-template name="drawData"></xsl:call-template>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:block>
相关表格的屏幕截图:
答案 0 :(得分:2)
目前(FOP version 2.1),与PDF输出相比,RTF输出有一些限制;特别是,它不支持保留属性。
链接页面说明了
RTF输出目前尚未维护
和保持
由RTF库支持,但未绑定到RTFHandler
所以,虽然在没有外部帮助的情况下可能不会在将来的版本中修复此功能,但可能相对容易实现它(在这种情况下,{is}是个好主意{ {3}})。