1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

XSL:FO, Probleme mit Umbruch bei Tabellen

Dieses Thema im Forum "XML Technologien" wurde erstellt von vNeumann, 26. Juni 2012.

  1. vNeumann

    vNeumann Mitglied

    Hallo,
    ich denke dass ist das richtige Forum, falls nicht bitte verschieben.

    Ich arbeite gerade an einem PDF, auf dem unter anderem eine lange Tabelle mittels fo:table dargestellt wird. Die Tabelle hat eine variable Länge, und ich habe derzeit das Problem, dass die Tabelle asynchron umgebrochen wird:

    Auf Seite 1 werden lediglich 5 Zeilen dargestellt, auf Seite 2 23 Zeilen, auf Seite 3 11 Zeilen, und das obwohl genügend Platz vorhanden ist. Wie kann ich sowas verhindern, und warum ist das überhaupt so?

    Code (Text):
    1. <fo:table table-layout="fixed" width="100%" keep-together="auto" font-size="8pt">
    2.                         <fo:table-column column-width="20mm"/>
    3.                         <fo:table-column column-width="15mm"/>
    4.                         <fo:table-column column-width="15mm"/>
    5.                         <fo:table-column column-width="15mm"/>
    6.                         <fo:table-column column-width="10mm"/>
    7.                         <fo:table-column column-width="10mm"/>
    8.                         <fo:table-column column-width="70mm"/>
    9.                         <fo:table-column column-width="25mm"/>
    10.                         <fo:table-body>
    11.                             <fo:table-row font-weight="bold">
    12.                                 <fo:table-cell border="0.2mm solid" padding="1mm">
    13.                                     <fo:block>Date</fo:block>
    14.                                 </fo:table-cell>
    15.                                 <fo:table-cell border="0.2mm solid" padding="1mm">
    16.                                     <fo:block>Start</fo:block>
    17.                                 </fo:table-cell>
    18.                                 <fo:table-cell border="0.2mm solid" padding="1mm">
    19.                                     <fo:block>End</fo:block>
    20.                                 </fo:table-cell>
    21.                                 <fo:table-cell border="0.2mm solid" padding="1mm">
    22.                                     <fo:block>Duration</fo:block>
    23.                                 </fo:table-cell>
    24.                                 <fo:table-cell border="0.2mm solid" padding="1mm">
    25.                                     <fo:block>A*</fo:block>
    26.                                 </fo:table-cell>
    27.                                 <fo:table-cell border="0.2mm solid" padding="1mm">
    28.                                     <fo:block>E**</fo:block>
    29.                                 </fo:table-cell>
    30.                                 <fo:table-cell border="0.2mm solid" padding="1mm">
    31.                                     <fo:block>Subject</fo:block>
    32.                                 </fo:table-cell>
    33.                                 <fo:table-cell border="0.2mm solid" padding="1mm">
    34.                                     <fo:block>Deduction</fo:block>
    35.                                 </fo:table-cell>
    36.                             </fo:table-row>
    37.                             <xsl:apply-templates select="downtimeevents/downtimeevent"/>
    38.                         </fo:table-body>
    39.                     </fo:table>
    Danke für eure Hilfe, ich steh vor einem Rätsel
     
  2. vNeumann

    vNeumann Mitglied

    Ich habe das Problem nun lang 2 stündiger Suche und selbstherumtüfteln gefunden, und stelle es hier rein, falls es noch jemand braucht:

    Die Zeile <xsl:apply-templates select="downtimeevents/downtimeevent"/> macht nichts anderes, als aus den einzelnen Elementen <fo:table-row> zu erstellen. Wird bei JEDER <fo:table-row> nun das Attribut keep-together="always" angegeben, so wird die Tabelle ganz "normal" dargstellt (also so viele Zeilen wie möglich auf der 1. Seite, dann soviel wie möglich auf der 2. Seite, etc.
     
Die Seite wird geladen...