IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

[XSL-FO] Break-after et break-before


Sujet :

XML/XSL et SOAP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Points : 139
    Points
    139
    Par défaut [XSL-FO] Break-after et break-before
    Bonjour,
    Je cherche à produire un unique fichier pdf, produit à partir d'un unique fichier xml, contenant N noeuds, chacun correspondant à un rapport.
    Chaque rapport est constitué de 3 parties (A, B, C)

    Mon fichier xsl ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <fo:block xsl:use-attribute-sets="block-table" >
    	 <xsl:for-each select="/root/rapport">
     
    		<fo:block xsl:use-attribute-sets="block-table" break-after="page">
    			<xsl:call-template name="PartieA"/>
    		</fo:block>
     
    		<fo:block xsl:use-attribute-sets="block-table" break-after="page">
    			<xsl:call-template name="PartieB"/>
    		</fo:block>	
     
    		<fo:block xsl:use-attribute-sets="block-table" break-after="page">
    			<xsl:call-template name="PartieC"/>
    		</fo:block>
    	</xsl:for-each>
    </fo:block>
    en l'état, le résultat attendu n'est pas satisfaisant, parce que cela conduit à générer une page blanche après la dernière page

    J'ai essayé de remplacer le break-after de la partie C par un break-before dans la partie A, ce qui a pour effet de produire une page blanche en page 1.

    Ce que je recherche, c'est que chaque sous partie d'un rapport commence sur une nouvelle page.

    Si quelqu'un a une solution, je suis preneur.
    D'avance merci

  2. #2
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Bonjour,

    ta présentation semble bien particulière, puisque on a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <fo:block xsl:use-attribute-sets="block-table">
    Un bloc dans la cellule d'une table ?

    Personnellement, je construis la mise en page dans les maîtres,
    c'est beaucoup plus souple et les possibilités sont plus larges qu'avec les tableaux.
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Points : 139
    Points
    139
    Par défaut
    Merci pour ta réponse.
    j'utilise déjà un maître (mais je n'y connais pas grand chose).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
     
    <xsl:stylesheet
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    	xmlns:fo="http://www.w3.org/1999/XSL/Format"
    	version="1.0">
     
     
    	<xsl:attribute-set name="block-entete-page">
    		<xsl:attribute name="font-family">Times Roman</xsl:attribute>
    		<xsl:attribute name="font-size">16pt</xsl:attribute>
    		<xsl:attribute name="font-weight">bold</xsl:attribute>
    		<xsl:attribute name="text-align">left</xsl:attribute>
    		<xsl:attribute name="text-align">left</xsl:attribute>
    	</xsl:attribute-set>
     
     
    	<xsl:attribute-set name="block-table">
    		<xsl:attribute name="font-family">Times Roman</xsl:attribute>
    		<xsl:attribute name="font-size">13pt</xsl:attribute>
    		<xsl:attribute name="font-weight">bold</xsl:attribute>
    		<xsl:attribute name="text-align">left</xsl:attribute>
    		<xsl:attribute name="space-before">0.5cm</xsl:attribute>
    		<xsl:attribute name="space-after">0.5cm</xsl:attribute>
    	</xsl:attribute-set>
     
     
     
    	<xsl:template match="/">
     
    		<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
    				 xmlns:fox="http://xml.apache.org/fop/extensions">
     
    			<!-- Format général de la page xxxxxxxx -->
    			<fo:layout-master-set>
    				<fo:simple-page-master
    				margin-right="0.8cm"
    				margin-left="0.8cm"
    				margin-bottom="0cm"
    				margin-top="0cm"
    				page-width="21cm"
    				page-height="29.7cm"
    				master-name="all" >
    				  <fo:region-before extent="0.5cm"/>
    				  <fo:region-body margin-top="0cm" margin-bottom="0cm"/>
    				  <fo:region-after margin-top="0cm" margin-bottom="0cm" extent="0.5cm"/>
    				</fo:simple-page-master>
    			</fo:layout-master-set>
     
    			<fo:page-sequence master-reference="all" format="9">  
     
    				<fo:flow flow-name="xsl-region-body" >  
     
    					<fo:block xsl:use-attribute-sets="block-table" >
    						<xsl:for-each select="/root/rapport">
    							<fo:block xsl:use-attribute-sets="block-table" break-after="page">
    								<xsl:call-template name="PartieA"/>
    							</fo:block>
     
    							<fo:block xsl:use-attribute-sets="block-table" break-after="page">
    								<xsl:call-template name="PartieB"/>
    							</fo:block>	
     
    							<fo:block xsl:use-attribute-sets="block-table" break-after="page">
    								<xsl:call-template name="PartieC"/>
    							</fo:block>
    						</xsl:for-each>
    					</fo:block>			
     
    				</fo:flow>
    			</fo:page-sequence>
    		</fo:root>
    	</xsl:template>
    </xsl:stylesheet>
    En quoi d'après toi puis-je modifier mon code pour résoudre ma problématique ?

Discussions similaires

  1. page-break-after ne fonctionne pas
    Par kaching dans le forum Mise en page CSS
    Réponses: 14
    Dernier message: 05/09/2013, 09h59
  2. sas break after capricieux dans Proc Report
    Par servane dans le forum ODS et reporting
    Réponses: 9
    Dernier message: 24/05/2011, 11h55
  3. Comment utiliser page-break-before ou after
    Par alainsm dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 23/07/2010, 05h00
  4. [xsl-fo] break-before et number-rows-spanned
    Par MrMaze dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 18/03/2010, 13h14
  5. Problème firefox et page-break-before
    Par Magicdemon dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 16/05/2007, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo