XSL-FO 对象学习笔记
简介
XSL-FO(Extensible Stylesheet Language Formatting Objects)是一个XML应用程序语言,用于格式化和布局XML文档的可视化呈现。XSL-FO文件是一种与设备无关的中间格式,可以通过使用XSL-FO处理器将其转换为PDF、PostScript等输出格式。
XSL-FO 对象
XSL-FO定义了一些对象来描述文档的结构和格式。下面是一些常用的XSL-FO对象:
区域对象(Region objects)
区域对象用于定义页面布局,包括页眉、页脚、正文区等。
xmlCopy Code<fo:simple-page-master master-name="A4" page-height="29.7cm" page-width="21cm">
<fo:region-body margin-top="3cm" margin-bottom="2cm"/>
<fo:region-before extent="3cm"/>
<fo:region-after extent="2cm"/>
</fo:simple-page-master>
在上面的例子中,fo:simple-page-master
定义了一个名为“A4”的页面模板,页面高度为29.7厘米,宽度为21厘米。fo:region-body
定义了正文区域,顶部有3厘米的边距,底部有2厘米的边距。fo:region-before
定义了页眉区域,高度为3厘米。fo:region-after
定义了页脚区域,高度为2厘米。
区块对象(Block objects)
区块对象用于表示文本块或其他内容块。如fo:block
、fo:list-block
、fo:table-and-caption
等。
xmlCopy Code<fo:block font-size="12pt" font-weight="bold" text-align="center">标题</fo:block>
在上面的例子中,fo:block
定义了一个粗体、居中对齐的标题块。
行内对象(Inline objects)
行内对象用于表示具有不同格式的小段文本,如加粗、斜体等。如fo:inline
、fo:leader
等。
xmlCopy Code<fo:inline font-weight="bold">这是加粗文本</fo:inline>
在上面的例子中,fo:inline
定义了一段加粗的文本。
表格对象(Table objects)
表格对象用于创建表格,包括表格头部、表格行、单元格等。如fo:table
、fo:table-header
、fo:table-body
等。
xmlCopy Code<fo:table table-layout="fixed" width="100%" border-collapse="separate" border-spacing="0.5mm">
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="proportional-column-width(2)"/>
<fo:table-header>
<fo:table-row>
<fo:table-cell><fo:block>表头1</fo:block></fo:table-cell>
<fo:table-cell><fo:block>表头2</fo:block></fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<fo:table-row>
<fo:table-cell><fo:block>单元格1-1</fo:block></fo:table-cell>
<fo:table-cell><fo:block>单元格1-2</fo:block></fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell><fo:block>单元格2-1</fo:block></fo:table-cell>
<fo:table-cell><fo:block>单元格2-2</fo:block></fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
在上面的例子中,fo:table
定义了一个表格,宽度为100%。fo:table-column
定义了两列,分别占比1:2。fo:table-header
定义了一个表格头部,包括两个表头单元格。fo:table-body
定义了两行数据,每行包括两个单元格。
实例
以下是一个使用XSL-FO创建简历的示例:
xmlCopy Code<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="resume" page-height="11in" page-width="8.5in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin-right="1in">
<fo:region-body margin-top="1in" margin-bottom="0.5in"/>
<fo:region-after extent="0.5in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="resume">
<fo:flow flow-name="xsl-region-body">
<fo:block font-size="24pt" font-weight="bold" text-align="center" space-after="18pt">简历</fo:block>
<fo:block font-size="20pt" font-weight="bold" space-after="6pt">个人信息</fo:block>
<fo:block font-size="12pt" space-after="6pt">
<fo:inline font-weight="bold">姓名:</fo:inline>John Smith
</fo:block>
<fo:block font-size="12pt" space-after="6pt">
<fo:inline font-weight="bold">地址:</fo:inline>123 Main Street,Anytown,CA 12345
</fo:block>
<fo:block font-size="12pt" space-after="6pt">
<fo:inline font-weight="bold">电话:</fo:inline>555-555-5555
</fo:block>
<fo:block font-size="12pt" space-after="6pt">
<fo:inline font-weight="bold">电子邮件:</fo:inline>john.smith@example.com
</fo:block>
<fo:block font-size="20pt" font-weight="bold" space-after="6pt">工作经验</fo:block>
<fo:block font-size="18pt" font-weight="bold" space-after="6pt">公司A</fo:block>
<fo:block font-size="16pt" font-weight="bold" space-after="6pt">职位:软件工程师</fo:block>
<fo:block font-size="14pt" space-after="6pt">工作描述:</fo:block>
<fo:block font-size="12pt" space-after="6pt">该公司软件开发部门负责人,领导一组5名成员,负责开发和维护公司重要的核心业务系统。</fo:block>
<fo:block font-size="18pt" font-weight="bold">公司B</fo:block>
<fo:block font-size="16pt" font-weight="bold" space-after="6pt">职位:Java开发工程师</fo:block>
<fo:block font-size="14pt" space-after="6pt">工作描述:</fo:block>
<fo:block font-size="12pt" space-after="6pt">在该公司负责开发和维护多个Java Web应用程序,独立设计和开发了一个高性能的购物网站。</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
在上面的例子中,使用了不同的XSL-FO对象来定义简历文档的结构和格式。fo:simple-page-master
定义了页面布局,有页眉和正文区域。fo:block
定义了标题、小标题、正文和加粗文本。此外,还包括表格(未显示)等其他XSL-FO对象。
生成的输出可以使用XSL-FO处理器转换为PDF文件,以便打印或在线阅读。