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:
<?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.
| Attribute | Description |
|---|---|
| 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:
<?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:
<?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
marginspecified in the<fo:simple-page-master>tag creates the white area. - The
marginspecified in the<fo:region-body>tag forces the region-body edges in one inch from the simple-page-master rectangle. - The
paddingspecified 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:
<?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.
XSL-FO Page Layout的更多相关文章
- 在Salesforce中向Page Layout中添加Visualforce Page
在Salesforce中可以向Object所对应的Layout中添加我们自定义的Visualforce Page. 此时的Visualforce Page与Asp.Net MVC中的Partial V ...
- 转载 SharePoint 2013配置Master Page and Page Layout
转载原地址: http://www.cnblogs.com/huangjianwu/p/4539706.html 涉及到的内容是关于SharePoint 2013如何部署自定义的母版页和布局页. 进入 ...
- salesforce零基础学习(八十四)配置篇: 自定义你的home page layout
当我们进入salesforce系统或者切换app后,默认第一个看到的就是home页面.home页面简单的来说可以包括左侧(narrow component)和右侧(wide component)两部分 ...
- SharePoint 2013 Deploy Master Page And Page Layout
2013年9月27日的一篇随笔,其实也是自己编写的部署文档,由于客户是HK的,所以描述部分是用英文. 涉及到的内容是关于SharePoint 2013如何部署自定义的母版页和布局页. First, L ...
- Creating a Custom Page Layout in SharePoint 2013
Creating a Custom Page Layout in SharePoint 2013 In my last article, I documented how to create a Ma ...
- Page Layout里的javascript (jquery)不执行
在page layout 中通过 _spBodyOnLoadFunctionNames.push("js 方法名") 的方式实现. 但切记,代码要放到 PlaceHolderMai ...
- salesforce零基础学习(九十四)classic下pagelayout引入的vf page弹出内容更新此page layout
我们在classic环境中,有时针对page layout不能实现的地方,可以引入 一个vf page去增强标准的 page layout 功能,有时可能要求这个 vf page的部分修改需要更新此 ...
- xsl -fo 了解
XSL-FO是用于格式化XML数据的语言,全称为Extensible Stylesheet Language Formatting Objects(格式化对象的可扩展样式表语言),是W3C参考标准,现 ...
- 【CSS】Intermediate8:Page Layout
1.Layout with CSS is easy. You just take a chunk of your page and shove it wherever you choose 2.pos ...
随机推荐
- csv导出文件中有html
最近遇到再导出csv文件时,csv文件中包含html代码 一开始以为导出的数据量太大,减少数据后仍然出现html代码,此时想到应该与数据有关,仔细观察csv中的数据,有的单元里面是空值, 对比原始数据 ...
- 转:Window10下RabbitMQ安装图文教程
一.erlang下载安装 1.下载 下载erlang,原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang.org/downloads,双 ...
- Spark调研笔记第6篇 - Spark编程实战FAQ
本文主要记录我使用Spark以来遇到的一些典型问题及其解决的方法,希望对遇到相同问题的同学们有所帮助. 1. Spark环境或配置相关 Q: Sparkclient配置文件spark-defaults ...
- emcas自己所熟悉的快捷键
刚开始用emacs,看完Tutorial了后又用emcas做了一些笔记. 现将自己脑海中觉得比较重要的快捷键一一列出,该列表将持续更新: C = Ctrl M = Alt 查找或打开(新)文件 C- ...
- java-ApiValueDemo
关于API相关正则表达式,各方法的使用 package com.example; import java.util.Arrays; import java.util.Scanner; /** * Ap ...
- jquery插件实现分页
Query Pagination分页插件 原项目地址:http://plugins.jquery.com/project/pagination 版本:v1.2 源文件下载:英文原版 或 中文翻译修改版 ...
- html+css+JavaScript贪吃蛇
写文记录一下最近新完成的贪吃蛇游戏案例,用到了html.css和JavaScript,难度不高,适合刚入坑的同学练习,欢迎大家交流. 下面贴源码: <!DOCTYPE html> < ...
- uva753 A Plug for UNIX 网络流最大流
C - A Plug for UNIX You are in charge of setting up the press room for the inaugural meeting of t ...
- js或jquery实现页面打印(局部打印)
首先定义css样式: 复制代码代码如下: @media print { .noprint { display: none;color:green } } 对于不想打印的内容只用在标签中加上 cla ...
- C++数组类型与函数类型
之所以将C++的数组类型与函数类型拿到一块说,是因为两者在很多地方都一样. 首先,声明形式上类似: 数组类型: type [num] ...