zoukankan      html  css  js  c++  java
  • XSL-FO Page Layout

    Simple Layout

    Let's take a look at the simple page layout that we saw earlier in the course.

    The simple page master that creates this layout is shown in the code sample below.

    Code Sample:

    PageLayout/Demos/SimplePageMaster.fo
    <?xml version="1.0" encoding="UTF-8"?>
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    	<fo:layout-master-set>
    		<fo:simple-page-master master-name="page" 
    			page-height="11in" page-width="8.5in">
    			<fo:region-body margin="1in" background-color="yellow" 
    				border="solid thick orange"/>
    			<fo:region-before extent="1in" background-color="lightblue" 
    				border="solid thick blue"/>
    			<fo:region-after extent="1in" background-color="lightblue" 
    				border="solid thick blue"/>
    			<fo:region-start extent="1in" background-color="lightgreen" 
    				border="solid thick green"/>
    			<fo:region-end extent="1in" background-color="lightgreen" 
    				border="solid thick green"/>
    		</fo:simple-page-master>
    	</fo:layout-master-set>
    	<fo:page-sequence master-reference="page" font-size="24pt" 
    		font-weight="bold" text-align="center">
    ---- C O D E   O M I T T E D ----
    </fo:page-sequence>
    </fo:root>
    

      

    fo:simple-page-master

    The fo:simple-page-master is used to specify the name of the master page, the height and width of the page, the margins of the entire page and the orientation of the page (e.g, portrait or landscape). Its most common attributes are shown below.

    <fo:simple-page-master> Attributes
    AttributeDescription
    master-name the name of the master page
    page-height the height of the page
    page-width the width of the page
    margin the size of the margin around the entire page
    margin-top the size of the top margin
    margin-right the size of the right margin
    margin-bottom the size of the bottom margin
    margin-left the size of the left margin
    reference-orientation sets the direction for page

    Most of these attributes are self explanatory. However, we should take a closer look at reference-orientation.

    Reference Orientation

    The reference-orientation attribute takes a number which indicates the number of degrees to rotate the orientation. Possible values are 0, 90, 180, 270, -90, -180, -270, and inherit. To create a landscape orientation, reference-orientation should be set to 90. The following example illustrates this.

    Code Sample:

    PageLayout/Demos/LandscapePageMaster.fo
    <?xml version="1.0" encoding="UTF-8"?>
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    	<fo:layout-master-set>
    		<fo:simple-page-master master-name="page" 
    			page-height="11in" page-width="8.5in"
    			reference-orientation="90">
    			<fo:region-body margin="1in" background-color="yellow" 
    				border="solid thick orange"/>
    			<fo:region-before extent="1in" background-color="lightblue" 
    				border="solid thick blue"/>
    			<fo:region-after extent="1in" background-color="lightblue" 
    				border="solid thick blue"/>
    			<fo:region-start extent="1in" background-color="lightgreen" 
    				border="solid thick green"/>
    			<fo:region-end extent="1in" background-color="lightgreen" 
    				border="solid thick green"/>
    		</fo:simple-page-master>
    	</fo:layout-master-set>
    	<fo:page-sequence master-reference="page" font-size="24pt" 
    		font-weight="bold" text-align="center">
    ---- C O D E   O M I T T E D ----
    </fo:page-sequence>
    </fo:root>
    

      

    The only difference between this page and the previous one is the reference orientation. The result is shown below.

    Notice that the whole page shifts, so that the region-before is now on the left rather than on the top.

    fo:region-body

    The <fo:region-body> tag is used to define the space, background and borders for the region-body. Its most common attributes are shown below.

    Most of these attributes are self explanatory. We'll take a closer look at margin and padding.

    margins and padding

    We saw that the <fo:simple-page-master> tag can take margin attributes. These margins are applied to the whole page, meaning that they push all the regions inward. The margin attributes of the <fo:region-body> tag affect only region-body. They specify how far each edge of the region-body box should be from the edge of the outer box defined by the <fo:simple-page-master> tag. The padding attributes specify how far the elements contained in the body should appear from the edge of the body. The following code sample illustrates how margin and padding work.

    Code Sample:

    PageLayout/Demos/BodyRegionPageMaster.fo
    <?xml version="1.0" encoding="UTF-8"?>
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    	<fo:layout-master-set>
    		<fo:simple-page-master master-name="page" 
    			page-height="11in" page-width="8.5in" 
    			margin="1in">
    			<fo:region-body margin="1in" padding="1in"
    				background-color="yellow" border="solid thick orange"/>
    			<fo:region-before extent="1in" background-color="lightblue" 
    				border="solid thick blue"/>
    			<fo:region-after extent="1in" background-color="lightblue" 
    				border="solid thick blue"/>
    			<fo:region-start extent="1in" background-color="lightgreen" 
    				border="solid thick green"/>
    			<fo:region-end extent="1in" background-color="lightgreen" 
    				border="solid thick green"/>
    		</fo:simple-page-master>
    	</fo:layout-master-set>
    	<fo:page-sequence master-reference="page" font-size="24pt" 
    		font-weight="bold" text-align="center">
    ---- C O D E   O M I T T E D ----
    </fo:page-sequence>
    </fo:root>
    

      

    The result is shown below.

    • The margin specified in the <fo:simple-page-master> tag creates the white area.
    • The margin specified in the <fo:region-body> tag forces the region-body edges in one inch from the simple-page-master rectangle.
    • The padding specified in the <fo:region-body> tag creates space between the content of the region-body and the edges of the region-body.

    Note that the positioning and size of region-body are not affected in any way by the attributes of the other regions.

    fo:region-before, fo:region-after, fo:region-start, and fo:region-end

    The four other region tags take all the same attributes as <fo:region-body> except for the margin attributes. These regions do not have margins. They always sit on the edge of the simple-page-master rectangle. In addition, these region tags take two other attributes: extent and precedence.

    The extent attribute specifies the width of region-start and region-end and the height of region-before and region-after (assuming a portrait layout).

    The precedence attribute specifies which regions should sit on top. As you can see from the examples we have looked at thus far, by default region-start and region-end take precedence over region-before and region-after. The following code sample shows how to change this.

    Code Sample:

    PageLayout/Demos/PrecedencePageMaster.fo
    <?xml version="1.0" encoding="UTF-8"?>
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    	<fo:layout-master-set>
    		<fo:simple-page-master master-name="page" 
    			page-height="11in" page-width="8.5in" 
    			margin="1in">
    			<fo:region-body margin="1in" padding="1in"
    				background-color="yellow" border="solid thick orange"/>
    			<fo:region-before extent="1in" precedence="true"
    				background-color="lightblue" border="solid thick blue"/>
    			<fo:region-after extent="1in" precedence="true"
    				background-color="lightblue" border="solid thick blue"/>
    			<fo:region-start extent="1in" background-color="lightgreen" 
    				border="solid thick green"/>
    			<fo:region-end extent="1in" background-color="lightgreen" 
    				border="solid thick green"/>
    		</fo:simple-page-master>
    	</fo:layout-master-set>
    	<fo:page-sequence master-reference="page" font-size="24pt" 
    		font-weight="bold" text-align="center">
    ---- C O D E   O M I T T E D ----
    </fo:page-sequence>
    </fo:root>
    

      

    The result is shown below. As you can see, region-before and region-after now sit on top of region-start and region-end.

  • 相关阅读:
    Java中的多线程你只要看这一篇就够了
    用Spring Boot颠覆Java应用开发
    Java Web 学习路线
    Java基本概念(2)J2EE里面的2是什么意思
    Java基本概念(1)什么是Java
    《Effective Java》读书笔记一(创建与销毁对象)
    Java:集合,对列表(List)中的数据(整型、字符串、日期等)进行排序(正序、倒序)的方法;字符串按照整型排序的方法
    Java:几个正则式应用(检查汉字、日期、EMAIL、手机号码的合法性,替换字符串等)
    Solr4:查询参数fq的用法(对结果进行过滤;两组关键词组合查询)
    Oracle删除重复记录只保留一条数据的几种方法
  • 原文地址:https://www.cnblogs.com/uu5666/p/7268981.html
Copyright © 2011-2022 走看看