XSL-FO学习笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

能够生成PDF文件,总是件让我感到很神秘的事情。我以前用

过的生成PDF的方法有1)将相关文件用相应的软件打开,“打

印”到一个文件如ali.prn,然后手工将ali.prn改为ali.ps,再

用GostView打开ali.ps,最后用其convert功能生成pdf文件,有一定比率的不成功;2)利用Acrobat Distiller;3)利用Acrobat PDFWriter。

现在,可以通过xsl-fo和apache fop编程实现,总让我感到兴奋。

1、下载安装及运行fop

去fop主页下载fop,有两个版本一个是维护版一个是设计版,我下的维护版的0.20.5版binary 包。解压缩到$FOPHOME,此目录下有fop.cmd(for windows)或fop.sh(for *nix)。

从这儿下载示例sample.fo文件,运行

fop.cmd sample.fo sample.pdf

,OK生成sample.pdf了。

2、将XML 文档转换为PDF 文件需要两个基本步骤:

1)用XSLT 样式表将XML 文档转换为由XSL-FO 元素构成的文件。要执行这一转换,只需用调用XSLT 处理器。

2)用某种显示引擎将XSL-FO 元素转换为PDF 文件。

3、XSL-FO 文档定义了制作高质量可打印文档时非常重要的几件事情:

1)有关页面的实际大小的信息(信纸和A4 等等)

2)有关页边距(顶部、左边、底部和右边)、页眉和页脚和页面其它特性的信息

3)有关文本的字体、字体大小、颜色和其它特征的信息

4)要打印的实际文本,由描述段落、突出显示、表等类似物的元素来标记

4、XSL-FO文档结构

元素包含

通常包含关于页面布局的信息,而 包含您正在格式化的实际内容。

5、示例讲解

6、两个概念

页面布局(layout)主要设置与纸有关的信息;页面则是指用以打印的区域。页面又分为5个区域(region),如右图。上例中只用到了region-body区域。

7、xsl-fo中关于距离的单位

8、元素

设置粗体用font-weight="bold",斜体字用font-style="italic",字体如等宽字体

font-family="monospace".

9、元素

text-align/text-align-last定义文本行/最后一行文本如何对齐,两者的值集都是start、center、end 和justify,分别指左、中、右和左右对齐。

space-before 和space-after用来指定块前块后的间距。可以再附

以.minimum、.maximum、.optimum 和 .precedence 等后缀,由此可得10个属性。

keep-with-next、keep-with-previous 和keep-together用来设置与前块、与后块及块内的显示控制,可赋之以.within-line、.within-column 和 .within-page 等后缀,可得12种属性。值集为auto/数值/always,优先级由低到高。

break-before和break-after分别定义块前块后放置分隔符,值有五个,如表

widows 特性定义了当一个块在页面底部开始显示时,必须一起出现的最小行数;缺省值是2。orphans 特性定义了当一个块在当前页面显示不下时其最后几行在下页顶部显示时必须一起出现的最小行数。其缺省值也是2。

10、图形

外部的gif/jpg/svg文件,可以用来指定。svg文件可以嵌入fo文件本身,用.只有把这些元素单独放到block中才能有换行的效果。11、水平线

来实现,有属性leader-pattern,可取值space/rule/dots分别表空白/实线/虚线,有属性leader-length指明长度,默认忹列等宽。

这次主要学习列表(list)、表格(table)、多页布局、页脚页眉、页编码、链接(link)等在FO的定义。1、列表

主体结构如下:

元素的provisional-distance-between-starts 特性定义 的开始部分与 的开始部分之间的距离。provisional-label-separation 特性定义 的结束部分与 的开始部分之间的距离。

元素的start-indent 特性分别定义了从正常的起始页边距(列表之上段落的起始位置)到 的开始部分的距离。

元素的end-indent 特性定义从正常的结束页边距(列表之上段落的结束位置)和 元素的结束之间的距离。

编号列表

    符号列表