我有以下模板来生成定义的表:
<xsl:template name="CreateTable">
<fo:block>
<fo:table border-style="solid" table-layout="fixed">
<fo:table-body>
<fo:table-row>
<xsl:for-each select="Table/Head/Cell">
<fo:table-cell border-style="solid">
<fo:block><xsl:value-of select="." /></fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
<xsl:for-each select="Table/Row">
<fo:table-row>
<xsl:for-each select="Cell">
<fo:table-cell border-style="solid">
<fo:block><xsl:value-of select="."/></fo:block>
</fo:table-cell>
</xsl:for-each>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:block>
<fo:block margin-top="10pt"/>
</xsl:template>
现在我想将第一行的文字旋转90度,以便从下往上阅读。
我想出的最佳解决方案是:
在reference-orientation="0"
上设置<fo:table>
:
<fo:table border-style="solid" table-layout="fixed" reference-orientation="0">
将<fo:block>...</fo:block>
括在<fo:table-cell>
内,<fo:block-container>
旋转90度:
<fo:table-cell border-style="solid">
<fo:block-container reference-orientation="90">
<fo:block><xsl:value-of select="." /></fo:block>
</fo:block-container>
</fo:table-cell>
文本是旋转的,但第一行的高度实际为0,文本显示在表格上方,覆盖了前一个文本:
为第一行的单元格定义特定高度时,文本仍在表格之前,而不在第一行内:
如何在第一行的单元格中定位文本,并根据行中最长的文本自动计算行的高度?
答案 0 :(得分:1)
在表格外显示文本:表格单元格内的fo:block可以继承设置,如封闭块的左边距。
我之前没有见过的单元格高度问题,在Antennahouse Formatter中你可以旋转单元格内容,而IIRC则可以适当调整单元格大小。
答案 1 :(得分:0)
我有一个类似的问题,可以通过在页眉的块容器中添加页边距来解决。据我所知,标头单元会相应地调整自身大小:
<block-container>
<xsl:attribute name="margin-top" select="'5em'"/>
<xsl:attribute name="margin-bottom" select="'.75em'"/>
<xsl:attribute name="reference-orientation" select="'90'"/>
<block padding=".25em">
<xsl:apply-templates select="node()"/>
</block>
</block-container>
答案 2 :(得分:0)
这是我对动态高度的尝试。 您可以寻找一个更好的因素...因为我的主张满足了这种基本方法。
当然有更精确,更好的解决方案,但是我认为这是正确的方向。感谢@Kevin Brown的评论。
package.json