page-width="21cm"
page-height="29.7cm"
master-name="first">
- <fo:region-before extent="1cm"/>
<fo:region-body margin-top="1cm"/>
+ <fo:region-before extent="1cm"/>
<fo:region-after extent="1.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-top="1cm"
page-width="21cm"
page-height="29.7cm">
- <fo:region-before extent="1cm"/>
<fo:region-body margin-top="1cm"/>
+ <fo:region-before extent="1cm"/>
<fo:region-after extent="1.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
/**
* base class for nodes in the XML tree
- *
*/
public abstract class FONode {
+ contentModel, locator);
}
+ /**
+ * Helper function to return missing child element errors
+ * (e.g., fo:layout-master-set not having any page-master child element)
+ * @param contentModel The XSL Content Model for the fo: object.
+ * or a similar description indicating child elements needed.
+ */
+ protected void missingPropertyError(String propertyName)
+ throws SAXParseException {
+ throw new SAXParseException(errorText(locator) + getName() +
+ " is missing required \"" + propertyName + "\" property.", locator);
+ }
+
/**
* Helper function to return "Error (line#/column#)" string for
* above exception messages
"this." from blockArea since BlockArea is now local.
*/
/**
- * Class modelling the fo:block object. See Sec. 6.5.2 of the XSL-FO Standard.
+ * Class modelling the fo:block object.
*/
public class Block extends FObjMixed {
import org.xml.sax.SAXParseException;
/**
- * Class modelling the fo:block-container object. See Sec. 6.5.3 of the XSL-FO
- * Standard.
+ * Class modelling the fo:block-container object.
+ * @todo implement validateChildNode()
*/
public class BlockContainer extends FObj {
import org.apache.fop.fo.FObj;
/**
- * Class modelling the fo:footnote object. See Sec. 6.10.3 of the XSL-FO
- * Standard.
+ * Class modelling the fo:footnote object.
*/
public class Footnote extends FObj {
import org.apache.fop.fo.FObj;
/**
- * Class modelling the fo:inline-container object. See Sec. 6.6.8 of the XSL-FO
- * Standard.
+ * Class modelling the fo:inline-container object.
+ * @todo implement validateChildNode()
*/
public class InlineContainer extends FObj {
* Class modelling fo:leader object.
* The main property of fo:leader is leader-pattern.
* The following patterns are treated: rule, space, dots and use-content.
+ * @todo implement validateChildNode()
*/
public class Leader extends FObjMixed {
import org.apache.fop.layoutmgr.list.ListBlockLayoutManager;
/**
- * Class modelling the fo:list-block object. See Sec. 6.8.2 of the XSL-FO
- * Standard.
+ * Class modelling the fo:list-block object.
*/
public class ListBlock extends FObj {
import org.apache.fop.fo.FObj;
/**
- * Class modelling the fo:list-item-body object. See Sec. 6.8.4 of the XSL-FO
- * Standard.
+ * Class modelling the fo:list-item-body object.
+ * @todo implement validateChildNode()
*/
public class ListItemBody extends FObj {
import org.apache.fop.fo.FObj;
/**
- * Class modelling the fo:list-item-label object. See Sec. 6.8.5 of the XSL-FO
- * Standard.
+ * Class modelling the fo:list-item-label object.
+ * @todo implement validateChildNode()
*/
public class ListItemLabel extends FObj {
/**
* Class modelling the fo:multi-case object.
+ * @todo implement validateChildNode()
*/
public class MultiCase extends FObj {
/**
* Class modelling the fo:multi-switch object.
+ * @todo implement validateChildNode()
*/
public class MultiSwitch extends FObj {
/**
* Class modelling the fo:multi-toggle property.
+ * @todo implement validateChildNode()
*/
public class MultiToggle extends FObj {
import org.apache.fop.layoutmgr.PageNumberLayoutManager;
/**
- * Class modelling the fo:page-number object. See Sec. 6.6.10 of the XSL-FO
- * Standard.
+ * Class modelling the fo:page-number object.
*/
public class PageNumber extends FObj {
/** FontState for this object */
import org.apache.fop.layoutmgr.PageNumberCitationLayoutManager;
/**
- * Class modelling the fo:page-number-citation object. See Sec. 6.6.11 of the
- * XSL-FO Standard.
+ * Class modelling the fo:page-number-citation object.
* This inline fo is replaced with the text for a page number.
* The page number used is the page that contains the start of the
* block referenced with the ref-id attribute.
import org.apache.fop.fo.properties.LengthRangeProperty;
/**
- * Class modelling the fo:table object. See Sec. 6.7.3 of the XSL-FO Standard.
+ * Class modelling the fo:table object.
*/
public class Table extends FObj {
private static final int MINCOLWIDTH = 10000; // 10pt
/**
* Class modelling the fo:table-and-caption property.
+ * @todo implement validateChildNode()
*/
public class TableAndCaption extends FObj {
import org.apache.fop.layoutmgr.table.Body;
/**
- * Class modelling the fo:table-body object. See Sec. 6.7.8 of the XSL-FO
- * Standard.
+ * Class modelling the fo:table-body object.
+ * @todo implement validateChildNode()
*/
public class TableBody extends FObj {
/**
* Class modelling the fo:table-caption object.
+ * @todo implement validateChildNode()
*/
public class TableCaption extends FObj {
import org.apache.fop.fo.properties.CommonBorderAndPadding;
/**
- * Class modelling the fo:table-cell object. See Sec. 6.7.10 of the XSL-FO
- * Standard.
+ * Class modelling the fo:table-cell object.
+ * @todo implement validateChildNode()
*/
public class TableCell extends FObj {
import org.apache.fop.fo.FObj;
/**
- * Class modelling the fo:table-column object. See Sec. 6.7.4 of the XSL-FO
- * Standard.
+ * Class modelling the fo:table-column object.
*/
public class TableColumn extends FObj {
import org.apache.fop.fo.FONode;
/**
- * Class modelling the fo:table-footer object. See Sec. 6.7.7 of the XSL-FO
- * Standard.
+ * Class modelling the fo:table-footer object.
+ * @todo implement validateChildNode()
*/
public class TableFooter extends TableBody {
import org.apache.fop.fo.FONode;
/**
- * Class modelling the fo:table-header object. See Sec. 6.7.6 of the XSL-FO
- * Standard.
+ * Class modelling the fo:table-header object.
+ * @todo implement validateChildNode()
*/
public class TableHeader extends TableBody {
/**
- * Class modelling the fo:table-row object. See Sec. 6.7.9 of the XSL-FO
- * Standard.
+ * Class modelling the fo:table-row object.
+ * @todo implement validateChildNode()
*/
public class TableRow extends FObj {
*
* Content: (#PCDATA|%inline;|%block;)*
* Properties: id
+ * @todo implement validateChildNode()
*/
public class Wrapper extends FObjMixed {
import org.apache.fop.layoutmgr.FlowLayoutManager;
/**
- * Class modelling the fo:flow object. See Sec. 6.4.18 in the XSL-FO Standard.
+ * Class modelling the fo:flow object.
*/
public class Flow extends FObj {
// FOP
import org.apache.fop.fo.FONode;
import org.apache.fop.fo.FObj;
-import org.apache.fop.apps.FOPException;
/**
* The layout-master-set formatting object.
super(parent);
}
+ /**
+ * @see org.apache.fop.fo.FObj#addProperties
+ */
+ protected void addProperties(Attributes attlist) throws SAXParseException {
+ super.addProperties(attlist);
+
+ if (parent.getName().equals("fo:root")) {
+ Root root = (Root)parent;
+ root.setLayoutMasterSet(this);
+ } else {
+ throw new SAXParseException("fo:layout-master-set must be child of fo:root, not "
+ + parent.getName(), locator);
+ }
+
+ this.simplePageMasters = new java.util.HashMap();
+ this.pageSequenceMasters = new java.util.HashMap();
+ }
+
/**
* @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
XSL/FOP: (simple-page-master|page-sequence-master)+
}
/**
- * @see org.apache.fop.fo.FObj#addProperties
+ * Add a simple page master.
+ * The name is checked to throw an error if already added.
+ * @param sPM simple-page-master to add
+ * @throws SAXParseException if there's a problem with name uniqueness
*/
- protected void addProperties(Attributes attlist) throws SAXParseException {
- super.addProperties(attlist);
+ protected void addSimplePageMaster(SimplePageMaster sPM)
+ throws SAXParseException {
- if (parent.getName().equals("fo:root")) {
- Root root = (Root)parent;
- root.setLayoutMasterSet(this);
- } else {
- throw new SAXParseException("fo:layout-master-set must be child of fo:root, not "
- + parent.getName(), locator);
+ // check for duplication of master-name
+ String masterName = sPM.getPropString(PR_MASTER_NAME);
+ if (existsName(masterName)) {
+ throw new SAXParseException("'master-name' ("
+ + masterName
+ + ") must be unique "
+ + "across page-masters and page-sequence-masters", sPM.locator);
}
-
- this.simplePageMasters = new java.util.HashMap();
- this.pageSequenceMasters = new java.util.HashMap();
+ this.simplePageMasters.put(masterName, sPM);
}
- /**
- * Add a simple page master.
- * The name is checked to throw an error if already added.
- * @param simplePageMaster simple-page-master to add
- * @throws FOPException if there's a problem with name uniqueness
- */
- protected void addSimplePageMaster(SimplePageMaster simplePageMaster)
- throws FOPException {
- // check against duplication of master-name
- if (existsName(simplePageMaster.getMasterName())) {
- throw new FOPException("'master-name' ("
- + simplePageMaster.getMasterName()
- + ") must be unique "
- + "across page-masters and page-sequence-masters");
+ private boolean existsName(String masterName) {
+ if (simplePageMasters.containsKey(masterName)
+ || pageSequenceMasters.containsKey(masterName)) {
+ return true;
+ } else {
+ return false;
}
- this.simplePageMasters.put(simplePageMaster.getMasterName(),
- simplePageMaster);
}
/**
* Add a page sequence master.
* The name is checked to throw an error if already added.
* @param masterName name for the master
- * @param pageSequenceMaster PageSequenceMaster instance
- * @throws FOPException if there's a problem with name uniqueness
+ * @param pSM PageSequenceMaster instance
+ * @throws SAXParseException if there's a problem with name uniqueness
*/
protected void addPageSequenceMaster(String masterName,
- PageSequenceMaster pageSequenceMaster)
- throws FOPException {
+ PageSequenceMaster pSM)
+ throws SAXParseException {
// check against duplication of master-name
if (existsName(masterName)) {
- throw new FOPException("'master-name' (" + masterName
- + ") must be unique "
- + "across page-masters and page-sequence-masters");
+ throw new SAXParseException("'master-name' ("
+ + masterName
+ + ") must be unique "
+ + "across page-masters and page-sequence-masters", pSM.locator);
}
- this.pageSequenceMasters.put(masterName, pageSequenceMaster);
+ this.pageSequenceMasters.put(masterName, pSM);
}
/**
return (PageSequenceMaster)this.pageSequenceMasters.get(masterName);
}
- private boolean existsName(String masterName) {
- if (simplePageMasters.containsKey(masterName)
- || pageSequenceMasters.containsKey(masterName)) {
- return true;
- } else {
- return false;
- }
- }
-
/**
* Section 7.25.7: check to see that if a region-name is a
* duplicate, that it maps to the same fo region-class.
return false;
}
+ /**
+ * @see org.apache.fop.fo.FObj#getName()
+ */
public String getName() {
return "fo:layout-master-set";
}
* Checks that the parent is the right element. The default implementation
* checks for fo:page-sequence-master.
* @param parent parent node
- * @throws FOPException If the parent is invalid.
+ * @throws SAXParseException If the parent is invalid.
*/
protected void validateParent(FONode parent) throws SAXParseException {
if (parent.getName().equals("fo:page-sequence-master")) {
- PageSequenceMaster pageSequenceMaster = (PageSequenceMaster)parent;
+ PageSequenceMaster pageSequenceMaster = (PageSequenceMaster) parent;
if (getMasterName() == null) {
getLogger().warn(getName()
getLogger().warn("page-sequence-master does not have "
+ "a master-name and so is being ignored");
} else {
- try {
- this.layoutMasterSet.addPageSequenceMaster(masterName, this);
- } catch (Exception e) {
- throw new SAXParseException("Error with adding Page Sequence Master: "
- + e.getMessage(), locator);
- }
+ this.layoutMasterSet.addPageSequenceMaster(masterName, this);
}
} else {
throw new SAXParseException("fo:page-sequence-master must be child "
regionId = id;
}
- /**
- * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
- * XSL Content Model: empty
- */
- protected void validateChildNode(Locator loc, String nsURI, String localName)
- throws SAXParseException {
- invalidChildError(loc, nsURI, localName);
- }
-
/**
* @see org.apache.fop.fo.FObj#addProperties
*/
this.overflow = this.propertyList.get(PR_OVERFLOW).getEnum();
}
+ /**
+ * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
+ * XSL Content Model: empty
+ */
+ protected void validateChildNode(Locator loc, String nsURI, String localName)
+ throws SAXParseException {
+ invalidChildError(loc, nsURI, localName);
+ }
+
public abstract Rectangle getViewportRectangle(FODimension pageRefRect);
/**
* This handles a reference with a specified number of repeating
* instances of the referenced page master (may have no limit).
*/
-public class RepeatablePageMasterReference extends PageMasterReference
- implements SubSequenceSpecifier {
+public class RepeatablePageMasterReference extends PageMasterReference {
private static final int INFINITE = -1;
// XML
import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
import org.xml.sax.SAXParseException;
// FOP
private String masterName;
+ // used for node validation
+ private boolean hasRegionBody = false;
+ private boolean hasRegionBefore = false;
+ private boolean hasRegionAfter = false;
+ private boolean hasRegionStart = false;
+ private boolean hasRegionEnd = false;
+
/**
* @see org.apache.fop.fo.FONode#FONode(FONode)
*/
protected void addProperties(Attributes attlist) throws SAXParseException {
super.addProperties(attlist);
- if (parent.getName().equals("fo:layout-master-set")) {
- LayoutMasterSet layoutMasterSet = (LayoutMasterSet)parent;
- masterName = this.propertyList.get(PR_MASTER_NAME).getString();
- if (masterName == null) {
- getLogger().warn("simple-page-master does not have "
- + "a master-name and so is being ignored");
- } else {
- try {
- layoutMasterSet.addSimplePageMaster(this);
- } catch (Exception e) {
- throw new SAXParseException("Error with adding Page Sequence Master: "
- + e.getMessage(), locator);
- }
- }
+ LayoutMasterSet layoutMasterSet = (LayoutMasterSet) parent;
+
+ if (getPropString(PR_MASTER_NAME) == null) {
+ missingPropertyError("master-name");
} else {
- throw new SAXParseException("fo:simple-page-master must be child "
- + "of fo:layout-master-set, not "
- + parent.getName(), locator);
+ layoutMasterSet.addSimplePageMaster(this);
}
+
//Well, there are only 5 regions so we can save a bit of memory here
regions = new HashMap(5);
}
+ /**
+ * @see org.apache.fop.fo.FONode#validateChildNode(Locator, String, String)
+ * XSL Content Model: (region-body,region-before?,region-after?,region-start?,region-end?)
+ */
+ protected void validateChildNode(Locator loc, String nsURI, String localName)
+ throws SAXParseException {
+ if (nsURI == FO_URI && localName.equals("region-body")) {
+ if (hasRegionBody) {
+ tooManyNodesError(loc, "fo:region-body");
+ } else {
+ hasRegionBody = true;
+ }
+ } else if (nsURI == FO_URI && localName.equals("region-before")) {
+ if (!hasRegionBody) {
+ nodesOutOfOrderError(loc, "fo:region-body", "fo:region-before");
+ } else if (hasRegionBefore) {
+ tooManyNodesError(loc, "fo:region-before");
+ } else if (hasRegionAfter) {
+ nodesOutOfOrderError(loc, "fo:region-before", "fo:region-after");
+ } else if (hasRegionStart) {
+ nodesOutOfOrderError(loc, "fo:region-before", "fo:region-start");
+ } else if (hasRegionEnd) {
+ nodesOutOfOrderError(loc, "fo:region-before", "fo:region-end");
+ } else {
+ hasRegionBody = true;
+ }
+ } else if (nsURI == FO_URI && localName.equals("region-after")) {
+ if (!hasRegionBody) {
+ nodesOutOfOrderError(loc, "fo:region-body", "fo:region-after");
+ } else if (hasRegionAfter) {
+ tooManyNodesError(loc, "fo:region-after");
+ } else if (hasRegionStart) {
+ nodesOutOfOrderError(loc, "fo:region-after", "fo:region-start");
+ } else if (hasRegionEnd) {
+ nodesOutOfOrderError(loc, "fo:region-after", "fo:region-end");
+ } else {
+ hasRegionAfter = true;
+ }
+ } else if (nsURI == FO_URI && localName.equals("region-start")) {
+ if (!hasRegionBody) {
+ nodesOutOfOrderError(loc, "fo:region-body", "fo:region-start");
+ } else if (hasRegionStart) {
+ tooManyNodesError(loc, "fo:region-start");
+ } else if (hasRegionEnd) {
+ nodesOutOfOrderError(loc, "fo:region-start", "fo:region-end");
+ } else {
+ hasRegionStart = true;
+ }
+ } else if (nsURI == FO_URI && localName.equals("region-end")) {
+ if (!hasRegionBody) {
+ nodesOutOfOrderError(loc, "fo:region-body", "fo:region-end");
+ } else if (hasRegionEnd) {
+ tooManyNodesError(loc, "fo:region-end");
+ } else {
+ hasRegionEnd = true;
+ }
+ } else {
+ invalidChildError(loc, nsURI, localName);
+ }
+ }
+
+ /**
+ * Make sure content model satisfied.
+ * @see org.apache.fop.fo.FONode#end
+ */
+ protected void endOfNode() throws SAXParseException {
+ if (!hasRegionBody) {
+ missingChildElementError("(region-body, region-before?," +
+ " region-after?, region-start?, region-end?)");
+ }
+ }
+
/**
* @see org.apache.fop.fo.FObj#generatesReferenceAreas()
*/
* @return the page master name
*/
public String getMasterName() {
- return masterName;
+ return getPropString(PR_MASTER_NAME);
}
/**
* @see org.apache.fop.fo.FONode#addChildNode(FONode)
*/
protected void addChildNode(FONode child) {
- if (child instanceof Region) {
- addRegion((Region)child);
- } else {
- getLogger().error("SimplePageMaster cannot have child of type "
- + child.getName());
- }
+ addRegion((Region)child);
}
/**
*/
protected void addRegion(Region region) {
String key = String.valueOf(region.getRegionClassCode());
- if (regions.containsKey(key)) {
- getLogger().error("Only one region of class " + region.getRegionName()
- + " allowed within a simple-page-master. The duplicate"
- + " region (" + region.getName() + ") is ignored.");
- } else {
- regions.put(key, region);
- }
+ regions.put(key, region);
}
/**
protected boolean regionNameExists(String regionName) {
for (Iterator regenum = regions.values().iterator();
regenum.hasNext();) {
- Region r = (Region)regenum.next();
+ Region r = (Region) regenum.next();
if (r.getRegionName().equals(regionName)) {
return true;
}
return false;
}
+ /**
+ * @see org.apache.fop.fo.FObj#getName()
+ */
public String getName() {
return "fo:simple-page-master";
}
* This is a reference for a single page. It returns the
* master name only once until reset.
*/
-public class SinglePageMasterReference extends PageMasterReference
- implements SubSequenceSpecifier {
+public class SinglePageMasterReference extends PageMasterReference {
private static final int FIRST = 0;
private static final int DONE = 1;
import org.apache.fop.fo.FONode;
/**
- * Class modelling the fo:static-content object. See Sec. 6.4.19 of the XSL-FO
- * Standard.
+ * Class modelling the fo:static-content object.
*/
public class StaticContent extends Flow {
import org.apache.fop.fo.properties.CommonMarginInline;
/**
- * Class modelling the fo:title object. See Sec. 6.4.20 in the XSL-FO Standard.
+ * Class modelling the fo:title object.
*/
public class Title extends FObjMixed {
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="3cm"/>
<fo:region-body margin-top="4cm" margin-bottom="3cm"/>
+ <fo:region-before extent="3cm"/>
<fo:region-after extent="3cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1in"
margin-right="0.75in">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="2cm"
margin-left="2.5cm"
margin-right="2.5cm">
- <fo:region-body margin-top="3cm"/>
+ <fo:region-body margin-top="3cm"/>
<fo:region-before extent="3cm"/>
<fo:region-after extent="1.5cm"/>
</fo:simple-page-master>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1in"
margin-right="0.75in">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
margin-bottom="1cm"
margin-left="1.5cm"
margin-right="1.5cm">
- <fo:region-before extent="2.5cm"/>
<fo:region-body margin-top="3cm" margin-bottom="3cm"/>
+ <fo:region-before extent="2.5cm"/>
<fo:region-after extent="2.5cm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="no-overflow"
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="one" page-height="29.7cm" page-width="21cm" margin-top="0.5cm" margin-bottom="0.5cm" margin-left="1.5cm" margin-right="1.5cm">
- <fo:region-before extent="1.5cm"/>
<fo:region-body margin-top="1.5cm" margin-bottom="2cm"/>
+ <fo:region-before extent="1.5cm"/>
<fo:region-after extent="1.5cm"/>
</fo:simple-page-master>
</fo:layout-master-set>