[XSL-FO]fop et définir une marge spécifique en dernière page

fop et définir une marge spécifique en dernière page [XSL-FO] - XML/XSL - Programmation

Marsh Posté le 18-12-2006 à 18:04:39    

Bonjour @ tous,
 
J'ai un problème dont je ne trouve pas la solution tout seul, j'en appelle donc à la communauté des forumeurs ^^.
J'aimerai généré un pdf avec xsl-fo(fop) qui aurai une certaine mise en page, sauf pour la dernière page.
Pour l'instant,j'ai défini un seul style pour toutes les pages :  
 

Code :
  1. <fo:layout-master-set>
  2. <fo:simple-page-master page-width="21cm" page-height="29.7cm" master-name="page" margin-right="0.5cm" margin-left="0.5cm" margin-bottom="0.5cm" margin-top="0.5cm">
  3.  <fo:region-body margin-top="10.2cm" margin-bottom="6.1cm"/>
  4.  <fo:region-before extent="10cm"/>
  5.  <fo:region-after extent="3cm"/>
  6.  <!--pied de page de hauteur-->
  7. </fo:simple-page-master>
  8. </fo:layout-master-set>
  9. <fo:page-sequence master-reference="page">
  10. Tout mon code
  11. </fo:page-sequence>


 
Si vous pouvez m'indiquer la méthode à suivre pour que je puisse, dans le code, lors de la dernière page, augmenter fo:region-after à 5cm.
 
Merci @ tous.

Reply

Marsh Posté le 18-12-2006 à 18:04:39   

Reply

Marsh Posté le 19-12-2006 à 10:37:20    

Le hic sera de déterminer quand on arrive à la dernière page...

Reply

Marsh Posté le 19-12-2006 à 15:45:20    

Code :
  1. <fo:page-sequence-master master-name="twoside1">
  2.     <fo:repeatable-page-master-alternatives>
  3.       <fo:conditional-page-master-reference master-name="right1" odd-or-even="odd" />
  4.       <fo:conditional-page-master-reference master-name="left1" odd-or-even="even" />
  5.       <fo:conditional-page-master-reference master-name="last1" page-position="last" />
  6.     </fo:repeatable-page-master-alternatives>
  7.   </fo:page-sequence-master>


 
il y a surement une solution avec ceci


Message édité par quelme le 19-12-2006 à 15:45:48
Reply

Marsh Posté le 19-12-2006 à 16:12:08    

ouai effectivement j'ai trouvé une reponse qui ressemble à ça et qui devrait fonctionné :  

Code :
  1. <fo:layout-master-set>
  2. <fo:simple-page-master  master-name="normal" page-width="21cm" page-height="29.7cm" master-name="page" margin-right="0.5cm" margin-left="0.5cm" margin-bottom="0.5cm" margin-top="0.5cm">
  3. <fo:region-body margin-top="10.2cm" margin-bottom="6.1cm"/>
  4. <fo:region-before extent="10cm"/>
  5. <fo:region-after extent="3cm"/>
  6. </fo:simple-page-master>
  7. <fo:simple-page-master  master-name="lastpage" page-width="21cm" page-height="29.7cm" master-name="page" margin-right="0.5cm" margin-left="0.5cm" margin-bottom="0.5cm" margin-top="0.5cm">
  8. <fo:region-body margin-top="10.2cm" margin-bottom="6.1cm"/>
  9. <fo:region-before extent="10cm"/>
  10. <fo:region-after extent="5cm"/>
  11. </fo:simple-page-master>
  12. <fo:page-sequence-master master-name="sequence">
  13. <fo:repeatable-page-master-alternatives>
  14. <fo:conditional-page-master-reference
  15. page-position="first" master-reference="normal"/>
  16. <fo:conditional-page-master-reference
  17. page-position="rest" master-reference=normal"/>
  18. <fo:conditional-page-master-reference
  19. page-position="last" master-reference=lastpage"/>
  20. </fo:repeatable-page-master-alternatives>
  21. </fo:page-sequence-master>
  22. </fo:layout-master-set>


Reply

Marsh Posté le 20-12-2006 à 11:33:32    

Malgré tous mes efforts, j'ai l'impression que ça ne marche pas pour la dernière page.
En ajoutant un backgroun-color différent pour chaque simple-page-master, je m'aperçoit que la dernière page utilise le simple-page-master de rest alors que cela fonctionne correctemnt pour la première page et les reste du document.
Est-ce un problème d'implémentation dans FOP (encore un!)?
 
Après quelques tests, je me rends compte que si je met uniquement :
Code :
 

Code :
  1. <fo:conditional-page-master-reference page-position="first" master-reference="normal"/>
  2. <fo:conditional-page-master-reference page-position="last" master-reference="lastpage"/>


 
J'ai la première page avec le layout normal, puis toutes les autres pages avec le layout de last.
Est-ce qu'il y a des priorités entre les conditional-page-master-reference? j'ai essayé pas mal de combinaison mais à chaque fois il n'y en a que deux qui sont pris en compte. Voila ce qui ne marche pas :
any puis last
first puis last
rest puis last (exception fop)
first puis rest puis last
first puis any puis last
last (exception fop)
 
Vraiment incompréhensible...


Message édité par mathieumathias le 20-12-2006 à 11:36:15
Reply

Marsh Posté le 20-12-2006 à 12:34:10    

Apparemment c'est sûr, fop ne gère pas la dernière page.
Je pense peut être pouvoir faire ça avec des marqeurs mais la tâche s'annonce très difficile. J'ai déjà un marqueur pour afficher un footer différent sur la dernière page, maintenant il faut que ça marche pour agrandir le fo:region-after.
Des suggestions sont les bienvenues.

Reply

Marsh Posté le 22-12-2006 à 10:21:27    

up! toujours en recherche de solutions :pfff: . Please help!


Message édité par mathieumathias le 22-12-2006 à 10:21:39
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed