Reputation: 77
I using XSLT and XML to create XSL-FO, from where to generate PDFs. The engine used is supporting only XSLT1.0.
I am trying to set up a layout that will be like this:
The issue I am facing is setting up the flow, in order to met the following:
Is that even possible to achieve this? How will I need to set up the Page Sets/Layouts? Thanks!
My simplified XSLFO I tried with, but is not meeting all above conditions:
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="Page01">
<fo:region-body region-name="Body"/>
<fo:region-after region-name="Page01Footer"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="Page02">
<fo:region-body region-name="Body"/>
<fo:region-after region-name="Page02Footer"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="AllPages">
<fo:region-body region-name="Body"/>
<fo:region-after region-name="AllPagesFooter"/>
</fo:simple-page-master>
<fo:page-sequence-master master-name="PagSeqMaster">
<fo:repeatable-page-master-alternatives maximum-repeats="no-limit">
<fo:conditional-page-master-reference master-reference="Page01"
page-position="first"/>
<fo:conditional-page-master-reference master-reference="Page02"
blank-or-not-blank="blank"/>
<fo:conditional-page-master-reference master-reference="AllPages"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
<fo:page-sequence-master master-name="PagSeqMaster-alt">
<fo:single-page-master-reference master-reference="Page01"/>
<fo:single-page-master-reference master-reference="Page02"/>
<fo:repeatable-page-master-alternatives maximum-repeats="no-limit">
<fo:conditional-page-master-reference master-reference="AllPages"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="PagSeqMaster">
<fo:static-content flow-name="Page01Footer">
<fo:block>Footer 01</fo:block>
</fo:static-content>
<fo:static-content flow-name="Page02Footer">
<fo:block>Footer 02 </fo:block>
</fo:static-content>
<fo:static-content flow-name="AllPagesFooter">
<fo:block>All Other Pages Footer</fo:block>
</fo:static-content>
<fo:flow flow-name="Body">
<fo:block>
repeating table content starting on page 1 goes here
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
Upvotes: 0
Views: 198
Reputation: 8068
You can do it with AH Formatter by generating a zero-height float on the second page using the axf:float-move
extension (see https://www.antenna.co.jp/AHF/help/en/ahf-float.html#axf.float-move). The float causes a blank-looking page after a one-page table and doesn't interfere with a two-page or three-page table.
<?xml version="1.0" encoding="UTF-8"?>
<fo:root
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions">
<fo:layout-master-set>
<fo:simple-page-master master-name="Page01">
<fo:region-body region-name="Body"/>
<fo:region-after region-name="Page01Footer"
extent="1in" />
</fo:simple-page-master>
<fo:simple-page-master master-name="Page02">
<fo:region-body region-name="Body"/>
<fo:region-after region-name="Page02Footer"
extent="1in" />
</fo:simple-page-master>
<fo:simple-page-master master-name="AllPages">
<fo:region-body region-name="Body"/>
<fo:region-after region-name="AllPagesFooter"
extent="1in" />
</fo:simple-page-master>
<fo:page-sequence-master master-name="TableMaster">
<fo:single-page-master-reference master-reference="Page01"/>
<fo:single-page-master-reference master-reference="Page02"/>
<fo:repeatable-page-master-reference master-reference="AllPages"/>
</fo:page-sequence-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="TableMaster">
<fo:static-content flow-name="Page01Footer">
<fo:block>Footer 01</fo:block>
</fo:static-content>
<fo:static-content flow-name="Page02Footer">
<fo:block>Footer 02 </fo:block>
</fo:static-content>
<fo:static-content flow-name="AllPagesFooter">
<fo:block>All Other Pages Footer</fo:block>
</fo:static-content>
<fo:flow flow-name="Body">
<fo:float float="before" axf:float-move="next"><fo:block/></fo:float>
<fo:block>
repeating table content starting on page 1 goes here
</fo:block>
</fo:flow>
</fo:page-sequence>
<fo:page-sequence master-reference="AllPages">
<fo:static-content flow-name="AllPagesFooter">
<fo:block>All Other Pages Footer</fo:block>
</fo:static-content>
<fo:flow flow-name="Body">
<fo:block>
rest of content goes here
</fo:block>
</fo:flow>
</fo:page-sequence>
<fo:page-sequence master-reference="TableMaster">
<fo:static-content flow-name="Page01Footer">
<fo:block>Footer 01</fo:block>
</fo:static-content>
<fo:static-content flow-name="Page02Footer">
<fo:block>Footer 02 </fo:block>
</fo:static-content>
<fo:static-content flow-name="AllPagesFooter">
<fo:block>All Other Pages Footer</fo:block>
</fo:static-content>
<fo:flow flow-name="Body">
<fo:float float="before" axf:float-move="next"><fo:block/></fo:float>
<fo:block>
repeating table content starting on page 1 goes here
</fo:block>
<fo:block break-before="page">
repeating table content on page 2 goes here
</fo:block>
</fo:flow>
</fo:page-sequence>
<fo:page-sequence master-reference="AllPages">
<fo:static-content flow-name="AllPagesFooter">
<fo:block>All Other Pages Footer</fo:block>
</fo:static-content>
<fo:flow flow-name="Body">
<fo:block>
rest of content goes here
</fo:block>
</fo:flow>
</fo:page-sequence>
<fo:page-sequence master-reference="TableMaster">
<fo:static-content flow-name="Page01Footer">
<fo:block>Footer 01</fo:block>
</fo:static-content>
<fo:static-content flow-name="Page02Footer">
<fo:block>Footer 02 </fo:block>
</fo:static-content>
<fo:static-content flow-name="AllPagesFooter">
<fo:block>All Other Pages Footer</fo:block>
</fo:static-content>
<fo:flow flow-name="Body">
<fo:float float="before" axf:float-move="next"><fo:block/></fo:float>
<fo:block>
repeating table content starting on page 1 goes here
</fo:block>
<fo:block break-before="page">
repeating table content on page 2 goes here
</fo:block>
<fo:block break-before="page">
repeating table content on page 3 goes here
</fo:block>
</fo:flow>
</fo:page-sequence>
<fo:page-sequence master-reference="AllPages">
<fo:static-content flow-name="AllPagesFooter">
<fo:block>All Other Pages Footer</fo:block>
</fo:static-content>
<fo:flow flow-name="Body">
<fo:block>
rest of content goes here
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
Upvotes: -1