comment garder le tableau avec en-tête, mais de permettre des sauts de page à l'intérieur de corps de table en XSL-FO à l'aide de FOP

Je suis de la génération d'un fichier PDF à l'aide d'Apache FOP et XSL-FO de la feuille de style. Dans le PDF, je l'ai sortie en-têtes html (equiv h1) qui appartiennent à une table, il doit donc être maintenu toujours ensemble. Cependant, mes tableaux peuvent également contenir autant de données qu'ils n'ont pas nécessairement sur une page.

Le résultat souhaité est un ensemble de règle qui permet à un tête être conservée avec la table et de s'adapter à la fois sur une page si possible, mais si les données de la table est tellement longue qu'elle ne tient pas sur une seule page, les sauts de page sera insérée dans la table tout en gardant l'élément d'en-tête sur la même page que le début de la table.

La solution que j'ai droit ne garder le titre et la table, mais je reçois un Contenu déborde d'erreur pour les données de la table si tout ne tient pas sur une seule page. J'espérais que la page-break-inside: éviter posé sur la table, élément d'aide à ce sujet, mais apparemment pas... des suggestions?

Exemple xsl (coupé court pour des raisons de lisibilité):

<!-- add test table with header that should stay on same page -->
<fo:block font-size="20pt" font-weight="bold">Table header</fo:block>

<fo:table keep-with-previous.within-page="always"
      page-break-inside="avoid" 
      table-layout="fixed" border-width="1mm" border-style="solid">
  <fo:table-column column-width="auto" />
  <fo:table-column column-width="30mm" />

  <fo:table-header text-align="center" background-color="silver">
    <fo:table-row>
      <fo:table-cell padding="1mm" border-width="1mm" border-style="solid">
    <fo:block>First name</fo:block>
      </fo:table-cell>
      <fo:table-cell padding="1mm" border-width="1mm" border-style="solid">
    <fo:block>Last name</fo:block>
      </fo:table-cell>
    </fo:table-row>
  </fo:table-header>
  <fo:table-body>
    <!-- the table-rows can be repeated N times, spanning several pages -->
    <fo:table-row >
      <fo:table-cell padding="1mm" border-width="1mm" border-style="solid">
    <fo:block>ab</fo:block>
      </fo:table-cell>
      <fo:table-cell padding="1mm" border-width="1mm" border-style="solid">
    <fo:block>cd</fo:block>
      </fo:table-cell>
    </fo:table-row>
    <!-- .... more table-row:s ---> 

Mise à jour sur la sortie souhaitée

Pour mieux décrire ce résultat, je suis à la recherche de:

Le document contient à la fois du texte, des paragraphes, des titres et des tables.

  1. Si la quantité de contenu est tel que la table n'aura qu'une ou deux lignes sur la page suivante, puis le xsl-fo devrait déplacer la totalité de la table et l'en-tête de la page suivante, à condition qu'il s'adapte sur la page entièrement.
  2. Si sur l'autre côté de la table comme autant de lignes qu'il n'aurait pas sa place sur une toute nouvelle page de toute façon, alors la sortie doit être commencé tout de suite dans le flux de documents, tout en permettant la table à split acros plusieurs pages.

Si je supprime la page-break-inside="éviter", puis-je obtenir une table qui se brise sur plusieurs pages joliment, mais les cas décrits dans la #1 ne serait pas appariés. I. e. il ne bouge pas d'un tableau et elle est à la tête entièrement à la page suivante si seules quelques lignes seraient déplacés à la page suivante. Si je quitte la page-break-inside, puis-je obtenir un contenu de problème de dépassement avec de longues tables, parce que les lignes qui ne tiennent pas sur la page ne sont pas déplacés à la page suivante.

Je suppose que l'un des problèmes fondamentaux est que mes tables de sortie sont très dynamiques dans la longueur et, malheureusement, je n'ai pas de contrôle sur ce que la quantité de données produites dans les tableaux.

J'ai probablement mal comprendre quelque chose ici, mais qu'est-ce qui ne fonctionne pas si vous supprimez page-break-inside: avoid?
voir ma mise à jour de question, j'espère que ça clarifie la question un peu?

OriginalL'auteur Jens Wegar | 2011-11-21