/ /テーブルセル内の回転テキストは、xsl-fo、fop、apache-fop以外のセルの上に表示されます

セルの上にレンダリングされたテーブルセル内の回転テキスト - xsl-fo、fop、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>

ここで、最初の行のテキストを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であり、テキストは前のテキストをオーバーレイするテーブルの上に表示されます。

前のテキストをオーバーレイする回転テキスト

最初の行のセルに特定の高さを定義する場合、テキストはまだテーブルの前にあり、最初の行内にはありません。

前のテキストと空の最初の行をオーバーレイする回転テキスト

最初の行のセル内にテキストを配置し、行内の最長テキストに応じて行の高さを自動的に計算するにはどうすればよいですか?

回答:

回答№1は1

テーブルの外に表示されるテキスト:テーブルセル内のfo:blockは、囲んでいるブロックの左マージンなどの設定を継承している場合があります。

これまで見たことのないセルの高さの問題は、Antennahouse Formatterではセルの内容を回転させることができ、IIRCはセルのサイズを適切に変更します。