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:
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:
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 № 1Tekst 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.