在单元格上方呈现的表格单元格中的旋转文本不在内

Tor*_*örn 10 xsl-fo apache-fop

我有以下模板来生成一个定义的表:

<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>
Run Code Online (Sandbox Code Playgroud)

现在我想将第一行中的文本旋转90度,以便从下往上阅读.

我想出的最佳解决方案是:

  • 设置reference-orientation="0"<fo:table>:

    <fo:table border-style="solid" table-layout="fixed" reference-orientation="0">
    
    Run Code Online (Sandbox Code Playgroud)
  • 包围<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>
    
    Run Code Online (Sandbox Code Playgroud)

文本是旋转的,但第一行的高度实际为0,文本显示在表格上方,覆盖了前一个文本:

旋转文本覆盖以前的文本

为第一行的单元格定义特定高度时,文本仍在表格之前,而不在第一行内:

旋转文本覆盖前一个文本并清空第一行

如何在第一行的单元格中定位文本,并根据行中最长的文本自动计算行的高度?

Hob*_*bes 1

显示在表格外部的文本:表格单元格内的 fo:block 可能会继承封闭块的左边距等设置。

我以前从未见过单元格高度问题,在 Antennahouse Formatter 中您可以旋转单元格内容,IIRC 单元格将适当调整大小。