Ignore:
Timestamp:
07/08/10 03:00:13 (23 months ago)
Author:
jharrop
Message:

PDF via XSL FO: support for multiple sections

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/docx4j/src/main/java/org/docx4j/convert/out/pdf/viaXSLFO/docx2fo.xslt

    r1131 r1135  
    7979</xsl:template> 
    8080 
    81 <!--  Not used, if we just pass in document.xml --> 
     81<!--  Not used, if we just pass in document.xml 
    8282<xsl:template match="/pkg:package"> 
    8383 
     
    8787 
    8888  <xsl:template match="w:document"> 
     89   
     90  --> 
     91   
     92   
     93  <xsl:template match="sections"> 
    8994   
    9095                <xsl:variable name="logging"  
     
    100105                <fo:root> 
    101106 
    102                         <fo:layout-master-set> 
    103                                 <!-- fo:layout-master-set defines in its children the page layout: 
    104                                         the pagination and layout specifications 
    105                                         - page-masters: have the role of describing the intended subdivisions 
    106                                         of a page and the geometry of these subdivisions 
    107                                         In this case there is only a simple-page-master which defines the 
    108                                         layout for all pages of the text 
    109                                          
    110                                         We handle headers/footers, but not yet on a per section basis.   
    111                                          
    112                                         See http://www.dpawson.co.uk/xsl/sect3/headers.html                              
    113                                 --> 
    114  
    115                                         <!--  First Page --> 
    116                                         <xsl:if 
    117                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasFirstHeaderOrFooter($wmlPackage)"> 
    118                                                 <fo:simple-page-master master-name="firstpage" 
    119                                                         page-height="297mm" page-width="210mm" margin-top="10mm" 
    120                                                         margin-bottom="10mm" margin-left="25mm" margin-right="20mm"> 
    121                                                          
    122                                                         <fo:region-body margin-top="20mm" 
    123                                                                 margin-bottom="20mm" margin-left="0mm" margin-right="0mm" /> 
    124  
    125  
    126                                                         <!--  First Page Header --> 
    127                                                         <xsl:if 
    128                                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasFirstHeader($wmlPackage)"> 
    129                                                                 <fo:region-before 
    130                                                                         region-name="xsl-region-before-firstpage" extent="10mm" /> 
    131                                                         </xsl:if> 
    132  
    133                                                         <!--  First Page Footer --> 
    134                                                         <xsl:if 
    135                                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasFirstFooter($wmlPackage)"> 
    136                                                                 <fo:region-after 
    137                                                                         region-name="xsl-region-after-firstpage" extent="10mm" /> 
    138                                                         </xsl:if> 
    139  
    140                                                 </fo:simple-page-master> 
    141                                         </xsl:if> 
    142                                         <xsl:if 
    143                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasEvenOrOddHeaderOrFooter($wmlPackage)"> 
    144                                                 <!-- layout for the even page --> 
    145                                                 <fo:simple-page-master master-name="evenpage" 
    146                                                         page-height="297mm" page-width="210mm" margin-top="10mm" 
    147                                                         margin-bottom="10mm" margin-left="25mm" margin-right="20mm"> 
    148                                                          
    149                                                         <fo:region-body margin-top="20mm" 
    150                                                                 margin-bottom="20mm" margin-left="0mm" margin-right="0mm" /> 
    151                                                         <xsl:if 
    152                                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasEvenHeader($wmlPackage)"> 
    153                                                                 <fo:region-before 
    154                                                                         region-name="xsl-region-before-evenpage" extent="10mm" /> 
    155                                                         </xsl:if> 
    156                                                         <xsl:if 
    157                                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasEvenFooter($wmlPackage)"> 
    158                                                                 <fo:region-after 
    159                                                                         region-name="xsl-region-after-evenpage" extent="10mm" /> 
    160                                                         </xsl:if> 
    161                                                 </fo:simple-page-master> 
    162                                                 <!-- layout for the odd page --> 
    163                                                 <fo:simple-page-master master-name="oddpage" 
    164                                                         page-height="297mm" page-width="210mm" margin-top="10mm" 
    165                                                         margin-bottom="10mm" margin-left="25mm" margin-right="20mm"> 
    166                                                          
    167                                                         <fo:region-body margin-top="20mm" 
    168                                                                 margin-bottom="20mm" margin-left="0mm" margin-right="0mm" /> 
    169                                                         <xsl:if 
    170                                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasOddHeader($wmlPackage)"> 
    171                                                                 <fo:region-before 
    172                                                                         region-name="xsl-region-before-default" extent="10mm" /> 
    173                                                         </xsl:if> 
    174                                                         <xsl:if 
    175                                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasOddFooter($wmlPackage)"> 
    176                                                                 <fo:region-after 
    177                                                                         region-name="xsl-region-after-default" extent="10mm" /> 
    178                                                         </xsl:if> 
    179                                                 </fo:simple-page-master> 
    180                                         </xsl:if> 
    181                                         <xsl:if 
    182                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasDefaultHeaderOrFooter($wmlPackage)"> 
    183                                                 <fo:simple-page-master master-name="default" 
    184                                                         page-height="297mm" page-width="210mm" margin-top="10mm" 
    185                                                         margin-bottom="10mm" margin-left="25mm" margin-right="20mm"> 
    186                                                          
    187                                                         <fo:region-body margin-top="20mm" 
    188                                                                 margin-bottom="20mm" margin-left="0mm" margin-right="0mm" /> 
    189                                                         <xsl:if 
    190                                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasDefaultHeader($wmlPackage)"> 
    191                                                                 <fo:region-before 
    192                                                                         region-name="xsl-region-before-default" extent="10mm" /> 
    193                                                         </xsl:if> 
    194                                                         <xsl:if 
    195                                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasDefaultFooter($wmlPackage)"> 
    196                                                                 <fo:region-after 
    197                                                                         region-name="xsl-region-after-default" extent="10mm" /> 
    198                                                         </xsl:if> 
    199                                                 </fo:simple-page-master> 
    200                                         </xsl:if> 
    201  
    202                                         <fo:simple-page-master master-name="simple" 
    203                                                 page-height="29.7cm" page-width="21cm" margin-top="1cm" 
    204                                                 margin-bottom="2cm" margin-left="2.5cm" margin-right="2.5cm"> 
    205                                                 <fo:region-body margin-top="3cm" /> 
    206                                                 <fo:region-before extent="3cm" /> 
    207                                                 <fo:region-after extent="1.5cm" /> 
    208                                         </fo:simple-page-master> 
    209  
    210  
    211                                 <fo:page-sequence-master master-name="twoside"> 
    212  
    213                                         <fo:repeatable-page-master-alternatives> 
    214                                                         <xsl:if 
    215                                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasFirstHeaderOrFooter($wmlPackage)"> 
    216                                                                 <fo:conditional-page-master-reference 
    217                                                                         master-reference="firstpage" page-position="first" /> 
    218                                                         </xsl:if> 
    219                                                          
    220                                                         <xsl:choose> 
    221                                                                 <xsl:when test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasEvenHeaderOrFooter($wmlPackage)"> 
    222                                                                         <fo:conditional-page-master-reference 
    223                                                                                 master-reference="evenpage" odd-or-even="even" /> 
    224                                                                         <fo:conditional-page-master-reference 
    225                                                                                 master-reference="oddpage" odd-or-even="odd" /> 
    226                                                                 </xsl:when> 
    227                                                                 <xsl:when test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasDefaultHeaderOrFooter($wmlPackage)"> 
    228                                                                         <fo:conditional-page-master-reference 
    229                                                                                 master-reference="default" />    
    230                                                                 </xsl:when> 
    231                                                                 <xsl:otherwise> 
    232                                                                         <fo:conditional-page-master-reference 
    233                                                                                 master-reference="simple" />                                                                                                                             
    234                                                                 </xsl:otherwise> 
    235                                                         </xsl:choose> 
    236 <!--  
    237                                                         <xsl:if 
    238                                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasDefaultFooter($wmlPackage)"> 
    239                                                                 <fo:conditional-page-master-reference 
    240                                                                         master-reference="default" /> 
    241                                                         </xsl:if> 
    242                                                         <xsl:if 
    243                                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasOddHeaderOrFooter($wmlPackage)"> 
    244                                                                 <fo:conditional-page-master-reference 
    245                                                                         master-reference="oddpage" odd-or-even="odd" /> 
    246                                                         </xsl:if> 
    247                                                         <xsl:if 
    248                                                                 test="java:org.docx4j.model.structure.HeaderFooterPolicy.hasEvenHeaderOrFooter($wmlPackage)"> 
    249                                                                 <fo:conditional-page-master-reference 
    250                                                                         master-reference="evenpage" odd-or-even="even" /> 
    251                                                         </xsl:if> 
    252  -->                                                     
    253                                         </fo:repeatable-page-master-alternatives> 
    254                                 </fo:page-sequence-master> 
    255                         </fo:layout-master-set> 
     107                <xsl:copy-of select="java:org.docx4j.convert.out.pdf.viaXSLFO.LayoutMasterSetBuilder.getLayoutMasterSetFragment(  
     108                        $wmlPackage)" /> 
     109                         
     110                        <xsl:apply-templates match="section"/> 
     111 
     112                </fo:root> 
     113  </xsl:template> 
     114 
     115 
     116        <xsl:template match="section"> 
     117         
    256118 
    257119                        <!-- start page-sequence 
     
    261123                                which is to be used to layout the text contained in this 
    262124                                page-sequence--> 
    263                         <fo:page-sequence master-reference="twoside"> 
     125                        <fo:page-sequence master-reference="{@name}"> 
    264126 
    265127                                <!--  First Page Header --> 
     
    396258                                                select="java:org.docx4j.convert.out.pdf.viaXSLFO.PartTracker.inMainDocumentPart($wmlPackage, $modelStates)" /> 
    397259 
    398                                         <xsl:apply-templates select="w:body/*" /> 
     260                                        <!--<xsl:apply-templates select="w:body/*" />--> 
     261                                        <xsl:apply-templates select="*" /> 
    399262 
    400263                                        <xsl:call-template name="pretty-print-block"/> 
     
    417280 
    418281                        <!-- end: defines page layout --> 
    419  
    420  
    421  
    422  
    423                 </fo:root> 
    424   </xsl:template> 
     282         
     283         
     284        </xsl:template> 
    425285 
    426286  <!--  the extension functions fetch these 
Note: See TracChangeset for help on using the changeset viewer.