/ / Obrócony tekst w komórce tabeli renderowany powyżej komórki poza - xsl-fo, fop, apache-fop

Obrócony tekst w komórce tabeli renderowanej powyżej komórki nie wewnątrz - xsl-fo, fop, apache-fop

Mam następujący szablon do wygenerowania zdefiniowanej tabeli:

<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>

Teraz chcę obrócić tekst w pierwszym rzędzie o 90 stopni, aby można go było czytać od dołu do góry.

Najlepsze rozwiązanie, jakie wymyśliłem, to:

  • ustaw a reference-orientation="0" na <fo:table>:

    <fo:table border-style="solid" table-layout="fixed" reference-orientation="0">
    
  • załącz <fo:block>...</fo:block> w obrębie <fo:table-cell> z a <fo:block-container> obrócone o 90 stopni:

    <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>
    

Tekst jest obracany, ale wysokość pierwszego wiersza wynosi faktycznie 0, a tekst jest wyświetlany nad tabelą nakładającą się na poprzedni tekst:

obrócony tekst nakładający się na poprzedni tekst

Podczas definiowania określonej wysokości dla komórek pierwszego wiersza tekst wciąż znajduje się przed tabelą i nie znajduje się w pierwszym rzędzie:

obrócony tekst nakładający się na poprzedni tekst i pusty pierwszy wiersz

Jak ustawić tekst w komórkach pierwszego wiersza i automatycznie obliczyć wysokość wiersza w zależności od najdłuższego tekstu w wierszu?

Odpowiedzi:

1 dla odpowiedzi № 1

Tekst wyświetlany poza tabelą: blok fo: wewnątrz komórki tabeli może dziedziczyć ustawienia jak lewy margines z otaczającego bloku.

Problem wysokości komórki, którego nie widziałem wcześniej, w Antennahouse Formatter możesz obracać zawartość komórki, a IIRC komórka zostanie odpowiednio przeskalowana.