2010-06-14 10 views
3

En utilisant apache FOP, vous voulez créer un en-tête avec un logo aligné à gauche, adresse trois lignes alignées à droite, les deux alignés en haut. Suite à des travaux ok si fait à l'intérieur du flux, mais dans un en-tête de contenu statique ('xsl-region-before'), il obtient le droit & droite mais aligne le logo sous le bloc d'adresse, comme si la définition de la table étaient ignorés complètement.En-tête xsl-fo - image à gauche, trois lignes de texte à droite, aligné en haut

J'ai essayé d'autres options, comme essayer d'intégrer les deux, ou utiliser des flottants, avec des résultats similaires. L'en-tête les traite comme des blocs séparés et les empile. Quelqu'un a des suggestions?

Je trouve cette autre question poser la même question sur les pieds de page, hélas pas de réponses: Need instream-foreign-object and text to both align to the bottom in XSL-FO

extrait pertinent suit:

<fo:layout-master-set> 
     <fo:simple-page-master page-height="8.5in" page-width="11in" master-name="only" margin=".5in .5in .5in .5in"> 
      <fo:region-body region-name="xsl-region-body" margin-top="1in" margin-bottom=".5in"/> 
      <fo:region-before region-name="xsl-region-before"/> 
      <fo:region-after region-name="xsl-region-after"/> 
     </fo:simple-page-master> 
    </fo:layout-master-set> 
    <fo:page-sequence master-reference="only"> 
     <fo:static-content flow-name="xsl-region-before"> 
       <fo:block font-size="7pt"> 
        <fo:table width="10in"> 
         <fo:table-column/> 
         <fo:table-column/> 
         <fo:table-body> 
          <fo:table-row> 
           <fo:table-cell> 
            <fo:block> 
             <fo:external-graphic src="img/print_logo.png" content-width="2in"/> 
            </fo:block> 
           </fo:table-cell> 
           <fo:table-cell display-align="center"> 
            <fo:block text-align="right"> 
             123 Credibility Street 
            </fo:block> 
            <fo:block text-align="right"> 
             Chicago, IL 60606 
            </fo:block> 
            <fo:block text-align="right"> 
             312-123-4567 
            </fo:block> 
           </fo:table-cell> 
          </fo:table-row> 
         </fo:table-body> 
        </fo:table> 
       </fo:block> 
     </fo:static-content> 

Répondre

4

J'ai réussi à obtenir l'effet désiré en mettant les deux éléments en deux blocs-conteneurs séparés avec le positionnement absolu:

<fo:static-content flow-name="xsl-region-before"> 
    <fo:block-container position="absolute"> 
     <fo:block> 
      <fo:external-graphic src="img/print_logo.png" content-width="2in"/> 
     </fo:block> 
    </fo:block-container> 
    <fo:block-container position="absolute"> 
     <fo:block text-align="right"> 
      123 Credibility Street 
     </fo:block> 
     <fo:block text-align="right"> 
      Chicago, IL 60606 
     </fo:block> 
     <fo:block text-align="right"> 
      312-123-4567 
     </fo:block> 
    </fo:block-container> 
</fo:static-content> 
1

Il est tard pour répondre, mais Quer y doit être répondu. Alors voici:

Oui, un positionnement absolu est requis ici, mais le plus important est la séquence de bloc-bloc que vous placez.

Le contenu du dernier conteneur sera au-dessus des autres.